{"@GlobalScope":{"name":"@GlobalScope","description":"Global scope constants and functions.","inherits":"","properties":[{"name":"AudioServer","type":"AudioServer","description":"The [AudioServer] singleton."},{"name":"CameraServer","type":"CameraServer","description":"The [CameraServer] singleton."},{"name":"ClassDB","type":"ClassDB","description":"The [ClassDB] singleton."},{"name":"DisplayServer","type":"DisplayServer","description":"The [DisplayServer] singleton."},{"name":"EditorInterface","type":"EditorInterface","description":"The [EditorInterface] singleton.\n\t\t\t[b]Note:[/b] Only available in editor builds."},{"name":"Engine","type":"Engine","description":"The [Engine] singleton."},{"name":"EngineDebugger","type":"EngineDebugger","description":"The [EngineDebugger] singleton."},{"name":"GDExtensionManager","type":"GDExtensionManager","description":"The [GDExtensionManager] singleton."},{"name":"Geometry2D","type":"Geometry2D","description":"The [Geometry2D] singleton."},{"name":"Geometry3D","type":"Geometry3D","description":"The [Geometry3D] singleton."},{"name":"IP","type":"IP","description":"The [IP] singleton."},{"name":"Input","type":"Input","description":"The [Input] singleton."},{"name":"InputMap","type":"InputMap","description":"The [InputMap] singleton."},{"name":"JavaClassWrapper","type":"JavaClassWrapper","description":"The [JavaClassWrapper] singleton.\n\t\t\t[b]Note:[/b] Only implemented on Android."},{"name":"JavaScriptBridge","type":"JavaScriptBridge","description":"The [JavaScriptBridge] singleton.\n\t\t\t[b]Note:[/b] Only implemented on the Web platform."},{"name":"Marshalls","type":"Marshalls","description":"The [Marshalls] singleton."},{"name":"NativeMenu","type":"NativeMenu","description":"The [NativeMenu] singleton.\n\t\t\t[b]Note:[/b] Only implemented on macOS."},{"name":"NavigationMeshGenerator","type":"NavigationMeshGenerator","description":"The [NavigationMeshGenerator] singleton."},{"name":"NavigationServer2D","type":"NavigationServer2D","description":"The [NavigationServer2D] singleton."},{"name":"NavigationServer3D","type":"NavigationServer3D","description":"The [NavigationServer3D] singleton."},{"name":"OS","type":"OS","description":"The [OS] singleton."},{"name":"Performance","type":"Performance","description":"The [Performance] singleton."},{"name":"PhysicsServer2D","type":"PhysicsServer2D","description":"The [PhysicsServer2D] singleton."},{"name":"PhysicsServer2DManager","type":"PhysicsServer2DManager","description":"The [PhysicsServer2DManager] singleton."},{"name":"PhysicsServer3D","type":"PhysicsServer3D","description":"The [PhysicsServer3D] singleton."},{"name":"PhysicsServer3DManager","type":"PhysicsServer3DManager","description":"The [PhysicsServer3DManager] singleton."},{"name":"ProjectSettings","type":"ProjectSettings","description":"The [ProjectSettings] singleton."},{"name":"RenderingServer","type":"RenderingServer","description":"The [RenderingServer] singleton."},{"name":"ResourceLoader","type":"ResourceLoader","description":"The [ResourceLoader] singleton."},{"name":"ResourceSaver","type":"ResourceSaver","description":"The [ResourceSaver] singleton."},{"name":"ResourceUID","type":"ResourceUID","description":"The [ResourceUID] singleton."},{"name":"TextServerManager","type":"TextServerManager","description":"The [TextServerManager] singleton."},{"name":"ThemeDB","type":"ThemeDB","description":"The [ThemeDB] singleton."},{"name":"Time","type":"Time","description":"The [Time] singleton."},{"name":"TranslationServer","type":"TranslationServer","description":"The [TranslationServer] singleton."},{"name":"WorkerThreadPool","type":"WorkerThreadPool","description":"The [WorkerThreadPool] singleton."},{"name":"XRServer","type":"XRServer","description":"The [XRServer] singleton."}],"methods":[{"name":"abs","signature":"abs(x: Variant) -> Variant","description":"Returns the absolute value of a  parameter [param x] (i.e. non-negative value). Supported types: , , , , , , , .\n\t\t\t\t\n\t\t\t\tvar a = abs(-1)\n\t\t\t\t# a is 1\n\n\t\t\t\tvar b = abs(-1.2)\n\t\t\t\t# b is 1.2\n\n\t\t\t\tvar c = abs(Vector2(-3.5, -4))\n\t\t\t\t# c is (3.5, 4)\n\n\t\t\t\tvar d = abs(Vector2i(-5, -6))\n\t\t\t\t# d is (5, 6)\n\n\t\t\t\tvar e = abs(Vector3(-7, 8.5, -3.8))\n\t\t\t\t# e is (7, 8.5, 3.8)\n\n\t\t\t\tvar f = abs(Vector3i(-7, -8, -9))\n\t\t\t\t# f is (7, 8, 9)\n\t\t\t\t\n\t\t\t\tNote: 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].","returnType":"Variant"},{"name":"absf","signature":"absf(x: float) -> float","description":"Returns the absolute value of float parameter [param x] (i.e. positive value).\n\t\t\t\t\n\t\t\t\t# a is 1.2\n\t\t\t\tvar a = absf(-1.2)\n\t\t\t\t","returnType":"float"},{"name":"absi","signature":"absi(x: int) -> int","description":"Returns the absolute value of int parameter [param x] (i.e. positive value).\n\t\t\t\t\n\t\t\t\t# a is 1\n\t\t\t\tvar a = absi(-1)\n\t\t\t\t","returnType":"int"},{"name":"acos","signature":"acos(x: float) -> 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 -1.0 and 1.0 (inclusive), in order to prevent [method acos] from returning [constant @GDScript.NAN].\n\t\t\t\t\n\t\t\t\t# c is 0.523599 or 30 degrees if converted with rad_to_deg(c)\n\t\t\t\tvar c = acos(0.866025)\n\t\t\t\t","returnType":"float"},{"name":"acosh","signature":"acosh(x: float) -> 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].\n\t\t\t\t\n\t\t\t\tvar a = acosh(2) # Returns 1.31695789692482\n\t\t\t\tcosh(a) # Returns 2\n\n\t\t\t\tvar b = acosh(-1) # Returns 0\n\t\t\t\t","returnType":"float"},{"name":"angle_difference","signature":"angle_difference(from: float, to: float) -> float","description":"Returns the difference between the two angles (in radians), in the range of [-PI, +PI]. When [param from] and [param to] are opposite, returns -PI if [param from] is smaller than [param to], or PI otherwise.","returnType":"float"},{"name":"asin","signature":"asin(x: float) -> 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 -1.0 and 1.0 (inclusive), in order to prevent [method asin] from returning [constant @GDScript.NAN].\n\t\t\t\t\n\t\t\t\t# s is 0.523599 or 30 degrees if converted with rad_to_deg(s)\n\t\t\t\tvar s = asin(0.5)\n\t\t\t\t","returnType":"float"},{"name":"asinh","signature":"asinh(x: float) -> 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.\n\t\t\t\t\n\t\t\t\tvar a = asinh(0.9) # Returns 0.8088669356527824\n\t\t\t\tsinh(a) # Returns 0.9\n\t\t\t\t","returnType":"float"},{"name":"atan","signature":"atan(x: float) -> float","description":"Returns the arc tangent of [param x] in radians. Use it to get the angle from an angle's tangent in trigonometry.\n\t\t\t\tThe method cannot know in which quadrant the angle should fall. See [method atan2] if you have both y and [code skip-lint]x.\n\t\t\t\t\n\t\t\t\tvar a = atan(0.5) # a is 0.463648\n\t\t\t\t\n\t\t\t\tIf [param x] is between -PI / 2 and PI / 2 (inclusive), atan(tan(x)) is equal to [param x].","returnType":"float"},{"name":"atan2","signature":"atan2(y: float, x: float) -> float","description":"Returns the arc tangent of y/x in radians. Use to get the angle of tangent y/x. To compute the value, the method takes into account the sign of both arguments in order to determine the quadrant.\n\t\t\t\tImportant note: The Y coordinate comes first, by convention.\n\t\t\t\t\n\t\t\t\tvar a = atan2(0, -1) # a is 3.141593\n\t\t\t\t","returnType":"float"},{"name":"atanh","signature":"atanh(x: float) -> 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).\n\t\t\t\tIn 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].\n\t\t\t\t\n\t\t\t\tvar a = atanh(0.9) # Returns 1.47221948958322\n\t\t\t\ttanh(a) # Returns 0.9\n\n\t\t\t\tvar b = atanh(-2) # Returns -inf\n\t\t\t\ttanh(b) # Returns -1\n\t\t\t\t","returnType":"float"},{"name":"bezier_derivative","signature":"bezier_derivative(start: float, control_1: float, control_2: float, end: float, t: float) -> 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 defined by the given [param control_1], [param control_2], and [param end] points.","returnType":"float"},{"name":"bezier_interpolate","signature":"bezier_interpolate(start: float, control_1: float, control_2: float, end: float, t: float) -> 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 defined by the given [param control_1], [param control_2], and [param end] points.","returnType":"float"},{"name":"bytes_to_var","signature":"bytes_to_var(bytes: PackedByteArray) -> Variant","description":"Decodes a byte array back to a  value, without decoding objects.\n\t\t\t\tNote: If you need object deserialization, see [method bytes_to_var_with_objects].","returnType":"Variant"},{"name":"bytes_to_var_with_objects","signature":"bytes_to_var_with_objects(bytes: PackedByteArray) -> Variant","description":"Decodes a byte array back to a  value. Decoding objects is allowed.\n\t\t\t\tWarning: 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).","returnType":"Variant"},{"name":"ceil","signature":"ceil(x: Variant) -> Variant","description":"Rounds [param x] upward (towards positive infinity), returning the smallest whole number that is not less than [param x]. Supported types: , , , , , , , .\n\t\t\t\t\n\t\t\t\tvar i = ceil(1.45) # i is 2.0\n\t\t\t\ti = ceil(1.001)    # i is 2.0\n\t\t\t\t\n\t\t\t\tSee also [method floor], [method round], and [method snapped].\n\t\t\t\tNote: For better type safety, use [method ceilf], [method ceili], [method Vector2.ceil], [method Vector3.ceil], or [method Vector4.ceil].","returnType":"Variant"},{"name":"ceilf","signature":"ceilf(x: float) -> float","description":"Rounds [param x] upward (towards positive infinity), returning the smallest whole number that is not less than [param x].\n\t\t\t\tA type-safe version of [method ceil], returning a .","returnType":"float"},{"name":"ceili","signature":"ceili(x: float) -> int","description":"Rounds [param x] upward (towards positive infinity), returning the smallest whole number that is not less than [param x].\n\t\t\t\tA type-safe version of [method ceil], returning an .","returnType":"int"},{"name":"clamp","signature":"clamp(value: Variant, min: Variant, max: Variant) -> Variant","description":"Clamps the [param value], returning a  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.\n\t\t\t\t\n\t\t\t\tvar a = clamp(-10, -1, 5)\n\t\t\t\t# a is -1\n\n\t\t\t\tvar b = clamp(8.1, 0.9, 5.5)\n\t\t\t\t# b is 5.5\n\t\t\t\t\n\t\t\t\tNote: 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).\n\t\t\t\tNote: When using this on vectors it will not perform component-wise clamping, and will pick [param min] if value &lt; min or [param max] if value &gt; max. To perform component-wise clamping use the methods listed above.","returnType":"Variant"},{"name":"clampf","signature":"clampf(value: float, min: float, max: float) -> float","description":"Clamps the [param value], returning a  not less than [param min] and not more than [param max].\n\t\t\t\t\n\t\t\t\tvar speed = 42.1\n\t\t\t\tvar a = clampf(speed, 1.0, 20.5) # a is 20.5\n\n\t\t\t\tspeed = -10.0\n\t\t\t\tvar b = clampf(speed, -1.0, 1.0) # b is -1.0\n\t\t\t\t","returnType":"float"},{"name":"clampi","signature":"clampi(value: int, min: int, max: int) -> int","description":"Clamps the [param value], returning an  not less than [param min] and not more than [param max].\n\t\t\t\t\n\t\t\t\tvar speed = 42\n\t\t\t\tvar a = clampi(speed, 1, 20) # a is 20\n\n\t\t\t\tspeed = -10\n\t\t\t\tvar b = clampi(speed, -1, 1) # b is -1\n\t\t\t\t","returnType":"int"},{"name":"cos","signature":"cos(angle_rad: float) -> float","description":"Returns the cosine of angle [param angle_rad] in radians.\n\t\t\t\t\n\t\t\t\tcos(PI * 2)         # Returns 1.0\n\t\t\t\tcos(PI)             # Returns -1.0\n\t\t\t\tcos(deg_to_rad(90)) # Returns 0.0\n\t\t\t\t","returnType":"float"},{"name":"cosh","signature":"cosh(x: float) -> float","description":"Returns the hyperbolic cosine of [param x] in radians.\n\t\t\t\t\n\t\t\t\tprint(cosh(1)) # Prints 1.543081\n\t\t\t\t","returnType":"float"},{"name":"cubic_interpolate","signature":"cubic_interpolate(from: float, to: float, pre: float, post: float, weight: float) -> float","description":"Cubic interpolates between two values by the factor defined in [param weight] with [param pre] and [param post] values.","returnType":"float"},{"name":"cubic_interpolate_angle","signature":"cubic_interpolate_angle(from: float, to: float, pre: float, post: float, weight: float) -> 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].","returnType":"float"},{"name":"cubic_interpolate_angle_in_time","signature":"cubic_interpolate_angle_in_time(from: float, to: float, pre: float, post: float, weight: float, to_t: float, pre_t: float, post_t: float) -> 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].\n\t\t\t\tIt can perform smoother interpolation than [method cubic_interpolate] by the time values.","returnType":"float"},{"name":"cubic_interpolate_in_time","signature":"cubic_interpolate_in_time(from: float, to: float, pre: float, post: float, weight: float, to_t: float, pre_t: float, post_t: float) -> float","description":"Cubic interpolates between two values by the factor defined in [param weight] with [param pre] and [param post] values.\n\t\t\t\tIt can perform smoother interpolation than [method cubic_interpolate] by the time values.","returnType":"float"},{"name":"db_to_linear","signature":"db_to_linear(db: float) -> float","description":"Converts from decibels to linear energy (audio).","returnType":"float"},{"name":"deg_to_rad","signature":"deg_to_rad(deg: float) -> float","description":"Converts an angle expressed in degrees to radians.\n\t\t\t\t\n\t\t\t\tvar r = deg_to_rad(180) # r is 3.141593\n\t\t\t\t","returnType":"float"},{"name":"ease","signature":"ease(x: float, curve: float) -> 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:\n\t\t\t\t[codeblock lang=text]\n\t\t\t\t- Lower than -1.0 (exclusive): Ease in-out\n\t\t\t\t- -1.0: Linear\n\t\t\t\t- Between -1.0 and 0.0 (exclusive): Ease out-in\n\t\t\t\t- 0.0: Constant\n\t\t\t\t- Between 0.0 to 1.0 (exclusive): Ease out\n\t\t\t\t- 1.0: Linear\n\t\t\t\t- Greater than 1.0 (exclusive): Ease in\n\t\t\t\t\n\t\t\t\t[url=https://raw.githubusercontent.com/godotengine/godot-docs/master/img/ease_cheatsheet.png]ease() curve values cheatsheet\n\t\t\t\tSee also [method smoothstep]. If you need to perform more advanced transitions, use [method Tween.interpolate_value].","returnType":"float"},{"name":"error_string","signature":"error_string(error: int) -> String","description":"Returns a human-readable name for the given [enum Error] code.\n\t\t\t\t\n\t\t\t\tprint(OK)                              # Prints 0\n\t\t\t\tprint(error_string(OK))                # Prints \"OK\"\n\t\t\t\tprint(error_string(ERR_BUSY))          # Prints \"Busy\"\n\t\t\t\tprint(error_string(ERR_OUT_OF_MEMORY)) # Prints \"Out of memory\"\n\t\t\t\t","returnType":"String"},{"name":"exp","signature":"exp(x: float) -> float","description":"The natural exponential function. It raises the mathematical constant e to the power of [param x] and returns it.\n\t\t\t\te has an approximate value of 2.71828, and can be obtained with exp(1).\n\t\t\t\tFor exponents to other bases use the method [method pow].\n\t\t\t\t\n\t\t\t\tvar a = exp(2) # Approximately 7.39\n\t\t\t\t","returnType":"float"},{"name":"floor","signature":"floor(x: Variant) -> Variant","description":"Rounds [param x] downward (towards negative infinity), returning the largest whole number that is not more than [param x]. Supported types: , , , , , , , .\n\t\t\t\t\n\t\t\t\tvar a = floor(2.99) # a is 2.0\n\t\t\t\ta = floor(-2.99)    # a is -3.0\n\t\t\t\t\n\t\t\t\tSee also [method ceil], [method round], and [method snapped].\n\t\t\t\tNote: For better type safety, use [method floorf], [method floori], [method Vector2.floor], [method Vector3.floor], or [method Vector4.floor].","returnType":"Variant"},{"name":"floorf","signature":"floorf(x: float) -> float","description":"Rounds [param x] downward (towards negative infinity), returning the largest whole number that is not more than [param x].\n\t\t\t\tA type-safe version of [method floor], returning a .","returnType":"float"},{"name":"floori","signature":"floori(x: float) -> int","description":"Rounds [param x] downward (towards negative infinity), returning the largest whole number that is not more than [param x].\n\t\t\t\tA type-safe version of [method floor], returning an .\n\t\t\t\tNote: This function is not the same as int(x), which rounds towards 0.","returnType":"int"},{"name":"fmod","signature":"fmod(x: float, y: float) -> float","description":"Returns the floating-point remainder of [param x] divided by [param y], keeping the sign of [param x].\n\t\t\t\t\n\t\t\t\tvar remainder = fmod(7, 5.5) # remainder is 1.5\n\t\t\t\t\n\t\t\t\tFor the integer remainder operation, use the % operator.","returnType":"float"},{"name":"fposmod","signature":"fposmod(x: float, y: float) -> float","description":"Returns the floating-point modulus of [param x] divided by [param y], wrapping equally in positive and negative.\n\t\t\t\t\n\t\t\t\tprint(\" (x)  (fmod(x, 1.5))   (fposmod(x, 1.5))\")\n\t\t\t\tfor i in 7:\n\t\t\t\t    var x = i * 0.5 - 1.5\n\t\t\t\t    print(\"%4.1f           %4.1f  | %4.1f\" % [x, fmod(x, 1.5), fposmod(x, 1.5)])\n\t\t\t\t\n\t\t\t\tPrints:\n\t\t\t\t[codeblock lang=text]\n\t\t\t\t (x)  (fmod(x, 1.5))   (fposmod(x, 1.5))\n\t\t\t\t-1.5           -0.0  |  0.0\n\t\t\t\t-1.0           -1.0  |  0.5\n\t\t\t\t-0.5           -0.5  |  1.0\n\t\t\t\t 0.0            0.0  |  0.0\n\t\t\t\t 0.5            0.5  |  0.5\n\t\t\t\t 1.0            1.0  |  1.0\n\t\t\t\t 1.5            0.0  |  0.0\n\t\t\t\t","returnType":"float"},{"name":"hash","signature":"hash(variable: Variant) -> int","description":"Returns the integer hash of the passed [param variable].\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tprint(hash(\"a\")) # Prints 177670\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tGD.Print(GD.Hash(\"a\")); // Prints 177670\n\t\t\t\t\n\t\t\t\t","returnType":"int"},{"name":"instance_from_id","signature":"instance_from_id(instance_id: int) -> Object","description":"Returns the  that corresponds to [param instance_id]. All Objects have a unique instance ID. See also [method Object.get_instance_id].\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tvar drink = \"water\"\n\n\t\t\t\tfunc _ready():\n\t\t\t\t    var id = get_instance_id()\n\t\t\t\t    var instance = instance_from_id(id)\n\t\t\t\t    print(instance.foo) # Prints \"water\"\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tpublic partial class MyNode : Node\n\t\t\t\t{\n\t\t\t\t    public string Drink { get; set; } = \"water\";\n\n\t\t\t\t    public override void _Ready()\n\t\t\t\t    {\n\t\t\t\t        ulong id = GetInstanceId();\n\t\t\t\t        var instance = (MyNode)InstanceFromId(Id);\n\t\t\t\t        GD.Print(instance.Drink); // Prints \"water\"\n\t\t\t\t    }\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t","returnType":"Object"},{"name":"inverse_lerp","signature":"inverse_lerp(from: float, to: float, weight: float) -> 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 0.0 and 1.0 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 0.0 or greater than 1.0). Use [method clamp] on the result of [method inverse_lerp] if this is not desired.\n\t\t\t\t\n\t\t\t\t# The interpolation ratio in the `lerp()` call below is 0.75.\n\t\t\t\tvar middle = lerp(20, 30, 0.75)\n\t\t\t\t# middle is now 27.5.\n\n\t\t\t\t# Now, we pretend to have forgotten the original ratio and want to get it back.\n\t\t\t\tvar ratio = inverse_lerp(20, 30, 27.5)\n\t\t\t\t# ratio is now 0.75.\n\t\t\t\t\n\t\t\t\tSee also [method lerp], which performs the reverse of this operation, and [method remap] to map a continuous series of values to another.","returnType":"float"},{"name":"is_equal_approx","signature":"is_equal_approx(a: float, b: float) -> bool","description":"Returns true if [param a] and [param b] are approximately equal to each other.\n\t\t\t\tHere, \"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.\n\t\t\t\tInfinity values of the same sign are considered equal.","returnType":"bool"},{"name":"is_finite","signature":"is_finite(x: float) -> bool","description":"Returns whether [param x] is a finite value, i.e. it is not [constant @GDScript.NAN], positive infinity, or negative infinity.","returnType":"bool"},{"name":"is_inf","signature":"is_inf(x: float) -> bool","description":"Returns true if [param x] is either positive infinity or negative infinity.","returnType":"bool"},{"name":"is_instance_id_valid","signature":"is_instance_id_valid(id: int) -> bool","description":"Returns true 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.","returnType":"bool"},{"name":"is_instance_valid","signature":"is_instance_valid(instance: Variant) -> bool","description":"Returns true if [param instance] is a valid Object (e.g. has not been deleted from memory).","returnType":"bool"},{"name":"is_nan","signature":"is_nan(x: float) -> bool","description":"Returns true if [param x] is a NaN (\"Not a Number\" or invalid) value.","returnType":"bool"},{"name":"is_same","signature":"is_same(a: Variant, b: Variant) -> bool","description":"Returns true, for value types, if [param a] and [param b] share the same value. Returns true, for reference types, if the references of [param a] and [param b] are the same.\n\t\t\t\t\n\t\t\t\t# Vector2 is a value type\n\t\t\t\tvar vec2_a = Vector2(0, 0)\n\t\t\t\tvar vec2_b = Vector2(0, 0)\n\t\t\t\tvar vec2_c = Vector2(1, 1)\n\t\t\t\tis_same(vec2_a, vec2_a)  # true\n\t\t\t\tis_same(vec2_a, vec2_b)  # true\n\t\t\t\tis_same(vec2_a, vec2_c)  # false\n\n\t\t\t\t# Array is a reference type\n\t\t\t\tvar arr_a = []\n\t\t\t\tvar arr_b = []\n\t\t\t\tis_same(arr_a, arr_a)  # true\n\t\t\t\tis_same(arr_a, arr_b)  # false\n\t\t\t\t\n\t\t\t\tThese are  value types: null, , , , , , , , , , , , , , , , , , , , , , , ,  and .\n\t\t\t\tThese are  reference types: , , , , , , , , , , , , and .","returnType":"bool"},{"name":"is_zero_approx","signature":"is_zero_approx(x: float) -> bool","description":"Returns true if [param x] is zero or almost zero. The comparison is done using a tolerance calculation with a small internal epsilon.\n\t\t\t\tThis function is faster than using [method is_equal_approx] with one value as zero.","returnType":"bool"},{"name":"lerp","signature":"lerp(from: Variant, to: Variant, weight: Variant) -> Variant","description":"Linearly interpolates between two values by the factor defined in [param weight]. To perform interpolation, [param weight] should be between 0.0 and 1.0 (inclusive). However, values outside this range are allowed and can be used to perform extrapolation. If this is not desired, use [method clampf] to limit [param weight].\n\t\t\t\tBoth [param from] and [param to] must be the same type. Supported types: , , , , , , , , , .\n\t\t\t\t\n\t\t\t\tlerp(0, 4, 0.75) # Returns 3.0\n\t\t\t\t\n\t\t\t\tSee 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.\n\t\t\t\tNote: 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].","returnType":"Variant"},{"name":"lerp_angle","signature":"lerp_angle(from: float, to: float, weight: float) -> float","description":"Linearly interpolates between two angles (in radians) by a [param weight] value between 0.0 and 1.0.\n\t\t\t\tSimilar 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].\n\t\t\t\t\n\t\t\t\textends Sprite\n\t\t\t\tvar elapsed = 0.0\n\t\t\t\tfunc _process(delta):\n\t\t\t\t    var min_angle = deg_to_rad(0.0)\n\t\t\t\t    var max_angle = deg_to_rad(90.0)\n\t\t\t\t    rotation = lerp_angle(min_angle, max_angle, elapsed)\n\t\t\t\t    elapsed += delta\n\t\t\t\t\n\t\t\t\tNote: This function lerps through the shortest path between [param from] and [param to]. However, when these two angles are approximately PI + k * TAU apart for any integer k, it's not obvious which way they lerp due to floating-point precision errors. For example, lerp_angle(0, PI, weight) lerps counter-clockwise, while lerp_angle(0, PI + 5 * TAU, weight) lerps clockwise.","returnType":"float"},{"name":"lerpf","signature":"lerpf(from: float, to: float, weight: float) -> float","description":"Linearly interpolates between two values by the factor defined in [param weight]. To perform interpolation, [param weight] should be between 0.0 and 1.0 (inclusive). However, values outside this range are allowed and can be used to perform extrapolation. If this is not desired, use [method clampf] on the result of this function.\n\t\t\t\t\n\t\t\t\tlerpf(0, 4, 0.75) # Returns 3.0\n\t\t\t\t\n\t\t\t\tSee 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].","returnType":"float"},{"name":"linear_to_db","signature":"linear_to_db(lin: float) -> 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.\n\t\t\t\tExample: Change the Master bus's volume through a  node, which ranges from 0.0 to 1.0:\n\t\t\t\t\n\t\t\t\tAudioServer.set_bus_volume_db(AudioServer.get_bus_index(\"Master\"), linear_to_db($Slider.value))\n\t\t\t\t","returnType":"float"},{"name":"log","signature":"log(x: float) -> float","description":"Returns the [url=https://en.wikipedia.org/wiki/Natural_logarithm]natural logarithm of [param x] (base [url=https://en.wikipedia.org/wiki/E_(mathematical_constant)]e, with e being approximately 2.71828). This is the amount of time needed to reach a certain level of continuous growth.\n\t\t\t\tNote: This is not the same as the \"log\" function on most calculators, which uses a base 10 logarithm. To use base 10 logarithm, use log(x) / log(10).\n\t\t\t\t\n\t\t\t\tlog(10) # Returns 2.302585\n\t\t\t\t\n\t\t\t\tNote: The logarithm of 0 returns -inf, while negative values return -nan.","returnType":"float"},{"name":"max","signature":"max() -> Variant","description":"Returns the maximum of the given numeric values. This function can take any number of arguments.\n\t\t\t\t\n\t\t\t\tmax(1, 7, 3, -6, 5) # Returns 7\n\t\t\t\t\n\t\t\t\tNote: When using this on vectors it will not perform component-wise maximum, and will pick the largest value when compared using x &lt; y. 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].","returnType":"Variant"},{"name":"maxf","signature":"maxf(a: float, b: float) -> float","description":"Returns the maximum of two  values.\n\t\t\t\t\n\t\t\t\tmaxf(3.6, 24)   # Returns 24.0\n\t\t\t\tmaxf(-3.99, -4) # Returns -3.99\n\t\t\t\t","returnType":"float"},{"name":"maxi","signature":"maxi(a: int, b: int) -> int","description":"Returns the maximum of two  values.\n\t\t\t\t\n\t\t\t\tmaxi(1, 2)   # Returns 2\n\t\t\t\tmaxi(-3, -4) # Returns -3\n\t\t\t\t","returnType":"int"},{"name":"min","signature":"min() -> Variant","description":"Returns the minimum of the given numeric values. This function can take any number of arguments.\n\t\t\t\t\n\t\t\t\tmin(1, 7, 3, -6, 5) # Returns -6\n\t\t\t\t\n\t\t\t\tNote: When using this on vectors it will not perform component-wise minimum, and will pick the smallest value when compared using x &lt; y. 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].","returnType":"Variant"},{"name":"minf","signature":"minf(a: float, b: float) -> float","description":"Returns the minimum of two  values.\n\t\t\t\t\n\t\t\t\tminf(3.6, 24)   # Returns 3.6\n\t\t\t\tminf(-3.99, -4) # Returns -4.0\n\t\t\t\t","returnType":"float"},{"name":"mini","signature":"mini(a: int, b: int) -> int","description":"Returns the minimum of two  values.\n\t\t\t\t\n\t\t\t\tmini(1, 2)   # Returns 1\n\t\t\t\tmini(-3, -4) # Returns -4\n\t\t\t\t","returnType":"int"},{"name":"move_toward","signature":"move_toward(from: float, to: float, delta: float) -> float","description":"Moves [param from] toward [param to] by the [param delta] amount. Will not go past [param to].\n\t\t\t\tUse a negative [param delta] value to move away.\n\t\t\t\t\n\t\t\t\tmove_toward(5, 10, 4)    # Returns 9\n\t\t\t\tmove_toward(10, 5, 4)    # Returns 6\n\t\t\t\tmove_toward(5, 10, 9)    # Returns 10\n\t\t\t\tmove_toward(10, 5, -1.5) # Returns 11.5\n\t\t\t\t","returnType":"float"},{"name":"nearest_po2","signature":"nearest_po2(value: int) -> int","description":"Returns the smallest integer power of 2 that is greater than or equal to [param value].\n\t\t\t\t\n\t\t\t\tnearest_po2(3) # Returns 4\n\t\t\t\tnearest_po2(4) # Returns 4\n\t\t\t\tnearest_po2(5) # Returns 8\n\n\t\t\t\tnearest_po2(0)  # Returns 0 (this may not be expected)\n\t\t\t\tnearest_po2(-1) # Returns 0 (this may not be expected)\n\t\t\t\t\n\t\t\t\tWarning: Due to its implementation, this method returns 0 rather than 1 for values less than or equal to 0, with an exception for [param value] being the smallest negative 64-bit integer (-9223372036854775808) in which case the [param value] is returned unchanged.","returnType":"int"},{"name":"pingpong","signature":"pingpong(value: float, length: float) -> float","description":"Wraps [param value] between 0 and the [param length]. If the limit is reached, the next value the function returns is decreased to the 0 side or increased to the [param length] side (like a triangle wave). If [param length] is less than zero, it becomes positive.\n\t\t\t\t\n\t\t\t\tpingpong(-3.0, 3.0) # Returns 3.0\n\t\t\t\tpingpong(-2.0, 3.0) # Returns 2.0\n\t\t\t\tpingpong(-1.0, 3.0) # Returns 1.0\n\t\t\t\tpingpong(0.0, 3.0)  # Returns 0.0\n\t\t\t\tpingpong(1.0, 3.0)  # Returns 1.0\n\t\t\t\tpingpong(2.0, 3.0)  # Returns 2.0\n\t\t\t\tpingpong(3.0, 3.0)  # Returns 3.0\n\t\t\t\tpingpong(4.0, 3.0)  # Returns 2.0\n\t\t\t\tpingpong(5.0, 3.0)  # Returns 1.0\n\t\t\t\tpingpong(6.0, 3.0)  # Returns 0.0\n\t\t\t\t","returnType":"float"},{"name":"posmod","signature":"posmod(x: int, y: int) -> int","description":"Returns the integer modulus of [param x] divided by [param y] that wraps equally in positive and negative.\n\t\t\t\t\n\t\t\t\tprint(\"#(i)  (i % 3)   (posmod(i, 3))\")\n\t\t\t\tfor i in range(-3, 4):\n\t\t\t\t    print(\"%2d       %2d  | %2d\" % [i, i % 3, posmod(i, 3)])\n\t\t\t\t\n\t\t\t\tPrints:\n\t\t\t\t[codeblock lang=text]\n\t\t\t\t(i)  (i % 3)   (posmod(i, 3))\n\t\t\t\t-3        0  |  0\n\t\t\t\t-2       -2  |  1\n\t\t\t\t-1       -1  |  2\n\t\t\t\t 0        0  |  0\n\t\t\t\t 1        1  |  1\n\t\t\t\t 2        2  |  2\n\t\t\t\t 3        0  |  0\n\t\t\t\t","returnType":"int"},{"name":"pow","signature":"pow(base: float, exp: float) -> float","description":"Returns the result of [param base] raised to the power of [param exp].\n\t\t\t\tIn GDScript, this is the equivalent of the ** operator.\n\t\t\t\t\n\t\t\t\tpow(2, 5)   # Returns 32.0\n\t\t\t\tpow(4, 1.5) # Returns 8.0\n\t\t\t\t","returnType":"float"},{"name":"print","signature":"print() -> void","description":"Converts one or more arguments of any type to string in the best way possible and prints them to the console.\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tvar a = [1, 2, 3]\n\t\t\t\tprint(\"a\", \"b\", a) # Prints \"ab[1, 2, 3]\"\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tGodot.Collections.Array a = [1, 2, 3];\n\t\t\t\tGD.Print(\"a\", \"b\", a); // Prints \"ab[1, 2, 3]\"\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tNote: 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].","returnType":"void"},{"name":"print_rich","signature":"print_rich() -> void","description":"Converts one or more arguments of any type to string in the best way possible and prints them to the console.\n\t\t\t\tThe following BBCode tags are supported: b, i, u, s, indent, code, url, center, right, color, bgcolor, fgcolor.\n\t\t\t\tURL tags only support URLs wrapped by a URL tag, not URLs with a different title.\n\t\t\t\tWhen 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 is represented with faint text but without any font change. Unsupported tags are left as-is in standard output.\n\t\t\t\t\n\t\t\t\t[gdscript skip-lint]\n\t\t\t\tprint_rich(\"[color=green]Hello world!\") # Prints \"Hello world!\", in green with a bold font.\n\t\t\t\t\n\t\t\t\t[csharp skip-lint]\n\t\t\t\tGD.PrintRich(\"[color=green]Hello world!\"); // Prints \"Hello world!\", in green with a bold font.\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tNote: 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.\n\t\t\t\tNote: On Windows, only Windows 10 and later correctly displays ANSI escape codes in standard output.\n\t\t\t\tNote: Output displayed in the editor supports clickable [code skip-lint][url=address]text tags. The [code skip-lint] tag's address value is handled by [method OS.shell_open] when clicked.","returnType":"void"},{"name":"print_verbose","signature":"print_verbose() -> void","description":"If verbose mode is enabled ([method OS.is_stdout_verbose] returning true), converts one or more arguments of any type to string in the best way possible and prints them to the console.","returnType":"void"},{"name":"printerr","signature":"printerr() -> void","description":"Prints one or more arguments to strings in the best way possible to standard error line.\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tprinterr(\"prints to stderr\")\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tGD.PrintErr(\"prints to stderr\");\n\t\t\t\t\n\t\t\t\t","returnType":"void"},{"name":"printraw","signature":"printraw() -> 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.\n\t\t\t\tNote: The OS terminal is not 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 console.exe executable.\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t# Prints \"ABC\" to terminal.\n\t\t\t\tprintraw(\"A\")\n\t\t\t\tprintraw(\"B\")\n\t\t\t\tprintraw(\"C\")\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t// Prints \"ABC\" to terminal.\n\t\t\t\tGD.PrintRaw(\"A\");\n\t\t\t\tGD.PrintRaw(\"B\");\n\t\t\t\tGD.PrintRaw(\"C\");\n\t\t\t\t\n\t\t\t\t","returnType":"void"},{"name":"prints","signature":"prints() -> void","description":"Prints one or more arguments to the console with a space between each argument.\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tprints(\"A\", \"B\", \"C\") # Prints \"A B C\"\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tGD.PrintS(\"A\", \"B\", \"C\"); // Prints \"A B C\"\n\t\t\t\t\n\t\t\t\t","returnType":"void"},{"name":"printt","signature":"printt() -> void","description":"Prints one or more arguments to the console with a tab between each argument.\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tprintt(\"A\", \"B\", \"C\") # Prints \"A       B       C\"\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tGD.PrintT(\"A\", \"B\", \"C\"); // Prints \"A       B       C\"\n\t\t\t\t\n\t\t\t\t","returnType":"void"},{"name":"push_error","signature":"push_error() -> void","description":"Pushes an error message to Godot's built-in debugger and to the OS terminal.\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tpush_error(\"test error\") # Prints \"test error\" to debugger and terminal as an error.\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tGD.PushError(\"test error\"); // Prints \"test error\" to debugger and terminal as an error.\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tNote: This function does not pause project execution. To print an error message and pause project execution in debug builds, use assert(false, \"test error\") instead.","returnType":"void"},{"name":"push_warning","signature":"push_warning() -> void","description":"Pushes a warning message to Godot's built-in debugger and to the OS terminal.\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tpush_warning(\"test warning\") # Prints \"test warning\" to debugger and terminal as a warning.\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tGD.PushWarning(\"test warning\"); // Prints \"test warning\" to debugger and terminal as a warning.\n\t\t\t\t\n\t\t\t\t","returnType":"void"},{"name":"rad_to_deg","signature":"rad_to_deg(rad: float) -> float","description":"Converts an angle expressed in radians to degrees.\n\t\t\t\t\n\t\t\t\trad_to_deg(0.523599) # Returns 30\n\t\t\t\trad_to_deg(PI)       # Returns 180\n\t\t\t\trad_to_deg(PI * 2)   # Returns 360\n\t\t\t\t","returnType":"float"},{"name":"rand_from_seed","signature":"rand_from_seed(seed: int) -> PackedInt64Array","description":"Given a [param seed], returns a  of size 2, where its first element is the randomized  value, and the second element is the same as [param seed]. Passing the same [param seed] consistently returns the same array.\n\t\t\t\tNote: \"Seed\" here refers to the internal state of the pseudo random number generator, currently implemented as a 64 bit integer.\n\t\t\t\t\n\t\t\t\tvar a = rand_from_seed(4)\n\n\t\t\t\tprint(a) # Prints 2879024997\n\t\t\t\tprint(a) # Prints 4\n\t\t\t\t","returnType":"PackedInt64Array"},{"name":"randf","signature":"randf() -> float","description":"Returns a random floating-point value between 0.0 and 1.0 (inclusive).\n\t\t\t\t\n\t\t\t\t\n\t\t\t\trandf() # Returns e.g. 0.375671\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tGD.Randf(); // Returns e.g. 0.375671\n\t\t\t\t\n\t\t\t\t","returnType":"float"},{"name":"randf_range","signature":"randf_range(from: float, to: float) -> float","description":"Returns a random floating-point value between [param from] and [param to] (inclusive).\n\t\t\t\t\n\t\t\t\t\n\t\t\t\trandf_range(0, 20.5) # Returns e.g. 7.45315\n\t\t\t\trandf_range(-10, 10) # Returns e.g. -3.844535\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tGD.RandRange(0.0, 20.5);   // Returns e.g. 7.45315\n\t\t\t\tGD.RandRange(-10.0, 10.0); // Returns e.g. -3.844535\n\t\t\t\t\n\t\t\t\t","returnType":"float"},{"name":"randfn","signature":"randfn(mean: float, deviation: float) -> float","description":"Returns a [url=https://en.wikipedia.org/wiki/Normal_distribution]normally-distributed, pseudo-random floating-point value from the specified [param mean] and a standard [param deviation]. This is also known as a Gaussian distribution.\n\t\t\t\tNote: This method uses the [url=https://en.wikipedia.org/wiki/Box%E2%80%93Muller_transform]Box-Muller transform algorithm.","returnType":"float"},{"name":"randi","signature":"randi() -> int","description":"Returns a random unsigned 32-bit integer. Use remainder to obtain a random value in the interval [0, N - 1] (where N is smaller than 2^32).\n\t\t\t\t\n\t\t\t\t\n\t\t\t\trandi()           # Returns random integer between 0 and 2^32 - 1\n\t\t\t\trandi() % 20      # Returns random integer between 0 and 19\n\t\t\t\trandi() % 100     # Returns random integer between 0 and 99\n\t\t\t\trandi() % 100 + 1 # Returns random integer between 1 and 100\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tGD.Randi();           // Returns random integer between 0 and 2^32 - 1\n\t\t\t\tGD.Randi() % 20;      // Returns random integer between 0 and 19\n\t\t\t\tGD.Randi() % 100;     // Returns random integer between 0 and 99\n\t\t\t\tGD.Randi() % 100 + 1; // Returns random integer between 1 and 100\n\t\t\t\t\n\t\t\t\t","returnType":"int"},{"name":"randi_range","signature":"randi_range(from: int, to: int) -> 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.\n\t\t\t\t\n\t\t\t\t\n\t\t\t\trandi_range(0, 1)      # Returns either 0 or 1\n\t\t\t\trandi_range(-10, 1000) # Returns random integer between -10 and 1000\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tGD.RandRange(0, 1);      // Returns either 0 or 1\n\t\t\t\tGD.RandRange(-10, 1000); // Returns random integer between -10 and 1000\n\t\t\t\t\n\t\t\t\t","returnType":"int"},{"name":"randomize","signature":"randomize() -> 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.\n\t\t\t\tNote: 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.","returnType":"void"},{"name":"remap","signature":"remap(value: float, istart: float, istop: float, ostart: float, ostop: float) -> float","description":"Maps a [param value] from range [istart, istop] to [ostart, ostop]. See also [method lerp] and [method inverse_lerp]. If [param value] is outside [istart, istop], then the resulting value will also be outside [ostart, ostop]. If this is not desired, use [method clamp] on the result of this function.\n\t\t\t\t\n\t\t\t\tremap(75, 0, 100, -1, 1) # Returns 0.5\n\t\t\t\t\n\t\t\t\tFor complex use cases where multiple ranges are needed, consider using  or  instead.\n\t\t\t\tNote: If istart == istop, the return value is undefined (most likely NaN, INF, or -INF).","returnType":"float"},{"name":"rid_allocate_id","signature":"rid_allocate_id() -> 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.","returnType":"int"},{"name":"rid_from_int64","signature":"rid_from_int64(base: int) -> RID","description":"Creates an RID from a [param base]. This is used mainly from native extensions to build servers.","returnType":"RID"},{"name":"rotate_toward","signature":"rotate_toward(from: float, to: float, delta: float) -> float","description":"Rotates [param from] toward [param to] by the [param delta] amount. Will not go past [param to].\n\t\t\t\tSimilar to [method move_toward], but interpolates correctly when the angles wrap around [constant @GDScript.TAU].\n\t\t\t\tIf [param delta] is negative, this function will rotate away from [param to], toward the opposite angle, and will not go past the opposite angle.","returnType":"float"},{"name":"round","signature":"round(x: Variant) -> Variant","description":"Rounds [param x] to the nearest whole number, with halfway cases rounded away from 0. Supported types: , , , , , , , .\n\t\t\t\t\n\t\t\t\tround(2.4) # Returns 2\n\t\t\t\tround(2.5) # Returns 3\n\t\t\t\tround(2.6) # Returns 3\n\t\t\t\t\n\t\t\t\tSee also [method floor], [method ceil], and [method snapped].\n\t\t\t\tNote: For better type safety, use [method roundf], [method roundi], [method Vector2.round], [method Vector3.round], or [method Vector4.round].","returnType":"Variant"},{"name":"roundf","signature":"roundf(x: float) -> float","description":"Rounds [param x] to the nearest whole number, with halfway cases rounded away from 0.\n\t\t\t\tA type-safe version of [method round], returning a .","returnType":"float"},{"name":"roundi","signature":"roundi(x: float) -> int","description":"Rounds [param x] to the nearest whole number, with halfway cases rounded away from 0.\n\t\t\t\tA type-safe version of [method round], returning an .","returnType":"int"},{"name":"seed","signature":"seed(base: int) -> void","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.\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tvar my_seed = \"Godot Rocks\".hash()\n\t\t\t\tseed(my_seed)\n\t\t\t\tvar a = randf() + randi()\n\t\t\t\tseed(my_seed)\n\t\t\t\tvar b = randf() + randi()\n\t\t\t\t# a and b are now identical\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tulong mySeed = (ulong)GD.Hash(\"Godot Rocks\");\n\t\t\t\tGD.Seed(mySeed);\n\t\t\t\tvar a = GD.Randf() + GD.Randi();\n\t\t\t\tGD.Seed(mySeed);\n\t\t\t\tvar b = GD.Randf() + GD.Randi();\n\t\t\t\t// a and b are now identical\n\t\t\t\t\n\t\t\t\t","returnType":"void"},{"name":"sign","signature":"sign(x: Variant) -> Variant","description":"Returns the same type of  as [param x], with -1 for negative values, 1 for positive values, and 0 for zeros. For nan values it returns 0.\n\t\t\t\tSupported types: , , , , , , , .\n\t\t\t\t\n\t\t\t\tsign(-6.0) # Returns -1\n\t\t\t\tsign(0.0)  # Returns 0\n\t\t\t\tsign(6.0)  # Returns 1\n\t\t\t\tsign(NAN)  # Returns 0\n\n\t\t\t\tsign(Vector3(-6.0, 0.0, 6.0)) # Returns (-1, 0, 1)\n\t\t\t\t\n\t\t\t\tNote: 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].","returnType":"Variant"},{"name":"signf","signature":"signf(x: float) -> float","description":"Returns -1.0 if [param x] is negative, 1.0 if [param x] is positive, and 0.0 if [param x] is zero. For nan values of [param x] it returns 0.0.\n\t\t\t\t\n\t\t\t\tsignf(-6.5) # Returns -1.0\n\t\t\t\tsignf(0.0)  # Returns 0.0\n\t\t\t\tsignf(6.5)  # Returns 1.0\n\t\t\t\tsignf(NAN)  # Returns 0.0\n\t\t\t\t","returnType":"float"},{"name":"signi","signature":"signi(x: int) -> int","description":"Returns -1 if [param x] is negative, 1 if [param x] is positive, and 0 if [param x] is zero.\n\t\t\t\t\n\t\t\t\tsigni(-6) # Returns -1\n\t\t\t\tsigni(0)  # Returns 0\n\t\t\t\tsigni(6)  # Returns 1\n\t\t\t\t","returnType":"int"},{"name":"sin","signature":"sin(angle_rad: float) -> float","description":"Returns the sine of angle [param angle_rad] in radians.\n\t\t\t\t\n\t\t\t\tsin(0.523599)       # Returns 0.5\n\t\t\t\tsin(deg_to_rad(90)) # Returns 1.0\n\t\t\t\t","returnType":"float"},{"name":"sinh","signature":"sinh(x: float) -> float","description":"Returns the hyperbolic sine of [param x].\n\t\t\t\t\n\t\t\t\tvar a = log(2.0) # Returns 0.693147\n\t\t\t\tsinh(a) # Returns 0.75\n\t\t\t\t","returnType":"float"},{"name":"smoothstep","signature":"smoothstep(from: float, to: float, x: float) -> float","description":"Returns a smooth cubic Hermite interpolation between 0 and 1.\n\t\t\t\tFor positive ranges (when from &lt;= to) the return value is 0 when x &lt;= from, and 1 when x &gt;= to. If [param x] lies between [param from] and [param to], the return value follows an S-shaped curve that smoothly transitions from 0 to 1.\n\t\t\t\tFor negative ranges (when from &gt; to) the function is mirrored and returns 1 when x &lt;= to and 0 when x &gt;= from.\n\t\t\t\tThis S-shaped curve is the cubic Hermite interpolator, given by f(y) = 3*y^2 - 2*y^3 where y = (x-from) / (to-from).\n\t\t\t\t\n\t\t\t\tsmoothstep(0, 2, -5.0) # Returns 0.0\n\t\t\t\tsmoothstep(0, 2, 0.5) # Returns 0.15625\n\t\t\t\tsmoothstep(0, 2, 1.0) # Returns 0.5\n\t\t\t\tsmoothstep(0, 2, 2.0) # Returns 1.0\n\t\t\t\t\n\t\t\t\tCompared to [method ease] with a curve value of -1.6521, [method smoothstep] returns the smoothest possible curve with no sudden changes in the derivative. If you need to perform more advanced transitions, use  or .\n\t\t\t\t[url=https://raw.githubusercontent.com/godotengine/godot-docs/master/img/smoothstep_ease_comparison.png]Comparison between smoothstep() and ease(x, -1.6521) return values\n\t\t\t\t[url=https://raw.githubusercontent.com/godotengine/godot-docs/master/img/smoothstep_range.webp]Smoothstep() return values with positive, zero, and negative ranges","returnType":"float"},{"name":"snapped","signature":"snapped(x: Variant, step: Variant) -> 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.\n\t\t\t\tThe returned value is the same type of  as [param step]. Supported types: , , , , , , , .\n\t\t\t\t\n\t\t\t\tsnapped(100, 32)  # Returns 96\n\t\t\t\tsnapped(3.14159, 0.01)  # Returns 3.14\n\n\t\t\t\tsnapped(Vector2(34, 70), Vector2(8, 8))  # Returns (32, 72)\n\t\t\t\t\n\t\t\t\tSee also [method ceil], [method floor], and [method round].\n\t\t\t\tNote: 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].","returnType":"Variant"},{"name":"snappedf","signature":"snappedf(x: float, step: float) -> 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.\n\t\t\t\tA type-safe version of [method snapped], returning a .\n\t\t\t\t\n\t\t\t\tsnappedf(32.0, 2.5)  # Returns 32.5\n\t\t\t\tsnappedf(3.14159, 0.01)  # Returns 3.14\n\t\t\t\t","returnType":"float"},{"name":"snappedi","signature":"snappedi(x: float, step: int) -> int","description":"Returns the multiple of [param step] that is the closest to [param x].\n\t\t\t\tA type-safe version of [method snapped], returning an .\n\t\t\t\t\n\t\t\t\tsnappedi(53, 16)  # Returns 48\n\t\t\t\tsnappedi(4096, 100)  # Returns 4100\n\t\t\t\t","returnType":"int"},{"name":"sqrt","signature":"sqrt(x: float) -> float","description":"Returns the square root of [param x], where [param x] is a non-negative number.\n\t\t\t\t\n\t\t\t\tsqrt(9)     # Returns 3\n\t\t\t\tsqrt(10.24) # Returns 3.2\n\t\t\t\tsqrt(-1)    # Returns NaN\n\t\t\t\t\n\t\t\t\tNote: Negative values of [param x] return NaN (\"Not a Number\"). in C#, if you need negative inputs, use System.Numerics.Complex.","returnType":"float"},{"name":"step_decimals","signature":"step_decimals(x: float) -> int","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.\n\t\t\t\t\n\t\t\t\tvar n = step_decimals(5)       # n is 0\n\t\t\t\tn = step_decimals(1.0005)      # n is 4\n\t\t\t\tn = step_decimals(0.000000005) # n is 9\n\t\t\t\t","returnType":"int"},{"name":"str","signature":"str() -> String","description":"Converts one or more arguments of any  type to a  in the best way possible.\n\t\t\t\t\n\t\t\t\tvar a = [10, 20, 30]\n\t\t\t\tvar b = str(a)\n\t\t\t\tprint(len(a)) # Prints 3 (the number of elements in the array).\n\t\t\t\tprint(len(b)) # Prints 12 (the length of the string \"[10, 20, 30]\").\n\t\t\t\t","returnType":"String"},{"name":"str_to_var","signature":"str_to_var(string: String) -> Variant","description":"Converts a formatted [param string] that was returned by [method var_to_str] to the original .\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tvar data = '{ \"a\": 1, \"b\": 2 }' # data is a String\n\t\t\t\tvar dict = str_to_var(data)     # dict is a Dictionary\n\t\t\t\tprint(dict[\"a\"])                # Prints 1\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tstring data = \"{ \\\"a\\\": 1, \\\"b\\\": 2 }\";           // data is a string\n\t\t\t\tvar dict = GD.StrToVar(data).AsGodotDictionary(); // dict is a Dictionary\n\t\t\t\tGD.Print(dict[\"a\"]);                              // Prints 1\n\t\t\t\t\n\t\t\t\t","returnType":"Variant"},{"name":"tan","signature":"tan(angle_rad: float) -> float","description":"Returns the tangent of angle [param angle_rad] in radians.\n\t\t\t\t\n\t\t\t\ttan(deg_to_rad(45)) # Returns 1\n\t\t\t\t","returnType":"float"},{"name":"tanh","signature":"tanh(x: float) -> float","description":"Returns the hyperbolic tangent of [param x].\n\t\t\t\t\n\t\t\t\tvar a = log(2.0) # Returns 0.693147\n\t\t\t\ttanh(a)          # Returns 0.6\n\t\t\t\t","returnType":"float"},{"name":"type_convert","signature":"type_convert(variant: Variant, type: int) -> Variant","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 s to , and converting most things to .\n\t\t\t\tIf the type conversion cannot be done, this method will return the default value for that type, for example converting  to  will always return [constant Vector2.ZERO]. This method will never show error messages as long as [param type] is a valid Variant type.\n\t\t\t\tThe returned value is a , but the data inside and its type will be the same as the requested type.\n\t\t\t\t\n\t\t\t\ttype_convert(\"Hi!\", TYPE_INT) # Returns 0\n\t\t\t\ttype_convert(\"123\", TYPE_INT) # Returns 123\n\t\t\t\ttype_convert(123.4, TYPE_INT) # Returns 123\n\t\t\t\ttype_convert(5, TYPE_VECTOR2) # Returns (0, 0)\n\t\t\t\ttype_convert(\"Hi!\", TYPE_NIL) # Returns null\n\t\t\t\t","returnType":"Variant"},{"name":"type_string","signature":"type_string(type: int) -> String","description":"Returns a human-readable name of the given [param type], using the [enum Variant.Type] values.\n\t\t\t\t\n\t\t\t\tprint(TYPE_INT) # Prints 2\n\t\t\t\tprint(type_string(TYPE_INT)) # Prints \"int\"\n\t\t\t\tprint(type_string(TYPE_STRING)) # Prints \"String\"\n\t\t\t\t\n\t\t\t\tSee also [method typeof].","returnType":"String"},{"name":"typeof","signature":"typeof(variable: Variant) -> int","description":"Returns the internal type of the given [param variable], using the [enum Variant.Type] values.\n\t\t\t\t\n\t\t\t\tvar json = JSON.new()\n\t\t\t\tjson.parse('[\"a\", \"b\", \"c\"]')\n\t\t\t\tvar result = json.get_data()\n\t\t\t\tif result is Array:\n\t\t\t\t    print(result) # Prints \"a\"\n\t\t\t\telse:\n\t\t\t\t    print(\"Unexpected result!\")\n\t\t\t\t\n\t\t\t\tSee also [method type_string].","returnType":"int"},{"name":"var_to_bytes","signature":"var_to_bytes(variable: Variant) -> PackedByteArray","description":"Encodes a  value to a byte array, without encoding objects. Deserialization can be done with [method bytes_to_var].\n\t\t\t\tNote: If you need object serialization, see [method var_to_bytes_with_objects].\n\t\t\t\tNote: Encoding  is not supported and will result in an empty value, regardless of the data.","returnType":"PackedByteArray"},{"name":"var_to_bytes_with_objects","signature":"var_to_bytes_with_objects(variable: Variant) -> PackedByteArray","description":"Encodes a  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].\n\t\t\t\tNote: Encoding  is not supported and will result in an empty value, regardless of the data.","returnType":"PackedByteArray"},{"name":"var_to_str","signature":"var_to_str(variable: Variant) -> String","description":"Converts a  [param variable] to a formatted  that can then be parsed using [method str_to_var].\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tvar a = { \"a\": 1, \"b\": 2 }\n\t\t\t\tprint(var_to_str(a))\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tvar a = new Godot.Collections.Dictionary { [\"a\"] = 1, [\"b\"] = 2 };\n\t\t\t\tGD.Print(GD.VarToStr(a));\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tPrints:\n\t\t\t\t[codeblock lang=text]\n\t\t\t\t{\n\t\t\t\t    \"a\": 1,\n\t\t\t\t    \"b\": 2\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tNote: Converting  or  is not supported and will result in an empty value for these types, regardless of their data.","returnType":"String"},{"name":"weakref","signature":"weakref(obj: Variant) -> Variant","description":"Returns a  instance holding a weak reference to [param obj]. Returns an empty  instance if [param obj] is null. Prints an error and returns null if [param obj] is neither -derived nor null.\n\t\t\t\tA 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.","returnType":"Variant"},{"name":"wrap","signature":"wrap(value: Variant, min: Variant, max: Variant) -> Variant","description":"Wraps the  [param value] between [param min] and [param max]. Can be used for creating loop-alike behavior or infinite surfaces.\n\t\t\t\tVariant types  and  are supported. If any of the arguments is  this function returns a , otherwise it returns an .\n\t\t\t\t\n\t\t\t\tvar a = wrap(4, 5, 10)\n\t\t\t\t# a is 9 (int)\n\n\t\t\t\tvar a = wrap(7, 5, 10)\n\t\t\t\t# a is 7 (int)\n\n\t\t\t\tvar a = wrap(10.5, 5, 10)\n\t\t\t\t# a is 5.5 (float)\n\t\t\t\t","returnType":"Variant"},{"name":"wrapf","signature":"wrapf(value: float, min: float, max: float) -> float","description":"Wraps the float [param value] between [param min] and [param max]. Can be used for creating loop-alike behavior or infinite surfaces.\n\t\t\t\t\n\t\t\t\t# Infinite loop between 5.0 and 9.9\n\t\t\t\tvalue = wrapf(value + 0.1, 5.0, 10.0)\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t# Infinite rotation (in radians)\n\t\t\t\tangle = wrapf(angle + 0.1, 0.0, TAU)\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t# Infinite rotation (in radians)\n\t\t\t\tangle = wrapf(angle + 0.1, -PI, PI)\n\t\t\t\t\n\t\t\t\tNote: If [param min] is 0, this is equivalent to [method fposmod], so prefer using that instead.\n\t\t\t\t[method wrapf] is more flexible than using the [method fposmod] approach by giving the user control over the minimum value.","returnType":"float"},{"name":"wrapi","signature":"wrapi(value: int, min: int, max: int) -> int","description":"Wraps the integer [param value] between [param min] and [param max]. Can be used for creating loop-alike behavior or infinite surfaces.\n\t\t\t\t\n\t\t\t\t# Infinite loop between 5 and 9\n\t\t\t\tframe = wrapi(frame + 1, 5, 10)\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t# result is -2\n\t\t\t\tvar result = wrapi(-6, -5, -1)\n\t\t\t\t","returnType":"int"}],"signals":[]},"AABB":{"name":"AABB","description":"A 3D axis-aligned bounding box.","inherits":"","properties":[{"name":"end","type":"Vector3","description":"The ending point. This is usually the corner on the top-right and back of the bounding box, and is equivalent to [code]position + size[/code]. Setting this point affects the [member size]."},{"name":"position","type":"Vector3","description":"The origin point. This is usually the corner on the bottom-left and forward of the bounding box."},{"name":"size","type":"Vector3","description":"The bounding box's width, height, and depth starting from [member position]. Setting this value also affects the [member end] point.\n\t\t\t[b]Note:[/b] It's recommended setting the width, height, and depth to non-negative values. This is because most methods in Godot assume that the [member position] is the bottom-left-forward corner, and the [member end] is the top-right-back corner. To get an equivalent bounding box with non-negative size, use [method abs]."}],"methods":[{"name":"abs","signature":"abs() -> AABB","description":"Returns an  equivalent to this bounding box, with its width, height, and depth modified to be non-negative values.\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tvar box = AABB(Vector3(5, 0, 5), Vector3(-20, -10, -5))\n\t\t\t\tvar absolute = box.abs()\n\t\t\t\tprint(absolute.position) # Prints (-15.0, -10.0, 0.0)\n\t\t\t\tprint(absolute.size)     # Prints (20.0, 10.0, 5.0)\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tvar box = new Aabb(new Vector3(5, 0, 5), new Vector3(-20, -10, -5));\n\t\t\t\tvar absolute = box.Abs();\n\t\t\t\tGD.Print(absolute.Position); // Prints (-15, -10, 0)\n\t\t\t\tGD.Print(absolute.Size);     // Prints (20, 10, 5)\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tNote: It's recommended to use this method when [member size] is negative, as most other methods in Godot assume that the [member size]'s components are greater than 0.","returnType":"AABB"},{"name":"encloses","signature":"encloses(with: AABB) -> bool","description":"Returns true if this bounding box completely encloses the [param with] box. The edges of both boxes are included.\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tvar a = AABB(Vector3(0, 0, 0), Vector3(4, 4, 4))\n\t\t\t\tvar b = AABB(Vector3(1, 1, 1), Vector3(3, 3, 3))\n\t\t\t\tvar c = AABB(Vector3(2, 2, 2), Vector3(8, 8, 8))\n\n\t\t\t\tprint(a.encloses(a)) # Prints true\n\t\t\t\tprint(a.encloses(b)) # Prints true\n\t\t\t\tprint(a.encloses(c)) # Prints false\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tvar a = new Aabb(new Vector3(0, 0, 0), new Vector3(4, 4, 4));\n\t\t\t\tvar b = new Aabb(new Vector3(1, 1, 1), new Vector3(3, 3, 3));\n\t\t\t\tvar c = new Aabb(new Vector3(2, 2, 2), new Vector3(8, 8, 8));\n\n\t\t\t\tGD.Print(a.Encloses(a)); // Prints True\n\t\t\t\tGD.Print(a.Encloses(b)); // Prints True\n\t\t\t\tGD.Print(a.Encloses(c)); // Prints False\n\t\t\t\t\n\t\t\t\t","returnType":"bool"},{"name":"expand","signature":"expand(to_point: Vector3) -> AABB","description":"Returns a copy of this bounding box expanded to align the edges with the given [param to_point], if necessary.\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tvar box = AABB(Vector3(0, 0, 0), Vector3(5, 2, 5))\n\n\t\t\t\tbox = box.expand(Vector3(10, 0, 0))\n\t\t\t\tprint(box.position) # Prints (0.0, 0.0, 0.0)\n\t\t\t\tprint(box.size)     # Prints (10.0, 2.0, 5.0)\n\n\t\t\t\tbox = box.expand(Vector3(-5, 0, 5))\n\t\t\t\tprint(box.position) # Prints (-5.0, 0.0, 0.0)\n\t\t\t\tprint(box.size)     # Prints (15.0, 2.0, 5.0)\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tvar box = new Aabb(new Vector3(0, 0, 0), new Vector3(5, 2, 5));\n\n\t\t\t\tbox = box.Expand(new Vector3(10, 0, 0));\n\t\t\t\tGD.Print(box.Position); // Prints (0, 0, 0)\n\t\t\t\tGD.Print(box.Size);     // Prints (10, 2, 5)\n\n\t\t\t\tbox = box.Expand(new Vector3(-5, 0, 5));\n\t\t\t\tGD.Print(box.Position); // Prints (-5, 0, 0)\n\t\t\t\tGD.Print(box.Size);     // Prints (15, 2, 5)\n\t\t\t\t\n\t\t\t\t","returnType":"AABB"},{"name":"get_center","signature":"get_center() -> Vector3","description":"Returns the center point of the bounding box. This is the same as position + (size / 2.0).","returnType":"Vector3"},{"name":"get_endpoint","signature":"get_endpoint(idx: int) -> Vector3","description":"Returns the position of one of the 8 vertices that compose this bounding box. With a [param idx] of 0 this is the same as [member position], and a [param idx] of 7 is the same as [member end].","returnType":"Vector3"},{"name":"get_longest_axis","signature":"get_longest_axis() -> Vector3","description":"Returns the longest normalized axis of this bounding box's [member size], as a  ([constant Vector3.RIGHT], [constant Vector3.UP], or [constant Vector3.BACK]).\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tvar box = AABB(Vector3(0, 0, 0), Vector3(2, 4, 8))\n\n\t\t\t\tprint(box.get_longest_axis())       # Prints (0.0, 0.0, 1.0)\n\t\t\t\tprint(box.get_longest_axis_index()) # Prints 2\n\t\t\t\tprint(box.get_longest_axis_size())  # Prints 8.0\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tvar box = new Aabb(new Vector3(0, 0, 0), new Vector3(2, 4, 8));\n\n\t\t\t\tGD.Print(box.GetLongestAxis());      // Prints (0, 0, 1)\n\t\t\t\tGD.Print(box.GetLongestAxisIndex()); // Prints Z\n\t\t\t\tGD.Print(box.GetLongestAxisSize());  // Prints 8\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tSee also [method get_longest_axis_index] and [method get_longest_axis_size].","returnType":"Vector3"},{"name":"get_longest_axis_index","signature":"get_longest_axis_index() -> int","description":"Returns the index to the longest axis of this bounding box's [member size] (see [constant Vector3.AXIS_X], [constant Vector3.AXIS_Y], and [constant Vector3.AXIS_Z]).\n\t\t\t\tFor an example, see [method get_longest_axis].","returnType":"int"},{"name":"get_longest_axis_size","signature":"get_longest_axis_size() -> float","description":"Returns the longest dimension of this bounding box's [member size].\n\t\t\t\tFor an example, see [method get_longest_axis].","returnType":"float"},{"name":"get_shortest_axis","signature":"get_shortest_axis() -> Vector3","description":"Returns the shortest normalized axis of this bounding box's [member size], as a  ([constant Vector3.RIGHT], [constant Vector3.UP], or [constant Vector3.BACK]).\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tvar box = AABB(Vector3(0, 0, 0), Vector3(2, 4, 8))\n\n\t\t\t\tprint(box.get_shortest_axis())       # Prints (1.0, 0.0, 0.0)\n\t\t\t\tprint(box.get_shortest_axis_index()) # Prints 0\n\t\t\t\tprint(box.get_shortest_axis_size())  # Prints 2.0\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tvar box = new Aabb(new Vector3(0, 0, 0), new Vector3(2, 4, 8));\n\n\t\t\t\tGD.Print(box.GetShortestAxis());      // Prints (1, 0, 0)\n\t\t\t\tGD.Print(box.GetShortestAxisIndex()); // Prints X\n\t\t\t\tGD.Print(box.GetShortestAxisSize());  // Prints 2\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tSee also [method get_shortest_axis_index] and [method get_shortest_axis_size].","returnType":"Vector3"},{"name":"get_shortest_axis_index","signature":"get_shortest_axis_index() -> int","description":"Returns the index to the shortest axis of this bounding box's [member size] (see [constant Vector3.AXIS_X], [constant Vector3.AXIS_Y], and [constant Vector3.AXIS_Z]).\n\t\t\t\tFor an example, see [method get_shortest_axis].","returnType":"int"},{"name":"get_shortest_axis_size","signature":"get_shortest_axis_size() -> float","description":"Returns the shortest dimension of this bounding box's [member size].\n\t\t\t\tFor an example, see [method get_shortest_axis].","returnType":"float"},{"name":"get_support","signature":"get_support(direction: Vector3) -> Vector3","description":"Returns the vertex's position of this bounding box that's the farthest in the given direction. This point is commonly known as the support point in collision detection algorithms.","returnType":"Vector3"},{"name":"get_volume","signature":"get_volume() -> float","description":"Returns the bounding box's volume. This is equivalent to size.x * size.y * size.z. See also [method has_volume].","returnType":"float"},{"name":"grow","signature":"grow(by: float) -> AABB","description":"Returns a copy of this bounding box extended on all sides by the given amount [param by]. A negative amount shrinks the box instead.\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tvar a = AABB(Vector3(4, 4, 4), Vector3(8, 8, 8)).grow(4)\n\t\t\t\tprint(a.position) # Prints (0.0, 0.0, 0.0)\n\t\t\t\tprint(a.size)     # Prints (16.0, 16.0, 16.0)\n\n\t\t\t\tvar b = AABB(Vector3(0, 0, 0), Vector3(8, 4, 2)).grow(2)\n\t\t\t\tprint(b.position) # Prints (-2.0, -2.0, -2.0)\n\t\t\t\tprint(b.size)     # Prints (12.0, 8.0, 6.0)\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tvar a = new Aabb(new Vector3(4, 4, 4), new Vector3(8, 8, 8)).Grow(4);\n\t\t\t\tGD.Print(a.Position); // Prints (0, 0, 0)\n\t\t\t\tGD.Print(a.Size);     // Prints (16, 16, 16)\n\n\t\t\t\tvar b = new Aabb(new Vector3(0, 0, 0), new Vector3(8, 4, 2)).Grow(2);\n\t\t\t\tGD.Print(b.Position); // Prints (-2, -2, -2)\n\t\t\t\tGD.Print(b.Size);     // Prints (12, 8, 6)\n\t\t\t\t\n\t\t\t\t","returnType":"AABB"},{"name":"has_point","signature":"has_point(point: Vector3) -> bool","description":"Returns true if the bounding box contains the given [param point]. By convention, points exactly on the right, top, and front sides are not included.\n\t\t\t\tNote: This method is not reliable for  with a negative [member size]. Use [method abs] first to get a valid bounding box.","returnType":"bool"},{"name":"has_surface","signature":"has_surface() -> bool","description":"Returns true if this bounding box has a surface or a length, that is, at least one component of [member size] is greater than 0. Otherwise, returns false.","returnType":"bool"},{"name":"has_volume","signature":"has_volume() -> bool","description":"Returns true if this bounding box's width, height, and depth are all positive. See also [method get_volume].","returnType":"bool"},{"name":"intersection","signature":"intersection(with: AABB) -> AABB","description":"Returns the intersection between this bounding box and [param with]. If the boxes do not intersect, returns an empty . If the boxes intersect at the edge, returns a flat  with no volume (see [method has_surface] and [method has_volume]).\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tvar box1 = AABB(Vector3(0, 0, 0), Vector3(5, 2, 8))\n\t\t\t\tvar box2 = AABB(Vector3(2, 0, 2), Vector3(8, 4, 4))\n\n\t\t\t\tvar intersection = box1.intersection(box2)\n\t\t\t\tprint(intersection.position) # Prints (2.0, 0.0, 2.0)\n\t\t\t\tprint(intersection.size)     # Prints (3.0, 2.0, 4.0)\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tvar box1 = new Aabb(new Vector3(0, 0, 0), new Vector3(5, 2, 8));\n\t\t\t\tvar box2 = new Aabb(new Vector3(2, 0, 2), new Vector3(8, 4, 4));\n\n\t\t\t\tvar intersection = box1.Intersection(box2);\n\t\t\t\tGD.Print(intersection.Position); // Prints (2, 0, 2)\n\t\t\t\tGD.Print(intersection.Size);     // Prints (3, 2, 4)\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tNote: If you only need to know whether two bounding boxes are intersecting, use [method intersects], instead.","returnType":"AABB"},{"name":"intersects","signature":"intersects(with: AABB) -> bool","description":"Returns true if this bounding box overlaps with the box [param with]. The edges of both boxes are always excluded.","returnType":"bool"},{"name":"intersects_plane","signature":"intersects_plane(plane: Plane) -> bool","description":"Returns true if this bounding box is on both sides of the given [param plane].","returnType":"bool"},{"name":"intersects_ray","signature":"intersects_ray(from: Vector3, dir: Vector3) -> Variant","description":"Returns the first point where this bounding box and the given ray intersect, as a . If no intersection occurs, returns null.\n\t\t\t\tThe ray begin at [param from], faces [param dir] and extends towards infinity.","returnType":"Variant"},{"name":"intersects_segment","signature":"intersects_segment(from: Vector3, to: Vector3) -> Variant","description":"Returns the first point where this bounding box and the given segment intersect, as a . If no intersection occurs, returns null.\n\t\t\t\tThe segment begins at [param from] and ends at [param to].","returnType":"Variant"},{"name":"is_equal_approx","signature":"is_equal_approx(aabb: AABB) -> bool","description":"Returns true if this bounding box and [param aabb] are approximately equal, by calling [method Vector3.is_equal_approx] on the [member position] and the [member size].","returnType":"bool"},{"name":"is_finite","signature":"is_finite() -> bool","description":"Returns true if this bounding box's values are finite, by calling [method Vector3.is_finite] on the [member position] and the [member size].","returnType":"bool"},{"name":"merge","signature":"merge(with: AABB) -> AABB","description":"Returns an  that encloses both this bounding box and [param with] around the edges. See also [method encloses].","returnType":"AABB"}],"signals":[]},"AESContext":{"name":"AESContext","description":"Provides access to AES encryption/decryption of raw data.","inherits":"RefCounted","properties":[],"methods":[{"name":"finish","signature":"finish() -> void","description":"Close this AES context so it can be started again. See [method start].","returnType":"void"},{"name":"get_iv_state","signature":"get_iv_state() -> PackedByteArray","description":"Get the current IV state for this context (IV gets updated when calling [method update]). You normally don't need this function.\n\t\t\t\tNote: This function only makes sense when the context is started with [constant MODE_CBC_ENCRYPT] or [constant MODE_CBC_DECRYPT].","returnType":"PackedByteArray"},{"name":"start","signature":"start(mode: int, key: PackedByteArray, iv: PackedByteArray) -> int","description":"Start the AES context in the given [param mode]. A [param key] of either 16 or 32 bytes must always be provided, while an [param iv] (initialization vector) of exactly 16 bytes, is only needed when [param mode] is either [constant MODE_CBC_ENCRYPT] or [constant MODE_CBC_DECRYPT].","returnType":"int"},{"name":"update","signature":"update(src: PackedByteArray) -> PackedByteArray","description":"Run the desired operation for this AES context. Will return a  containing the result of encrypting (or decrypting) the given [param src]. See [method start] for mode of operation.\n\t\t\t\tNote: The size of [param src] must be a multiple of 16. Apply some padding if needed.","returnType":"PackedByteArray"}],"signals":[]},"AStar2D":{"name":"AStar2D","description":"An implementation of A* for finding the shortest path between two vertices on a connected graph in 2D space.","inherits":"RefCounted","properties":[],"methods":[{"name":"_compute_cost","signature":"_compute_cost(from_id: int, to_id: int) -> float","description":"Called when computing the cost between two connected points.\n\t\t\t\tNote that this function is hidden in the default  class.","returnType":"float"},{"name":"_estimate_cost","signature":"_estimate_cost(from_id: int, end_id: int) -> float","description":"Called when estimating the cost between a point and the path's ending point.\n\t\t\t\tNote that this function is hidden in the default  class.","returnType":"float"},{"name":"add_point","signature":"add_point(id: int, position: Vector2, weight_scale: float) -> void","description":"Adds a new point at the given position with the given identifier. The [param id] must be 0 or larger, and the [param weight_scale] must be 0.0 or greater.\n\t\t\t\tThe [param weight_scale] is multiplied by the result of [method _compute_cost] when determining the overall cost of traveling across a segment from a neighboring point to this point. Thus, all else being equal, the algorithm prefers points with lower [param weight_scale]s to form a path.\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tvar astar = AStar2D.new()\n\t\t\t\tastar.add_point(1, Vector2(1, 0), 4) # Adds the point (1, 0) with weight_scale 4 and id 1\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tvar astar = new AStar2D();\n\t\t\t\tastar.AddPoint(1, new Vector2(1, 0), 4); // Adds the point (1, 0) with weight_scale 4 and id 1\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tIf there already exists a point for the given [param id], its position and weight scale are updated to the given values.","returnType":"void"},{"name":"are_points_connected","signature":"are_points_connected(id: int, to_id: int, bidirectional: bool) -> bool","description":"Returns whether there is a connection/segment between the given points. If [param bidirectional] is false, returns whether movement from [param id] to [param to_id] is possible through this segment.","returnType":"bool"},{"name":"clear","signature":"clear() -> void","description":"Clears all the points and segments.","returnType":"void"},{"name":"connect_points","signature":"connect_points(id: int, to_id: int, bidirectional: bool) -> void","description":"Creates a segment between the given points. If [param bidirectional] is false, only movement from [param id] to [param to_id] is allowed, not the reverse direction.\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tvar astar = AStar2D.new()\n\t\t\t\tastar.add_point(1, Vector2(1, 1))\n\t\t\t\tastar.add_point(2, Vector2(0, 5))\n\t\t\t\tastar.connect_points(1, 2, false)\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tvar astar = new AStar2D();\n\t\t\t\tastar.AddPoint(1, new Vector2(1, 1));\n\t\t\t\tastar.AddPoint(2, new Vector2(0, 5));\n\t\t\t\tastar.ConnectPoints(1, 2, false);\n\t\t\t\t\n\t\t\t\t","returnType":"void"},{"name":"disconnect_points","signature":"disconnect_points(id: int, to_id: int, bidirectional: bool) -> void","description":"Deletes the segment between the given points. If [param bidirectional] is false, only movement from [param id] to [param to_id] is prevented, and a unidirectional segment possibly remains.","returnType":"void"},{"name":"get_available_point_id","signature":"get_available_point_id() -> int","description":"Returns the next available point ID with no point associated to it.","returnType":"int"},{"name":"get_closest_point","signature":"get_closest_point(to_position: Vector2, include_disabled: bool) -> int","description":"Returns the ID of the closest point to [param to_position], optionally taking disabled points into account. Returns -1 if there are no points in the points pool.\n\t\t\t\tNote: If several points are the closest to [param to_position], the one with the smallest ID will be returned, ensuring a deterministic result.","returnType":"int"},{"name":"get_closest_position_in_segment","signature":"get_closest_position_in_segment(to_position: Vector2) -> Vector2","description":"Returns the closest position to [param to_position] that resides inside a segment between two connected points.\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tvar astar = AStar2D.new()\n\t\t\t\tastar.add_point(1, Vector2(0, 0))\n\t\t\t\tastar.add_point(2, Vector2(0, 5))\n\t\t\t\tastar.connect_points(1, 2)\n\t\t\t\tvar res = astar.get_closest_position_in_segment(Vector2(3, 3)) # Returns (0, 3)\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tvar astar = new AStar2D();\n\t\t\t\tastar.AddPoint(1, new Vector2(0, 0));\n\t\t\t\tastar.AddPoint(2, new Vector2(0, 5));\n\t\t\t\tastar.ConnectPoints(1, 2);\n\t\t\t\tVector2 res = astar.GetClosestPositionInSegment(new Vector2(3, 3)); // Returns (0, 3)\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tThe result is in the segment that goes from y = 0 to y = 5. It's the closest position in the segment to the given point.","returnType":"Vector2"},{"name":"get_id_path","signature":"get_id_path(from_id: int, to_id: int, allow_partial_path: bool) -> PackedInt64Array","description":"Returns an array with the IDs of the points that form the path found by AStar2D between the given points. The array is ordered from the starting point to the ending point of the path.\n\t\t\t\tIf there is no valid path to the target, and [param allow_partial_path] is true, returns a path to the point closest to the target that can be reached.\n\t\t\t\tNote: When [param allow_partial_path] is true and [param to_id] is disabled the search may take an unusually long time to finish.\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tvar astar = AStar2D.new()\n\t\t\t\tastar.add_point(1, Vector2(0, 0))\n\t\t\t\tastar.add_point(2, Vector2(0, 1), 1) # Default weight is 1\n\t\t\t\tastar.add_point(3, Vector2(1, 1))\n\t\t\t\tastar.add_point(4, Vector2(2, 0))\n\n\t\t\t\tastar.connect_points(1, 2, false)\n\t\t\t\tastar.connect_points(2, 3, false)\n\t\t\t\tastar.connect_points(4, 3, false)\n\t\t\t\tastar.connect_points(1, 4, false)\n\n\t\t\t\tvar res = astar.get_id_path(1, 3) # Returns [1, 2, 3]\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tvar astar = new AStar2D();\n\t\t\t\tastar.AddPoint(1, new Vector2(0, 0));\n\t\t\t\tastar.AddPoint(2, new Vector2(0, 1), 1); // Default weight is 1\n\t\t\t\tastar.AddPoint(3, new Vector2(1, 1));\n\t\t\t\tastar.AddPoint(4, new Vector2(2, 0));\n\n\t\t\t\tastar.ConnectPoints(1, 2, false);\n\t\t\t\tastar.ConnectPoints(2, 3, false);\n\t\t\t\tastar.ConnectPoints(4, 3, false);\n\t\t\t\tastar.ConnectPoints(1, 4, false);\n\t\t\t\tlong[] res = astar.GetIdPath(1, 3); // Returns [1, 2, 3]\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tIf you change the 2nd point's weight to 3, then the result will be [1, 4, 3] instead, because now even though the distance is longer, it's \"easier\" to get through point 4 than through point 2.","returnType":"PackedInt64Array"},{"name":"get_point_capacity","signature":"get_point_capacity() -> int","description":"Returns the capacity of the structure backing the points, useful in conjunction with [method reserve_space].","returnType":"int"},{"name":"get_point_connections","signature":"get_point_connections(id: int) -> PackedInt64Array","description":"Returns an array with the IDs of the points that form the connection with the given point.\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tvar astar = AStar2D.new()\n\t\t\t\tastar.add_point(1, Vector2(0, 0))\n\t\t\t\tastar.add_point(2, Vector2(0, 1))\n\t\t\t\tastar.add_point(3, Vector2(1, 1))\n\t\t\t\tastar.add_point(4, Vector2(2, 0))\n\n\t\t\t\tastar.connect_points(1, 2, true)\n\t\t\t\tastar.connect_points(1, 3, true)\n\n\t\t\t\tvar neighbors = astar.get_point_connections(1) # Returns [2, 3]\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tvar astar = new AStar2D();\n\t\t\t\tastar.AddPoint(1, new Vector2(0, 0));\n\t\t\t\tastar.AddPoint(2, new Vector2(0, 1));\n\t\t\t\tastar.AddPoint(3, new Vector2(1, 1));\n\t\t\t\tastar.AddPoint(4, new Vector2(2, 0));\n\n\t\t\t\tastar.ConnectPoints(1, 2, true);\n\t\t\t\tastar.ConnectPoints(1, 3, true);\n\n\t\t\t\tlong[] neighbors = astar.GetPointConnections(1); // Returns [2, 3]\n\t\t\t\t\n\t\t\t\t","returnType":"PackedInt64Array"},{"name":"get_point_count","signature":"get_point_count() -> int","description":"Returns the number of points currently in the points pool.","returnType":"int"},{"name":"get_point_ids","signature":"get_point_ids() -> PackedInt64Array","description":"Returns an array of all point IDs.","returnType":"PackedInt64Array"},{"name":"get_point_path","signature":"get_point_path(from_id: int, to_id: int, allow_partial_path: bool) -> PackedVector2Array","description":"Returns an array with the points that are in the path found by AStar2D between the given points. The array is ordered from the starting point to the ending point of the path.\n\t\t\t\tIf there is no valid path to the target, and [param allow_partial_path] is true, returns a path to the point closest to the target that can be reached.\n\t\t\t\tNote: This method is not thread-safe. If called from a , it will return an empty array and will print an error message.\n\t\t\t\tAdditionally, when [param allow_partial_path] is true and [param to_id] is disabled the search may take an unusually long time to finish.","returnType":"PackedVector2Array"},{"name":"get_point_position","signature":"get_point_position(id: int) -> Vector2","description":"Returns the position of the point associated with the given [param id].","returnType":"Vector2"},{"name":"get_point_weight_scale","signature":"get_point_weight_scale(id: int) -> float","description":"Returns the weight scale of the point associated with the given [param id].","returnType":"float"},{"name":"has_point","signature":"has_point(id: int) -> bool","description":"Returns whether a point associated with the given [param id] exists.","returnType":"bool"},{"name":"is_point_disabled","signature":"is_point_disabled(id: int) -> bool","description":"Returns whether a point is disabled or not for pathfinding. By default, all points are enabled.","returnType":"bool"},{"name":"remove_point","signature":"remove_point(id: int) -> void","description":"Removes the point associated with the given [param id] from the points pool.","returnType":"void"},{"name":"reserve_space","signature":"reserve_space(num_nodes: int) -> void","description":"Reserves space internally for [param num_nodes] points. Useful if you're adding a known large number of points at once, such as points on a grid. The new capacity must be greater or equal to the old capacity.","returnType":"void"},{"name":"set_point_disabled","signature":"set_point_disabled(id: int, disabled: bool) -> void","description":"Disables or enables the specified point for pathfinding. Useful for making a temporary obstacle.","returnType":"void"},{"name":"set_point_position","signature":"set_point_position(id: int, position: Vector2) -> void","description":"Sets the [param position] for the point with the given [param id].","returnType":"void"},{"name":"set_point_weight_scale","signature":"set_point_weight_scale(id: int, weight_scale: float) -> void","description":"Sets the [param weight_scale] for the point with the given [param id]. The [param weight_scale] is multiplied by the result of [method _compute_cost] when determining the overall cost of traveling across a segment from a neighboring point to this point.","returnType":"void"}],"signals":[]},"AStar3D":{"name":"AStar3D","description":"An implementation of A* for finding the shortest path between two vertices on a connected graph in 3D space.","inherits":"RefCounted","properties":[],"methods":[{"name":"_compute_cost","signature":"_compute_cost(from_id: int, to_id: int) -> float","description":"Called when computing the cost between two connected points.\n\t\t\t\tNote that this function is hidden in the default  class.","returnType":"float"},{"name":"_estimate_cost","signature":"_estimate_cost(from_id: int, end_id: int) -> float","description":"Called when estimating the cost between a point and the path's ending point.\n\t\t\t\tNote that this function is hidden in the default  class.","returnType":"float"},{"name":"add_point","signature":"add_point(id: int, position: Vector3, weight_scale: float) -> void","description":"Adds a new point at the given position with the given identifier. The [param id] must be 0 or larger, and the [param weight_scale] must be 0.0 or greater.\n\t\t\t\tThe [param weight_scale] is multiplied by the result of [method _compute_cost] when determining the overall cost of traveling across a segment from a neighboring point to this point. Thus, all else being equal, the algorithm prefers points with lower [param weight_scale]s to form a path.\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tvar astar = AStar3D.new()\n\t\t\t\tastar.add_point(1, Vector3(1, 0, 0), 4) # Adds the point (1, 0, 0) with weight_scale 4 and id 1\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tvar astar = new AStar3D();\n\t\t\t\tastar.AddPoint(1, new Vector3(1, 0, 0), 4); // Adds the point (1, 0, 0) with weight_scale 4 and id 1\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tIf there already exists a point for the given [param id], its position and weight scale are updated to the given values.","returnType":"void"},{"name":"are_points_connected","signature":"are_points_connected(id: int, to_id: int, bidirectional: bool) -> bool","description":"Returns whether the two given points are directly connected by a segment. If [param bidirectional] is false, returns whether movement from [param id] to [param to_id] is possible through this segment.","returnType":"bool"},{"name":"clear","signature":"clear() -> void","description":"Clears all the points and segments.","returnType":"void"},{"name":"connect_points","signature":"connect_points(id: int, to_id: int, bidirectional: bool) -> void","description":"Creates a segment between the given points. If [param bidirectional] is false, only movement from [param id] to [param to_id] is allowed, not the reverse direction.\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tvar astar = AStar3D.new()\n\t\t\t\tastar.add_point(1, Vector3(1, 1, 0))\n\t\t\t\tastar.add_point(2, Vector3(0, 5, 0))\n\t\t\t\tastar.connect_points(1, 2, false)\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tvar astar = new AStar3D();\n\t\t\t\tastar.AddPoint(1, new Vector3(1, 1, 0));\n\t\t\t\tastar.AddPoint(2, new Vector3(0, 5, 0));\n\t\t\t\tastar.ConnectPoints(1, 2, false);\n\t\t\t\t\n\t\t\t\t","returnType":"void"},{"name":"disconnect_points","signature":"disconnect_points(id: int, to_id: int, bidirectional: bool) -> void","description":"Deletes the segment between the given points. If [param bidirectional] is false, only movement from [param id] to [param to_id] is prevented, and a unidirectional segment possibly remains.","returnType":"void"},{"name":"get_available_point_id","signature":"get_available_point_id() -> int","description":"Returns the next available point ID with no point associated to it.","returnType":"int"},{"name":"get_closest_point","signature":"get_closest_point(to_position: Vector3, include_disabled: bool) -> int","description":"Returns the ID of the closest point to [param to_position], optionally taking disabled points into account. Returns -1 if there are no points in the points pool.\n\t\t\t\tNote: If several points are the closest to [param to_position], the one with the smallest ID will be returned, ensuring a deterministic result.","returnType":"int"},{"name":"get_closest_position_in_segment","signature":"get_closest_position_in_segment(to_position: Vector3) -> Vector3","description":"Returns the closest position to [param to_position] that resides inside a segment between two connected points.\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tvar astar = AStar3D.new()\n\t\t\t\tastar.add_point(1, Vector3(0, 0, 0))\n\t\t\t\tastar.add_point(2, Vector3(0, 5, 0))\n\t\t\t\tastar.connect_points(1, 2)\n\t\t\t\tvar res = astar.get_closest_position_in_segment(Vector3(3, 3, 0)) # Returns (0, 3, 0)\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tvar astar = new AStar3D();\n\t\t\t\tastar.AddPoint(1, new Vector3(0, 0, 0));\n\t\t\t\tastar.AddPoint(2, new Vector3(0, 5, 0));\n\t\t\t\tastar.ConnectPoints(1, 2);\n\t\t\t\tVector3 res = astar.GetClosestPositionInSegment(new Vector3(3, 3, 0)); // Returns (0, 3, 0)\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tThe result is in the segment that goes from y = 0 to y = 5. It's the closest position in the segment to the given point.","returnType":"Vector3"},{"name":"get_id_path","signature":"get_id_path(from_id: int, to_id: int, allow_partial_path: bool) -> PackedInt64Array","description":"Returns an array with the IDs of the points that form the path found by AStar3D between the given points. The array is ordered from the starting point to the ending point of the path.\n\t\t\t\tIf there is no valid path to the target, and [param allow_partial_path] is true, returns a path to the point closest to the target that can be reached.\n\t\t\t\tNote: When [param allow_partial_path] is true and [param to_id] is disabled the search may take an unusually long time to finish.\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tvar astar = AStar3D.new()\n\t\t\t\tastar.add_point(1, Vector3(0, 0, 0))\n\t\t\t\tastar.add_point(2, Vector3(0, 1, 0), 1) # Default weight is 1\n\t\t\t\tastar.add_point(3, Vector3(1, 1, 0))\n\t\t\t\tastar.add_point(4, Vector3(2, 0, 0))\n\n\t\t\t\tastar.connect_points(1, 2, false)\n\t\t\t\tastar.connect_points(2, 3, false)\n\t\t\t\tastar.connect_points(4, 3, false)\n\t\t\t\tastar.connect_points(1, 4, false)\n\n\t\t\t\tvar res = astar.get_id_path(1, 3) # Returns [1, 2, 3]\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tvar astar = new AStar3D();\n\t\t\t\tastar.AddPoint(1, new Vector3(0, 0, 0));\n\t\t\t\tastar.AddPoint(2, new Vector3(0, 1, 0), 1); // Default weight is 1\n\t\t\t\tastar.AddPoint(3, new Vector3(1, 1, 0));\n\t\t\t\tastar.AddPoint(4, new Vector3(2, 0, 0));\n\t\t\t\tastar.ConnectPoints(1, 2, false);\n\t\t\t\tastar.ConnectPoints(2, 3, false);\n\t\t\t\tastar.ConnectPoints(4, 3, false);\n\t\t\t\tastar.ConnectPoints(1, 4, false);\n\t\t\t\tlong[] res = astar.GetIdPath(1, 3); // Returns [1, 2, 3]\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tIf you change the 2nd point's weight to 3, then the result will be [1, 4, 3] instead, because now even though the distance is longer, it's \"easier\" to get through point 4 than through point 2.","returnType":"PackedInt64Array"},{"name":"get_point_capacity","signature":"get_point_capacity() -> int","description":"Returns the capacity of the structure backing the points, useful in conjunction with [method reserve_space].","returnType":"int"},{"name":"get_point_connections","signature":"get_point_connections(id: int) -> PackedInt64Array","description":"Returns an array with the IDs of the points that form the connection with the given point.\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tvar astar = AStar3D.new()\n\t\t\t\tastar.add_point(1, Vector3(0, 0, 0))\n\t\t\t\tastar.add_point(2, Vector3(0, 1, 0))\n\t\t\t\tastar.add_point(3, Vector3(1, 1, 0))\n\t\t\t\tastar.add_point(4, Vector3(2, 0, 0))\n\n\t\t\t\tastar.connect_points(1, 2, true)\n\t\t\t\tastar.connect_points(1, 3, true)\n\n\t\t\t\tvar neighbors = astar.get_point_connections(1) # Returns [2, 3]\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tvar astar = new AStar3D();\n\t\t\t\tastar.AddPoint(1, new Vector3(0, 0, 0));\n\t\t\t\tastar.AddPoint(2, new Vector3(0, 1, 0));\n\t\t\t\tastar.AddPoint(3, new Vector3(1, 1, 0));\n\t\t\t\tastar.AddPoint(4, new Vector3(2, 0, 0));\n\t\t\t\tastar.ConnectPoints(1, 2, true);\n\t\t\t\tastar.ConnectPoints(1, 3, true);\n\n\t\t\t\tlong[] neighbors = astar.GetPointConnections(1); // Returns [2, 3]\n\t\t\t\t\n\t\t\t\t","returnType":"PackedInt64Array"},{"name":"get_point_count","signature":"get_point_count() -> int","description":"Returns the number of points currently in the points pool.","returnType":"int"},{"name":"get_point_ids","signature":"get_point_ids() -> PackedInt64Array","description":"Returns an array of all point IDs.","returnType":"PackedInt64Array"},{"name":"get_point_path","signature":"get_point_path(from_id: int, to_id: int, allow_partial_path: bool) -> PackedVector3Array","description":"Returns an array with the points that are in the path found by AStar3D between the given points. The array is ordered from the starting point to the ending point of the path.\n\t\t\t\tIf there is no valid path to the target, and [param allow_partial_path] is true, returns a path to the point closest to the target that can be reached.\n\t\t\t\tNote: This method is not thread-safe. If called from a , it will return an empty array and will print an error message.\n\t\t\t\tAdditionally, when [param allow_partial_path] is true and [param to_id] is disabled the search may take an unusually long time to finish.","returnType":"PackedVector3Array"},{"name":"get_point_position","signature":"get_point_position(id: int) -> Vector3","description":"Returns the position of the point associated with the given [param id].","returnType":"Vector3"},{"name":"get_point_weight_scale","signature":"get_point_weight_scale(id: int) -> float","description":"Returns the weight scale of the point associated with the given [param id].","returnType":"float"},{"name":"has_point","signature":"has_point(id: int) -> bool","description":"Returns whether a point associated with the given [param id] exists.","returnType":"bool"},{"name":"is_point_disabled","signature":"is_point_disabled(id: int) -> bool","description":"Returns whether a point is disabled or not for pathfinding. By default, all points are enabled.","returnType":"bool"},{"name":"remove_point","signature":"remove_point(id: int) -> void","description":"Removes the point associated with the given [param id] from the points pool.","returnType":"void"},{"name":"reserve_space","signature":"reserve_space(num_nodes: int) -> void","description":"Reserves space internally for [param num_nodes] points. Useful if you're adding a known large number of points at once, such as points on a grid. New capacity must be greater or equals to old capacity.","returnType":"void"},{"name":"set_point_disabled","signature":"set_point_disabled(id: int, disabled: bool) -> void","description":"Disables or enables the specified point for pathfinding. Useful for making a temporary obstacle.","returnType":"void"},{"name":"set_point_position","signature":"set_point_position(id: int, position: Vector3) -> void","description":"Sets the [param position] for the point with the given [param id].","returnType":"void"},{"name":"set_point_weight_scale","signature":"set_point_weight_scale(id: int, weight_scale: float) -> void","description":"Sets the [param weight_scale] for the point with the given [param id]. The [param weight_scale] is multiplied by the result of [method _compute_cost] when determining the overall cost of traveling across a segment from a neighboring point to this point.","returnType":"void"}],"signals":[]},"AStarGrid2D":{"name":"AStarGrid2D","description":"An implementation of A* for finding the shortest path between two points on a partial 2D grid.","inherits":"RefCounted","properties":[{"name":"cell_shape","type":"int","description":"The cell shape. Affects how the positions are placed in the grid. If changed, [method update] needs to be called before finding the next path."},{"name":"cell_size","type":"Vector2","description":"The size of the point cell which will be applied to calculate the resulting point position returned by [method get_point_path]. If changed, [method update] needs to be called before finding the next path."},{"name":"default_compute_heuristic","type":"int","description":"The default [enum Heuristic] which will be used to calculate the cost between two points if [method _compute_cost] was not overridden."},{"name":"default_estimate_heuristic","type":"int","description":"The default [enum Heuristic] which will be used to calculate the cost between the point and the end point if [method _estimate_cost] was not overridden."},{"name":"diagonal_mode","type":"int","description":"A specific [enum DiagonalMode] mode which will force the path to avoid or accept the specified diagonals."},{"name":"jumping_enabled","type":"bool","description":"Enables or disables jumping to skip up the intermediate points and speeds up the searching algorithm.\n\t\t\t[b]Note:[/b] Currently, toggling it on disables the consideration of weight scaling in pathfinding."},{"name":"offset","type":"Vector2","description":"The offset of the grid which will be applied to calculate the resulting point position returned by [method get_point_path]. If changed, [method update] needs to be called before finding the next path."},{"name":"region","type":"Rect2i","description":"The region of grid cells available for pathfinding. If changed, [method update] needs to be called before finding the next path."},{"name":"size","type":"Vector2i","description":"The size of the grid (number of cells of size [member cell_size] on each axis). If changed, [method update] needs to be called before finding the next path."}],"methods":[{"name":"_compute_cost","signature":"_compute_cost(from_id: Vector2i, to_id: Vector2i) -> float","description":"Called when computing the cost between two connected points.\n\t\t\t\tNote that this function is hidden in the default  class.","returnType":"float"},{"name":"_estimate_cost","signature":"_estimate_cost(from_id: Vector2i, end_id: Vector2i) -> float","description":"Called when estimating the cost between a point and the path's ending point.\n\t\t\t\tNote that this function is hidden in the default  class.","returnType":"float"},{"name":"clear","signature":"clear() -> void","description":"Clears the grid and sets the [member region] to Rect2i(0, 0, 0, 0).","returnType":"void"},{"name":"fill_solid_region","signature":"fill_solid_region(region: Rect2i, solid: bool) -> void","description":"Fills the given [param region] on the grid with the specified value for the solid flag.\n\t\t\t\tNote: Calling [method update] is not needed after the call of this function.","returnType":"void"},{"name":"fill_weight_scale_region","signature":"fill_weight_scale_region(region: Rect2i, weight_scale: float) -> void","description":"Fills the given [param region] on the grid with the specified value for the weight scale.\n\t\t\t\tNote: Calling [method update] is not needed after the call of this function.","returnType":"void"},{"name":"get_id_path","signature":"get_id_path(from_id: Vector2i, to_id: Vector2i, allow_partial_path: bool) -> Vector2i[]","description":"Returns an array with the IDs of the points that form the path found by AStar2D between the given points. The array is ordered from the starting point to the ending point of the path.\n\t\t\t\tIf there is no valid path to the target, and [param allow_partial_path] is true, returns a path to the point closest to the target that can be reached.\n\t\t\t\tNote: When [param allow_partial_path] is true and [param to_id] is solid the search may take an unusually long time to finish.","returnType":"Vector2i[]"},{"name":"get_point_data_in_region","signature":"get_point_data_in_region(region: Rect2i) -> Dictionary[]","description":"Returns an array of dictionaries with point data (id: , position: , solid: , weight_scale: ) within a [param region].","returnType":"Dictionary[]"},{"name":"get_point_path","signature":"get_point_path(from_id: Vector2i, to_id: Vector2i, allow_partial_path: bool) -> PackedVector2Array","description":"Returns an array with the points that are in the path found by  between the given points. The array is ordered from the starting point to the ending point of the path.\n\t\t\t\tIf there is no valid path to the target, and [param allow_partial_path] is true, returns a path to the point closest to the target that can be reached.\n\t\t\t\tNote: This method is not thread-safe. If called from a , it will return an empty array and will print an error message.\n\t\t\t\tAdditionally, when [param allow_partial_path] is true and [param to_id] is solid the search may take an unusually long time to finish.","returnType":"PackedVector2Array"},{"name":"get_point_position","signature":"get_point_position(id: Vector2i) -> Vector2","description":"Returns the position of the point associated with the given [param id].","returnType":"Vector2"},{"name":"get_point_weight_scale","signature":"get_point_weight_scale(id: Vector2i) -> float","description":"Returns the weight scale of the point associated with the given [param id].","returnType":"float"},{"name":"is_dirty","signature":"is_dirty() -> bool","description":"Indicates that the grid parameters were changed and [method update] needs to be called.","returnType":"bool"},{"name":"is_in_bounds","signature":"is_in_bounds(x: int, y: int) -> bool","description":"Returns true if the [param x] and [param y] is a valid grid coordinate (id), i.e. if it is inside [member region]. Equivalent to region.has_point(Vector2i(x, y)).","returnType":"bool"},{"name":"is_in_boundsv","signature":"is_in_boundsv(id: Vector2i) -> bool","description":"Returns true if the [param id] vector is a valid grid coordinate, i.e. if it is inside [member region]. Equivalent to region.has_point(id).","returnType":"bool"},{"name":"is_point_solid","signature":"is_point_solid(id: Vector2i) -> bool","description":"Returns true if a point is disabled for pathfinding. By default, all points are enabled.","returnType":"bool"},{"name":"set_point_solid","signature":"set_point_solid(id: Vector2i, solid: bool) -> void","description":"Disables or enables the specified point for pathfinding. Useful for making an obstacle. By default, all points are enabled.\n\t\t\t\tNote: Calling [method update] is not needed after the call of this function.","returnType":"void"},{"name":"set_point_weight_scale","signature":"set_point_weight_scale(id: Vector2i, weight_scale: float) -> void","description":"Sets the [param weight_scale] for the point with the given [param id]. The [param weight_scale] is multiplied by the result of [method _compute_cost] when determining the overall cost of traveling across a segment from a neighboring point to this point.\n\t\t\t\tNote: Calling [method update] is not needed after the call of this function.","returnType":"void"},{"name":"update","signature":"update() -> void","description":"Updates the internal state of the grid according to the parameters to prepare it to search the path. Needs to be called if parameters like [member region], [member cell_size] or [member offset] are changed. [method is_dirty] will return true if this is the case and this needs to be called.\n\t\t\t\tNote: All point data (solidity and weight scale) will be cleared.","returnType":"void"}],"signals":[]},"AcceptDialog":{"name":"AcceptDialog","description":"A base dialog used for user notification.","inherits":"Window","properties":[{"name":"dialog_autowrap","type":"bool","description":"Sets autowrapping for the text in the dialog."},{"name":"dialog_close_on_escape","type":"bool","description":"If [code]true[/code], the dialog will be hidden when the escape key ([constant KEY_ESCAPE]) is pressed."},{"name":"dialog_hide_on_ok","type":"bool","description":"If [code]true[/code], the dialog is hidden when the OK button is pressed. You can set it to [code]false[/code] if you want to do e.g. input validation when receiving the [signal confirmed] signal, and handle hiding the dialog in your own logic.\n\t\t\t[b]Note:[/b] Some nodes derived from this class can have a different default value, and potentially their own built-in logic overriding this setting. For example [FileDialog] defaults to [code]false[/code], and has its own input validation code that is called when you press OK, which eventually hides the dialog if the input is valid. As such, this property can't be used in [FileDialog] to disable hiding the dialog when pressing OK."},{"name":"dialog_text","type":"String","description":"The text displayed by the dialog."},{"name":"ok_button_text","type":"String","description":"The text displayed by the OK button (see [method get_ok_button])."}],"methods":[{"name":"add_button","signature":"add_button(text: String, right: bool, action: String) -> Button","description":"Adds a button with label [param text] and a custom [param action] to the dialog and returns the created button. [param action] will be passed to the [signal custom_action] signal when pressed.\n\t\t\t\tIf true, [param right] will place the button to the right of any sibling buttons.\n\t\t\t\tYou can use [method remove_button] method to remove a button created with this method from the dialog.","returnType":"Button"},{"name":"add_cancel_button","signature":"add_cancel_button(name: String) -> Button","description":"Adds a button with label [param name] and a cancel action to the dialog and returns the created button.\n\t\t\t\tYou can use [method remove_button] method to remove a button created with this method from the dialog.","returnType":"Button"},{"name":"get_label","signature":"get_label() -> Label","description":"Returns the label used for built-in text.\n\t\t\t\tWarning: This is a required internal node, removing and freeing it may cause a crash. If you wish to hide it or any of its children, use their [member CanvasItem.visible] property.","returnType":"Label"},{"name":"get_ok_button","signature":"get_ok_button() -> Button","description":"Returns the OK  instance.\n\t\t\t\tWarning: This is a required internal node, removing and freeing it may cause a crash. If you wish to hide it or any of its children, use their [member CanvasItem.visible] property.","returnType":"Button"},{"name":"register_text_enter","signature":"register_text_enter(line_edit: LineEdit) -> void","description":"Registers a  in the dialog. When the enter key is pressed, the dialog will be accepted.","returnType":"void"},{"name":"remove_button","signature":"remove_button(button: Button) -> void","description":"Removes the [param button] from the dialog. Does NOT free the [param button]. The [param button] must be a  added with [method add_button] or [method add_cancel_button] method. After removal, pressing the [param button] will no longer emit this dialog's [signal custom_action] or [signal canceled] signals.","returnType":"void"}],"signals":[{"name":"canceled","description":"Emitted when the dialog is closed or the button created with [method add_cancel_button] is pressed."},{"name":"confirmed","description":"Emitted when the dialog is accepted, i.e. the OK button is pressed."},{"name":"custom_action","description":"Emitted when a custom button is pressed. See [method add_button]."}]},"AnimatableBody2D":{"name":"AnimatableBody2D","description":"A 2D physics body that can't be moved by external forces. When moved manually, it affects other bodies in its path.","inherits":"StaticBody2D","properties":[{"name":"sync_to_physics","type":"bool","description":"If [code]true[/code], the body's movement will be synchronized to the physics frame. This is useful when animating movement via [AnimationPlayer], for example on moving platforms. Do [b]not[/b] use together with [method PhysicsBody2D.move_and_collide]."}],"methods":[],"signals":[]},"AnimatableBody3D":{"name":"AnimatableBody3D","description":"A 3D physics body that can't be moved by external forces. When moved manually, it affects other bodies in its path.","inherits":"StaticBody3D","properties":[{"name":"sync_to_physics","type":"bool","description":"If [code]true[/code], the body's movement will be synchronized to the physics frame. This is useful when animating movement via [AnimationPlayer], for example on moving platforms. Do [b]not[/b] use together with [method PhysicsBody3D.move_and_collide]."}],"methods":[],"signals":[]},"AnimatedSprite2D":{"name":"AnimatedSprite2D","description":"Sprite node that contains multiple textures as frames to play for animation.","inherits":"Node2D","properties":[{"name":"animation","type":"StringName","description":"The current animation from the [member sprite_frames] resource. If this value is changed, the [member frame] counter and the [member frame_progress] are reset."},{"name":"autoplay","type":"String","description":"The key of the animation to play when the scene loads."},{"name":"centered","type":"bool","description":"If [code]true[/code], texture will be centered.\n\t\t\t[b]Note:[/b] For games with a pixel art aesthetic, textures may appear deformed when centered. This is caused by their position being between pixels. To prevent this, set this property to [code]false[/code], or consider enabling [member ProjectSettings.rendering/2d/snap/snap_2d_vertices_to_pixel] and [member ProjectSettings.rendering/2d/snap/snap_2d_transforms_to_pixel]."},{"name":"flip_h","type":"bool","description":"If [code]true[/code], texture is flipped horizontally."},{"name":"flip_v","type":"bool","description":"If [code]true[/code], texture is flipped vertically."},{"name":"frame","type":"int","description":"The displayed animation frame's index. Setting this property also resets [member frame_progress]. If this is not desired, use [method set_frame_and_progress]."},{"name":"frame_progress","type":"float","description":"The progress value between [code]0.0[/code] and [code]1.0[/code] until the current frame transitions to the next frame. If the animation is playing backwards, the value transitions from [code]1.0[/code] to [code]0.0[/code]."},{"name":"offset","type":"Vector2","description":"The texture's drawing offset."},{"name":"speed_scale","type":"float","description":"The speed scaling ratio. For example, if this value is [code]1[/code], then the animation plays at normal speed. If it's [code]0.5[/code], then it plays at half speed. If it's [code]2[/code], then it plays at double speed.\n\t\t\tIf set to a negative value, the animation is played in reverse. If set to [code]0[/code], the animation will not advance."},{"name":"sprite_frames","type":"SpriteFrames","description":"The [SpriteFrames] resource containing the animation(s). Allows you the option to load, edit, clear, make unique and save the states of the [SpriteFrames] resource."}],"methods":[{"name":"get_playing_speed","signature":"get_playing_speed() -> float","description":"Returns the actual playing speed of current animation or 0 if not playing. This speed is the [member speed_scale] property multiplied by custom_speed argument specified when calling the [method play] method.\n\t\t\t\tReturns a negative value if the current animation is playing backwards.","returnType":"float"},{"name":"is_playing","signature":"is_playing() -> bool","description":"Returns true if an animation is currently playing (even if [member speed_scale] and/or custom_speed are 0).","returnType":"bool"},{"name":"pause","signature":"pause() -> void","description":"Pauses the currently playing animation. The [member frame] and [member frame_progress] will be kept and calling [method play] or [method play_backwards] without arguments will resume the animation from the current playback position.\n\t\t\t\tSee also [method stop].","returnType":"void"},{"name":"play","signature":"play(name: StringName, custom_speed: float, from_end: bool) -> void","description":"Plays the animation with key [param name]. If [param custom_speed] is negative and [param from_end] is true, the animation will play backwards (which is equivalent to calling [method play_backwards]).\n\t\t\t\tIf this method is called with that same animation [param name], or with no [param name] parameter, the assigned animation will resume playing if it was paused.","returnType":"void"},{"name":"play_backwards","signature":"play_backwards(name: StringName) -> void","description":"Plays the animation with key [param name] in reverse.\n\t\t\t\tThis method is a shorthand for [method play] with custom_speed = -1.0 and from_end = true, so see its description for more information.","returnType":"void"},{"name":"set_frame_and_progress","signature":"set_frame_and_progress(frame: int, progress: float) -> void","description":"Sets [member frame] the [member frame_progress] to the given values. Unlike setting [member frame], this method does not reset the [member frame_progress] to 0.0 implicitly.\n\t\t\t\tExample: Change the animation while keeping the same [member frame] and [member frame_progress]:\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tvar current_frame = animated_sprite.get_frame()\n\t\t\t\tvar current_progress = animated_sprite.get_frame_progress()\n\t\t\t\tanimated_sprite.play(\"walk_another_skin\")\n\t\t\t\tanimated_sprite.set_frame_and_progress(current_frame, current_progress)\n\t\t\t\t\n\t\t\t\t","returnType":"void"},{"name":"stop","signature":"stop() -> void","description":"Stops the currently playing animation. The animation position is reset to 0 and the custom_speed is reset to 1.0. See also [method pause].","returnType":"void"}],"signals":[{"name":"animation_changed","description":"Emitted when [member animation] changes."},{"name":"animation_finished","description":"Emitted when the animation reaches the end, or the start if it is played in reverse. When the animation finishes, it pauses the playback.\n\t\t\t\t[b]Note:[/b] This signal is not emitted if an animation is looping."},{"name":"animation_looped","description":"Emitted when the animation loops."},{"name":"frame_changed","description":"Emitted when [member frame] changes."},{"name":"sprite_frames_changed","description":"Emitted when [member sprite_frames] changes."}]},"AnimatedSprite3D":{"name":"AnimatedSprite3D","description":"2D sprite node in 3D world, that can use multiple 2D textures for animation.","inherits":"SpriteBase3D","properties":[{"name":"animation","type":"StringName","description":"The current animation from the [member sprite_frames] resource. If this value is changed, the [member frame] counter and the [member frame_progress] are reset."},{"name":"autoplay","type":"String","description":"The key of the animation to play when the scene loads."},{"name":"frame","type":"int","description":"The displayed animation frame's index. Setting this property also resets [member frame_progress]. If this is not desired, use [method set_frame_and_progress]."},{"name":"frame_progress","type":"float","description":"The progress value between [code]0.0[/code] and [code]1.0[/code] until the current frame transitions to the next frame. If the animation is playing backwards, the value transitions from [code]1.0[/code] to [code]0.0[/code]."},{"name":"speed_scale","type":"float","description":"The speed scaling ratio. For example, if this value is [code]1[/code], then the animation plays at normal speed. If it's [code]0.5[/code], then it plays at half speed. If it's [code]2[/code], then it plays at double speed.\n\t\t\tIf set to a negative value, the animation is played in reverse. If set to [code]0[/code], the animation will not advance."},{"name":"sprite_frames","type":"SpriteFrames","description":"The [SpriteFrames] resource containing the animation(s). Allows you the option to load, edit, clear, make unique and save the states of the [SpriteFrames] resource."}],"methods":[{"name":"get_playing_speed","signature":"get_playing_speed() -> float","description":"Returns the actual playing speed of current animation or 0 if not playing. This speed is the [member speed_scale] property multiplied by custom_speed argument specified when calling the [method play] method.\n\t\t\t\tReturns a negative value if the current animation is playing backwards.","returnType":"float"},{"name":"is_playing","signature":"is_playing() -> bool","description":"Returns true if an animation is currently playing (even if [member speed_scale] and/or custom_speed are 0).","returnType":"bool"},{"name":"pause","signature":"pause() -> void","description":"Pauses the currently playing animation. The [member frame] and [member frame_progress] will be kept and calling [method play] or [method play_backwards] without arguments will resume the animation from the current playback position.\n\t\t\t\tSee also [method stop].","returnType":"void"},{"name":"play","signature":"play(name: StringName, custom_speed: float, from_end: bool) -> void","description":"Plays the animation with key [param name]. If [param custom_speed] is negative and [param from_end] is true, the animation will play backwards (which is equivalent to calling [method play_backwards]).\n\t\t\t\tIf this method is called with that same animation [param name], or with no [param name] parameter, the assigned animation will resume playing if it was paused.","returnType":"void"},{"name":"play_backwards","signature":"play_backwards(name: StringName) -> void","description":"Plays the animation with key [param name] in reverse.\n\t\t\t\tThis method is a shorthand for [method play] with custom_speed = -1.0 and from_end = true, so see its description for more information.","returnType":"void"},{"name":"set_frame_and_progress","signature":"set_frame_and_progress(frame: int, progress: float) -> void","description":"Sets [member frame] the [member frame_progress] to the given values. Unlike setting [member frame], this method does not reset the [member frame_progress] to 0.0 implicitly.\n\t\t\t\tExample: Change the animation while keeping the same [member frame] and [member frame_progress]:\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tvar current_frame = animated_sprite.get_frame()\n\t\t\t\tvar current_progress = animated_sprite.get_frame_progress()\n\t\t\t\tanimated_sprite.play(\"walk_another_skin\")\n\t\t\t\tanimated_sprite.set_frame_and_progress(current_frame, current_progress)\n\t\t\t\t\n\t\t\t\t","returnType":"void"},{"name":"stop","signature":"stop() -> void","description":"Stops the currently playing animation. The animation position is reset to 0 and the custom_speed is reset to 1.0. See also [method pause].","returnType":"void"}],"signals":[{"name":"animation_changed","description":"Emitted when [member animation] changes."},{"name":"animation_finished","description":"Emitted when the animation reaches the end, or the start if it is played in reverse. When the animation finishes, it pauses the playback.\n\t\t\t\t[b]Note:[/b] This signal is not emitted if an animation is looping."},{"name":"animation_looped","description":"Emitted when the animation loops."},{"name":"frame_changed","description":"Emitted when [member frame] changes."},{"name":"sprite_frames_changed","description":"Emitted when [member sprite_frames] changes."}]},"AnimatedTexture":{"name":"AnimatedTexture","description":"Proxy texture for simple frame-based animations.","inherits":"Texture2D","properties":[{"name":"current_frame","type":"int","description":"Sets the currently visible frame of the texture. Setting this frame while playing resets the current frame time, so the newly selected frame plays for its whole configured frame duration."},{"name":"frames","type":"int","description":"Number of frames to use in the animation. While you can create the frames independently with [method set_frame_texture], you need to set this value for the animation to take new frames into account. The maximum number of frames is [constant MAX_FRAMES]."},{"name":"one_shot","type":"bool","description":"If [code]true[/code], the animation will only play once and will not loop back to the first frame after reaching the end. Note that reaching the end will not set [member pause] to [code]true[/code]."},{"name":"pause","type":"bool","description":"If [code]true[/code], the animation will pause where it currently is (i.e. at [member current_frame]). The animation will continue from where it was paused when changing this property to [code]false[/code]."},{"name":"speed_scale","type":"float","description":"The animation speed is multiplied by this value. If set to a negative value, the animation is played in reverse."}],"methods":[{"name":"get_frame_duration","signature":"get_frame_duration(frame: int) -> float","description":"Returns the given [param frame]'s duration, in seconds.","returnType":"float"},{"name":"get_frame_texture","signature":"get_frame_texture(frame: int) -> Texture2D","description":"Returns the given frame's .","returnType":"Texture2D"},{"name":"set_frame_duration","signature":"set_frame_duration(frame: int, duration: float) -> void","description":"Sets the duration of any given [param frame]. The final duration is affected by the [member speed_scale]. If set to 0, the frame is skipped during playback.","returnType":"void"},{"name":"set_frame_texture","signature":"set_frame_texture(frame: int, texture: Texture2D) -> void","description":"Assigns a  to the given frame. Frame IDs start at 0, so the first frame has ID 0, and the last frame of the animation has ID [member frames] - 1.\n\t\t\t\tYou can define any number of textures up to [constant MAX_FRAMES], but keep in mind that only frames from 0 to [member frames] - 1 will be part of the animation.","returnType":"void"}],"signals":[]},"Animation":{"name":"Animation","description":"Holds data that can be used to animate anything in the engine.","inherits":"Resource","properties":[{"name":"capture_included","type":"bool","description":"Returns [code]true[/code] if the capture track is included. This is a cached readonly value for performance."},{"name":"length","type":"float","description":"The total length of the animation (in seconds).\n\t\t\t[b]Note:[/b] Length is not delimited by the last key, as this one may be before or after the end to ensure correct interpolation and looping."},{"name":"loop_mode","type":"int","description":"Determines the behavior of both ends of the animation timeline during animation playback. This is used for correct interpolation of animation cycles, and for hinting the player that it must restart the animation."},{"name":"step","type":"float","description":"The animation step value."}],"methods":[{"name":"add_marker","signature":"add_marker(name: StringName, time: float) -> void","description":"Adds a marker to this Animation.","returnType":"void"},{"name":"add_track","signature":"add_track(type: int, at_position: int) -> int","description":"Adds a track to the Animation.","returnType":"int"},{"name":"animation_track_get_key_animation","signature":"animation_track_get_key_animation(track_idx: int, key_idx: int) -> StringName","description":"Returns the animation name at the key identified by [param key_idx]. The [param track_idx] must be the index of an Animation Track.","returnType":"StringName"},{"name":"animation_track_insert_key","signature":"animation_track_insert_key(track_idx: int, time: float, animation: StringName) -> int","description":"Inserts a key with value [param animation] at the given [param time] (in seconds). The [param track_idx] must be the index of an Animation Track.","returnType":"int"},{"name":"animation_track_set_key_animation","signature":"animation_track_set_key_animation(track_idx: int, key_idx: int, animation: StringName) -> void","description":"Sets the key identified by [param key_idx] to value [param animation]. The [param track_idx] must be the index of an Animation Track.","returnType":"void"},{"name":"audio_track_get_key_end_offset","signature":"audio_track_get_key_end_offset(track_idx: int, key_idx: int) -> float","description":"Returns the end offset of the key identified by [param key_idx]. The [param track_idx] must be the index of an Audio Track.\n\t\t\t\tEnd offset is the number of seconds cut off at the ending of the audio stream.","returnType":"float"},{"name":"audio_track_get_key_start_offset","signature":"audio_track_get_key_start_offset(track_idx: int, key_idx: int) -> float","description":"Returns the start offset of the key identified by [param key_idx]. The [param track_idx] must be the index of an Audio Track.\n\t\t\t\tStart offset is the number of seconds cut off at the beginning of the audio stream.","returnType":"float"},{"name":"audio_track_get_key_stream","signature":"audio_track_get_key_stream(track_idx: int, key_idx: int) -> Resource","description":"Returns the audio stream of the key identified by [param key_idx]. The [param track_idx] must be the index of an Audio Track.","returnType":"Resource"},{"name":"audio_track_insert_key","signature":"audio_track_insert_key(track_idx: int, time: float, stream: Resource, start_offset: float, end_offset: float) -> int","description":"Inserts an Audio Track key at the given [param time] in seconds. The [param track_idx] must be the index of an Audio Track.\n\t\t\t\t[param stream] is the  resource to play. [param start_offset] is the number of seconds cut off at the beginning of the audio stream, while [param end_offset] is at the ending.","returnType":"int"},{"name":"audio_track_is_use_blend","signature":"audio_track_is_use_blend(track_idx: int) -> bool","description":"Returns true if the track at [param track_idx] will be blended with other animations.","returnType":"bool"},{"name":"audio_track_set_key_end_offset","signature":"audio_track_set_key_end_offset(track_idx: int, key_idx: int, offset: float) -> void","description":"Sets the end offset of the key identified by [param key_idx] to value [param offset]. The [param track_idx] must be the index of an Audio Track.","returnType":"void"},{"name":"audio_track_set_key_start_offset","signature":"audio_track_set_key_start_offset(track_idx: int, key_idx: int, offset: float) -> void","description":"Sets the start offset of the key identified by [param key_idx] to value [param offset]. The [param track_idx] must be the index of an Audio Track.","returnType":"void"},{"name":"audio_track_set_key_stream","signature":"audio_track_set_key_stream(track_idx: int, key_idx: int, stream: Resource) -> void","description":"Sets the stream of the key identified by [param key_idx] to value [param stream]. The [param track_idx] must be the index of an Audio Track.","returnType":"void"},{"name":"audio_track_set_use_blend","signature":"audio_track_set_use_blend(track_idx: int, enable: bool) -> void","description":"Sets whether the track will be blended with other animations. If true, the audio playback volume changes depending on the blend value.","returnType":"void"},{"name":"bezier_track_get_key_in_handle","signature":"bezier_track_get_key_in_handle(track_idx: int, key_idx: int) -> Vector2","description":"Returns the in handle of the key identified by [param key_idx]. The [param track_idx] must be the index of a Bezier Track.","returnType":"Vector2"},{"name":"bezier_track_get_key_out_handle","signature":"bezier_track_get_key_out_handle(track_idx: int, key_idx: int) -> Vector2","description":"Returns the out handle of the key identified by [param key_idx]. The [param track_idx] must be the index of a Bezier Track.","returnType":"Vector2"},{"name":"bezier_track_get_key_value","signature":"bezier_track_get_key_value(track_idx: int, key_idx: int) -> float","description":"Returns the value of the key identified by [param key_idx]. The [param track_idx] must be the index of a Bezier Track.","returnType":"float"},{"name":"bezier_track_insert_key","signature":"bezier_track_insert_key(track_idx: int, time: float, value: float, in_handle: Vector2, out_handle: Vector2) -> int","description":"Inserts a Bezier Track key at the given [param time] in seconds. The [param track_idx] must be the index of a Bezier Track.\n\t\t\t\t[param in_handle] is the left-side weight of the added Bezier curve point, [param out_handle] is the right-side one, while [param value] is the actual value at this point.","returnType":"int"},{"name":"bezier_track_interpolate","signature":"bezier_track_interpolate(track_idx: int, time: float) -> float","description":"Returns the interpolated value at the given [param time] (in seconds). The [param track_idx] must be the index of a Bezier Track.","returnType":"float"},{"name":"bezier_track_set_key_in_handle","signature":"bezier_track_set_key_in_handle(track_idx: int, key_idx: int, in_handle: Vector2, balanced_value_time_ratio: float) -> void","description":"Sets the in handle of the key identified by [param key_idx] to value [param in_handle]. The [param track_idx] must be the index of a Bezier Track.","returnType":"void"},{"name":"bezier_track_set_key_out_handle","signature":"bezier_track_set_key_out_handle(track_idx: int, key_idx: int, out_handle: Vector2, balanced_value_time_ratio: float) -> void","description":"Sets the out handle of the key identified by [param key_idx] to value [param out_handle]. The [param track_idx] must be the index of a Bezier Track.","returnType":"void"},{"name":"bezier_track_set_key_value","signature":"bezier_track_set_key_value(track_idx: int, key_idx: int, value: float) -> void","description":"Sets the value of the key identified by [param key_idx] to the given value. The [param track_idx] must be the index of a Bezier Track.","returnType":"void"},{"name":"blend_shape_track_insert_key","signature":"blend_shape_track_insert_key(track_idx: int, time: float, amount: float) -> int","description":"Inserts a key in a given blend shape track. Returns the key index.","returnType":"int"},{"name":"blend_shape_track_interpolate","signature":"blend_shape_track_interpolate(track_idx: int, time_sec: float, backward: bool) -> float","description":"Returns the interpolated blend shape value at the given time (in seconds). The [param track_idx] must be the index of a blend shape track.","returnType":"float"},{"name":"clear","signature":"clear() -> void","description":"Clear the animation (clear all tracks and reset all).","returnType":"void"},{"name":"compress","signature":"compress(page_size: int, fps: int, split_tolerance: float) -> void","description":"Compress the animation and all its tracks in-place. This will make [method track_is_compressed] return true once called on this . Compressed tracks require less memory to be played, and are designed to be used for complex 3D animations (such as cutscenes) imported from external 3D software. Compression is lossy, but the difference is usually not noticeable in real world conditions.\n\t\t\t\tNote: Compressed tracks have various limitations (such as not being editable from the editor), so only use compressed animations if you actually need them.","returnType":"void"},{"name":"copy_track","signature":"copy_track(track_idx: int, to_animation: Animation) -> void","description":"Adds a new track to [param to_animation] that is a copy of the given track from this animation.","returnType":"void"},{"name":"find_track","signature":"find_track(path: NodePath, type: int) -> int","description":"Returns the index of the specified track. If the track is not found, return -1.","returnType":"int"},{"name":"get_marker_at_time","signature":"get_marker_at_time(time: float) -> StringName","description":"Returns the name of the marker located at the given time.","returnType":"StringName"},{"name":"get_marker_color","signature":"get_marker_color(name: StringName) -> Color","description":"Returns the given marker's color.","returnType":"Color"},{"name":"get_marker_names","signature":"get_marker_names() -> PackedStringArray","description":"Returns every marker in this Animation, sorted ascending by time.","returnType":"PackedStringArray"},{"name":"get_marker_time","signature":"get_marker_time(name: StringName) -> float","description":"Returns the given marker's time.","returnType":"float"},{"name":"get_next_marker","signature":"get_next_marker(time: float) -> StringName","description":"Returns the closest marker that comes after the given time. If no such marker exists, an empty string is returned.","returnType":"StringName"},{"name":"get_prev_marker","signature":"get_prev_marker(time: float) -> StringName","description":"Returns the closest marker that comes before the given time. If no such marker exists, an empty string is returned.","returnType":"StringName"},{"name":"get_track_count","signature":"get_track_count() -> int","description":"Returns the amount of tracks in the animation.","returnType":"int"},{"name":"has_marker","signature":"has_marker(name: StringName) -> bool","description":"Returns true if this Animation contains a marker with the given name.","returnType":"bool"},{"name":"method_track_get_name","signature":"method_track_get_name(track_idx: int, key_idx: int) -> StringName","description":"Returns the method name of a method track.","returnType":"StringName"},{"name":"method_track_get_params","signature":"method_track_get_params(track_idx: int, key_idx: int) -> Array","description":"Returns the arguments values to be called on a method track for a given key in a given track.","returnType":"Array"},{"name":"optimize","signature":"optimize(allowed_velocity_err: float, allowed_angular_err: float, precision: int) -> void","description":"Optimize the animation and all its tracks in-place. This will preserve only as many keys as are necessary to keep the animation within the specified bounds.","returnType":"void"},{"name":"position_track_insert_key","signature":"position_track_insert_key(track_idx: int, time: float, position: Vector3) -> int","description":"Inserts a key in a given 3D position track. Returns the key index.","returnType":"int"},{"name":"position_track_interpolate","signature":"position_track_interpolate(track_idx: int, time_sec: float, backward: bool) -> Vector3","description":"Returns the interpolated position value at the given time (in seconds). The [param track_idx] must be the index of a 3D position track.","returnType":"Vector3"},{"name":"remove_marker","signature":"remove_marker(name: StringName) -> void","description":"Removes the marker with the given name from this Animation.","returnType":"void"},{"name":"remove_track","signature":"remove_track(track_idx: int) -> void","description":"Removes a track by specifying the track index.","returnType":"void"},{"name":"rotation_track_insert_key","signature":"rotation_track_insert_key(track_idx: int, time: float, rotation: Quaternion) -> int","description":"Inserts a key in a given 3D rotation track. Returns the key index.","returnType":"int"},{"name":"rotation_track_interpolate","signature":"rotation_track_interpolate(track_idx: int, time_sec: float, backward: bool) -> Quaternion","description":"Returns the interpolated rotation value at the given time (in seconds). The [param track_idx] must be the index of a 3D rotation track.","returnType":"Quaternion"},{"name":"scale_track_insert_key","signature":"scale_track_insert_key(track_idx: int, time: float, scale: Vector3) -> int","description":"Inserts a key in a given 3D scale track. Returns the key index.","returnType":"int"},{"name":"scale_track_interpolate","signature":"scale_track_interpolate(track_idx: int, time_sec: float, backward: bool) -> Vector3","description":"Returns the interpolated scale value at the given time (in seconds). The [param track_idx] must be the index of a 3D scale track.","returnType":"Vector3"},{"name":"set_marker_color","signature":"set_marker_color(name: StringName, color: Color) -> void","description":"Sets the given marker's color.","returnType":"void"},{"name":"track_find_key","signature":"track_find_key(track_idx: int, time: float, find_mode: int, limit: bool, backward: bool) -> int","description":"Finds the key index by time in a given track. Optionally, only find it if the approx/exact time is given.\n\t\t\t\tIf [param limit] is true, it does not return keys outside the animation range.\n\t\t\t\tIf [param backward] is true, the direction is reversed in methods that rely on one directional processing.\n\t\t\t\tFor example, in case [param find_mode] is [constant FIND_MODE_NEAREST], if there is no key in the current position just after seeked, the first key found is retrieved by searching before the position, but if [param backward] is true, the first key found is retrieved after the position.","returnType":"int"},{"name":"track_get_interpolation_loop_wrap","signature":"track_get_interpolation_loop_wrap(track_idx: int) -> bool","description":"Returns true if the track at [param track_idx] wraps the interpolation loop. New tracks wrap the interpolation loop by default.","returnType":"bool"},{"name":"track_get_interpolation_type","signature":"track_get_interpolation_type(track_idx: int) -> int","description":"Returns the interpolation type of a given track.","returnType":"int"},{"name":"track_get_key_count","signature":"track_get_key_count(track_idx: int) -> int","description":"Returns the number of keys in a given track.","returnType":"int"},{"name":"track_get_key_time","signature":"track_get_key_time(track_idx: int, key_idx: int) -> float","description":"Returns the time at which the key is located.","returnType":"float"},{"name":"track_get_key_transition","signature":"track_get_key_transition(track_idx: int, key_idx: int) -> float","description":"Returns the transition curve (easing) for a specific key (see the built-in math function [method @GlobalScope.ease]).","returnType":"float"},{"name":"track_get_key_value","signature":"track_get_key_value(track_idx: int, key_idx: int) -> Variant","description":"Returns the value of a given key in a given track.","returnType":"Variant"},{"name":"track_get_path","signature":"track_get_path(track_idx: int) -> NodePath","description":"Gets the path of a track. For more information on the path format, see [method track_set_path].","returnType":"NodePath"},{"name":"track_get_type","signature":"track_get_type(track_idx: int) -> int","description":"Gets the type of a track.","returnType":"int"},{"name":"track_insert_key","signature":"track_insert_key(track_idx: int, time: float, key: Variant, transition: float) -> int","description":"Inserts a generic key in a given track. Returns the key index.","returnType":"int"},{"name":"track_is_compressed","signature":"track_is_compressed(track_idx: int) -> bool","description":"Returns true if the track is compressed, false otherwise. See also [method compress].","returnType":"bool"},{"name":"track_is_enabled","signature":"track_is_enabled(track_idx: int) -> bool","description":"Returns true if the track at index [param track_idx] is enabled.","returnType":"bool"},{"name":"track_is_imported","signature":"track_is_imported(track_idx: int) -> bool","description":"Returns true if the given track is imported. Else, return false.","returnType":"bool"},{"name":"track_move_down","signature":"track_move_down(track_idx: int) -> void","description":"Moves a track down.","returnType":"void"},{"name":"track_move_to","signature":"track_move_to(track_idx: int, to_idx: int) -> void","description":"Changes the index position of track [param track_idx] to the one defined in [param to_idx].","returnType":"void"},{"name":"track_move_up","signature":"track_move_up(track_idx: int) -> void","description":"Moves a track up.","returnType":"void"},{"name":"track_remove_key","signature":"track_remove_key(track_idx: int, key_idx: int) -> void","description":"Removes a key by index in a given track.","returnType":"void"},{"name":"track_remove_key_at_time","signature":"track_remove_key_at_time(track_idx: int, time: float) -> void","description":"Removes a key at [param time] in a given track.","returnType":"void"},{"name":"track_set_enabled","signature":"track_set_enabled(track_idx: int, enabled: bool) -> void","description":"Enables/disables the given track. Tracks are enabled by default.","returnType":"void"},{"name":"track_set_imported","signature":"track_set_imported(track_idx: int, imported: bool) -> void","description":"Sets the given track as imported or not.","returnType":"void"},{"name":"track_set_interpolation_loop_wrap","signature":"track_set_interpolation_loop_wrap(track_idx: int, interpolation: bool) -> void","description":"If true, the track at [param track_idx] wraps the interpolation loop.","returnType":"void"},{"name":"track_set_interpolation_type","signature":"track_set_interpolation_type(track_idx: int, interpolation: int) -> void","description":"Sets the interpolation type of a given track.","returnType":"void"},{"name":"track_set_key_time","signature":"track_set_key_time(track_idx: int, key_idx: int, time: float) -> void","description":"Sets the time of an existing key.","returnType":"void"},{"name":"track_set_key_transition","signature":"track_set_key_transition(track_idx: int, key_idx: int, transition: float) -> void","description":"Sets the transition curve (easing) for a specific key (see the built-in math function [method @GlobalScope.ease]).","returnType":"void"},{"name":"track_set_key_value","signature":"track_set_key_value(track_idx: int, key: int, value: Variant) -> void","description":"Sets the value of an existing key.","returnType":"void"},{"name":"track_set_path","signature":"track_set_path(track_idx: int, path: NodePath) -> void","description":"Sets the path of a track. Paths must be valid scene-tree paths to a node and must be specified starting from the [member AnimationMixer.root_node] that will reproduce the animation. Tracks that control properties or bones must append their name after the path, separated by \":\".\n\t\t\t\tFor example, \"character/skeleton:ankle\" or \"character/mesh:transform/local\".","returnType":"void"},{"name":"track_swap","signature":"track_swap(track_idx: int, with_idx: int) -> void","description":"Swaps the track [param track_idx]'s index position with the track [param with_idx].","returnType":"void"},{"name":"value_track_get_update_mode","signature":"value_track_get_update_mode(track_idx: int) -> int","description":"Returns the update mode of a value track.","returnType":"int"},{"name":"value_track_interpolate","signature":"value_track_interpolate(track_idx: int, time_sec: float, backward: bool) -> Variant","description":"Returns the interpolated value at the given time (in seconds). The [param track_idx] must be the index of a value track.\n\t\t\t\tA [param backward] mainly affects the direction of key retrieval of the track with [constant UPDATE_DISCRETE] converted by [constant AnimationMixer.ANIMATION_CALLBACK_MODE_DISCRETE_FORCE_CONTINUOUS] to match the result with [method track_find_key].","returnType":"Variant"},{"name":"value_track_set_update_mode","signature":"value_track_set_update_mode(track_idx: int, mode: int) -> void","description":"Sets the update mode (see [enum UpdateMode]) of a value track.","returnType":"void"}],"signals":[]},"AnimationLibrary":{"name":"AnimationLibrary","description":"Container for  resources.","inherits":"Resource","properties":[],"methods":[{"name":"add_animation","signature":"add_animation(name: StringName, animation: Animation) -> int","description":"Adds the [param animation] to the library, accessible by the key [param name].","returnType":"int"},{"name":"get_animation","signature":"get_animation(name: StringName) -> Animation","description":"Returns the  with the key [param name]. If the animation does not exist, null is returned and an error is logged.","returnType":"Animation"},{"name":"get_animation_list","signature":"get_animation_list() -> StringName[]","description":"Returns the keys for the s stored in the library.","returnType":"StringName[]"},{"name":"get_animation_list_size","signature":"get_animation_list_size() -> int","description":"Returns the key count for the s stored in the library.","returnType":"int"},{"name":"has_animation","signature":"has_animation(name: StringName) -> bool","description":"Returns true if the library stores an  with [param name] as the key.","returnType":"bool"},{"name":"remove_animation","signature":"remove_animation(name: StringName) -> void","description":"Removes the  with the key [param name].","returnType":"void"},{"name":"rename_animation","signature":"rename_animation(name: StringName, newname: StringName) -> void","description":"Changes the key of the  associated with the key [param name] to [param newname].","returnType":"void"}],"signals":[{"name":"animation_added","description":"Emitted when an [Animation] is added, under the key [param name]."},{"name":"animation_changed","description":"Emitted when there's a change in one of the animations, e.g. tracks are added, moved or have changed paths. [param name] is the key of the animation that was changed.\n\t\t\t\tSee also [signal Resource.changed], which this acts as a relay for."},{"name":"animation_removed","description":"Emitted when an [Animation] stored with the key [param name] is removed."},{"name":"animation_renamed","description":"Emitted when the key for an [Animation] is changed, from [param name] to [param to_name]."}]},"AnimationMixer":{"name":"AnimationMixer","description":"Base class for  and .","inherits":"Node","properties":[{"name":"active","type":"bool","description":"If [code]true[/code], the [AnimationMixer] will be processing."},{"name":"audio_max_polyphony","type":"int","description":"The number of possible simultaneous sounds for each of the assigned AudioStreamPlayers.\n\t\t\tFor example, if this value is [code]32[/code] and the animation has two audio tracks, the two [AudioStreamPlayer]s assigned can play simultaneously up to [code]32[/code] voices each."},{"name":"callback_mode_discrete","type":"int","description":"Ordinarily, tracks can be set to [constant Animation.UPDATE_DISCRETE] to update infrequently, usually when using nearest interpolation.\n\t\t\tHowever, when blending with [constant Animation.UPDATE_CONTINUOUS] several results are considered. The [member callback_mode_discrete] specify it explicitly. See also [enum AnimationCallbackModeDiscrete].\n\t\t\tTo make the blended results look good, it is recommended to set this to [constant ANIMATION_CALLBACK_MODE_DISCRETE_FORCE_CONTINUOUS] to update every frame during blending. Other values exist for compatibility and they are fine if there is no blending, but not so, may produce artifacts."},{"name":"callback_mode_method","type":"int","description":"The call mode used for \"Call Method\" tracks."},{"name":"callback_mode_process","type":"int","description":"The process notification in which to update animations."},{"name":"deterministic","type":"bool","description":"If [code]true[/code], the blending uses the deterministic algorithm. The total weight is not normalized and the result is accumulated with an initial value ([code]0[/code] or a [code]\"RESET\"[/code] animation if present).\n\t\t\tThis means that if the total amount of blending is [code]0.0[/code], the result is equal to the [code]\"RESET\"[/code] animation.\n\t\t\tIf the number of tracks between the blended animations is different, the animation with the missing track is treated as if it had the initial value.\n\t\t\tIf [code]false[/code], The blend does not use the deterministic algorithm. The total weight is normalized and always [code]1.0[/code]. If the number of tracks between the blended animations is different, nothing is done about the animation that is missing a track.\n\t\t\t[b]Note:[/b] In [AnimationTree], the blending with [AnimationNodeAdd2], [AnimationNodeAdd3], [AnimationNodeSub2] or the weight greater than [code]1.0[/code] may produce unexpected results.\n\t\t\tFor example, if [AnimationNodeAdd2] blends two nodes with the amount [code]1.0[/code], then total weight is [code]2.0[/code] but it will be normalized to make the total amount [code]1.0[/code] and the result will be equal to [AnimationNodeBlend2] with the amount [code]0.5[/code]."},{"name":"reset_on_save","type":"bool","description":"This is used by the editor. If set to [code]true[/code], the scene will be saved with the effects of the reset animation (the animation with the key [code]\"RESET\"[/code]) applied as if it had been seeked to time 0, with the editor keeping the values that the scene had before saving.\n\t\t\tThis makes it more convenient to preview and edit animations in the editor, as changes to the scene will not be saved as long as they are set in the reset animation."},{"name":"root_motion_local","type":"bool","description":"If [code]true[/code], [method get_root_motion_position] value is extracted as a local translation value before blending. In other words, it is treated like the translation is done after the rotation."},{"name":"root_motion_track","type":"NodePath","description":"The path to the Animation track used for root motion. Paths must be valid scene-tree paths to a node, and must be specified starting from the parent node of the node that will reproduce the animation. The [member root_motion_track] uses the same format as [method Animation.track_set_path], but note that a bone must be specified.\n\t\t\tIf the track has type [constant Animation.TYPE_POSITION_3D], [constant Animation.TYPE_ROTATION_3D], or [constant Animation.TYPE_SCALE_3D] the transformation will be canceled visually, and the animation will appear to stay in place. See also [method get_root_motion_position], [method get_root_motion_rotation], [method get_root_motion_scale], and [RootMotionView]."},{"name":"root_node","type":"NodePath","description":"The node which node path references will travel from."}],"methods":[{"name":"_post_process_key_value","signature":"_post_process_key_value(animation: Animation, track: int, value: Variant, object_id: int, object_sub_idx: int) -> Variant","description":"A virtual function for processing after getting a key during playback.","returnType":"Variant"},{"name":"add_animation_library","signature":"add_animation_library(name: StringName, library: AnimationLibrary) -> int","description":"Adds [param library] to the animation player, under the key [param name].\n\t\t\t\tAnimationMixer has a global library by default with an empty string as key. For adding an animation to the global library:\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tvar global_library = mixer.get_animation_library(\"\")\n\t\t\t\tglobal_library.add_animation(\"animation_name\", animation_resource)\n\t\t\t\t\n\t\t\t\t","returnType":"int"},{"name":"advance","signature":"advance(delta: float) -> void","description":"Manually advance the animations by the specified time (in seconds).","returnType":"void"},{"name":"capture","signature":"capture(name: StringName, duration: float, trans_type: int, ease_type: int) -> void","description":"If the animation track specified by [param name] has an option [constant Animation.UPDATE_CAPTURE], stores current values of the objects indicated by the track path as a cache. If there is already a captured cache, the old cache is discarded.\n\t\t\t\tAfter this it will interpolate with current animation blending result during the playback process for the time specified by [param duration], working like a crossfade.\n\t\t\t\tYou can specify [param trans_type] as the curve for the interpolation. For better results, it may be appropriate to specify [constant Tween.TRANS_LINEAR] for cases where the first key of the track begins with a non-zero value or where the key value does not change, and [constant Tween.TRANS_QUAD] for cases where the key value changes linearly.","returnType":"void"},{"name":"clear_caches","signature":"clear_caches() -> void","description":" caches animated nodes. It may not notice if a node disappears; [method clear_caches] forces it to update the cache again.","returnType":"void"},{"name":"find_animation","signature":"find_animation(animation: Animation) -> StringName","description":"Returns the key of [param animation] or an empty  if not found.","returnType":"StringName"},{"name":"find_animation_library","signature":"find_animation_library(animation: Animation) -> StringName","description":"Returns the key for the  that contains [param animation] or an empty  if not found.","returnType":"StringName"},{"name":"get_animation","signature":"get_animation(name: StringName) -> Animation","description":"Returns the  with the key [param name]. If the animation does not exist, null is returned and an error is logged.","returnType":"Animation"},{"name":"get_animation_library","signature":"get_animation_library(name: StringName) -> AnimationLibrary","description":"Returns the first  with key [param name] or null if not found.\n\t\t\t\tTo get the 's global animation library, use get_animation_library(\"\").","returnType":"AnimationLibrary"},{"name":"get_animation_library_list","signature":"get_animation_library_list() -> StringName[]","description":"Returns the list of stored library keys.","returnType":"StringName[]"},{"name":"get_animation_list","signature":"get_animation_list() -> PackedStringArray","description":"Returns the list of stored animation keys.","returnType":"PackedStringArray"},{"name":"get_root_motion_position","signature":"get_root_motion_position() -> Vector3","description":"Retrieve the motion delta of position with the [member root_motion_track] as a  that can be used elsewhere.\n\t\t\t\tIf [member root_motion_track] is not a path to a track of type [constant Animation.TYPE_POSITION_3D], returns Vector3(0, 0, 0).\n\t\t\t\tSee also [member root_motion_track] and .\n\t\t\t\tThe most basic example is applying position to :\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tvar current_rotation\n\n\t\t\t\tfunc _process(delta):\n\t\t\t\t    if Input.is_action_just_pressed(\"animate\"):\n\t\t\t\t        current_rotation = get_quaternion()\n\t\t\t\t        state_machine.travel(\"Animate\")\n\t\t\t\t    var velocity = current_rotation * animation_tree.get_root_motion_position() / delta\n\t\t\t\t    set_velocity(velocity)\n\t\t\t\t    move_and_slide()\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tBy using this in combination with [method get_root_motion_rotation_accumulator], you can apply the root motion position more correctly to account for the rotation of the node.\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tfunc _process(delta):\n\t\t\t\t    if Input.is_action_just_pressed(\"animate\"):\n\t\t\t\t        state_machine.travel(\"Animate\")\n\t\t\t\t    set_quaternion(get_quaternion() * animation_tree.get_root_motion_rotation())\n\t\t\t\t    var velocity = (animation_tree.get_root_motion_rotation_accumulator().inverse() * get_quaternion()) * animation_tree.get_root_motion_position() / delta\n\t\t\t\t    set_velocity(velocity)\n\t\t\t\t    move_and_slide()\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tIf [member root_motion_local] is true, return the pre-multiplied translation value with the inverted rotation.\n\t\t\t\tIn this case, the code can be written as follows:\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tfunc _process(delta):\n\t\t\t\t    if Input.is_action_just_pressed(\"animate\"):\n\t\t\t\t        state_machine.travel(\"Animate\")\n\t\t\t\t    set_quaternion(get_quaternion() * animation_tree.get_root_motion_rotation())\n\t\t\t\t    var velocity = get_quaternion() * animation_tree.get_root_motion_position() / delta\n\t\t\t\t    set_velocity(velocity)\n\t\t\t\t    move_and_slide()\n\t\t\t\t\n\t\t\t\t","returnType":"Vector3"},{"name":"get_root_motion_position_accumulator","signature":"get_root_motion_position_accumulator() -> Vector3","description":"Retrieve the blended value of the position tracks with the [member root_motion_track] as a  that can be used elsewhere.\n\t\t\t\tThis is useful in cases where you want to respect the initial key values of the animation.\n\t\t\t\tFor example, if an animation with only one key Vector3(0, 0, 0) is played in the previous frame and then an animation with only one key Vector3(1, 0, 1) is played in the next frame, the difference can be calculated as follows:\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tvar prev_root_motion_position_accumulator\n\n\t\t\t\tfunc _process(delta):\n\t\t\t\t    if Input.is_action_just_pressed(\"animate\"):\n\t\t\t\t        state_machine.travel(\"Animate\")\n\t\t\t\t    var current_root_motion_position_accumulator = animation_tree.get_root_motion_position_accumulator()\n\t\t\t\t    var difference = current_root_motion_position_accumulator - prev_root_motion_position_accumulator\n\t\t\t\t    prev_root_motion_position_accumulator = current_root_motion_position_accumulator\n\t\t\t\t    transform.origin += difference\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tHowever, if the animation loops, an unintended discrete change may occur, so this is only useful for some simple use cases.","returnType":"Vector3"},{"name":"get_root_motion_rotation","signature":"get_root_motion_rotation() -> Quaternion","description":"Retrieve the motion delta of rotation with the [member root_motion_track] as a  that can be used elsewhere.\n\t\t\t\tIf [member root_motion_track] is not a path to a track of type [constant Animation.TYPE_ROTATION_3D], returns Quaternion(0, 0, 0, 1).\n\t\t\t\tSee also [member root_motion_track] and .\n\t\t\t\tThe most basic example is applying rotation to :\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tfunc _process(delta):\n\t\t\t\t    if Input.is_action_just_pressed(\"animate\"):\n\t\t\t\t        state_machine.travel(\"Animate\")\n\t\t\t\t    set_quaternion(get_quaternion() * animation_tree.get_root_motion_rotation())\n\t\t\t\t\n\t\t\t\t","returnType":"Quaternion"},{"name":"get_root_motion_rotation_accumulator","signature":"get_root_motion_rotation_accumulator() -> Quaternion","description":"Retrieve the blended value of the rotation tracks with the [member root_motion_track] as a  that can be used elsewhere.\n\t\t\t\tThis is necessary to apply the root motion position correctly, taking rotation into account. See also [method get_root_motion_position].\n\t\t\t\tAlso, this is useful in cases where you want to respect the initial key values of the animation.\n\t\t\t\tFor example, if an animation with only one key Quaternion(0, 0, 0, 1) is played in the previous frame and then an animation with only one key Quaternion(0, 0.707, 0, 0.707) is played in the next frame, the difference can be calculated as follows:\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tvar prev_root_motion_rotation_accumulator\n\n\t\t\t\tfunc _process(delta):\n\t\t\t\t    if Input.is_action_just_pressed(\"animate\"):\n\t\t\t\t        state_machine.travel(\"Animate\")\n\t\t\t\t    var current_root_motion_rotation_accumulator = animation_tree.get_root_motion_rotation_accumulator()\n\t\t\t\t    var difference = prev_root_motion_rotation_accumulator.inverse() * current_root_motion_rotation_accumulator\n\t\t\t\t    prev_root_motion_rotation_accumulator = current_root_motion_rotation_accumulator\n\t\t\t\t    transform.basis *=  Basis(difference)\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tHowever, if the animation loops, an unintended discrete change may occur, so this is only useful for some simple use cases.","returnType":"Quaternion"},{"name":"get_root_motion_scale","signature":"get_root_motion_scale() -> Vector3","description":"Retrieve the motion delta of scale with the [member root_motion_track] as a  that can be used elsewhere.\n\t\t\t\tIf [member root_motion_track] is not a path to a track of type [constant Animation.TYPE_SCALE_3D], returns Vector3(0, 0, 0).\n\t\t\t\tSee also [member root_motion_track] and .\n\t\t\t\tThe most basic example is applying scale to :\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tvar current_scale = Vector3(1, 1, 1)\n\t\t\t\tvar scale_accum = Vector3(1, 1, 1)\n\n\t\t\t\tfunc _process(delta):\n\t\t\t\t    if Input.is_action_just_pressed(\"animate\"):\n\t\t\t\t        current_scale = get_scale()\n\t\t\t\t        scale_accum = Vector3(1, 1, 1)\n\t\t\t\t        state_machine.travel(\"Animate\")\n\t\t\t\t    scale_accum += animation_tree.get_root_motion_scale()\n\t\t\t\t    set_scale(current_scale * scale_accum)\n\t\t\t\t\n\t\t\t\t","returnType":"Vector3"},{"name":"get_root_motion_scale_accumulator","signature":"get_root_motion_scale_accumulator() -> Vector3","description":"Retrieve the blended value of the scale tracks with the [member root_motion_track] as a  that can be used elsewhere.\n\t\t\t\tFor example, if an animation with only one key Vector3(1, 1, 1) is played in the previous frame and then an animation with only one key Vector3(2, 2, 2) is played in the next frame, the difference can be calculated as follows:\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tvar prev_root_motion_scale_accumulator\n\n\t\t\t\tfunc _process(delta):\n\t\t\t\t    if Input.is_action_just_pressed(\"animate\"):\n\t\t\t\t        state_machine.travel(\"Animate\")\n\t\t\t\t    var current_root_motion_scale_accumulator = animation_tree.get_root_motion_scale_accumulator()\n\t\t\t\t    var difference = current_root_motion_scale_accumulator - prev_root_motion_scale_accumulator\n\t\t\t\t    prev_root_motion_scale_accumulator = current_root_motion_scale_accumulator\n\t\t\t\t    transform.basis = transform.basis.scaled(difference)\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tHowever, if the animation loops, an unintended discrete change may occur, so this is only useful for some simple use cases.","returnType":"Vector3"},{"name":"has_animation","signature":"has_animation(name: StringName) -> bool","description":"Returns true if the  stores an  with key [param name].","returnType":"bool"},{"name":"has_animation_library","signature":"has_animation_library(name: StringName) -> bool","description":"Returns true if the  stores an  with key [param name].","returnType":"bool"},{"name":"remove_animation_library","signature":"remove_animation_library(name: StringName) -> void","description":"Removes the  associated with the key [param name].","returnType":"void"},{"name":"rename_animation_library","signature":"rename_animation_library(name: StringName, newname: StringName) -> void","description":"Moves the  associated with the key [param name] to the key [param newname].","returnType":"void"}],"signals":[{"name":"animation_finished","description":"Notifies when an animation finished playing.\n\t\t\t\t[b]Note:[/b] This signal is not emitted if an animation is looping."},{"name":"animation_libraries_updated","description":"Notifies when the animation libraries have changed."},{"name":"animation_list_changed","description":"Notifies when an animation list is changed."},{"name":"animation_started","description":"Notifies when an animation starts playing."},{"name":"caches_cleared","description":"Notifies when the caches have been cleared, either automatically, or manually via [method clear_caches]."},{"name":"mixer_applied","description":"Notifies when the blending result related have been applied to the target objects."},{"name":"mixer_updated","description":"Notifies when the property related process have been updated."}]},"AnimationNode":{"name":"AnimationNode","description":"Base class for  nodes. Not related to scene nodes.","inherits":"Resource","properties":[{"name":"filter_enabled","type":"bool","description":"If [code]true[/code], filtering is enabled."}],"methods":[{"name":"_get_caption","signature":"_get_caption() -> String","description":"When inheriting from , implement this virtual method to override the text caption for this animation node.","returnType":"String"},{"name":"_get_child_by_name","signature":"_get_child_by_name(name: StringName) -> AnimationNode","description":"When inheriting from , implement this virtual method to return a child animation node by its [param name].","returnType":"AnimationNode"},{"name":"_get_child_nodes","signature":"_get_child_nodes() -> Dictionary","description":"When inheriting from , implement this virtual method to return all child animation nodes in order as a name: node dictionary.","returnType":"Dictionary"},{"name":"_get_parameter_default_value","signature":"_get_parameter_default_value(parameter: StringName) -> Variant","description":"When inheriting from , implement this virtual method to return the default value of a [param parameter]. Parameters are custom local memory used for your animation nodes, given a resource can be reused in multiple trees.","returnType":"Variant"},{"name":"_get_parameter_list","signature":"_get_parameter_list() -> Array","description":"When inheriting from , implement this virtual method to return a list of the properties on this animation node. Parameters are custom local memory used for your animation nodes, given a resource can be reused in multiple trees. Format is similar to [method Object.get_property_list].","returnType":"Array"},{"name":"_has_filter","signature":"_has_filter() -> bool","description":"When inheriting from , implement this virtual method to return whether the blend tree editor should display filter editing on this animation node.","returnType":"bool"},{"name":"_is_parameter_read_only","signature":"_is_parameter_read_only(parameter: StringName) -> bool","description":"When inheriting from , implement this virtual method to return whether the [param parameter] is read-only. Parameters are custom local memory used for your animation nodes, given a resource can be reused in multiple trees.","returnType":"bool"},{"name":"_process","signature":"_process(time: float, seek: bool, is_external_seeking: bool, test_only: bool) -> float","description":"When inheriting from , implement this virtual method to run some code when this animation node is processed. The [param time] parameter is a relative delta, unless [param seek] is true, in which case it is absolute.\n\t\t\t\tHere, call the [method blend_input], [method blend_node] or [method blend_animation] functions. You can also use [method get_parameter] and [method set_parameter] to modify local memory.\n\t\t\t\tThis function should return the delta.","returnType":"float"},{"name":"add_input","signature":"add_input(name: String) -> bool","description":"Adds an input to the animation node. This is only useful for animation nodes created for use in an . If the addition fails, returns false.","returnType":"bool"},{"name":"blend_animation","signature":"blend_animation(animation: StringName, time: float, delta: float, seeked: bool, is_external_seeking: bool, blend: float, looped_flag: int) -> void","description":"Blend an animation by [param blend] amount (name must be valid in the linked ). A [param time] and [param delta] may be passed, as well as whether [param seeked] happened.\n\t\t\t\tA [param looped_flag] is used by internal processing immediately after the loop. See also [enum Animation.LoopedFlag].","returnType":"void"},{"name":"blend_input","signature":"blend_input(input_index: int, time: float, seek: bool, is_external_seeking: bool, blend: float, filter: int, sync: bool, test_only: bool) -> float","description":"Blend an input. This is only useful for animation nodes created for an . The [param time] parameter is a relative delta, unless [param seek] is true, in which case it is absolute. A filter mode may be optionally passed (see [enum FilterAction] for options).","returnType":"float"},{"name":"blend_node","signature":"blend_node(name: StringName, node: AnimationNode, time: float, seek: bool, is_external_seeking: bool, blend: float, filter: int, sync: bool, test_only: bool) -> float","description":"Blend another animation node (in case this animation node contains child animation nodes). This function is only useful if you inherit from  instead, otherwise editors will not display your animation node for addition.","returnType":"float"},{"name":"find_input","signature":"find_input(name: String) -> int","description":"Returns the input index which corresponds to [param name]. If not found, returns -1.","returnType":"int"},{"name":"get_input_count","signature":"get_input_count() -> int","description":"Amount of inputs in this animation node, only useful for animation nodes that go into .","returnType":"int"},{"name":"get_input_name","signature":"get_input_name(input: int) -> String","description":"Gets the name of an input by index.","returnType":"String"},{"name":"get_parameter","signature":"get_parameter(name: StringName) -> Variant","description":"Gets the value of a parameter. Parameters are custom local memory used for your animation nodes, given a resource can be reused in multiple trees.","returnType":"Variant"},{"name":"get_processing_animation_tree_instance_id","signature":"get_processing_animation_tree_instance_id() -> int","description":"Returns the object id of the  that owns this node.\n\t\t\t\tNote: This method should only be called from within the [method AnimationNodeExtension._process_animation_node] method, and will return an invalid id otherwise.","returnType":"int"},{"name":"is_path_filtered","signature":"is_path_filtered(path: NodePath) -> bool","description":"Returns true if the given path is filtered.","returnType":"bool"},{"name":"is_process_testing","signature":"is_process_testing() -> bool","description":"Returns true if this animation node is being processed in test-only mode.","returnType":"bool"},{"name":"remove_input","signature":"remove_input(index: int) -> void","description":"Removes an input, call this only when inactive.","returnType":"void"},{"name":"set_filter_path","signature":"set_filter_path(path: NodePath, enable: bool) -> void","description":"Adds or removes a path for the filter.","returnType":"void"},{"name":"set_input_name","signature":"set_input_name(input: int, name: String) -> bool","description":"Sets the name of the input at the given [param input] index. If the setting fails, returns false.","returnType":"bool"},{"name":"set_parameter","signature":"set_parameter(name: StringName, value: Variant) -> void","description":"Sets a custom parameter. These are used as local memory, because resources can be reused across the tree or scenes.","returnType":"void"}],"signals":[{"name":"animation_node_removed","description":"Emitted by nodes that inherit from this class and that have an internal tree when one of their animation nodes removes. The animation nodes that emit this signal are [AnimationNodeBlendSpace1D], [AnimationNodeBlendSpace2D], [AnimationNodeStateMachine], and [AnimationNodeBlendTree]."},{"name":"animation_node_renamed","description":"Emitted by nodes that inherit from this class and that have an internal tree when one of their animation node names changes. The animation nodes that emit this signal are [AnimationNodeBlendSpace1D], [AnimationNodeBlendSpace2D], [AnimationNodeStateMachine], and [AnimationNodeBlendTree]."},{"name":"tree_changed","description":"Emitted by nodes that inherit from this class and that have an internal tree when one of their animation nodes changes. The animation nodes that emit this signal are [AnimationNodeBlendSpace1D], [AnimationNodeBlendSpace2D], [AnimationNodeStateMachine], [AnimationNodeBlendTree] and [AnimationNodeTransition]."}]},"AnimationNodeAdd2":{"name":"AnimationNodeAdd2","description":"Blends two animations additively inside of an .","inherits":"AnimationNodeSync","properties":[],"methods":[],"signals":[]},"AnimationNodeAdd3":{"name":"AnimationNodeAdd3","description":"Blends two of three animations additively inside of an .","inherits":"AnimationNodeSync","properties":[],"methods":[],"signals":[]},"AnimationNodeAnimation":{"name":"AnimationNodeAnimation","description":"An input animation for an .","inherits":"AnimationRootNode","properties":[{"name":"advance_on_start","type":"bool","description":"If [code]true[/code], on receiving a request to play an animation from the start, the first frame is not drawn, but only processed, and playback starts from the next frame.\n\t\t\tSee also the notes of [method AnimationPlayer.play]."},{"name":"animation","type":"StringName","description":"Animation to use as an output. It is one of the animations provided by [member AnimationTree.anim_player]."},{"name":"loop_mode","type":"int","description":"If [member use_custom_timeline] is [code]true[/code], override the loop settings of the original [Animation] resource with the value.\n\t\t\t[b]Note:[/b] If the [member Animation.loop_mode] isn't set to looping, the [method Animation.track_set_interpolation_loop_wrap] option will not be respected. If you cannot get the expected behavior, consider duplicating the [Animation] resource and changing the loop settings."},{"name":"play_mode","type":"int","description":"Determines the playback direction of the animation."},{"name":"start_offset","type":"float","description":"If [member use_custom_timeline] is [code]true[/code], offset the start position of the animation.\n\t\t\tThis is useful for adjusting which foot steps first in 3D walking animations."},{"name":"stretch_time_scale","type":"bool","description":"If [code]true[/code], scales the time so that the length specified in [member timeline_length] is one cycle.\n\t\t\tThis is useful for matching the periods of walking and running animations.\n\t\t\tIf [code]false[/code], the original animation length is respected. If you set the loop to [member loop_mode], the animation will loop in [member timeline_length]."},{"name":"timeline_length","type":"float","description":"If [member use_custom_timeline] is [code]true[/code], offset the start position of the animation."},{"name":"use_custom_timeline","type":"bool","description":"If [code]true[/code], [AnimationNode] provides an animation based on the [Animation] resource with some parameters adjusted."}],"methods":[],"signals":[]},"AnimationNodeBlend2":{"name":"AnimationNodeBlend2","description":"Blends two animations linearly inside of an .","inherits":"AnimationNodeSync","properties":[],"methods":[],"signals":[]},"AnimationNodeBlend3":{"name":"AnimationNodeBlend3","description":"Blends two of three animations linearly inside of an .","inherits":"AnimationNodeSync","properties":[],"methods":[],"signals":[]},"AnimationNodeBlendSpace1D":{"name":"AnimationNodeBlendSpace1D","description":"A set of s placed on a virtual axis, crossfading between the two adjacent ones. Used by .","inherits":"AnimationRootNode","properties":[{"name":"blend_mode","type":"int","description":"Controls the interpolation between animations. See [enum BlendMode] constants."},{"name":"max_space","type":"float","description":"The blend space's axis's upper limit for the points' position. See [method add_blend_point]."},{"name":"min_space","type":"float","description":"The blend space's axis's lower limit for the points' position. See [method add_blend_point]."},{"name":"snap","type":"float","description":"Position increment to snap to when moving a point on the axis."},{"name":"sync","type":"bool","description":"If [code]false[/code], the blended animations' frame are stopped when the blend value is [code]0[/code].\n\t\t\tIf [code]true[/code], forcing the blended animations to advance frame."},{"name":"value_label","type":"String","description":"Label of the virtual axis of the blend space."}],"methods":[{"name":"add_blend_point","signature":"add_blend_point(node: AnimationRootNode, pos: float, at_index: int) -> void","description":"Adds a new point that represents a [param node] on the virtual axis at a given position set by [param pos]. You can insert it at a specific index using the [param at_index] argument. If you use the default value for [param at_index], the point is inserted at the end of the blend points array.","returnType":"void"},{"name":"get_blend_point_count","signature":"get_blend_point_count() -> int","description":"Returns the number of points on the blend axis.","returnType":"int"},{"name":"get_blend_point_node","signature":"get_blend_point_node(point: int) -> AnimationRootNode","description":"Returns the  referenced by the point at index [param point].","returnType":"AnimationRootNode"},{"name":"get_blend_point_position","signature":"get_blend_point_position(point: int) -> float","description":"Returns the position of the point at index [param point].","returnType":"float"},{"name":"remove_blend_point","signature":"remove_blend_point(point: int) -> void","description":"Removes the point at index [param point] from the blend axis.","returnType":"void"},{"name":"set_blend_point_node","signature":"set_blend_point_node(point: int, node: AnimationRootNode) -> void","description":"Changes the  referenced by the point at index [param point].","returnType":"void"},{"name":"set_blend_point_position","signature":"set_blend_point_position(point: int, pos: float) -> void","description":"Updates the position of the point at index [param point] on the blend axis.","returnType":"void"}],"signals":[]},"AnimationNodeBlendSpace2D":{"name":"AnimationNodeBlendSpace2D","description":"A set of s placed on 2D coordinates, crossfading between the three adjacent ones. Used by .","inherits":"AnimationRootNode","properties":[{"name":"auto_triangles","type":"bool","description":"If [code]true[/code], the blend space is triangulated automatically. The mesh updates every time you add or remove points with [method add_blend_point] and [method remove_blend_point]."},{"name":"blend_mode","type":"int","description":"Controls the interpolation between animations. See [enum BlendMode] constants."},{"name":"max_space","type":"Vector2","description":"The blend space's X and Y axes' upper limit for the points' position. See [method add_blend_point]."},{"name":"min_space","type":"Vector2","description":"The blend space's X and Y axes' lower limit for the points' position. See [method add_blend_point]."},{"name":"snap","type":"Vector2","description":"Position increment to snap to when moving a point."},{"name":"sync","type":"bool","description":"If [code]false[/code], the blended animations' frame are stopped when the blend value is [code]0[/code].\n\t\t\tIf [code]true[/code], forcing the blended animations to advance frame."},{"name":"x_label","type":"String","description":"Name of the blend space's X axis."},{"name":"y_label","type":"String","description":"Name of the blend space's Y axis."}],"methods":[{"name":"add_blend_point","signature":"add_blend_point(node: AnimationRootNode, pos: Vector2, at_index: int) -> void","description":"Adds a new point that represents a [param node] at the position set by [param pos]. You can insert it at a specific index using the [param at_index] argument. If you use the default value for [param at_index], the point is inserted at the end of the blend points array.","returnType":"void"},{"name":"add_triangle","signature":"add_triangle(x: int, y: int, z: int, at_index: int) -> void","description":"Creates a new triangle using three points [param x], [param y], and [param z]. Triangles can overlap. You can insert the triangle at a specific index using the [param at_index] argument. If you use the default value for [param at_index], the point is inserted at the end of the blend points array.","returnType":"void"},{"name":"get_blend_point_count","signature":"get_blend_point_count() -> int","description":"Returns the number of points in the blend space.","returnType":"int"},{"name":"get_blend_point_node","signature":"get_blend_point_node(point: int) -> AnimationRootNode","description":"Returns the  referenced by the point at index [param point].","returnType":"AnimationRootNode"},{"name":"get_blend_point_position","signature":"get_blend_point_position(point: int) -> Vector2","description":"Returns the position of the point at index [param point].","returnType":"Vector2"},{"name":"get_triangle_count","signature":"get_triangle_count() -> int","description":"Returns the number of triangles in the blend space.","returnType":"int"},{"name":"get_triangle_point","signature":"get_triangle_point(triangle: int, point: int) -> int","description":"Returns the position of the point at index [param point] in the triangle of index [param triangle].","returnType":"int"},{"name":"remove_blend_point","signature":"remove_blend_point(point: int) -> void","description":"Removes the point at index [param point] from the blend space.","returnType":"void"},{"name":"remove_triangle","signature":"remove_triangle(triangle: int) -> void","description":"Removes the triangle at index [param triangle] from the blend space.","returnType":"void"},{"name":"set_blend_point_node","signature":"set_blend_point_node(point: int, node: AnimationRootNode) -> void","description":"Changes the  referenced by the point at index [param point].","returnType":"void"},{"name":"set_blend_point_position","signature":"set_blend_point_position(point: int, pos: Vector2) -> void","description":"Updates the position of the point at index [param point] in the blend space.","returnType":"void"}],"signals":[{"name":"triangles_updated","description":"Emitted every time the blend space's triangles are created, removed, or when one of their vertices changes position."}]},"AnimationNodeBlendTree":{"name":"AnimationNodeBlendTree","description":"A sub-tree of many type s used for complex animations. Used by .","inherits":"AnimationRootNode","properties":[{"name":"graph_offset","type":"Vector2","description":"The global offset of all sub animation nodes."}],"methods":[{"name":"add_node","signature":"add_node(name: StringName, node: AnimationNode, position: Vector2) -> void","description":"Adds an  at the given [param position]. The [param name] is used to identify the created sub animation node later.","returnType":"void"},{"name":"connect_node","signature":"connect_node(input_node: StringName, input_index: int, output_node: StringName) -> void","description":"Connects the output of an  as input for another , at the input port specified by [param input_index].","returnType":"void"},{"name":"disconnect_node","signature":"disconnect_node(input_node: StringName, input_index: int) -> void","description":"Disconnects the animation node connected to the specified input.","returnType":"void"},{"name":"get_node","signature":"get_node(name: StringName) -> AnimationNode","description":"Returns the sub animation node with the specified [param name].","returnType":"AnimationNode"},{"name":"get_node_position","signature":"get_node_position(name: StringName) -> Vector2","description":"Returns the position of the sub animation node with the specified [param name].","returnType":"Vector2"},{"name":"has_node","signature":"has_node(name: StringName) -> bool","description":"Returns true if a sub animation node with specified [param name] exists.","returnType":"bool"},{"name":"remove_node","signature":"remove_node(name: StringName) -> void","description":"Removes a sub animation node.","returnType":"void"},{"name":"rename_node","signature":"rename_node(name: StringName, new_name: StringName) -> void","description":"Changes the name of a sub animation node.","returnType":"void"},{"name":"set_node_position","signature":"set_node_position(name: StringName, position: Vector2) -> void","description":"Modifies the position of a sub animation node.","returnType":"void"}],"signals":[{"name":"node_changed","description":"Emitted when the input port information is changed."}]},"AnimationNodeExtension":{"name":"AnimationNodeExtension","description":"Base class for extending s from GDScript, C#, or C++.","inherits":"AnimationNode","properties":[],"methods":[{"name":"_process_animation_node","signature":"_process_animation_node(playback_info: PackedFloat64Array, test_only: bool) -> PackedFloat32Array","description":"A version of the [method AnimationNode._process] method that is meant to be overridden by custom nodes. It returns a  with the processed animation data.\n\t\t\t\tThe  parameter contains the playback information, containing the following values encoded as floating point numbers (in order): playback time and delta, start and end times, whether a seek was requested (encoded as a float greater than 0), whether the seek request was externally requested (encoded as a float greater than 0), the current [enum Animation.LoopedFlag] (encoded as a float), and the current blend weight.\n\t\t\t\tThe function must return a  of the node's time info, containing the following values (in order): animation length, time position, delta, [enum Animation.LoopMode] (encoded as a float), whether the animation is about to end (encoded as a float greater than 0) and whether the animation is infinite (encoded as a float greater than 0). All values must be included in the returned array.","returnType":"PackedFloat32Array"},{"name":"get_remaining_time","signature":"get_remaining_time(node_info: PackedFloat32Array, break_loop: bool) -> float","description":"Returns the animation's remaining time for the given node info. For looping animations, it will only return the remaining time if [param break_loop] is true, a large integer value will be returned otherwise.","returnType":"float"},{"name":"is_looping","signature":"is_looping(node_info: PackedFloat32Array) -> bool","description":"Returns true if the animation for the given [param node_info] is looping.","returnType":"bool"}],"signals":[]},"AnimationNodeOneShot":{"name":"AnimationNodeOneShot","description":"Plays an animation once in an .","inherits":"AnimationNodeSync","properties":[{"name":"autorestart","type":"bool","description":"If [code]true[/code], the sub-animation will restart automatically after finishing.\n\t\t\tIn other words, to start auto restarting, the animation must be played once with the [constant ONE_SHOT_REQUEST_FIRE] request. The [constant ONE_SHOT_REQUEST_ABORT] request stops the auto restarting, but it does not disable the [member autorestart] itself. So, the [constant ONE_SHOT_REQUEST_FIRE] request will start auto restarting again."},{"name":"autorestart_delay","type":"float","description":"The delay after which the automatic restart is triggered, in seconds."},{"name":"autorestart_random_delay","type":"float","description":"If [member autorestart] is [code]true[/code], a random additional delay (in seconds) between 0 and this value will be added to [member autorestart_delay]."},{"name":"break_loop_at_end","type":"bool","description":"If [code]true[/code], breaks the loop at the end of the loop cycle for transition, even if the animation is looping."},{"name":"fadein_curve","type":"Curve","description":"Determines how cross-fading between animations is eased. If empty, the transition will be linear. Should be a unit [Curve]."},{"name":"fadein_time","type":"float","description":"The fade-in duration. For example, setting this to [code]1.0[/code] for a 5 second length animation will produce a cross-fade that starts at 0 second and ends at 1 second during the animation.\n\t\t\t[b]Note:[/b] [AnimationNodeOneShot] transitions the current state after the end of the fading. When [AnimationNodeOutput] is considered as the most upstream, so the [member fadein_time] is scaled depending on the downstream delta. For example, if this value is set to [code]1.0[/code] and a [AnimationNodeTimeScale] with a value of [code]2.0[/code] is chained downstream, the actual processing time will be 0.5 second."},{"name":"fadeout_curve","type":"Curve","description":"Determines how cross-fading between animations is eased. If empty, the transition will be linear. Should be a unit [Curve]."},{"name":"fadeout_time","type":"float","description":"The fade-out duration. For example, setting this to [code]1.0[/code] for a 5 second length animation will produce a cross-fade that starts at 4 second and ends at 5 second during the animation.\n\t\t\t[b]Note:[/b] [AnimationNodeOneShot] transitions the current state after the end of the fading. When [AnimationNodeOutput] is considered as the most upstream, so the [member fadeout_time] is scaled depending on the downstream delta. For example, if this value is set to [code]1.0[/code] and an [AnimationNodeTimeScale] with a value of [code]2.0[/code] is chained downstream, the actual processing time will be 0.5 second."},{"name":"mix_mode","type":"int","description":"The blend type."}],"methods":[],"signals":[]},"AnimationNodeOutput":{"name":"AnimationNodeOutput","description":"The animation output node of an .","inherits":"AnimationNode","properties":[],"methods":[],"signals":[]},"AnimationNodeStateMachine":{"name":"AnimationNodeStateMachine","description":"A state machine with multiple s, used by .","inherits":"AnimationRootNode","properties":[{"name":"allow_transition_to_self","type":"bool","description":"If [code]true[/code], allows teleport to the self state with [method AnimationNodeStateMachinePlayback.travel]. When the reset option is enabled in [method AnimationNodeStateMachinePlayback.travel], the animation is restarted. If [code]false[/code], nothing happens on the teleportation to the self state."},{"name":"reset_ends","type":"bool","description":"If [code]true[/code], treat the cross-fade to the start and end nodes as a blend with the RESET animation.\n\t\t\tIn most cases, when additional cross-fades are performed in the parent [AnimationNode] of the state machine, setting this property to [code]false[/code] and matching the cross-fade time of the parent [AnimationNode] and the state machine's start node and end node gives good results."},{"name":"state_machine_type","type":"int","description":"This property can define the process of transitions for different use cases. See also [enum AnimationNodeStateMachine.StateMachineType]."}],"methods":[{"name":"add_node","signature":"add_node(name: StringName, node: AnimationNode, position: Vector2) -> void","description":"Adds a new animation node to the graph. The [param position] is used for display in the editor.","returnType":"void"},{"name":"add_transition","signature":"add_transition(from: StringName, to: StringName, transition: AnimationNodeStateMachineTransition) -> void","description":"Adds a transition between the given animation nodes.","returnType":"void"},{"name":"get_graph_offset","signature":"get_graph_offset() -> Vector2","description":"Returns the draw offset of the graph. Used for display in the editor.","returnType":"Vector2"},{"name":"get_node","signature":"get_node(name: StringName) -> AnimationNode","description":"Returns the animation node with the given name.","returnType":"AnimationNode"},{"name":"get_node_name","signature":"get_node_name(node: AnimationNode) -> StringName","description":"Returns the given animation node's name.","returnType":"StringName"},{"name":"get_node_position","signature":"get_node_position(name: StringName) -> Vector2","description":"Returns the given animation node's coordinates. Used for display in the editor.","returnType":"Vector2"},{"name":"get_transition","signature":"get_transition(idx: int) -> AnimationNodeStateMachineTransition","description":"Returns the given transition.","returnType":"AnimationNodeStateMachineTransition"},{"name":"get_transition_count","signature":"get_transition_count() -> int","description":"Returns the number of connections in the graph.","returnType":"int"},{"name":"get_transition_from","signature":"get_transition_from(idx: int) -> StringName","description":"Returns the given transition's start node.","returnType":"StringName"},{"name":"get_transition_to","signature":"get_transition_to(idx: int) -> StringName","description":"Returns the given transition's end node.","returnType":"StringName"},{"name":"has_node","signature":"has_node(name: StringName) -> bool","description":"Returns true if the graph contains the given animation node.","returnType":"bool"},{"name":"has_transition","signature":"has_transition(from: StringName, to: StringName) -> bool","description":"Returns true if there is a transition between the given animation nodes.","returnType":"bool"},{"name":"remove_node","signature":"remove_node(name: StringName) -> void","description":"Deletes the given animation node from the graph.","returnType":"void"},{"name":"remove_transition","signature":"remove_transition(from: StringName, to: StringName) -> void","description":"Deletes the transition between the two specified animation nodes.","returnType":"void"},{"name":"remove_transition_by_index","signature":"remove_transition_by_index(idx: int) -> void","description":"Deletes the given transition by index.","returnType":"void"},{"name":"rename_node","signature":"rename_node(name: StringName, new_name: StringName) -> void","description":"Renames the given animation node.","returnType":"void"},{"name":"replace_node","signature":"replace_node(name: StringName, node: AnimationNode) -> void","description":"Replaces the given animation node with a new animation node.","returnType":"void"},{"name":"set_graph_offset","signature":"set_graph_offset(offset: Vector2) -> void","description":"Sets the draw offset of the graph. Used for display in the editor.","returnType":"void"},{"name":"set_node_position","signature":"set_node_position(name: StringName, position: Vector2) -> void","description":"Sets the animation node's coordinates. Used for display in the editor.","returnType":"void"}],"signals":[]},"AnimationNodeStateMachinePlayback":{"name":"AnimationNodeStateMachinePlayback","description":"Provides playback control for an .","inherits":"Resource","properties":[],"methods":[{"name":"get_current_length","signature":"get_current_length() -> float","description":"Returns the current state length.\n\t\t\t\tNote: It is possible that any  can be nodes as well as animations. This means that there can be multiple animations within a single state. Which animation length has priority depends on the nodes connected inside it. Also, if a transition does not reset, the remaining length at that point will be returned.","returnType":"float"},{"name":"get_current_node","signature":"get_current_node() -> StringName","description":"Returns the currently playing animation state.\n\t\t\t\tNote: When using a cross-fade, the current state changes to the next state immediately after the cross-fade begins.","returnType":"StringName"},{"name":"get_current_play_position","signature":"get_current_play_position() -> float","description":"Returns the playback position within the current animation state.","returnType":"float"},{"name":"get_fading_from_node","signature":"get_fading_from_node() -> StringName","description":"Returns the starting state of currently fading animation.","returnType":"StringName"},{"name":"get_travel_path","signature":"get_travel_path() -> StringName[]","description":"Returns the current travel path as computed internally by the A* algorithm.","returnType":"StringName[]"},{"name":"is_playing","signature":"is_playing() -> bool","description":"Returns true if an animation is playing.","returnType":"bool"},{"name":"next","signature":"next() -> void","description":"If there is a next path by travel or auto advance, immediately transitions from the current state to the next state.","returnType":"void"},{"name":"start","signature":"start(node: StringName, reset: bool) -> void","description":"Starts playing the given animation.\n\t\t\t\tIf [param reset] is true, the animation is played from the beginning.","returnType":"void"},{"name":"stop","signature":"stop() -> void","description":"Stops the currently playing animation.","returnType":"void"},{"name":"travel","signature":"travel(to_node: StringName, reset_on_teleport: bool) -> void","description":"Transitions from the current state to another one, following the shortest path.\n\t\t\t\tIf the path does not connect from the current state, the animation will play after the state teleports.\n\t\t\t\tIf [param reset_on_teleport] is true, the animation is played from the beginning when the travel cause a teleportation.","returnType":"void"}],"signals":[]},"AnimationNodeStateMachineTransition":{"name":"AnimationNodeStateMachineTransition","description":"A transition within an  connecting two s.","inherits":"Resource","properties":[{"name":"advance_condition","type":"StringName","description":"Turn on auto advance when this condition is set. The provided name will become a boolean parameter on the [AnimationTree] that can be controlled from code (see [url=$DOCS_URL/tutorials/animation/animation_tree.html#controlling-from-code]Using AnimationTree[/url]). For example, if [member AnimationTree.tree_root] is an [AnimationNodeStateMachine] and [member advance_condition] is set to [code]\"idle\"[/code]:\n\t\t\t[codeblocks]\n\t\t\t[gdscript]\n\t\t\t$animation_tree.set(\"parameters/conditions/idle\", is_on_floor and (linear_velocity.x == 0))\n\t\t\t[/gdscript]\n\t\t\t[csharp]\n\t\t\tGetNode&lt;AnimationTree&gt;(\"animation_tree\").Set(\"parameters/conditions/idle\", IsOnFloor &amp;&amp; (LinearVelocity.X == 0));\n\t\t\t[/csharp]\n\t\t\t[/codeblocks]"},{"name":"advance_expression","type":"String","description":"Use an expression as a condition for state machine transitions. It is possible to create complex animation advance conditions for switching between states and gives much greater flexibility for creating complex state machines by directly interfacing with the script code."},{"name":"advance_mode","type":"int","description":"Determines whether the transition should be disabled, enabled when using [method AnimationNodeStateMachinePlayback.travel], or traversed automatically if the [member advance_condition] and [member advance_expression] checks are [code]true[/code] (if assigned)."},{"name":"break_loop_at_end","type":"bool","description":"If [code]true[/code], breaks the loop at the end of the loop cycle for transition, even if the animation is looping."},{"name":"priority","type":"int","description":"Lower priority transitions are preferred when travelling through the tree via [method AnimationNodeStateMachinePlayback.travel] or [member advance_mode] is set to [constant ADVANCE_MODE_AUTO]."},{"name":"reset","type":"bool","description":"If [code]true[/code], the destination animation is played back from the beginning when switched."},{"name":"switch_mode","type":"int","description":"The transition type."},{"name":"xfade_curve","type":"Curve","description":"Ease curve for better control over cross-fade between this state and the next. Should be a unit [Curve]."},{"name":"xfade_time","type":"float","description":"The time to cross-fade between this state and the next.\n\t\t\t[b]Note:[/b] [AnimationNodeStateMachine] transitions the current state immediately after the start of the fading. The precise remaining time can only be inferred from the main animation. When [AnimationNodeOutput] is considered as the most upstream, so the [member xfade_time] is not scaled depending on the downstream delta. See also [member AnimationNodeOneShot.fadeout_time]."}],"methods":[],"signals":[{"name":"advance_condition_changed","description":"Emitted when [member advance_condition] is changed."}]},"AnimationNodeSub2":{"name":"AnimationNodeSub2","description":"Blends two animations subtractively inside of an .","inherits":"AnimationNodeSync","properties":[],"methods":[],"signals":[]},"AnimationNodeSync":{"name":"AnimationNodeSync","description":"Base class for s with multiple input ports that must be synchronized.","inherits":"AnimationNode","properties":[{"name":"sync","type":"bool","description":"If [code]false[/code], the blended animations' frame are stopped when the blend value is [code]0[/code].\n\t\t\tIf [code]true[/code], forcing the blended animations to advance frame."}],"methods":[],"signals":[]},"AnimationNodeTimeScale":{"name":"AnimationNodeTimeScale","description":"A time-scaling animation node used in .","inherits":"AnimationNode","properties":[],"methods":[],"signals":[]},"AnimationNodeTimeSeek":{"name":"AnimationNodeTimeSeek","description":"A time-seeking animation node used in .","inherits":"AnimationNode","properties":[{"name":"explicit_elapse","type":"bool","description":"If [code]true[/code], some processes are executed to handle keys between seeks, such as calculating root motion and finding the nearest discrete key."}],"methods":[],"signals":[]},"AnimationNodeTransition":{"name":"AnimationNodeTransition","description":"A transition within an  connecting two s.","inherits":"AnimationNodeSync","properties":[{"name":"allow_transition_to_self","type":"bool","description":"If [code]true[/code], allows transition to the self state. When the reset option is enabled in input, the animation is restarted. If [code]false[/code], nothing happens on the transition to the self state."},{"name":"input_count","type":"int","description":"The number of enabled input ports for this animation node."},{"name":"xfade_curve","type":"Curve","description":"Determines how cross-fading between animations is eased. If empty, the transition will be linear. Should be a unit [Curve]."},{"name":"xfade_time","type":"float","description":"Cross-fading time (in seconds) between each animation connected to the inputs.\n\t\t\t[b]Note:[/b] [AnimationNodeTransition] transitions the current state immediately after the start of the fading. The precise remaining time can only be inferred from the main animation. When [AnimationNodeOutput] is considered as the most upstream, so the [member xfade_time] is not scaled depending on the downstream delta. See also [member AnimationNodeOneShot.fadeout_time]."}],"methods":[{"name":"is_input_loop_broken_at_end","signature":"is_input_loop_broken_at_end(input: int) -> bool","description":"Returns whether the animation breaks the loop at the end of the loop cycle for transition.","returnType":"bool"},{"name":"is_input_reset","signature":"is_input_reset(input: int) -> bool","description":"Returns whether the animation restarts when the animation transitions from the other animation.","returnType":"bool"},{"name":"is_input_set_as_auto_advance","signature":"is_input_set_as_auto_advance(input: int) -> bool","description":"Returns true if auto-advance is enabled for the given [param input] index.","returnType":"bool"},{"name":"set_input_as_auto_advance","signature":"set_input_as_auto_advance(input: int, enable: bool) -> void","description":"Enables or disables auto-advance for the given [param input] index. If enabled, state changes to the next input after playing the animation once. If enabled for the last input state, it loops to the first.","returnType":"void"},{"name":"set_input_break_loop_at_end","signature":"set_input_break_loop_at_end(input: int, enable: bool) -> void","description":"If true, breaks the loop at the end of the loop cycle for transition, even if the animation is looping.","returnType":"void"},{"name":"set_input_reset","signature":"set_input_reset(input: int, enable: bool) -> void","description":"If true, the destination animation is restarted when the animation transitions.","returnType":"void"}],"signals":[]},"AnimationPlayer":{"name":"AnimationPlayer","description":"A node used for animation playback.","inherits":"AnimationMixer","properties":[{"name":"assigned_animation","type":"String","description":"If playing, the current animation's key, otherwise, the animation last played. When set, this changes the animation, but will not play it unless already playing. See also [member current_animation]."},{"name":"autoplay","type":"String","description":"The key of the animation to play when the scene loads."},{"name":"current_animation","type":"String","description":"The key of the currently playing animation. If no animation is playing, the property's value is an empty string. Changing this value does not restart the animation. See [method play] for more information on playing animations.\n\t\t\t[b]Note:[/b] While this property appears in the Inspector, it's not meant to be edited, and it's not saved in the scene. This property is mainly used to get the currently playing animation, and internally for animation playback tracks. For more information, see [Animation]."},{"name":"current_animation_length","type":"float","description":"The length (in seconds) of the currently playing animation."},{"name":"current_animation_position","type":"float","description":"The position (in seconds) of the currently playing animation."},{"name":"movie_quit_on_finish","type":"bool","description":"If [code]true[/code] and the engine is running in Movie Maker mode (see [MovieWriter]), exits the engine with [method SceneTree.quit] as soon as an animation is done playing in this [AnimationPlayer]. A message is printed when the engine quits for this reason.\n\t\t\t[b]Note:[/b] This obeys the same logic as the [signal AnimationMixer.animation_finished] signal, so it will not quit the engine if the animation is set to be looping."},{"name":"playback_auto_capture","type":"bool","description":"If [code]true[/code], performs [method AnimationMixer.capture] before playback automatically. This means just [method play_with_capture] is executed with default arguments instead of [method play].\n\t\t\t[b]Note:[/b] Capture interpolation is only performed if the animation contains a capture track. See also [constant Animation.UPDATE_CAPTURE]."},{"name":"playback_auto_capture_duration","type":"float","description":"See also [method play_with_capture] and [method AnimationMixer.capture].\n\t\t\tIf [member playback_auto_capture_duration] is negative value, the duration is set to the interval between the current position and the first key."},{"name":"playback_auto_capture_ease_type","type":"int","description":"The ease type of the capture interpolation. See also [enum Tween.EaseType]."},{"name":"playback_auto_capture_transition_type","type":"int","description":"The transition type of the capture interpolation. See also [enum Tween.TransitionType]."},{"name":"playback_default_blend_time","type":"float","description":"The default time in which to blend animations. Ranges from 0 to 4096 with 0.01 precision."},{"name":"speed_scale","type":"float","description":"The speed scaling ratio. For example, if this value is [code]1[/code], then the animation plays at normal speed. If it's [code]0.5[/code], then it plays at half speed. If it's [code]2[/code], then it plays at double speed.\n\t\t\tIf set to a negative value, the animation is played in reverse. If set to [code]0[/code], the animation will not advance."}],"methods":[{"name":"animation_get_next","signature":"animation_get_next(animation_from: StringName) -> StringName","description":"Returns the key of the animation which is queued to play after the [param animation_from] animation.","returnType":"StringName"},{"name":"animation_set_next","signature":"animation_set_next(animation_from: StringName, animation_to: StringName) -> void","description":"Triggers the [param animation_to] animation when the [param animation_from] animation completes.","returnType":"void"},{"name":"clear_queue","signature":"clear_queue() -> void","description":"Clears all queued, unplayed animations.","returnType":"void"},{"name":"get_blend_time","signature":"get_blend_time(animation_from: StringName, animation_to: StringName) -> float","description":"Returns the blend time (in seconds) between two animations, referenced by their keys.","returnType":"float"},{"name":"get_method_call_mode","signature":"get_method_call_mode() -> int","description":"Returns the call mode used for \"Call Method\" tracks.","returnType":"int"},{"name":"get_playing_speed","signature":"get_playing_speed() -> float","description":"Returns the actual playing speed of current animation or 0 if not playing. This speed is the [member speed_scale] property multiplied by custom_speed argument specified when calling the [method play] method.\n\t\t\t\tReturns a negative value if the current animation is playing backwards.","returnType":"float"},{"name":"get_process_callback","signature":"get_process_callback() -> int","description":"Returns the process notification in which to update animations.","returnType":"int"},{"name":"get_queue","signature":"get_queue() -> PackedStringArray","description":"Returns a list of the animation keys that are currently queued to play.","returnType":"PackedStringArray"},{"name":"get_root","signature":"get_root() -> NodePath","description":"Returns the node which node path references will travel from.","returnType":"NodePath"},{"name":"get_section_end_time","signature":"get_section_end_time() -> float","description":"Returns the end time of the section currently being played.","returnType":"float"},{"name":"get_section_start_time","signature":"get_section_start_time() -> float","description":"Returns the start time of the section currently being played.","returnType":"float"},{"name":"has_section","signature":"has_section() -> bool","description":"Returns true if an animation is currently playing with section.","returnType":"bool"},{"name":"is_playing","signature":"is_playing() -> bool","description":"Returns true if an animation is currently playing (even if [member speed_scale] and/or custom_speed are 0).","returnType":"bool"},{"name":"pause","signature":"pause() -> void","description":"Pauses the currently playing animation. The [member current_animation_position] will be kept and calling [method play] or [method play_backwards] without arguments or with the same animation name as [member assigned_animation] will resume the animation.\n\t\t\t\tSee also [method stop].","returnType":"void"},{"name":"play","signature":"play(name: StringName, custom_blend: float, custom_speed: float, from_end: bool) -> void","description":"Plays the animation with key [param name]. Custom blend times and speed can be set.\n\t\t\t\tThe [param from_end] option only affects when switching to a new animation track, or if the same track but at the start or end. It does not affect resuming playback that was paused in the middle of an animation. If [param custom_speed] is negative and [param from_end] is true, the animation will play backwards (which is equivalent to calling [method play_backwards]).\n\t\t\t\tThe  keeps track of its current or last played animation with [member assigned_animation]. If this method is called with that same animation [param name], or with no [param name] parameter, the assigned animation will resume playing if it was paused.\n\t\t\t\tNote: The animation will be updated the next time the  is processed. If other variables are updated at the same time this is called, they may be updated too early. To perform the update immediately, call advance(0).","returnType":"void"},{"name":"play_backwards","signature":"play_backwards(name: StringName, custom_blend: float) -> void","description":"Plays the animation with key [param name] in reverse.\n\t\t\t\tThis method is a shorthand for [method play] with custom_speed = -1.0 and from_end = true, so see its description for more information.","returnType":"void"},{"name":"play_section","signature":"play_section(name: StringName, start_time: float, end_time: float, custom_blend: float, custom_speed: float, from_end: bool) -> void","description":"Plays the animation with key [param name] and the section starting from [param start_time] and ending on [param end_time]. See also [method play].\n\t\t\t\tSetting [param start_time] to a value outside the range of the animation means the start of the animation will be used instead, and setting [param end_time] to a value outside the range of the animation means the end of the animation will be used instead. [param start_time] cannot be equal to [param end_time].","returnType":"void"},{"name":"play_section_backwards","signature":"play_section_backwards(name: StringName, start_time: float, end_time: float, custom_blend: float) -> void","description":"Plays the animation with key [param name] and the section starting from [param start_time] and ending on [param end_time] in reverse.\n\t\t\t\tThis method is a shorthand for [method play_section] with custom_speed = -1.0 and from_end = true, see its description for more information.","returnType":"void"},{"name":"play_section_with_markers","signature":"play_section_with_markers(name: StringName, start_marker: StringName, end_marker: StringName, custom_blend: float, custom_speed: float, from_end: bool) -> void","description":"Plays the animation with key [param name] and the section starting from [param start_marker] and ending on [param end_marker].\n\t\t\t\tIf the start marker is empty, the section starts from the beginning of the animation. If the end marker is empty, the section ends on the end of the animation. See also [method play].","returnType":"void"},{"name":"play_section_with_markers_backwards","signature":"play_section_with_markers_backwards(name: StringName, start_marker: StringName, end_marker: StringName, custom_blend: float) -> void","description":"Plays the animation with key [param name] and the section starting from [param start_marker] and ending on [param end_marker] in reverse.\n\t\t\t\tThis method is a shorthand for [method play_section_with_markers] with custom_speed = -1.0 and from_end = true, see its description for more information.","returnType":"void"},{"name":"play_with_capture","signature":"play_with_capture(name: StringName, duration: float, custom_blend: float, custom_speed: float, from_end: bool, trans_type: int, ease_type: int) -> void","description":"See also [method AnimationMixer.capture].\n\t\t\t\tYou can use this method to use more detailed options for capture than those performed by [member playback_auto_capture]. When [member playback_auto_capture] is false, this method is almost the same as the following:\n\t\t\t\t\n\t\t\t\tcapture(name, duration, trans_type, ease_type)\n\t\t\t\tplay(name, custom_blend, custom_speed, from_end)\n\t\t\t\t\n\t\t\t\tIf [param name] is blank, it specifies [member assigned_animation].\n\t\t\t\tIf [param duration] is a negative value, the duration is set to the interval between the current position and the first key, when [param from_end] is true, uses the interval between the current position and the last key instead.\n\t\t\t\tNote: The [param duration] takes [member speed_scale] into account, but [param custom_speed] does not, because the capture cache is interpolated with the blend result and the result may contain multiple animations.","returnType":"void"},{"name":"queue","signature":"queue(name: StringName) -> void","description":"Queues an animation for playback once the current animation and all previously queued animations are done.\n\t\t\t\tNote: If a looped animation is currently playing, the queued animation will never play unless the looped animation is stopped somehow.","returnType":"void"},{"name":"reset_section","signature":"reset_section() -> void","description":"Resets the current section if section is set.","returnType":"void"},{"name":"seek","signature":"seek(seconds: float, update: bool, update_only: bool) -> void","description":"Seeks the animation to the [param seconds] point in time (in seconds). If [param update] is true, the animation updates too, otherwise it updates at process time. Events between the current frame and [param seconds] are skipped.\n\t\t\t\tIf [param update_only] is true, the method / audio / animation playback tracks will not be processed.\n\t\t\t\tNote: Seeking to the end of the animation doesn't emit [signal AnimationMixer.animation_finished]. If you want to skip animation and emit the signal, use [method AnimationMixer.advance].","returnType":"void"},{"name":"set_blend_time","signature":"set_blend_time(animation_from: StringName, animation_to: StringName, sec: float) -> void","description":"Specifies a blend time (in seconds) between two animations, referenced by their keys.","returnType":"void"},{"name":"set_method_call_mode","signature":"set_method_call_mode(mode: int) -> void","description":"Sets the call mode used for \"Call Method\" tracks.","returnType":"void"},{"name":"set_process_callback","signature":"set_process_callback(mode: int) -> void","description":"Sets the process notification in which to update animations.","returnType":"void"},{"name":"set_root","signature":"set_root(path: NodePath) -> void","description":"Sets the node which node path references will travel from.","returnType":"void"},{"name":"set_section","signature":"set_section(start_time: float, end_time: float) -> void","description":"Changes the start and end times of the section being played. The current playback position will be clamped within the new section. See also [method play_section].","returnType":"void"},{"name":"set_section_with_markers","signature":"set_section_with_markers(start_marker: StringName, end_marker: StringName) -> void","description":"Changes the start and end markers of the section being played. The current playback position will be clamped within the new section. See also [method play_section_with_markers].\n\t\t\t\tIf the argument is empty, the section uses the beginning or end of the animation. If both are empty, it means that the section is not set.","returnType":"void"},{"name":"stop","signature":"stop(keep_state: bool) -> void","description":"Stops the currently playing animation. The animation position is reset to 0 and the custom_speed is reset to 1.0. See also [method pause].\n\t\t\t\tIf [param keep_state] is true, the animation state is not updated visually.\n\t\t\t\tNote: The method / audio / animation playback tracks will not be processed by this method.","returnType":"void"}],"signals":[{"name":"animation_changed","description":"Emitted when a queued animation plays after the previous animation finished. See also [method AnimationPlayer.queue].\n\t\t\t\t[b]Note:[/b] The signal is not emitted when the animation is changed via [method AnimationPlayer.play] or by an [AnimationTree]."},{"name":"current_animation_changed","description":"Emitted when [member current_animation] changes."}]},"AnimationRootNode":{"name":"AnimationRootNode","description":"Base class for s that hold one or multiple composite animations. Usually used for [member AnimationTree.tree_root].","inherits":"AnimationNode","properties":[],"methods":[],"signals":[]},"AnimationTree":{"name":"AnimationTree","description":"A node used for advanced animation transitions in an .","inherits":"AnimationMixer","properties":[{"name":"advance_expression_base_node","type":"NodePath","description":"The path to the [Node] used to evaluate the [AnimationNode] [Expression] if one is not explicitly specified internally."},{"name":"anim_player","type":"NodePath","description":"The path to the [AnimationPlayer] used for animating."},{"name":"tree_root","type":"AnimationRootNode","description":"The root animation node of this [AnimationTree]. See [AnimationRootNode]."}],"methods":[{"name":"get_process_callback","signature":"get_process_callback() -> int","description":"Returns the process notification in which to update animations.","returnType":"int"},{"name":"set_process_callback","signature":"set_process_callback(mode: int) -> void","description":"Sets the process notification in which to update animations.","returnType":"void"}],"signals":[{"name":"animation_player_changed","description":"Emitted when the [member anim_player] is changed."}]},"Area2D":{"name":"Area2D","description":"A region of 2D space that detects other s entering or exiting it.","inherits":"CollisionObject2D","properties":[{"name":"angular_damp","type":"float","description":"The rate at which objects stop spinning in this area. Represents the angular velocity lost per second.\n\t\t\tSee [member ProjectSettings.physics/2d/default_angular_damp] for more details about damping."},{"name":"angular_damp_space_override","type":"int","description":"Override mode for angular damping calculations within this area. See [enum SpaceOverride] for possible values."},{"name":"audio_bus_name","type":"StringName","description":"The name of the area's audio bus."},{"name":"audio_bus_override","type":"bool","description":"If [code]true[/code], the area's audio bus overrides the default audio bus."},{"name":"gravity","type":"float","description":"The area's gravity intensity (in pixels per second squared). This value multiplies the gravity direction. This is useful to alter the force of gravity without altering its direction."},{"name":"gravity_direction","type":"Vector2","description":"The area's gravity vector (not normalized)."},{"name":"gravity_point","type":"bool","description":"If [code]true[/code], gravity is calculated from a point (set via [member gravity_point_center]). See also [member gravity_space_override]."},{"name":"gravity_point_center","type":"Vector2","description":"If gravity is a point (see [member gravity_point]), this will be the point of attraction."},{"name":"gravity_point_unit_distance","type":"float","description":"The distance at which the gravity strength is equal to [member gravity]. For example, on a planet 100 pixels in radius with a surface gravity of 4.0 px/s², set the [member gravity] to 4.0 and the unit distance to 100.0. The gravity will have falloff according to the inverse square law, so in the example, at 200 pixels from the center the gravity will be 1.0 px/s² (twice the distance, 1/4th the gravity), at 50 pixels it will be 16.0 px/s² (half the distance, 4x the gravity), and so on.\n\t\t\tThe above is true only when the unit distance is a positive number. When this is set to 0.0, the gravity will be constant regardless of distance."},{"name":"gravity_space_override","type":"int","description":"Override mode for gravity calculations within this area. See [enum SpaceOverride] for possible values."},{"name":"linear_damp","type":"float","description":"The rate at which objects stop moving in this area. Represents the linear velocity lost per second.\n\t\t\tSee [member ProjectSettings.physics/2d/default_linear_damp] for more details about damping."},{"name":"linear_damp_space_override","type":"int","description":"Override mode for linear damping calculations within this area. See [enum SpaceOverride] for possible values."},{"name":"monitorable","type":"bool","description":"If [code]true[/code], other monitoring areas can detect this area."},{"name":"monitoring","type":"bool","description":"If [code]true[/code], the area detects bodies or areas entering and exiting it."},{"name":"priority","type":"int","description":"The area's priority. Higher priority areas are processed first. The [World2D]'s physics is always processed last, after all areas."}],"methods":[{"name":"get_overlapping_areas","signature":"get_overlapping_areas() -> Area2D[]","description":"Returns a list of intersecting s. The overlapping area's [member CollisionObject2D.collision_layer] must be part of this area's [member CollisionObject2D.collision_mask] in order to be detected.\n\t\t\t\tFor performance reasons (collisions are all processed at the same time) this list is modified once during the physics step, not immediately after objects are moved. Consider using signals instead.","returnType":"Area2D[]"},{"name":"get_overlapping_bodies","signature":"get_overlapping_bodies() -> Node2D[]","description":"Returns a list of intersecting s and s. The overlapping body's [member CollisionObject2D.collision_layer] must be part of this area's [member CollisionObject2D.collision_mask] in order to be detected.\n\t\t\t\tFor performance reasons (collisions are all processed at the same time) this list is modified once during the physics step, not immediately after objects are moved. Consider using signals instead.","returnType":"Node2D[]"},{"name":"has_overlapping_areas","signature":"has_overlapping_areas() -> bool","description":"Returns true if intersecting any s, otherwise returns false. The overlapping area's [member CollisionObject2D.collision_layer] must be part of this area's [member CollisionObject2D.collision_mask] in order to be detected.\n\t\t\t\tFor performance reasons (collisions are all processed at the same time) the list of overlapping areas is modified once during the physics step, not immediately after objects are moved. Consider using signals instead.","returnType":"bool"},{"name":"has_overlapping_bodies","signature":"has_overlapping_bodies() -> bool","description":"Returns true if intersecting any s or s, otherwise returns false. The overlapping body's [member CollisionObject2D.collision_layer] must be part of this area's [member CollisionObject2D.collision_mask] in order to be detected.\n\t\t\t\tFor performance reasons (collisions are all processed at the same time) the list of overlapping bodies is modified once during the physics step, not immediately after objects are moved. Consider using signals instead.","returnType":"bool"},{"name":"overlaps_area","signature":"overlaps_area(area: Node) -> bool","description":"Returns true if the given  intersects or overlaps this , false otherwise.\n\t\t\t\tNote: The result of this test is not immediate after moving objects. For performance, the list of overlaps is updated once per frame and before the physics step. Consider using signals instead.","returnType":"bool"},{"name":"overlaps_body","signature":"overlaps_body(body: Node) -> bool","description":"Returns true if the given physics body intersects or overlaps this , false otherwise.\n\t\t\t\tNote: The result of this test is not immediate after moving objects. For performance, list of overlaps is updated once per frame and before the physics step. Consider using signals instead.\n\t\t\t\tThe [param body] argument can either be a  or a  instance. While TileMaps are not physics bodies themselves, they register their tiles with collision shapes as a virtual physics body.","returnType":"bool"}],"signals":[{"name":"area_entered","description":"Emitted when the received [param area] enters this area. Requires [member monitoring] to be set to [code]true[/code]."},{"name":"area_exited","description":"Emitted when the received [param area] exits this area. Requires [member monitoring] to be set to [code]true[/code]."},{"name":"area_shape_entered","description":"Emitted when a [Shape2D] of the received [param area] enters a shape of this area. Requires [member monitoring] to be set to [code]true[/code].\n\t\t\t\t[param local_shape_index] and [param area_shape_index] contain indices of the interacting shapes from this area and the other area, respectively. [param area_rid] contains the [RID] of the other area. These values can be used with the [PhysicsServer2D].\n\t\t\t\t[b]Example:[/b] Get the [CollisionShape2D] node from the shape index:\n\t\t\t\t[codeblocks]\n\t\t\t\t[gdscript]\n\t\t\t\tvar other_shape_owner = area.shape_find_owner(area_shape_index)\n\t\t\t\tvar other_shape_node = area.shape_owner_get_owner(other_shape_owner)\n\n\t\t\t\tvar local_shape_owner = shape_find_owner(local_shape_index)\n\t\t\t\tvar local_shape_node = shape_owner_get_owner(local_shape_owner)\n\t\t\t\t[/gdscript]\n\t\t\t\t[/codeblocks]"},{"name":"area_shape_exited","description":"Emitted when a [Shape2D] of the received [param area] exits a shape of this area. Requires [member monitoring] to be set to [code]true[/code].\n\t\t\t\tSee also [signal area_shape_entered]."},{"name":"body_entered","description":"Emitted when the received [param body] enters this area. [param body] can be a [PhysicsBody2D] or a [TileMap]. [TileMap]s are detected if their [TileSet] has collision shapes configured. Requires [member monitoring] to be set to [code]true[/code]."},{"name":"body_exited","description":"Emitted when the received [param body] exits this area. [param body] can be a [PhysicsBody2D] or a [TileMap]. [TileMap]s are detected if their [TileSet] has collision shapes configured. Requires [member monitoring] to be set to [code]true[/code]."},{"name":"body_shape_entered","description":"Emitted when a [Shape2D] of the received [param body] enters a shape of this area. [param body] can be a [PhysicsBody2D] or a [TileMap]. [TileMap]s are detected if their [TileSet] has collision shapes configured. Requires [member monitoring] to be set to [code]true[/code].\n\t\t\t\t[param local_shape_index] and [param body_shape_index] contain indices of the interacting shapes from this area and the interacting body, respectively. [param body_rid] contains the [RID] of the body. These values can be used with the [PhysicsServer2D].\n\t\t\t\t[b]Example:[/b] Get the [CollisionShape2D] node from the shape index:\n\t\t\t\t[codeblocks]\n\t\t\t\t[gdscript]\n\t\t\t\tvar body_shape_owner = body.shape_find_owner(body_shape_index)\n\t\t\t\tvar body_shape_node = body.shape_owner_get_owner(body_shape_owner)\n\n\t\t\t\tvar local_shape_owner = shape_find_owner(local_shape_index)\n\t\t\t\tvar local_shape_node = shape_owner_get_owner(local_shape_owner)\n\t\t\t\t[/gdscript]\n\t\t\t\t[/codeblocks]"},{"name":"body_shape_exited","description":"Emitted when a [Shape2D] of the received [param body] exits a shape of this area. [param body] can be a [PhysicsBody2D] or a [TileMap]. [TileMap]s are detected if their [TileSet] has collision shapes configured. Requires [member monitoring] to be set to [code]true[/code].\n\t\t\t\tSee also [signal body_shape_entered]."}]},"Area3D":{"name":"Area3D","description":"A region of 3D space that detects other s entering or exiting it.","inherits":"CollisionObject3D","properties":[{"name":"angular_damp","type":"float","description":"The rate at which objects stop spinning in this area. Represents the angular velocity lost per second.\n\t\t\tSee [member ProjectSettings.physics/3d/default_angular_damp] for more details about damping."},{"name":"angular_damp_space_override","type":"int","description":"Override mode for angular damping calculations within this area. See [enum SpaceOverride] for possible values."},{"name":"audio_bus_name","type":"StringName","description":"The name of the area's audio bus."},{"name":"audio_bus_override","type":"bool","description":"If [code]true[/code], the area's audio bus overrides the default audio bus."},{"name":"gravity","type":"float","description":"The area's gravity intensity (in meters per second squared). This value multiplies the gravity direction. This is useful to alter the force of gravity without altering its direction."},{"name":"gravity_direction","type":"Vector3","description":"The area's gravity vector (not normalized)."},{"name":"gravity_point","type":"bool","description":"If [code]true[/code], gravity is calculated from a point (set via [member gravity_point_center]). See also [member gravity_space_override]."},{"name":"gravity_point_center","type":"Vector3","description":"If gravity is a point (see [member gravity_point]), this will be the point of attraction."},{"name":"gravity_point_unit_distance","type":"float","description":"The distance at which the gravity strength is equal to [member gravity]. For example, on a planet 100 meters in radius with a surface gravity of 4.0 m/s², set the [member gravity] to 4.0 and the unit distance to 100.0. The gravity will have falloff according to the inverse square law, so in the example, at 200 meters from the center the gravity will be 1.0 m/s² (twice the distance, 1/4th the gravity), at 50 meters it will be 16.0 m/s² (half the distance, 4x the gravity), and so on.\n\t\t\tThe above is true only when the unit distance is a positive number. When this is set to 0.0, the gravity will be constant regardless of distance."},{"name":"gravity_space_override","type":"int","description":"Override mode for gravity calculations within this area. See [enum SpaceOverride] for possible values."},{"name":"linear_damp","type":"float","description":"The rate at which objects stop moving in this area. Represents the linear velocity lost per second.\n\t\t\tSee [member ProjectSettings.physics/3d/default_linear_damp] for more details about damping."},{"name":"linear_damp_space_override","type":"int","description":"Override mode for linear damping calculations within this area. See [enum SpaceOverride] for possible values."},{"name":"monitorable","type":"bool","description":"If [code]true[/code], other monitoring areas can detect this area."},{"name":"monitoring","type":"bool","description":"If [code]true[/code], the area detects bodies or areas entering and exiting it."},{"name":"priority","type":"int","description":"The area's priority. Higher priority areas are processed first. The [World3D]'s physics is always processed last, after all areas."},{"name":"reverb_bus_amount","type":"float","description":"The degree to which this area applies reverb to its associated audio. Ranges from [code]0[/code] to [code]1[/code] with [code]0.1[/code] precision."},{"name":"reverb_bus_enabled","type":"bool","description":"If [code]true[/code], the area applies reverb to its associated audio."},{"name":"reverb_bus_name","type":"StringName","description":"The name of the reverb bus to use for this area's associated audio."},{"name":"reverb_bus_uniformity","type":"float","description":"The degree to which this area's reverb is a uniform effect. Ranges from [code]0[/code] to [code]1[/code] with [code]0.1[/code] precision."},{"name":"wind_attenuation_factor","type":"float","description":"The exponential rate at which wind force decreases with distance from its origin.\n\t\t\t[b]Note:[/b] This wind force only applies to [SoftBody3D] nodes. Other physics bodies are currently not affected by wind."},{"name":"wind_force_magnitude","type":"float","description":"The magnitude of area-specific wind force.\n\t\t\t[b]Note:[/b] This wind force only applies to [SoftBody3D] nodes. Other physics bodies are currently not affected by wind."},{"name":"wind_source_path","type":"NodePath","description":"The [Node3D] which is used to specify the direction and origin of an area-specific wind force. The direction is opposite to the z-axis of the [Node3D]'s local transform, and its origin is the origin of the [Node3D]'s local transform.\n\t\t\t[b]Note:[/b] This wind force only applies to [SoftBody3D] nodes. Other physics bodies are currently not affected by wind."}],"methods":[{"name":"get_overlapping_areas","signature":"get_overlapping_areas() -> Area3D[]","description":"Returns a list of intersecting s. The overlapping area's [member CollisionObject3D.collision_layer] must be part of this area's [member CollisionObject3D.collision_mask] in order to be detected.\n\t\t\t\tFor performance reasons (collisions are all processed at the same time) this list is modified once during the physics step, not immediately after objects are moved. Consider using signals instead.","returnType":"Area3D[]"},{"name":"get_overlapping_bodies","signature":"get_overlapping_bodies() -> Node3D[]","description":"Returns a list of intersecting s and s. The overlapping body's [member CollisionObject3D.collision_layer] must be part of this area's [member CollisionObject3D.collision_mask] in order to be detected.\n\t\t\t\tFor performance reasons (collisions are all processed at the same time) this list is modified once during the physics step, not immediately after objects are moved. Consider using signals instead.","returnType":"Node3D[]"},{"name":"has_overlapping_areas","signature":"has_overlapping_areas() -> bool","description":"Returns true if intersecting any s, otherwise returns false. The overlapping area's [member CollisionObject3D.collision_layer] must be part of this area's [member CollisionObject3D.collision_mask] in order to be detected.\n\t\t\t\tFor performance reasons (collisions are all processed at the same time) the list of overlapping areas is modified once during the physics step, not immediately after objects are moved. Consider using signals instead.","returnType":"bool"},{"name":"has_overlapping_bodies","signature":"has_overlapping_bodies() -> bool","description":"Returns true if intersecting any s or s, otherwise returns false. The overlapping body's [member CollisionObject3D.collision_layer] must be part of this area's [member CollisionObject3D.collision_mask] in order to be detected.\n\t\t\t\tFor performance reasons (collisions are all processed at the same time) the list of overlapping bodies is modified once during the physics step, not immediately after objects are moved. Consider using signals instead.","returnType":"bool"},{"name":"overlaps_area","signature":"overlaps_area(area: Node) -> bool","description":"Returns true if the given  intersects or overlaps this , false otherwise.\n\t\t\t\tNote: The result of this test is not immediate after moving objects. For performance, list of overlaps is updated once per frame and before the physics step. Consider using signals instead.","returnType":"bool"},{"name":"overlaps_body","signature":"overlaps_body(body: Node) -> bool","description":"Returns true if the given physics body intersects or overlaps this , false otherwise.\n\t\t\t\tNote: The result of this test is not immediate after moving objects. For performance, list of overlaps is updated once per frame and before the physics step. Consider using signals instead.\n\t\t\t\tThe [param body] argument can either be a  or a  instance. While GridMaps are not physics body themselves, they register their tiles with collision shapes as a virtual physics body.","returnType":"bool"}],"signals":[{"name":"area_entered","description":"Emitted when the received [param area] enters this area. Requires [member monitoring] to be set to [code]true[/code]."},{"name":"area_exited","description":"Emitted when the received [param area] exits this area. Requires [member monitoring] to be set to [code]true[/code]."},{"name":"area_shape_entered","description":"Emitted when a [Shape3D] of the received [param area] enters a shape of this area. Requires [member monitoring] to be set to [code]true[/code].\n\t\t\t\t[param local_shape_index] and [param area_shape_index] contain indices of the interacting shapes from this area and the other area, respectively. [param area_rid] contains the [RID] of the other area. These values can be used with the [PhysicsServer3D].\n\t\t\t\t[b]Example:[/b] Get the [CollisionShape3D] node from the shape index:\n\t\t\t\t[codeblocks]\n\t\t\t\t[gdscript]\n\t\t\t\tvar other_shape_owner = area.shape_find_owner(area_shape_index)\n\t\t\t\tvar other_shape_node = area.shape_owner_get_owner(other_shape_owner)\n\n\t\t\t\tvar local_shape_owner = shape_find_owner(local_shape_index)\n\t\t\t\tvar local_shape_node = shape_owner_get_owner(local_shape_owner)\n\t\t\t\t[/gdscript]\n\t\t\t\t[/codeblocks]"},{"name":"area_shape_exited","description":"Emitted when a [Shape3D] of the received [param area] exits a shape of this area. Requires [member monitoring] to be set to [code]true[/code].\n\t\t\t\tSee also [signal area_shape_entered]."},{"name":"body_entered","description":"Emitted when the received [param body] enters this area. [param body] can be a [PhysicsBody3D] or a [GridMap]. [GridMap]s are detected if their [MeshLibrary] has collision shapes configured. Requires [member monitoring] to be set to [code]true[/code]."},{"name":"body_exited","description":"Emitted when the received [param body] exits this area. [param body] can be a [PhysicsBody3D] or a [GridMap]. [GridMap]s are detected if their [MeshLibrary] has collision shapes configured. Requires [member monitoring] to be set to [code]true[/code]."},{"name":"body_shape_entered","description":"Emitted when a [Shape3D] of the received [param body] enters a shape of this area. [param body] can be a [PhysicsBody3D] or a [GridMap]. [GridMap]s are detected if their [MeshLibrary] has collision shapes configured. Requires [member monitoring] to be set to [code]true[/code].\n\t\t\t\t[param local_shape_index] and [param body_shape_index] contain indices of the interacting shapes from this area and the interacting body, respectively. [param body_rid] contains the [RID] of the body. These values can be used with the [PhysicsServer3D].\n\t\t\t\t[b]Example:[/b] Get the [CollisionShape3D] node from the shape index:\n\t\t\t\t[codeblocks]\n\t\t\t\t[gdscript]\n\t\t\t\tvar body_shape_owner = body.shape_find_owner(body_shape_index)\n\t\t\t\tvar body_shape_node = body.shape_owner_get_owner(body_shape_owner)\n\n\t\t\t\tvar local_shape_owner = shape_find_owner(local_shape_index)\n\t\t\t\tvar local_shape_node = shape_owner_get_owner(local_shape_owner)\n\t\t\t\t[/gdscript]\n\t\t\t\t[/codeblocks]"},{"name":"body_shape_exited","description":"Emitted when a [Shape3D] of the received [param body] exits a shape of this area. [param body] can be a [PhysicsBody3D] or a [GridMap]. [GridMap]s are detected if their [MeshLibrary] has collision shapes configured. Requires [member monitoring] to be set to [code]true[/code].\n\t\t\t\tSee also [signal body_shape_entered]."}]},"Array":{"name":"Array","description":"A built-in data structure that holds a sequence of elements.","inherits":"","properties":[],"methods":[{"name":"all","signature":"all(method: Callable) -> bool","description":"Calls the given  on each element in the array and returns true if the  returns true for all elements in the array. If the  returns false for one array element or more, this method returns false.\n\t\t\t\tThe [param method] should take one  parameter (the current array element) and return a .\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tfunc greater_than_5(number):\n\t\t\t\t    return number &gt; 5\n\n\t\t\t\tfunc _ready():\n\t\t\t\t    print([6, 10, 6].all(greater_than_5)) # Prints true (3/3 elements evaluate to true).\n\t\t\t\t    print([4, 10, 4].all(greater_than_5)) # Prints false (1/3 elements evaluate to true).\n\t\t\t\t    print([4, 4, 4].all(greater_than_5))  # Prints false (0/3 elements evaluate to true).\n\t\t\t\t    print([].all(greater_than_5))         # Prints true (0/0 elements evaluate to true).\n\n\t\t\t\t    # Same as the first line above, but using a lambda function.\n\t\t\t\t    print([6, 10, 6].all(func(element): return element &gt; 5)) # Prints true\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tprivate static bool GreaterThan5(int number)\n\t\t\t\t{\n\t\t\t\t    return number &gt; 5;\n\t\t\t\t}\n\n\t\t\t\tpublic override void _Ready()\n\t\t\t\t{\n\t\t\t\t    // Prints True (3/3 elements evaluate to true).\n\t\t\t\t    GD.Print(new Godot.Collections.Array&gt;int&lt; { 6, 10, 6 }.All(GreaterThan5));\n\t\t\t\t    // Prints False (1/3 elements evaluate to true).\n\t\t\t\t    GD.Print(new Godot.Collections.Array&gt;int&lt; { 4, 10, 4 }.All(GreaterThan5));\n\t\t\t\t    // Prints False (0/3 elements evaluate to true).\n\t\t\t\t    GD.Print(new Godot.Collections.Array&gt;int&lt; { 4, 4, 4 }.All(GreaterThan5));\n\t\t\t\t    // Prints True (0/0 elements evaluate to true).\n\t\t\t\t    GD.Print(new Godot.Collections.Array&gt;int&lt; { }.All(GreaterThan5));\n\n\t\t\t\t    // Same as the first line above, but using a lambda function.\n\t\t\t\t    GD.Print(new Godot.Collections.Array&gt;int&lt; { 6, 10, 6 }.All(element =&gt; element &gt; 5)); // Prints True\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tSee also [method any], [method filter], [method map] and [method reduce].\n\t\t\t\tNote: Unlike relying on the size of an array returned by [method filter], this method will return as early as possible to improve performance (especially with large arrays).\n\t\t\t\tNote: For an empty array, this method [url=https://en.wikipedia.org/wiki/Vacuous_truth]always returns true.","returnType":"bool"},{"name":"any","signature":"any(method: Callable) -> bool","description":"Calls the given  on each element in the array and returns true if the  returns true for one or more elements in the array. If the  returns false for all elements in the array, this method returns false.\n\t\t\t\tThe [param method] should take one  parameter (the current array element) and return a .\n\t\t\t\t\n\t\t\t\tfunc greater_than_5(number):\n\t\t\t\t    return number &gt; 5\n\n\t\t\t\tfunc _ready():\n\t\t\t\t    print([6, 10, 6].any(greater_than_5)) # Prints true (3 elements evaluate to true).\n\t\t\t\t    print([4, 10, 4].any(greater_than_5)) # Prints true (1 elements evaluate to true).\n\t\t\t\t    print([4, 4, 4].any(greater_than_5))  # Prints false (0 elements evaluate to true).\n\t\t\t\t    print([].any(greater_than_5))         # Prints false (0 elements evaluate to true).\n\n\t\t\t\t    # Same as the first line above, but using a lambda function.\n\t\t\t\t    print([6, 10, 6].any(func(number): return number &gt; 5)) # Prints true\n\t\t\t\t\n\t\t\t\tSee also [method all], [method filter], [method map] and [method reduce].\n\t\t\t\tNote: Unlike relying on the size of an array returned by [method filter], this method will return as early as possible to improve performance (especially with large arrays).\n\t\t\t\tNote: For an empty array, this method always returns false.","returnType":"bool"},{"name":"append","signature":"append(value: Variant) -> void","description":"Appends [param value] at the end of the array (alias of [method push_back]).","returnType":"void"},{"name":"append_array","signature":"append_array(array: Array) -> void","description":"Appends another [param array] at the end of this array.\n\t\t\t\t\n\t\t\t\tvar numbers = [1, 2, 3]\n\t\t\t\tvar extra = [4, 5, 6]\n\t\t\t\tnumbers.append_array(extra)\n\t\t\t\tprint(numbers) # Prints [1, 2, 3, 4, 5, 6]\n\t\t\t\t","returnType":"void"},{"name":"assign","signature":"assign(array: Array) -> void","description":"Assigns elements of another [param array] into the array. Resizes the array to match [param array]. Performs type conversions if the array is typed.","returnType":"void"},{"name":"back","signature":"back() -> Variant","description":"Returns the last element of the array. If the array is empty, fails and returns null. See also [method front].\n\t\t\t\tNote: Unlike with the [] operator (array[-1]), an error is generated without stopping project execution.","returnType":"Variant"},{"name":"bsearch","signature":"bsearch(value: Variant, before: bool) -> int","description":"Returns the index of [param value] in the sorted array. If it cannot be found, returns where [param value] should be inserted to keep the array sorted. The algorithm used is [url=https://en.wikipedia.org/wiki/Binary_search_algorithm]binary search.\n\t\t\t\tIf [param before] is true (as by default), the returned index comes before all existing elements equal to [param value] in the array.\n\t\t\t\t\n\t\t\t\tvar numbers = [2, 4, 8, 10]\n\t\t\t\tvar idx = numbers.bsearch(7)\n\n\t\t\t\tnumbers.insert(idx, 7)\n\t\t\t\tprint(numbers) # Prints [2, 4, 7, 8, 10]\n\n\t\t\t\tvar fruits = [\"Apple\", \"Lemon\", \"Lemon\", \"Orange\"]\n\t\t\t\tprint(fruits.bsearch(\"Lemon\", true))  # Prints 1, points at the first \"Lemon\".\n\t\t\t\tprint(fruits.bsearch(\"Lemon\", false)) # Prints 3, points at \"Orange\".\n\t\t\t\t\n\t\t\t\tNote: Calling [method bsearch] on an unsorted array will result in unexpected behavior. Use [method sort] before calling this method.","returnType":"int"},{"name":"bsearch_custom","signature":"bsearch_custom(value: Variant, func: Callable, before: bool) -> int","description":"Returns the index of [param value] in the sorted array. If it cannot be found, returns where [param value] should be inserted to keep the array sorted (using [param func] for the comparisons). The algorithm used is [url=https://en.wikipedia.org/wiki/Binary_search_algorithm]binary search.\n\t\t\t\tSimilar to [method sort_custom], [param func] is called as many times as necessary, receiving one array element and [param value] as arguments. The function should return true if the array element should be behind [param value], otherwise it should return false.\n\t\t\t\tIf [param before] is true (as by default), the returned index comes before all existing elements equal to [param value] in the array.\n\t\t\t\t\n\t\t\t\tfunc sort_by_amount(a, b):\n\t\t\t\t    if a &lt; b:\n\t\t\t\t        return true\n\t\t\t\t    return false\n\n\t\t\t\tfunc _ready():\n\t\t\t\t    var my_items = [[\"Tomato\", 2], [\"Kiwi\", 5], [\"Rice\", 9]]\n\n\t\t\t\t    var apple = [\"Apple\", 5]\n\t\t\t\t    # \"Apple\" is inserted before \"Kiwi\".\n\t\t\t\t    my_items.insert(my_items.bsearch_custom(apple, sort_by_amount, true), apple)\n\n\t\t\t\t    var banana = [\"Banana\", 5]\n\t\t\t\t    # \"Banana\" is inserted after \"Kiwi\".\n\t\t\t\t    my_items.insert(my_items.bsearch_custom(banana, sort_by_amount, false), banana)\n\n\t\t\t\t    # Prints [[\"Tomato\", 2], [\"Apple\", 5], [\"Kiwi\", 5], [\"Banana\", 5], [\"Rice\", 9]]\n\t\t\t\t    print(my_items)\n\t\t\t\t\n\t\t\t\tNote: Calling [method bsearch_custom] on an unsorted array will result in unexpected behavior. Use [method sort_custom] with [param func] before calling this method.","returnType":"int"},{"name":"clear","signature":"clear() -> void","description":"Removes all elements from the array. This is equivalent to using [method resize] with a size of 0.","returnType":"void"},{"name":"count","signature":"count(value: Variant) -> int","description":"Returns the number of times an element is in the array.\n\t\t\t\tTo count how many elements in an array satisfy a condition, see [method reduce].","returnType":"int"},{"name":"duplicate","signature":"duplicate(deep: bool) -> Array","description":"Returns a new copy of the array.\n\t\t\t\tBy default, a shallow copy is returned: all nested  and  elements are shared with the original array. Modifying them in one array will also affect them in the other.If [param deep] is true, a deep copy is returned: all nested arrays and dictionaries are also duplicated (recursively).","returnType":"Array"},{"name":"erase","signature":"erase(value: Variant) -> void","description":"Finds and removes the first occurrence of [param value] from the array. If [param value] does not exist in the array, nothing happens. To remove an element by index, use [method remove_at] instead.\n\t\t\t\tNote: This method shifts every element's index after the removed [param value] back, which may have a noticeable performance cost, especially on larger arrays.\n\t\t\t\tNote: Erasing elements while iterating over arrays is not supported and will result in unpredictable behavior.","returnType":"void"},{"name":"fill","signature":"fill(value: Variant) -> void","description":"Assigns the given [param value] to all elements in the array.\n\t\t\t\tThis method can often be combined with [method resize] to create an array with a given size and initialized elements:\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tvar array = []\n\t\t\t\tarray.resize(5)\n\t\t\t\tarray.fill(2)\n\t\t\t\tprint(array) # Prints [2, 2, 2, 2, 2]\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tGodot.Collections.Array array = [];\n\t\t\t\tarray.Resize(5);\n\t\t\t\tarray.Fill(2);\n\t\t\t\tGD.Print(array); // Prints [2, 2, 2, 2, 2]\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tNote: If [param value] is a  passed by reference (-derived, , , etc.), the array will be filled with references to the same [param value], which are not duplicates.","returnType":"void"},{"name":"filter","signature":"filter(method: Callable) -> Array","description":"Calls the given  on each element in the array and returns a new, filtered .\n\t\t\t\tThe [param method] receives one of the array elements as an argument, and should return true to add the element to the filtered array, or false to exclude it.\n\t\t\t\t\n\t\t\t\tfunc is_even(number):\n\t\t\t\t    return number % 2 == 0\n\n\t\t\t\tfunc _ready():\n\t\t\t\t    print([1, 4, 5, 8].filter(is_even)) # Prints [4, 8]\n\n\t\t\t\t    # Same as above, but using a lambda function.\n\t\t\t\t    print([1, 4, 5, 8].filter(func(number): return number % 2 == 0))\n\t\t\t\t\n\t\t\t\tSee also [method any], [method all], [method map] and [method reduce].","returnType":"Array"},{"name":"find","signature":"find(what: Variant, from: int) -> int","description":"Returns the index of the first occurrence of [param what] in this array, or -1 if there are none. The search's start can be specified with [param from], continuing to the end of the array.\n\t\t\t\tNote: If you just want to know whether the array contains [param what], use [method has] (Contains in C#). In GDScript, you may also use the in operator.\n\t\t\t\tNote: For performance reasons, the search is affected by [param what]'s [enum Variant.Type]. For example, 7 () and 7.0 () are not considered equal for this method.","returnType":"int"},{"name":"find_custom","signature":"find_custom(method: Callable, from: int) -> int","description":"Returns the index of the first element in the array that causes [param method] to return true, or -1 if there are none. The search's start can be specified with [param from], continuing to the end of the array.\n\t\t\t\t[param method] is a callable that takes an element of the array, and returns a .\n\t\t\t\tNote: If you just want to know whether the array contains anything that satisfies [param method], use [method any].\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tfunc is_even(number):\n\t\t\t\t    return number % 2 == 0\n\n\t\t\t\tfunc _ready():\n\t\t\t\t    print([1, 3, 4, 7].find_custom(is_even.bind())) # Prints 2\n\t\t\t\t\n\t\t\t\t","returnType":"int"},{"name":"front","signature":"front() -> Variant","description":"Returns the first element of the array. If the array is empty, fails and returns null. See also [method back].\n\t\t\t\tNote: Unlike with the [] operator (array), an error is generated without stopping project execution.","returnType":"Variant"},{"name":"get","signature":"get(index: int) -> Variant","description":"Returns the element at the given [param index] in the array. This is the same as using the [] operator (array).","returnType":"Variant"},{"name":"get_typed_builtin","signature":"get_typed_builtin() -> int","description":"Returns the built-in  type of the typed array as a [enum Variant.Type] constant. If the array is not typed, returns [constant TYPE_NIL]. See also [method is_typed].","returnType":"int"},{"name":"get_typed_class_name","signature":"get_typed_class_name() -> StringName","description":"Returns the built-in class name of the typed array, if the built-in  type [constant TYPE_OBJECT]. Otherwise, returns an empty . See also [method is_typed] and [method Object.get_class].","returnType":"StringName"},{"name":"get_typed_script","signature":"get_typed_script() -> Variant","description":"Returns the  instance associated with this typed array, or null if it does not exist. See also [method is_typed].","returnType":"Variant"},{"name":"has","signature":"has(value: Variant) -> bool","description":"Returns true if the array contains the given [param value].\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tprint([\"inside\", 7].has(\"inside\"))  # Prints true\n\t\t\t\tprint([\"inside\", 7].has(\"outside\")) # Prints false\n\t\t\t\tprint([\"inside\", 7].has(7))         # Prints true\n\t\t\t\tprint([\"inside\", 7].has(\"7\"))       # Prints false\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tGodot.Collections.Array arr = [\"inside\", 7];\n\t\t\t\t// By C# convention, this method is renamed to `Contains`.\n\t\t\t\tGD.Print(arr.Contains(\"inside\"));  // Prints True\n\t\t\t\tGD.Print(arr.Contains(\"outside\")); // Prints False\n\t\t\t\tGD.Print(arr.Contains(7));         // Prints True\n\t\t\t\tGD.Print(arr.Contains(\"7\"));       // Prints False\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tIn GDScript, this is equivalent to the in operator:\n\t\t\t\t\n\t\t\t\tif 4 in [2, 4, 6, 8]:\n\t\t\t\t    print(\"4 is here!\") # Will be printed.\n\t\t\t\t\n\t\t\t\tNote: For performance reasons, the search is affected by the [param value]'s [enum Variant.Type]. For example, 7 () and 7.0 () are not considered equal for this method.","returnType":"bool"},{"name":"hash","signature":"hash() -> int","description":"Returns a hashed 32-bit integer value representing the array and its contents.\n\t\t\t\tNote: Arrays with equal hash values are not guaranteed to be the same, as a result of hash collisions. On the countrary, arrays with different hash values are guaranteed to be different.","returnType":"int"},{"name":"insert","signature":"insert(position: int, value: Variant) -> int","description":"Inserts a new element ([param value]) at a given index ([param position]) in the array. [param position] should be between 0 and the array's [method size].\n\t\t\t\tReturns [constant OK] on success, or one of the other [enum Error] constants if this method fails.\n\t\t\t\tNote: Every element's index after [param position] needs to be shifted forward, which may have a noticeable performance cost, especially on larger arrays.","returnType":"int"},{"name":"is_empty","signature":"is_empty() -> bool","description":"Returns true if the array is empty ([]). See also [method size].","returnType":"bool"},{"name":"is_read_only","signature":"is_read_only() -> bool","description":"Returns true if the array is read-only. See [method make_read_only].\n\t\t\t\tIn GDScript, arrays are automatically read-only if declared with the const keyword.","returnType":"bool"},{"name":"is_same_typed","signature":"is_same_typed(array: Array) -> bool","description":"Returns true if this array is typed the same as the given [param array]. See also [method is_typed].","returnType":"bool"},{"name":"is_typed","signature":"is_typed() -> bool","description":"Returns true if the array is typed. Typed arrays can only contain elements of a specific type, as defined by the typed array constructor. The methods of a typed array are still expected to return a generic .\n\t\t\t\tIn GDScript, it is possible to define a typed array with static typing:\n\t\t\t\t\n\t\t\t\tvar numbers: Array = [0.2, 4.2, -2.0]\n\t\t\t\tprint(numbers.is_typed()) # Prints true\n\t\t\t\t","returnType":"bool"},{"name":"make_read_only","signature":"make_read_only() -> void","description":"Makes the array read-only. The array's elements cannot be overridden with different values, and their order cannot change. Does not apply to nested elements, such as dictionaries.\n\t\t\t\tIn GDScript, arrays are automatically read-only if declared with the const keyword.","returnType":"void"},{"name":"map","signature":"map(method: Callable) -> Array","description":"Calls the given  for each element in the array and returns a new array filled with values returned by the [param method].\n\t\t\t\tThe [param method] should take one  parameter (the current array element) and can return any .\n\t\t\t\t\n\t\t\t\tfunc double(number):\n\t\t\t\t    return number * 2\n\n\t\t\t\tfunc _ready():\n\t\t\t\t    print([1, 2, 3].map(double)) # Prints [2, 4, 6]\n\n\t\t\t\t    # Same as above, but using a lambda function.\n\t\t\t\t    print([1, 2, 3].map(func(element): return element * 2))\n\t\t\t\t\n\t\t\t\tSee also [method filter], [method reduce], [method any] and [method all].","returnType":"Array"},{"name":"max","signature":"max() -> Variant","description":"Returns the maximum value contained in the array, if all elements can be compared. Otherwise, returns null. See also [method min].\n\t\t\t\tTo find the maximum value using a custom comparator, you can use [method reduce].","returnType":"Variant"},{"name":"min","signature":"min() -> Variant","description":"Returns the minimum value contained in the array, if all elements can be compared. Otherwise, returns null. See also [method max].","returnType":"Variant"},{"name":"pick_random","signature":"pick_random() -> Variant","description":"Returns a random element from the array. Generates an error and returns null if the array is empty.\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t# May print 1, 2, 3.25, or \"Hi\".\n\t\t\t\tprint([1, 2, 3.25, \"Hi\"].pick_random())\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tGodot.Collections.Array array = [1, 2, 3.25f, \"Hi\"];\n\t\t\t\tGD.Print(array.PickRandom()); // May print 1, 2, 3.25, or \"Hi\".\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tNote: Like many similar functions in the engine (such as [method @GlobalScope.randi] or [method shuffle]), this method uses a common, global random seed. To get a predictable outcome from this method, see [method @GlobalScope.seed].","returnType":"Variant"},{"name":"pop_at","signature":"pop_at(position: int) -> Variant","description":"Removes and returns the element of the array at index [param position]. If negative, [param position] is considered relative to the end of the array. Returns null if the array is empty. If [param position] is out of bounds, an error message is also generated.\n\t\t\t\tNote: This method shifts every element's index after [param position] back, which may have a noticeable performance cost, especially on larger arrays.","returnType":"Variant"},{"name":"pop_back","signature":"pop_back() -> Variant","description":"Removes and returns the last element of the array. Returns null if the array is empty, without generating an error. See also [method pop_front].","returnType":"Variant"},{"name":"pop_front","signature":"pop_front() -> Variant","description":"Removes and returns the first element of the array. Returns null if the array is empty, without generating an error. See also [method pop_back].\n\t\t\t\tNote: This method shifts every other element's index back, which may have a noticeable performance cost, especially on larger arrays.","returnType":"Variant"},{"name":"push_back","signature":"push_back(value: Variant) -> void","description":"Appends an element at the end of the array. See also [method push_front].","returnType":"void"},{"name":"push_front","signature":"push_front(value: Variant) -> void","description":"Adds an element at the beginning of the array. See also [method push_back].\n\t\t\t\tNote: This method shifts every other element's index forward, which may have a noticeable performance cost, especially on larger arrays.","returnType":"void"},{"name":"reduce","signature":"reduce(method: Callable, accum: Variant) -> Variant","description":"Calls the given  for each element in array, accumulates the result in [param accum], then returns it.\n\t\t\t\tThe [param method] takes two arguments: the current value of [param accum] and the current array element. If [param accum] is null (as by default), the iteration will start from the second element, with the first one used as initial value of [param accum].\n\t\t\t\t\n\t\t\t\tfunc sum(accum, number):\n\t\t\t\t    return accum + number\n\n\t\t\t\tfunc _ready():\n\t\t\t\t    print([1, 2, 3].reduce(sum, 0))  # Prints 6\n\t\t\t\t    print([1, 2, 3].reduce(sum, 10)) # Prints 16\n\n\t\t\t\t    # Same as above, but using a lambda function.\n\t\t\t\t    print([1, 2, 3].reduce(func(accum, number): return accum + number, 10))\n\t\t\t\t\n\t\t\t\tIf [method max] is not desirable, this method may also be used to implement a custom comparator:\n\t\t\t\t\n\t\t\t\tfunc _ready():\n\t\t\t\t    var arr = [Vector2i(5, 0), Vector2i(3, 4), Vector2i(1, 2)]\n\n\t\t\t\t    var longest_vec = arr.reduce(func(max, vec): return vec if is_length_greater(vec, max) else max)\n\t\t\t\t    print(longest_vec) # Prints (3, 4)\n\n\t\t\t\tfunc is_length_greater(a, b):\n\t\t\t\t    return a.length() &gt; b.length()\n\t\t\t\t\n\t\t\t\tThis method can also be used to count how many elements in an array satisfy a certain condition, similar to [method count]:\n\t\t\t\t\n\t\t\t\tfunc is_even(number):\n\t\t\t\t    return number % 2 == 0\n\n\t\t\t\tfunc _ready():\n\t\t\t\t    var arr = [1, 2, 3, 4, 5]\n\t\t\t\t    # If the current element is even, increment count, otherwise leave count the same.\n\t\t\t\t    var even_count = arr.reduce(func(count, next): return count + 1 if is_even(next) else count, 0)\n\t\t\t\t    print(even_count) # Prints 2\n\t\t\t\t\n\t\t\t\tSee also [method map], [method filter], [method any], and [method all].","returnType":"Variant"},{"name":"remove_at","signature":"remove_at(position: int) -> void","description":"Removes the element from the array at the given index ([param position]). If the index is out of bounds, this method fails.\n\t\t\t\tIf you need to return the removed element, use [method pop_at]. To remove an element by value, use [method erase] instead.\n\t\t\t\tNote: This method shifts every element's index after [param position] back, which may have a noticeable performance cost, especially on larger arrays.\n\t\t\t\tNote: The [param position] cannot be negative. To remove an element relative to the end of the array, use arr.remove_at(arr.size() - (i + 1)). To remove the last element from the array, use arr.resize(arr.size() - 1).","returnType":"void"},{"name":"resize","signature":"resize(size: int) -> int","description":"Sets the array's number of elements to [param size]. If [param size] is smaller than the array's current size, the elements at the end are removed. If [param size] is greater, new default elements (usually null) are added, depending on the array's type.\n\t\t\t\tReturns [constant OK] on success, or one of the other [enum Error] constants if this method fails.\n\t\t\t\tNote: Calling this method once and assigning the new values is faster than calling [method append] for every new element.","returnType":"int"},{"name":"reverse","signature":"reverse() -> void","description":"Reverses the order of all elements in the array.","returnType":"void"},{"name":"rfind","signature":"rfind(what: Variant, from: int) -> int","description":"Returns the index of the last occurrence of [param what] in this array, or -1 if there are none. The search's start can be specified with [param from], continuing to the beginning of the array. This method is the reverse of [method find].","returnType":"int"},{"name":"rfind_custom","signature":"rfind_custom(method: Callable, from: int) -> int","description":"Returns the index of the last element of the array that causes [param method] to return true, or -1 if there are none. The search's start can be specified with [param from], continuing to the beginning of the array. This method is the reverse of [method find_custom].","returnType":"int"},{"name":"set","signature":"set(index: int, value: Variant) -> void","description":"Sets the value of the element at the given [param index] to the given [param value]. This will not change the size of the array, it only changes the value at an index already in the array. This is the same as using the [] operator (array = value).","returnType":"void"},{"name":"shuffle","signature":"shuffle() -> void","description":"Shuffles all elements of the array in a random order.\n\t\t\t\tNote: Like many similar functions in the engine (such as [method @GlobalScope.randi] or [method pick_random]), this method uses a common, global random seed. To get a predictable outcome from this method, see [method @GlobalScope.seed].","returnType":"void"},{"name":"size","signature":"size() -> int","description":"Returns the number of elements in the array. Empty arrays ([]) always return 0. See also [method is_empty].","returnType":"int"},{"name":"slice","signature":"slice(begin: int, end: int, step: int, deep: bool) -> Array","description":"Returns a new  containing this array's elements, from index [param begin] (inclusive) to [param end] (exclusive), every [param step] elements.\n\t\t\t\tIf either [param begin] or [param end] are negative, their value is relative to the end of the array.\n\t\t\t\tIf [param step] is negative, this method iterates through the array in reverse, returning a slice ordered backwards. For this to work, [param begin] must be greater than [param end].\n\t\t\t\tIf [param deep] is true, all nested  and  elements in the slice are duplicated from the original, recursively. See also [method duplicate]).\n\t\t\t\t\n\t\t\t\tvar letters = [\"A\", \"B\", \"C\", \"D\", \"E\", \"F\"]\n\n\t\t\t\tprint(letters.slice(0, 2))  # Prints [\"A\", \"B\"]\n\t\t\t\tprint(letters.slice(2, -2)) # Prints [\"C\", \"D\"]\n\t\t\t\tprint(letters.slice(-2, 6)) # Prints [\"E\", \"F\"]\n\n\t\t\t\tprint(letters.slice(0, 6, 2))  # Prints [\"A\", \"C\", \"E\"]\n\t\t\t\tprint(letters.slice(4, 1, -1)) # Prints [\"E\", \"D\", \"C\"]\n\t\t\t\t","returnType":"Array"},{"name":"sort","signature":"sort() -> void","description":"Sorts the array in ascending order. The final order is dependent on the \"less than\" (&lt;) comparison between elements.\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tvar numbers = [10, 5, 2.5, 8]\n\t\t\t\tnumbers.sort()\n\t\t\t\tprint(numbers) # Prints [2.5, 5, 8, 10]\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tGodot.Collections.Array numbers = [10, 5, 2.5, 8];\n\t\t\t\tnumbers.Sort();\n\t\t\t\tGD.Print(numbers); // Prints [2.5, 5, 8, 10]\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tNote: The sorting algorithm used is not [url=https://en.wikipedia.org/wiki/Sorting_algorithm#Stability]stable. This means that equivalent elements (such as 2 and 2.0) may have their order changed when calling [method sort].","returnType":"void"},{"name":"sort_custom","signature":"sort_custom(func: Callable) -> void","description":"Sorts the array using a custom .\n\t\t\t\t[param func] is called as many times as necessary, receiving two array elements as arguments. The function should return true if the first element should be moved before the second one, otherwise it should return false.\n\t\t\t\t\n\t\t\t\tfunc sort_ascending(a, b):\n\t\t\t\t    if a &lt; b:\n\t\t\t\t        return true\n\t\t\t\t    return false\n\n\t\t\t\tfunc _ready():\n\t\t\t\t    var my_items = [[\"Tomato\", 5], [\"Apple\", 9], [\"Rice\", 4]]\n\t\t\t\t    my_items.sort_custom(sort_ascending)\n\t\t\t\t    print(my_items) # Prints [[\"Rice\", 4], [\"Tomato\", 5], [\"Apple\", 9]]\n\n\t\t\t\t    # Sort descending, using a lambda function.\n\t\t\t\t    my_items.sort_custom(func(a, b): return a &gt; b)\n\t\t\t\t    print(my_items) # Prints [[\"Apple\", 9], [\"Tomato\", 5], [\"Rice\", 4]]\n\t\t\t\t\n\t\t\t\tIt may also be necessary to use this method to sort strings by natural order, with [method String.naturalnocasecmp_to], as in the following example:\n\t\t\t\t\n\t\t\t\tvar files = [\"newfile1\", \"newfile2\", \"newfile10\", \"newfile11\"]\n\t\t\t\tfiles.sort_custom(func(a, b): return a.naturalnocasecmp_to(b) &lt; 0)\n\t\t\t\tprint(files) # Prints [\"newfile1\", \"newfile2\", \"newfile10\", \"newfile11\"]\n\t\t\t\t\n\t\t\t\tNote: In C#, this method is not supported.\n\t\t\t\tNote: The sorting algorithm used is not [url=https://en.wikipedia.org/wiki/Sorting_algorithm#Stability]stable. This means that values considered equal may have their order changed when calling this method.\n\t\t\t\tNote: You should not randomize the return value of [param func], as the heapsort algorithm expects a consistent result. Randomizing the return value will result in unexpected behavior.","returnType":"void"}],"signals":[]},"ArrayMesh":{"name":"ArrayMesh","description":" type that provides utility for constructing a surface from arrays.","inherits":"Mesh","properties":[{"name":"blend_shape_mode","type":"int","description":"Sets the blend shape mode to one of [enum Mesh.BlendShapeMode]."},{"name":"custom_aabb","type":"AABB","description":"Overrides the [AABB] with one defined by user for use with frustum culling. Especially useful to avoid unexpected culling when using a shader to offset vertices."},{"name":"shadow_mesh","type":"ArrayMesh","description":"An optional mesh which can be used for rendering shadows and the depth prepass. Can be used to increase performance by supplying a mesh with fused vertices and only vertex position data (without normals, UVs, colors, etc.).\n\t\t\t[b]Note:[/b] This mesh must have exactly the same vertex positions as the source mesh (including the source mesh's LODs, if present). If vertex positions differ, then the mesh will not draw correctly."}],"methods":[{"name":"add_blend_shape","signature":"add_blend_shape(name: StringName) -> void","description":"Adds name for a blend shape that will be added with [method add_surface_from_arrays]. Must be called before surface is added.","returnType":"void"},{"name":"add_surface_from_arrays","signature":"add_surface_from_arrays(primitive: int, arrays: Array, blend_shapes: Array[], lods: Dictionary, flags: int) -> void","description":"Creates a new surface. [method Mesh.get_surface_count] will become the surf_idx for this new surface.\n\t\t\t\tSurfaces are created to be rendered using a [param primitive], which may be any of the values defined in [enum Mesh.PrimitiveType].\n\t\t\t\tThe [param arrays] argument is an array of arrays. Each of the [constant Mesh.ARRAY_MAX] elements contains an array with some of the mesh data for this surface as described by the corresponding member of [enum Mesh.ArrayType] or null if it is not used by the surface. For example, arrays is the array of vertices. That first vertex sub-array is always required; the others are optional. Adding an index array puts this surface into \"index mode\" where the vertex and other arrays become the sources of data and the index array defines the vertex order. All sub-arrays must have the same length as the vertex array (or be an exact multiple of the vertex array's length, when multiple elements of a sub-array correspond to a single vertex) or be empty, except for [constant Mesh.ARRAY_INDEX] if it is used.\n\t\t\t\tThe [param blend_shapes] argument is an array of vertex data for each blend shape. Each element is an array of the same structure as [param arrays], but [constant Mesh.ARRAY_VERTEX], [constant Mesh.ARRAY_NORMAL], and [constant Mesh.ARRAY_TANGENT] are set if and only if they are set in [param arrays] and all other entries are null.\n\t\t\t\tThe [param lods] argument is a dictionary with  keys and  values. Each entry in the dictionary represents an LOD level of the surface, where the value is the [constant Mesh.ARRAY_INDEX] array to use for the LOD level and the key is roughly proportional to the distance at which the LOD stats being used. I.e., increasing the key of an LOD also increases the distance that the objects has to be from the camera before the LOD is used.\n\t\t\t\tThe [param flags] argument is the bitwise OR of, as required: One value of [enum Mesh.ArrayCustomFormat] left shifted by ARRAY_FORMAT_CUSTOMn_SHIFT for each custom channel in use, [constant Mesh.ARRAY_FLAG_USE_DYNAMIC_UPDATE], [constant Mesh.ARRAY_FLAG_USE_8_BONE_WEIGHTS], or [constant Mesh.ARRAY_FLAG_USES_EMPTY_VERTEX_ARRAY].\n\t\t\t\tNote: When using indices, it is recommended to only use points, lines, or triangles.","returnType":"void"},{"name":"clear_blend_shapes","signature":"clear_blend_shapes() -> void","description":"Removes all blend shapes from this .","returnType":"void"},{"name":"clear_surfaces","signature":"clear_surfaces() -> void","description":"Removes all surfaces from this .","returnType":"void"},{"name":"get_blend_shape_count","signature":"get_blend_shape_count() -> int","description":"Returns the number of blend shapes that the  holds.","returnType":"int"},{"name":"get_blend_shape_name","signature":"get_blend_shape_name(index: int) -> StringName","description":"Returns the name of the blend shape at this index.","returnType":"StringName"},{"name":"lightmap_unwrap","signature":"lightmap_unwrap(transform: Transform3D, texel_size: float) -> int","description":"Performs a UV unwrap on the  to prepare the mesh for lightmapping.","returnType":"int"},{"name":"regen_normal_maps","signature":"regen_normal_maps() -> void","description":"Regenerates tangents for each of the 's surfaces.","returnType":"void"},{"name":"set_blend_shape_name","signature":"set_blend_shape_name(index: int, name: StringName) -> void","description":"Sets the name of the blend shape at this index.","returnType":"void"},{"name":"surface_find_by_name","signature":"surface_find_by_name(name: String) -> int","description":"Returns the index of the first surface with this name held within this . If none are found, -1 is returned.","returnType":"int"},{"name":"surface_get_array_index_len","signature":"surface_get_array_index_len(surf_idx: int) -> int","description":"Returns the length in indices of the index array in the requested surface (see [method add_surface_from_arrays]).","returnType":"int"},{"name":"surface_get_array_len","signature":"surface_get_array_len(surf_idx: int) -> int","description":"Returns the length in vertices of the vertex array in the requested surface (see [method add_surface_from_arrays]).","returnType":"int"},{"name":"surface_get_format","signature":"surface_get_format(surf_idx: int) -> int","description":"Returns the format mask of the requested surface (see [method add_surface_from_arrays]).","returnType":"int"},{"name":"surface_get_name","signature":"surface_get_name(surf_idx: int) -> String","description":"Gets the name assigned to this surface.","returnType":"String"},{"name":"surface_get_primitive_type","signature":"surface_get_primitive_type(surf_idx: int) -> int","description":"Returns the primitive type of the requested surface (see [method add_surface_from_arrays]).","returnType":"int"},{"name":"surface_remove","signature":"surface_remove(surf_idx: int) -> void","description":"Removes the surface at the given index from the Mesh, shifting surfaces with higher index down by one.","returnType":"void"},{"name":"surface_set_name","signature":"surface_set_name(surf_idx: int, name: String) -> void","description":"Sets a name for a given surface.","returnType":"void"},{"name":"surface_update_attribute_region","signature":"surface_update_attribute_region(surf_idx: int, offset: int, data: PackedByteArray) -> void","description":"","returnType":"void"},{"name":"surface_update_skin_region","signature":"surface_update_skin_region(surf_idx: int, offset: int, data: PackedByteArray) -> void","description":"","returnType":"void"},{"name":"surface_update_vertex_region","signature":"surface_update_vertex_region(surf_idx: int, offset: int, data: PackedByteArray) -> void","description":"","returnType":"void"}],"signals":[]},"ArrayOccluder3D":{"name":"ArrayOccluder3D","description":"3D polygon shape for use with occlusion culling in .","inherits":"Occluder3D","properties":[{"name":"indices","type":"PackedInt32Array","description":"The occluder's index position. Indices determine which points from the [member vertices] array should be drawn, and in which order.\n\t\t\t[b]Note:[/b] The occluder is always updated after setting this value. If creating occluders procedurally, consider using [method set_arrays] instead to avoid updating the occluder twice when it's created."},{"name":"vertices","type":"PackedVector3Array","description":"The occluder's vertex positions in local 3D coordinates.\n\t\t\t[b]Note:[/b] The occluder is always updated after setting this value. If creating occluders procedurally, consider using [method set_arrays] instead to avoid updating the occluder twice when it's created."}],"methods":[{"name":"set_arrays","signature":"set_arrays(vertices: PackedVector3Array, indices: PackedInt32Array) -> void","description":"Sets [member indices] and [member vertices], while updating the final occluder only once after both values are set.","returnType":"void"}],"signals":[]},"AspectRatioContainer":{"name":"AspectRatioContainer","description":"A container that preserves the proportions of its child controls.","inherits":"Container","properties":[{"name":"alignment_horizontal","type":"int","description":"Specifies the horizontal relative position of child controls."},{"name":"alignment_vertical","type":"int","description":"Specifies the vertical relative position of child controls."},{"name":"ratio","type":"float","description":"The aspect ratio to enforce on child controls. This is the width divided by the height. The ratio depends on the [member stretch_mode]."},{"name":"stretch_mode","type":"int","description":"The stretch mode used to align child controls."}],"methods":[],"signals":[]},"AtlasTexture":{"name":"AtlasTexture","description":"A texture that crops out part of another Texture2D.","inherits":"Texture2D","properties":[{"name":"atlas","type":"Texture2D","description":"The texture that contains the atlas. Can be any type inheriting from [Texture2D], including another [AtlasTexture]."},{"name":"filter_clip","type":"bool","description":"If [code]true[/code], the area outside of the [member region] is clipped to avoid bleeding of the surrounding texture pixels."},{"name":"margin","type":"Rect2","description":"The margin around the [member region]. Useful for small adjustments. If the [member Rect2.size] of this property (\"w\" and \"h\" in the editor) is set, the drawn texture is resized to fit within the margin."},{"name":"region","type":"Rect2","description":"The region used to draw the [member atlas]. If either dimension of the region's size is [code]0[/code], the value from [member atlas] size will be used for that axis instead."}],"methods":[],"signals":[]},"AudioBusLayout":{"name":"AudioBusLayout","description":"Stores information about the audio buses.","inherits":"Resource","properties":[],"methods":[],"signals":[]},"AudioEffect":{"name":"AudioEffect","description":"Base class for audio effect resources.","inherits":"Resource","properties":[],"methods":[{"name":"_instantiate","signature":"_instantiate() -> AudioEffectInstance","description":"Override this method to customize the  created when this effect is applied on a bus in the editor's Audio panel, or through [method AudioServer.add_bus_effect].\n\t\t\t\t\n\t\t\t\textends AudioEffect\n\n\t\t\t\t@export var strength = 4.0\n\n\t\t\t\tfunc _instantiate():\n\t\t\t\t    var effect = CustomAudioEffectInstance.new()\n\t\t\t\t    effect.base = self\n\n\t\t\t\t    return effect\n\t\t\t\t\n\t\t\t\tNote: It is recommended to keep a reference to the original  in the new instance. Depending on the implementation this allows the effect instance to listen for changes at run-time and be modified accordingly.","returnType":"AudioEffectInstance"}],"signals":[]},"AudioEffectAmplify":{"name":"AudioEffectAmplify","description":"Adds an amplifying audio effect to an audio bus.","inherits":"AudioEffect","properties":[{"name":"volume_db","type":"float","description":"Amount of amplification in decibels. Positive values make the sound louder, negative values make it quieter. Value can range from -80 to 24."},{"name":"volume_linear","type":"float","description":"Amount of amplification as a linear value.\n\t\t\t[b]Note:[/b] This member modifies [member volume_db] for convenience. The returned value is equivalent to the result of [method @GlobalScope.db_to_linear] on [member volume_db]. Setting this member is equivalent to setting [member volume_db] to the result of [method @GlobalScope.linear_to_db] on a value."}],"methods":[],"signals":[]},"AudioEffectBandLimitFilter":{"name":"AudioEffectBandLimitFilter","description":"Adds a band limit filter to the audio bus.","inherits":"AudioEffectFilter","properties":[],"methods":[],"signals":[]},"AudioEffectBandPassFilter":{"name":"AudioEffectBandPassFilter","description":"Adds a band pass filter to the audio bus.","inherits":"AudioEffectFilter","properties":[],"methods":[],"signals":[]},"AudioEffectCapture":{"name":"AudioEffectCapture","description":"Captures audio from an audio bus in real-time.","inherits":"AudioEffect","properties":[{"name":"buffer_length","type":"float","description":"Length of the internal ring buffer, in seconds. Setting the buffer length will have no effect if already initialized."}],"methods":[{"name":"can_get_buffer","signature":"can_get_buffer(frames: int) -> bool","description":"Returns true if at least [param frames] audio frames are available to read in the internal ring buffer.","returnType":"bool"},{"name":"clear_buffer","signature":"clear_buffer() -> void","description":"Clears the internal ring buffer.\n\t\t\t\tNote: Calling this during a capture can cause the loss of samples which causes popping in the playback.","returnType":"void"},{"name":"get_buffer","signature":"get_buffer(frames: int) -> PackedVector2Array","description":"Gets the next [param frames] audio samples from the internal ring buffer.\n\t\t\t\tReturns a  containing exactly [param frames] audio samples if available, or an empty  if insufficient data was available.\n\t\t\t\tThe samples are signed floating-point PCM between -1 and 1. You will have to scale them if you want to use them as 8 or 16-bit integer samples. (v = 0x7fff * samples.x)","returnType":"PackedVector2Array"},{"name":"get_buffer_length_frames","signature":"get_buffer_length_frames() -> int","description":"Returns the total size of the internal ring buffer in frames.","returnType":"int"},{"name":"get_discarded_frames","signature":"get_discarded_frames() -> int","description":"Returns the number of audio frames discarded from the audio bus due to full buffer.","returnType":"int"},{"name":"get_frames_available","signature":"get_frames_available() -> int","description":"Returns the number of frames available to read using [method get_buffer].","returnType":"int"},{"name":"get_pushed_frames","signature":"get_pushed_frames() -> int","description":"Returns the number of audio frames inserted from the audio bus.","returnType":"int"}],"signals":[]},"AudioEffectChorus":{"name":"AudioEffectChorus","description":"Adds a chorus audio effect.","inherits":"AudioEffect","properties":[{"name":"dry","type":"float","description":"The effect's raw signal."},{"name":"voice/1/cutoff_hz","type":"float","description":"The voice's cutoff frequency."},{"name":"voice/1/delay_ms","type":"float","description":"The voice's signal delay."},{"name":"voice/1/depth_ms","type":"float","description":"The voice filter's depth."},{"name":"voice/1/level_db","type":"float","description":"The voice's volume."},{"name":"voice/1/pan","type":"float","description":"The voice's pan level."},{"name":"voice/1/rate_hz","type":"float","description":"The voice's filter rate."},{"name":"voice/2/cutoff_hz","type":"float","description":"The voice's cutoff frequency."},{"name":"voice/2/delay_ms","type":"float","description":"The voice's signal delay."},{"name":"voice/2/depth_ms","type":"float","description":"The voice filter's depth."},{"name":"voice/2/level_db","type":"float","description":"The voice's volume."},{"name":"voice/2/pan","type":"float","description":"The voice's pan level."},{"name":"voice/2/rate_hz","type":"float","description":"The voice's filter rate."},{"name":"voice/3/cutoff_hz","type":"float","description":"The voice's cutoff frequency."},{"name":"voice/3/delay_ms","type":"float","description":"The voice's signal delay."},{"name":"voice/3/depth_ms","type":"float","description":"The voice filter's depth."},{"name":"voice/3/level_db","type":"float","description":"The voice's volume."},{"name":"voice/3/pan","type":"float","description":"The voice's pan level."},{"name":"voice/3/rate_hz","type":"float","description":"The voice's filter rate."},{"name":"voice/4/cutoff_hz","type":"float","description":"The voice's cutoff frequency."},{"name":"voice/4/delay_ms","type":"float","description":"The voice's signal delay."},{"name":"voice/4/depth_ms","type":"float","description":"The voice filter's depth."},{"name":"voice/4/level_db","type":"float","description":"The voice's volume."},{"name":"voice/4/pan","type":"float","description":"The voice's pan level."},{"name":"voice/4/rate_hz","type":"float","description":"The voice's filter rate."},{"name":"voice_count","type":"int","description":"The number of voices in the effect."},{"name":"wet","type":"float","description":"The effect's processed signal."}],"methods":[{"name":"get_voice_cutoff_hz","signature":"get_voice_cutoff_hz(voice_idx: int) -> float","description":"","returnType":"float"},{"name":"get_voice_delay_ms","signature":"get_voice_delay_ms(voice_idx: int) -> float","description":"","returnType":"float"},{"name":"get_voice_depth_ms","signature":"get_voice_depth_ms(voice_idx: int) -> float","description":"","returnType":"float"},{"name":"get_voice_level_db","signature":"get_voice_level_db(voice_idx: int) -> float","description":"","returnType":"float"},{"name":"get_voice_pan","signature":"get_voice_pan(voice_idx: int) -> float","description":"","returnType":"float"},{"name":"get_voice_rate_hz","signature":"get_voice_rate_hz(voice_idx: int) -> float","description":"","returnType":"float"},{"name":"set_voice_cutoff_hz","signature":"set_voice_cutoff_hz(voice_idx: int, cutoff_hz: float) -> void","description":"","returnType":"void"},{"name":"set_voice_delay_ms","signature":"set_voice_delay_ms(voice_idx: int, delay_ms: float) -> void","description":"","returnType":"void"},{"name":"set_voice_depth_ms","signature":"set_voice_depth_ms(voice_idx: int, depth_ms: float) -> void","description":"","returnType":"void"},{"name":"set_voice_level_db","signature":"set_voice_level_db(voice_idx: int, level_db: float) -> void","description":"","returnType":"void"},{"name":"set_voice_pan","signature":"set_voice_pan(voice_idx: int, pan: float) -> void","description":"","returnType":"void"},{"name":"set_voice_rate_hz","signature":"set_voice_rate_hz(voice_idx: int, rate_hz: float) -> void","description":"","returnType":"void"}],"signals":[]},"AudioEffectCompressor":{"name":"AudioEffectCompressor","description":"Adds a compressor audio effect to an audio bus.\n\t\tReduces sounds that exceed a certain threshold level, smooths out the dynamics and increases the overall volume.","inherits":"AudioEffect","properties":[{"name":"attack_us","type":"float","description":"Compressor's reaction time when the signal exceeds the threshold, in microseconds. Value can range from 20 to 2000."},{"name":"gain","type":"float","description":"Gain applied to the output signal."},{"name":"mix","type":"float","description":"Balance between original signal and effect signal. Value can range from 0 (totally dry) to 1 (totally wet)."},{"name":"ratio","type":"float","description":"Amount of compression applied to the audio once it passes the threshold level. The higher the ratio, the more the loud parts of the audio will be compressed. Value can range from 1 to 48."},{"name":"release_ms","type":"float","description":"Compressor's delay time to stop reducing the signal after the signal level falls below the threshold, in milliseconds. Value can range from 20 to 2000."},{"name":"sidechain","type":"StringName","description":"Reduce the sound level using another audio bus for threshold detection."},{"name":"threshold","type":"float","description":"The level above which compression is applied to the audio. Value can range from -60 to 0."}],"methods":[],"signals":[]},"AudioEffectDelay":{"name":"AudioEffectDelay","description":"Adds a delay audio effect to an audio bus. Plays input signal back after a period of time.\n\t\tTwo tap delay and feedback options.","inherits":"AudioEffect","properties":[{"name":"dry","type":"float","description":"Output percent of original sound. At 0, only delayed sounds are output. Value can range from 0 to 1."},{"name":"feedback_active","type":"bool","description":"If [code]true[/code], feedback is enabled."},{"name":"feedback_delay_ms","type":"float","description":"Feedback delay time in milliseconds."},{"name":"feedback_level_db","type":"float","description":"Sound level for feedback."},{"name":"feedback_lowpass","type":"float","description":"Low-pass filter for feedback, in Hz. Frequencies below this value are filtered out of the source signal."},{"name":"tap1_active","type":"bool","description":"If [code]true[/code], the first tap will be enabled."},{"name":"tap1_delay_ms","type":"float","description":"First tap delay time in milliseconds."},{"name":"tap1_level_db","type":"float","description":"Sound level for the first tap."},{"name":"tap1_pan","type":"float","description":"Pan position for the first tap. Value can range from -1 (fully left) to 1 (fully right)."},{"name":"tap2_active","type":"bool","description":"If [code]true[/code], the second tap will be enabled."},{"name":"tap2_delay_ms","type":"float","description":"Second tap delay time in milliseconds."},{"name":"tap2_level_db","type":"float","description":"Sound level for the second tap."},{"name":"tap2_pan","type":"float","description":"Pan position for the second tap. Value can range from -1 (fully left) to 1 (fully right)."}],"methods":[],"signals":[]},"AudioEffectDistortion":{"name":"AudioEffectDistortion","description":"Adds a distortion audio effect to an Audio bus.\n\t\tModifies the sound to make it distorted.","inherits":"AudioEffect","properties":[{"name":"drive","type":"float","description":"Distortion power. Value can range from 0 to 1."},{"name":"keep_hf_hz","type":"float","description":"High-pass filter, in Hz. Frequencies higher than this value will not be affected by the distortion. Value can range from 1 to 20000."},{"name":"mode","type":"int","description":"Distortion type."},{"name":"post_gain","type":"float","description":"Increases or decreases the volume after the effect, in decibels. Value can range from -80 to 24."},{"name":"pre_gain","type":"float","description":"Increases or decreases the volume before the effect, in decibels. Value can range from -60 to 60."}],"methods":[],"signals":[]},"AudioEffectEQ":{"name":"AudioEffectEQ","description":"Base class for audio equalizers. Gives you control over frequencies.\n\t\tUse it to create a custom equalizer if ,  or  don't fit your needs.","inherits":"AudioEffect","properties":[],"methods":[{"name":"get_band_count","signature":"get_band_count() -> int","description":"Returns the number of bands of the equalizer.","returnType":"int"},{"name":"get_band_gain_db","signature":"get_band_gain_db(band_idx: int) -> float","description":"Returns the band's gain at the specified index, in dB.","returnType":"float"},{"name":"set_band_gain_db","signature":"set_band_gain_db(band_idx: int, volume_db: float) -> void","description":"Sets band's gain at the specified index, in dB.","returnType":"void"}],"signals":[]},"AudioEffectEQ10":{"name":"AudioEffectEQ10","description":"Adds a 10-band equalizer audio effect to an Audio bus. Gives you control over frequencies from 31 Hz to 16000 Hz.\n\t\tEach frequency can be modulated between -60/+24 dB.","inherits":"AudioEffectEQ","properties":[],"methods":[],"signals":[]},"AudioEffectEQ21":{"name":"AudioEffectEQ21","description":"Adds a 21-band equalizer audio effect to an Audio bus. Gives you control over frequencies from 22 Hz to 22000 Hz.\n\t\tEach frequency can be modulated between -60/+24 dB.","inherits":"AudioEffectEQ","properties":[],"methods":[],"signals":[]},"AudioEffectEQ6":{"name":"AudioEffectEQ6","description":"Adds a 6-band equalizer audio effect to an audio bus. Gives you control over frequencies from 32 Hz to 10000 Hz.\n\t\tEach frequency can be modulated between -60/+24 dB.","inherits":"AudioEffectEQ","properties":[],"methods":[],"signals":[]},"AudioEffectFilter":{"name":"AudioEffectFilter","description":"Adds a filter to the audio bus.","inherits":"AudioEffect","properties":[{"name":"cutoff_hz","type":"float","description":"Threshold frequency for the filter, in Hz."},{"name":"db","type":"int","description":"Steepness of the cutoff curve in dB per octave, also known as the order of the filter. Higher orders have a more aggressive cutoff."},{"name":"gain","type":"float","description":"Gain amount of the frequencies after the filter."},{"name":"resonance","type":"float","description":"Amount of boost in the frequency range near the cutoff frequency."}],"methods":[],"signals":[]},"AudioEffectHardLimiter":{"name":"AudioEffectHardLimiter","description":"Adds a hard limiter audio effect to an Audio bus.","inherits":"AudioEffect","properties":[{"name":"ceiling_db","type":"float","description":"The waveform's maximum allowed value, in decibels. This value can range from [code]-24.0[/code] to [code]0.0[/code].\n\t\t\tThe default value of [code]-0.3[/code] prevents potential inter-sample peaks (ISP) from crossing over 0 dB, which can cause slight distortion on some older hardware."},{"name":"pre_gain_db","type":"float","description":"Gain to apply before limiting, in decibels."},{"name":"release","type":"float","description":"Time it takes in seconds for the gain reduction to fully release."}],"methods":[],"signals":[]},"AudioEffectHighPassFilter":{"name":"AudioEffectHighPassFilter","description":"Adds a high-pass filter to the audio bus.","inherits":"AudioEffectFilter","properties":[],"methods":[],"signals":[]},"AudioEffectHighShelfFilter":{"name":"AudioEffectHighShelfFilter","description":"Adds a high-shelf filter to the audio bus.","inherits":"AudioEffectFilter","properties":[],"methods":[],"signals":[]},"AudioEffectInstance":{"name":"AudioEffectInstance","description":"Manipulates the audio it receives for a given effect.","inherits":"RefCounted","properties":[],"methods":[{"name":"_process","signature":"_process(src_buffer: const void*, dst_buffer: AudioFrame*, frame_count: int) -> void","description":"Called by the  to process this effect. When [method _process_silence] is not overridden or it returns false, this method is called only when the bus is active.\n\t\t\t\tNote: It is not useful to override this method in GDScript or C#. Only GDExtension can take advantage of it.","returnType":"void"},{"name":"_process_silence","signature":"_process_silence() -> bool","description":"Override this method to customize the processing behavior of this effect instance.\n\t\t\t\tShould return true to force the  to always call [method _process], even if the bus has been muted or cannot otherwise be heard.","returnType":"bool"}],"signals":[]},"AudioEffectLimiter":{"name":"AudioEffectLimiter","description":"Adds a soft-clip limiter audio effect to an Audio bus.","inherits":"AudioEffect","properties":[{"name":"ceiling_db","type":"float","description":"The waveform's maximum allowed value, in decibels. Value can range from -20 to -0.1."},{"name":"soft_clip_db","type":"float","description":"Applies a gain to the limited waves, in decibels. Value can range from 0 to 6."},{"name":"soft_clip_ratio","type":"float","description":""},{"name":"threshold_db","type":"float","description":"Threshold from which the limiter begins to be active, in decibels. Value can range from -30 to 0."}],"methods":[],"signals":[]},"AudioEffectLowPassFilter":{"name":"AudioEffectLowPassFilter","description":"Adds a low-pass filter to the audio bus.","inherits":"AudioEffectFilter","properties":[],"methods":[],"signals":[]},"AudioEffectLowShelfFilter":{"name":"AudioEffectLowShelfFilter","description":"Adds a low-shelf filter to the audio bus.","inherits":"AudioEffectFilter","properties":[],"methods":[],"signals":[]},"AudioEffectNotchFilter":{"name":"AudioEffectNotchFilter","description":"Adds a notch filter to the Audio bus.","inherits":"AudioEffectFilter","properties":[],"methods":[],"signals":[]},"AudioEffectPanner":{"name":"AudioEffectPanner","description":"Adds a panner audio effect to an audio bus. Pans sound left or right.","inherits":"AudioEffect","properties":[{"name":"pan","type":"float","description":"Pan position. Value can range from -1 (fully left) to 1 (fully right)."}],"methods":[],"signals":[]},"AudioEffectPhaser":{"name":"AudioEffectPhaser","description":"Adds a phaser audio effect to an audio bus.\n\t\tCombines the original signal with a copy that is slightly out of phase with the original.","inherits":"AudioEffect","properties":[{"name":"depth","type":"float","description":"Governs how high the filter frequencies sweep. Low value will primarily affect bass frequencies. High value can sweep high into the treble. Value can range from 0.1 to 4."},{"name":"feedback","type":"float","description":"Output percent of modified sound. Value can range from 0.1 to 0.9."},{"name":"range_max_hz","type":"float","description":"Determines the maximum frequency affected by the LFO modulations, in Hz. Value can range from 10 to 10000."},{"name":"range_min_hz","type":"float","description":"Determines the minimum frequency affected by the LFO modulations, in Hz. Value can range from 10 to 10000."},{"name":"rate_hz","type":"float","description":"Adjusts the rate in Hz at which the effect sweeps up and down across the frequency range."}],"methods":[],"signals":[]},"AudioEffectPitchShift":{"name":"AudioEffectPitchShift","description":"Adds a pitch-shifting audio effect to an audio bus.\n\t\tRaises or lowers the pitch of original sound.","inherits":"AudioEffect","properties":[{"name":"fft_size","type":"int","description":"The size of the [url=https://en.wikipedia.org/wiki/Fast_Fourier_transform]Fast Fourier transform[/url] buffer. Higher values smooth out the effect over time, but have greater latency. The effects of this higher latency are especially noticeable on sounds that have sudden amplitude changes."},{"name":"oversampling","type":"int","description":"The oversampling factor to use. Higher values result in better quality, but are more demanding on the CPU and may cause audio cracking if the CPU can't keep up."},{"name":"pitch_scale","type":"float","description":"The pitch scale to use. [code]1.0[/code] is the default pitch and plays sounds unaffected. [member pitch_scale] can range from [code]0.0[/code] (infinitely low pitch, inaudible) to [code]16[/code] (16 times higher than the initial pitch)."}],"methods":[],"signals":[]},"AudioEffectRecord":{"name":"AudioEffectRecord","description":"Audio effect used for recording the sound from an audio bus.","inherits":"AudioEffect","properties":[{"name":"format","type":"int","description":"Specifies the format in which the sample will be recorded. See [enum AudioStreamWAV.Format] for available formats."}],"methods":[{"name":"get_recording","signature":"get_recording() -> AudioStreamWAV","description":"Returns the recorded sample.","returnType":"AudioStreamWAV"},{"name":"is_recording_active","signature":"is_recording_active() -> bool","description":"Returns whether the recording is active or not.","returnType":"bool"},{"name":"set_recording_active","signature":"set_recording_active(record: bool) -> void","description":"If true, the sound will be recorded. Note that restarting the recording will remove the previously recorded sample.","returnType":"void"}],"signals":[]},"AudioEffectReverb":{"name":"AudioEffectReverb","description":"Adds a reverberation audio effect to an Audio bus.","inherits":"AudioEffect","properties":[{"name":"damping","type":"float","description":"Defines how reflective the imaginary room's walls are. Value can range from 0 to 1."},{"name":"dry","type":"float","description":"Output percent of original sound. At 0, only modified sound is outputted. Value can range from 0 to 1."},{"name":"hipass","type":"float","description":"High-pass filter passes signals with a frequency higher than a certain cutoff frequency and attenuates signals with frequencies lower than the cutoff frequency. Value can range from 0 to 1."},{"name":"predelay_feedback","type":"float","description":"Output percent of predelay. Value can range from 0 to 1."},{"name":"predelay_msec","type":"float","description":"Time between the original signal and the early reflections of the reverb signal, in milliseconds."},{"name":"room_size","type":"float","description":"Dimensions of simulated room. Bigger means more echoes. Value can range from 0 to 1."},{"name":"spread","type":"float","description":"Widens or narrows the stereo image of the reverb tail. 1 means fully widens. Value can range from 0 to 1."},{"name":"wet","type":"float","description":"Output percent of modified sound. At 0, only original sound is outputted. Value can range from 0 to 1."}],"methods":[],"signals":[]},"AudioEffectSpectrumAnalyzer":{"name":"AudioEffectSpectrumAnalyzer","description":"Audio effect that can be used for real-time audio visualizations.","inherits":"AudioEffect","properties":[{"name":"buffer_length","type":"float","description":"The length of the buffer to keep (in seconds). Higher values keep data around for longer, but require more memory."},{"name":"fft_size","type":"int","description":"The size of the [url=https://en.wikipedia.org/wiki/Fast_Fourier_transform]Fast Fourier transform[/url] buffer. Higher values smooth out the spectrum analysis over time, but have greater latency. The effects of this higher latency are especially noticeable with sudden amplitude changes."},{"name":"tap_back_pos","type":"float","description":""}],"methods":[],"signals":[]},"AudioEffectSpectrumAnalyzerInstance":{"name":"AudioEffectSpectrumAnalyzerInstance","description":"Queryable instance of an .","inherits":"AudioEffectInstance","properties":[],"methods":[{"name":"get_magnitude_for_frequency_range","signature":"get_magnitude_for_frequency_range(from_hz: float, to_hz: float, mode: int) -> Vector2","description":"Returns the magnitude of the frequencies from [param from_hz] to [param to_hz] in linear energy as a Vector2. The x component of the return value represents the left stereo channel, and y represents the right channel.\n\t\t\t\t[param mode] determines how the frequency range will be processed. See [enum MagnitudeMode].","returnType":"Vector2"}],"signals":[]},"AudioEffectStereoEnhance":{"name":"AudioEffectStereoEnhance","description":"An audio effect that can be used to adjust the intensity of stereo panning.","inherits":"AudioEffect","properties":[{"name":"pan_pullout","type":"float","description":"Amplifies the difference between stereo channels, increasing or decreasing existing panning. A value of 0.0 will downmix stereo to mono. Does not affect a mono signal."},{"name":"surround","type":"float","description":"Widens sound stage through phase shifting in conjunction with [member time_pullout_ms]. Just pans sound to the left channel if [member time_pullout_ms] is 0."},{"name":"time_pullout_ms","type":"float","description":"Widens sound stage through phase shifting in conjunction with [member surround]. Just delays the right channel if [member surround] is 0."}],"methods":[],"signals":[]},"AudioListener2D":{"name":"AudioListener2D","description":"Overrides the location sounds are heard from.","inherits":"Node2D","properties":[],"methods":[{"name":"clear_current","signature":"clear_current() -> void","description":"Disables the . If it's not set as current, this method will have no effect.","returnType":"void"},{"name":"is_current","signature":"is_current() -> bool","description":"Returns true if this  is currently active.","returnType":"bool"},{"name":"make_current","signature":"make_current() -> void","description":"Makes the  active, setting it as the hearing point for the sounds. If there is already another active , it will be disabled.\n\t\t\t\tThis method will have no effect if the  is not added to .","returnType":"void"}],"signals":[]},"AudioListener3D":{"name":"AudioListener3D","description":"Overrides the location sounds are heard from.","inherits":"Node3D","properties":[],"methods":[{"name":"clear_current","signature":"clear_current() -> void","description":"Disables the listener to use the current camera's listener instead.","returnType":"void"},{"name":"get_listener_transform","signature":"get_listener_transform() -> Transform3D","description":"Returns the listener's global orthonormalized .","returnType":"Transform3D"},{"name":"is_current","signature":"is_current() -> bool","description":"Returns true if the listener was made current using [method make_current], false otherwise.\n\t\t\t\tNote: There may be more than one AudioListener3D marked as \"current\" in the scene tree, but only the one that was made current last will be used.","returnType":"bool"},{"name":"make_current","signature":"make_current() -> void","description":"Enables the listener. This will override the current camera's listener.","returnType":"void"}],"signals":[]},"AudioSample":{"name":"AudioSample","description":"Base class for audio samples.","inherits":"RefCounted","properties":[],"methods":[],"signals":[]},"AudioSamplePlayback":{"name":"AudioSamplePlayback","description":"Meta class for playing back audio samples.","inherits":"RefCounted","properties":[],"methods":[],"signals":[]},"AudioServer":{"name":"AudioServer","description":"Server interface for low-level audio access.","inherits":"Object","properties":[{"name":"bus_count","type":"int","description":"Number of available audio buses."},{"name":"input_device","type":"String","description":"Name of the current device for audio input (see [method get_input_device_list]). On systems with multiple audio inputs (such as analog, USB and HDMI audio), this can be used to select the audio input device. The value [code]\"Default\"[/code] will record audio on the system-wide default audio input. If an invalid device name is set, the value will be reverted back to [code]\"Default\"[/code].\n\t\t\t[b]Note:[/b] [member ProjectSettings.audio/driver/enable_input] must be [code]true[/code] for audio input to work. See also that setting's description for caveats related to permissions and operating system privacy settings."},{"name":"output_device","type":"String","description":"Name of the current device for audio output (see [method get_output_device_list]). On systems with multiple audio outputs (such as analog, USB and HDMI audio), this can be used to select the audio output device. The value [code]\"Default\"[/code] will play audio on the system-wide default audio output. If an invalid device name is set, the value will be reverted back to [code]\"Default\"[/code]."},{"name":"playback_speed_scale","type":"float","description":"Scales the rate at which audio is played (i.e. setting it to [code]0.5[/code] will make the audio be played at half its speed). See also [member Engine.time_scale] to affect the general simulation speed, which is independent from [member AudioServer.playback_speed_scale]."}],"methods":[{"name":"add_bus","signature":"add_bus(at_position: int) -> void","description":"Adds a bus at [param at_position].","returnType":"void"},{"name":"add_bus_effect","signature":"add_bus_effect(bus_idx: int, effect: AudioEffect, at_position: int) -> void","description":"Adds an  effect to the bus [param bus_idx] at [param at_position].","returnType":"void"},{"name":"generate_bus_layout","signature":"generate_bus_layout() -> AudioBusLayout","description":"Generates an  using the available buses and effects.","returnType":"AudioBusLayout"},{"name":"get_bus_channels","signature":"get_bus_channels(bus_idx: int) -> int","description":"Returns the number of channels of the bus at index [param bus_idx].","returnType":"int"},{"name":"get_bus_effect","signature":"get_bus_effect(bus_idx: int, effect_idx: int) -> AudioEffect","description":"Returns the  at position [param effect_idx] in bus [param bus_idx].","returnType":"AudioEffect"},{"name":"get_bus_effect_count","signature":"get_bus_effect_count(bus_idx: int) -> int","description":"Returns the number of effects on the bus at [param bus_idx].","returnType":"int"},{"name":"get_bus_effect_instance","signature":"get_bus_effect_instance(bus_idx: int, effect_idx: int, channel: int) -> AudioEffectInstance","description":"Returns the  assigned to the given bus and effect indices (and optionally channel).","returnType":"AudioEffectInstance"},{"name":"get_bus_index","signature":"get_bus_index(bus_name: StringName) -> int","description":"Returns the index of the bus with the name [param bus_name]. Returns -1 if no bus with the specified name exist.","returnType":"int"},{"name":"get_bus_name","signature":"get_bus_name(bus_idx: int) -> String","description":"Returns the name of the bus with the index [param bus_idx].","returnType":"String"},{"name":"get_bus_peak_volume_left_db","signature":"get_bus_peak_volume_left_db(bus_idx: int, channel: int) -> float","description":"Returns the peak volume of the left speaker at bus index [param bus_idx] and channel index [param channel].","returnType":"float"},{"name":"get_bus_peak_volume_right_db","signature":"get_bus_peak_volume_right_db(bus_idx: int, channel: int) -> float","description":"Returns the peak volume of the right speaker at bus index [param bus_idx] and channel index [param channel].","returnType":"float"},{"name":"get_bus_send","signature":"get_bus_send(bus_idx: int) -> StringName","description":"Returns the name of the bus that the bus at index [param bus_idx] sends to.","returnType":"StringName"},{"name":"get_bus_volume_db","signature":"get_bus_volume_db(bus_idx: int) -> float","description":"Returns the volume of the bus at index [param bus_idx] in dB.","returnType":"float"},{"name":"get_bus_volume_linear","signature":"get_bus_volume_linear(bus_idx: int) -> float","description":"Returns the volume of the bus at index [param bus_idx] as a linear value.\n\t\t\t\tNote: The returned value is equivalent to the result of [method @GlobalScope.db_to_linear] on the result of [method get_bus_volume_db].","returnType":"float"},{"name":"get_driver_name","signature":"get_driver_name() -> String","description":"Returns the name of the current audio driver. The default usually depends on the operating system, but may be overridden via the --audio-driver [url=$DOCS_URL/tutorials/editor/command_line_tutorial.html]command line argument. --headless also automatically sets the audio driver to Dummy. See also [member ProjectSettings.audio/driver/driver].","returnType":"String"},{"name":"get_input_device_list","signature":"get_input_device_list() -> PackedStringArray","description":"Returns the names of all audio input devices detected on the system.\n\t\t\t\tNote: [member ProjectSettings.audio/driver/enable_input] must be true for audio input to work. See also that setting's description for caveats related to permissions and operating system privacy settings.","returnType":"PackedStringArray"},{"name":"get_input_mix_rate","signature":"get_input_mix_rate() -> float","description":"Returns the sample rate at the input of the .","returnType":"float"},{"name":"get_mix_rate","signature":"get_mix_rate() -> float","description":"Returns the sample rate at the output of the .","returnType":"float"},{"name":"get_output_device_list","signature":"get_output_device_list() -> PackedStringArray","description":"Returns the names of all audio output devices detected on the system.","returnType":"PackedStringArray"},{"name":"get_output_latency","signature":"get_output_latency() -> float","description":"Returns the audio driver's effective output latency. This is based on [member ProjectSettings.audio/driver/output_latency], but the exact returned value will differ depending on the operating system and audio driver.\n\t\t\t\tNote: This can be expensive; it is not recommended to call [method get_output_latency] every frame.","returnType":"float"},{"name":"get_speaker_mode","signature":"get_speaker_mode() -> int","description":"Returns the speaker configuration.","returnType":"int"},{"name":"get_time_since_last_mix","signature":"get_time_since_last_mix() -> float","description":"Returns the relative time since the last mix occurred.","returnType":"float"},{"name":"get_time_to_next_mix","signature":"get_time_to_next_mix() -> float","description":"Returns the relative time until the next mix occurs.","returnType":"float"},{"name":"is_bus_bypassing_effects","signature":"is_bus_bypassing_effects(bus_idx: int) -> bool","description":"If true, the bus at index [param bus_idx] is bypassing effects.","returnType":"bool"},{"name":"is_bus_effect_enabled","signature":"is_bus_effect_enabled(bus_idx: int, effect_idx: int) -> bool","description":"If true, the effect at index [param effect_idx] on the bus at index [param bus_idx] is enabled.","returnType":"bool"},{"name":"is_bus_mute","signature":"is_bus_mute(bus_idx: int) -> bool","description":"If true, the bus at index [param bus_idx] is muted.","returnType":"bool"},{"name":"is_bus_solo","signature":"is_bus_solo(bus_idx: int) -> bool","description":"If true, the bus at index [param bus_idx] is in solo mode.","returnType":"bool"},{"name":"is_stream_registered_as_sample","signature":"is_stream_registered_as_sample(stream: AudioStream) -> bool","description":"If true, the stream is registered as a sample. The engine will not have to register it before playing the sample.\n\t\t\t\tIf false, the stream will have to be registered before playing it. To prevent lag spikes, register the stream as sample with [method register_stream_as_sample].","returnType":"bool"},{"name":"lock","signature":"lock() -> void","description":"Locks the audio driver's main loop.\n\t\t\t\tNote: Remember to unlock it afterwards.","returnType":"void"},{"name":"move_bus","signature":"move_bus(index: int, to_index: int) -> void","description":"Moves the bus from index [param index] to index [param to_index].","returnType":"void"},{"name":"register_stream_as_sample","signature":"register_stream_as_sample(stream: AudioStream) -> void","description":"Forces the registration of a stream as a sample.\n\t\t\t\tNote: Lag spikes may occur when calling this method, especially on single-threaded builds. It is suggested to call this method while loading assets, where the lag spike could be masked, instead of registering the sample right before it needs to be played.","returnType":"void"},{"name":"remove_bus","signature":"remove_bus(index: int) -> void","description":"Removes the bus at index [param index].","returnType":"void"},{"name":"remove_bus_effect","signature":"remove_bus_effect(bus_idx: int, effect_idx: int) -> void","description":"Removes the effect at index [param effect_idx] from the bus at index [param bus_idx].","returnType":"void"},{"name":"set_bus_bypass_effects","signature":"set_bus_bypass_effects(bus_idx: int, enable: bool) -> void","description":"If true, the bus at index [param bus_idx] is bypassing effects.","returnType":"void"},{"name":"set_bus_effect_enabled","signature":"set_bus_effect_enabled(bus_idx: int, effect_idx: int, enabled: bool) -> void","description":"If true, the effect at index [param effect_idx] on the bus at index [param bus_idx] is enabled.","returnType":"void"},{"name":"set_bus_layout","signature":"set_bus_layout(bus_layout: AudioBusLayout) -> void","description":"Overwrites the currently used .","returnType":"void"},{"name":"set_bus_mute","signature":"set_bus_mute(bus_idx: int, enable: bool) -> void","description":"If true, the bus at index [param bus_idx] is muted.","returnType":"void"},{"name":"set_bus_name","signature":"set_bus_name(bus_idx: int, name: String) -> void","description":"Sets the name of the bus at index [param bus_idx] to [param name].","returnType":"void"},{"name":"set_bus_send","signature":"set_bus_send(bus_idx: int, send: StringName) -> void","description":"Connects the output of the bus at [param bus_idx] to the bus named [param send].","returnType":"void"},{"name":"set_bus_solo","signature":"set_bus_solo(bus_idx: int, enable: bool) -> void","description":"If true, the bus at index [param bus_idx] is in solo mode.","returnType":"void"},{"name":"set_bus_volume_db","signature":"set_bus_volume_db(bus_idx: int, volume_db: float) -> void","description":"Sets the volume in decibels of the bus at index [param bus_idx] to [param volume_db].","returnType":"void"},{"name":"set_bus_volume_linear","signature":"set_bus_volume_linear(bus_idx: int, volume_linear: float) -> void","description":"Sets the volume as a linear value of the bus at index [param bus_idx] to [param volume_linear].\n\t\t\t\tNote: Using this method is equivalent to calling [method set_bus_volume_db] with the result of [method @GlobalScope.linear_to_db] on a value.","returnType":"void"},{"name":"set_enable_tagging_used_audio_streams","signature":"set_enable_tagging_used_audio_streams(enable: bool) -> void","description":"If set to true, all instances of  will call [method AudioStreamPlayback._tag_used_streams] every mix step.\n\t\t\t\tNote: This is enabled by default in the editor, as it is used by editor plugins for the audio stream previews.","returnType":"void"},{"name":"swap_bus_effects","signature":"swap_bus_effects(bus_idx: int, effect_idx: int, by_effect_idx: int) -> void","description":"Swaps the position of two effects in bus [param bus_idx].","returnType":"void"},{"name":"unlock","signature":"unlock() -> void","description":"Unlocks the audio driver's main loop. (After locking it, you should always unlock it.)","returnType":"void"}],"signals":[{"name":"bus_layout_changed","description":"Emitted when an audio bus is added, deleted, or moved."},{"name":"bus_renamed","description":"Emitted when the audio bus at [param bus_index] is renamed from [param old_name] to [param new_name]."}]},"AudioStream":{"name":"AudioStream","description":"Base class for audio streams.","inherits":"Resource","properties":[],"methods":[{"name":"_get_bar_beats","signature":"_get_bar_beats() -> int","description":"Override this method to return the bar beats of this stream.","returnType":"int"},{"name":"_get_beat_count","signature":"_get_beat_count() -> int","description":"Overridable method. Should return the total number of beats of this audio stream. Used by the engine to determine the position of every beat.\n\t\t\t\tIdeally, the returned value should be based off the stream's sample rate ([member AudioStreamWAV.mix_rate], for example).","returnType":"int"},{"name":"_get_bpm","signature":"_get_bpm() -> float","description":"Overridable method. Should return the tempo of this audio stream, in beats per minute (BPM). Used by the engine to determine the position of every beat.\n\t\t\t\tIdeally, the returned value should be based off the stream's sample rate ([member AudioStreamWAV.mix_rate], for example).","returnType":"float"},{"name":"_get_length","signature":"_get_length() -> float","description":"Override this method to customize the returned value of [method get_length]. Should return the length of this audio stream, in seconds.","returnType":"float"},{"name":"_get_parameter_list","signature":"_get_parameter_list() -> Dictionary[]","description":"Return the controllable parameters of this stream. This array contains dictionaries with a property info description format (see [method Object.get_property_list]). Additionally, the default value for this parameter must be added tho each dictionary in \"default_value\" field.","returnType":"Dictionary[]"},{"name":"_get_stream_name","signature":"_get_stream_name() -> String","description":"Override this method to customize the name assigned to this audio stream. Unused by the engine.","returnType":"String"},{"name":"_has_loop","signature":"_has_loop() -> bool","description":"Override this method to return true if this stream has a loop.","returnType":"bool"},{"name":"_instantiate_playback","signature":"_instantiate_playback() -> AudioStreamPlayback","description":"Override this method to customize the returned value of [method instantiate_playback]. Should return a new  created when the stream is played (such as by an ).","returnType":"AudioStreamPlayback"},{"name":"_is_monophonic","signature":"_is_monophonic() -> bool","description":"Override this method to customize the returned value of [method is_monophonic]. Should return true if this audio stream only supports one channel.","returnType":"bool"},{"name":"can_be_sampled","signature":"can_be_sampled() -> bool","description":"Returns if the current  can be used as a sample. Only static streams can be sampled.","returnType":"bool"},{"name":"generate_sample","signature":"generate_sample() -> AudioSample","description":"Generates an  based on the current stream.","returnType":"AudioSample"},{"name":"get_length","signature":"get_length() -> float","description":"Returns the length of the audio stream in seconds.","returnType":"float"},{"name":"instantiate_playback","signature":"instantiate_playback() -> AudioStreamPlayback","description":"Returns a newly created  intended to play this audio stream. Useful for when you want to extend [method _instantiate_playback] but call [method instantiate_playback] from an internally held AudioStream subresource. An example of this can be found in the source code for AudioStreamRandomPitch::instantiate_playback.","returnType":"AudioStreamPlayback"},{"name":"is_meta_stream","signature":"is_meta_stream() -> bool","description":"Returns true if the stream is a collection of other streams, false otherwise.","returnType":"bool"},{"name":"is_monophonic","signature":"is_monophonic() -> bool","description":"Returns true if this audio stream only supports one channel (monophony), or false if the audio stream supports two or more channels (polyphony).","returnType":"bool"}],"signals":[{"name":"parameter_list_changed","description":"Signal to be emitted to notify when the parameter list changed."}]},"AudioStreamGenerator":{"name":"AudioStreamGenerator","description":"An audio stream with utilities for procedural sound generation.","inherits":"AudioStream","properties":[{"name":"buffer_length","type":"float","description":"The length of the buffer to generate (in seconds). Lower values result in less latency, but require the script to generate audio data faster, resulting in increased CPU usage and more risk for audio cracking if the CPU can't keep up."},{"name":"mix_rate","type":"float","description":"The sample rate to use (in Hz). Higher values are more demanding for the CPU to generate, but result in better quality.\n\t\t\tIn games, common sample rates in use are [code]11025[/code], [code]16000[/code], [code]22050[/code], [code]32000[/code], [code]44100[/code], and [code]48000[/code].\n\t\t\tAccording to the [url=https://en.wikipedia.org/wiki/Nyquist%E2%80%93Shannon_sampling_theorem]Nyquist-Shannon sampling theorem[/url], there is no quality difference to human hearing when going past 40,000 Hz (since most humans can only hear up to ~20,000 Hz, often less). If you are generating lower-pitched sounds such as voices, lower sample rates such as [code]32000[/code] or [code]22050[/code] may be usable with no loss in quality.\n\t\t\t[b]Note:[/b] [AudioStreamGenerator] is not automatically resampling input data, to produce expected result [member mix_rate_mode] should match the sampling rate of input data.\n\t\t\t[b]Note:[/b] If you are using [AudioEffectCapture] as the source of your data, set [member mix_rate_mode] to [constant MIX_RATE_INPUT] or [constant MIX_RATE_OUTPUT] to automatically match current [AudioServer] mixing rate."},{"name":"mix_rate_mode","type":"int","description":"Mixing rate mode. If set to [constant MIX_RATE_CUSTOM], [member mix_rate] is used, otherwise current [AudioServer] mixing rate is used."}],"methods":[],"signals":[]},"AudioStreamGeneratorPlayback":{"name":"AudioStreamGeneratorPlayback","description":"Plays back audio generated using .","inherits":"AudioStreamPlaybackResampled","properties":[],"methods":[{"name":"can_push_buffer","signature":"can_push_buffer(amount: int) -> bool","description":"Returns true if a buffer of the size [param amount] can be pushed to the audio sample data buffer without overflowing it, false otherwise.","returnType":"bool"},{"name":"clear_buffer","signature":"clear_buffer() -> void","description":"Clears the audio sample data buffer.","returnType":"void"},{"name":"get_frames_available","signature":"get_frames_available() -> int","description":"Returns the number of frames that can be pushed to the audio sample data buffer without overflowing it. If the result is 0, the buffer is full.","returnType":"int"},{"name":"get_skips","signature":"get_skips() -> int","description":"Returns the number of times the playback skipped due to a buffer underrun in the audio sample data. This value is reset at the start of the playback.","returnType":"int"},{"name":"push_buffer","signature":"push_buffer(frames: PackedVector2Array) -> bool","description":"Pushes several audio data frames to the buffer. This is usually more efficient than [method push_frame] in C# and compiled languages via GDExtension, but [method push_buffer] may be less efficient in GDScript.","returnType":"bool"},{"name":"push_frame","signature":"push_frame(frame: Vector2) -> bool","description":"Pushes a single audio data frame to the buffer. This is usually less efficient than [method push_buffer] in C# and compiled languages via GDExtension, but [method push_frame] may be more efficient in GDScript.","returnType":"bool"}],"signals":[]},"AudioStreamMicrophone":{"name":"AudioStreamMicrophone","description":"Plays real-time audio input data.","inherits":"AudioStream","properties":[],"methods":[],"signals":[]},"AudioStreamPlayback":{"name":"AudioStreamPlayback","description":"Meta class for playing back audio.","inherits":"RefCounted","properties":[],"methods":[{"name":"_get_loop_count","signature":"_get_loop_count() -> int","description":"Overridable method. Should return how many times this audio stream has looped. Most built-in playbacks always return 0.","returnType":"int"},{"name":"_get_parameter","signature":"_get_parameter(name: StringName) -> Variant","description":"Return the current value of a playback parameter by name (see [method AudioStream._get_parameter_list]).","returnType":"Variant"},{"name":"_get_playback_position","signature":"_get_playback_position() -> float","description":"Overridable method. Should return the current progress along the audio stream, in seconds.","returnType":"float"},{"name":"_is_playing","signature":"_is_playing() -> bool","description":"Overridable method. Should return true if this playback is active and playing its audio stream.","returnType":"bool"},{"name":"_mix","signature":"_mix(buffer: AudioFrame*, rate_scale: float, frames: int) -> int","description":"Override this method to customize how the audio stream is mixed. This method is called even if the playback is not active.\n\t\t\t\tNote: It is not useful to override this method in GDScript or C#. Only GDExtension can take advantage of it.","returnType":"int"},{"name":"_seek","signature":"_seek(position: float) -> void","description":"Override this method to customize what happens when seeking this audio stream at the given [param position], such as by calling [method AudioStreamPlayer.seek].","returnType":"void"},{"name":"_set_parameter","signature":"_set_parameter(name: StringName, value: Variant) -> void","description":"Set the current value of a playback parameter by name (see [method AudioStream._get_parameter_list]).","returnType":"void"},{"name":"_start","signature":"_start(from_pos: float) -> void","description":"Override this method to customize what happens when the playback starts at the given position, such as by calling [method AudioStreamPlayer.play].","returnType":"void"},{"name":"_stop","signature":"_stop() -> void","description":"Override this method to customize what happens when the playback is stopped, such as by calling [method AudioStreamPlayer.stop].","returnType":"void"},{"name":"_tag_used_streams","signature":"_tag_used_streams() -> void","description":"Overridable method. Called whenever the audio stream is mixed if the playback is active and [method AudioServer.set_enable_tagging_used_audio_streams] has been set to true. Editor plugins may use this method to \"tag\" the current position along the audio stream and display it in a preview.","returnType":"void"},{"name":"get_loop_count","signature":"get_loop_count() -> int","description":"Returns the number of times the stream has looped.","returnType":"int"},{"name":"get_playback_position","signature":"get_playback_position() -> float","description":"Returns the current position in the stream, in seconds.","returnType":"float"},{"name":"get_sample_playback","signature":"get_sample_playback() -> AudioSamplePlayback","description":"Returns the  associated with this  for playing back the audio sample of this stream.","returnType":"AudioSamplePlayback"},{"name":"is_playing","signature":"is_playing() -> bool","description":"Returns true if the stream is playing.","returnType":"bool"},{"name":"mix_audio","signature":"mix_audio(rate_scale: float, frames: int) -> PackedVector2Array","description":"Mixes up to [param frames] of audio from the stream from the current position, at a rate of [param rate_scale], advancing the stream.\n\t\t\t\tReturns a  where each element holds the left and right channel volume levels of each frame.\n\t\t\t\tNote: Can return fewer frames than requested, make sure to use the size of the return value.","returnType":"PackedVector2Array"},{"name":"seek","signature":"seek(time: float) -> void","description":"Seeks the stream at the given [param time], in seconds.","returnType":"void"},{"name":"set_sample_playback","signature":"set_sample_playback(playback_sample: AudioSamplePlayback) -> void","description":"Associates  to this  for playing back the audio sample of this stream.","returnType":"void"},{"name":"start","signature":"start(from_pos: float) -> void","description":"Starts the stream from the given [param from_pos], in seconds.","returnType":"void"},{"name":"stop","signature":"stop() -> void","description":"Stops the stream.","returnType":"void"}],"signals":[]},"AudioStreamPlaybackPolyphonic":{"name":"AudioStreamPlaybackPolyphonic","description":"Playback instance for .","inherits":"AudioStreamPlayback","properties":[],"methods":[{"name":"is_stream_playing","signature":"is_stream_playing(stream: int) -> bool","description":"Returns true if the stream associated with the given integer ID is still playing. Check [method play_stream] for information on when this ID becomes invalid.","returnType":"bool"},{"name":"play_stream","signature":"play_stream(stream: AudioStream, from_offset: float, volume_db: float, pitch_scale: float, playback_type: int, bus: StringName) -> int","description":"Play an  at a given offset, volume, pitch scale, playback type, and bus. Playback starts immediately.\n\t\t\t\tThe return value is a unique integer ID that is associated to this playback stream and which can be used to control it.\n\t\t\t\tThis ID becomes invalid when the stream ends (if it does not loop), when the  is stopped, or when [method stop_stream] is called.\n\t\t\t\tThis function returns [constant INVALID_ID] if the amount of streams currently playing equals [member AudioStreamPolyphonic.polyphony]. If you need a higher amount of maximum polyphony, raise this value.","returnType":"int"},{"name":"set_stream_pitch_scale","signature":"set_stream_pitch_scale(stream: int, pitch_scale: float) -> void","description":"Change the stream pitch scale. The [param stream] argument is an integer ID returned by [method play_stream].","returnType":"void"},{"name":"set_stream_volume","signature":"set_stream_volume(stream: int, volume_db: float) -> void","description":"Change the stream volume (in db). The [param stream] argument is an integer ID returned by [method play_stream].","returnType":"void"},{"name":"stop_stream","signature":"stop_stream(stream: int) -> void","description":"Stop a stream. The [param stream] argument is an integer ID returned by [method play_stream], which becomes invalid after calling this function.","returnType":"void"}],"signals":[]},"AudioStreamPlaybackResampled":{"name":"AudioStreamPlaybackResampled","description":"","inherits":"AudioStreamPlayback","properties":[],"methods":[{"name":"_get_stream_sampling_rate","signature":"_get_stream_sampling_rate() -> float","description":"","returnType":"float"},{"name":"_mix_resampled","signature":"_mix_resampled(dst_buffer: AudioFrame*, frame_count: int) -> int","description":"","returnType":"int"},{"name":"begin_resample","signature":"begin_resample() -> void","description":"","returnType":"void"}],"signals":[]},"AudioStreamPlayer":{"name":"AudioStreamPlayer","description":"A node for audio playback.","inherits":"Node","properties":[{"name":"autoplay","type":"bool","description":"If [code]true[/code], this node calls [method play] when entering the tree."},{"name":"bus","type":"StringName","description":"The target bus name. All sounds from this node will be playing on this bus.\n\t\t\t[b]Note:[/b] At runtime, if no bus with the given name exists, all sounds will fall back on [code]\"Master\"[/code]. See also [method AudioServer.get_bus_name]."},{"name":"max_polyphony","type":"int","description":"The maximum number of sounds this node can play at the same time. Calling [method play] after this value is reached will cut off the oldest sounds."},{"name":"mix_target","type":"int","description":"The mix target channels, as one of the [enum MixTarget] constants. Has no effect when two speakers or less are detected (see [enum AudioServer.SpeakerMode])."},{"name":"pitch_scale","type":"float","description":"The audio's pitch and tempo, as a multiplier of the [member stream]'s sample rate. A value of [code]2.0[/code] doubles the audio's pitch, while a value of [code]0.5[/code] halves the pitch."},{"name":"playback_type","type":"int","description":"The playback type of the stream player. If set other than to the default value, it will force that playback type."},{"name":"playing","type":"bool","description":"If [code]true[/code], this node is playing sounds. Setting this property has the same effect as [method play] and [method stop]."},{"name":"stream","type":"AudioStream","description":"The [AudioStream] resource to be played. Setting this property stops all currently playing sounds. If left empty, the [AudioStreamPlayer] does not work."},{"name":"stream_paused","type":"bool","description":"If [code]true[/code], the sounds are paused. Setting [member stream_paused] to [code]false[/code] resumes all sounds.\n\t\t\t[b]Note:[/b] This property is automatically changed when exiting or entering the tree, or this node is paused (see [member Node.process_mode])."},{"name":"volume_db","type":"float","description":"Volume of sound, in decibels. This is an offset of the [member stream]'s volume.\n\t\t\t[b]Note:[/b] To convert between decibel and linear energy (like most volume sliders do), use [member volume_linear], or [method @GlobalScope.db_to_linear] and [method @GlobalScope.linear_to_db]."},{"name":"volume_linear","type":"float","description":"Volume of sound, as a linear value.\n\t\t\t[b]Note:[/b] This member modifies [member volume_db] for convenience. The returned value is equivalent to the result of [method @GlobalScope.db_to_linear] on [member volume_db]. Setting this member is equivalent to setting [member volume_db] to the result of [method @GlobalScope.linear_to_db] on a value."}],"methods":[{"name":"get_playback_position","signature":"get_playback_position() -> float","description":"Returns the position in the  of the latest sound, in seconds. Returns 0.0 if no sounds are playing.\n\t\t\t\tNote: The position is not always accurate, as the  does not mix audio every processed frame. To get more accurate results, add [method AudioServer.get_time_since_last_mix] to the returned position.\n\t\t\t\tNote: This method always returns 0.0 if the [member stream] is an , since it can have multiple clips playing at once.","returnType":"float"},{"name":"get_stream_playback","signature":"get_stream_playback() -> AudioStreamPlayback","description":"Returns the latest  of this node, usually the most recently created by [method play]. If no sounds are playing, this method fails and returns an empty playback.","returnType":"AudioStreamPlayback"},{"name":"has_stream_playback","signature":"has_stream_playback() -> bool","description":"Returns true if any sound is active, even if [member stream_paused] is set to true. See also [member playing] and [method get_stream_playback].","returnType":"bool"},{"name":"play","signature":"play(from_position: float) -> void","description":"Plays a sound from the beginning, or the given [param from_position] in seconds.","returnType":"void"},{"name":"seek","signature":"seek(to_position: float) -> void","description":"Restarts all sounds to be played from the given [param to_position], in seconds. Does nothing if no sounds are playing.","returnType":"void"},{"name":"stop","signature":"stop() -> void","description":"Stops all sounds from this node.","returnType":"void"}],"signals":[{"name":"finished","description":"Emitted when a sound finishes playing without interruptions. This signal is [i]not[/i] emitted when calling [method stop], or when exiting the tree while sounds are playing."}]},"AudioStreamPlayer2D":{"name":"AudioStreamPlayer2D","description":"Plays positional sound in 2D space.","inherits":"Node2D","properties":[{"name":"area_mask","type":"int","description":"Determines which [Area2D] layers affect the sound for reverb and audio bus effects. Areas can be used to redirect [AudioStream]s so that they play in a certain audio bus. An example of how you might use this is making a \"water\" area so that sounds played in the water are redirected through an audio bus to make them sound like they are being played underwater."},{"name":"attenuation","type":"float","description":"The volume is attenuated over distance with this as an exponent."},{"name":"autoplay","type":"bool","description":"If [code]true[/code], audio plays when added to scene tree."},{"name":"bus","type":"StringName","description":"Bus on which this audio is playing.\n\t\t\t[b]Note:[/b] When setting this property, keep in mind that no validation is performed to see if the given name matches an existing bus. This is because audio bus layouts might be loaded after this property is set. If this given name can't be resolved at runtime, it will fall back to [code]\"Master\"[/code]."},{"name":"max_distance","type":"float","description":"Maximum distance from which audio is still hearable."},{"name":"max_polyphony","type":"int","description":"The maximum number of sounds this node can play at the same time. Playing additional sounds after this value is reached will cut off the oldest sounds."},{"name":"panning_strength","type":"float","description":"Scales the panning strength for this node by multiplying the base [member ProjectSettings.audio/general/2d_panning_strength] with this factor. Higher values will pan audio from left to right more dramatically than lower values."},{"name":"pitch_scale","type":"float","description":"The pitch and the tempo of the audio, as a multiplier of the audio sample's sample rate."},{"name":"playback_type","type":"int","description":"The playback type of the stream player. If set other than to the default value, it will force that playback type."},{"name":"playing","type":"bool","description":"If [code]true[/code], audio is playing or is queued to be played (see [method play])."},{"name":"stream","type":"AudioStream","description":"The [AudioStream] object to be played."},{"name":"stream_paused","type":"bool","description":"If [code]true[/code], the playback is paused. You can resume it by setting [member stream_paused] to [code]false[/code]."},{"name":"volume_db","type":"float","description":"Base volume before attenuation, in decibels."},{"name":"volume_linear","type":"float","description":"Base volume before attenuation, as a linear value.\n\t\t\t[b]Note:[/b] This member modifies [member volume_db] for convenience. The returned value is equivalent to the result of [method @GlobalScope.db_to_linear] on [member volume_db]. Setting this member is equivalent to setting [member volume_db] to the result of [method @GlobalScope.linear_to_db] on a value."}],"methods":[{"name":"get_playback_position","signature":"get_playback_position() -> float","description":"Returns the position in the .","returnType":"float"},{"name":"get_stream_playback","signature":"get_stream_playback() -> AudioStreamPlayback","description":"Returns the  object associated with this .","returnType":"AudioStreamPlayback"},{"name":"has_stream_playback","signature":"has_stream_playback() -> bool","description":"Returns whether the  can return the  object or not.","returnType":"bool"},{"name":"play","signature":"play(from_position: float) -> void","description":"Queues the audio to play on the next physics frame, from the given position [param from_position], in seconds.","returnType":"void"},{"name":"seek","signature":"seek(to_position: float) -> void","description":"Sets the position from which audio will be played, in seconds.","returnType":"void"},{"name":"stop","signature":"stop() -> void","description":"Stops the audio.","returnType":"void"}],"signals":[{"name":"finished","description":"Emitted when the audio stops playing."}]},"AudioStreamPlayer3D":{"name":"AudioStreamPlayer3D","description":"Plays positional sound in 3D space.","inherits":"Node3D","properties":[{"name":"area_mask","type":"int","description":"Determines which [Area3D] layers affect the sound for reverb and audio bus effects. Areas can be used to redirect [AudioStream]s so that they play in a certain audio bus. An example of how you might use this is making a \"water\" area so that sounds played in the water are redirected through an audio bus to make them sound like they are being played underwater."},{"name":"attenuation_filter_cutoff_hz","type":"float","description":"The cutoff frequency of the attenuation low-pass filter, in Hz. A sound above this frequency is attenuated more than a sound below this frequency. To disable this effect, set this to [code]20500[/code] as this frequency is above the human hearing limit."},{"name":"attenuation_filter_db","type":"float","description":"Amount how much the filter affects the loudness, in decibels."},{"name":"attenuation_model","type":"int","description":"Decides if audio should get quieter with distance linearly, quadratically, logarithmically, or not be affected by distance, effectively disabling attenuation."},{"name":"autoplay","type":"bool","description":"If [code]true[/code], audio plays when the AudioStreamPlayer3D node is added to scene tree."},{"name":"bus","type":"StringName","description":"The bus on which this audio is playing.\n\t\t\t[b]Note:[/b] When setting this property, keep in mind that no validation is performed to see if the given name matches an existing bus. This is because audio bus layouts might be loaded after this property is set. If this given name can't be resolved at runtime, it will fall back to [code]\"Master\"[/code]."},{"name":"doppler_tracking","type":"int","description":"Decides in which step the Doppler effect should be calculated."},{"name":"emission_angle_degrees","type":"float","description":"The angle in which the audio reaches a listener unattenuated."},{"name":"emission_angle_enabled","type":"bool","description":"If [code]true[/code], the audio should be attenuated according to the direction of the sound."},{"name":"emission_angle_filter_attenuation_db","type":"float","description":"Attenuation factor used if listener is outside of [member emission_angle_degrees] and [member emission_angle_enabled] is set, in decibels."},{"name":"max_db","type":"float","description":"Sets the absolute maximum of the sound level, in decibels."},{"name":"max_distance","type":"float","description":"The distance past which the sound can no longer be heard at all. Only has an effect if set to a value greater than [code]0.0[/code]. [member max_distance] works in tandem with [member unit_size]. However, unlike [member unit_size] whose behavior depends on the [member attenuation_model], [member max_distance] always works in a linear fashion. This can be used to prevent the [AudioStreamPlayer3D] from requiring audio mixing when the listener is far away, which saves CPU resources."},{"name":"max_polyphony","type":"int","description":"The maximum number of sounds this node can play at the same time. Playing additional sounds after this value is reached will cut off the oldest sounds."},{"name":"panning_strength","type":"float","description":"Scales the panning strength for this node by multiplying the base [member ProjectSettings.audio/general/3d_panning_strength] with this factor. Higher values will pan audio from left to right more dramatically than lower values."},{"name":"pitch_scale","type":"float","description":"The pitch and the tempo of the audio, as a multiplier of the audio sample's sample rate."},{"name":"playback_type","type":"int","description":"The playback type of the stream player. If set other than to the default value, it will force that playback type."},{"name":"playing","type":"bool","description":"If [code]true[/code], audio is playing or is queued to be played (see [method play])."},{"name":"stream","type":"AudioStream","description":"The [AudioStream] resource to be played."},{"name":"stream_paused","type":"bool","description":"If [code]true[/code], the playback is paused. You can resume it by setting [member stream_paused] to [code]false[/code]."},{"name":"unit_size","type":"float","description":"The factor for the attenuation effect. Higher values make the sound audible over a larger distance."},{"name":"volume_db","type":"float","description":"The base sound level before attenuation, in decibels."},{"name":"volume_linear","type":"float","description":"The base sound level before attenuation, as a linear value.\n\t\t\t[b]Note:[/b] This member modifies [member volume_db] for convenience. The returned value is equivalent to the result of [method @GlobalScope.db_to_linear] on [member volume_db]. Setting this member is equivalent to setting [member volume_db] to the result of [method @GlobalScope.linear_to_db] on a value."}],"methods":[{"name":"get_playback_position","signature":"get_playback_position() -> float","description":"Returns the position in the .","returnType":"float"},{"name":"get_stream_playback","signature":"get_stream_playback() -> AudioStreamPlayback","description":"Returns the  object associated with this .","returnType":"AudioStreamPlayback"},{"name":"has_stream_playback","signature":"has_stream_playback() -> bool","description":"Returns whether the  can return the  object or not.","returnType":"bool"},{"name":"play","signature":"play(from_position: float) -> void","description":"Queues the audio to play on the next physics frame, from the given position [param from_position], in seconds.","returnType":"void"},{"name":"seek","signature":"seek(to_position: float) -> void","description":"Sets the position from which audio will be played, in seconds.","returnType":"void"},{"name":"stop","signature":"stop() -> void","description":"Stops the audio.","returnType":"void"}],"signals":[{"name":"finished","description":"Emitted when the audio stops playing."}]},"AudioStreamPolyphonic":{"name":"AudioStreamPolyphonic","description":"AudioStream that lets the user play custom streams at any time from code, simultaneously using a single player.","inherits":"AudioStream","properties":[{"name":"polyphony","type":"int","description":"Maximum amount of simultaneous streams that can be played."}],"methods":[],"signals":[]},"AudioStreamRandomizer":{"name":"AudioStreamRandomizer","description":"Wraps a pool of audio streams with pitch and volume shifting.","inherits":"AudioStream","properties":[{"name":"playback_mode","type":"int","description":"Controls how this AudioStreamRandomizer picks which AudioStream to play next."},{"name":"random_pitch","type":"float","description":"The intensity of random pitch variation. A value of 1 means no variation."},{"name":"random_volume_offset_db","type":"float","description":"The intensity of random volume variation. A value of 0 means no variation."},{"name":"streams_count","type":"int","description":"The number of streams in the stream pool."}],"methods":[{"name":"add_stream","signature":"add_stream(index: int, stream: AudioStream, weight: float) -> void","description":"Insert a stream at the specified index. If the index is less than zero, the insertion occurs at the end of the underlying pool.","returnType":"void"},{"name":"get_stream","signature":"get_stream(index: int) -> AudioStream","description":"Returns the stream at the specified index.","returnType":"AudioStream"},{"name":"get_stream_probability_weight","signature":"get_stream_probability_weight(index: int) -> float","description":"Returns the probability weight associated with the stream at the given index.","returnType":"float"},{"name":"move_stream","signature":"move_stream(index_from: int, index_to: int) -> void","description":"Move a stream from one index to another.","returnType":"void"},{"name":"remove_stream","signature":"remove_stream(index: int) -> void","description":"Remove the stream at the specified index.","returnType":"void"},{"name":"set_stream","signature":"set_stream(index: int, stream: AudioStream) -> void","description":"Set the AudioStream at the specified index.","returnType":"void"},{"name":"set_stream_probability_weight","signature":"set_stream_probability_weight(index: int, weight: float) -> void","description":"Set the probability weight of the stream at the specified index. The higher this value, the more likely that the randomizer will choose this stream during random playback modes.","returnType":"void"}],"signals":[]},"AudioStreamWAV":{"name":"AudioStreamWAV","description":"Stores audio data loaded from WAV files.","inherits":"AudioStream","properties":[{"name":"data","type":"PackedByteArray","description":"Contains the audio data in bytes.\n\t\t\t[b]Note:[/b] If [member format] is set to [constant FORMAT_8_BITS], this property expects signed 8-bit PCM data. To convert from unsigned 8-bit PCM, subtract 128 from each byte.\n\t\t\t[b]Note:[/b] If [member format] is set to [constant FORMAT_QOA], this property expects data from a full QOA file."},{"name":"format","type":"int","description":"Audio format. See [enum Format] constants for values."},{"name":"loop_begin","type":"int","description":"The loop start point (in number of samples, relative to the beginning of the stream)."},{"name":"loop_end","type":"int","description":"The loop end point (in number of samples, relative to the beginning of the stream)."},{"name":"loop_mode","type":"int","description":"The loop mode. See [enum LoopMode] constants for values."},{"name":"mix_rate","type":"int","description":"The sample rate for mixing this audio. Higher values require more storage space, but result in better quality.\n\t\t\tIn games, common sample rates in use are [code]11025[/code], [code]16000[/code], [code]22050[/code], [code]32000[/code], [code]44100[/code], and [code]48000[/code].\n\t\t\tAccording to the [url=https://en.wikipedia.org/wiki/Nyquist%E2%80%93Shannon_sampling_theorem]Nyquist-Shannon sampling theorem[/url], there is no quality difference to human hearing when going past 40,000 Hz (since most humans can only hear up to ~20,000 Hz, often less). If you are using lower-pitched sounds such as voices, lower sample rates such as [code]32000[/code] or [code]22050[/code] may be usable with no loss in quality."},{"name":"stereo","type":"bool","description":"If [code]true[/code], audio is stereo."}],"methods":[{"name":"load_from_buffer","signature":"load_from_buffer(stream_data: PackedByteArray, options: Dictionary) -> AudioStreamWAV","description":"Creates a new  instance from the given buffer. The buffer must contain WAV data.\n\t\t\t\tThe keys and values of [param options] match the properties of . The usage of [param options] is identical to [method AudioStreamWAV.load_from_file].","returnType":"AudioStreamWAV"},{"name":"load_from_file","signature":"load_from_file(path: String, options: Dictionary) -> AudioStreamWAV","description":"Creates a new  instance from the given file path. The file must be in WAV format.\n\t\t\t\tThe keys and values of [param options] match the properties of .\n\t\t\t\tExample: Load the first file dropped as a WAV and play it:\n\t\t\t\t\n\t\t\t\t@onready var audio_player = $AudioStreamPlayer\n\n\t\t\t\tfunc _ready():\n\t\t\t\t    get_window().files_dropped.connect(_on_files_dropped)\n\n\t\t\t\tfunc _on_files_dropped(files):\n\t\t\t\t    if files.get_extension() == \"wav\":\n\t\t\t\t        audio_player.stream = AudioStreamWAV.load_from_file(files, {\n\t\t\t\t                \"force/max_rate\": true,\n\t\t\t\t                \"force/max_rate_hz\": 11025\n\t\t\t\t            })\n\t\t\t\t        audio_player.play()\n\t\t\t\t","returnType":"AudioStreamWAV"},{"name":"save_to_wav","signature":"save_to_wav(path: String) -> int","description":"Saves the AudioStreamWAV as a WAV file to [param path]. Samples with IMA ADPCM or Quite OK Audio formats can't be saved.\n\t\t\t\tNote: A .wav extension is automatically appended to [param path] if it is missing.","returnType":"int"}],"signals":[]},"BackBufferCopy":{"name":"BackBufferCopy","description":"A node that copies a region of the screen to a buffer for access in shader code.","inherits":"Node2D","properties":[{"name":"copy_mode","type":"int","description":"Buffer mode. See [enum CopyMode] constants."},{"name":"rect","type":"Rect2","description":"The area covered by the [BackBufferCopy]. Only used if [member copy_mode] is [constant COPY_MODE_RECT]."}],"methods":[],"signals":[]},"BaseButton":{"name":"BaseButton","description":"Abstract base class for GUI buttons.","inherits":"Control","properties":[{"name":"action_mode","type":"int","description":"Determines when the button is considered clicked, one of the [enum ActionMode] constants."},{"name":"button_group","type":"ButtonGroup","description":"The [ButtonGroup] associated with the button. Not to be confused with node groups.\n\t\t\t[b]Note:[/b] The button will be configured as a radio button if a [ButtonGroup] is assigned to it."},{"name":"button_mask","type":"int","description":"Binary mask to choose which mouse buttons this button will respond to.\n\t\t\tTo allow both left-click and right-click, use [code]MOUSE_BUTTON_MASK_LEFT | MOUSE_BUTTON_MASK_RIGHT[/code]."},{"name":"button_pressed","type":"bool","description":"If [code]true[/code], the button's state is pressed. Means the button is pressed down or toggled (if [member toggle_mode] is active). Only works if [member toggle_mode] is [code]true[/code].\n\t\t\t[b]Note:[/b] Changing the value of [member button_pressed] will result in [signal toggled] to be emitted. If you want to change the pressed state without emitting that signal, use [method set_pressed_no_signal]."},{"name":"disabled","type":"bool","description":"If [code]true[/code], the button is in disabled state and can't be clicked or toggled."},{"name":"keep_pressed_outside","type":"bool","description":"If [code]true[/code], the button stays pressed when moving the cursor outside the button while pressing it.\n\t\t\t[b]Note:[/b] This property only affects the button's visual appearance. Signals will be emitted at the same moment regardless of this property's value."},{"name":"shortcut","type":"Shortcut","description":"[Shortcut] associated to the button."},{"name":"shortcut_feedback","type":"bool","description":"If [code]true[/code], the button will highlight for a short amount of time when its shortcut is activated. If [code]false[/code] and [member toggle_mode] is [code]false[/code], the shortcut will activate without any visual feedback."},{"name":"shortcut_in_tooltip","type":"bool","description":"If [code]true[/code], the button will add information about its shortcut in the tooltip.\n\t\t\t[b]Note:[/b] This property does nothing when the tooltip control is customized using [method Control._make_custom_tooltip]."},{"name":"toggle_mode","type":"bool","description":"If [code]true[/code], the button is in toggle mode. Makes the button flip state between pressed and unpressed each time its area is clicked."}],"methods":[{"name":"_pressed","signature":"_pressed() -> void","description":"Called when the button is pressed. If you need to know the button's pressed state (and [member toggle_mode] is active), use [method _toggled] instead.","returnType":"void"},{"name":"_toggled","signature":"_toggled(toggled_on: bool) -> void","description":"Called when the button is toggled (only if [member toggle_mode] is active).","returnType":"void"},{"name":"get_draw_mode","signature":"get_draw_mode() -> int","description":"Returns the visual state used to draw the button. This is useful mainly when implementing your own draw code by either overriding _draw() or connecting to \"draw\" signal. The visual state of the button is defined by the [enum DrawMode] enum.","returnType":"int"},{"name":"is_hovered","signature":"is_hovered() -> bool","description":"Returns true if the mouse has entered the button and has not left it yet.","returnType":"bool"},{"name":"set_pressed_no_signal","signature":"set_pressed_no_signal(pressed: bool) -> void","description":"Changes the [member button_pressed] state of the button, without emitting [signal toggled]. Use when you just want to change the state of the button without sending the pressed event (e.g. when initializing scene). Only works if [member toggle_mode] is true.\n\t\t\t\tNote: This method doesn't unpress other buttons in [member button_group].","returnType":"void"}],"signals":[{"name":"button_down","description":"Emitted when the button starts being held down."},{"name":"button_up","description":"Emitted when the button stops being held down."},{"name":"pressed","description":"Emitted when the button is toggled or pressed. This is on [signal button_down] if [member action_mode] is [constant ACTION_MODE_BUTTON_PRESS] and on [signal button_up] otherwise.\n\t\t\t\tIf you need to know the button's pressed state (and [member toggle_mode] is active), use [signal toggled] instead."},{"name":"toggled","description":"Emitted when the button was just toggled between pressed and normal states (only if [member toggle_mode] is active). The new state is contained in the [param toggled_on] argument."}]},"BaseMaterial3D":{"name":"BaseMaterial3D","description":"Abstract base class for defining the 3D rendering properties of meshes.","inherits":"Material","properties":[{"name":"albedo_color","type":"Color","description":"The material's base color.\n\t\t\t[b]Note:[/b] If [member detail_enabled] is [code]true[/code] and a [member detail_albedo] texture is specified, [member albedo_color] will [i]not[/i] modulate the detail texture. This can be used to color partial areas of a material by not specifying an albedo texture and using a transparent [member detail_albedo] texture instead."},{"name":"albedo_texture","type":"Texture2D","description":"Texture to multiply by [member albedo_color]. Used for basic texturing of objects.\n\t\t\tIf the texture appears unexpectedly too dark or too bright, check [member albedo_texture_force_srgb]."},{"name":"albedo_texture_force_srgb","type":"bool","description":"If [code]true[/code], forces a conversion of the [member albedo_texture] from sRGB color space to linear color space. See also [member vertex_color_is_srgb].\n\t\t\tThis should only be enabled when needed (typically when using a [ViewportTexture] as [member albedo_texture]). If [member albedo_texture_force_srgb] is [code]true[/code] when it shouldn't be, the texture will appear to be too dark. If [member albedo_texture_force_srgb] is [code]false[/code] when it shouldn't be, the texture will appear to be too bright."},{"name":"albedo_texture_msdf","type":"bool","description":"Enables multichannel signed distance field rendering shader. Use [member msdf_pixel_range] and [member msdf_outline_size] to configure MSDF parameters."},{"name":"alpha_antialiasing_edge","type":"float","description":"Threshold at which antialiasing will be applied on the alpha channel."},{"name":"alpha_antialiasing_mode","type":"int","description":"The type of alpha antialiasing to apply. See [enum AlphaAntiAliasing]."},{"name":"alpha_hash_scale","type":"float","description":"The hashing scale for Alpha Hash. Recommended values between [code]0[/code] and [code]2[/code]."},{"name":"alpha_scissor_threshold","type":"float","description":"Threshold at which the alpha scissor will discard values. Higher values will result in more pixels being discarded. If the material becomes too opaque at a distance, try increasing [member alpha_scissor_threshold]. If the material disappears at a distance, try decreasing [member alpha_scissor_threshold]."},{"name":"anisotropy","type":"float","description":"The strength of the anisotropy effect. This is multiplied by [member anisotropy_flowmap]'s alpha channel if a texture is defined there and the texture contains an alpha channel."},{"name":"anisotropy_enabled","type":"bool","description":"If [code]true[/code], anisotropy is enabled. Anisotropy changes the shape of the specular blob and aligns it to tangent space. This is useful for brushed aluminum and hair reflections.\n\t\t\t[b]Note:[/b] Mesh tangents are needed for anisotropy to work. If the mesh does not contain tangents, the anisotropy effect will appear broken.\n\t\t\t[b]Note:[/b] Material anisotropy should not to be confused with anisotropic texture filtering, which can be enabled by setting [member texture_filter] to [constant TEXTURE_FILTER_LINEAR_WITH_MIPMAPS_ANISOTROPIC]."},{"name":"anisotropy_flowmap","type":"Texture2D","description":"Texture that offsets the tangent map for anisotropy calculations and optionally controls the anisotropy effect (if an alpha channel is present). The flowmap texture is expected to be a derivative map, with the red channel representing distortion on the X axis and green channel representing distortion on the Y axis. Values below 0.5 will result in negative distortion, whereas values above 0.5 will result in positive distortion.\n\t\t\tIf present, the texture's alpha channel will be used to multiply the strength of the [member anisotropy] effect. Fully opaque pixels will keep the anisotropy effect's original strength while fully transparent pixels will disable the anisotropy effect entirely. The flowmap texture's blue channel is ignored."},{"name":"ao_enabled","type":"bool","description":"If [code]true[/code], ambient occlusion is enabled. Ambient occlusion darkens areas based on the [member ao_texture]."},{"name":"ao_light_affect","type":"float","description":"Amount that ambient occlusion affects lighting from lights. If [code]0[/code], ambient occlusion only affects ambient light. If [code]1[/code], ambient occlusion affects lights just as much as it affects ambient light. This can be used to impact the strength of the ambient occlusion effect, but typically looks unrealistic."},{"name":"ao_on_uv2","type":"bool","description":"If [code]true[/code], use [code]UV2[/code] coordinates to look up from the [member ao_texture]."},{"name":"ao_texture","type":"Texture2D","description":"Texture that defines the amount of ambient occlusion for a given point on the object."},{"name":"ao_texture_channel","type":"int","description":"Specifies the channel of the [member ao_texture] in which the ambient occlusion information is stored. This is useful when you store the information for multiple effects in a single texture. For example if you stored metallic in the red channel, roughness in the blue, and ambient occlusion in the green you could reduce the number of textures you use."},{"name":"backlight","type":"Color","description":"The color used by the backlight effect. Represents the light passing through an object."},{"name":"backlight_enabled","type":"bool","description":"If [code]true[/code], the backlight effect is enabled. See also [member subsurf_scatter_transmittance_enabled]."},{"name":"backlight_texture","type":"Texture2D","description":"Texture used to control the backlight effect per-pixel. Added to [member backlight]."},{"name":"billboard_keep_scale","type":"bool","description":"If [code]true[/code], the shader will keep the scale set for the mesh. Otherwise, the scale is lost when billboarding. Only applies when [member billboard_mode] is not [constant BILLBOARD_DISABLED]."},{"name":"billboard_mode","type":"int","description":"Controls how the object faces the camera. See [enum BillboardMode].\n\t\t\t[b]Note:[/b] Billboard mode is not suitable for VR because the left-right vector of the camera is not horizontal when the screen is attached to your head instead of on the table. See [url=https://github.com/godotengine/godot/issues/41567]GitHub issue #41567[/url] for details."},{"name":"blend_mode","type":"int","description":"The material's blend mode.\n\t\t\t[b]Note:[/b] Values other than [code]Mix[/code] force the object into the transparent pipeline. See [enum BlendMode]."},{"name":"clearcoat","type":"float","description":"Sets the strength of the clearcoat effect. Setting to [code]0[/code] looks the same as disabling the clearcoat effect."},{"name":"clearcoat_enabled","type":"bool","description":"If [code]true[/code], clearcoat rendering is enabled. Adds a secondary transparent pass to the lighting calculation resulting in an added specular blob. This makes materials appear as if they have a clear layer on them that can be either glossy or rough.\n\t\t\t[b]Note:[/b] Clearcoat rendering is not visible if the material's [member shading_mode] is [constant SHADING_MODE_UNSHADED]."},{"name":"clearcoat_roughness","type":"float","description":"Sets the roughness of the clearcoat pass. A higher value results in a rougher clearcoat while a lower value results in a smoother clearcoat."},{"name":"clearcoat_texture","type":"Texture2D","description":"Texture that defines the strength of the clearcoat effect and the glossiness of the clearcoat. Strength is specified in the red channel while glossiness is specified in the green channel."},{"name":"cull_mode","type":"int","description":"Determines which side of the triangle to cull depending on whether the triangle faces towards or away from the camera. See [enum CullMode]."},{"name":"depth_draw_mode","type":"int","description":"Determines when depth rendering takes place. See [enum DepthDrawMode]. See also [member transparency]."},{"name":"detail_albedo","type":"Texture2D","description":"Texture that specifies the color of the detail overlay. [member detail_albedo]'s alpha channel is used as a mask, even when the material is opaque. To use a dedicated texture as a mask, see [member detail_mask].\n\t\t\t[b]Note:[/b] [member detail_albedo] is [i]not[/i] modulated by [member albedo_color]."},{"name":"detail_blend_mode","type":"int","description":"Specifies how the [member detail_albedo] should blend with the current [code]ALBEDO[/code]. See [enum BlendMode] for options."},{"name":"detail_enabled","type":"bool","description":"If [code]true[/code], enables the detail overlay. Detail is a second texture that gets mixed over the surface of the object based on [member detail_mask] and [member detail_albedo]'s alpha channel. This can be used to add variation to objects, or to blend between two different albedo/normal textures."},{"name":"detail_mask","type":"Texture2D","description":"Texture used to specify how the detail textures get blended with the base textures. [member detail_mask] can be used together with [member detail_albedo]'s alpha channel (if any)."},{"name":"detail_normal","type":"Texture2D","description":"Texture that specifies the per-pixel normal of the detail overlay. The [member detail_normal] texture only uses the red and green channels; the blue and alpha channels are ignored. The normal read from [member detail_normal] is oriented around the surface normal provided by the [Mesh].\n\t\t\t[b]Note:[/b] Godot expects the normal map to use X+, Y+, and Z+ coordinates. See [url=http://wiki.polycount.com/wiki/Normal_Map_Technical_Details#Common_Swizzle_Coordinates]this page[/url] for a comparison of normal map coordinates expected by popular engines."},{"name":"detail_uv_layer","type":"int","description":"Specifies whether to use [code]UV[/code] or [code]UV2[/code] for the detail layer. See [enum DetailUV] for options."},{"name":"diffuse_mode","type":"int","description":"The algorithm used for diffuse light scattering. See [enum DiffuseMode]."},{"name":"disable_ambient_light","type":"bool","description":"If [code]true[/code], the object receives no ambient light."},{"name":"disable_fog","type":"bool","description":"If [code]true[/code], the object will not be affected by fog (neither volumetric nor depth fog). This is useful for unshaded or transparent materials (e.g. particles), which without this setting will be affected even if fully transparent."},{"name":"disable_receive_shadows","type":"bool","description":"If [code]true[/code], the object receives no shadow that would otherwise be cast onto it."},{"name":"distance_fade_max_distance","type":"float","description":"Distance at which the object appears fully opaque.\n\t\t\t[b]Note:[/b] If [member distance_fade_max_distance] is less than [member distance_fade_min_distance], the behavior will be reversed. The object will start to fade away at [member distance_fade_max_distance] and will fully disappear once it reaches [member distance_fade_min_distance]."},{"name":"distance_fade_min_distance","type":"float","description":"Distance at which the object starts to become visible. If the object is less than this distance away, it will be invisible.\n\t\t\t[b]Note:[/b] If [member distance_fade_min_distance] is greater than [member distance_fade_max_distance], the behavior will be reversed. The object will start to fade away at [member distance_fade_max_distance] and will fully disappear once it reaches [member distance_fade_min_distance]."},{"name":"distance_fade_mode","type":"int","description":"Specifies which type of fade to use. Can be any of the [enum DistanceFadeMode]s."},{"name":"emission","type":"Color","description":"The emitted light's color. See [member emission_enabled]."},{"name":"emission_enabled","type":"bool","description":"If [code]true[/code], the body emits light. Emitting light makes the object appear brighter. The object can also cast light on other objects if a [VoxelGI], SDFGI, or [LightmapGI] is used and this object is used in baked lighting."},{"name":"emission_energy_multiplier","type":"float","description":"Multiplier for emitted light. See [member emission_enabled]."},{"name":"emission_intensity","type":"float","description":"Luminance of emitted light, measured in nits (candela per square meter). Only available when [member ProjectSettings.rendering/lights_and_shadows/use_physical_light_units] is enabled. The default is roughly equivalent to an indoor lightbulb."},{"name":"emission_on_uv2","type":"bool","description":"Use [code]UV2[/code] to read from the [member emission_texture]."},{"name":"emission_operator","type":"int","description":"Sets how [member emission] interacts with [member emission_texture]. Can either add or multiply. See [enum EmissionOperator] for options."},{"name":"emission_texture","type":"Texture2D","description":"Texture that specifies how much surface emits light at a given point."},{"name":"fixed_size","type":"bool","description":"If [code]true[/code], the object is rendered at the same size regardless of distance."},{"name":"grow","type":"bool","description":"If [code]true[/code], enables the vertex grow setting. This can be used to create mesh-based outlines using a second material pass and its [member cull_mode] set to [constant CULL_FRONT]. See also [member grow_amount].\n\t\t\t[b]Note:[/b] Vertex growth cannot create new vertices, which means that visible gaps may occur in sharp corners. This can be alleviated by designing the mesh to use smooth normals exclusively using [url=http://wiki.polycount.com/wiki/Face_weighted_normals]face weighted normals[/url] in the 3D authoring software. In this case, grow will be able to join every outline together, just like in the original mesh."},{"name":"grow_amount","type":"float","description":"Grows object vertices in the direction of their normals. Only effective if [member grow] is [code]true[/code]."},{"name":"heightmap_deep_parallax","type":"bool","description":"If [code]true[/code], uses parallax occlusion mapping to represent depth in the material instead of simple offset mapping (see [member heightmap_enabled]). This results in a more convincing depth effect, but is much more expensive on the GPU. Only enable this on materials where it makes a significant visual difference."},{"name":"heightmap_enabled","type":"bool","description":"If [code]true[/code], height mapping is enabled (also called \"parallax mapping\" or \"depth mapping\"). See also [member normal_enabled]. Height mapping is a demanding feature on the GPU, so it should only be used on materials where it makes a significant visual difference.\n\t\t\t[b]Note:[/b] Height mapping is not supported if triplanar mapping is used on the same material. The value of [member heightmap_enabled] will be ignored if [member uv1_triplanar] is enabled."},{"name":"heightmap_flip_binormal","type":"bool","description":"If [code]true[/code], flips the mesh's binormal vectors when interpreting the height map. If the heightmap effect looks strange when the camera moves (even with a reasonable [member heightmap_scale]), try setting this to [code]true[/code]."},{"name":"heightmap_flip_tangent","type":"bool","description":"If [code]true[/code], flips the mesh's tangent vectors when interpreting the height map. If the heightmap effect looks strange when the camera moves (even with a reasonable [member heightmap_scale]), try setting this to [code]true[/code]."},{"name":"heightmap_flip_texture","type":"bool","description":"If [code]true[/code], interprets the height map texture as a depth map, with brighter values appearing to be \"lower\" in altitude compared to darker values.\n\t\t\tThis can be enabled for compatibility with some materials authored for Godot 3.x. This is not necessary if the Invert import option was used to invert the depth map in Godot 3.x, in which case [member heightmap_flip_texture] should remain [code]false[/code]."},{"name":"heightmap_max_layers","type":"int","description":"The number of layers to use for parallax occlusion mapping when the camera is up close to the material. Higher values result in a more convincing depth effect, especially in materials that have steep height changes. Higher values have a significant cost on the GPU, so it should only be increased on materials where it makes a significant visual difference.\n\t\t\t[b]Note:[/b] Only effective if [member heightmap_deep_parallax] is [code]true[/code]."},{"name":"heightmap_min_layers","type":"int","description":"The number of layers to use for parallax occlusion mapping when the camera is far away from the material. Higher values result in a more convincing depth effect, especially in materials that have steep height changes. Higher values have a significant cost on the GPU, so it should only be increased on materials where it makes a significant visual difference.\n\t\t\t[b]Note:[/b] Only effective if [member heightmap_deep_parallax] is [code]true[/code]."},{"name":"heightmap_scale","type":"float","description":"The heightmap scale to use for the parallax effect (see [member heightmap_enabled]). The default value is tuned so that the highest point (value = 255) appears to be 5 cm higher than the lowest point (value = 0). Higher values result in a deeper appearance, but may result in artifacts appearing when looking at the material from oblique angles, especially when the camera moves. Negative values can be used to invert the parallax effect, but this is different from inverting the texture using [member heightmap_flip_texture] as the material will also appear to be \"closer\" to the camera. In most cases, [member heightmap_scale] should be kept to a positive value.\n\t\t\t[b]Note:[/b] If the height map effect looks strange regardless of this value, try adjusting [member heightmap_flip_binormal] and [member heightmap_flip_tangent]. See also [member heightmap_texture] for recommendations on authoring heightmap textures, as the way the heightmap texture is authored affects how [member heightmap_scale] behaves."},{"name":"heightmap_texture","type":"Texture2D","description":"The texture to use as a height map. See also [member heightmap_enabled].\n\t\t\tFor best results, the texture should be normalized (with [member heightmap_scale] reduced to compensate). In [url=https://gimp.org]GIMP[/url], this can be done using [b]Colors &gt; Auto &gt; Equalize[/b]. If the texture only uses a small part of its available range, the parallax effect may look strange, especially when the camera moves.\n\t\t\t[b]Note:[/b] To reduce memory usage and improve loading times, you may be able to use a lower-resolution heightmap texture as most heightmaps are only comprised of low-frequency data."},{"name":"metallic","type":"float","description":"A high value makes the material appear more like a metal. Non-metals use their albedo as the diffuse color and add diffuse to the specular reflection. With non-metals, the reflection appears on top of the albedo color. Metals use their albedo as a multiplier to the specular reflection and set the diffuse color to black resulting in a tinted reflection. Materials work better when fully metal or fully non-metal, values between [code]0[/code] and [code]1[/code] should only be used for blending between metal and non-metal sections. To alter the amount of reflection use [member roughness]."},{"name":"metallic_specular","type":"float","description":"Adjusts the strength of specular reflections. Specular reflections are composed of scene reflections and the specular lobe which is the bright spot that is reflected from light sources. When set to [code]0.0[/code], no specular reflections will be visible. This differs from the [constant SPECULAR_DISABLED] [enum SpecularMode] as [constant SPECULAR_DISABLED] only applies to the specular lobe from the light source.\n\t\t\t[b]Note:[/b] Unlike [member metallic], this is not energy-conserving, so it should be left at [code]0.5[/code] in most cases. See also [member roughness]."},{"name":"metallic_texture","type":"Texture2D","description":"Texture used to specify metallic for an object. This is multiplied by [member metallic]."},{"name":"metallic_texture_channel","type":"int","description":"Specifies the channel of the [member metallic_texture] in which the metallic information is stored. This is useful when you store the information for multiple effects in a single texture. For example if you stored metallic in the red channel, roughness in the blue, and ambient occlusion in the green you could reduce the number of textures you use."},{"name":"msdf_outline_size","type":"float","description":"The width of the shape outline."},{"name":"msdf_pixel_range","type":"float","description":"The width of the range around the shape between the minimum and maximum representable signed distance."},{"name":"no_depth_test","type":"bool","description":"If [code]true[/code], depth testing is disabled and the object will be drawn in render order."},{"name":"normal_enabled","type":"bool","description":"If [code]true[/code], normal mapping is enabled. This has a slight performance cost, especially on mobile GPUs."},{"name":"normal_scale","type":"float","description":"The strength of the normal map's effect."},{"name":"normal_texture","type":"Texture2D","description":"Texture used to specify the normal at a given pixel. The [member normal_texture] only uses the red and green channels; the blue and alpha channels are ignored. The normal read from [member normal_texture] is oriented around the surface normal provided by the [Mesh].\n\t\t\t[b]Note:[/b] The mesh must have both normals and tangents defined in its vertex data. Otherwise, the normal map won't render correctly and will only appear to darken the whole surface. If creating geometry with [SurfaceTool], you can use [method SurfaceTool.generate_normals] and [method SurfaceTool.generate_tangents] to automatically generate normals and tangents respectively.\n\t\t\t[b]Note:[/b] Godot expects the normal map to use X+, Y+, and Z+ coordinates. See [url=http://wiki.polycount.com/wiki/Normal_Map_Technical_Details#Common_Swizzle_Coordinates]this page[/url] for a comparison of normal map coordinates expected by popular engines.\n\t\t\t[b]Note:[/b] If [member detail_enabled] is [code]true[/code], the [member detail_albedo] texture is drawn [i]below[/i] the [member normal_texture]. To display a normal map [i]above[/i] the [member detail_albedo] texture, use [member detail_normal] instead."},{"name":"orm_texture","type":"Texture2D","description":"The Occlusion/Roughness/Metallic texture to use. This is a more efficient replacement of [member ao_texture], [member roughness_texture] and [member metallic_texture] in [ORMMaterial3D]. Ambient occlusion is stored in the red channel. Roughness map is stored in the green channel. Metallic map is stored in the blue channel. The alpha channel is ignored."},{"name":"particles_anim_h_frames","type":"int","description":"The number of horizontal frames in the particle sprite sheet. Only enabled when using [constant BILLBOARD_PARTICLES]. See [member billboard_mode]."},{"name":"particles_anim_loop","type":"bool","description":"If [code]true[/code], particle animations are looped. Only enabled when using [constant BILLBOARD_PARTICLES]. See [member billboard_mode]."},{"name":"particles_anim_v_frames","type":"int","description":"The number of vertical frames in the particle sprite sheet. Only enabled when using [constant BILLBOARD_PARTICLES]. See [member billboard_mode]."},{"name":"point_size","type":"float","description":"The point size in pixels. See [member use_point_size]."},{"name":"proximity_fade_distance","type":"float","description":"Distance over which the fade effect takes place. The larger the distance the longer it takes for an object to fade."},{"name":"proximity_fade_enabled","type":"bool","description":"If [code]true[/code], the proximity fade effect is enabled. The proximity fade effect fades out each pixel based on its distance to another object."},{"name":"refraction_enabled","type":"bool","description":"If [code]true[/code], the refraction effect is enabled. Distorts transparency based on light from behind the object.\n\t\t\t[b]Note:[/b] Refraction is implemented using the screen texture. Only opaque materials will appear in the refraction, since transparent materials do not appear in the screen texture."},{"name":"refraction_scale","type":"float","description":"The strength of the refraction effect."},{"name":"refraction_texture","type":"Texture2D","description":"Texture that controls the strength of the refraction per-pixel. Multiplied by [member refraction_scale]."},{"name":"refraction_texture_channel","type":"int","description":"Specifies the channel of the [member refraction_texture] in which the refraction information is stored. This is useful when you store the information for multiple effects in a single texture. For example if you stored refraction in the red channel, roughness in the blue, and ambient occlusion in the green you could reduce the number of textures you use."},{"name":"rim","type":"float","description":"Sets the strength of the rim lighting effect."},{"name":"rim_enabled","type":"bool","description":"If [code]true[/code], rim effect is enabled. Rim lighting increases the brightness at glancing angles on an object.\n\t\t\t[b]Note:[/b] Rim lighting is not visible if the material's [member shading_mode] is [constant SHADING_MODE_UNSHADED]."},{"name":"rim_texture","type":"Texture2D","description":"Texture used to set the strength of the rim lighting effect per-pixel. Multiplied by [member rim]."},{"name":"rim_tint","type":"float","description":"The amount of to blend light and albedo color when rendering rim effect. If [code]0[/code] the light color is used, while [code]1[/code] means albedo color is used. An intermediate value generally works best."},{"name":"roughness","type":"float","description":"Surface reflection. A value of [code]0[/code] represents a perfect mirror while a value of [code]1[/code] completely blurs the reflection. See also [member metallic]."},{"name":"roughness_texture","type":"Texture2D","description":"Texture used to control the roughness per-pixel. Multiplied by [member roughness]."},{"name":"roughness_texture_channel","type":"int","description":"Specifies the channel of the [member roughness_texture] in which the roughness information is stored. This is useful when you store the information for multiple effects in a single texture. For example if you stored metallic in the red channel, roughness in the blue, and ambient occlusion in the green you could reduce the number of textures you use."},{"name":"shading_mode","type":"int","description":"Sets whether the shading takes place, per-pixel, per-vertex or unshaded. Per-vertex lighting is faster, making it the best choice for mobile applications, however it looks considerably worse than per-pixel. Unshaded rendering is the fastest, but disables all interactions with lights."},{"name":"shadow_to_opacity","type":"bool","description":"If [code]true[/code], enables the \"shadow to opacity\" render mode where lighting modifies the alpha so shadowed areas are opaque and non-shadowed areas are transparent. Useful for overlaying shadows onto a camera feed in AR."},{"name":"specular_mode","type":"int","description":"The method for rendering the specular blob. See [enum SpecularMode].\n\t\t\t[b]Note:[/b] [member specular_mode] only applies to the specular blob. It does not affect specular reflections from the sky, screen-space reflections, [VoxelGI], SDFGI or [ReflectionProbe]s. To disable reflections from these sources as well, set [member metallic_specular] to [code]0.0[/code] instead."},{"name":"subsurf_scatter_enabled","type":"bool","description":"If [code]true[/code], subsurface scattering is enabled. Emulates light that penetrates an object's surface, is scattered, and then emerges. Subsurface scattering quality is controlled by [member ProjectSettings.rendering/environment/subsurface_scattering/subsurface_scattering_quality]."},{"name":"subsurf_scatter_skin_mode","type":"bool","description":"If [code]true[/code], subsurface scattering will use a special mode optimized for the color and density of human skin, such as boosting the intensity of the red channel in subsurface scattering."},{"name":"subsurf_scatter_strength","type":"float","description":"The strength of the subsurface scattering effect. The depth of the effect is also controlled by [member ProjectSettings.rendering/environment/subsurface_scattering/subsurface_scattering_scale], which is set globally."},{"name":"subsurf_scatter_texture","type":"Texture2D","description":"Texture used to control the subsurface scattering strength. Stored in the red texture channel. Multiplied by [member subsurf_scatter_strength]."},{"name":"subsurf_scatter_transmittance_boost","type":"float","description":"The intensity of the subsurface scattering transmittance effect."},{"name":"subsurf_scatter_transmittance_color","type":"Color","description":"The color to multiply the subsurface scattering transmittance effect with. Ignored if [member subsurf_scatter_skin_mode] is [code]true[/code]."},{"name":"subsurf_scatter_transmittance_depth","type":"float","description":"The depth of the subsurface scattering transmittance effect."},{"name":"subsurf_scatter_transmittance_enabled","type":"bool","description":"If [code]true[/code], enables subsurface scattering transmittance. Only effective if [member subsurf_scatter_enabled] is [code]true[/code]. See also [member backlight_enabled]."},{"name":"subsurf_scatter_transmittance_texture","type":"Texture2D","description":"The texture to use for multiplying the intensity of the subsurface scattering transmittance intensity. See also [member subsurf_scatter_texture]. Ignored if [member subsurf_scatter_skin_mode] is [code]true[/code]."},{"name":"texture_filter","type":"int","description":"Filter flags for the texture. See [enum TextureFilter] for options.\n\t\t\t[b]Note:[/b] [member heightmap_texture] is always sampled with linear filtering, even if nearest-neighbor filtering is selected here. This is to ensure the heightmap effect looks as intended. If you need sharper height transitions between pixels, resize the heightmap texture in an image editor with nearest-neighbor filtering."},{"name":"texture_repeat","type":"bool","description":"Repeat flags for the texture. See [enum TextureFilter] for options."},{"name":"transparency","type":"int","description":"The material's transparency mode. Some transparency modes will disable shadow casting. Any transparency mode other than [constant TRANSPARENCY_DISABLED] has a greater performance impact compared to opaque rendering. See also [member blend_mode]."},{"name":"use_particle_trails","type":"bool","description":"If [code]true[/code], enables parts of the shader required for [GPUParticles3D] trails to function. This also requires using a mesh with appropriate skinning, such as [RibbonTrailMesh] or [TubeTrailMesh]. Enabling this feature outside of materials used in [GPUParticles3D] meshes will break material rendering."},{"name":"use_point_size","type":"bool","description":"If [code]true[/code], render point size can be changed.\n\t\t\t[b]Note:[/b] This is only effective for objects whose geometry is point-based rather than triangle-based. See also [member point_size]."},{"name":"uv1_offset","type":"Vector3","description":"How much to offset the [code]UV[/code] coordinates. This amount will be added to [code]UV[/code] in the vertex function. This can be used to offset a texture. The Z component is used when [member uv1_triplanar] is enabled, but it is not used anywhere else."},{"name":"uv1_scale","type":"Vector3","description":"How much to scale the [code]UV[/code] coordinates. This is multiplied by [code]UV[/code] in the vertex function. The Z component is used when [member uv1_triplanar] is enabled, but it is not used anywhere else."},{"name":"uv1_triplanar","type":"bool","description":"If [code]true[/code], instead of using [code]UV[/code] textures will use a triplanar texture lookup to determine how to apply textures. Triplanar uses the orientation of the object's surface to blend between texture coordinates. It reads from the source texture 3 times, once for each axis and then blends between the results based on how closely the pixel aligns with each axis. This is often used for natural features to get a realistic blend of materials. Because triplanar texturing requires many more texture reads per-pixel it is much slower than normal UV texturing. Additionally, because it is blending the texture between the three axes, it is unsuitable when you are trying to achieve crisp texturing."},{"name":"uv1_triplanar_sharpness","type":"float","description":"A lower number blends the texture more softly while a higher number blends the texture more sharply.\n\t\t\t[b]Note:[/b] [member uv1_triplanar_sharpness] is clamped between [code]0.0[/code] and [code]150.0[/code] (inclusive) as values outside that range can look broken depending on the mesh."},{"name":"uv1_world_triplanar","type":"bool","description":"If [code]true[/code], triplanar mapping for [code]UV[/code] is calculated in world space rather than object local space. See also [member uv1_triplanar]."},{"name":"uv2_offset","type":"Vector3","description":"How much to offset the [code]UV2[/code] coordinates. This amount will be added to [code]UV2[/code] in the vertex function. This can be used to offset a texture. The Z component is used when [member uv2_triplanar] is enabled, but it is not used anywhere else."},{"name":"uv2_scale","type":"Vector3","description":"How much to scale the [code]UV2[/code] coordinates. This is multiplied by [code]UV2[/code] in the vertex function. The Z component is used when [member uv2_triplanar] is enabled, but it is not used anywhere else."},{"name":"uv2_triplanar","type":"bool","description":"If [code]true[/code], instead of using [code]UV2[/code] textures will use a triplanar texture lookup to determine how to apply textures. Triplanar uses the orientation of the object's surface to blend between texture coordinates. It reads from the source texture 3 times, once for each axis and then blends between the results based on how closely the pixel aligns with each axis. This is often used for natural features to get a realistic blend of materials. Because triplanar texturing requires many more texture reads per-pixel it is much slower than normal UV texturing. Additionally, because it is blending the texture between the three axes, it is unsuitable when you are trying to achieve crisp texturing."},{"name":"uv2_triplanar_sharpness","type":"float","description":"A lower number blends the texture more softly while a higher number blends the texture more sharply.\n\t\t\t[b]Note:[/b] [member uv2_triplanar_sharpness] is clamped between [code]0.0[/code] and [code]150.0[/code] (inclusive) as values outside that range can look broken depending on the mesh."},{"name":"uv2_world_triplanar","type":"bool","description":"If [code]true[/code], triplanar mapping for [code]UV2[/code] is calculated in world space rather than object local space. See also [member uv2_triplanar]."},{"name":"vertex_color_is_srgb","type":"bool","description":"If [code]true[/code], vertex colors are considered to be stored in sRGB color space and are converted to linear color space during rendering. If [code]false[/code], vertex colors are considered to be stored in linear color space and are rendered as-is. See also [member albedo_texture_force_srgb].\n\t\t\t[b]Note:[/b] Only effective when using the Forward+ and Mobile rendering methods, not Compatibility."},{"name":"vertex_color_use_as_albedo","type":"bool","description":"If [code]true[/code], the vertex color is used as albedo color."}],"methods":[{"name":"get_feature","signature":"get_feature(feature: int) -> bool","description":"Returns true, if the specified [enum Feature] is enabled.","returnType":"bool"},{"name":"get_flag","signature":"get_flag(flag: int) -> bool","description":"Returns true, if the specified flag is enabled. See [enum Flags] enumerator for options.","returnType":"bool"},{"name":"get_texture","signature":"get_texture(param: int) -> Texture2D","description":"Returns the  associated with the specified [enum TextureParam].","returnType":"Texture2D"},{"name":"set_feature","signature":"set_feature(feature: int, enable: bool) -> void","description":"If true, enables the specified [enum Feature]. Many features that are available in s need to be enabled before use. This way the cost for using the feature is only incurred when specified. Features can also be enabled by setting the corresponding member to true.","returnType":"void"},{"name":"set_flag","signature":"set_flag(flag: int, enable: bool) -> void","description":"If true, enables the specified flag. Flags are optional behavior that can be turned on and off. Only one flag can be enabled at a time with this function, the flag enumerators cannot be bit-masked together to enable or disable multiple flags at once. Flags can also be enabled by setting the corresponding member to true. See [enum Flags] enumerator for options.","returnType":"void"},{"name":"set_texture","signature":"set_texture(param: int, texture: Texture2D) -> void","description":"Sets the texture for the slot specified by [param param]. See [enum TextureParam] for available slots.","returnType":"void"}],"signals":[]},"Basis":{"name":"Basis","description":"A 3×3 matrix for representing 3D rotation and scale.","inherits":"","properties":[{"name":"x","type":"Vector3","description":"The basis's X axis, and the column [code]0[/code] of the matrix.\n\t\t\tOn the identity basis, this vector points right ([constant Vector3.RIGHT])."},{"name":"y","type":"Vector3","description":"The basis's Y axis, and the column [code]1[/code] of the matrix.\n\t\t\tOn the identity basis, this vector points up ([constant Vector3.UP])."},{"name":"z","type":"Vector3","description":"The basis's Z axis, and the column [code]2[/code] of the matrix.\n\t\t\tOn the identity basis, this vector points back ([constant Vector3.BACK])."}],"methods":[{"name":"determinant","signature":"determinant() -> float","description":"Returns the [url=https://en.wikipedia.org/wiki/Determinant]determinant of this basis's matrix. For advanced math, this number can be used to determine a few attributes:\n\t\t\t\t- If the determinant is exactly 0.0, the basis is not invertible (see [method inverse]).\n\t\t\t\t- If the determinant is a negative number, the basis represents a negative scale.\n\t\t\t\tNote: If the basis's scale is the same for every axis, its determinant is always that scale by the power of 2.","returnType":"float"},{"name":"from_euler","signature":"from_euler(euler: Vector3, order: int) -> Basis","description":"Constructs a new  that only represents rotation from the given  of [url=https://en.wikipedia.org/wiki/Euler_angles]Euler angles, in radians.\n\t\t\t\t- The [member Vector3.x] should contain the angle around the [member x] axis (pitch);\n\t\t\t\t- The [member Vector3.y] should contain the angle around the [member y] axis (yaw);\n\t\t\t\t- The [member Vector3.z] should contain the angle around the [member z] axis (roll).\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t# Creates a Basis whose z axis points down.\n\t\t\t\tvar my_basis = Basis.from_euler(Vector3(TAU / 4, 0, 0))\n\n\t\t\t\tprint(my_basis.z) # Prints (0.0, -1.0, 0.0)\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t// Creates a Basis whose z axis points down.\n\t\t\t\tvar myBasis = Basis.FromEuler(new Vector3(Mathf.Tau / 4.0f, 0.0f, 0.0f));\n\n\t\t\t\tGD.Print(myBasis.Z); // Prints (0, -1, 0)\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tThe order of each consecutive rotation can be changed with [param order] (see [enum EulerOrder] constants). By default, the YXZ convention is used ([constant EULER_ORDER_YXZ]): the basis rotates first around the Y axis (yaw), then X (pitch), and lastly Z (roll). When using the opposite method [method get_euler], this order is reversed.","returnType":"Basis"},{"name":"from_scale","signature":"from_scale(scale: Vector3) -> Basis","description":"Constructs a new  that only represents scale, with no rotation or shear, from the given [param scale] vector.\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tvar my_basis = Basis.from_scale(Vector3(2, 4, 8))\n\n\t\t\t\tprint(my_basis.x) # Prints (2.0, 0.0, 0.0)\n\t\t\t\tprint(my_basis.y) # Prints (0.0, 4.0, 0.0)\n\t\t\t\tprint(my_basis.z) # Prints (0.0, 0.0, 8.0)\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tvar myBasis = Basis.FromScale(new Vector3(2.0f, 4.0f, 8.0f));\n\n\t\t\t\tGD.Print(myBasis.X); // Prints (2, 0, 0)\n\t\t\t\tGD.Print(myBasis.Y); // Prints (0, 4, 0)\n\t\t\t\tGD.Print(myBasis.Z); // Prints (0, 0, 8)\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tNote: In linear algebra, the matrix of this basis is also known as a [url=https://en.wikipedia.org/wiki/Diagonal_matrix]diagonal matrix.","returnType":"Basis"},{"name":"get_euler","signature":"get_euler(order: int) -> Vector3","description":"Returns this basis's rotation as a  of [url=https://en.wikipedia.org/wiki/Euler_angles]Euler angles, in radians. For the returned value:\n\t\t\t\t- The [member Vector3.x] contains the angle around the [member x] axis (pitch);\n\t\t\t\t- The [member Vector3.y] contains the angle around the [member y] axis (yaw);\n\t\t\t\t- The [member Vector3.z] contains the angle around the [member z] axis (roll).\n\t\t\t\tThe order of each consecutive rotation can be changed with [param order] (see [enum EulerOrder] constants). By default, the YXZ convention is used ([constant EULER_ORDER_YXZ]): Z (roll) is calculated first, then X (pitch), and lastly Y (yaw). When using the opposite method [method from_euler], this order is reversed.\n\t\t\t\tNote: For this method to return correctly, the basis needs to be orthonormal (see [method orthonormalized]).\n\t\t\t\tNote: Euler angles are much more intuitive but are not suitable for 3D math. Because of this, consider using the [method get_rotation_quaternion] method instead, which returns a .\n\t\t\t\tNote: In the Inspector dock, a basis's rotation is often displayed in Euler angles (in degrees), as is the case with the [member Node3D.rotation] property.","returnType":"Vector3"},{"name":"get_rotation_quaternion","signature":"get_rotation_quaternion() -> Quaternion","description":"Returns this basis's rotation as a .\n\t\t\t\tNote: Quaternions are much more suitable for 3D math but are less intuitive. For user interfaces, consider using the [method get_euler] method, which returns Euler angles.","returnType":"Quaternion"},{"name":"get_scale","signature":"get_scale() -> Vector3","description":"Returns the length of each axis of this basis, as a . If the basis is not sheared, this value is the scaling factor. It is not affected by rotation.\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tvar my_basis = Basis(\n\t\t\t\t    Vector3(2, 0, 0),\n\t\t\t\t    Vector3(0, 4, 0),\n\t\t\t\t    Vector3(0, 0, 8)\n\t\t\t\t)\n\t\t\t\t# Rotating the Basis in any way preserves its scale.\n\t\t\t\tmy_basis = my_basis.rotated(Vector3.UP, TAU / 2)\n\t\t\t\tmy_basis = my_basis.rotated(Vector3.RIGHT, TAU / 4)\n\n\t\t\t\tprint(my_basis.get_scale()) # Prints (2.0, 4.0, 8.0)\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tvar myBasis = new Basis(\n\t\t\t\t    Vector3(2.0f, 0.0f, 0.0f),\n\t\t\t\t    Vector3(0.0f, 4.0f, 0.0f),\n\t\t\t\t    Vector3(0.0f, 0.0f, 8.0f)\n\t\t\t\t);\n\t\t\t\t// Rotating the Basis in any way preserves its scale.\n\t\t\t\tmyBasis = myBasis.Rotated(Vector3.Up, Mathf.Tau / 2.0f);\n\t\t\t\tmyBasis = myBasis.Rotated(Vector3.Right, Mathf.Tau / 4.0f);\n\n\t\t\t\tGD.Print(myBasis.Scale); // Prints (2, 4, 8)\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tNote: If the value returned by [method determinant] is negative, the scale is also negative.","returnType":"Vector3"},{"name":"inverse","signature":"inverse() -> Basis","description":"Returns the [url=https://en.wikipedia.org/wiki/Invertible_matrix]inverse of this basis's matrix.","returnType":"Basis"},{"name":"is_conformal","signature":"is_conformal() -> bool","description":"Returns true if this basis is conformal. A conformal basis is both orthogonal (the axes are perpendicular to each other) and uniform (the axes share the same length). This method can be especially useful during physics calculations.","returnType":"bool"},{"name":"is_equal_approx","signature":"is_equal_approx(b: Basis) -> bool","description":"Returns true if this basis and [param b] are approximately equal, by calling [method @GlobalScope.is_equal_approx] on all vector components.","returnType":"bool"},{"name":"is_finite","signature":"is_finite() -> bool","description":"Returns true if this basis is finite, by calling [method @GlobalScope.is_finite] on all vector components.","returnType":"bool"},{"name":"looking_at","signature":"looking_at(target: Vector3, up: Vector3, use_model_front: bool) -> Basis","description":"Creates a new  with a rotation such that the forward axis (-Z) points towards the [param target] position.\n\t\t\t\tBy default, the -Z axis (camera forward) is treated as forward (implies +X is right). If [param use_model_front] is true, the +Z axis (asset front) is treated as forward (implies +X is left) and points toward the [param target] position.\n\t\t\t\tThe up axis (+Y) points as close to the [param up] vector as possible while staying perpendicular to the forward axis. The returned basis is orthonormalized (see [method orthonormalized]).\n\t\t\t\tThe [param target] and the [param up] cannot be [constant Vector3.ZERO], and shouldn't be colinear to avoid unintended rotation around local Z axis.","returnType":"Basis"},{"name":"orthonormalized","signature":"orthonormalized() -> Basis","description":"Returns the orthonormalized version of this basis. An orthonormal basis is both orthogonal (the axes are perpendicular to each other) and normalized (the axes have a length of 1.0), which also means it can only represent a rotation.\n\t\t\t\tIt is often useful to call this method to avoid rounding errors on a rotating basis:\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t# Rotate this Node3D every frame.\n\t\t\t\tfunc _process(delta):\n\t\t\t\t    basis = basis.rotated(Vector3.UP, TAU * delta)\n\t\t\t\t    basis = basis.rotated(Vector3.RIGHT, TAU * delta)\n\n\t\t\t\t    basis = basis.orthonormalized()\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t// Rotate this Node3D every frame.\n\t\t\t\tpublic override void _Process(double delta)\n\t\t\t\t{\n\t\t\t\t    Basis = Basis.Rotated(Vector3.Up, Mathf.Tau * (float)delta)\n\t\t\t\t                 .Rotated(Vector3.Right, Mathf.Tau * (float)delta)\n\t\t\t\t                 .Orthonormalized();\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t","returnType":"Basis"},{"name":"rotated","signature":"rotated(axis: Vector3, angle: float) -> Basis","description":"Returns a copy of this basis rotated around the given [param axis] by the given [param angle] (in radians).\n\t\t\t\tThe [param axis] must be a normalized vector (see [method Vector3.normalized]). If [param angle] is positive, the basis is rotated counter-clockwise around the axis.\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tvar my_basis = Basis.IDENTITY\n\t\t\t\tvar angle = TAU / 2\n\n\t\t\t\tmy_basis = my_basis.rotated(Vector3.UP, angle)    # Rotate around the up axis (yaw).\n\t\t\t\tmy_basis = my_basis.rotated(Vector3.RIGHT, angle) # Rotate around the right axis (pitch).\n\t\t\t\tmy_basis = my_basis.rotated(Vector3.BACK, angle)  # Rotate around the back axis (roll).\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tvar myBasis = Basis.Identity;\n\t\t\t\tvar angle = Mathf.Tau / 2.0f;\n\n\t\t\t\tmyBasis = myBasis.Rotated(Vector3.Up, angle);    // Rotate around the up axis (yaw).\n\t\t\t\tmyBasis = myBasis.Rotated(Vector3.Right, angle); // Rotate around the right axis (pitch).\n\t\t\t\tmyBasis = myBasis.Rotated(Vector3.Back, angle);  // Rotate around the back axis (roll).\n\t\t\t\t\n\t\t\t\t","returnType":"Basis"},{"name":"scaled","signature":"scaled(scale: Vector3) -> Basis","description":"Returns this basis with each axis's components scaled by the given [param scale]'s components.\n\t\t\t\tThe basis matrix's rows are multiplied by [param scale]'s components. This operation is a global scale (relative to the parent).\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tvar my_basis = Basis(\n\t\t\t\t    Vector3(1, 1, 1),\n\t\t\t\t    Vector3(2, 2, 2),\n\t\t\t\t    Vector3(3, 3, 3)\n\t\t\t\t)\n\t\t\t\tmy_basis = my_basis.scaled(Vector3(0, 2, -2))\n\n\t\t\t\tprint(my_basis.x) # Prints (0.0, 2.0, -2.0)\n\t\t\t\tprint(my_basis.y) # Prints (0.0, 4.0, -4.0)\n\t\t\t\tprint(my_basis.z) # Prints (0.0, 6.0, -6.0)\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tvar myBasis = new Basis(\n\t\t\t\t    new Vector3(1.0f, 1.0f, 1.0f),\n\t\t\t\t    new Vector3(2.0f, 2.0f, 2.0f),\n\t\t\t\t    new Vector3(3.0f, 3.0f, 3.0f)\n\t\t\t\t);\n\t\t\t\tmyBasis = myBasis.Scaled(new Vector3(0.0f, 2.0f, -2.0f));\n\n\t\t\t\tGD.Print(myBasis.X); // Prints (0, 2, -2)\n\t\t\t\tGD.Print(myBasis.Y); // Prints (0, 4, -4)\n\t\t\t\tGD.Print(myBasis.Z); // Prints (0, 6, -6)\n\t\t\t\t\n\t\t\t\t","returnType":"Basis"},{"name":"slerp","signature":"slerp(to: Basis, weight: float) -> Basis","description":"Performs a spherical-linear interpolation with the [param to] basis, given a [param weight]. Both this basis and [param to] should represent a rotation.\n\t\t\t\tExample: Smoothly rotate a  to the target basis over time, with a :\n\t\t\t\t\n\t\t\t\tvar start_basis = Basis.IDENTITY\n\t\t\t\tvar target_basis = Basis.IDENTITY.rotated(Vector3.UP, TAU / 2)\n\n\t\t\t\tfunc _ready():\n\t\t\t\t    create_tween().tween_method(interpolate, 0.0, 1.0, 5.0).set_trans(Tween.TRANS_EXPO)\n\n\t\t\t\tfunc interpolate(weight):\n\t\t\t\t    basis = start_basis.slerp(target_basis, weight)\n\t\t\t\t","returnType":"Basis"},{"name":"tdotx","signature":"tdotx(with: Vector3) -> float","description":"Returns the transposed dot product between [param with] and the [member x] axis (see [method transposed]).\n\t\t\t\tThis is equivalent to basis.x.dot(vector).","returnType":"float"},{"name":"tdoty","signature":"tdoty(with: Vector3) -> float","description":"Returns the transposed dot product between [param with] and the [member y] axis (see [method transposed]).\n\t\t\t\tThis is equivalent to basis.y.dot(vector).","returnType":"float"},{"name":"tdotz","signature":"tdotz(with: Vector3) -> float","description":"Returns the transposed dot product between [param with] and the [member z] axis (see [method transposed]).\n\t\t\t\tThis is equivalent to basis.z.dot(vector).","returnType":"float"},{"name":"transposed","signature":"transposed() -> Basis","description":"Returns the transposed version of this basis. This turns the basis matrix's columns into rows, and its rows into columns.\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tvar my_basis = Basis(\n\t\t\t\t    Vector3(1, 2, 3),\n\t\t\t\t    Vector3(4, 5, 6),\n\t\t\t\t    Vector3(7, 8, 9)\n\t\t\t\t)\n\t\t\t\tmy_basis = my_basis.transposed()\n\n\t\t\t\tprint(my_basis.x) # Prints (1.0, 4.0, 7.0)\n\t\t\t\tprint(my_basis.y) # Prints (2.0, 5.0, 8.0)\n\t\t\t\tprint(my_basis.z) # Prints (3.0, 6.0, 9.0)\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tvar myBasis = new Basis(\n\t\t\t\t    new Vector3(1.0f, 2.0f, 3.0f),\n\t\t\t\t    new Vector3(4.0f, 5.0f, 6.0f),\n\t\t\t\t    new Vector3(7.0f, 8.0f, 9.0f)\n\t\t\t\t);\n\t\t\t\tmyBasis = myBasis.Transposed();\n\n\t\t\t\tGD.Print(myBasis.X); // Prints (1, 4, 7)\n\t\t\t\tGD.Print(myBasis.Y); // Prints (2, 5, 8)\n\t\t\t\tGD.Print(myBasis.Z); // Prints (3, 6, 9)\n\t\t\t\t\n\t\t\t\t","returnType":"Basis"}],"signals":[]},"BitMap":{"name":"BitMap","description":"Boolean matrix.","inherits":"Resource","properties":[],"methods":[{"name":"convert_to_image","signature":"convert_to_image() -> Image","description":"Returns an image of the same size as the bitmap and with a [enum Image.Format] of type [constant Image.FORMAT_L8]. true bits of the bitmap are being converted into white pixels, and false bits into black.","returnType":"Image"},{"name":"create","signature":"create(size: Vector2i) -> void","description":"Creates a bitmap with the specified size, filled with false.","returnType":"void"},{"name":"create_from_image_alpha","signature":"create_from_image_alpha(image: Image, threshold: float) -> void","description":"Creates a bitmap that matches the given image dimensions, every element of the bitmap is set to false if the alpha value of the image at that position is equal to [param threshold] or less, and true in other case.","returnType":"void"},{"name":"get_bit","signature":"get_bit(x: int, y: int) -> bool","description":"Returns bitmap's value at the specified position.","returnType":"bool"},{"name":"get_bitv","signature":"get_bitv(position: Vector2i) -> bool","description":"Returns bitmap's value at the specified position.","returnType":"bool"},{"name":"get_size","signature":"get_size() -> Vector2i","description":"Returns bitmap's dimensions.","returnType":"Vector2i"},{"name":"get_true_bit_count","signature":"get_true_bit_count() -> int","description":"Returns the number of bitmap elements that are set to true.","returnType":"int"},{"name":"grow_mask","signature":"grow_mask(pixels: int, rect: Rect2i) -> void","description":"Applies morphological dilation or erosion to the bitmap. If [param pixels] is positive, dilation is applied to the bitmap. If [param pixels] is negative, erosion is applied to the bitmap. [param rect] defines the area where the morphological operation is applied. Pixels located outside the [param rect] are unaffected by [method grow_mask].","returnType":"void"},{"name":"opaque_to_polygons","signature":"opaque_to_polygons(rect: Rect2i, epsilon: float) -> PackedVector2Array[]","description":"Creates an  of polygons covering a rectangular portion of the bitmap. It uses a marching squares algorithm, followed by Ramer-Douglas-Peucker (RDP) reduction of the number of vertices. Each polygon is described as a  of its vertices.\n\t\t\t\tTo get polygons covering the whole bitmap, pass:\n\t\t\t\t\n\t\t\t\tRect2(Vector2(), get_size())\n\t\t\t\t\n\t\t\t\t[param epsilon] is passed to RDP to control how accurately the polygons cover the bitmap: a lower [param epsilon] corresponds to more points in the polygons.","returnType":"PackedVector2Array[]"},{"name":"resize","signature":"resize(new_size: Vector2i) -> void","description":"Resizes the image to [param new_size].","returnType":"void"},{"name":"set_bit","signature":"set_bit(x: int, y: int, bit: bool) -> void","description":"Sets the bitmap's element at the specified position, to the specified value.","returnType":"void"},{"name":"set_bit_rect","signature":"set_bit_rect(rect: Rect2i, bit: bool) -> void","description":"Sets a rectangular portion of the bitmap to the specified value.","returnType":"void"},{"name":"set_bitv","signature":"set_bitv(position: Vector2i, bit: bool) -> void","description":"Sets the bitmap's element at the specified position, to the specified value.","returnType":"void"}],"signals":[]},"Bone2D":{"name":"Bone2D","description":"A joint used with  to control and animate other nodes.","inherits":"Node2D","properties":[{"name":"rest","type":"Transform2D","description":"Rest transform of the bone. You can reset the node's transforms to this value using [method apply_rest]."}],"methods":[{"name":"apply_rest","signature":"apply_rest() -> void","description":"Resets the bone to the rest pose. This is equivalent to setting [member Node2D.transform] to [member rest].","returnType":"void"},{"name":"get_autocalculate_length_and_angle","signature":"get_autocalculate_length_and_angle() -> bool","description":"Returns whether this  is going to autocalculate its length and bone angle using its first  child node, if one exists. If there are no  children, then it cannot autocalculate these values and will print a warning.","returnType":"bool"},{"name":"get_bone_angle","signature":"get_bone_angle() -> float","description":"Returns the angle of the bone in the .\n\t\t\t\tNote: This is different from the 's rotation. The bone's angle is the rotation of the bone shown by the gizmo, which is unaffected by the 's [member Node2D.transform].","returnType":"float"},{"name":"get_index_in_skeleton","signature":"get_index_in_skeleton() -> int","description":"Returns the node's index as part of the entire skeleton. See .","returnType":"int"},{"name":"get_length","signature":"get_length() -> float","description":"Returns the length of the bone in the  node.","returnType":"float"},{"name":"get_skeleton_rest","signature":"get_skeleton_rest() -> Transform2D","description":"Returns the node's [member rest]  if it doesn't have a parent, or its rest pose relative to its parent.","returnType":"Transform2D"},{"name":"set_autocalculate_length_and_angle","signature":"set_autocalculate_length_and_angle(auto_calculate: bool) -> void","description":"When set to true, the  node will attempt to automatically calculate the bone angle and length using the first child  node, if one exists. If none exist, the  cannot automatically calculate these values and will print a warning.","returnType":"void"},{"name":"set_bone_angle","signature":"set_bone_angle(angle: float) -> void","description":"Sets the bone angle for the . This is typically set to the rotation from the  to a child  node.\n\t\t\t\tNote: This is different from the 's rotation. The bone's angle is the rotation of the bone shown by the gizmo, which is unaffected by the 's [member Node2D.transform].","returnType":"void"},{"name":"set_length","signature":"set_length(length: float) -> void","description":"Sets the length of the bone in the .","returnType":"void"}],"signals":[]},"BoneAttachment3D":{"name":"BoneAttachment3D","description":"А node that dynamically copies or overrides the 3D transform of a bone in its parent .","inherits":"Node3D","properties":[{"name":"bone_idx","type":"int","description":"The index of the attached bone."},{"name":"bone_name","type":"String","description":"The name of the attached bone."},{"name":"override_pose","type":"bool","description":"Whether the BoneAttachment3D node will override the bone pose of the bone it is attached to. When set to [code]true[/code], the BoneAttachment3D node can change the pose of the bone. When set to [code]false[/code], the BoneAttachment3D will always be set to the bone's transform.\n\t\t\t[b]Note:[/b] This override performs interruptively in the skeleton update process using signals due to the old design. It may cause unintended behavior when used at the same time with [SkeletonModifier3D]."}],"methods":[{"name":"get_external_skeleton","signature":"get_external_skeleton() -> NodePath","description":"Returns the  to the external  node, if one has been set.","returnType":"NodePath"},{"name":"get_skeleton","signature":"get_skeleton() -> Skeleton3D","description":"Get parent or external  node if found.","returnType":"Skeleton3D"},{"name":"get_use_external_skeleton","signature":"get_use_external_skeleton() -> bool","description":"Returns whether the BoneAttachment3D node is using an external  rather than attempting to use its parent node as the .","returnType":"bool"},{"name":"on_skeleton_update","signature":"on_skeleton_update() -> void","description":"A function that is called automatically when the  is updated. This function is where the  node updates its position so it is correctly bound when it is not set to override the bone pose.","returnType":"void"},{"name":"set_external_skeleton","signature":"set_external_skeleton(external_skeleton: NodePath) -> void","description":"Sets the  to the external skeleton that the BoneAttachment3D node should use. See [method set_use_external_skeleton] to enable the external  node.","returnType":"void"},{"name":"set_use_external_skeleton","signature":"set_use_external_skeleton(use_external_skeleton: bool) -> void","description":"Sets whether the BoneAttachment3D node will use an external  node rather than attempting to use its parent node as the . When set to true, the BoneAttachment3D node will use the external  node set in [method set_external_skeleton].","returnType":"void"}],"signals":[]},"BoneMap":{"name":"BoneMap","description":"Describes a mapping of bone names for retargeting  into common names defined by a .","inherits":"Resource","properties":[{"name":"profile","type":"SkeletonProfile","description":"A [SkeletonProfile] of the mapping target. Key names in the [BoneMap] are synchronized with it."}],"methods":[{"name":"find_profile_bone_name","signature":"find_profile_bone_name(skeleton_bone_name: StringName) -> StringName","description":"Returns a profile bone name having [param skeleton_bone_name]. If not found, an empty  will be returned.\n\t\t\t\tIn the retargeting process, the returned bone name is the bone name of the target skeleton.","returnType":"StringName"},{"name":"get_skeleton_bone_name","signature":"get_skeleton_bone_name(profile_bone_name: StringName) -> StringName","description":"Returns a skeleton bone name is mapped to [param profile_bone_name].\n\t\t\t\tIn the retargeting process, the returned bone name is the bone name of the source skeleton.","returnType":"StringName"},{"name":"set_skeleton_bone_name","signature":"set_skeleton_bone_name(profile_bone_name: StringName, skeleton_bone_name: StringName) -> void","description":"Maps a skeleton bone name to [param profile_bone_name].\n\t\t\t\tIn the retargeting process, the setting bone name is the bone name of the source skeleton.","returnType":"void"}],"signals":[{"name":"bone_map_updated","description":"This signal is emitted when change the key value in the [BoneMap]. This is used to validate mapping and to update [BoneMap] editor."},{"name":"profile_updated","description":"This signal is emitted when change the value in profile or change the reference of profile. This is used to update key names in the [BoneMap] and to redraw the [BoneMap] editor."}]},"BoxContainer":{"name":"BoxContainer","description":"A container that arranges its child controls horizontally or vertically.","inherits":"Container","properties":[{"name":"alignment","type":"int","description":"The alignment of the container's children (must be one of [constant ALIGNMENT_BEGIN], [constant ALIGNMENT_CENTER], or [constant ALIGNMENT_END])."},{"name":"vertical","type":"bool","description":"If [code]true[/code], the [BoxContainer] will arrange its children vertically, rather than horizontally.\n\t\t\tCan't be changed when using [HBoxContainer] and [VBoxContainer]."}],"methods":[{"name":"add_spacer","signature":"add_spacer(begin: bool) -> Control","description":"Adds a  node to the box as a spacer. If [param begin] is true, it will insert the  node in front of all other children.","returnType":"Control"}],"signals":[]},"BoxMesh":{"name":"BoxMesh","description":"Generate an axis-aligned box .","inherits":"PrimitiveMesh","properties":[{"name":"size","type":"Vector3","description":"The box's width, height and depth."},{"name":"subdivide_depth","type":"int","description":"Number of extra edge loops inserted along the Z axis."},{"name":"subdivide_height","type":"int","description":"Number of extra edge loops inserted along the Y axis."},{"name":"subdivide_width","type":"int","description":"Number of extra edge loops inserted along the X axis."}],"methods":[],"signals":[]},"BoxOccluder3D":{"name":"BoxOccluder3D","description":"Cuboid shape for use with occlusion culling in .","inherits":"Occluder3D","properties":[{"name":"size","type":"Vector3","description":"The box's size in 3D units."}],"methods":[],"signals":[]},"BoxShape3D":{"name":"BoxShape3D","description":"A 3D box shape used for physics collision.","inherits":"Shape3D","properties":[{"name":"size","type":"Vector3","description":"The box's width, height and depth."}],"methods":[],"signals":[]},"Button":{"name":"Button","description":"A themed button that can contain text and an icon.","inherits":"BaseButton","properties":[{"name":"alignment","type":"int","description":"Text alignment policy for the button's text, use one of the [enum HorizontalAlignment] constants."},{"name":"autowrap_mode","type":"int","description":"If set to something other than [constant TextServer.AUTOWRAP_OFF], the text gets wrapped inside the node's bounding rectangle."},{"name":"clip_text","type":"bool","description":"If [code]true[/code], text that is too large to fit the button is clipped horizontally. If [code]false[/code], the button will always be wide enough to hold the text. The text is not vertically clipped, and the button's height is not affected by this property."},{"name":"expand_icon","type":"bool","description":"When enabled, the button's icon will expand/shrink to fit the button's size while keeping its aspect. See also [theme_item icon_max_width]."},{"name":"flat","type":"bool","description":"Flat buttons don't display decoration."},{"name":"icon","type":"Texture2D","description":"Button's icon, if text is present the icon will be placed before the text.\n\t\t\tTo edit margin and spacing of the icon, use [theme_item h_separation] theme property and [code]content_margin_*[/code] properties of the used [StyleBox]es."},{"name":"icon_alignment","type":"int","description":"Specifies if the icon should be aligned horizontally to the left, right, or center of a button. Uses the same [enum HorizontalAlignment] constants as the text alignment. If centered horizontally and vertically, text will draw on top of the icon."},{"name":"language","type":"String","description":"Language code used for line-breaking and text shaping algorithms, if left empty current locale is used instead."},{"name":"text","type":"String","description":"The button's text that will be displayed inside the button's area."},{"name":"text_direction","type":"int","description":"Base text writing direction."},{"name":"text_overrun_behavior","type":"int","description":"Sets the clipping behavior when the text exceeds the node's bounding rectangle. See [enum TextServer.OverrunBehavior] for a description of all modes."},{"name":"vertical_icon_alignment","type":"int","description":"Specifies if the icon should be aligned vertically to the top, bottom, or center of a button. Uses the same [enum VerticalAlignment] constants as the text alignment. If centered horizontally and vertically, text will draw on top of the icon."}],"methods":[],"signals":[]},"ButtonGroup":{"name":"ButtonGroup","description":"A group of buttons that doesn't allow more than one button to be pressed at a time.","inherits":"Resource","properties":[{"name":"allow_unpress","type":"bool","description":"If [code]true[/code], it is possible to unpress all buttons in this [ButtonGroup]."}],"methods":[{"name":"get_buttons","signature":"get_buttons() -> BaseButton[]","description":"Returns an  of s who have this as their  (see [member BaseButton.button_group]).","returnType":"BaseButton[]"},{"name":"get_pressed_button","signature":"get_pressed_button() -> BaseButton","description":"Returns the current pressed button.","returnType":"BaseButton"}],"signals":[{"name":"pressed","description":"Emitted when one of the buttons of the group is pressed."}]},"CPUParticles2D":{"name":"CPUParticles2D","description":"A CPU-based 2D particle emitter.","inherits":"Node2D","properties":[{"name":"amount","type":"int","description":"Number of particles emitted in one emission cycle."},{"name":"angle_curve","type":"Curve","description":"Each particle's rotation will be animated along this [Curve]. Should be a unit [Curve]."},{"name":"angle_max","type":"float","description":"Maximum initial rotation applied to each particle, in degrees."},{"name":"angle_min","type":"float","description":"Minimum equivalent of [member angle_max]."},{"name":"angular_velocity_curve","type":"Curve","description":"Each particle's angular velocity will vary along this [Curve]. Should be a unit [Curve]."},{"name":"angular_velocity_max","type":"float","description":"Maximum initial angular velocity (rotation speed) applied to each particle in [i]degrees[/i] per second."},{"name":"angular_velocity_min","type":"float","description":"Minimum equivalent of [member angular_velocity_max]."},{"name":"anim_offset_curve","type":"Curve","description":"Each particle's animation offset will vary along this [Curve]. Should be a unit [Curve]."},{"name":"anim_offset_max","type":"float","description":"Maximum animation offset that corresponds to frame index in the texture. [code]0[/code] is the first frame, [code]1[/code] is the last one. See [member CanvasItemMaterial.particles_animation]."},{"name":"anim_offset_min","type":"float","description":"Minimum equivalent of [member anim_offset_max]."},{"name":"anim_speed_curve","type":"Curve","description":"Each particle's animation speed will vary along this [Curve]. Should be a unit [Curve]."},{"name":"anim_speed_max","type":"float","description":"Maximum particle animation speed. Animation speed of [code]1[/code] means that the particles will make full [code]0[/code] to [code]1[/code] offset cycle during lifetime, [code]2[/code] means [code]2[/code] cycles etc.\n\t\t\tWith animation speed greater than [code]1[/code], remember to enable [member CanvasItemMaterial.particles_anim_loop] property if you want the animation to repeat."},{"name":"anim_speed_min","type":"float","description":"Minimum equivalent of [member anim_speed_max]."},{"name":"color","type":"Color","description":"Each particle's initial color. If [member texture] is defined, it will be multiplied by this color."},{"name":"color_initial_ramp","type":"Gradient","description":"Each particle's initial color will vary along this [Gradient] (multiplied with [member color])."},{"name":"color_ramp","type":"Gradient","description":"Each particle's color will vary along this [Gradient] over its lifetime (multiplied with [member color])."},{"name":"damping_curve","type":"Curve","description":"Damping will vary along this [Curve]. Should be a unit [Curve]."},{"name":"damping_max","type":"float","description":"The maximum rate at which particles lose velocity. For example value of [code]100[/code] means that the particle will go from [code]100[/code] velocity to [code]0[/code] in [code]1[/code] second."},{"name":"damping_min","type":"float","description":"Minimum equivalent of [member damping_max]."},{"name":"direction","type":"Vector2","description":"Unit vector specifying the particles' emission direction."},{"name":"draw_order","type":"int","description":"Particle draw order. Uses [enum DrawOrder] values."},{"name":"emission_colors","type":"PackedColorArray","description":"Sets the [Color]s to modulate particles by when using [constant EMISSION_SHAPE_POINTS] or [constant EMISSION_SHAPE_DIRECTED_POINTS]."},{"name":"emission_normals","type":"PackedVector2Array","description":"Sets the direction the particles will be emitted in when using [constant EMISSION_SHAPE_DIRECTED_POINTS]."},{"name":"emission_points","type":"PackedVector2Array","description":"Sets the initial positions to spawn particles when using [constant EMISSION_SHAPE_POINTS] or [constant EMISSION_SHAPE_DIRECTED_POINTS]."},{"name":"emission_rect_extents","type":"Vector2","description":"The rectangle's extents if [member emission_shape] is set to [constant EMISSION_SHAPE_RECTANGLE]."},{"name":"emission_shape","type":"int","description":"Particles will be emitted inside this region. See [enum EmissionShape] for possible values."},{"name":"emission_sphere_radius","type":"float","description":"The sphere's radius if [member emission_shape] is set to [constant EMISSION_SHAPE_SPHERE]."},{"name":"emitting","type":"bool","description":"If [code]true[/code], particles are being emitted. [member emitting] can be used to start and stop particles from emitting. However, if [member one_shot] is [code]true[/code] setting [member emitting] to [code]true[/code] will not restart the emission cycle until after all active particles finish processing. You can use the [signal finished] signal to be notified once all active particles finish processing."},{"name":"explosiveness","type":"float","description":"How rapidly particles in an emission cycle are emitted. If greater than [code]0[/code], there will be a gap in emissions before the next cycle begins."},{"name":"fixed_fps","type":"int","description":"The particle system's frame rate is fixed to a value. For example, changing the value to 2 will make the particles render at 2 frames per second. Note this does not slow down the simulation of the particle system itself."},{"name":"fract_delta","type":"bool","description":"If [code]true[/code], results in fractional delta calculation which has a smoother particles display effect."},{"name":"gravity","type":"Vector2","description":"Gravity applied to every particle."},{"name":"hue_variation_curve","type":"Curve","description":"Each particle's hue will vary along this [Curve]. Should be a unit [Curve]."},{"name":"hue_variation_max","type":"float","description":"Maximum initial hue variation applied to each particle. It will shift the particle color's hue."},{"name":"hue_variation_min","type":"float","description":"Minimum equivalent of [member hue_variation_max]."},{"name":"initial_velocity_max","type":"float","description":"Maximum initial velocity magnitude for each particle. Direction comes from [member direction] and [member spread]."},{"name":"initial_velocity_min","type":"float","description":"Minimum equivalent of [member initial_velocity_max]."},{"name":"lifetime","type":"float","description":"Amount of time each particle will exist."},{"name":"lifetime_randomness","type":"float","description":"Particle lifetime randomness ratio."},{"name":"linear_accel_curve","type":"Curve","description":"Each particle's linear acceleration will vary along this [Curve]. Should be a unit [Curve]."},{"name":"linear_accel_max","type":"float","description":"Maximum linear acceleration applied to each particle in the direction of motion."},{"name":"linear_accel_min","type":"float","description":"Minimum equivalent of [member linear_accel_max]."},{"name":"local_coords","type":"bool","description":"If [code]true[/code], particles use the parent node's coordinate space (known as local coordinates). This will cause particles to move and rotate along the [CPUParticles2D] node (and its parents) when it is moved or rotated. If [code]false[/code], particles use global coordinates; they will not move or rotate along the [CPUParticles2D] node (and its parents) when it is moved or rotated."},{"name":"one_shot","type":"bool","description":"If [code]true[/code], only one emission cycle occurs. If set [code]true[/code] during a cycle, emission will stop at the cycle's end."},{"name":"orbit_velocity_curve","type":"Curve","description":"Each particle's orbital velocity will vary along this [Curve]. Should be a unit [Curve]."},{"name":"orbit_velocity_max","type":"float","description":"Maximum orbital velocity applied to each particle. Makes the particles circle around origin. Specified in number of full rotations around origin per second."},{"name":"orbit_velocity_min","type":"float","description":"Minimum equivalent of [member orbit_velocity_max]."},{"name":"particle_flag_align_y","type":"bool","description":"Align Y axis of particle with the direction of its velocity."},{"name":"preprocess","type":"float","description":"Particle system starts as if it had already run for this many seconds."},{"name":"radial_accel_curve","type":"Curve","description":"Each particle's radial acceleration will vary along this [Curve]. Should be a unit [Curve]."},{"name":"radial_accel_max","type":"float","description":"Maximum radial acceleration applied to each particle. Makes particle accelerate away from the origin or towards it if negative."},{"name":"radial_accel_min","type":"float","description":"Minimum equivalent of [member radial_accel_max]."},{"name":"randomness","type":"float","description":"Emission lifetime randomness ratio."},{"name":"scale_amount_curve","type":"Curve","description":"Each particle's scale will vary along this [Curve]. Should be a unit [Curve]."},{"name":"scale_amount_max","type":"float","description":"Maximum initial scale applied to each particle."},{"name":"scale_amount_min","type":"float","description":"Minimum equivalent of [member scale_amount_max]."},{"name":"scale_curve_x","type":"Curve","description":"Each particle's horizontal scale will vary along this [Curve]. Should be a unit [Curve].\n\t\t\t[member split_scale] must be enabled."},{"name":"scale_curve_y","type":"Curve","description":"Each particle's vertical scale will vary along this [Curve]. Should be a unit [Curve].\n\t\t\t[member split_scale] must be enabled."},{"name":"seed","type":"int","description":"Sets the random seed used by the particle system. Only effective if [member use_fixed_seed] is [code]true[/code]."},{"name":"speed_scale","type":"float","description":"Particle system's running speed scaling ratio. A value of [code]0[/code] can be used to pause the particles."},{"name":"split_scale","type":"bool","description":"If [code]true[/code], the scale curve will be split into x and y components. See [member scale_curve_x] and [member scale_curve_y]."},{"name":"spread","type":"float","description":"Each particle's initial direction range from [code]+spread[/code] to [code]-spread[/code] degrees."},{"name":"tangential_accel_curve","type":"Curve","description":"Each particle's tangential acceleration will vary along this [Curve]. Should be a unit [Curve]."},{"name":"tangential_accel_max","type":"float","description":"Maximum tangential acceleration applied to each particle. Tangential acceleration is perpendicular to the particle's velocity giving the particles a swirling motion."},{"name":"tangential_accel_min","type":"float","description":"Minimum equivalent of [member tangential_accel_max]."},{"name":"texture","type":"Texture2D","description":"Particle texture. If [code]null[/code], particles will be squares."},{"name":"use_fixed_seed","type":"bool","description":"If [code]true[/code], particles will use the same seed for every simulation using the seed defined in [member seed]. This is useful for situations where the visual outcome should be consistent across replays, for example when using Movie Maker mode."}],"methods":[{"name":"convert_from_particles","signature":"convert_from_particles(particles: Node) -> void","description":"Sets this node's properties to match a given  node with an assigned .","returnType":"void"},{"name":"get_param_curve","signature":"get_param_curve(param: int) -> Curve","description":"Returns the  of the parameter specified by [enum Parameter].","returnType":"Curve"},{"name":"get_param_max","signature":"get_param_max(param: int) -> float","description":"Returns the maximum value range for the given parameter.","returnType":"float"},{"name":"get_param_min","signature":"get_param_min(param: int) -> float","description":"Returns the minimum value range for the given parameter.","returnType":"float"},{"name":"get_particle_flag","signature":"get_particle_flag(particle_flag: int) -> bool","description":"Returns the enabled state of the given particle flag (see [enum ParticleFlags] for options).","returnType":"bool"},{"name":"request_particles_process","signature":"request_particles_process(process_time: float) -> void","description":"Requests the particles to process for extra process time during a single frame.\n\t\t\t\tUseful for particle playback, if used in combination with [member use_fixed_seed] or by calling [method restart] with parameter keep_seed set to true.","returnType":"void"},{"name":"restart","signature":"restart(keep_seed: bool) -> void","description":"Restarts the particle emitter.\n\t\t\t\tIf [param keep_seed] is true, the current random seed will be preserved. Useful for seeking and playback.","returnType":"void"},{"name":"set_param_curve","signature":"set_param_curve(param: int, curve: Curve) -> void","description":"Sets the  of the parameter specified by [enum Parameter]. Should be a unit .","returnType":"void"},{"name":"set_param_max","signature":"set_param_max(param: int, value: float) -> void","description":"Sets the maximum value for the given parameter.","returnType":"void"},{"name":"set_param_min","signature":"set_param_min(param: int, value: float) -> void","description":"Sets the minimum value for the given parameter.","returnType":"void"},{"name":"set_particle_flag","signature":"set_particle_flag(particle_flag: int, enable: bool) -> void","description":"Enables or disables the given flag (see [enum ParticleFlags] for options).","returnType":"void"}],"signals":[{"name":"finished","description":"Emitted when all active particles have finished processing. When [member one_shot] is disabled, particles will process continuously, so this is never emitted."}]},"CPUParticles3D":{"name":"CPUParticles3D","description":"A CPU-based 3D particle emitter.","inherits":"GeometryInstance3D","properties":[{"name":"amount","type":"int","description":"Number of particles emitted in one emission cycle."},{"name":"angle_curve","type":"Curve","description":"Each particle's rotation will be animated along this [Curve]. Should be a unit [Curve]."},{"name":"angle_max","type":"float","description":"Maximum angle."},{"name":"angle_min","type":"float","description":"Minimum angle."},{"name":"angular_velocity_curve","type":"Curve","description":"Each particle's angular velocity (rotation speed) will vary along this [Curve] over its lifetime. Should be a unit [Curve]."},{"name":"angular_velocity_max","type":"float","description":"Maximum initial angular velocity (rotation speed) applied to each particle in [i]degrees[/i] per second."},{"name":"angular_velocity_min","type":"float","description":"Minimum initial angular velocity (rotation speed) applied to each particle in [i]degrees[/i] per second."},{"name":"anim_offset_curve","type":"Curve","description":"Each particle's animation offset will vary along this [Curve]. Should be a unit [Curve]."},{"name":"anim_offset_max","type":"float","description":"Maximum animation offset."},{"name":"anim_offset_min","type":"float","description":"Minimum animation offset."},{"name":"anim_speed_curve","type":"Curve","description":"Each particle's animation speed will vary along this [Curve]. Should be a unit [Curve]."},{"name":"anim_speed_max","type":"float","description":"Maximum particle animation speed."},{"name":"anim_speed_min","type":"float","description":"Minimum particle animation speed."},{"name":"color","type":"Color","description":"Each particle's initial color.\n\t\t\t[b]Note:[/b] [member color] multiplies the particle mesh's vertex colors. To have a visible effect on a [BaseMaterial3D], [member BaseMaterial3D.vertex_color_use_as_albedo] [i]must[/i] be [code]true[/code]. For a [ShaderMaterial], [code]ALBEDO *= COLOR.rgb;[/code] must be inserted in the shader's [code]fragment()[/code] function. Otherwise, [member color] will have no visible effect."},{"name":"color_initial_ramp","type":"Gradient","description":"Each particle's initial color will vary along this [Gradient] (multiplied with [member color]).\n\t\t\t[b]Note:[/b] [member color_initial_ramp] multiplies the particle mesh's vertex colors. To have a visible effect on a [BaseMaterial3D], [member BaseMaterial3D.vertex_color_use_as_albedo] [i]must[/i] be [code]true[/code]. For a [ShaderMaterial], [code]ALBEDO *= COLOR.rgb;[/code] must be inserted in the shader's [code]fragment()[/code] function. Otherwise, [member color_initial_ramp] will have no visible effect."},{"name":"color_ramp","type":"Gradient","description":"Each particle's color will vary along this [Gradient] over its lifetime (multiplied with [member color]).\n\t\t\t[b]Note:[/b] [member color_ramp] multiplies the particle mesh's vertex colors. To have a visible effect on a [BaseMaterial3D], [member BaseMaterial3D.vertex_color_use_as_albedo] [i]must[/i] be [code]true[/code]. For a [ShaderMaterial], [code]ALBEDO *= COLOR.rgb;[/code] must be inserted in the shader's [code]fragment()[/code] function. Otherwise, [member color_ramp] will have no visible effect."},{"name":"damping_curve","type":"Curve","description":"Damping will vary along this [Curve]. Should be a unit [Curve]."},{"name":"damping_max","type":"float","description":"Maximum damping."},{"name":"damping_min","type":"float","description":"Minimum damping."},{"name":"direction","type":"Vector3","description":"Unit vector specifying the particles' emission direction."},{"name":"draw_order","type":"int","description":"Particle draw order. Uses [enum DrawOrder] values."},{"name":"emission_box_extents","type":"Vector3","description":"The rectangle's extents if [member emission_shape] is set to [constant EMISSION_SHAPE_BOX]."},{"name":"emission_colors","type":"PackedColorArray","description":"Sets the [Color]s to modulate particles by when using [constant EMISSION_SHAPE_POINTS] or [constant EMISSION_SHAPE_DIRECTED_POINTS].\n\t\t\t[b]Note:[/b] [member emission_colors] multiplies the particle mesh's vertex colors. To have a visible effect on a [BaseMaterial3D], [member BaseMaterial3D.vertex_color_use_as_albedo] [i]must[/i] be [code]true[/code]. For a [ShaderMaterial], [code]ALBEDO *= COLOR.rgb;[/code] must be inserted in the shader's [code]fragment()[/code] function. Otherwise, [member emission_colors] will have no visible effect."},{"name":"emission_normals","type":"PackedVector3Array","description":"Sets the direction the particles will be emitted in when using [constant EMISSION_SHAPE_DIRECTED_POINTS]."},{"name":"emission_points","type":"PackedVector3Array","description":"Sets the initial positions to spawn particles when using [constant EMISSION_SHAPE_POINTS] or [constant EMISSION_SHAPE_DIRECTED_POINTS]."},{"name":"emission_ring_axis","type":"Vector3","description":"The axis of the ring when using the emitter [constant EMISSION_SHAPE_RING]."},{"name":"emission_ring_cone_angle","type":"float","description":"The angle of the cone when using the emitter [constant EMISSION_SHAPE_RING]. The default angle of 90 degrees results in a ring, while an angle of 0 degrees results in a cone. Intermediate values will result in a ring where one end is larger than the other.\n\t\t\t[b]Note:[/b] Depending on [member emission_ring_height], the angle may be clamped if the ring's end is reached to form a perfect cone."},{"name":"emission_ring_height","type":"float","description":"The height of the ring when using the emitter [constant EMISSION_SHAPE_RING]."},{"name":"emission_ring_inner_radius","type":"float","description":"The inner radius of the ring when using the emitter [constant EMISSION_SHAPE_RING]."},{"name":"emission_ring_radius","type":"float","description":"The radius of the ring when using the emitter [constant EMISSION_SHAPE_RING]."},{"name":"emission_shape","type":"int","description":"Particles will be emitted inside this region. See [enum EmissionShape] for possible values."},{"name":"emission_sphere_radius","type":"float","description":"The sphere's radius if [enum EmissionShape] is set to [constant EMISSION_SHAPE_SPHERE]."},{"name":"emitting","type":"bool","description":"If [code]true[/code], particles are being emitted. [member emitting] can be used to start and stop particles from emitting. However, if [member one_shot] is [code]true[/code] setting [member emitting] to [code]true[/code] will not restart the emission cycle until after all active particles finish processing. You can use the [signal finished] signal to be notified once all active particles finish processing."},{"name":"explosiveness","type":"float","description":"How rapidly particles in an emission cycle are emitted. If greater than [code]0[/code], there will be a gap in emissions before the next cycle begins."},{"name":"fixed_fps","type":"int","description":"The particle system's frame rate is fixed to a value. For example, changing the value to 2 will make the particles render at 2 frames per second. Note this does not slow down the particle system itself."},{"name":"flatness","type":"float","description":"Amount of [member spread] in Y/Z plane. A value of [code]1[/code] restricts particles to X/Z plane."},{"name":"fract_delta","type":"bool","description":"If [code]true[/code], results in fractional delta calculation which has a smoother particles display effect."},{"name":"gravity","type":"Vector3","description":"Gravity applied to every particle."},{"name":"hue_variation_curve","type":"Curve","description":"Each particle's hue will vary along this [Curve]. Should be a unit [Curve]."},{"name":"hue_variation_max","type":"float","description":"Maximum hue variation."},{"name":"hue_variation_min","type":"float","description":"Minimum hue variation."},{"name":"initial_velocity_max","type":"float","description":"Maximum value of the initial velocity."},{"name":"initial_velocity_min","type":"float","description":"Minimum value of the initial velocity."},{"name":"lifetime","type":"float","description":"Amount of time each particle will exist."},{"name":"lifetime_randomness","type":"float","description":"Particle lifetime randomness ratio."},{"name":"linear_accel_curve","type":"Curve","description":"Each particle's linear acceleration will vary along this [Curve]. Should be a unit [Curve]."},{"name":"linear_accel_max","type":"float","description":"Maximum linear acceleration."},{"name":"linear_accel_min","type":"float","description":"Minimum linear acceleration."},{"name":"local_coords","type":"bool","description":"If [code]true[/code], particles use the parent node's coordinate space (known as local coordinates). This will cause particles to move and rotate along the [CPUParticles3D] node (and its parents) when it is moved or rotated. If [code]false[/code], particles use global coordinates; they will not move or rotate along the [CPUParticles3D] node (and its parents) when it is moved or rotated."},{"name":"mesh","type":"Mesh","description":"The [Mesh] used for each particle. If [code]null[/code], particles will be spheres."},{"name":"one_shot","type":"bool","description":"If [code]true[/code], only one emission cycle occurs. If set [code]true[/code] during a cycle, emission will stop at the cycle's end."},{"name":"orbit_velocity_curve","type":"Curve","description":"Each particle's orbital velocity will vary along this [Curve]. Should be a unit [Curve]."},{"name":"orbit_velocity_max","type":"float","description":"Maximum orbit velocity."},{"name":"orbit_velocity_min","type":"float","description":"Minimum orbit velocity."},{"name":"particle_flag_align_y","type":"bool","description":"Align Y axis of particle with the direction of its velocity."},{"name":"particle_flag_disable_z","type":"bool","description":"If [code]true[/code], particles will not move on the Z axis."},{"name":"particle_flag_rotate_y","type":"bool","description":"If [code]true[/code], particles rotate around Y axis by [member angle_min]."},{"name":"preprocess","type":"float","description":"Particle system starts as if it had already run for this many seconds."},{"name":"radial_accel_curve","type":"Curve","description":"Each particle's radial acceleration will vary along this [Curve]. Should be a unit [Curve]."},{"name":"radial_accel_max","type":"float","description":"Maximum radial acceleration."},{"name":"radial_accel_min","type":"float","description":"Minimum radial acceleration."},{"name":"randomness","type":"float","description":"Emission lifetime randomness ratio."},{"name":"scale_amount_curve","type":"Curve","description":"Each particle's scale will vary along this [Curve]. Should be a unit [Curve]."},{"name":"scale_amount_max","type":"float","description":"Maximum scale."},{"name":"scale_amount_min","type":"float","description":"Minimum scale."},{"name":"scale_curve_x","type":"Curve","description":"Curve for the scale over life, along the x axis."},{"name":"scale_curve_y","type":"Curve","description":"Curve for the scale over life, along the y axis."},{"name":"scale_curve_z","type":"Curve","description":"Curve for the scale over life, along the z axis."},{"name":"seed","type":"int","description":"Sets the random seed used by the particle system. Only effective if [member use_fixed_seed] is [code]true[/code]."},{"name":"speed_scale","type":"float","description":"Particle system's running speed scaling ratio. A value of [code]0[/code] can be used to pause the particles."},{"name":"split_scale","type":"bool","description":"If set to [code]true[/code], three different scale curves can be specified, one per scale axis."},{"name":"spread","type":"float","description":"Each particle's initial direction range from [code]+spread[/code] to [code]-spread[/code] degrees. Applied to X/Z plane and Y/Z planes."},{"name":"tangential_accel_curve","type":"Curve","description":"Each particle's tangential acceleration will vary along this [Curve]. Should be a unit [Curve]."},{"name":"tangential_accel_max","type":"float","description":"Maximum tangent acceleration."},{"name":"tangential_accel_min","type":"float","description":"Minimum tangent acceleration."},{"name":"use_fixed_seed","type":"bool","description":"If [code]true[/code], particles will use the same seed for every simulation using the seed defined in [member seed]. This is useful for situations where the visual outcome should be consistent across replays, for example when using Movie Maker mode."},{"name":"visibility_aabb","type":"AABB","description":"The [AABB] that determines the node's region which needs to be visible on screen for the particle system to be active.\n\t\t\tGrow the box if particles suddenly appear/disappear when the node enters/exits the screen. The [AABB] can be grown via code or with the [b]Particles → Generate AABB[/b] editor tool."}],"methods":[{"name":"capture_aabb","signature":"capture_aabb() -> AABB","description":"Returns the axis-aligned bounding box that contains all the particles that are active in the current frame.","returnType":"AABB"},{"name":"convert_from_particles","signature":"convert_from_particles(particles: Node) -> void","description":"Sets this node's properties to match a given  node with an assigned .","returnType":"void"},{"name":"get_param_curve","signature":"get_param_curve(param: int) -> Curve","description":"Returns the  of the parameter specified by [enum Parameter].","returnType":"Curve"},{"name":"get_param_max","signature":"get_param_max(param: int) -> float","description":"Returns the maximum value range for the given parameter.","returnType":"float"},{"name":"get_param_min","signature":"get_param_min(param: int) -> float","description":"Returns the minimum value range for the given parameter.","returnType":"float"},{"name":"get_particle_flag","signature":"get_particle_flag(particle_flag: int) -> bool","description":"Returns the enabled state of the given particle flag (see [enum ParticleFlags] for options).","returnType":"bool"},{"name":"request_particles_process","signature":"request_particles_process(process_time: float) -> void","description":"Requests the particles to process for extra process time during a single frame.\n\t\t\t\tUseful for particle playback, if used in combination with [member use_fixed_seed] or by calling [method restart] with parameter keep_seed set to true.","returnType":"void"},{"name":"restart","signature":"restart(keep_seed: bool) -> void","description":"Restarts the particle emitter.\n\t\t\t\tIf [param keep_seed] is true, the current random seed will be preserved. Useful for seeking and playback.","returnType":"void"},{"name":"set_param_curve","signature":"set_param_curve(param: int, curve: Curve) -> void","description":"Sets the  of the parameter specified by [enum Parameter]. Should be a unit .","returnType":"void"},{"name":"set_param_max","signature":"set_param_max(param: int, value: float) -> void","description":"Sets the maximum value for the given parameter.","returnType":"void"},{"name":"set_param_min","signature":"set_param_min(param: int, value: float) -> void","description":"Sets the minimum value for the given parameter.","returnType":"void"},{"name":"set_particle_flag","signature":"set_particle_flag(particle_flag: int, enable: bool) -> void","description":"Enables or disables the given particle flag (see [enum ParticleFlags] for options).","returnType":"void"}],"signals":[{"name":"finished","description":"Emitted when all active particles have finished processing. When [member one_shot] is disabled, particles will process continuously, so this is never emitted."}]},"Callable":{"name":"Callable","description":"A built-in type representing a method or a standalone function.","inherits":"","properties":[],"methods":[{"name":"bind","signature":"bind() -> Callable","description":"Returns a copy of this  with one or more arguments bound. When called, the bound arguments are passed after the arguments supplied by [method call]. See also [method unbind].\n\t\t\t\tNote: When this method is chained with other similar methods, the order in which the argument list is modified is read from right to left.","returnType":"Callable"},{"name":"bindv","signature":"bindv(arguments: Array) -> Callable","description":"Returns a copy of this  with one or more arguments bound, reading them from an array. When called, the bound arguments are passed after the arguments supplied by [method call]. See also [method unbind].\n\t\t\t\tNote: When this method is chained with other similar methods, the order in which the argument list is modified is read from right to left.","returnType":"Callable"},{"name":"call","signature":"call() -> Variant","description":"Calls the method represented by this . Arguments can be passed and should match the method's signature.","returnType":"Variant"},{"name":"call_deferred","signature":"call_deferred() -> void","description":"Calls the method represented by this  in deferred mode, i.e. at the end of the current frame. Arguments can be passed and should match the method's signature.\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tfunc _ready():\n\t\t\t\t    grab_focus.call_deferred()\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tpublic override void _Ready()\n\t\t\t\t{\n\t\t\t\t    Callable.From(GrabFocus).CallDeferred();\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tNote: Deferred calls are processed at idle time. Idle time happens mainly at the end of process and physics frames. In it, deferred calls will be run until there are none left, which means you can defer calls from other deferred calls and they'll still be run in the current idle time cycle. This means you should not call a method deferred from itself (or from a method called by it), as this causes infinite recursion the same way as if you had called the method directly.\n\t\t\t\tSee also [method Object.call_deferred].","returnType":"void"},{"name":"callv","signature":"callv(arguments: Array) -> Variant","description":"Calls the method represented by this . Unlike [method call], this method expects all arguments to be contained inside the [param arguments] .","returnType":"Variant"},{"name":"create","signature":"create(variant: Variant, method: StringName) -> Callable","description":"Creates a new  for the method named [param method] in the specified [param variant]. To represent a method of a built-in  type, a custom callable is used (see [method is_custom]). If [param variant] is , then a standard callable will be created instead.\n\t\t\t\tNote: This method is always necessary for the  type, as property syntax is used to access its entries. You may also use this method when [param variant]'s type is not known in advance (for polymorphism).","returnType":"Callable"},{"name":"get_argument_count","signature":"get_argument_count() -> int","description":"Returns the total number of arguments this  should take, including optional arguments. This means that any arguments bound with [method bind] are subtracted from the result, and any arguments unbound with [method unbind] are added to the result.","returnType":"int"},{"name":"get_bound_arguments","signature":"get_bound_arguments() -> Array","description":"Returns the array of arguments bound via successive [method bind] or [method unbind] calls. These arguments will be added after the arguments passed to the call, from which [method get_unbound_arguments_count] arguments on the right have been previously excluded.\n\t\t\t\t\n\t\t\t\tfunc get_effective_arguments(callable, call_args):\n\t\t\t\t    assert(call_args.size() - callable.get_unbound_arguments_count() &gt;= 0)\n\t\t\t\t    var result = call_args.slice(0, call_args.size() - callable.get_unbound_arguments_count())\n\t\t\t\t    result.append_array(callable.get_bound_arguments())\n\t\t\t\t    return result\n\t\t\t\t","returnType":"Array"},{"name":"get_bound_arguments_count","signature":"get_bound_arguments_count() -> int","description":"Returns the total amount of arguments bound via successive [method bind] or [method unbind] calls. This is the same as the size of the array returned by [method get_bound_arguments]. See [method get_bound_arguments] for details.\n\t\t\t\tNote: The [method get_bound_arguments_count] and [method get_unbound_arguments_count] methods can both return positive values.","returnType":"int"},{"name":"get_method","signature":"get_method() -> StringName","description":"Returns the name of the method represented by this . If the callable is a GDScript lambda function, returns the function's name or \"&lt;anonymous lambda&gt;\".","returnType":"StringName"},{"name":"get_object","signature":"get_object() -> Object","description":"Returns the object on which this  is called.","returnType":"Object"},{"name":"get_object_id","signature":"get_object_id() -> int","description":"Returns the ID of this 's object (see [method Object.get_instance_id]).","returnType":"int"},{"name":"get_unbound_arguments_count","signature":"get_unbound_arguments_count() -> int","description":"Returns the total amount of arguments unbound via successive [method bind] or [method unbind] calls. See [method get_bound_arguments] for details.\n\t\t\t\tNote: The [method get_bound_arguments_count] and [method get_unbound_arguments_count] methods can both return positive values.","returnType":"int"},{"name":"hash","signature":"hash() -> int","description":"Returns the 32-bit hash value of this 's object.\n\t\t\t\tNote: s with equal content will always produce identical hash values. However, the reverse is not true. Returning identical hash values does not imply the callables are equal, because different callables can have identical hash values due to hash collisions. The engine uses a 32-bit hash algorithm for [method hash].","returnType":"int"},{"name":"is_custom","signature":"is_custom() -> bool","description":"Returns true if this  is a custom callable. Custom callables are used:\n\t\t\t\t- for binding/unbinding arguments (see [method bind] and [method unbind]);\n\t\t\t\t- for representing methods of built-in  types (see [method create]);\n\t\t\t\t- for representing global, lambda, and RPC functions in GDScript;\n\t\t\t\t- for other purposes in the core, GDExtension, and C#.","returnType":"bool"},{"name":"is_null","signature":"is_null() -> bool","description":"Returns true if this  has no target to call the method on. Equivalent to callable == Callable().\n\t\t\t\tNote: This is not the same as not is_valid() and using not is_null() will not guarantee that this callable can be called. Use [method is_valid] instead.","returnType":"bool"},{"name":"is_standard","signature":"is_standard() -> bool","description":"Returns true if this  is a standard callable. This method is the opposite of [method is_custom]. Returns false if this callable is a lambda function.","returnType":"bool"},{"name":"is_valid","signature":"is_valid() -> bool","description":"Returns true if the callable's object exists and has a valid method name assigned, or is a custom callable.","returnType":"bool"},{"name":"rpc","signature":"rpc() -> void","description":"Perform an RPC (Remote Procedure Call) on all connected peers. This is used for multiplayer and is normally not available, unless the function being called has been marked as RPC (using [annotation @GDScript.@rpc] or [method Node.rpc_config]). Calling this method on unsupported functions will result in an error. See [method Node.rpc].","returnType":"void"},{"name":"rpc_id","signature":"rpc_id(peer_id: int) -> void","description":"Perform an RPC (Remote Procedure Call) on a specific peer ID (see multiplayer documentation for reference). This is used for multiplayer and is normally not available unless the function being called has been marked as RPC (using [annotation @GDScript.@rpc] or [method Node.rpc_config]). Calling this method on unsupported functions will result in an error. See [method Node.rpc_id].","returnType":"void"},{"name":"unbind","signature":"unbind(argcount: int) -> Callable","description":"Returns a copy of this  with a number of arguments unbound. In other words, when the new callable is called the last few arguments supplied by the user are ignored, according to [param argcount]. The remaining arguments are passed to the callable. This allows to use the original callable in a context that attempts to pass more arguments than this callable can handle, e.g. a signal with a fixed number of arguments. See also [method bind].\n\t\t\t\tNote: When this method is chained with other similar methods, the order in which the argument list is modified is read from right to left.\n\t\t\t\t\n\t\t\t\tfunc _ready():\n\t\t\t\t    foo.unbind(1).call(1, 2) # Calls foo(1).\n\t\t\t\t    foo.bind(3, 4).unbind(1).call(1, 2) # Calls foo(1, 3, 4), note that it does not change the arguments from bind.\n\t\t\t\t","returnType":"Callable"}],"signals":[]},"CallbackTweener":{"name":"CallbackTweener","description":"Calls the specified method after optional delay.","inherits":"Tweener","properties":[],"methods":[{"name":"set_delay","signature":"set_delay(delay: float) -> CallbackTweener","description":"Makes the callback call delayed by given time in seconds.\n\t\t\t\tExample: Call [method Node.queue_free] after 2 seconds:\n\t\t\t\t\n\t\t\t\tvar tween = get_tree().create_tween()\n\t\t\t\ttween.tween_callback(queue_free).set_delay(2)\n\t\t\t\t","returnType":"CallbackTweener"}],"signals":[]},"Camera2D":{"name":"Camera2D","description":"Camera node for 2D scenes.","inherits":"Node2D","properties":[{"name":"anchor_mode","type":"int","description":"The Camera2D's anchor point. See [enum AnchorMode] constants."},{"name":"custom_viewport","type":"Node","description":"The custom [Viewport] node attached to the [Camera2D]. If [code]null[/code] or not a [Viewport], uses the default viewport instead."},{"name":"drag_bottom_margin","type":"float","description":"Bottom margin needed to drag the camera. A value of [code]1[/code] makes the camera move only when reaching the bottom edge of the screen."},{"name":"drag_horizontal_enabled","type":"bool","description":"If [code]true[/code], the camera only moves when reaching the horizontal (left and right) drag margins. If [code]false[/code], the camera moves horizontally regardless of margins."},{"name":"drag_horizontal_offset","type":"float","description":"The relative horizontal drag offset of the camera between the right ([code]-1[/code]) and left ([code]1[/code]) drag margins.\n\t\t\t[b]Note:[/b] Used to set the initial horizontal drag offset; determine the current offset; or force the current offset. It's not automatically updated when [member drag_horizontal_enabled] is [code]true[/code] or the drag margins are changed."},{"name":"drag_left_margin","type":"float","description":"Left margin needed to drag the camera. A value of [code]1[/code] makes the camera move only when reaching the left edge of the screen."},{"name":"drag_right_margin","type":"float","description":"Right margin needed to drag the camera. A value of [code]1[/code] makes the camera move only when reaching the right edge of the screen."},{"name":"drag_top_margin","type":"float","description":"Top margin needed to drag the camera. A value of [code]1[/code] makes the camera move only when reaching the top edge of the screen."},{"name":"drag_vertical_enabled","type":"bool","description":"If [code]true[/code], the camera only moves when reaching the vertical (top and bottom) drag margins. If [code]false[/code], the camera moves vertically regardless of the drag margins."},{"name":"drag_vertical_offset","type":"float","description":"The relative vertical drag offset of the camera between the bottom ([code]-1[/code]) and top ([code]1[/code]) drag margins.\n\t\t\t[b]Note:[/b] Used to set the initial vertical drag offset; determine the current offset; or force the current offset. It's not automatically updated when [member drag_vertical_enabled] is [code]true[/code] or the drag margins are changed."},{"name":"editor_draw_drag_margin","type":"bool","description":"If [code]true[/code], draws the camera's drag margin rectangle in the editor."},{"name":"editor_draw_limits","type":"bool","description":"If [code]true[/code], draws the camera's limits rectangle in the editor."},{"name":"editor_draw_screen","type":"bool","description":"If [code]true[/code], draws the camera's screen rectangle in the editor."},{"name":"enabled","type":"bool","description":"Controls whether the camera can be active or not. If [code]true[/code], the [Camera2D] will become the main camera when it enters the scene tree and there is no active camera currently (see [method Viewport.get_camera_2d]).\n\t\t\tWhen the camera is currently active and [member enabled] is set to [code]false[/code], the next enabled [Camera2D] in the scene tree will become active."},{"name":"ignore_rotation","type":"bool","description":"If [code]true[/code], the camera's rendered view is not affected by its [member Node2D.rotation] and [member Node2D.global_rotation]."},{"name":"limit_bottom","type":"int","description":"Bottom scroll limit in pixels. The camera stops moving when reaching this value, but [member offset] can push the view past the limit."},{"name":"limit_left","type":"int","description":"Left scroll limit in pixels. The camera stops moving when reaching this value, but [member offset] can push the view past the limit."},{"name":"limit_right","type":"int","description":"Right scroll limit in pixels. The camera stops moving when reaching this value, but [member offset] can push the view past the limit."},{"name":"limit_smoothed","type":"bool","description":"If [code]true[/code], the camera smoothly stops when reaches its limits.\n\t\t\tThis property has no effect if [member position_smoothing_enabled] is [code]false[/code].\n\t\t\t[b]Note:[/b] To immediately update the camera's position to be within limits without smoothing, even with this setting enabled, invoke [method reset_smoothing]."},{"name":"limit_top","type":"int","description":"Top scroll limit in pixels. The camera stops moving when reaching this value, but [member offset] can push the view past the limit."},{"name":"offset","type":"Vector2","description":"The camera's relative offset. Useful for looking around or camera shake animations. The offsetted camera can go past the limits defined in [member limit_top], [member limit_bottom], [member limit_left] and [member limit_right]."},{"name":"position_smoothing_enabled","type":"bool","description":"If [code]true[/code], the camera's view smoothly moves towards its target position at [member position_smoothing_speed]."},{"name":"position_smoothing_speed","type":"float","description":"Speed in pixels per second of the camera's smoothing effect when [member position_smoothing_enabled] is [code]true[/code]."},{"name":"process_callback","type":"int","description":"The camera's process callback. See [enum Camera2DProcessCallback]."},{"name":"rotation_smoothing_enabled","type":"bool","description":"If [code]true[/code], the camera's view smoothly rotates, via asymptotic smoothing, to align with its target rotation at [member rotation_smoothing_speed].\n\t\t\t[b]Note:[/b] This property has no effect if [member ignore_rotation] is [code]true[/code]."},{"name":"rotation_smoothing_speed","type":"float","description":"The angular, asymptotic speed of the camera's rotation smoothing effect when [member rotation_smoothing_enabled] is [code]true[/code]."},{"name":"zoom","type":"Vector2","description":"The camera's zoom. A zoom of [code]Vector(2, 2)[/code] doubles the size seen in the viewport. A zoom of [code]Vector(0.5, 0.5)[/code] halves the size seen in the viewport.\n\t\t\t[b]Note:[/b] [member FontFile.oversampling] does [i]not[/i] take [Camera2D] zoom into account. This means that zooming in/out will cause bitmap fonts and rasterized (non-MSDF) dynamic fonts to appear blurry or pixelated unless the font is part of a [CanvasLayer] that makes it ignore camera zoom. To ensure text remains crisp regardless of zoom, you can enable MSDF font rendering by enabling [member ProjectSettings.gui/theme/default_font_multichannel_signed_distance_field] (applies to the default project font only), or enabling [b]Multichannel Signed Distance Field[/b] in the import options of a DynamicFont for custom fonts. On system fonts, [member SystemFont.multichannel_signed_distance_field] can be enabled in the inspector."}],"methods":[{"name":"align","signature":"align() -> void","description":"Aligns the camera to the tracked node.","returnType":"void"},{"name":"force_update_scroll","signature":"force_update_scroll() -> void","description":"Forces the camera to update scroll immediately.","returnType":"void"},{"name":"get_drag_margin","signature":"get_drag_margin(margin: int) -> float","description":"Returns the specified [enum Side]'s margin. See also [member drag_bottom_margin], [member drag_top_margin], [member drag_left_margin], and [member drag_right_margin].","returnType":"float"},{"name":"get_limit","signature":"get_limit(margin: int) -> int","description":"Returns the camera limit for the specified [enum Side]. See also [member limit_bottom], [member limit_top], [member limit_left], and [member limit_right].","returnType":"int"},{"name":"get_screen_center_position","signature":"get_screen_center_position() -> Vector2","description":"Returns the center of the screen from this camera's point of view, in global coordinates.\n\t\t\t\tNote: The exact targeted position of the camera may be different. See [method get_target_position].","returnType":"Vector2"},{"name":"get_target_position","signature":"get_target_position() -> Vector2","description":"Returns this camera's target position, in global coordinates.\n\t\t\t\tNote: The returned value is not the same as [member Node2D.global_position], as it is affected by the drag properties. It is also not the same as the current position if [member position_smoothing_enabled] is true (see [method get_screen_center_position]).","returnType":"Vector2"},{"name":"is_current","signature":"is_current() -> bool","description":"Returns true if this  is the active camera (see [method Viewport.get_camera_2d]).","returnType":"bool"},{"name":"make_current","signature":"make_current() -> void","description":"Forces this  to become the current active one. [member enabled] must be true.","returnType":"void"},{"name":"reset_smoothing","signature":"reset_smoothing() -> void","description":"Sets the camera's position immediately to its current smoothing destination.\n\t\t\t\tThis method has no effect if [member position_smoothing_enabled] is false.","returnType":"void"},{"name":"set_drag_margin","signature":"set_drag_margin(margin: int, drag_margin: float) -> void","description":"Sets the specified [enum Side]'s margin. See also [member drag_bottom_margin], [member drag_top_margin], [member drag_left_margin], and [member drag_right_margin].","returnType":"void"},{"name":"set_limit","signature":"set_limit(margin: int, limit: int) -> void","description":"Sets the camera limit for the specified [enum Side]. See also [member limit_bottom], [member limit_top], [member limit_left], and [member limit_right].","returnType":"void"}],"signals":[]},"Camera3D":{"name":"Camera3D","description":"Camera node, displays from a point of view.","inherits":"Node3D","properties":[{"name":"attributes","type":"CameraAttributes","description":"The [CameraAttributes] to use for this camera."},{"name":"compositor","type":"Compositor","description":"The [Compositor] to use for this camera."},{"name":"cull_mask","type":"int","description":"The culling mask that describes which [member VisualInstance3D.layers] are rendered by this camera. By default, all 20 user-visible layers are rendered.\n\t\t\t[b]Note:[/b] Since the [member cull_mask] allows for 32 layers to be stored in total, there are an additional 12 layers that are only used internally by the engine and aren't exposed in the editor. Setting [member cull_mask] using a script allows you to toggle those reserved layers, which can be useful for editor plugins.\n\t\t\tTo adjust [member cull_mask] more easily using a script, use [method get_cull_mask_value] and [method set_cull_mask_value].\n\t\t\t[b]Note:[/b] [VoxelGI], SDFGI and [LightmapGI] will always take all layers into account to determine what contributes to global illumination. If this is an issue, set [member GeometryInstance3D.gi_mode] to [constant GeometryInstance3D.GI_MODE_DISABLED] for meshes and [member Light3D.light_bake_mode] to [constant Light3D.BAKE_DISABLED] for lights to exclude them from global illumination."},{"name":"current","type":"bool","description":"If [code]true[/code], the ancestor [Viewport] is currently using this camera.\n\t\t\tIf multiple cameras are in the scene, one will always be made current. For example, if two [Camera3D] nodes are present in the scene and only one is current, setting one camera's [member current] to [code]false[/code] will cause the other camera to be made current."},{"name":"doppler_tracking","type":"int","description":"If not [constant DOPPLER_TRACKING_DISABLED], this camera will simulate the [url=https://en.wikipedia.org/wiki/Doppler_effect]Doppler effect[/url] for objects changed in particular [code]_process[/code] methods. See [enum DopplerTracking] for possible values."},{"name":"environment","type":"Environment","description":"The [Environment] to use for this camera."},{"name":"far","type":"float","description":"The distance to the far culling boundary for this camera relative to its local Z axis. Higher values allow the camera to see further away, while decreasing [member far] can improve performance if it results in objects being partially or fully culled."},{"name":"fov","type":"float","description":"The camera's field of view angle (in degrees). Only applicable in perspective mode. Since [member keep_aspect] locks one axis, [member fov] sets the other axis' field of view angle.\n\t\t\tFor reference, the default vertical field of view value ([code]75.0[/code]) is equivalent to a horizontal FOV of:\n\t\t\t- ~91.31 degrees in a 4:3 viewport\n\t\t\t- ~101.67 degrees in a 16:10 viewport\n\t\t\t- ~107.51 degrees in a 16:9 viewport\n\t\t\t- ~121.63 degrees in a 21:9 viewport"},{"name":"frustum_offset","type":"Vector2","description":"The camera's frustum offset. This can be changed from the default to create \"tilted frustum\" effects such as [url=https://zdoom.org/wiki/Y-shearing]Y-shearing[/url].\n\t\t\t[b]Note:[/b] Only effective if [member projection] is [constant PROJECTION_FRUSTUM]."},{"name":"h_offset","type":"float","description":"The horizontal (X) offset of the camera viewport."},{"name":"keep_aspect","type":"int","description":"The axis to lock during [member fov]/[member size] adjustments. Can be either [constant KEEP_WIDTH] or [constant KEEP_HEIGHT]."},{"name":"near","type":"float","description":"The distance to the near culling boundary for this camera relative to its local Z axis. Lower values allow the camera to see objects more up close to its origin, at the cost of lower precision across the [i]entire[/i] range. Values lower than the default can lead to increased Z-fighting."},{"name":"projection","type":"int","description":"The camera's projection mode. In [constant PROJECTION_PERSPECTIVE] mode, objects' Z distance from the camera's local space scales their perceived size."},{"name":"size","type":"float","description":"The camera's size in meters measured as the diameter of the width or height, depending on [member keep_aspect]. Only applicable in orthogonal and frustum modes."},{"name":"v_offset","type":"float","description":"The vertical (Y) offset of the camera viewport."}],"methods":[{"name":"clear_current","signature":"clear_current(enable_next: bool) -> void","description":"If this is the current camera, remove it from being current. If [param enable_next] is true, request to make the next camera current, if any.","returnType":"void"},{"name":"get_camera_projection","signature":"get_camera_projection() -> Projection","description":"Returns the projection matrix that this camera uses to render to its associated viewport. The camera must be part of the scene tree to function.","returnType":"Projection"},{"name":"get_camera_rid","signature":"get_camera_rid() -> RID","description":"Returns the camera's RID from the .","returnType":"RID"},{"name":"get_camera_transform","signature":"get_camera_transform() -> Transform3D","description":"Returns the transform of the camera plus the vertical ([member v_offset]) and horizontal ([member h_offset]) offsets; and any other adjustments made to the position and orientation of the camera by subclassed cameras such as .","returnType":"Transform3D"},{"name":"get_cull_mask_value","signature":"get_cull_mask_value(layer_number: int) -> bool","description":"Returns whether or not the specified layer of the [member cull_mask] is enabled, given a [param layer_number] between 1 and 20.","returnType":"bool"},{"name":"get_frustum","signature":"get_frustum() -> Plane[]","description":"Returns the camera's frustum planes in world space units as an array of s in the following order: near, far, left, top, right, bottom. Not to be confused with [member frustum_offset].","returnType":"Plane[]"},{"name":"get_pyramid_shape_rid","signature":"get_pyramid_shape_rid() -> RID","description":"Returns the RID of a pyramid shape encompassing the camera's view frustum, ignoring the camera's near plane. The tip of the pyramid represents the position of the camera.","returnType":"RID"},{"name":"is_position_behind","signature":"is_position_behind(world_point: Vector3) -> bool","description":"Returns true if the given position is behind the camera (the blue part of the linked diagram). [url=https://raw.githubusercontent.com/godotengine/godot-docs/master/img/camera3d_position_frustum.png]See this diagram for an overview of position query methods.\n\t\t\t\tNote: A position which returns false may still be outside the camera's field of view.","returnType":"bool"},{"name":"is_position_in_frustum","signature":"is_position_in_frustum(world_point: Vector3) -> bool","description":"Returns true if the given position is inside the camera's frustum (the green part of the linked diagram). [url=https://raw.githubusercontent.com/godotengine/godot-docs/master/img/camera3d_position_frustum.png]See this diagram for an overview of position query methods.","returnType":"bool"},{"name":"make_current","signature":"make_current() -> void","description":"Makes this camera the current camera for the  (see class description). If the camera node is outside the scene tree, it will attempt to become current once it's added.","returnType":"void"},{"name":"project_local_ray_normal","signature":"project_local_ray_normal(screen_point: Vector2) -> Vector3","description":"Returns a normal vector from the screen point location directed along the camera. Orthogonal cameras are normalized. Perspective cameras account for perspective, screen width/height, etc.","returnType":"Vector3"},{"name":"project_position","signature":"project_position(screen_point: Vector2, z_depth: float) -> Vector3","description":"Returns the 3D point in world space that maps to the given 2D coordinate in the  rectangle on a plane that is the given [param z_depth] distance into the scene away from the camera.","returnType":"Vector3"},{"name":"project_ray_normal","signature":"project_ray_normal(screen_point: Vector2) -> Vector3","description":"Returns a normal vector in world space, that is the result of projecting a point on the  rectangle by the inverse camera projection. This is useful for casting rays in the form of (origin, normal) for object intersection or picking.","returnType":"Vector3"},{"name":"project_ray_origin","signature":"project_ray_origin(screen_point: Vector2) -> Vector3","description":"Returns a 3D position in world space, that is the result of projecting a point on the  rectangle by the inverse camera projection. This is useful for casting rays in the form of (origin, normal) for object intersection or picking.","returnType":"Vector3"},{"name":"set_cull_mask_value","signature":"set_cull_mask_value(layer_number: int, value: bool) -> void","description":"Based on [param value], enables or disables the specified layer in the [member cull_mask], given a [param layer_number] between 1 and 20.","returnType":"void"},{"name":"set_frustum","signature":"set_frustum(size: float, offset: Vector2, z_near: float, z_far: float) -> void","description":"Sets the camera projection to frustum mode (see [constant PROJECTION_FRUSTUM]), by specifying a [param size], an [param offset], and the [param z_near] and [param z_far] clip planes in world space units. See also [member frustum_offset].","returnType":"void"},{"name":"set_orthogonal","signature":"set_orthogonal(size: float, z_near: float, z_far: float) -> void","description":"Sets the camera projection to orthogonal mode (see [constant PROJECTION_ORTHOGONAL]), by specifying a [param size], and the [param z_near] and [param z_far] clip planes in world space units. (As a hint, 2D games often use this projection, with values specified in pixels.)","returnType":"void"},{"name":"set_perspective","signature":"set_perspective(fov: float, z_near: float, z_far: float) -> void","description":"Sets the camera projection to perspective mode (see [constant PROJECTION_PERSPECTIVE]), by specifying a [param fov] (field of view) angle in degrees, and the [param z_near] and [param z_far] clip planes in world space units.","returnType":"void"},{"name":"unproject_position","signature":"unproject_position(world_point: Vector3) -> Vector2","description":"Returns the 2D coordinate in the  rectangle that maps to the given 3D point in world space.\n\t\t\t\tNote: When using this to position GUI elements over a 3D viewport, use [method is_position_behind] to prevent them from appearing if the 3D point is behind the camera:\n\t\t\t\t\n\t\t\t\t# This code block is part of a script that inherits from Node3D.\n\t\t\t\t# `control` is a reference to a node inheriting from Control.\n\t\t\t\tcontrol.visible = not get_viewport().get_camera_3d().is_position_behind(global_transform.origin)\n\t\t\t\tcontrol.position = get_viewport().get_camera_3d().unproject_position(global_transform.origin)\n\t\t\t\t","returnType":"Vector2"}],"signals":[]},"CameraAttributes":{"name":"CameraAttributes","description":"Parent class for camera settings.","inherits":"Resource","properties":[{"name":"auto_exposure_enabled","type":"bool","description":"If [code]true[/code], enables the tonemapping auto exposure mode of the scene renderer. If [code]true[/code], the renderer will automatically determine the exposure setting to adapt to the scene's illumination and the observed light."},{"name":"auto_exposure_scale","type":"float","description":"The scale of the auto exposure effect. Affects the intensity of auto exposure."},{"name":"auto_exposure_speed","type":"float","description":"The speed of the auto exposure effect. Affects the time needed for the camera to perform auto exposure."},{"name":"exposure_multiplier","type":"float","description":"Multiplier for the exposure amount. A higher value results in a brighter image."},{"name":"exposure_sensitivity","type":"float","description":"Sensitivity of camera sensors, measured in ISO. A higher sensitivity results in a brighter image.\n\t\t\tIf [member auto_exposure_enabled] is [code]true[/code], this can be used as a method of exposure compensation, doubling the value will increase the exposure value (measured in EV100) by 1 stop.\n\t\t\t[b]Note:[/b] Only available when [member ProjectSettings.rendering/lights_and_shadows/use_physical_light_units] is enabled."}],"methods":[],"signals":[]},"CameraAttributesPhysical":{"name":"CameraAttributesPhysical","description":"Physically-based camera settings.","inherits":"CameraAttributes","properties":[{"name":"auto_exposure_max_exposure_value","type":"float","description":"The maximum luminance (in EV100) used when calculating auto exposure. When calculating scene average luminance, color values will be clamped to at least this value. This limits the auto-exposure from exposing below a certain brightness, resulting in a cut off point where the scene will remain bright."},{"name":"auto_exposure_min_exposure_value","type":"float","description":"The minimum luminance (in EV100) used when calculating auto exposure. When calculating scene average luminance, color values will be clamped to at least this value. This limits the auto-exposure from exposing above a certain brightness, resulting in a cut off point where the scene will remain dark."},{"name":"exposure_aperture","type":"float","description":"Size of the aperture of the camera, measured in f-stops. An f-stop is a unitless ratio between the focal length of the camera and the diameter of the aperture. A high aperture setting will result in a smaller aperture which leads to a dimmer image and sharper focus. A low aperture results in a wide aperture which lets in more light resulting in a brighter, less-focused image. Default is appropriate for outdoors at daytime (i.e. for use with a default [DirectionalLight3D]), for indoor lighting, a value between 2 and 4 is more appropriate.\n\t\t\tOnly available when [member ProjectSettings.rendering/lights_and_shadows/use_physical_light_units] is enabled."},{"name":"exposure_shutter_speed","type":"float","description":"Time for shutter to open and close, evaluated as [code]1 / shutter_speed[/code] seconds. A higher value will allow less light (leading to a darker image), while a lower value will allow more light (leading to a brighter image).\n\t\t\tOnly available when [member ProjectSettings.rendering/lights_and_shadows/use_physical_light_units] is enabled."},{"name":"frustum_far","type":"float","description":"Override value for [member Camera3D.far]. Used internally when calculating depth of field. When attached to a [Camera3D] as its [member Camera3D.attributes], it will override the [member Camera3D.far] property."},{"name":"frustum_focal_length","type":"float","description":"Distance between camera lens and camera aperture, measured in millimeters. Controls field of view and depth of field. A larger focal length will result in a smaller field of view and a narrower depth of field meaning fewer objects will be in focus. A smaller focal length will result in a wider field of view and a larger depth of field meaning more objects will be in focus. When attached to a [Camera3D] as its [member Camera3D.attributes], it will override the [member Camera3D.fov] property and the [member Camera3D.keep_aspect] property."},{"name":"frustum_focus_distance","type":"float","description":"Distance from camera of object that will be in focus, measured in meters. Internally this will be clamped to be at least 1 millimeter larger than [member frustum_focal_length]."},{"name":"frustum_near","type":"float","description":"Override value for [member Camera3D.near]. Used internally when calculating depth of field. When attached to a [Camera3D] as its [member Camera3D.attributes], it will override the [member Camera3D.near] property."}],"methods":[{"name":"get_fov","signature":"get_fov() -> float","description":"Returns the vertical field of view that corresponds to the [member frustum_focal_length]. This value is calculated internally whenever [member frustum_focal_length] is changed.","returnType":"float"}],"signals":[]},"CameraAttributesPractical":{"name":"CameraAttributesPractical","description":"Camera settings in an easy to use format.","inherits":"CameraAttributes","properties":[{"name":"auto_exposure_max_sensitivity","type":"float","description":"The maximum sensitivity (in ISO) used when calculating auto exposure. When calculating scene average luminance, color values will be clamped to at least this value. This limits the auto-exposure from exposing below a certain brightness, resulting in a cut off point where the scene will remain bright."},{"name":"auto_exposure_min_sensitivity","type":"float","description":"The minimum sensitivity (in ISO) used when calculating auto exposure. When calculating scene average luminance, color values will be clamped to at least this value. This limits the auto-exposure from exposing above a certain brightness, resulting in a cut off point where the scene will remain dark."},{"name":"dof_blur_amount","type":"float","description":"Sets the maximum amount of blur. When using physically-based blur amounts, will instead act as a multiplier. High values lead to an increased amount of blurriness, but can be much more expensive to calculate. It is best to keep this as low as possible for a given art style."},{"name":"dof_blur_far_distance","type":"float","description":"Objects further from the [Camera3D] by this amount will be blurred by the depth of field effect. Measured in meters."},{"name":"dof_blur_far_enabled","type":"bool","description":"Enables depth of field blur for objects further than [member dof_blur_far_distance]. Strength of blur is controlled by [member dof_blur_amount] and modulated by [member dof_blur_far_transition].\n\t\t\t[b]Note:[/b] Depth of field blur is only supported in the Forward+ and Mobile rendering methods, not Compatibility."},{"name":"dof_blur_far_transition","type":"float","description":"When positive, distance over which (starting from [member dof_blur_far_distance]) blur effect will scale from 0 to [member dof_blur_amount]. When negative, uses physically-based scaling so depth of field effect will scale from 0 at [member dof_blur_far_distance] and will increase in a physically accurate way as objects get further from the [Camera3D]."},{"name":"dof_blur_near_distance","type":"float","description":"Objects closer from the [Camera3D] by this amount will be blurred by the depth of field effect. Measured in meters."},{"name":"dof_blur_near_enabled","type":"bool","description":"Enables depth of field blur for objects closer than [member dof_blur_near_distance]. Strength of blur is controlled by [member dof_blur_amount] and modulated by [member dof_blur_near_transition].\n\t\t\t[b]Note:[/b] Depth of field blur is only supported in the Forward+ and Mobile rendering methods, not Compatibility."},{"name":"dof_blur_near_transition","type":"float","description":"When positive, distance over which blur effect will scale from 0 to [member dof_blur_amount], ending at [member dof_blur_near_distance]. When negative, uses physically-based scaling so depth of field effect will scale from 0 at [member dof_blur_near_distance] and will increase in a physically accurate way as objects get closer to the [Camera3D]."}],"methods":[],"signals":[]},"CameraFeed":{"name":"CameraFeed","description":"A camera feed gives you access to a single physical camera attached to your device.","inherits":"RefCounted","properties":[{"name":"feed_is_active","type":"bool","description":"If [code]true[/code], the feed is active."},{"name":"feed_transform","type":"Transform2D","description":"The transform applied to the camera's image."},{"name":"formats","type":"Array","description":"Formats supported by the feed. Each entry is a [Dictionary] describing format parameters."}],"methods":[{"name":"_activate_feed","signature":"_activate_feed() -> bool","description":"Called when the camera feed is activated.","returnType":"bool"},{"name":"_deactivate_feed","signature":"_deactivate_feed() -> void","description":"Called when the camera feed is deactivated.","returnType":"void"},{"name":"get_datatype","signature":"get_datatype() -> int","description":"Returns feed image data type.","returnType":"int"},{"name":"get_id","signature":"get_id() -> int","description":"Returns the unique ID for this feed.","returnType":"int"},{"name":"get_name","signature":"get_name() -> String","description":"Returns the camera's name.","returnType":"String"},{"name":"get_position","signature":"get_position() -> int","description":"Returns the position of camera on the device.","returnType":"int"},{"name":"get_texture_tex_id","signature":"get_texture_tex_id(feed_image_type: int) -> int","description":"Returns the texture backend ID (usable by some external libraries that need a handle to a texture to write data).","returnType":"int"},{"name":"set_external","signature":"set_external(width: int, height: int) -> void","description":"Sets the feed as external feed provided by another library.","returnType":"void"},{"name":"set_format","signature":"set_format(index: int, parameters: Dictionary) -> bool","description":"Sets the feed format parameters for the given index in the [member formats] array. Returns true on success. By default YUYV encoded stream is transformed to FEED_RGB. YUYV encoded stream output format can be changed with [param parameters].output value:\n\t\t\t\tseparate will result in FEED_YCBCR_SEP\n\t\t\t\tgrayscale will result in desaturated FEED_RGB\n\t\t\t\tcopy will result in FEED_YCBCR","returnType":"bool"},{"name":"set_name","signature":"set_name(name: String) -> void","description":"Sets the camera's name.","returnType":"void"},{"name":"set_position","signature":"set_position(position: int) -> void","description":"Sets the position of this camera.","returnType":"void"},{"name":"set_rgb_image","signature":"set_rgb_image(rgb_image: Image) -> void","description":"Sets RGB image for this feed.","returnType":"void"},{"name":"set_ycbcr_image","signature":"set_ycbcr_image(ycbcr_image: Image) -> void","description":"Sets YCbCr image for this feed.","returnType":"void"}],"signals":[{"name":"format_changed","description":"Emitted when the format has changed."},{"name":"frame_changed","description":"Emitted when a new frame is available."}]},"CameraServer":{"name":"CameraServer","description":"Server keeping track of different cameras accessible in Godot.","inherits":"Object","properties":[],"methods":[{"name":"add_feed","signature":"add_feed(feed: CameraFeed) -> void","description":"Adds the camera [param feed] to the camera server.","returnType":"void"},{"name":"feeds","signature":"feeds() -> CameraFeed[]","description":"Returns an array of s.","returnType":"CameraFeed[]"},{"name":"get_feed","signature":"get_feed(index: int) -> CameraFeed","description":"Returns the  corresponding to the camera with the given [param index].","returnType":"CameraFeed"},{"name":"get_feed_count","signature":"get_feed_count() -> int","description":"Returns the number of s registered.","returnType":"int"},{"name":"remove_feed","signature":"remove_feed(feed: CameraFeed) -> void","description":"Removes the specified camera [param feed].","returnType":"void"}],"signals":[{"name":"camera_feed_added","description":"Emitted when a [CameraFeed] is added (e.g. a webcam is plugged in)."},{"name":"camera_feed_removed","description":"Emitted when a [CameraFeed] is removed (e.g. a webcam is unplugged)."}]},"CameraTexture":{"name":"CameraTexture","description":"Texture provided by a .","inherits":"Texture2D","properties":[{"name":"camera_feed_id","type":"int","description":"The ID of the [CameraFeed] for which we want to display the image."},{"name":"camera_is_active","type":"bool","description":"Convenience property that gives access to the active property of the [CameraFeed]."},{"name":"which_feed","type":"int","description":"Which image within the [CameraFeed] we want access to, important if the camera image is split in a Y and CbCr component."}],"methods":[],"signals":[]},"CanvasGroup":{"name":"CanvasGroup","description":"Merges several 2D nodes into a single draw operation.","inherits":"Node2D","properties":[{"name":"clear_margin","type":"float","description":"Sets the size of the margin used to expand the clearing rect of this [CanvasGroup]. This expands the area of the backbuffer that will be used by the [CanvasGroup]. A smaller margin will reduce the area of the backbuffer used which can increase performance, however if [member use_mipmaps] is enabled, a small margin may result in mipmap errors at the edge of the [CanvasGroup]. Accordingly, this should be left as small as possible, but should be increased if artifacts appear along the edges of the canvas group."},{"name":"fit_margin","type":"float","description":"Sets the size of a margin used to expand the drawable rect of this [CanvasGroup]. The size of the [CanvasGroup] is determined by fitting a rect around its children then expanding that rect by [member fit_margin]. This increases both the backbuffer area used and the area covered by the [CanvasGroup] both of which can reduce performance. This should be kept as small as possible and should only be expanded when an increased size is needed (e.g. for custom shader effects)."},{"name":"use_mipmaps","type":"bool","description":"If [code]true[/code], calculates mipmaps for the backbuffer before drawing the [CanvasGroup] so that mipmaps can be used in a custom [ShaderMaterial] attached to the [CanvasGroup]. Generating mipmaps has a performance cost so this should not be enabled unless required."}],"methods":[],"signals":[]},"CanvasItem":{"name":"CanvasItem","description":"Abstract base class for everything in 2D space.","inherits":"Node","properties":[{"name":"clip_children","type":"int","description":"Allows the current node to clip child nodes, essentially acting as a mask.\n\t\t\t[b]Note:[/b] Clipping nodes cannot be nested or placed within [CanvasGroup]s. If an ancestor of this node clips its children or is a [CanvasGroup], then this node's clip mode should be set to [constant CLIP_CHILDREN_DISABLED] to avoid unexpected behavior."},{"name":"light_mask","type":"int","description":"The rendering layers in which this [CanvasItem] responds to [Light2D] nodes."},{"name":"material","type":"Material","description":"The material applied to this [CanvasItem]."},{"name":"modulate","type":"Color","description":"The color applied to this [CanvasItem]. This property does affect child [CanvasItem]s, unlike [member self_modulate] which only affects the node itself."},{"name":"self_modulate","type":"Color","description":"The color applied to this [CanvasItem]. This property does [b]not[/b] affect child [CanvasItem]s, unlike [member modulate] which affects both the node itself and its children.\n\t\t\t[b]Note:[/b] Internal children (e.g. sliders in [ColorPicker] or tab bar in [TabContainer]) are also not affected by this property (see [code]include_internal[/code] parameter of [method Node.get_child] and other similar methods)."},{"name":"show_behind_parent","type":"bool","description":"If [code]true[/code], the object draws behind its parent."},{"name":"texture_filter","type":"int","description":"The texture filtering mode to use on this [CanvasItem]."},{"name":"texture_repeat","type":"int","description":"The texture repeating mode to use on this [CanvasItem]."},{"name":"top_level","type":"bool","description":"If [code]true[/code], this [CanvasItem] will [i]not[/i] inherit its transform from parent [CanvasItem]s. Its draw order will also be changed to make it draw on top of other [CanvasItem]s that do not have [member top_level] set to [code]true[/code]. The [CanvasItem] will effectively act as if it was placed as a child of a bare [Node]."},{"name":"use_parent_material","type":"bool","description":"If [code]true[/code], the parent [CanvasItem]'s [member material] property is used as this one's material."},{"name":"visibility_layer","type":"int","description":"The rendering layer in which this [CanvasItem] is rendered by [Viewport] nodes. A [Viewport] will render a [CanvasItem] if it and all its parents share a layer with the [Viewport]'s canvas cull mask."},{"name":"visible","type":"bool","description":"If [code]true[/code], this [CanvasItem] may be drawn. Whether this [CanvasItem] is actually drawn depends on the visibility of all of its [CanvasItem] ancestors. In other words: this [CanvasItem] will be drawn when [method is_visible_in_tree] returns [code]true[/code] and all [CanvasItem] ancestors share at least one [member visibility_layer] with this [CanvasItem].\n\t\t\t[b]Note:[/b] For controls that inherit [Popup], the correct way to make them visible is to call one of the multiple [code]popup*()[/code] functions instead."},{"name":"y_sort_enabled","type":"bool","description":"If [code]true[/code], this and child [CanvasItem] nodes with a higher Y position are rendered in front of nodes with a lower Y position. If [code]false[/code], this and child [CanvasItem] nodes are rendered normally in scene tree order.\n\t\t\tWith Y-sorting enabled on a parent node ('A') but disabled on a child node ('B'), the child node ('B') is sorted but its children ('C1', 'C2', etc.) render together on the same Y position as the child node ('B'). This allows you to organize the render order of a scene without changing the scene tree.\n\t\t\tNodes sort relative to each other only if they are on the same [member z_index]."},{"name":"z_as_relative","type":"bool","description":"If [code]true[/code], the node's Z index is relative to its parent's Z index. If this node's Z index is 2 and its parent's effective Z index is 3, then this node's effective Z index will be 2 + 3 = 5."},{"name":"z_index","type":"int","description":"Controls the order in which the nodes render. A node with a higher Z index will display in front of others. Must be between [constant RenderingServer.CANVAS_ITEM_Z_MIN] and [constant RenderingServer.CANVAS_ITEM_Z_MAX] (inclusive).\n\t\t\t[b]Note:[/b] Changing the Z index of a [Control] only affects the drawing order, not the order in which input events are handled. This can be useful to implement certain UI animations, e.g. a menu where hovered items are scaled and should overlap others."}],"methods":[{"name":"_draw","signature":"_draw() -> void","description":"Called when  has been requested to redraw (after [method queue_redraw] is called, either manually or by the engine).\n\t\t\t\tCorresponds to the [constant NOTIFICATION_DRAW] notification in [method Object._notification].","returnType":"void"},{"name":"draw_animation_slice","signature":"draw_animation_slice(animation_length: float, slice_begin: float, slice_end: float, offset: float) -> void","description":"Subsequent drawing commands will be ignored unless they fall within the specified animation slice. This is a faster way to implement animations that loop on background rather than redrawing constantly.","returnType":"void"},{"name":"draw_arc","signature":"draw_arc(center: Vector2, radius: float, start_angle: float, end_angle: float, point_count: int, color: Color, width: float, antialiased: bool) -> void","description":"Draws an unfilled arc between the given angles with a uniform [param color] and [param width] and optional antialiasing (supported only for positive [param width]). The larger the value of [param point_count], the smoother the curve. See also [method draw_circle].\n\t\t\t\tIf [param width] is negative, it will be ignored and the arc will be drawn using [constant RenderingServer.PRIMITIVE_LINE_STRIP]. This means that when the CanvasItem is scaled, the arc will remain thin. If this behavior is not desired, then pass a positive [param width] like 1.0.\n\t\t\t\tThe arc is drawn from [param start_angle] towards the value of [param end_angle] so in clockwise direction if start_angle &lt; end_angle and counter-clockwise otherwise. Passing the same angles but in reversed order will produce the same arc. If absolute difference of [param start_angle] and [param end_angle] is greater than [constant @GDScript.TAU] radians, then a full circle arc is drawn (i.e. arc will not overlap itself).","returnType":"void"},{"name":"draw_char","signature":"draw_char(font: Font, pos: Vector2, char: String, font_size: int, modulate: Color) -> void","description":"Draws a string first character using a custom font.","returnType":"void"},{"name":"draw_char_outline","signature":"draw_char_outline(font: Font, pos: Vector2, char: String, font_size: int, size: int, modulate: Color) -> void","description":"Draws a string first character outline using a custom font.","returnType":"void"},{"name":"draw_circle","signature":"draw_circle(position: Vector2, radius: float, color: Color, filled: bool, width: float, antialiased: bool) -> void","description":"Draws a circle. See also [method draw_arc], [method draw_polyline], and [method draw_polygon].\n\t\t\t\tIf [param filled] is true, the circle will be filled with the [param color] specified. If [param filled] is false, the circle will be drawn as a stroke with the [param color] and [param width] specified.\n\t\t\t\tIf [param width] is negative, then two-point primitives will be drawn instead of a four-point ones. This means that when the CanvasItem is scaled, the lines will remain thin. If this behavior is not desired, then pass a positive [param width] like 1.0.\n\t\t\t\tIf [param antialiased] is true, half transparent \"feathers\" will be attached to the boundary, making outlines smooth.\n\t\t\t\tNote: [param width] is only effective if [param filled] is false.","returnType":"void"},{"name":"draw_colored_polygon","signature":"draw_colored_polygon(points: PackedVector2Array, color: Color, uvs: PackedVector2Array, texture: Texture2D) -> void","description":"Draws a colored polygon of any number of points, convex or concave. Unlike [method draw_polygon], a single color must be specified for the whole polygon.\n\t\t\t\tNote: If you frequently redraw the same polygon with a large number of vertices, consider pre-calculating the triangulation with [method Geometry2D.triangulate_polygon] and using [method draw_mesh], [method draw_multimesh], or [method RenderingServer.canvas_item_add_triangle_array].","returnType":"void"},{"name":"draw_dashed_line","signature":"draw_dashed_line(from: Vector2, to: Vector2, color: Color, width: float, dash: float, aligned: bool, antialiased: bool) -> void","description":"Draws a dashed line from a 2D point to another, with a given color and width. See also [method draw_line], [method draw_multiline], and [method draw_polyline].\n\t\t\t\tIf [param width] is negative, then a two-point primitives will be drawn instead of a four-point ones. This means that when the CanvasItem is scaled, the line parts will remain thin. If this behavior is not desired, then pass a positive [param width] like 1.0.\n\t\t\t\t[param dash] is the length of each dash in pixels, with the gap between each dash being the same length. If [param aligned] is true, the length of the first and last dashes may be shortened or lengthened to allow the line to begin and end at the precise points defined by [param from] and [param to]. Both ends are always symmetrical when [param aligned] is true. If [param aligned] is false, all dashes will have the same length, but the line may appear incomplete at the end due to the dash length not dividing evenly into the line length. Only full dashes are drawn when [param aligned] is false.\n\t\t\t\tIf [param antialiased] is true, half transparent \"feathers\" will be attached to the boundary, making outlines smooth.\n\t\t\t\tNote: [param antialiased] is only effective if [param width] is greater than 0.0.","returnType":"void"},{"name":"draw_end_animation","signature":"draw_end_animation() -> void","description":"After submitting all animations slices via [method draw_animation_slice], this function can be used to revert drawing to its default state (all subsequent drawing commands will be visible). If you don't care about this particular use case, usage of this function after submitting the slices is not required.","returnType":"void"},{"name":"draw_lcd_texture_rect_region","signature":"draw_lcd_texture_rect_region(texture: Texture2D, rect: Rect2, src_rect: Rect2, modulate: Color) -> void","description":"Draws a textured rectangle region of the font texture with LCD subpixel anti-aliasing at a given position, optionally modulated by a color.\n\t\t\t\tTexture is drawn using the following blend operation, blend mode of the  is ignored:\n\t\t\t\t\n\t\t\t\tdst.r = texture.r * modulate.r * modulate.a + dst.r * (1.0 - texture.r * modulate.a);\n\t\t\t\tdst.g = texture.g * modulate.g * modulate.a + dst.g * (1.0 - texture.g * modulate.a);\n\t\t\t\tdst.b = texture.b * modulate.b * modulate.a + dst.b * (1.0 - texture.b * modulate.a);\n\t\t\t\tdst.a = modulate.a + dst.a * (1.0 - modulate.a);\n\t\t\t\t","returnType":"void"},{"name":"draw_line","signature":"draw_line(from: Vector2, to: Vector2, color: Color, width: float, antialiased: bool) -> void","description":"Draws a line from a 2D point to another, with a given color and width. It can be optionally antialiased. See also [method draw_dashed_line], [method draw_multiline], and [method draw_polyline].\n\t\t\t\tIf [param width] is negative, then a two-point primitive will be drawn instead of a four-point one. This means that when the CanvasItem is scaled, the line will remain thin. If this behavior is not desired, then pass a positive [param width] like 1.0.","returnType":"void"},{"name":"draw_mesh","signature":"draw_mesh(mesh: Mesh, texture: Texture2D, transform: Transform2D, modulate: Color) -> void","description":"Draws a  in 2D, using the provided texture. See  for related documentation.","returnType":"void"},{"name":"draw_msdf_texture_rect_region","signature":"draw_msdf_texture_rect_region(texture: Texture2D, rect: Rect2, src_rect: Rect2, modulate: Color, outline: float, pixel_range: float, scale: float) -> void","description":"Draws a textured rectangle region of the multi-channel signed distance field texture at a given position, optionally modulated by a color. See [member FontFile.multichannel_signed_distance_field] for more information and caveats about MSDF font rendering.\n\t\t\t\tIf [param outline] is positive, each alpha channel value of pixel in region is set to maximum value of true distance in the [param outline] radius.\n\t\t\t\tValue of the [param pixel_range] should the same that was used during distance field texture generation.","returnType":"void"},{"name":"draw_multiline","signature":"draw_multiline(points: PackedVector2Array, color: Color, width: float, antialiased: bool) -> void","description":"Draws multiple disconnected lines with a uniform [param width] and [param color]. Each line is defined by two consecutive points from [param points] array, i.e. i-th segment consists of points[2 * i], points[2 * i + 1] endpoints. When drawing large amounts of lines, this is faster than using individual [method draw_line] calls. To draw interconnected lines, use [method draw_polyline] instead.\n\t\t\t\tIf [param width] is negative, then two-point primitives will be drawn instead of a four-point ones. This means that when the CanvasItem is scaled, the lines will remain thin. If this behavior is not desired, then pass a positive [param width] like 1.0.\n\t\t\t\tNote: [param antialiased] is only effective if [param width] is greater than 0.0.","returnType":"void"},{"name":"draw_multiline_colors","signature":"draw_multiline_colors(points: PackedVector2Array, colors: PackedColorArray, width: float, antialiased: bool) -> void","description":"Draws multiple disconnected lines with a uniform [param width] and segment-by-segment coloring. Each segment is defined by two consecutive points from [param points] array and a corresponding color from [param colors] array, i.e. i-th segment consists of points[2 * i], points[2 * i + 1] endpoints and has colors color. When drawing large amounts of lines, this is faster than using individual [method draw_line] calls. To draw interconnected lines, use [method draw_polyline_colors] instead.\n\t\t\t\tIf [param width] is negative, then two-point primitives will be drawn instead of a four-point ones. This means that when the CanvasItem is scaled, the lines will remain thin. If this behavior is not desired, then pass a positive [param width] like 1.0.\n\t\t\t\tNote: [param antialiased] is only effective if [param width] is greater than 0.0.","returnType":"void"},{"name":"draw_multiline_string","signature":"draw_multiline_string(font: Font, pos: Vector2, text: String, alignment: int, width: float, font_size: int, max_lines: int, modulate: Color, brk_flags: int, justification_flags: int, direction: int, orientation: int) -> void","description":"Breaks [param text] into lines and draws it using the specified [param font] at the [param pos] (top-left corner). The text will have its color multiplied by [param modulate]. If [param width] is greater than or equal to 0, the text will be clipped if it exceeds the specified width.","returnType":"void"},{"name":"draw_multiline_string_outline","signature":"draw_multiline_string_outline(font: Font, pos: Vector2, text: String, alignment: int, width: float, font_size: int, max_lines: int, size: int, modulate: Color, brk_flags: int, justification_flags: int, direction: int, orientation: int) -> void","description":"Breaks [param text] to the lines and draws text outline using the specified [param font] at the [param pos] (top-left corner). The text will have its color multiplied by [param modulate]. If [param width] is greater than or equal to 0, the text will be clipped if it exceeds the specified width.","returnType":"void"},{"name":"draw_multimesh","signature":"draw_multimesh(multimesh: MultiMesh, texture: Texture2D) -> void","description":"Draws a  in 2D with the provided texture. See  for related documentation.","returnType":"void"},{"name":"draw_polygon","signature":"draw_polygon(points: PackedVector2Array, colors: PackedColorArray, uvs: PackedVector2Array, texture: Texture2D) -> void","description":"Draws a solid polygon of any number of points, convex or concave. Unlike [method draw_colored_polygon], each point's color can be changed individually. See also [method draw_polyline] and [method draw_polyline_colors]. If you need more flexibility (such as being able to use bones), use [method RenderingServer.canvas_item_add_triangle_array] instead.\n\t\t\t\tNote: If you frequently redraw the same polygon with a large number of vertices, consider pre-calculating the triangulation with [method Geometry2D.triangulate_polygon] and using [method draw_mesh], [method draw_multimesh], or [method RenderingServer.canvas_item_add_triangle_array].","returnType":"void"},{"name":"draw_polyline","signature":"draw_polyline(points: PackedVector2Array, color: Color, width: float, antialiased: bool) -> void","description":"Draws interconnected line segments with a uniform [param color] and [param width] and optional antialiasing (supported only for positive [param width]). When drawing large amounts of lines, this is faster than using individual [method draw_line] calls. To draw disconnected lines, use [method draw_multiline] instead. See also [method draw_polygon].\n\t\t\t\tIf [param width] is negative, it will be ignored and the polyline will be drawn using [constant RenderingServer.PRIMITIVE_LINE_STRIP]. This means that when the CanvasItem is scaled, the polyline will remain thin. If this behavior is not desired, then pass a positive [param width] like 1.0.","returnType":"void"},{"name":"draw_polyline_colors","signature":"draw_polyline_colors(points: PackedVector2Array, colors: PackedColorArray, width: float, antialiased: bool) -> void","description":"Draws interconnected line segments with a uniform [param width], point-by-point coloring, and optional antialiasing (supported only for positive [param width]). Colors assigned to line points match by index between [param points] and [param colors], i.e. each line segment is filled with a gradient between the colors of the endpoints. When drawing large amounts of lines, this is faster than using individual [method draw_line] calls. To draw disconnected lines, use [method draw_multiline_colors] instead. See also [method draw_polygon].\n\t\t\t\tIf [param width] is negative, it will be ignored and the polyline will be drawn using [constant RenderingServer.PRIMITIVE_LINE_STRIP]. This means that when the CanvasItem is scaled, the polyline will remain thin. If this behavior is not desired, then pass a positive [param width] like 1.0.","returnType":"void"},{"name":"draw_primitive","signature":"draw_primitive(points: PackedVector2Array, colors: PackedColorArray, uvs: PackedVector2Array, texture: Texture2D) -> void","description":"Draws a custom primitive. 1 point for a point, 2 points for a line, 3 points for a triangle, and 4 points for a quad. If 0 points or more than 4 points are specified, nothing will be drawn and an error message will be printed. See also [method draw_line], [method draw_polyline], [method draw_polygon], and [method draw_rect].","returnType":"void"},{"name":"draw_rect","signature":"draw_rect(rect: Rect2, color: Color, filled: bool, width: float, antialiased: bool) -> void","description":"Draws a rectangle. If [param filled] is true, the rectangle will be filled with the [param color] specified. If [param filled] is false, the rectangle will be drawn as a stroke with the [param color] and [param width] specified. See also [method draw_texture_rect].\n\t\t\t\tIf [param width] is negative, then two-point primitives will be drawn instead of a four-point ones. This means that when the CanvasItem is scaled, the lines will remain thin. If this behavior is not desired, then pass a positive [param width] like 1.0.\n\t\t\t\tIf [param antialiased] is true, half transparent \"feathers\" will be attached to the boundary, making outlines smooth.\n\t\t\t\tNote: [param width] is only effective if [param filled] is false.\n\t\t\t\tNote: Unfilled rectangles drawn with a negative [param width] may not display perfectly. For example, corners may be missing or brighter due to overlapping lines (for a translucent [param color]).","returnType":"void"},{"name":"draw_set_transform","signature":"draw_set_transform(position: Vector2, rotation: float, scale: Vector2) -> void","description":"Sets a custom transform for drawing via components. Anything drawn afterwards will be transformed by this.\n\t\t\t\tNote: [member FontFile.oversampling] does not take [param scale] into account. This means that scaling up/down will cause bitmap fonts and rasterized (non-MSDF) dynamic fonts to appear blurry or pixelated. To ensure text remains crisp regardless of scale, you can enable MSDF font rendering by enabling [member ProjectSettings.gui/theme/default_font_multichannel_signed_distance_field] (applies to the default project font only), or enabling Multichannel Signed Distance Field in the import options of a DynamicFont for custom fonts. On system fonts, [member SystemFont.multichannel_signed_distance_field] can be enabled in the inspector.","returnType":"void"},{"name":"draw_set_transform_matrix","signature":"draw_set_transform_matrix(xform: Transform2D) -> void","description":"Sets a custom transform for drawing via matrix. Anything drawn afterwards will be transformed by this.","returnType":"void"},{"name":"draw_string","signature":"draw_string(font: Font, pos: Vector2, text: String, alignment: int, width: float, font_size: int, modulate: Color, justification_flags: int, direction: int, orientation: int) -> void","description":"Draws [param text] using the specified [param font] at the [param pos] (bottom-left corner using the baseline of the font). The text will have its color multiplied by [param modulate]. If [param width] is greater than or equal to 0, the text will be clipped if it exceeds the specified width.\n\t\t\t\tExample: Draw \"Hello world\", using the project's default font:\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t# If using this method in a script that redraws constantly, move the\n\t\t\t\t# `default_font` declaration to a member variable assigned in `_ready()`\n\t\t\t\t# so the Control is only created once.\n\t\t\t\tvar default_font = ThemeDB.fallback_font\n\t\t\t\tvar default_font_size = ThemeDB.fallback_font_size\n\t\t\t\tdraw_string(default_font, Vector2(64, 64), \"Hello world\", HORIZONTAL_ALIGNMENT_LEFT, -1, default_font_size)\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t// If using this method in a script that redraws constantly, move the\n\t\t\t\t// `default_font` declaration to a member variable assigned in `_Ready()`\n\t\t\t\t// so the Control is only created once.\n\t\t\t\tFont defaultFont = ThemeDB.FallbackFont;\n\t\t\t\tint defaultFontSize = ThemeDB.FallbackFontSize;\n\t\t\t\tDrawString(defaultFont, new Vector2(64, 64), \"Hello world\", HORIZONTAL_ALIGNMENT_LEFT, -1, defaultFontSize);\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tSee also [method Font.draw_string].","returnType":"void"},{"name":"draw_string_outline","signature":"draw_string_outline(font: Font, pos: Vector2, text: String, alignment: int, width: float, font_size: int, size: int, modulate: Color, justification_flags: int, direction: int, orientation: int) -> void","description":"Draws [param text] outline using the specified [param font] at the [param pos] (bottom-left corner using the baseline of the font). The text will have its color multiplied by [param modulate]. If [param width] is greater than or equal to 0, the text will be clipped if it exceeds the specified width.","returnType":"void"},{"name":"draw_style_box","signature":"draw_style_box(style_box: StyleBox, rect: Rect2) -> void","description":"Draws a styled rectangle.","returnType":"void"},{"name":"draw_texture","signature":"draw_texture(texture: Texture2D, position: Vector2, modulate: Color) -> void","description":"Draws a texture at a given position.","returnType":"void"},{"name":"draw_texture_rect","signature":"draw_texture_rect(texture: Texture2D, rect: Rect2, tile: bool, modulate: Color, transpose: bool) -> void","description":"Draws a textured rectangle at a given position, optionally modulated by a color. If [param transpose] is true, the texture will have its X and Y coordinates swapped. See also [method draw_rect] and [method draw_texture_rect_region].","returnType":"void"},{"name":"draw_texture_rect_region","signature":"draw_texture_rect_region(texture: Texture2D, rect: Rect2, src_rect: Rect2, modulate: Color, transpose: bool, clip_uv: bool) -> void","description":"Draws a textured rectangle from a texture's region (specified by [param src_rect]) at a given position, optionally modulated by a color. If [param transpose] is true, the texture will have its X and Y coordinates swapped. See also [method draw_texture_rect].","returnType":"void"},{"name":"force_update_transform","signature":"force_update_transform() -> void","description":"Forces the transform to update. Transform changes in physics are not instant for performance reasons. Transforms are accumulated and then set. Use this if you need an up-to-date transform when doing physics operations.","returnType":"void"},{"name":"get_canvas","signature":"get_canvas() -> RID","description":"Returns the  of the  canvas where this item is in.","returnType":"RID"},{"name":"get_canvas_item","signature":"get_canvas_item() -> RID","description":"Returns the canvas item RID used by  for this item.","returnType":"RID"},{"name":"get_canvas_layer_node","signature":"get_canvas_layer_node() -> CanvasLayer","description":"Returns the  that contains this node, or null if the node is not in any .","returnType":"CanvasLayer"},{"name":"get_canvas_transform","signature":"get_canvas_transform() -> Transform2D","description":"Returns the transform from the coordinate system of the canvas, this item is in, to the s coordinate system.","returnType":"Transform2D"},{"name":"get_global_mouse_position","signature":"get_global_mouse_position() -> Vector2","description":"Returns the mouse's position in the  that this  is in using the coordinate system of the .\n\t\t\t\tNote: For screen-space coordinates (e.g. when using a non-embedded ), you can use [method DisplayServer.mouse_get_position].","returnType":"Vector2"},{"name":"get_global_transform","signature":"get_global_transform() -> Transform2D","description":"Returns the global transform matrix of this item, i.e. the combined transform up to the topmost  node. The topmost item is a  that either has no parent, has non- parent or it has [member top_level] enabled.","returnType":"Transform2D"},{"name":"get_global_transform_with_canvas","signature":"get_global_transform_with_canvas() -> Transform2D","description":"Returns the transform from the local coordinate system of this  to the s coordinate system.","returnType":"Transform2D"},{"name":"get_instance_shader_parameter","signature":"get_instance_shader_parameter(name: StringName) -> Variant","description":"Get the value of a shader parameter as set on this instance.","returnType":"Variant"},{"name":"get_local_mouse_position","signature":"get_local_mouse_position() -> Vector2","description":"Returns the mouse's position in this  using the local coordinate system of this .","returnType":"Vector2"},{"name":"get_screen_transform","signature":"get_screen_transform() -> Transform2D","description":"Returns the transform of this  in global screen coordinates (i.e. taking window position into account). Mostly useful for editor plugins.\n\t\t\t\tEquals to [method get_global_transform] if the window is embedded (see [member Viewport.gui_embed_subwindows]).","returnType":"Transform2D"},{"name":"get_transform","signature":"get_transform() -> Transform2D","description":"Returns the transform matrix of this item.","returnType":"Transform2D"},{"name":"get_viewport_rect","signature":"get_viewport_rect() -> Rect2","description":"Returns the viewport's boundaries as a .","returnType":"Rect2"},{"name":"get_viewport_transform","signature":"get_viewport_transform() -> Transform2D","description":"Returns the transform from the coordinate system of the canvas, this item is in, to the s embedders coordinate system.","returnType":"Transform2D"},{"name":"get_visibility_layer_bit","signature":"get_visibility_layer_bit(layer: int) -> bool","description":"Returns an individual bit on the rendering visibility layer.","returnType":"bool"},{"name":"get_world_2d","signature":"get_world_2d() -> World2D","description":"Returns the  where this item is in.","returnType":"World2D"},{"name":"hide","signature":"hide() -> void","description":"Hide the  if it's currently visible. This is equivalent to setting [member visible] to false.","returnType":"void"},{"name":"is_local_transform_notification_enabled","signature":"is_local_transform_notification_enabled() -> bool","description":"Returns true if local transform notifications are communicated to children.","returnType":"bool"},{"name":"is_transform_notification_enabled","signature":"is_transform_notification_enabled() -> bool","description":"Returns true if global transform notifications are communicated to children.","returnType":"bool"},{"name":"is_visible_in_tree","signature":"is_visible_in_tree() -> bool","description":"Returns true if the node is present in the , its [member visible] property is true and all its ancestors are also visible. If any ancestor is hidden, this node will not be visible in the scene tree, and is therefore not drawn (see [method _draw]).\n\t\t\t\tVisibility is checked only in parent nodes that inherit from , , and . If the parent is of any other type (such as , , or ), it is assumed to be visible.\n\t\t\t\tNote: This method does not take [member visibility_layer] into account, so even if this method returns true, the node might end up not being rendered.","returnType":"bool"},{"name":"make_canvas_position_local","signature":"make_canvas_position_local(viewport_point: Vector2) -> Vector2","description":"Transforms [param viewport_point] from the viewport's coordinates to this node's local coordinates.\n\t\t\t\tFor the opposite operation, use [method get_global_transform_with_canvas].\n\t\t\t\t\n\t\t\t\tvar viewport_point = get_global_transform_with_canvas() * local_point\n\t\t\t\t","returnType":"Vector2"},{"name":"make_input_local","signature":"make_input_local(event: InputEvent) -> InputEvent","description":"Transformations issued by [param event]'s inputs are applied in local space instead of global space.","returnType":"InputEvent"},{"name":"move_to_front","signature":"move_to_front() -> void","description":"Moves this node to display on top of its siblings.\n\t\t\t\tInternally, the node is moved to the bottom of parent's child list. The method has no effect on nodes without a parent.","returnType":"void"},{"name":"queue_redraw","signature":"queue_redraw() -> void","description":"Queues the  to redraw. During idle time, if  is visible, [constant NOTIFICATION_DRAW] is sent and [method _draw] is called. This only occurs once per frame, even if this method has been called multiple times.","returnType":"void"},{"name":"set_instance_shader_parameter","signature":"set_instance_shader_parameter(name: StringName, value: Variant) -> void","description":"Set the value of a shader uniform for this instance only ([url=$DOCS_URL/tutorials/shaders/shader_reference/shading_language.html#per-instance-uniforms]per-instance uniform). See also [method ShaderMaterial.set_shader_parameter] to assign a uniform on all instances using the same .\n\t\t\t\tNote: For a shader uniform to be assignable on a per-instance basis, it must be defined with instance uniform ... rather than uniform ... in the shader code.\n\t\t\t\tNote: [param name] is case-sensitive and must match the name of the uniform in the code exactly (not the capitalized name in the inspector).","returnType":"void"},{"name":"set_notify_local_transform","signature":"set_notify_local_transform(enable: bool) -> void","description":"If [param enable] is true, this node will receive [constant NOTIFICATION_LOCAL_TRANSFORM_CHANGED] when its local transform changes.","returnType":"void"},{"name":"set_notify_transform","signature":"set_notify_transform(enable: bool) -> void","description":"If [param enable] is true, this node will receive [constant NOTIFICATION_TRANSFORM_CHANGED] when its global transform changes.","returnType":"void"},{"name":"set_visibility_layer_bit","signature":"set_visibility_layer_bit(layer: int, enabled: bool) -> void","description":"Set/clear individual bits on the rendering visibility layer. This simplifies editing this 's visibility layer.","returnType":"void"},{"name":"show","signature":"show() -> void","description":"Show the  if it's currently hidden. This is equivalent to setting [member visible] to true. For controls that inherit , the correct way to make them visible is to call one of the multiple popup*() functions instead.","returnType":"void"}],"signals":[{"name":"draw","description":"Emitted when the [CanvasItem] must redraw, [i]after[/i] the related [constant NOTIFICATION_DRAW] notification, and [i]before[/i] [method _draw] is called.\n\t\t\t\t[b]Note:[/b] Deferred connections do not allow drawing through the [code]draw_*[/code] methods."},{"name":"hidden","description":"Emitted when the [CanvasItem] is hidden, i.e. it's no longer visible in the tree (see [method is_visible_in_tree])."},{"name":"item_rect_changed","description":"Emitted when the [CanvasItem]'s boundaries (position or size) change, or when an action took place that may have affected these boundaries (e.g. changing [member Sprite2D.texture])."},{"name":"visibility_changed","description":"Emitted when the [CanvasItem]'s visibility changes, either because its own [member visible] property changed or because its visibility in the tree changed (see [method is_visible_in_tree])."}]},"CanvasItemMaterial":{"name":"CanvasItemMaterial","description":"A material for s.","inherits":"Material","properties":[{"name":"blend_mode","type":"int","description":"The manner in which a material's rendering is applied to underlying textures."},{"name":"light_mode","type":"int","description":"The manner in which material reacts to lighting."},{"name":"particles_anim_h_frames","type":"int","description":"The number of columns in the spritesheet assigned as [Texture2D] for a [GPUParticles2D] or [CPUParticles2D].\n\t\t\t[b]Note:[/b] This property is only used and visible in the editor if [member particles_animation] is [code]true[/code]."},{"name":"particles_anim_loop","type":"bool","description":"If [code]true[/code], the particles animation will loop.\n\t\t\t[b]Note:[/b] This property is only used and visible in the editor if [member particles_animation] is [code]true[/code]."},{"name":"particles_anim_v_frames","type":"int","description":"The number of rows in the spritesheet assigned as [Texture2D] for a [GPUParticles2D] or [CPUParticles2D].\n\t\t\t[b]Note:[/b] This property is only used and visible in the editor if [member particles_animation] is [code]true[/code]."},{"name":"particles_animation","type":"bool","description":"If [code]true[/code], enable spritesheet-based animation features when assigned to [GPUParticles2D] and [CPUParticles2D] nodes. The [member ParticleProcessMaterial.anim_speed_max] or [member CPUParticles2D.anim_speed_max] should also be set to a positive value for the animation to play.\n\t\t\tThis property (and other [code]particles_anim_*[/code] properties that depend on it) has no effect on other types of nodes."}],"methods":[],"signals":[]},"CanvasLayer":{"name":"CanvasLayer","description":"A node used for independent rendering of objects within a 2D scene.","inherits":"Node","properties":[{"name":"custom_viewport","type":"Node","description":"The custom [Viewport] node assigned to the [CanvasLayer]. If [code]null[/code], uses the default viewport instead."},{"name":"follow_viewport_enabled","type":"bool","description":"If enabled, the [CanvasLayer] stays in a fixed position on the screen. If disabled, the [CanvasLayer] maintains its position in world space.\n\t\t\tTogether with [member follow_viewport_scale], this can be used for a pseudo-3D effect."},{"name":"follow_viewport_scale","type":"float","description":"Scales the layer when using [member follow_viewport_enabled]. Layers moving into the foreground should have increasing scales, while layers moving into the background should have decreasing scales."},{"name":"layer","type":"int","description":"Layer index for draw order. Lower values are drawn behind higher values.\n\t\t\t[b]Note:[/b] If multiple CanvasLayers have the same layer index, [CanvasItem] children of one CanvasLayer are drawn behind the [CanvasItem] children of the other CanvasLayer. Which CanvasLayer is drawn in front is non-deterministic."},{"name":"offset","type":"Vector2","description":"The layer's base offset."},{"name":"rotation","type":"float","description":"The layer's rotation in radians."},{"name":"scale","type":"Vector2","description":"The layer's scale."},{"name":"transform","type":"Transform2D","description":"The layer's transform."},{"name":"visible","type":"bool","description":"If [code]false[/code], any [CanvasItem] under this [CanvasLayer] will be hidden.\n\t\t\tUnlike [member CanvasItem.visible], visibility of a [CanvasLayer] isn't propagated to underlying layers."}],"methods":[{"name":"get_canvas","signature":"get_canvas() -> RID","description":"Returns the RID of the canvas used by this layer.","returnType":"RID"},{"name":"get_final_transform","signature":"get_final_transform() -> Transform2D","description":"Returns the transform from the s coordinate system to the s coordinate system.","returnType":"Transform2D"},{"name":"hide","signature":"hide() -> void","description":"Hides any  under this . This is equivalent to setting [member visible] to false.","returnType":"void"},{"name":"show","signature":"show() -> void","description":"Shows any  under this . This is equivalent to setting [member visible] to true.","returnType":"void"}],"signals":[{"name":"visibility_changed","description":"Emitted when visibility of the layer is changed. See [member visible]."}]},"CanvasModulate":{"name":"CanvasModulate","description":"A node that applies a color tint to a canvas.","inherits":"Node2D","properties":[{"name":"color","type":"Color","description":"The tint color to apply."}],"methods":[],"signals":[]},"CanvasTexture":{"name":"CanvasTexture","description":"Texture with optional normal and specular maps for use in 2D rendering.","inherits":"Texture2D","properties":[{"name":"diffuse_texture","type":"Texture2D","description":"The diffuse (color) texture to use. This is the main texture you want to set in most cases."},{"name":"normal_texture","type":"Texture2D","description":"The normal map texture to use. Only has a visible effect if [Light2D]s are affecting this [CanvasTexture].\n\t\t\t[b]Note:[/b] Godot expects the normal map to use X+, Y+, and Z+ coordinates. See [url=http://wiki.polycount.com/wiki/Normal_Map_Technical_Details#Common_Swizzle_Coordinates]this page[/url] for a comparison of normal map coordinates expected by popular engines."},{"name":"specular_color","type":"Color","description":"The multiplier for specular reflection colors. The [Light2D]'s color is also taken into account when determining the reflection color. Only has a visible effect if [Light2D]s are affecting this [CanvasTexture]."},{"name":"specular_shininess","type":"float","description":"The specular exponent for [Light2D] specular reflections. Higher values result in a more glossy/\"wet\" look, with reflections becoming more localized and less visible overall. The default value of [code]1.0[/code] disables specular reflections entirely. Only has a visible effect if [Light2D]s are affecting this [CanvasTexture]."},{"name":"specular_texture","type":"Texture2D","description":"The specular map to use for [Light2D] specular reflections. This should be a grayscale or colored texture, with brighter areas resulting in a higher [member specular_shininess] value. Using a colored [member specular_texture] allows controlling specular shininess on a per-channel basis. Only has a visible effect if [Light2D]s are affecting this [CanvasTexture]."},{"name":"texture_filter","type":"int","description":"The texture filtering mode to use when drawing this [CanvasTexture]."},{"name":"texture_repeat","type":"int","description":"The texture repeat mode to use when drawing this [CanvasTexture]."}],"methods":[],"signals":[]},"CapsuleMesh":{"name":"CapsuleMesh","description":"Class representing a capsule-shaped .","inherits":"PrimitiveMesh","properties":[{"name":"height","type":"float","description":"Total height of the capsule mesh (including the hemispherical ends)."},{"name":"radial_segments","type":"int","description":"Number of radial segments on the capsule mesh."},{"name":"radius","type":"float","description":"Radius of the capsule mesh."},{"name":"rings","type":"int","description":"Number of rings along the height of the capsule."}],"methods":[],"signals":[]},"CapsuleShape2D":{"name":"CapsuleShape2D","description":"A 2D capsule shape used for physics collision.","inherits":"Shape2D","properties":[{"name":"height","type":"float","description":"The capsule's height."},{"name":"radius","type":"float","description":"The capsule's radius."}],"methods":[],"signals":[]},"CapsuleShape3D":{"name":"CapsuleShape3D","description":"A 3D capsule shape used for physics collision.","inherits":"Shape3D","properties":[{"name":"height","type":"float","description":"The capsule's height."},{"name":"radius","type":"float","description":"The capsule's radius."}],"methods":[],"signals":[]},"CenterContainer":{"name":"CenterContainer","description":"A container that keeps child controls in its center.","inherits":"Container","properties":[{"name":"use_top_left","type":"bool","description":"If [code]true[/code], centers children relative to the [CenterContainer]'s top left corner."}],"methods":[],"signals":[]},"CharFXTransform":{"name":"CharFXTransform","description":"Controls how an individual character will be displayed in a .","inherits":"RefCounted","properties":[{"name":"color","type":"Color","description":"The color the character will be drawn with."},{"name":"elapsed_time","type":"float","description":"The time elapsed since the [RichTextLabel] was added to the scene tree (in seconds). Time stops when the [RichTextLabel] is paused (see [member Node.process_mode]). Resets when the text in the [RichTextLabel] is changed.\n\t\t\t[b]Note:[/b] Time still passes while the [RichTextLabel] is hidden."},{"name":"env","type":"Dictionary","description":"Contains the arguments passed in the opening BBCode tag. By default, arguments are strings; if their contents match a type such as [bool], [int] or [float], they will be converted automatically. Color codes in the form [code]#rrggbb[/code] or [code]#rgb[/code] will be converted to an opaque [Color]. String arguments may not contain spaces, even if they're quoted. If present, quotes will also be present in the final string.\n\t\t\tFor example, the opening BBCode tag [code][example foo=hello bar=true baz=42 color=#ffffff][/code] will map to the following [Dictionary]:\n\t\t\t[codeblock]\n\t\t\t{\"foo\": \"hello\", \"bar\": true, \"baz\": 42, \"color\": Color(1, 1, 1, 1)}\n\t\t\t[/codeblock]"},{"name":"font","type":"RID","description":"[TextServer] RID of the font used to render glyph, this value can be used with [code]TextServer.font_*[/code] methods to retrieve font information.\n\t\t\t[b]Note:[/b] Read-only. Setting this property won't affect drawing."},{"name":"glyph_count","type":"int","description":"Number of glyphs in the grapheme cluster. This value is set in the first glyph of a cluster.\n\t\t\t[b]Note:[/b] Read-only. Setting this property won't affect drawing."},{"name":"glyph_flags","type":"int","description":"Glyph flags. See [enum TextServer.GraphemeFlag] for more info.\n\t\t\t[b]Note:[/b] Read-only. Setting this property won't affect drawing."},{"name":"glyph_index","type":"int","description":"Glyph index specific to the [member font]. If you want to replace this glyph, use [method TextServer.font_get_glyph_index] with [member font] to get a new glyph index for a single character."},{"name":"offset","type":"Vector2","description":"The position offset the character will be drawn with (in pixels)."},{"name":"outline","type":"bool","description":"If [code]true[/code], FX transform is called for outline drawing.\n\t\t\t[b]Note:[/b] Read-only. Setting this property won't affect drawing."},{"name":"range","type":"Vector2i","description":"Absolute character range in the string, corresponding to the glyph.\n\t\t\t[b]Note:[/b] Read-only. Setting this property won't affect drawing."},{"name":"relative_index","type":"int","description":"The character offset of the glyph, relative to the current [RichTextEffect] custom block.\n\t\t\t[b]Note:[/b] Read-only. Setting this property won't affect drawing."},{"name":"transform","type":"Transform2D","description":"The current transform of the current glyph. It can be overridden (for example, by driving the position and rotation from a curve). You can also alter the existing value to apply transforms on top of other effects."},{"name":"visible","type":"bool","description":"If [code]true[/code], the character will be drawn. If [code]false[/code], the character will be hidden. Characters around hidden characters will reflow to take the space of hidden characters. If this is not desired, set their [member color] to [code]Color(1, 1, 1, 0)[/code] instead."}],"methods":[],"signals":[]},"CharacterBody2D":{"name":"CharacterBody2D","description":"A 2D physics body specialized for characters moved by script.","inherits":"PhysicsBody2D","properties":[{"name":"floor_block_on_wall","type":"bool","description":"If [code]true[/code], the body will be able to move on the floor only. This option avoids to be able to walk on walls, it will however allow to slide down along them."},{"name":"floor_constant_speed","type":"bool","description":"If [code]false[/code] (by default), the body will move faster on downward slopes and slower on upward slopes.\n\t\t\tIf [code]true[/code], the body will always move at the same speed on the ground no matter the slope. Note that you need to use [member floor_snap_length] to stick along a downward slope at constant speed."},{"name":"floor_max_angle","type":"float","description":"Maximum angle (in radians) where a slope is still considered a floor (or a ceiling), rather than a wall, when calling [method move_and_slide]. The default value equals 45 degrees."},{"name":"floor_snap_length","type":"float","description":"Sets a snapping distance. When set to a value different from [code]0.0[/code], the body is kept attached to slopes when calling [method move_and_slide]. The snapping vector is determined by the given distance along the opposite direction of the [member up_direction].\n\t\t\tAs long as the snapping vector is in contact with the ground and the body moves against [member up_direction], the body will remain attached to the surface. Snapping is not applied if the body moves along [member up_direction], meaning it contains vertical rising velocity, so it will be able to detach from the ground when jumping or when the body is pushed up by something. If you want to apply a snap without taking into account the velocity, use [method apply_floor_snap]."},{"name":"floor_stop_on_slope","type":"bool","description":"If [code]true[/code], the body will not slide on slopes when calling [method move_and_slide] when the body is standing still.\n\t\t\tIf [code]false[/code], the body will slide on floor's slopes when [member velocity] applies a downward force."},{"name":"max_slides","type":"int","description":"Maximum number of times the body can change direction before it stops when calling [method move_and_slide]."},{"name":"motion_mode","type":"int","description":"Sets the motion mode which defines the behavior of [method move_and_slide]. See [enum MotionMode] constants for available modes."},{"name":"platform_floor_layers","type":"int","description":"Collision layers that will be included for detecting floor bodies that will act as moving platforms to be followed by the [CharacterBody2D]. By default, all floor bodies are detected and propagate their velocity."},{"name":"platform_on_leave","type":"int","description":"Sets the behavior to apply when you leave a moving platform. By default, to be physically accurate, when you leave the last platform velocity is applied. See [enum PlatformOnLeave] constants for available behavior."},{"name":"platform_wall_layers","type":"int","description":"Collision layers that will be included for detecting wall bodies that will act as moving platforms to be followed by the [CharacterBody2D]. By default, all wall bodies are ignored."},{"name":"safe_margin","type":"float","description":"Extra margin used for collision recovery when calling [method move_and_slide].\n\t\t\tIf the body is at least this close to another body, it will consider them to be colliding and will be pushed away before performing the actual motion.\n\t\t\tA higher value means it's more flexible for detecting collision, which helps with consistently detecting walls and floors.\n\t\t\tA lower value forces the collision algorithm to use more exact detection, so it can be used in cases that specifically require precision, e.g at very low scale to avoid visible jittering, or for stability with a stack of character bodies."},{"name":"slide_on_ceiling","type":"bool","description":"If [code]true[/code], during a jump against the ceiling, the body will slide, if [code]false[/code] it will be stopped and will fall vertically."},{"name":"up_direction","type":"Vector2","description":"Vector pointing upwards, used to determine what is a wall and what is a floor (or a ceiling) when calling [method move_and_slide]. Defaults to [constant Vector2.UP]. As the vector will be normalized it can't be equal to [constant Vector2.ZERO], if you want all collisions to be reported as walls, consider using [constant MOTION_MODE_FLOATING] as [member motion_mode]."},{"name":"velocity","type":"Vector2","description":"Current velocity vector in pixels per second, used and modified during calls to [method move_and_slide]."},{"name":"wall_min_slide_angle","type":"float","description":"Minimum angle (in radians) where the body is allowed to slide when it encounters a slope. The default value equals 15 degrees. This property only affects movement when [member motion_mode] is [constant MOTION_MODE_FLOATING]."}],"methods":[{"name":"apply_floor_snap","signature":"apply_floor_snap() -> void","description":"Allows to manually apply a snap to the floor regardless of the body's velocity. This function does nothing when [method is_on_floor] returns true.","returnType":"void"},{"name":"get_floor_angle","signature":"get_floor_angle(up_direction: Vector2) -> float","description":"Returns the floor's collision angle at the last collision point according to [param up_direction], which is [constant Vector2.UP] by default. This value is always positive and only valid after calling [method move_and_slide] and when [method is_on_floor] returns true.","returnType":"float"},{"name":"get_floor_normal","signature":"get_floor_normal() -> Vector2","description":"Returns the collision normal of the floor at the last collision point. Only valid after calling [method move_and_slide] and when [method is_on_floor] returns true.\n\t\t\t\tWarning: The collision normal is not always the same as the surface normal.","returnType":"Vector2"},{"name":"get_last_motion","signature":"get_last_motion() -> Vector2","description":"Returns the last motion applied to the  during the last call to [method move_and_slide]. The movement can be split into multiple motions when sliding occurs, and this method return the last one, which is useful to retrieve the current direction of the movement.","returnType":"Vector2"},{"name":"get_last_slide_collision","signature":"get_last_slide_collision() -> KinematicCollision2D","description":"Returns a , which contains information about the latest collision that occurred during the last call to [method move_and_slide].","returnType":"KinematicCollision2D"},{"name":"get_platform_velocity","signature":"get_platform_velocity() -> Vector2","description":"Returns the linear velocity of the platform at the last collision point. Only valid after calling [method move_and_slide].","returnType":"Vector2"},{"name":"get_position_delta","signature":"get_position_delta() -> Vector2","description":"Returns the travel (position delta) that occurred during the last call to [method move_and_slide].","returnType":"Vector2"},{"name":"get_real_velocity","signature":"get_real_velocity() -> Vector2","description":"Returns the current real velocity since the last call to [method move_and_slide]. For example, when you climb a slope, you will move diagonally even though the velocity is horizontal. This method returns the diagonal movement, as opposed to [member velocity] which returns the requested velocity.","returnType":"Vector2"},{"name":"get_slide_collision","signature":"get_slide_collision(slide_idx: int) -> KinematicCollision2D","description":"Returns a , which contains information about a collision that occurred during the last call to [method move_and_slide]. Since the body can collide several times in a single call to [method move_and_slide], you must specify the index of the collision in the range 0 to ([method get_slide_collision_count] - 1).\n\t\t\t\tExample: Iterate through the collisions with a for loop:\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tfor i in get_slide_collision_count():\n\t\t\t\t    var collision = get_slide_collision(i)\n\t\t\t\t    print(\"Collided with: \", collision.get_collider().name)\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tfor (int i = 0; i &lt; GetSlideCollisionCount(); i++)\n\t\t\t\t{\n\t\t\t\t    KinematicCollision2D collision = GetSlideCollision(i);\n\t\t\t\t    GD.Print(\"Collided with: \", (collision.GetCollider() as Node).Name);\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t","returnType":"KinematicCollision2D"},{"name":"get_slide_collision_count","signature":"get_slide_collision_count() -> int","description":"Returns the number of times the body collided and changed direction during the last call to [method move_and_slide].","returnType":"int"},{"name":"get_wall_normal","signature":"get_wall_normal() -> Vector2","description":"Returns the collision normal of the wall at the last collision point. Only valid after calling [method move_and_slide] and when [method is_on_wall] returns true.\n\t\t\t\tWarning: The collision normal is not always the same as the surface normal.","returnType":"Vector2"},{"name":"is_on_ceiling","signature":"is_on_ceiling() -> bool","description":"Returns true if the body collided with the ceiling on the last call of [method move_and_slide]. Otherwise, returns false. The [member up_direction] and [member floor_max_angle] are used to determine whether a surface is \"ceiling\" or not.","returnType":"bool"},{"name":"is_on_ceiling_only","signature":"is_on_ceiling_only() -> bool","description":"Returns true if the body collided only with the ceiling on the last call of [method move_and_slide]. Otherwise, returns false. The [member up_direction] and [member floor_max_angle] are used to determine whether a surface is \"ceiling\" or not.","returnType":"bool"},{"name":"is_on_floor","signature":"is_on_floor() -> bool","description":"Returns true if the body collided with the floor on the last call of [method move_and_slide]. Otherwise, returns false. The [member up_direction] and [member floor_max_angle] are used to determine whether a surface is \"floor\" or not.","returnType":"bool"},{"name":"is_on_floor_only","signature":"is_on_floor_only() -> bool","description":"Returns true if the body collided only with the floor on the last call of [method move_and_slide]. Otherwise, returns false. The [member up_direction] and [member floor_max_angle] are used to determine whether a surface is \"floor\" or not.","returnType":"bool"},{"name":"is_on_wall","signature":"is_on_wall() -> bool","description":"Returns true if the body collided with a wall on the last call of [method move_and_slide]. Otherwise, returns false. The [member up_direction] and [member floor_max_angle] are used to determine whether a surface is \"wall\" or not.","returnType":"bool"},{"name":"is_on_wall_only","signature":"is_on_wall_only() -> bool","description":"Returns true if the body collided only with a wall on the last call of [method move_and_slide]. Otherwise, returns false. The [member up_direction] and [member floor_max_angle] are used to determine whether a surface is \"wall\" or not.","returnType":"bool"},{"name":"move_and_slide","signature":"move_and_slide() -> bool","description":"Moves the body based on [member velocity]. If the body collides with another, it will slide along the other body (by default only on floor) rather than stop immediately. If the other body is a  or , it will also be affected by the motion of the other body. You can use this to make moving and rotating platforms, or to make nodes push other nodes.\n\t\t\t\tModifies [member velocity] if a slide collision occurred. To get the latest collision call [method get_last_slide_collision], for detailed information about collisions that occurred, use [method get_slide_collision].\n\t\t\t\tWhen the body touches a moving platform, the platform's velocity is automatically added to the body motion. If a collision occurs due to the platform's motion, it will always be first in the slide collisions.\n\t\t\t\tThe general behavior and available properties change according to the [member motion_mode].\n\t\t\t\tReturns true if the body collided, otherwise, returns false.","returnType":"bool"}],"signals":[]},"CharacterBody3D":{"name":"CharacterBody3D","description":"A 3D physics body specialized for characters moved by script.","inherits":"PhysicsBody3D","properties":[{"name":"floor_block_on_wall","type":"bool","description":"If [code]true[/code], the body will be able to move on the floor only. This option avoids to be able to walk on walls, it will however allow to slide down along them."},{"name":"floor_constant_speed","type":"bool","description":"If [code]false[/code] (by default), the body will move faster on downward slopes and slower on upward slopes.\n\t\t\tIf [code]true[/code], the body will always move at the same speed on the ground no matter the slope. Note that you need to use [member floor_snap_length] to stick along a downward slope at constant speed."},{"name":"floor_max_angle","type":"float","description":"Maximum angle (in radians) where a slope is still considered a floor (or a ceiling), rather than a wall, when calling [method move_and_slide]. The default value equals 45 degrees."},{"name":"floor_snap_length","type":"float","description":"Sets a snapping distance. When set to a value different from [code]0.0[/code], the body is kept attached to slopes when calling [method move_and_slide]. The snapping vector is determined by the given distance along the opposite direction of the [member up_direction].\n\t\t\tAs long as the snapping vector is in contact with the ground and the body moves against [member up_direction], the body will remain attached to the surface. Snapping is not applied if the body moves along [member up_direction], meaning it contains vertical rising velocity, so it will be able to detach from the ground when jumping or when the body is pushed up by something. If you want to apply a snap without taking into account the velocity, use [method apply_floor_snap]."},{"name":"floor_stop_on_slope","type":"bool","description":"If [code]true[/code], the body will not slide on slopes when calling [method move_and_slide] when the body is standing still.\n\t\t\tIf [code]false[/code], the body will slide on floor's slopes when [member velocity] applies a downward force."},{"name":"max_slides","type":"int","description":"Maximum number of times the body can change direction before it stops when calling [method move_and_slide]."},{"name":"motion_mode","type":"int","description":"Sets the motion mode which defines the behavior of [method move_and_slide]. See [enum MotionMode] constants for available modes."},{"name":"platform_floor_layers","type":"int","description":"Collision layers that will be included for detecting floor bodies that will act as moving platforms to be followed by the [CharacterBody3D]. By default, all floor bodies are detected and propagate their velocity."},{"name":"platform_on_leave","type":"int","description":"Sets the behavior to apply when you leave a moving platform. By default, to be physically accurate, when you leave the last platform velocity is applied. See [enum PlatformOnLeave] constants for available behavior."},{"name":"platform_wall_layers","type":"int","description":"Collision layers that will be included for detecting wall bodies that will act as moving platforms to be followed by the [CharacterBody3D]. By default, all wall bodies are ignored."},{"name":"safe_margin","type":"float","description":"Extra margin used for collision recovery when calling [method move_and_slide].\n\t\t\tIf the body is at least this close to another body, it will consider them to be colliding and will be pushed away before performing the actual motion.\n\t\t\tA higher value means it's more flexible for detecting collision, which helps with consistently detecting walls and floors.\n\t\t\tA lower value forces the collision algorithm to use more exact detection, so it can be used in cases that specifically require precision, e.g at very low scale to avoid visible jittering, or for stability with a stack of character bodies."},{"name":"slide_on_ceiling","type":"bool","description":"If [code]true[/code], during a jump against the ceiling, the body will slide, if [code]false[/code] it will be stopped and will fall vertically."},{"name":"up_direction","type":"Vector3","description":"Vector pointing upwards, used to determine what is a wall and what is a floor (or a ceiling) when calling [method move_and_slide]. Defaults to [constant Vector3.UP]. As the vector will be normalized it can't be equal to [constant Vector3.ZERO], if you want all collisions to be reported as walls, consider using [constant MOTION_MODE_FLOATING] as [member motion_mode]."},{"name":"velocity","type":"Vector3","description":"Current velocity vector (typically meters per second), used and modified during calls to [method move_and_slide]."},{"name":"wall_min_slide_angle","type":"float","description":"Minimum angle (in radians) where the body is allowed to slide when it encounters a slope. The default value equals 15 degrees. When [member motion_mode] is [constant MOTION_MODE_GROUNDED], it only affects movement if [member floor_block_on_wall] is [code]true[/code]."}],"methods":[{"name":"apply_floor_snap","signature":"apply_floor_snap() -> void","description":"Allows to manually apply a snap to the floor regardless of the body's velocity. This function does nothing when [method is_on_floor] returns true.","returnType":"void"},{"name":"get_floor_angle","signature":"get_floor_angle(up_direction: Vector3) -> float","description":"Returns the floor's collision angle at the last collision point according to [param up_direction], which is [constant Vector3.UP] by default. This value is always positive and only valid after calling [method move_and_slide] and when [method is_on_floor] returns true.","returnType":"float"},{"name":"get_floor_normal","signature":"get_floor_normal() -> Vector3","description":"Returns the collision normal of the floor at the last collision point. Only valid after calling [method move_and_slide] and when [method is_on_floor] returns true.\n\t\t\t\tWarning: The collision normal is not always the same as the surface normal.","returnType":"Vector3"},{"name":"get_last_motion","signature":"get_last_motion() -> Vector3","description":"Returns the last motion applied to the  during the last call to [method move_and_slide]. The movement can be split into multiple motions when sliding occurs, and this method return the last one, which is useful to retrieve the current direction of the movement.","returnType":"Vector3"},{"name":"get_last_slide_collision","signature":"get_last_slide_collision() -> KinematicCollision3D","description":"Returns a , which contains information about the latest collision that occurred during the last call to [method move_and_slide].","returnType":"KinematicCollision3D"},{"name":"get_platform_angular_velocity","signature":"get_platform_angular_velocity() -> Vector3","description":"Returns the angular velocity of the platform at the last collision point. Only valid after calling [method move_and_slide].","returnType":"Vector3"},{"name":"get_platform_velocity","signature":"get_platform_velocity() -> Vector3","description":"Returns the linear velocity of the platform at the last collision point. Only valid after calling [method move_and_slide].","returnType":"Vector3"},{"name":"get_position_delta","signature":"get_position_delta() -> Vector3","description":"Returns the travel (position delta) that occurred during the last call to [method move_and_slide].","returnType":"Vector3"},{"name":"get_real_velocity","signature":"get_real_velocity() -> Vector3","description":"Returns the current real velocity since the last call to [method move_and_slide]. For example, when you climb a slope, you will move diagonally even though the velocity is horizontal. This method returns the diagonal movement, as opposed to [member velocity] which returns the requested velocity.","returnType":"Vector3"},{"name":"get_slide_collision","signature":"get_slide_collision(slide_idx: int) -> KinematicCollision3D","description":"Returns a , which contains information about a collision that occurred during the last call to [method move_and_slide]. Since the body can collide several times in a single call to [method move_and_slide], you must specify the index of the collision in the range 0 to ([method get_slide_collision_count] - 1).","returnType":"KinematicCollision3D"},{"name":"get_slide_collision_count","signature":"get_slide_collision_count() -> int","description":"Returns the number of times the body collided and changed direction during the last call to [method move_and_slide].","returnType":"int"},{"name":"get_wall_normal","signature":"get_wall_normal() -> Vector3","description":"Returns the collision normal of the wall at the last collision point. Only valid after calling [method move_and_slide] and when [method is_on_wall] returns true.\n\t\t\t\tWarning: The collision normal is not always the same as the surface normal.","returnType":"Vector3"},{"name":"is_on_ceiling","signature":"is_on_ceiling() -> bool","description":"Returns true if the body collided with the ceiling on the last call of [method move_and_slide]. Otherwise, returns false. The [member up_direction] and [member floor_max_angle] are used to determine whether a surface is \"ceiling\" or not.","returnType":"bool"},{"name":"is_on_ceiling_only","signature":"is_on_ceiling_only() -> bool","description":"Returns true if the body collided only with the ceiling on the last call of [method move_and_slide]. Otherwise, returns false. The [member up_direction] and [member floor_max_angle] are used to determine whether a surface is \"ceiling\" or not.","returnType":"bool"},{"name":"is_on_floor","signature":"is_on_floor() -> bool","description":"Returns true if the body collided with the floor on the last call of [method move_and_slide]. Otherwise, returns false. The [member up_direction] and [member floor_max_angle] are used to determine whether a surface is \"floor\" or not.","returnType":"bool"},{"name":"is_on_floor_only","signature":"is_on_floor_only() -> bool","description":"Returns true if the body collided only with the floor on the last call of [method move_and_slide]. Otherwise, returns false. The [member up_direction] and [member floor_max_angle] are used to determine whether a surface is \"floor\" or not.","returnType":"bool"},{"name":"is_on_wall","signature":"is_on_wall() -> bool","description":"Returns true if the body collided with a wall on the last call of [method move_and_slide]. Otherwise, returns false. The [member up_direction] and [member floor_max_angle] are used to determine whether a surface is \"wall\" or not.","returnType":"bool"},{"name":"is_on_wall_only","signature":"is_on_wall_only() -> bool","description":"Returns true if the body collided only with a wall on the last call of [method move_and_slide]. Otherwise, returns false. The [member up_direction] and [member floor_max_angle] are used to determine whether a surface is \"wall\" or not.","returnType":"bool"},{"name":"move_and_slide","signature":"move_and_slide() -> bool","description":"Moves the body based on [member velocity]. If the body collides with another, it will slide along the other body rather than stop immediately. If the other body is a  or , it will also be affected by the motion of the other body. You can use this to make moving and rotating platforms, or to make nodes push other nodes.\n\t\t\t\tModifies [member velocity] if a slide collision occurred. To get the latest collision call [method get_last_slide_collision], for more detailed information about collisions that occurred, use [method get_slide_collision].\n\t\t\t\tWhen the body touches a moving platform, the platform's velocity is automatically added to the body motion. If a collision occurs due to the platform's motion, it will always be first in the slide collisions.\n\t\t\t\tReturns true if the body collided, otherwise, returns false.","returnType":"bool"}],"signals":[]},"CheckBox":{"name":"CheckBox","description":"A button that represents a binary choice.","inherits":"Button","properties":[],"methods":[],"signals":[]},"CheckButton":{"name":"CheckButton","description":"A button that represents a binary choice.","inherits":"Button","properties":[],"methods":[],"signals":[]},"CircleShape2D":{"name":"CircleShape2D","description":"A 2D circle shape used for physics collision.","inherits":"Shape2D","properties":[{"name":"radius","type":"float","description":"The circle's radius."}],"methods":[],"signals":[]},"ClassDB":{"name":"ClassDB","description":"A class information repository.","inherits":"Object","properties":[],"methods":[{"name":"can_instantiate","signature":"can_instantiate(class: StringName) -> bool","description":"Returns true if objects can be instantiated from the specified [param class], otherwise returns false.","returnType":"bool"},{"name":"class_call_static","signature":"class_call_static(class: StringName, method: StringName) -> Variant","description":"Calls a static method on a class.","returnType":"Variant"},{"name":"class_exists","signature":"class_exists(class: StringName) -> bool","description":"Returns whether the specified [param class] is available or not.","returnType":"bool"},{"name":"class_get_api_type","signature":"class_get_api_type(class: StringName) -> int","description":"Returns the API type of [param class]. See [enum APIType].","returnType":"int"},{"name":"class_get_enum_constants","signature":"class_get_enum_constants(class: StringName, enum: StringName, no_inheritance: bool) -> PackedStringArray","description":"Returns an array with all the keys in [param enum] of [param class] or its ancestry.","returnType":"PackedStringArray"},{"name":"class_get_enum_list","signature":"class_get_enum_list(class: StringName, no_inheritance: bool) -> PackedStringArray","description":"Returns an array with all the enums of [param class] or its ancestry.","returnType":"PackedStringArray"},{"name":"class_get_integer_constant","signature":"class_get_integer_constant(class: StringName, name: StringName) -> int","description":"Returns the value of the integer constant [param name] of [param class] or its ancestry. Always returns 0 when the constant could not be found.","returnType":"int"},{"name":"class_get_integer_constant_enum","signature":"class_get_integer_constant_enum(class: StringName, name: StringName, no_inheritance: bool) -> StringName","description":"Returns which enum the integer constant [param name] of [param class] or its ancestry belongs to.","returnType":"StringName"},{"name":"class_get_integer_constant_list","signature":"class_get_integer_constant_list(class: StringName, no_inheritance: bool) -> PackedStringArray","description":"Returns an array with the names all the integer constants of [param class] or its ancestry.","returnType":"PackedStringArray"},{"name":"class_get_method_argument_count","signature":"class_get_method_argument_count(class: StringName, method: StringName, no_inheritance: bool) -> int","description":"Returns the number of arguments of the method [param method] of [param class] or its ancestry if [param no_inheritance] is false.","returnType":"int"},{"name":"class_get_method_list","signature":"class_get_method_list(class: StringName, no_inheritance: bool) -> Dictionary[]","description":"Returns an array with all the methods of [param class] or its ancestry if [param no_inheritance] is false. Every element of the array is a  with the following keys: args, default_args, flags, id, name, return: (class_name, hint, hint_string, name, type, usage).\n\t\t\t\tNote: In exported release builds the debug info is not available, so the returned dictionaries will contain only method names.","returnType":"Dictionary[]"},{"name":"class_get_property","signature":"class_get_property(object: Object, property: StringName) -> Variant","description":"Returns the value of [param property] of [param object] or its ancestry.","returnType":"Variant"},{"name":"class_get_property_default_value","signature":"class_get_property_default_value(class: StringName, property: StringName) -> Variant","description":"Returns the default value of [param property] of [param class] or its ancestor classes.","returnType":"Variant"},{"name":"class_get_property_getter","signature":"class_get_property_getter(class: StringName, property: StringName) -> StringName","description":"Returns the getter method name of [param property] of [param class].","returnType":"StringName"},{"name":"class_get_property_list","signature":"class_get_property_list(class: StringName, no_inheritance: bool) -> Dictionary[]","description":"Returns an array with all the properties of [param class] or its ancestry if [param no_inheritance] is false.","returnType":"Dictionary[]"},{"name":"class_get_property_setter","signature":"class_get_property_setter(class: StringName, property: StringName) -> StringName","description":"Returns the setter method name of [param property] of [param class].","returnType":"StringName"},{"name":"class_get_signal","signature":"class_get_signal(class: StringName, signal: StringName) -> Dictionary","description":"Returns the [param signal] data of [param class] or its ancestry. The returned value is a  with the following keys: args, default_args, flags, id, name, return: (class_name, hint, hint_string, name, type, usage).","returnType":"Dictionary"},{"name":"class_get_signal_list","signature":"class_get_signal_list(class: StringName, no_inheritance: bool) -> Dictionary[]","description":"Returns an array with all the signals of [param class] or its ancestry if [param no_inheritance] is false. Every element of the array is a  as described in [method class_get_signal].","returnType":"Dictionary[]"},{"name":"class_has_enum","signature":"class_has_enum(class: StringName, name: StringName, no_inheritance: bool) -> bool","description":"Returns whether [param class] or its ancestry has an enum called [param name] or not.","returnType":"bool"},{"name":"class_has_integer_constant","signature":"class_has_integer_constant(class: StringName, name: StringName) -> bool","description":"Returns whether [param class] or its ancestry has an integer constant called [param name] or not.","returnType":"bool"},{"name":"class_has_method","signature":"class_has_method(class: StringName, method: StringName, no_inheritance: bool) -> bool","description":"Returns whether [param class] (or its ancestry if [param no_inheritance] is false) has a method called [param method] or not.","returnType":"bool"},{"name":"class_has_signal","signature":"class_has_signal(class: StringName, signal: StringName) -> bool","description":"Returns whether [param class] or its ancestry has a signal called [param signal] or not.","returnType":"bool"},{"name":"class_set_property","signature":"class_set_property(object: Object, property: StringName, value: Variant) -> int","description":"Sets [param property] value of [param object] to [param value].","returnType":"int"},{"name":"get_class_list","signature":"get_class_list() -> PackedStringArray","description":"Returns the names of all the classes available.","returnType":"PackedStringArray"},{"name":"get_inheriters_from_class","signature":"get_inheriters_from_class(class: StringName) -> PackedStringArray","description":"Returns the names of all the classes that directly or indirectly inherit from [param class].","returnType":"PackedStringArray"},{"name":"get_parent_class","signature":"get_parent_class(class: StringName) -> StringName","description":"Returns the parent class of [param class].","returnType":"StringName"},{"name":"instantiate","signature":"instantiate(class: StringName) -> Variant","description":"Creates an instance of [param class].","returnType":"Variant"},{"name":"is_class_enabled","signature":"is_class_enabled(class: StringName) -> bool","description":"Returns whether this [param class] is enabled or not.","returnType":"bool"},{"name":"is_class_enum_bitfield","signature":"is_class_enum_bitfield(class: StringName, enum: StringName, no_inheritance: bool) -> bool","description":"Returns whether [param class] (or its ancestor classes if [param no_inheritance] is false) has an enum called [param enum] that is a bitfield.","returnType":"bool"},{"name":"is_parent_class","signature":"is_parent_class(class: StringName, inherits: StringName) -> bool","description":"Returns whether [param inherits] is an ancestor of [param class] or not.","returnType":"bool"}],"signals":[]},"CodeEdit":{"name":"CodeEdit","description":"A multiline text editor designed for editing code.","inherits":"TextEdit","properties":[{"name":"auto_brace_completion_enabled","type":"bool","description":"If [code]true[/code], uses [member auto_brace_completion_pairs] to automatically insert the closing brace when the opening brace is inserted by typing or autocompletion. Also automatically removes the closing brace when using backspace on the opening brace."},{"name":"auto_brace_completion_highlight_matching","type":"bool","description":"If [code]true[/code], highlights brace pairs when the caret is on either one, using [member auto_brace_completion_pairs]. If matching, the pairs will be underlined. If a brace is unmatched, it is colored with [theme_item brace_mismatch_color]."},{"name":"auto_brace_completion_pairs","type":"Dictionary","description":"Sets the brace pairs to be autocompleted. For each entry in the dictionary, the key is the opening brace and the value is the closing brace that matches it. A brace is a [String] made of symbols. See [member auto_brace_completion_enabled] and [member auto_brace_completion_highlight_matching]."},{"name":"code_completion_enabled","type":"bool","description":"If [code]true[/code], the [member ProjectSettings.input/ui_text_completion_query] action requests code completion. To handle it, see [method _request_code_completion] or [signal code_completion_requested]."},{"name":"code_completion_prefixes","type":"String[]","description":"Sets prefixes that will trigger code completion."},{"name":"delimiter_comments","type":"String[]","description":"Sets the comment delimiters. All existing comment delimiters will be removed."},{"name":"delimiter_strings","type":"String[]","description":"Sets the string delimiters. All existing string delimiters will be removed."},{"name":"gutters_draw_bookmarks","type":"bool","description":"If [code]true[/code], bookmarks are drawn in the gutter. This gutter is shared with breakpoints and executing lines. See [method set_line_as_bookmarked]."},{"name":"gutters_draw_breakpoints_gutter","type":"bool","description":"If [code]true[/code], breakpoints are drawn in the gutter. This gutter is shared with bookmarks and executing lines. Clicking the gutter will toggle the breakpoint for the line, see [method set_line_as_breakpoint]."},{"name":"gutters_draw_executing_lines","type":"bool","description":"If [code]true[/code], executing lines are marked in the gutter. This gutter is shared with breakpoints and bookmarks. See [method set_line_as_executing]."},{"name":"gutters_draw_fold_gutter","type":"bool","description":"If [code]true[/code], the fold gutter is drawn. In this gutter, the [theme_item can_fold_code_region] icon is drawn for each foldable line (see [method can_fold_line]) and the [theme_item folded_code_region] icon is drawn for each folded line (see [method is_line_folded]). These icons can be clicked to toggle the fold state, see [method toggle_foldable_line]. [member line_folding] must be [code]true[/code] to show icons."},{"name":"gutters_draw_line_numbers","type":"bool","description":"If [code]true[/code], the line number gutter is drawn. Line numbers start at [code]1[/code] and are incremented for each line of text. Clicking and dragging in the line number gutter will select entire lines of text."},{"name":"gutters_zero_pad_line_numbers","type":"bool","description":"If [code]true[/code], line numbers drawn in the gutter are zero padded based on the total line count. Requires [member gutters_draw_line_numbers] to be set to [code]true[/code]."},{"name":"indent_automatic","type":"bool","description":"If [code]true[/code], an extra indent is automatically inserted when a new line is added and a prefix in [member indent_automatic_prefixes] is found. If a brace pair opening key is found, the matching closing brace will be moved to another new line (see [member auto_brace_completion_pairs])."},{"name":"indent_automatic_prefixes","type":"String[]","description":"Prefixes to trigger an automatic indent. Used when [member indent_automatic] is set to [code]true[/code]."},{"name":"indent_size","type":"int","description":"Size of the tabulation indent (one [kbd]Tab[/kbd] press) in characters. If [member indent_use_spaces] is enabled the number of spaces to use."},{"name":"indent_use_spaces","type":"bool","description":"Use spaces instead of tabs for indentation."},{"name":"line_folding","type":"bool","description":"If [code]true[/code], lines can be folded. Otherwise, line folding methods like [method fold_line] will not work and [method can_fold_line] will always return [code]false[/code]. See [member gutters_draw_fold_gutter]."},{"name":"line_length_guidelines","type":"int[]","description":"Draws vertical lines at the provided columns. The first entry is considered a main hard guideline and is draw more prominently."},{"name":"symbol_lookup_on_click","type":"bool","description":"Set when a validated word from [signal symbol_validate] is clicked, the [signal symbol_lookup] should be emitted."},{"name":"symbol_tooltip_on_hover","type":"bool","description":"Set when a word is hovered, the [signal symbol_hovered] should be emitted."}],"methods":[{"name":"_confirm_code_completion","signature":"_confirm_code_completion(replace: bool) -> void","description":"Override this method to define how the selected entry should be inserted. If [param replace] is true, any existing text should be replaced.","returnType":"void"},{"name":"_filter_code_completion_candidates","signature":"_filter_code_completion_candidates(candidates: Dictionary[]) -> Dictionary[]","description":"Override this method to define what items in [param candidates] should be displayed.\n\t\t\t\tBoth [param candidates] and the return is a  of , see [method get_code_completion_option] for  content.","returnType":"Dictionary[]"},{"name":"_request_code_completion","signature":"_request_code_completion(force: bool) -> void","description":"Override this method to define what happens when the user requests code completion. If [param force] is true, any checks should be bypassed.","returnType":"void"},{"name":"add_auto_brace_completion_pair","signature":"add_auto_brace_completion_pair(start_key: String, end_key: String) -> void","description":"Adds a brace pair.\n\t\t\t\tBoth the start and end keys must be symbols. Only the start key has to be unique.","returnType":"void"},{"name":"add_code_completion_option","signature":"add_code_completion_option(type: int, display_text: String, insert_text: String, text_color: Color, icon: Resource, value: Variant, location: int) -> void","description":"Submits an item to the queue of potential candidates for the autocomplete menu. Call [method update_code_completion_options] to update the list.\n\t\t\t\t[param location] indicates location of the option relative to the location of the code completion query. See [enum CodeEdit.CodeCompletionLocation] for how to set this value.\n\t\t\t\tNote: This list will replace all current candidates.","returnType":"void"},{"name":"add_comment_delimiter","signature":"add_comment_delimiter(start_key: String, end_key: String, line_only: bool) -> void","description":"Adds a comment delimiter from [param start_key] to [param end_key]. Both keys should be symbols, and [param start_key] must not be shared with other delimiters.\n\t\t\t\tIf [param line_only] is true or [param end_key] is an empty , the region does not carry over to the next line.","returnType":"void"},{"name":"add_string_delimiter","signature":"add_string_delimiter(start_key: String, end_key: String, line_only: bool) -> void","description":"Defines a string delimiter from [param start_key] to [param end_key]. Both keys should be symbols, and [param start_key] must not be shared with other delimiters.\n\t\t\t\tIf [param line_only] is true or [param end_key] is an empty , the region does not carry over to the next line.","returnType":"void"},{"name":"can_fold_line","signature":"can_fold_line(line: int) -> bool","description":"Returns true if the given line is foldable. A line is foldable if it is the start of a valid code region (see [method get_code_region_start_tag]), if it is the start of a comment or string block, or if the next non-empty line is more indented (see [method TextEdit.get_indent_level]).","returnType":"bool"},{"name":"cancel_code_completion","signature":"cancel_code_completion() -> void","description":"Cancels the autocomplete menu.","returnType":"void"},{"name":"clear_bookmarked_lines","signature":"clear_bookmarked_lines() -> void","description":"Clears all bookmarked lines.","returnType":"void"},{"name":"clear_breakpointed_lines","signature":"clear_breakpointed_lines() -> void","description":"Clears all breakpointed lines.","returnType":"void"},{"name":"clear_comment_delimiters","signature":"clear_comment_delimiters() -> void","description":"Removes all comment delimiters.","returnType":"void"},{"name":"clear_executing_lines","signature":"clear_executing_lines() -> void","description":"Clears all executed lines.","returnType":"void"},{"name":"clear_string_delimiters","signature":"clear_string_delimiters() -> void","description":"Removes all string delimiters.","returnType":"void"},{"name":"confirm_code_completion","signature":"confirm_code_completion(replace: bool) -> void","description":"Inserts the selected entry into the text. If [param replace] is true, any existing text is replaced rather than merged.","returnType":"void"},{"name":"convert_indent","signature":"convert_indent(from_line: int, to_line: int) -> void","description":"Converts the indents of lines between [param from_line] and [param to_line] to tabs or spaces as set by [member indent_use_spaces].\n\t\t\t\tValues of -1 convert the entire text.","returnType":"void"},{"name":"create_code_region","signature":"create_code_region() -> void","description":"Creates a new code region with the selection. At least one single line comment delimiter have to be defined (see [method add_comment_delimiter]).\n\t\t\t\tA code region is a part of code that is highlighted when folded and can help organize your script.\n\t\t\t\tCode region start and end tags can be customized (see [method set_code_region_tags]).\n\t\t\t\tCode regions are delimited using start and end tags (respectively region and endregion by default) preceded by one line comment delimiter. (eg. #region and #endregion)","returnType":"void"},{"name":"delete_lines","signature":"delete_lines() -> void","description":"Deletes all lines that are selected or have a caret on them.","returnType":"void"},{"name":"do_indent","signature":"do_indent() -> void","description":"If there is no selection, indentation is inserted at the caret. Otherwise, the selected lines are indented like [method indent_lines]. Equivalent to the [member ProjectSettings.input/ui_text_indent] action. The indentation characters used depend on [member indent_use_spaces] and [member indent_size].","returnType":"void"},{"name":"duplicate_lines","signature":"duplicate_lines() -> void","description":"Duplicates all lines currently selected with any caret. Duplicates the entire line beneath the current one no matter where the caret is within the line.","returnType":"void"},{"name":"duplicate_selection","signature":"duplicate_selection() -> void","description":"Duplicates all selected text and duplicates all lines with a caret on them.","returnType":"void"},{"name":"fold_all_lines","signature":"fold_all_lines() -> void","description":"Folds all lines that are possible to be folded (see [method can_fold_line]).","returnType":"void"},{"name":"fold_line","signature":"fold_line(line: int) -> void","description":"Folds the given line, if possible (see [method can_fold_line]).","returnType":"void"},{"name":"get_auto_brace_completion_close_key","signature":"get_auto_brace_completion_close_key(open_key: String) -> String","description":"Gets the matching auto brace close key for [param open_key].","returnType":"String"},{"name":"get_bookmarked_lines","signature":"get_bookmarked_lines() -> PackedInt32Array","description":"Gets all bookmarked lines.","returnType":"PackedInt32Array"},{"name":"get_breakpointed_lines","signature":"get_breakpointed_lines() -> PackedInt32Array","description":"Gets all breakpointed lines.","returnType":"PackedInt32Array"},{"name":"get_code_completion_option","signature":"get_code_completion_option(index: int) -> Dictionary","description":"Gets the completion option at [param index]. The return  has the following key-values:\n\t\t\t\tkind: [enum CodeCompletionKind]\n\t\t\t\tdisplay_text: Text that is shown on the autocomplete menu.\n\t\t\t\tinsert_text: Text that is to be inserted when this item is selected.\n\t\t\t\tfont_color: Color of the text on the autocomplete menu.\n\t\t\t\ticon: Icon to draw on the autocomplete menu.\n\t\t\t\tdefault_value: Value of the symbol.","returnType":"Dictionary"},{"name":"get_code_completion_options","signature":"get_code_completion_options() -> Dictionary[]","description":"Gets all completion options, see [method get_code_completion_option] for return content.","returnType":"Dictionary[]"},{"name":"get_code_completion_selected_index","signature":"get_code_completion_selected_index() -> int","description":"Gets the index of the current selected completion option.","returnType":"int"},{"name":"get_code_region_end_tag","signature":"get_code_region_end_tag() -> String","description":"Returns the code region end tag (without comment delimiter).","returnType":"String"},{"name":"get_code_region_start_tag","signature":"get_code_region_start_tag() -> String","description":"Returns the code region start tag (without comment delimiter).","returnType":"String"},{"name":"get_delimiter_end_key","signature":"get_delimiter_end_key(delimiter_index: int) -> String","description":"Gets the end key for a string or comment region index.","returnType":"String"},{"name":"get_delimiter_end_position","signature":"get_delimiter_end_position(line: int, column: int) -> Vector2","description":"If [param line] [param column] is in a string or comment, returns the end position of the region. If not or no end could be found, both  values will be -1.","returnType":"Vector2"},{"name":"get_delimiter_start_key","signature":"get_delimiter_start_key(delimiter_index: int) -> String","description":"Gets the start key for a string or comment region index.","returnType":"String"},{"name":"get_delimiter_start_position","signature":"get_delimiter_start_position(line: int, column: int) -> Vector2","description":"If [param line] [param column] is in a string or comment, returns the start position of the region. If not or no start could be found, both  values will be -1.","returnType":"Vector2"},{"name":"get_executing_lines","signature":"get_executing_lines() -> PackedInt32Array","description":"Gets all executing lines.","returnType":"PackedInt32Array"},{"name":"get_folded_lines","signature":"get_folded_lines() -> int[]","description":"Returns all lines that are currently folded.","returnType":"int[]"},{"name":"get_text_for_code_completion","signature":"get_text_for_code_completion() -> String","description":"Returns the full text with char 0xFFFF at the caret location.","returnType":"String"},{"name":"get_text_for_symbol_lookup","signature":"get_text_for_symbol_lookup() -> String","description":"Returns the full text with char 0xFFFF at the cursor location.","returnType":"String"},{"name":"get_text_with_cursor_char","signature":"get_text_with_cursor_char(line: int, column: int) -> String","description":"Returns the full text with char 0xFFFF at the specified location.","returnType":"String"},{"name":"has_auto_brace_completion_close_key","signature":"has_auto_brace_completion_close_key(close_key: String) -> bool","description":"Returns true if close key [param close_key] exists.","returnType":"bool"},{"name":"has_auto_brace_completion_open_key","signature":"has_auto_brace_completion_open_key(open_key: String) -> bool","description":"Returns true if open key [param open_key] exists.","returnType":"bool"},{"name":"has_comment_delimiter","signature":"has_comment_delimiter(start_key: String) -> bool","description":"Returns true if comment [param start_key] exists.","returnType":"bool"},{"name":"has_string_delimiter","signature":"has_string_delimiter(start_key: String) -> bool","description":"Returns true if string [param start_key] exists.","returnType":"bool"},{"name":"indent_lines","signature":"indent_lines() -> void","description":"Indents all lines that are selected or have a caret on them. Uses spaces or a tab depending on [member indent_use_spaces]. See [method unindent_lines].","returnType":"void"},{"name":"is_in_comment","signature":"is_in_comment(line: int, column: int) -> int","description":"Returns delimiter index if [param line] [param column] is in a comment. If [param column] is not provided, will return delimiter index if the entire [param line] is a comment. Otherwise -1.","returnType":"int"},{"name":"is_in_string","signature":"is_in_string(line: int, column: int) -> int","description":"Returns the delimiter index if [param line] [param column] is in a string. If [param column] is not provided, will return the delimiter index if the entire [param line] is a string. Otherwise -1.","returnType":"int"},{"name":"is_line_bookmarked","signature":"is_line_bookmarked(line: int) -> bool","description":"Returns true if the given line is bookmarked. See [method set_line_as_bookmarked].","returnType":"bool"},{"name":"is_line_breakpointed","signature":"is_line_breakpointed(line: int) -> bool","description":"Returns true if the given line is breakpointed. See [method set_line_as_breakpoint].","returnType":"bool"},{"name":"is_line_code_region_end","signature":"is_line_code_region_end(line: int) -> bool","description":"Returns true if the given line is a code region end. See [method set_code_region_tags].","returnType":"bool"},{"name":"is_line_code_region_start","signature":"is_line_code_region_start(line: int) -> bool","description":"Returns true if the given line is a code region start. See [method set_code_region_tags].","returnType":"bool"},{"name":"is_line_executing","signature":"is_line_executing(line: int) -> bool","description":"Returns true if the given line is marked as executing. See [method set_line_as_executing].","returnType":"bool"},{"name":"is_line_folded","signature":"is_line_folded(line: int) -> bool","description":"Returns true if the given line is folded. See [method fold_line].","returnType":"bool"},{"name":"move_lines_down","signature":"move_lines_down() -> void","description":"Moves all lines down that are selected or have a caret on them.","returnType":"void"},{"name":"move_lines_up","signature":"move_lines_up() -> void","description":"Moves all lines up that are selected or have a caret on them.","returnType":"void"},{"name":"remove_comment_delimiter","signature":"remove_comment_delimiter(start_key: String) -> void","description":"Removes the comment delimiter with [param start_key].","returnType":"void"},{"name":"remove_string_delimiter","signature":"remove_string_delimiter(start_key: String) -> void","description":"Removes the string delimiter with [param start_key].","returnType":"void"},{"name":"request_code_completion","signature":"request_code_completion(force: bool) -> void","description":"Emits [signal code_completion_requested], if [param force] is true will bypass all checks. Otherwise will check that the caret is in a word or in front of a prefix. Will ignore the request if all current options are of type file path, node path, or signal.","returnType":"void"},{"name":"set_code_completion_selected_index","signature":"set_code_completion_selected_index(index: int) -> void","description":"Sets the current selected completion option.","returnType":"void"},{"name":"set_code_hint","signature":"set_code_hint(code_hint: String) -> void","description":"Sets the code hint text. Pass an empty string to clear.","returnType":"void"},{"name":"set_code_hint_draw_below","signature":"set_code_hint_draw_below(draw_below: bool) -> void","description":"If true, the code hint will draw below the main caret. If false, the code hint will draw above the main caret. See [method set_code_hint].","returnType":"void"},{"name":"set_code_region_tags","signature":"set_code_region_tags(start: String, end: String) -> void","description":"Sets the code region start and end tags (without comment delimiter).","returnType":"void"},{"name":"set_line_as_bookmarked","signature":"set_line_as_bookmarked(line: int, bookmarked: bool) -> void","description":"Sets the given line as bookmarked. If true and [member gutters_draw_bookmarks] is true, draws the [theme_item bookmark] icon in the gutter for this line. See [method get_bookmarked_lines] and [method is_line_bookmarked].","returnType":"void"},{"name":"set_line_as_breakpoint","signature":"set_line_as_breakpoint(line: int, breakpointed: bool) -> void","description":"Sets the given line as a breakpoint. If true and [member gutters_draw_breakpoints_gutter] is true, draws the [theme_item breakpoint] icon in the gutter for this line. See [method get_breakpointed_lines] and [method is_line_breakpointed].","returnType":"void"},{"name":"set_line_as_executing","signature":"set_line_as_executing(line: int, executing: bool) -> void","description":"Sets the given line as executing. If true and [member gutters_draw_executing_lines] is true, draws the [theme_item executing_line] icon in the gutter for this line. See [method get_executing_lines] and [method is_line_executing].","returnType":"void"},{"name":"set_symbol_lookup_word_as_valid","signature":"set_symbol_lookup_word_as_valid(valid: bool) -> void","description":"Sets the symbol emitted by [signal symbol_validate] as a valid lookup.","returnType":"void"},{"name":"toggle_foldable_line","signature":"toggle_foldable_line(line: int) -> void","description":"Toggle the folding of the code block at the given line.","returnType":"void"},{"name":"toggle_foldable_lines_at_carets","signature":"toggle_foldable_lines_at_carets() -> void","description":"Toggle the folding of the code block on all lines with a caret on them.","returnType":"void"},{"name":"unfold_all_lines","signature":"unfold_all_lines() -> void","description":"Unfolds all lines that are folded.","returnType":"void"},{"name":"unfold_line","signature":"unfold_line(line: int) -> void","description":"Unfolds the given line if it is folded or if it is hidden under a folded line.","returnType":"void"},{"name":"unindent_lines","signature":"unindent_lines() -> void","description":"Unindents all lines that are selected or have a caret on them. Uses spaces or a tab depending on [member indent_use_spaces]. Equivalent to the [member ProjectSettings.input/ui_text_dedent] action. See [method indent_lines].","returnType":"void"},{"name":"update_code_completion_options","signature":"update_code_completion_options(force: bool) -> void","description":"Submits all completion options added with [method add_code_completion_option]. Will try to force the autocomplete menu to popup, if [param force] is true.\n\t\t\t\tNote: This will replace all current candidates.","returnType":"void"}],"signals":[{"name":"breakpoint_toggled","description":"Emitted when a breakpoint is added or removed from a line. If the line is moved via backspace a removed is emitted at the old line."},{"name":"code_completion_requested","description":"Emitted when the user requests code completion. This signal will not be sent if [method _request_code_completion] is overridden or [member code_completion_enabled] is [code]false[/code]."},{"name":"symbol_hovered","description":"Emitted when the user hovers over a symbol. Unlike [signal Control.mouse_entered], this signal is not emitted immediately, but when the cursor is over the symbol for [member ProjectSettings.gui/timers/tooltip_delay_sec] seconds.\n\t\t\t\t[b]Note:[/b] [member symbol_tooltip_on_hover] must be [code]true[/code] for this signal to be emitted."},{"name":"symbol_lookup","description":"Emitted when the user has clicked on a valid symbol."},{"name":"symbol_validate","description":"Emitted when the user hovers over a symbol. The symbol should be validated and responded to, by calling [method set_symbol_lookup_word_as_valid].\n\t\t\t\t[b]Note:[/b] [member symbol_lookup_on_click] must be [code]true[/code] for this signal to be emitted."}]},"CodeHighlighter":{"name":"CodeHighlighter","description":"A syntax highlighter intended for code.","inherits":"SyntaxHighlighter","properties":[{"name":"color_regions","type":"Dictionary","description":"Sets the color regions. All existing regions will be removed. The [Dictionary] key is the region start and end key, separated by a space. The value is the region color."},{"name":"function_color","type":"Color","description":"Sets color for functions. A function is a non-keyword string followed by a '('."},{"name":"keyword_colors","type":"Dictionary","description":"Sets the keyword colors. All existing keywords will be removed. The [Dictionary] key is the keyword. The value is the keyword color."},{"name":"member_keyword_colors","type":"Dictionary","description":"Sets the member keyword colors. All existing member keyword will be removed. The [Dictionary] key is the member keyword. The value is the member keyword color."},{"name":"member_variable_color","type":"Color","description":"Sets color for member variables. A member variable is non-keyword, non-function string proceeded with a '.'."},{"name":"number_color","type":"Color","description":"Sets the color for numbers."},{"name":"symbol_color","type":"Color","description":"Sets the color for symbols."}],"methods":[{"name":"add_color_region","signature":"add_color_region(start_key: String, end_key: String, color: Color, line_only: bool) -> void","description":"Adds a color region (such as for comments or strings) from [param start_key] to [param end_key]. Both keys should be symbols, and [param start_key] must not be shared with other delimiters.\n\t\t\t\tIf [param line_only] is true or [param end_key] is an empty , the region does not carry over to the next line.","returnType":"void"},{"name":"add_keyword_color","signature":"add_keyword_color(keyword: String, color: Color) -> void","description":"Sets the color for a keyword.\n\t\t\t\tThe keyword cannot contain any symbols except '_'.","returnType":"void"},{"name":"add_member_keyword_color","signature":"add_member_keyword_color(member_keyword: String, color: Color) -> void","description":"Sets the color for a member keyword.\n\t\t\t\tThe member keyword cannot contain any symbols except '_'.\n\t\t\t\tIt will not be highlighted if preceded by a '.'.","returnType":"void"},{"name":"clear_color_regions","signature":"clear_color_regions() -> void","description":"Removes all color regions.","returnType":"void"},{"name":"clear_keyword_colors","signature":"clear_keyword_colors() -> void","description":"Removes all keywords.","returnType":"void"},{"name":"clear_member_keyword_colors","signature":"clear_member_keyword_colors() -> void","description":"Removes all member keywords.","returnType":"void"},{"name":"get_keyword_color","signature":"get_keyword_color(keyword: String) -> Color","description":"Returns the color for a keyword.","returnType":"Color"},{"name":"get_member_keyword_color","signature":"get_member_keyword_color(member_keyword: String) -> Color","description":"Returns the color for a member keyword.","returnType":"Color"},{"name":"has_color_region","signature":"has_color_region(start_key: String) -> bool","description":"Returns true if the start key exists, else false.","returnType":"bool"},{"name":"has_keyword_color","signature":"has_keyword_color(keyword: String) -> bool","description":"Returns true if the keyword exists, else false.","returnType":"bool"},{"name":"has_member_keyword_color","signature":"has_member_keyword_color(member_keyword: String) -> bool","description":"Returns true if the member keyword exists, else false.","returnType":"bool"},{"name":"remove_color_region","signature":"remove_color_region(start_key: String) -> void","description":"Removes the color region that uses that start key.","returnType":"void"},{"name":"remove_keyword_color","signature":"remove_keyword_color(keyword: String) -> void","description":"Removes the keyword.","returnType":"void"},{"name":"remove_member_keyword_color","signature":"remove_member_keyword_color(member_keyword: String) -> void","description":"Removes the member keyword.","returnType":"void"}],"signals":[]},"CollisionObject2D":{"name":"CollisionObject2D","description":"Abstract base class for 2D physics objects.","inherits":"Node2D","properties":[{"name":"collision_layer","type":"int","description":"The physics layers this CollisionObject2D is in. Collision objects can exist in one or more of 32 different layers. See also [member collision_mask].\n\t\t\t[b]Note:[/b] Object A can detect a contact with object B only if object B is in any of the layers that object A scans. See [url=$DOCS_URL/tutorials/physics/physics_introduction.html#collision-layers-and-masks]Collision layers and masks[/url] in the documentation for more information."},{"name":"collision_mask","type":"int","description":"The physics layers this CollisionObject2D scans. Collision objects can scan one or more of 32 different layers. See also [member collision_layer].\n\t\t\t[b]Note:[/b] Object A can detect a contact with object B only if object B is in any of the layers that object A scans. See [url=$DOCS_URL/tutorials/physics/physics_introduction.html#collision-layers-and-masks]Collision layers and masks[/url] in the documentation for more information."},{"name":"collision_priority","type":"float","description":"The priority used to solve colliding when occurring penetration. The higher the priority is, the lower the penetration into the object will be. This can for example be used to prevent the player from breaking through the boundaries of a level."},{"name":"disable_mode","type":"int","description":"Defines the behavior in physics when [member Node.process_mode] is set to [constant Node.PROCESS_MODE_DISABLED]. See [enum DisableMode] for more details about the different modes."},{"name":"input_pickable","type":"bool","description":"If [code]true[/code], this object is pickable. A pickable object can detect the mouse pointer entering/leaving, and if the mouse is inside it, report input events. Requires at least one [member collision_layer] bit to be set."}],"methods":[{"name":"_input_event","signature":"_input_event(viewport: Viewport, event: InputEvent, shape_idx: int) -> void","description":"Accepts unhandled s. [param shape_idx] is the child index of the clicked . Connect to [signal input_event] to easily pick up these events.\n\t\t\t\tNote: [method _input_event] requires [member input_pickable] to be true and at least one [member collision_layer] bit to be set.","returnType":"void"},{"name":"_mouse_enter","signature":"_mouse_enter() -> void","description":"Called when the mouse pointer enters any of this object's shapes. Requires [member input_pickable] to be true and at least one [member collision_layer] bit to be set. Note that moving between different shapes within a single  won't cause this function to be called.","returnType":"void"},{"name":"_mouse_exit","signature":"_mouse_exit() -> void","description":"Called when the mouse pointer exits all this object's shapes. Requires [member input_pickable] to be true and at least one [member collision_layer] bit to be set. Note that moving between different shapes within a single  won't cause this function to be called.","returnType":"void"},{"name":"_mouse_shape_enter","signature":"_mouse_shape_enter(shape_idx: int) -> void","description":"Called when the mouse pointer enters any of this object's shapes or moves from one shape to another. [param shape_idx] is the child index of the newly entered . Requires [member input_pickable] to be true and at least one [member collision_layer] bit to be called.","returnType":"void"},{"name":"_mouse_shape_exit","signature":"_mouse_shape_exit(shape_idx: int) -> void","description":"Called when the mouse pointer exits any of this object's shapes. [param shape_idx] is the child index of the exited . Requires [member input_pickable] to be true and at least one [member collision_layer] bit to be called.","returnType":"void"},{"name":"create_shape_owner","signature":"create_shape_owner(owner: Object) -> int","description":"Creates a new shape owner for the given object. Returns owner_id of the new owner for future reference.","returnType":"int"},{"name":"get_collision_layer_value","signature":"get_collision_layer_value(layer_number: int) -> bool","description":"Returns whether or not the specified layer of the [member collision_layer] is enabled, given a [param layer_number] between 1 and 32.","returnType":"bool"},{"name":"get_collision_mask_value","signature":"get_collision_mask_value(layer_number: int) -> bool","description":"Returns whether or not the specified layer of the [member collision_mask] is enabled, given a [param layer_number] between 1 and 32.","returnType":"bool"},{"name":"get_rid","signature":"get_rid() -> RID","description":"Returns the object's .","returnType":"RID"},{"name":"get_shape_owner_one_way_collision_margin","signature":"get_shape_owner_one_way_collision_margin(owner_id: int) -> float","description":"Returns the one_way_collision_margin of the shape owner identified by given [param owner_id].","returnType":"float"},{"name":"get_shape_owners","signature":"get_shape_owners() -> PackedInt32Array","description":"Returns an  of owner_id identifiers. You can use these ids in other methods that take owner_id as an argument.","returnType":"PackedInt32Array"},{"name":"is_shape_owner_disabled","signature":"is_shape_owner_disabled(owner_id: int) -> bool","description":"If true, the shape owner and its shapes are disabled.","returnType":"bool"},{"name":"is_shape_owner_one_way_collision_enabled","signature":"is_shape_owner_one_way_collision_enabled(owner_id: int) -> bool","description":"Returns true if collisions for the shape owner originating from this  will not be reported to collided with s.","returnType":"bool"},{"name":"remove_shape_owner","signature":"remove_shape_owner(owner_id: int) -> void","description":"Removes the given shape owner.","returnType":"void"},{"name":"set_collision_layer_value","signature":"set_collision_layer_value(layer_number: int, value: bool) -> void","description":"Based on [param value], enables or disables the specified layer in the [member collision_layer], given a [param layer_number] between 1 and 32.","returnType":"void"},{"name":"set_collision_mask_value","signature":"set_collision_mask_value(layer_number: int, value: bool) -> void","description":"Based on [param value], enables or disables the specified layer in the [member collision_mask], given a [param layer_number] between 1 and 32.","returnType":"void"},{"name":"shape_find_owner","signature":"shape_find_owner(shape_index: int) -> int","description":"Returns the owner_id of the given shape.","returnType":"int"},{"name":"shape_owner_add_shape","signature":"shape_owner_add_shape(owner_id: int, shape: Shape2D) -> void","description":"Adds a  to the shape owner.","returnType":"void"},{"name":"shape_owner_clear_shapes","signature":"shape_owner_clear_shapes(owner_id: int) -> void","description":"Removes all shapes from the shape owner.","returnType":"void"},{"name":"shape_owner_get_owner","signature":"shape_owner_get_owner(owner_id: int) -> Object","description":"Returns the parent object of the given shape owner.","returnType":"Object"},{"name":"shape_owner_get_shape","signature":"shape_owner_get_shape(owner_id: int, shape_id: int) -> Shape2D","description":"Returns the  with the given ID from the given shape owner.","returnType":"Shape2D"},{"name":"shape_owner_get_shape_count","signature":"shape_owner_get_shape_count(owner_id: int) -> int","description":"Returns the number of shapes the given shape owner contains.","returnType":"int"},{"name":"shape_owner_get_shape_index","signature":"shape_owner_get_shape_index(owner_id: int, shape_id: int) -> int","description":"Returns the child index of the  with the given ID from the given shape owner.","returnType":"int"},{"name":"shape_owner_get_transform","signature":"shape_owner_get_transform(owner_id: int) -> Transform2D","description":"Returns the shape owner's .","returnType":"Transform2D"},{"name":"shape_owner_remove_shape","signature":"shape_owner_remove_shape(owner_id: int, shape_id: int) -> void","description":"Removes a shape from the given shape owner.","returnType":"void"},{"name":"shape_owner_set_disabled","signature":"shape_owner_set_disabled(owner_id: int, disabled: bool) -> void","description":"If true, disables the given shape owner.","returnType":"void"},{"name":"shape_owner_set_one_way_collision","signature":"shape_owner_set_one_way_collision(owner_id: int, enable: bool) -> void","description":"If [param enable] is true, collisions for the shape owner originating from this  will not be reported to collided with s.","returnType":"void"},{"name":"shape_owner_set_one_way_collision_margin","signature":"shape_owner_set_one_way_collision_margin(owner_id: int, margin: float) -> void","description":"Sets the one_way_collision_margin of the shape owner identified by given [param owner_id] to [param margin] pixels.","returnType":"void"},{"name":"shape_owner_set_transform","signature":"shape_owner_set_transform(owner_id: int, transform: Transform2D) -> void","description":"Sets the  of the given shape owner.","returnType":"void"}],"signals":[{"name":"input_event","description":"Emitted when an input event occurs. Requires [member input_pickable] to be [code]true[/code] and at least one [member collision_layer] bit to be set. See [method _input_event] for details."},{"name":"mouse_entered","description":"Emitted when the mouse pointer enters any of this object's shapes. Requires [member input_pickable] to be [code]true[/code] and at least one [member collision_layer] bit to be set. Note that moving between different shapes within a single [CollisionObject2D] won't cause this signal to be emitted.\n\t\t\t\t[b]Note:[/b] Due to the lack of continuous collision detection, this signal may not be emitted in the expected order if the mouse moves fast enough and the [CollisionObject2D]'s area is small. This signal may also not be emitted if another [CollisionObject2D] is overlapping the [CollisionObject2D] in question."},{"name":"mouse_exited","description":"Emitted when the mouse pointer exits all this object's shapes. Requires [member input_pickable] to be [code]true[/code] and at least one [member collision_layer] bit to be set. Note that moving between different shapes within a single [CollisionObject2D] won't cause this signal to be emitted.\n\t\t\t\t[b]Note:[/b] Due to the lack of continuous collision detection, this signal may not be emitted in the expected order if the mouse moves fast enough and the [CollisionObject2D]'s area is small. This signal may also not be emitted if another [CollisionObject2D] is overlapping the [CollisionObject2D] in question."},{"name":"mouse_shape_entered","description":"Emitted when the mouse pointer enters any of this object's shapes or moves from one shape to another. [param shape_idx] is the child index of the newly entered [Shape2D]. Requires [member input_pickable] to be [code]true[/code] and at least one [member collision_layer] bit to be set."},{"name":"mouse_shape_exited","description":"Emitted when the mouse pointer exits any of this object's shapes. [param shape_idx] is the child index of the exited [Shape2D]. Requires [member input_pickable] to be [code]true[/code] and at least one [member collision_layer] bit to be set."}]},"CollisionObject3D":{"name":"CollisionObject3D","description":"Abstract base class for 3D physics objects.","inherits":"Node3D","properties":[{"name":"collision_layer","type":"int","description":"The physics layers this CollisionObject3D [b]is in[/b]. Collision objects can exist in one or more of 32 different layers. See also [member collision_mask].\n\t\t\t[b]Note:[/b] Object A can detect a contact with object B only if object B is in any of the layers that object A scans. See [url=$DOCS_URL/tutorials/physics/physics_introduction.html#collision-layers-and-masks]Collision layers and masks[/url] in the documentation for more information."},{"name":"collision_mask","type":"int","description":"The physics layers this CollisionObject3D [b]scans[/b]. Collision objects can scan one or more of 32 different layers. See also [member collision_layer].\n\t\t\t[b]Note:[/b] Object A can detect a contact with object B only if object B is in any of the layers that object A scans. See [url=$DOCS_URL/tutorials/physics/physics_introduction.html#collision-layers-and-masks]Collision layers and masks[/url] in the documentation for more information."},{"name":"collision_priority","type":"float","description":"The priority used to solve colliding when occurring penetration. The higher the priority is, the lower the penetration into the object will be. This can for example be used to prevent the player from breaking through the boundaries of a level."},{"name":"disable_mode","type":"int","description":"Defines the behavior in physics when [member Node.process_mode] is set to [constant Node.PROCESS_MODE_DISABLED]. See [enum DisableMode] for more details about the different modes."},{"name":"input_capture_on_drag","type":"bool","description":"If [code]true[/code], the [CollisionObject3D] will continue to receive input events as the mouse is dragged across its shapes."},{"name":"input_ray_pickable","type":"bool","description":"If [code]true[/code], this object is pickable. A pickable object can detect the mouse pointer entering/leaving, and if the mouse is inside it, report input events. Requires at least one [member collision_layer] bit to be set."}],"methods":[{"name":"_input_event","signature":"_input_event(camera: Camera3D, event: InputEvent, event_position: Vector3, normal: Vector3, shape_idx: int) -> void","description":"Receives unhandled s. [param event_position] is the location in world space of the mouse pointer on the surface of the shape with index [param shape_idx] and [param normal] is the normal vector of the surface at that point. Connect to the [signal input_event] signal to easily pick up these events.\n\t\t\t\tNote: [method _input_event] requires [member input_ray_pickable] to be true and at least one [member collision_layer] bit to be set.","returnType":"void"},{"name":"_mouse_enter","signature":"_mouse_enter() -> void","description":"Called when the mouse pointer enters any of this object's shapes. Requires [member input_ray_pickable] to be true and at least one [member collision_layer] bit to be set. Note that moving between different shapes within a single  won't cause this function to be called.","returnType":"void"},{"name":"_mouse_exit","signature":"_mouse_exit() -> void","description":"Called when the mouse pointer exits all this object's shapes. Requires [member input_ray_pickable] to be true and at least one [member collision_layer] bit to be set. Note that moving between different shapes within a single  won't cause this function to be called.","returnType":"void"},{"name":"create_shape_owner","signature":"create_shape_owner(owner: Object) -> int","description":"Creates a new shape owner for the given object. Returns owner_id of the new owner for future reference.","returnType":"int"},{"name":"get_collision_layer_value","signature":"get_collision_layer_value(layer_number: int) -> bool","description":"Returns whether or not the specified layer of the [member collision_layer] is enabled, given a [param layer_number] between 1 and 32.","returnType":"bool"},{"name":"get_collision_mask_value","signature":"get_collision_mask_value(layer_number: int) -> bool","description":"Returns whether or not the specified layer of the [member collision_mask] is enabled, given a [param layer_number] between 1 and 32.","returnType":"bool"},{"name":"get_rid","signature":"get_rid() -> RID","description":"Returns the object's .","returnType":"RID"},{"name":"get_shape_owners","signature":"get_shape_owners() -> PackedInt32Array","description":"Returns an  of owner_id identifiers. You can use these ids in other methods that take owner_id as an argument.","returnType":"PackedInt32Array"},{"name":"is_shape_owner_disabled","signature":"is_shape_owner_disabled(owner_id: int) -> bool","description":"If true, the shape owner and its shapes are disabled.","returnType":"bool"},{"name":"remove_shape_owner","signature":"remove_shape_owner(owner_id: int) -> void","description":"Removes the given shape owner.","returnType":"void"},{"name":"set_collision_layer_value","signature":"set_collision_layer_value(layer_number: int, value: bool) -> void","description":"Based on [param value], enables or disables the specified layer in the [member collision_layer], given a [param layer_number] between 1 and 32.","returnType":"void"},{"name":"set_collision_mask_value","signature":"set_collision_mask_value(layer_number: int, value: bool) -> void","description":"Based on [param value], enables or disables the specified layer in the [member collision_mask], given a [param layer_number] between 1 and 32.","returnType":"void"},{"name":"shape_find_owner","signature":"shape_find_owner(shape_index: int) -> int","description":"Returns the owner_id of the given shape.","returnType":"int"},{"name":"shape_owner_add_shape","signature":"shape_owner_add_shape(owner_id: int, shape: Shape3D) -> void","description":"Adds a  to the shape owner.","returnType":"void"},{"name":"shape_owner_clear_shapes","signature":"shape_owner_clear_shapes(owner_id: int) -> void","description":"Removes all shapes from the shape owner.","returnType":"void"},{"name":"shape_owner_get_owner","signature":"shape_owner_get_owner(owner_id: int) -> Object","description":"Returns the parent object of the given shape owner.","returnType":"Object"},{"name":"shape_owner_get_shape","signature":"shape_owner_get_shape(owner_id: int, shape_id: int) -> Shape3D","description":"Returns the  with the given ID from the given shape owner.","returnType":"Shape3D"},{"name":"shape_owner_get_shape_count","signature":"shape_owner_get_shape_count(owner_id: int) -> int","description":"Returns the number of shapes the given shape owner contains.","returnType":"int"},{"name":"shape_owner_get_shape_index","signature":"shape_owner_get_shape_index(owner_id: int, shape_id: int) -> int","description":"Returns the child index of the  with the given ID from the given shape owner.","returnType":"int"},{"name":"shape_owner_get_transform","signature":"shape_owner_get_transform(owner_id: int) -> Transform3D","description":"Returns the shape owner's .","returnType":"Transform3D"},{"name":"shape_owner_remove_shape","signature":"shape_owner_remove_shape(owner_id: int, shape_id: int) -> void","description":"Removes a shape from the given shape owner.","returnType":"void"},{"name":"shape_owner_set_disabled","signature":"shape_owner_set_disabled(owner_id: int, disabled: bool) -> void","description":"If true, disables the given shape owner.","returnType":"void"},{"name":"shape_owner_set_transform","signature":"shape_owner_set_transform(owner_id: int, transform: Transform3D) -> void","description":"Sets the  of the given shape owner.","returnType":"void"}],"signals":[{"name":"input_event","description":"Emitted when the object receives an unhandled [InputEvent]. [param event_position] is the location in world space of the mouse pointer on the surface of the shape with index [param shape_idx] and [param normal] is the normal vector of the surface at that point."},{"name":"mouse_entered","description":"Emitted when the mouse pointer enters any of this object's shapes. Requires [member input_ray_pickable] to be [code]true[/code] and at least one [member collision_layer] bit to be set.\n\t\t\t\t[b]Note:[/b] Due to the lack of continuous collision detection, this signal may not be emitted in the expected order if the mouse moves fast enough and the [CollisionObject3D]'s area is small. This signal may also not be emitted if another [CollisionObject3D] is overlapping the [CollisionObject3D] in question."},{"name":"mouse_exited","description":"Emitted when the mouse pointer exits all this object's shapes. Requires [member input_ray_pickable] to be [code]true[/code] and at least one [member collision_layer] bit to be set.\n\t\t\t\t[b]Note:[/b] Due to the lack of continuous collision detection, this signal may not be emitted in the expected order if the mouse moves fast enough and the [CollisionObject3D]'s area is small. This signal may also not be emitted if another [CollisionObject3D] is overlapping the [CollisionObject3D] in question."}]},"CollisionPolygon2D":{"name":"CollisionPolygon2D","description":"A node that provides a polygon shape to a  parent.","inherits":"Node2D","properties":[{"name":"build_mode","type":"int","description":"Collision build mode. Use one of the [enum BuildMode] constants."},{"name":"disabled","type":"bool","description":"If [code]true[/code], no collisions will be detected."},{"name":"one_way_collision","type":"bool","description":"If [code]true[/code], only edges that face up, relative to [CollisionPolygon2D]'s rotation, will collide with other objects.\n\t\t\t[b]Note:[/b] This property has no effect if this [CollisionPolygon2D] is a child of an [Area2D] node."},{"name":"one_way_collision_margin","type":"float","description":"The margin used for one-way collision (in pixels). Higher values will make the shape thicker, and work better for colliders that enter the polygon at a high velocity."},{"name":"polygon","type":"PackedVector2Array","description":"The polygon's list of vertices. Each point will be connected to the next, and the final point will be connected to the first.\n\t\t\t[b]Note:[/b] The returned vertices are in the local coordinate space of the given [CollisionPolygon2D]."}],"methods":[],"signals":[]},"CollisionPolygon3D":{"name":"CollisionPolygon3D","description":"A node that provides a thickened polygon shape (a prism) to a  parent.","inherits":"Node3D","properties":[{"name":"debug_color","type":"Color","description":"The collision shape color that is displayed in the editor, or in the running project if [b]Debug &gt; Visible Collision Shapes[/b] is checked at the top of the editor.\n\t\t\t[b]Note:[/b] The default value is [member ProjectSettings.debug/shapes/collision/shape_color]. The [code]Color(0, 0, 0, 0)[/code] value documented here is a placeholder, and not the actual default debug color."},{"name":"debug_fill","type":"bool","description":"If [code]true[/code], when the shape is displayed, it will show a solid fill color in addition to its wireframe."},{"name":"depth","type":"float","description":"Length that the resulting collision extends in either direction perpendicular to its 2D polygon."},{"name":"disabled","type":"bool","description":"If [code]true[/code], no collision will be produced."},{"name":"margin","type":"float","description":"The collision margin for the generated [Shape3D]. See [member Shape3D.margin] for more details."},{"name":"polygon","type":"PackedVector2Array","description":"Array of vertices which define the 2D polygon in the local XY plane."}],"methods":[],"signals":[]},"CollisionShape2D":{"name":"CollisionShape2D","description":"A node that provides a  to a  parent.","inherits":"Node2D","properties":[{"name":"debug_color","type":"Color","description":"The collision shape color that is displayed in the editor, or in the running project if [b]Debug &gt; Visible Collision Shapes[/b] is checked at the top of the editor.\n\t\t\t[b]Note:[/b] The default value is [member ProjectSettings.debug/shapes/collision/shape_color]. The [code]Color(0, 0, 0, 0)[/code] value documented here is a placeholder, and not the actual default debug color."},{"name":"disabled","type":"bool","description":"A disabled collision shape has no effect in the world. This property should be changed with [method Object.set_deferred]."},{"name":"one_way_collision","type":"bool","description":"Sets whether this collision shape should only detect collision on one side (top or bottom).\n\t\t\t[b]Note:[/b] This property has no effect if this [CollisionShape2D] is a child of an [Area2D] node."},{"name":"one_way_collision_margin","type":"float","description":"The margin used for one-way collision (in pixels). Higher values will make the shape thicker, and work better for colliders that enter the shape at a high velocity."},{"name":"shape","type":"Shape2D","description":"The actual shape owned by this collision shape."}],"methods":[],"signals":[]},"CollisionShape3D":{"name":"CollisionShape3D","description":"A node that provides a  to a  parent.","inherits":"Node3D","properties":[{"name":"debug_color","type":"Color","description":"The collision shape color that is displayed in the editor, or in the running project if [b]Debug &gt; Visible Collision Shapes[/b] is checked at the top of the editor.\n\t\t\t[b]Note:[/b] The default value is [member ProjectSettings.debug/shapes/collision/shape_color]. The [code]Color(0, 0, 0, 0)[/code] value documented here is a placeholder, and not the actual default debug color."},{"name":"debug_fill","type":"bool","description":"If [code]true[/code], when the shape is displayed, it will show a solid fill color in addition to its wireframe."},{"name":"disabled","type":"bool","description":"A disabled collision shape has no effect in the world."},{"name":"shape","type":"Shape3D","description":"The actual shape owned by this collision shape."}],"methods":[{"name":"make_convex_from_siblings","signature":"make_convex_from_siblings() -> void","description":"Sets the collision shape's shape to the addition of all its convexed  siblings geometry.","returnType":"void"},{"name":"resource_changed","signature":"resource_changed(resource: Resource) -> void","description":"This method does nothing.","returnType":"void"}],"signals":[]},"Color":{"name":"Color","description":"A color represented in RGBA format.","inherits":"","properties":[{"name":"a","type":"float","description":"The color's alpha component, typically on the range of 0 to 1. A value of 0 means that the color is fully transparent. A value of 1 means that the color is fully opaque."},{"name":"a8","type":"int","description":"Wrapper for [member a] that uses the range 0 to 255, instead of 0 to 1."},{"name":"b","type":"float","description":"The color's blue component, typically on the range of 0 to 1."},{"name":"b8","type":"int","description":"Wrapper for [member b] that uses the range 0 to 255, instead of 0 to 1."},{"name":"g","type":"float","description":"The color's green component, typically on the range of 0 to 1."},{"name":"g8","type":"int","description":"Wrapper for [member g] that uses the range 0 to 255, instead of 0 to 1."},{"name":"h","type":"float","description":"The HSV hue of this color, on the range 0 to 1."},{"name":"ok_hsl_h","type":"float","description":"The OKHSL hue of this color, on the range 0 to 1."},{"name":"ok_hsl_l","type":"float","description":"The OKHSL lightness of this color, on the range 0 to 1."},{"name":"ok_hsl_s","type":"float","description":"The OKHSL saturation of this color, on the range 0 to 1."},{"name":"r","type":"float","description":"The color's red component, typically on the range of 0 to 1."},{"name":"r8","type":"int","description":"Wrapper for [member r] that uses the range 0 to 255, instead of 0 to 1."},{"name":"s","type":"float","description":"The HSV saturation of this color, on the range 0 to 1."},{"name":"v","type":"float","description":"The HSV value (brightness) of this color, on the range 0 to 1."}],"methods":[{"name":"blend","signature":"blend(over: Color) -> Color","description":"Returns a new color resulting from overlaying this color over the given color. In a painting program, you can imagine it as the [param over] color painted over this color (including alpha).\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tvar bg = Color(0.0, 1.0, 0.0, 0.5) # Green with alpha of 50%\n\t\t\t\tvar fg = Color(1.0, 0.0, 0.0, 0.5) # Red with alpha of 50%\n\t\t\t\tvar blended_color = bg.blend(fg) # Brown with alpha of 75%\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tvar bg = new Color(0.0f, 1.0f, 0.0f, 0.5f); // Green with alpha of 50%\n\t\t\t\tvar fg = new Color(1.0f, 0.0f, 0.0f, 0.5f); // Red with alpha of 50%\n\t\t\t\tColor blendedColor = bg.Blend(fg); // Brown with alpha of 75%\n\t\t\t\t\n\t\t\t\t","returnType":"Color"},{"name":"clamp","signature":"clamp(min: Color, max: Color) -> Color","description":"Returns a new color with all components clamped between the components of [param min] and [param max], by running [method @GlobalScope.clamp] on each component.","returnType":"Color"},{"name":"darkened","signature":"darkened(amount: float) -> Color","description":"Returns a new color resulting from making this color darker by the specified [param amount] (ratio from 0.0 to 1.0). See also [method lightened].\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tvar green = Color(0.0, 1.0, 0.0)\n\t\t\t\tvar darkgreen = green.darkened(0.2) # 20% darker than regular green\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tvar green = new Color(0.0f, 1.0f, 0.0f);\n\t\t\t\tColor darkgreen = green.Darkened(0.2f); // 20% darker than regular green\n\t\t\t\t\n\t\t\t\t","returnType":"Color"},{"name":"from_hsv","signature":"from_hsv(h: float, s: float, v: float, alpha: float) -> Color","description":"Constructs a color from an [url=https://en.wikipedia.org/wiki/HSL_and_HSV]HSV profile. The hue ([param h]), saturation ([param s]), and value ([param v]) are typically between 0.0 and 1.0.\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tvar color = Color.from_hsv(0.58, 0.5, 0.79, 0.8)\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tvar color = Color.FromHsv(0.58f, 0.5f, 0.79f, 0.8f);\n\t\t\t\t\n\t\t\t\t","returnType":"Color"},{"name":"from_ok_hsl","signature":"from_ok_hsl(h: float, s: float, l: float, alpha: float) -> Color","description":"Constructs a color from an [url=https://bottosson.github.io/posts/colorpicker/]OK HSL profile. The hue ([param h]), saturation ([param s]), and lightness ([param l]) are typically between 0.0 and 1.0.\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tvar color = Color.from_ok_hsl(0.58, 0.5, 0.79, 0.8)\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tvar color = Color.FromOkHsl(0.58f, 0.5f, 0.79f, 0.8f);\n\t\t\t\t\n\t\t\t\t","returnType":"Color"},{"name":"from_rgba8","signature":"from_rgba8(r8: int, g8: int, b8: int, a8: int) -> Color","description":"Returns a  constructed from red ([param r8]), green ([param g8]), blue ([param b8]), and optionally alpha ([param a8]) integer channels, each divided by 255.0 for their final value.\n\t\t\t\t\n\t\t\t\tvar red = Color.from_rgba8(255, 0, 0)             # Same as Color(1, 0, 0).\n\t\t\t\tvar dark_blue = Color.from_rgba8(0, 0, 51)        # Same as Color(0, 0, 0.2).\n\t\t\t\tvar my_color = Color.from_rgba8(306, 255, 0, 102) # Same as Color(1.2, 1, 0, 0.4).\n\t\t\t\t\n\t\t\t\tNote: Due to the lower precision of [method from_rgba8] compared to the standard  constructor, a color created with [method from_rgba8] will generally not be equal to the same color created with the standard  constructor. Use [method is_equal_approx] for comparisons to avoid issues with floating-point precision error.","returnType":"Color"},{"name":"from_rgbe9995","signature":"from_rgbe9995(rgbe: int) -> Color","description":"Decodes a  from an RGBE9995 format integer. See [constant Image.FORMAT_RGBE9995].","returnType":"Color"},{"name":"from_string","signature":"from_string(str: String, default: Color) -> Color","description":"Creates a  from the given string, which can be either an HTML color code or a named color (case-insensitive). Returns [param default] if the color cannot be inferred from the string.\n\t\t\t\tIf you want to create a color from String in a constant expression, use the equivalent constructor instead (i.e. Color(\"color string\")).","returnType":"Color"},{"name":"get_luminance","signature":"get_luminance() -> float","description":"Returns the light intensity of the color, as a value between 0.0 and 1.0 (inclusive). This is useful when determining light or dark color. Colors with a luminance smaller than 0.5 can be generally considered dark.\n\t\t\t\tNote: [method get_luminance] relies on the color being in the linear color space to return an accurate relative luminance value. If the color is in the sRGB color space, use [method srgb_to_linear] to convert it to the linear color space first.","returnType":"float"},{"name":"hex","signature":"hex(hex: int) -> Color","description":"Returns the  associated with the provided [param hex] integer in 32-bit RGBA format (8 bits per channel). This method is the inverse of [method to_rgba32].\n\t\t\t\tIn GDScript and C#, the  is best visualized with hexadecimal notation (\"0x\" prefix, making it \"0xRRGGBBAA\").\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tvar red = Color.hex(0xff0000ff)\n\t\t\t\tvar dark_cyan = Color.hex(0x008b8bff)\n\t\t\t\tvar my_color = Color.hex(0xbbefd2a4)\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tvar red = new Color(0xff0000ff);\n\t\t\t\tvar dark_cyan = new Color(0x008b8bff);\n\t\t\t\tvar my_color = new Color(0xbbefd2a4);\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tIf you want to use hex notation in a constant expression, use the equivalent constructor instead (i.e. Color(0xRRGGBBAA)).","returnType":"Color"},{"name":"hex64","signature":"hex64(hex: int) -> Color","description":"Returns the  associated with the provided [param hex] integer in 64-bit RGBA format (16 bits per channel). This method is the inverse of [method to_rgba64].\n\t\t\t\tIn GDScript and C#, the  is best visualized with hexadecimal notation (\"0x\" prefix, making it \"0xRRRRGGGGBBBBAAAA\").","returnType":"Color"},{"name":"html","signature":"html(rgba: String) -> Color","description":"Returns a new color from [param rgba], an HTML hexadecimal color string. [param rgba] is not case-sensitive, and may be prefixed by a hash sign (#).\n\t\t\t\t[param rgba] must be a valid three-digit or six-digit hexadecimal color string, and may contain an alpha channel value. If [param rgba] does not contain an alpha channel value, an alpha channel value of 1.0 is applied. If [param rgba] is invalid, returns an empty color.\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tvar blue = Color.html(\"#0000ff\") # blue is Color(0.0, 0.0, 1.0, 1.0)\n\t\t\t\tvar green = Color.html(\"#0F0\")   # green is Color(0.0, 1.0, 0.0, 1.0)\n\t\t\t\tvar col = Color.html(\"663399cc\") # col is Color(0.4, 0.2, 0.6, 0.8)\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tvar blue = Color.FromHtml(\"#0000ff\"); // blue is Color(0.0, 0.0, 1.0, 1.0)\n\t\t\t\tvar green = Color.FromHtml(\"#0F0\");   // green is Color(0.0, 1.0, 0.0, 1.0)\n\t\t\t\tvar col = Color.FromHtml(\"663399cc\"); // col is Color(0.4, 0.2, 0.6, 0.8)\n\t\t\t\t\n\t\t\t\t","returnType":"Color"},{"name":"html_is_valid","signature":"html_is_valid(color: String) -> bool","description":"Returns true if [param color] is a valid HTML hexadecimal color string. The string must be a hexadecimal value (case-insensitive) of either 3, 4, 6 or 8 digits, and may be prefixed by a hash sign (#). This method is identical to [method String.is_valid_html_color].\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tColor.html_is_valid(\"#55aaFF\")   # Returns true\n\t\t\t\tColor.html_is_valid(\"#55AAFF20\") # Returns true\n\t\t\t\tColor.html_is_valid(\"55AAFF\")    # Returns true\n\t\t\t\tColor.html_is_valid(\"#F2C\")      # Returns true\n\n\t\t\t\tColor.html_is_valid(\"#AABBC\")    # Returns false\n\t\t\t\tColor.html_is_valid(\"#55aaFF5\")  # Returns false\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tColor.HtmlIsValid(\"#55AAFF\");   // Returns true\n\t\t\t\tColor.HtmlIsValid(\"#55AAFF20\"); // Returns true\n\t\t\t\tColor.HtmlIsValid(\"55AAFF\");    // Returns true\n\t\t\t\tColor.HtmlIsValid(\"#F2C\");      // Returns true\n\n\t\t\t\tColor.HtmlIsValid(\"#AABBC\");    // Returns false\n\t\t\t\tColor.HtmlIsValid(\"#55aaFF5\");  // Returns false\n\t\t\t\t\n\t\t\t\t","returnType":"bool"},{"name":"inverted","signature":"inverted() -> Color","description":"Returns the color with its [member r], [member g], and [member b] components inverted ((1 - r, 1 - g, 1 - b, a)).\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tvar black = Color.WHITE.inverted()\n\t\t\t\tvar color = Color(0.3, 0.4, 0.9)\n\t\t\t\tvar inverted_color = color.inverted() # Equivalent to `Color(0.7, 0.6, 0.1)`\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tvar black = Colors.White.Inverted();\n\t\t\t\tvar color = new Color(0.3f, 0.4f, 0.9f);\n\t\t\t\tColor invertedColor = color.Inverted(); // Equivalent to `new Color(0.7f, 0.6f, 0.1f)`\n\t\t\t\t\n\t\t\t\t","returnType":"Color"},{"name":"is_equal_approx","signature":"is_equal_approx(to: Color) -> bool","description":"Returns true if this color and [param to] are approximately equal, by running [method @GlobalScope.is_equal_approx] on each component.","returnType":"bool"},{"name":"lerp","signature":"lerp(to: Color, weight: float) -> Color","description":"Returns the linear interpolation between this color's components and [param to]'s components. The interpolation factor [param weight] should be between 0.0 and 1.0 (inclusive). See also [method @GlobalScope.lerp].\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tvar red = Color(1.0, 0.0, 0.0)\n\t\t\t\tvar aqua = Color(0.0, 1.0, 0.8)\n\n\t\t\t\tred.lerp(aqua, 0.2) # Returns Color(0.8, 0.2, 0.16)\n\t\t\t\tred.lerp(aqua, 0.5) # Returns Color(0.5, 0.5, 0.4)\n\t\t\t\tred.lerp(aqua, 1.0) # Returns Color(0.0, 1.0, 0.8)\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tvar red = new Color(1.0f, 0.0f, 0.0f);\n\t\t\t\tvar aqua = new Color(0.0f, 1.0f, 0.8f);\n\n\t\t\t\tred.Lerp(aqua, 0.2f); // Returns Color(0.8f, 0.2f, 0.16f)\n\t\t\t\tred.Lerp(aqua, 0.5f); // Returns Color(0.5f, 0.5f, 0.4f)\n\t\t\t\tred.Lerp(aqua, 1.0f); // Returns Color(0.0f, 1.0f, 0.8f)\n\t\t\t\t\n\t\t\t\t","returnType":"Color"},{"name":"lightened","signature":"lightened(amount: float) -> Color","description":"Returns a new color resulting from making this color lighter by the specified [param amount], which should be a ratio from 0.0 to 1.0. See also [method darkened].\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tvar green = Color(0.0, 1.0, 0.0)\n\t\t\t\tvar light_green = green.lightened(0.2) # 20% lighter than regular green\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tvar green = new Color(0.0f, 1.0f, 0.0f);\n\t\t\t\tColor lightGreen = green.Lightened(0.2f); // 20% lighter than regular green\n\t\t\t\t\n\t\t\t\t","returnType":"Color"},{"name":"linear_to_srgb","signature":"linear_to_srgb() -> Color","description":"Returns the color converted to the [url=https://en.wikipedia.org/wiki/SRGB]sRGB color space. This method assumes the original color is in the linear color space. See also [method srgb_to_linear] which performs the opposite operation.","returnType":"Color"},{"name":"srgb_to_linear","signature":"srgb_to_linear() -> Color","description":"Returns the color converted to the linear color space. This method assumes the original color already is in the sRGB color space. See also [method linear_to_srgb] which performs the opposite operation.","returnType":"Color"},{"name":"to_abgr32","signature":"to_abgr32() -> int","description":"Returns the color converted to a 32-bit integer in ABGR format (each component is 8 bits). ABGR is the reversed version of the default RGBA format.\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tvar color = Color(1, 0.5, 0.2)\n\t\t\t\tprint(color.to_abgr32()) # Prints 4281565439\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tvar color = new Color(1.0f, 0.5f, 0.2f);\n\t\t\t\tGD.Print(color.ToAbgr32()); // Prints 4281565439\n\t\t\t\t\n\t\t\t\t","returnType":"int"},{"name":"to_abgr64","signature":"to_abgr64() -> int","description":"Returns the color converted to a 64-bit integer in ABGR format (each component is 16 bits). ABGR is the reversed version of the default RGBA format.\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tvar color = Color(1, 0.5, 0.2)\n\t\t\t\tprint(color.to_abgr64()) # Prints -225178692812801\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tvar color = new Color(1.0f, 0.5f, 0.2f);\n\t\t\t\tGD.Print(color.ToAbgr64()); // Prints -225178692812801\n\t\t\t\t\n\t\t\t\t","returnType":"int"},{"name":"to_argb32","signature":"to_argb32() -> int","description":"Returns the color converted to a 32-bit integer in ARGB format (each component is 8 bits). ARGB is more compatible with DirectX.\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tvar color = Color(1, 0.5, 0.2)\n\t\t\t\tprint(color.to_argb32()) # Prints 4294934323\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tvar color = new Color(1.0f, 0.5f, 0.2f);\n\t\t\t\tGD.Print(color.ToArgb32()); // Prints 4294934323\n\t\t\t\t\n\t\t\t\t","returnType":"int"},{"name":"to_argb64","signature":"to_argb64() -> int","description":"Returns the color converted to a 64-bit integer in ARGB format (each component is 16 bits). ARGB is more compatible with DirectX.\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tvar color = Color(1, 0.5, 0.2)\n\t\t\t\tprint(color.to_argb64()) # Prints -2147470541\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tvar color = new Color(1.0f, 0.5f, 0.2f);\n\t\t\t\tGD.Print(color.ToArgb64()); // Prints -2147470541\n\t\t\t\t\n\t\t\t\t","returnType":"int"},{"name":"to_html","signature":"to_html(with_alpha: bool) -> String","description":"Returns the color converted to an HTML hexadecimal color  in RGBA format, without the hash (#) prefix.\n\t\t\t\tSetting [param with_alpha] to false, excludes alpha from the hexadecimal string, using RGB format instead of RGBA format.\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tvar white = Color(1, 1, 1, 0.5)\n\t\t\t\tvar with_alpha = white.to_html() # Returns \"ffffff7f\"\n\t\t\t\tvar without_alpha = white.to_html(false) # Returns \"ffffff\"\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tvar white = new Color(1, 1, 1, 0.5f);\n\t\t\t\tstring withAlpha = white.ToHtml(); // Returns \"ffffff7f\"\n\t\t\t\tstring withoutAlpha = white.ToHtml(false); // Returns \"ffffff\"\n\t\t\t\t\n\t\t\t\t","returnType":"String"},{"name":"to_rgba32","signature":"to_rgba32() -> int","description":"Returns the color converted to a 32-bit integer in RGBA format (each component is 8 bits). RGBA is Godot's default format. This method is the inverse of [method hex].\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tvar color = Color(1, 0.5, 0.2)\n\t\t\t\tprint(color.to_rgba32()) # Prints 4286526463\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tvar color = new Color(1, 0.5f, 0.2f);\n\t\t\t\tGD.Print(color.ToRgba32()); // Prints 4286526463\n\t\t\t\t\n\t\t\t\t","returnType":"int"},{"name":"to_rgba64","signature":"to_rgba64() -> int","description":"Returns the color converted to a 64-bit integer in RGBA format (each component is 16 bits). RGBA is Godot's default format. This method is the inverse of [method hex64].\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tvar color = Color(1, 0.5, 0.2)\n\t\t\t\tprint(color.to_rgba64()) # Prints -140736629309441\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tvar color = new Color(1, 0.5f, 0.2f);\n\t\t\t\tGD.Print(color.ToRgba64()); // Prints -140736629309441\n\t\t\t\t\n\t\t\t\t","returnType":"int"}],"signals":[]},"ColorPalette":{"name":"ColorPalette","description":"A resource class for managing a palette of colors, which can be loaded and saved using .","inherits":"Resource","properties":[{"name":"colors","type":"PackedColorArray","description":"A [PackedColorArray] containing the colors in the palette."}],"methods":[],"signals":[]},"ColorPicker":{"name":"ColorPicker","description":"A widget that provides an interface for selecting or modifying a color.","inherits":"VBoxContainer","properties":[{"name":"can_add_swatches","type":"bool","description":"If [code]true[/code], it's possible to add presets under Swatches. If [code]false[/code], the button to add presets is disabled."},{"name":"color","type":"Color","description":"The currently selected color."},{"name":"color_mode","type":"int","description":"The currently selected color mode. See [enum ColorModeType]."},{"name":"color_modes_visible","type":"bool","description":"If [code]true[/code], the color mode buttons are visible."},{"name":"deferred_mode","type":"bool","description":"If [code]true[/code], the color will apply only after the user releases the mouse button, otherwise it will apply immediately even in mouse motion event (which can cause performance issues)."},{"name":"edit_alpha","type":"bool","description":"If [code]true[/code], shows an alpha channel slider (opacity)."},{"name":"hex_visible","type":"bool","description":"If [code]true[/code], the hex color code input field is visible."},{"name":"picker_shape","type":"int","description":"The shape of the color space view. See [enum PickerShapeType]."},{"name":"presets_visible","type":"bool","description":"If [code]true[/code], the Swatches and Recent Colors presets are visible."},{"name":"sampler_visible","type":"bool","description":"If [code]true[/code], the color sampler and color preview are visible."},{"name":"sliders_visible","type":"bool","description":"If [code]true[/code], the color sliders are visible."}],"methods":[{"name":"add_preset","signature":"add_preset(color: Color) -> void","description":"Adds the given color to a list of color presets. The presets are displayed in the color picker and the user will be able to select them.\n\t\t\t\tNote: The presets list is only for this color picker.","returnType":"void"},{"name":"add_recent_preset","signature":"add_recent_preset(color: Color) -> void","description":"Adds the given color to a list of color recent presets so that it can be picked later. Recent presets are the colors that were picked recently, a new preset is automatically created and added to recent presets when you pick a new color.\n\t\t\t\tNote: The recent presets list is only for this color picker.","returnType":"void"},{"name":"erase_preset","signature":"erase_preset(color: Color) -> void","description":"Removes the given color from the list of color presets of this color picker.","returnType":"void"},{"name":"erase_recent_preset","signature":"erase_recent_preset(color: Color) -> void","description":"Removes the given color from the list of color recent presets of this color picker.","returnType":"void"},{"name":"get_presets","signature":"get_presets() -> PackedColorArray","description":"Returns the list of colors in the presets of the color picker.","returnType":"PackedColorArray"},{"name":"get_recent_presets","signature":"get_recent_presets() -> PackedColorArray","description":"Returns the list of colors in the recent presets of the color picker.","returnType":"PackedColorArray"}],"signals":[{"name":"color_changed","description":"Emitted when the color is changed."},{"name":"preset_added","description":"Emitted when a preset is added."},{"name":"preset_removed","description":"Emitted when a preset is removed."}]},"ColorPickerButton":{"name":"ColorPickerButton","description":"A button that brings up a  when pressed.","inherits":"Button","properties":[{"name":"color","type":"Color","description":"The currently selected color."},{"name":"edit_alpha","type":"bool","description":"If [code]true[/code], the alpha channel in the displayed [ColorPicker] will be visible."}],"methods":[{"name":"get_picker","signature":"get_picker() -> ColorPicker","description":"Returns the  that this node toggles.\n\t\t\t\tWarning: This is a required internal node, removing and freeing it may cause a crash. If you wish to hide it or any of its children, use their [member CanvasItem.visible] property.","returnType":"ColorPicker"},{"name":"get_popup","signature":"get_popup() -> PopupPanel","description":"Returns the control's  which allows you to connect to popup signals. This allows you to handle events when the ColorPicker is shown or hidden.\n\t\t\t\tWarning: This is a required internal node, removing and freeing it may cause a crash. If you wish to hide it or any of its children, use their [member Window.visible] property.","returnType":"PopupPanel"}],"signals":[{"name":"color_changed","description":"Emitted when the color changes."},{"name":"picker_created","description":"Emitted when the [ColorPicker] is created (the button is pressed for the first time)."},{"name":"popup_closed","description":"Emitted when the [ColorPicker] is closed."}]},"ColorRect":{"name":"ColorRect","description":"A control that displays a solid color rectangle.","inherits":"Control","properties":[{"name":"color","type":"Color","description":"The fill color of the rectangle."}],"methods":[],"signals":[]},"Compositor":{"name":"Compositor","description":"Stores attributes used to customize how a Viewport is rendered.","inherits":"Resource","properties":[{"name":"compositor_effects","type":"CompositorEffect[]","description":"The custom [CompositorEffect]s that are applied during rendering of viewports using this compositor."}],"methods":[],"signals":[]},"CompositorEffect":{"name":"CompositorEffect","description":"This resource allows for creating a custom rendering effect.","inherits":"Resource","properties":[{"name":"access_resolved_color","type":"bool","description":"If [code]true[/code] and MSAA is enabled, this will trigger a color buffer resolve before the effect is run.\n\t\t\t[b]Note:[/b] In [method _render_callback], to access the resolved buffer use:\n\t\t\t[codeblock]\n\t\t\tvar render_scene_buffers = render_data.get_render_scene_buffers()\n\t\t\tvar color_buffer = render_scene_buffers.get_texture(\"render_buffers\", \"color\")\n\t\t\t[/codeblock]"},{"name":"access_resolved_depth","type":"bool","description":"If [code]true[/code] and MSAA is enabled, this will trigger a depth buffer resolve before the effect is run.\n\t\t\t[b]Note:[/b] In [method _render_callback], to access the resolved buffer use:\n\t\t\t[codeblock]\n\t\t\tvar render_scene_buffers = render_data.get_render_scene_buffers()\n\t\t\tvar depth_buffer = render_scene_buffers.get_texture(\"render_buffers\", \"depth\")\n\t\t\t[/codeblock]"},{"name":"effect_callback_type","type":"int","description":"The type of effect that is implemented, determines at what stage of rendering the callback is called."},{"name":"enabled","type":"bool","description":"If [code]true[/code] this rendering effect is applied to any viewport it is added to."},{"name":"needs_motion_vectors","type":"bool","description":"If [code]true[/code] this triggers motion vectors being calculated during the opaque render state.\n\t\t\t[b]Note:[/b] In [method _render_callback], to access the motion vector buffer use:\n\t\t\t[codeblock]\n\t\t\tvar render_scene_buffers = render_data.get_render_scene_buffers()\n\t\t\tvar motion_buffer = render_scene_buffers.get_velocity_texture()\n\t\t\t[/codeblock]"},{"name":"needs_normal_roughness","type":"bool","description":"If [code]true[/code] this triggers normal and roughness data to be output during our depth pre-pass, only applicable for the Forward+ renderer.\n\t\t\t[b]Note:[/b] In [method _render_callback], to access the roughness buffer use:\n\t\t\t[codeblock]\n\t\t\tvar render_scene_buffers = render_data.get_render_scene_buffers()\n\t\t\tvar roughness_buffer = render_scene_buffers.get_texture(\"forward_clustered\", \"normal_roughness\")\n\t\t\t[/codeblock]\n\t\t\tThe raw normal and roughness buffer is stored in an optimized format, different than the one available in Spatial shaders. When sampling the buffer, a conversion function must be applied. Use this function, copied from [url=https://github.com/godotengine/godot/blob/da5f39889f155658cef7f7ec3cc1abb94e17d815/servers/rendering/renderer_rd/shaders/forward_clustered/scene_forward_clustered_inc.glsl#L334-L341]here[/url]:\n\t\t\t[codeblock]\n\t\t\tvec4 normal_roughness_compatibility(vec4 p_normal_roughness) {\n\t\t\t    float roughness = p_normal_roughness.w;\n\t\t\t    if (roughness &gt; 0.5) {\n\t\t\t        roughness = 1.0 - roughness;\n\t\t\t    }\n\t\t\t    roughness /= (127.0 / 255.0);\n\t\t\t    return vec4(normalize(p_normal_roughness.xyz * 2.0 - 1.0) * 0.5 + 0.5, roughness);\n\t\t\t}\n\t\t\t[/codeblock]"},{"name":"needs_separate_specular","type":"bool","description":"If [code]true[/code] this triggers specular data being rendered to a separate buffer and combined after effects have been applied, only applicable for the Forward+ renderer."}],"methods":[{"name":"_render_callback","signature":"_render_callback(effect_callback_type: int, render_data: RenderData) -> void","description":"Implement this function with your custom rendering code. [param effect_callback_type] should always match the effect callback type you've specified in [member effect_callback_type]. [param render_data] provides access to the rendering state, it is only valid during rendering and should not be stored.","returnType":"void"}],"signals":[]},"CompressedCubemap":{"name":"CompressedCubemap","description":"An optionally compressed .","inherits":"CompressedTextureLayered","properties":[],"methods":[],"signals":[]},"CompressedCubemapArray":{"name":"CompressedCubemapArray","description":"An optionally compressed .","inherits":"CompressedTextureLayered","properties":[],"methods":[],"signals":[]},"CompressedTexture2D":{"name":"CompressedTexture2D","description":"Texture with 2 dimensions, optionally compressed.","inherits":"Texture2D","properties":[{"name":"load_path","type":"String","description":"The [CompressedTexture2D]'s file path to a [code].ctex[/code] file."}],"methods":[{"name":"load","signature":"load(path: String) -> int","description":"Loads the texture from the specified [param path].","returnType":"int"}],"signals":[]},"CompressedTexture2DArray":{"name":"CompressedTexture2DArray","description":"Array of 2-dimensional textures, optionally compressed.","inherits":"CompressedTextureLayered","properties":[],"methods":[],"signals":[]},"CompressedTexture3D":{"name":"CompressedTexture3D","description":"Texture with 3 dimensions, optionally compressed.","inherits":"Texture3D","properties":[{"name":"load_path","type":"String","description":"The [CompressedTexture3D]'s file path to a [code].ctex3d[/code] file."}],"methods":[{"name":"load","signature":"load(path: String) -> int","description":"Loads the texture from the specified [param path].","returnType":"int"}],"signals":[]},"CompressedTextureLayered":{"name":"CompressedTextureLayered","description":"Base class for texture arrays that can optionally be compressed.","inherits":"TextureLayered","properties":[{"name":"load_path","type":"String","description":"The path the texture should be loaded from."}],"methods":[{"name":"load","signature":"load(path: String) -> int","description":"Loads the texture at [param path].","returnType":"int"}],"signals":[]},"ConcavePolygonShape2D":{"name":"ConcavePolygonShape2D","description":"A 2D polyline shape used for physics collision.","inherits":"Shape2D","properties":[{"name":"segments","type":"PackedVector2Array","description":"The array of points that make up the [ConcavePolygonShape2D]'s line segments. The array (of length divisible by two) is naturally divided into pairs (one pair for each segment); each pair consists of the starting point of a segment and the endpoint of a segment."}],"methods":[],"signals":[]},"ConcavePolygonShape3D":{"name":"ConcavePolygonShape3D","description":"A 3D trimesh shape used for physics collision.","inherits":"Shape3D","properties":[{"name":"backface_collision","type":"bool","description":"If set to [code]true[/code], collisions occur on both sides of the concave shape faces. Otherwise they occur only along the face normals."}],"methods":[{"name":"get_faces","signature":"get_faces() -> PackedVector3Array","description":"Returns the faces of the trimesh shape as an array of vertices. The array (of length divisible by three) is naturally divided into triples; each triple of vertices defines a triangle.","returnType":"PackedVector3Array"},{"name":"set_faces","signature":"set_faces(faces: PackedVector3Array) -> void","description":"Sets the faces of the trimesh shape from an array of vertices. The [param faces] array should be composed of triples such that each triple of vertices defines a triangle.","returnType":"void"}],"signals":[]},"ConeTwistJoint3D":{"name":"ConeTwistJoint3D","description":"A physics joint that connects two 3D physics bodies in a way that simulates a ball-and-socket joint.","inherits":"Joint3D","properties":[{"name":"bias","type":"float","description":"The speed with which the swing or twist will take place.\n\t\t\tThe higher, the faster."},{"name":"relaxation","type":"float","description":"Defines, how fast the swing- and twist-speed-difference on both sides gets synced."},{"name":"softness","type":"float","description":"The ease with which the joint starts to twist. If it's too low, it takes more force to start twisting the joint."},{"name":"swing_span","type":"float","description":"Swing is rotation from side to side, around the axis perpendicular to the twist axis.\n\t\t\tThe swing span defines, how much rotation will not get corrected along the swing axis.\n\t\t\tCould be defined as looseness in the [ConeTwistJoint3D].\n\t\t\tIf below 0.05, this behavior is locked."},{"name":"twist_span","type":"float","description":"Twist is the rotation around the twist axis, this value defined how far the joint can twist.\n\t\t\tTwist is locked if below 0.05."}],"methods":[{"name":"get_param","signature":"get_param(param: int) -> float","description":"Returns the value of the specified parameter.","returnType":"float"},{"name":"set_param","signature":"set_param(param: int, value: float) -> void","description":"Sets the value of the specified parameter.","returnType":"void"}],"signals":[]},"ConfigFile":{"name":"ConfigFile","description":"Helper class to handle INI-style files.","inherits":"RefCounted","properties":[],"methods":[{"name":"clear","signature":"clear() -> void","description":"Removes the entire contents of the config.","returnType":"void"},{"name":"encode_to_text","signature":"encode_to_text() -> String","description":"Obtain the text version of this config file (the same text that would be written to a file).","returnType":"String"},{"name":"erase_section","signature":"erase_section(section: String) -> void","description":"Deletes the specified section along with all the key-value pairs inside. Raises an error if the section does not exist.","returnType":"void"},{"name":"erase_section_key","signature":"erase_section_key(section: String, key: String) -> void","description":"Deletes the specified key in a section. Raises an error if either the section or the key do not exist.","returnType":"void"},{"name":"get_section_keys","signature":"get_section_keys(section: String) -> PackedStringArray","description":"Returns an array of all defined key identifiers in the specified section. Raises an error and returns an empty array if the section does not exist.","returnType":"PackedStringArray"},{"name":"get_sections","signature":"get_sections() -> PackedStringArray","description":"Returns an array of all defined section identifiers.","returnType":"PackedStringArray"},{"name":"get_value","signature":"get_value(section: String, key: String, default: Variant) -> Variant","description":"Returns the current value for the specified section and key. If either the section or the key do not exist, the method returns the fallback [param default] value. If [param default] is not specified or set to null, an error is also raised.","returnType":"Variant"},{"name":"has_section","signature":"has_section(section: String) -> bool","description":"Returns true if the specified section exists.","returnType":"bool"},{"name":"has_section_key","signature":"has_section_key(section: String, key: String) -> bool","description":"Returns true if the specified section-key pair exists.","returnType":"bool"},{"name":"load","signature":"load(path: String) -> int","description":"Loads the config file specified as a parameter. The file's contents are parsed and loaded in the  object which the method was called on.\n\t\t\t\tReturns [constant OK] on success, or one of the other [enum Error] values if the operation failed.","returnType":"int"},{"name":"load_encrypted","signature":"load_encrypted(path: String, key: PackedByteArray) -> int","description":"Loads the encrypted config file specified as a parameter, using the provided [param key] to decrypt it. The file's contents are parsed and loaded in the  object which the method was called on.\n\t\t\t\tReturns [constant OK] on success, or one of the other [enum Error] values if the operation failed.","returnType":"int"},{"name":"load_encrypted_pass","signature":"load_encrypted_pass(path: String, password: String) -> int","description":"Loads the encrypted config file specified as a parameter, using the provided [param password] to decrypt it. The file's contents are parsed and loaded in the  object which the method was called on.\n\t\t\t\tReturns [constant OK] on success, or one of the other [enum Error] values if the operation failed.","returnType":"int"},{"name":"parse","signature":"parse(data: String) -> int","description":"Parses the passed string as the contents of a config file. The string is parsed and loaded in the ConfigFile object which the method was called on.\n\t\t\t\tReturns [constant OK] on success, or one of the other [enum Error] values if the operation failed.","returnType":"int"},{"name":"save","signature":"save(path: String) -> int","description":"Saves the contents of the  object to the file specified as a parameter. The output file uses an INI-style structure.\n\t\t\t\tReturns [constant OK] on success, or one of the other [enum Error] values if the operation failed.","returnType":"int"},{"name":"save_encrypted","signature":"save_encrypted(path: String, key: PackedByteArray) -> int","description":"Saves the contents of the  object to the AES-256 encrypted file specified as a parameter, using the provided [param key] to encrypt it. The output file uses an INI-style structure.\n\t\t\t\tReturns [constant OK] on success, or one of the other [enum Error] values if the operation failed.","returnType":"int"},{"name":"save_encrypted_pass","signature":"save_encrypted_pass(path: String, password: String) -> int","description":"Saves the contents of the  object to the AES-256 encrypted file specified as a parameter, using the provided [param password] to encrypt it. The output file uses an INI-style structure.\n\t\t\t\tReturns [constant OK] on success, or one of the other [enum Error] values if the operation failed.","returnType":"int"},{"name":"set_value","signature":"set_value(section: String, key: String, value: Variant) -> void","description":"Assigns a value to the specified key of the specified section. If either the section or the key do not exist, they are created. Passing a null value deletes the specified key if it exists, and deletes the section if it ends up empty once the key has been removed.","returnType":"void"}],"signals":[]},"ConfirmationDialog":{"name":"ConfirmationDialog","description":"A dialog used for confirmation of actions.","inherits":"AcceptDialog","properties":[{"name":"cancel_button_text","type":"String","description":"The text displayed by the cancel button (see [method get_cancel_button])."}],"methods":[{"name":"get_cancel_button","signature":"get_cancel_button() -> Button","description":"Returns the cancel button.\n\t\t\t\tWarning: This is a required internal node, removing and freeing it may cause a crash. If you wish to hide it or any of its children, use their [member CanvasItem.visible] property.","returnType":"Button"}],"signals":[]},"Container":{"name":"Container","description":"Base class for all GUI containers.","inherits":"Control","properties":[],"methods":[{"name":"_get_allowed_size_flags_horizontal","signature":"_get_allowed_size_flags_horizontal() -> PackedInt32Array","description":"Implement to return a list of allowed horizontal [enum Control.SizeFlags] for child nodes. This doesn't technically prevent the usages of any other size flags, if your implementation requires that. This only limits the options available to the user in the Inspector dock.\n\t\t\t\tNote: Having no size flags is equal to having [constant Control.SIZE_SHRINK_BEGIN]. As such, this value is always implicitly allowed.","returnType":"PackedInt32Array"},{"name":"_get_allowed_size_flags_vertical","signature":"_get_allowed_size_flags_vertical() -> PackedInt32Array","description":"Implement to return a list of allowed vertical [enum Control.SizeFlags] for child nodes. This doesn't technically prevent the usages of any other size flags, if your implementation requires that. This only limits the options available to the user in the Inspector dock.\n\t\t\t\tNote: Having no size flags is equal to having [constant Control.SIZE_SHRINK_BEGIN]. As such, this value is always implicitly allowed.","returnType":"PackedInt32Array"},{"name":"fit_child_in_rect","signature":"fit_child_in_rect(child: Control, rect: Rect2) -> void","description":"Fit a child control in a given rect. This is mainly a helper for creating custom container classes.","returnType":"void"},{"name":"queue_sort","signature":"queue_sort() -> void","description":"Queue resort of the contained children. This is called automatically anyway, but can be called upon request.","returnType":"void"}],"signals":[{"name":"pre_sort_children","description":"Emitted when children are going to be sorted."},{"name":"sort_children","description":"Emitted when sorting the children is needed."}]},"Control":{"name":"Control","description":"Base class for all GUI controls. Adapts its position and size based on its parent control.","inherits":"CanvasItem","properties":[{"name":"anchor_bottom","type":"float","description":"Anchors the bottom edge of the node to the origin, the center, or the end of its parent control. It changes how the bottom offset updates when the node moves or changes size. You can use one of the [enum Anchor] constants for convenience."},{"name":"anchor_left","type":"float","description":"Anchors the left edge of the node to the origin, the center or the end of its parent control. It changes how the left offset updates when the node moves or changes size. You can use one of the [enum Anchor] constants for convenience."},{"name":"anchor_right","type":"float","description":"Anchors the right edge of the node to the origin, the center or the end of its parent control. It changes how the right offset updates when the node moves or changes size. You can use one of the [enum Anchor] constants for convenience."},{"name":"anchor_top","type":"float","description":"Anchors the top edge of the node to the origin, the center or the end of its parent control. It changes how the top offset updates when the node moves or changes size. You can use one of the [enum Anchor] constants for convenience."},{"name":"auto_translate","type":"bool","description":"Toggles if any text should automatically change to its translated version depending on the current locale."},{"name":"clip_contents","type":"bool","description":"Enables whether rendering of [CanvasItem] based children should be clipped to this control's rectangle. If [code]true[/code], parts of a child which would be visibly outside of this control's rectangle will not be rendered and won't receive input."},{"name":"custom_minimum_size","type":"Vector2","description":"The minimum size of the node's bounding rectangle. If you set it to a value greater than [code](0, 0)[/code], the node's bounding rectangle will always have at least this size. Note that [Control] nodes have their internal minimum size returned by [method get_minimum_size]. It depends on the control's contents, like text, textures, or style boxes. The actual minimum size is the maximum value of this property and the internal minimum size (see [method get_combined_minimum_size])."},{"name":"focus_mode","type":"int","description":"The focus access mode for the control (None, Click or All). Only one Control can be focused at the same time, and it will receive keyboard, gamepad, and mouse signals."},{"name":"focus_neighbor_bottom","type":"NodePath","description":"Tells Godot which node it should give focus to if the user presses the down arrow on the keyboard or down on a gamepad by default. You can change the key by editing the [member ProjectSettings.input/ui_down] input action. The node must be a [Control]. If this property is not set, Godot will give focus to the closest [Control] to the bottom of this one."},{"name":"focus_neighbor_left","type":"NodePath","description":"Tells Godot which node it should give focus to if the user presses the left arrow on the keyboard or left on a gamepad by default. You can change the key by editing the [member ProjectSettings.input/ui_left] input action. The node must be a [Control]. If this property is not set, Godot will give focus to the closest [Control] to the left of this one."},{"name":"focus_neighbor_right","type":"NodePath","description":"Tells Godot which node it should give focus to if the user presses the right arrow on the keyboard or right on a gamepad by default. You can change the key by editing the [member ProjectSettings.input/ui_right] input action. The node must be a [Control]. If this property is not set, Godot will give focus to the closest [Control] to the right of this one."},{"name":"focus_neighbor_top","type":"NodePath","description":"Tells Godot which node it should give focus to if the user presses the top arrow on the keyboard or top on a gamepad by default. You can change the key by editing the [member ProjectSettings.input/ui_up] input action. The node must be a [Control]. If this property is not set, Godot will give focus to the closest [Control] to the top of this one."},{"name":"focus_next","type":"NodePath","description":"Tells Godot which node it should give focus to if the user presses [kbd]Tab[/kbd] on a keyboard by default. You can change the key by editing the [member ProjectSettings.input/ui_focus_next] input action.\n\t\t\tIf this property is not set, Godot will select a \"best guess\" based on surrounding nodes in the scene tree."},{"name":"focus_previous","type":"NodePath","description":"Tells Godot which node it should give focus to if the user presses [kbd]Shift + Tab[/kbd] on a keyboard by default. You can change the key by editing the [member ProjectSettings.input/ui_focus_prev] input action.\n\t\t\tIf this property is not set, Godot will select a \"best guess\" based on surrounding nodes in the scene tree."},{"name":"global_position","type":"Vector2","description":"The node's global position, relative to the world (usually to the [CanvasLayer])."},{"name":"grow_horizontal","type":"int","description":"Controls the direction on the horizontal axis in which the control should grow if its horizontal minimum size is changed to be greater than its current size, as the control always has to be at least the minimum size."},{"name":"grow_vertical","type":"int","description":"Controls the direction on the vertical axis in which the control should grow if its vertical minimum size is changed to be greater than its current size, as the control always has to be at least the minimum size."},{"name":"layout_direction","type":"int","description":"Controls layout direction and text writing direction. Right-to-left layouts are necessary for certain languages (e.g. Arabic and Hebrew). See also [method is_layout_rtl]."},{"name":"localize_numeral_system","type":"bool","description":"If [code]true[/code], automatically converts code line numbers, list indices, [SpinBox] and [ProgressBar] values from the Western Arabic (0..9) to the numeral systems used in current locale.\n\t\t\t[b]Note:[/b] Numbers within the text are not automatically converted, it can be done manually, using [method TextServer.format_number]."},{"name":"mouse_default_cursor_shape","type":"int","description":"The default cursor shape for this control. Useful for Godot plugins and applications or games that use the system's mouse cursors.\n\t\t\t[b]Note:[/b] On Linux, shapes may vary depending on the cursor theme of the system."},{"name":"mouse_filter","type":"int","description":"Controls whether the control will be able to receive mouse button input events through [method _gui_input] and how these events should be handled. Also controls whether the control can receive the [signal mouse_entered], and [signal mouse_exited] signals. See the constants to learn what each does."},{"name":"mouse_force_pass_scroll_events","type":"bool","description":"When enabled, scroll wheel events processed by [method _gui_input] will be passed to the parent control even if [member mouse_filter] is set to [constant MOUSE_FILTER_STOP].\n\t\t\tYou should disable it on the root of your UI if you do not want scroll events to go to the [method Node._unhandled_input] processing.\n\t\t\t[b]Note:[/b] Because this property defaults to [code]true[/code], this allows nested scrollable containers to work out of the box."},{"name":"offset_bottom","type":"float","description":"Distance between the node's bottom edge and its parent control, based on [member anchor_bottom].\n\t\t\tOffsets are often controlled by one or multiple parent [Container] nodes, so you should not modify them manually if your node is a direct child of a [Container]. Offsets update automatically when you move or resize the node."},{"name":"offset_left","type":"float","description":"Distance between the node's left edge and its parent control, based on [member anchor_left].\n\t\t\tOffsets are often controlled by one or multiple parent [Container] nodes, so you should not modify them manually if your node is a direct child of a [Container]. Offsets update automatically when you move or resize the node."},{"name":"offset_right","type":"float","description":"Distance between the node's right edge and its parent control, based on [member anchor_right].\n\t\t\tOffsets are often controlled by one or multiple parent [Container] nodes, so you should not modify them manually if your node is a direct child of a [Container]. Offsets update automatically when you move or resize the node."},{"name":"offset_top","type":"float","description":"Distance between the node's top edge and its parent control, based on [member anchor_top].\n\t\t\tOffsets are often controlled by one or multiple parent [Container] nodes, so you should not modify them manually if your node is a direct child of a [Container]. Offsets update automatically when you move or resize the node."},{"name":"pivot_offset","type":"Vector2","description":"By default, the node's pivot is its top-left corner. When you change its [member rotation] or [member scale], it will rotate or scale around this pivot. Set this property to [member size] / 2 to pivot around the Control's center."},{"name":"position","type":"Vector2","description":"The node's position, relative to its containing node. It corresponds to the rectangle's top-left corner. The property is not affected by [member pivot_offset]."},{"name":"rotation","type":"float","description":"The node's rotation around its pivot, in radians. See [member pivot_offset] to change the pivot's position.\n\t\t\t[b]Note:[/b] This property is edited in the inspector in degrees. If you want to use degrees in a script, use [member rotation_degrees]."},{"name":"rotation_degrees","type":"float","description":"Helper property to access [member rotation] in degrees instead of radians."},{"name":"scale","type":"Vector2","description":"The node's scale, relative to its [member size]. Change this property to scale the node around its [member pivot_offset]. The Control's [member tooltip_text] will also scale according to this value.\n\t\t\t[b]Note:[/b] This property is mainly intended to be used for animation purposes. To support multiple resolutions in your project, use an appropriate viewport stretch mode as described in the [url=$DOCS_URL/tutorials/rendering/multiple_resolutions.html]documentation[/url] instead of scaling Controls individually.\n\t\t\t[b]Note:[/b] [member FontFile.oversampling] does [i]not[/i] take [Control] [member scale] into account. This means that scaling up/down will cause bitmap fonts and rasterized (non-MSDF) dynamic fonts to appear blurry or pixelated. To ensure text remains crisp regardless of scale, you can enable MSDF font rendering by enabling [member ProjectSettings.gui/theme/default_font_multichannel_signed_distance_field] (applies to the default project font only), or enabling [b]Multichannel Signed Distance Field[/b] in the import options of a DynamicFont for custom fonts. On system fonts, [member SystemFont.multichannel_signed_distance_field] can be enabled in the inspector.\n\t\t\t[b]Note:[/b] If the Control node is a child of a [Container] node, the scale will be reset to [code]Vector2(1, 1)[/code] when the scene is instantiated. To set the Control's scale when it's instantiated, wait for one frame using [code]await get_tree().process_frame[/code] then set its [member scale] property."},{"name":"shortcut_context","type":"Node","description":"The [Node] which must be a parent of the focused [Control] for the shortcut to be activated. If [code]null[/code], the shortcut can be activated when any control is focused (a global shortcut). This allows shortcuts to be accepted only when the user has a certain area of the GUI focused."},{"name":"size","type":"Vector2","description":"The size of the node's bounding rectangle, in the node's coordinate system. [Container] nodes update this property automatically."},{"name":"size_flags_horizontal","type":"int","description":"Tells the parent [Container] nodes how they should resize and place the node on the X axis. Use a combination of the [enum SizeFlags] constants to change the flags. See the constants to learn what each does."},{"name":"size_flags_stretch_ratio","type":"float","description":"If the node and at least one of its neighbors uses the [constant SIZE_EXPAND] size flag, the parent [Container] will let it take more or less space depending on this property. If this node has a stretch ratio of 2 and its neighbor a ratio of 1, this node will take two thirds of the available space."},{"name":"size_flags_vertical","type":"int","description":"Tells the parent [Container] nodes how they should resize and place the node on the Y axis. Use a combination of the [enum SizeFlags] constants to change the flags. See the constants to learn what each does."},{"name":"theme","type":"Theme","description":"The [Theme] resource this node and all its [Control] and [Window] children use. If a child node has its own [Theme] resource set, theme items are merged with child's definitions having higher priority.\n\t\t\t[b]Note:[/b] [Window] styles will have no effect unless the window is embedded."},{"name":"theme_type_variation","type":"StringName","description":"The name of a theme type variation used by this [Control] to look up its own theme items. When empty, the class name of the node is used (e.g. [code skip-lint]Button[/code] for the [Button] control), as well as the class names of all parent classes (in order of inheritance).\n\t\t\tWhen set, this property gives the highest priority to the type of the specified name. This type can in turn extend another type, forming a dependency chain. See [method Theme.set_type_variation]. If the theme item cannot be found using this type or its base types, lookup falls back on the class names.\n\t\t\t[b]Note:[/b] To look up [Control]'s own items use various [code]get_theme_*[/code] methods without specifying [code]theme_type[/code].\n\t\t\t[b]Note:[/b] Theme items are looked for in the tree order, from branch to root, where each [Control] node is checked for its [member theme] property. The earliest match against any type/class name is returned. The project-level Theme and the default Theme are checked last."},{"name":"tooltip_auto_translate_mode","type":"int","description":"Defines if tooltip text should automatically change to its translated version depending on the current locale. Uses the same auto translate mode as this control when set to [constant Node.AUTO_TRANSLATE_MODE_INHERIT].\n\t\t\t[b]Note:[/b] Tooltips customized using [method _make_custom_tooltip] do not use this auto translate mode automatically."},{"name":"tooltip_text","type":"String","description":"The default tooltip text. The tooltip appears when the user's mouse cursor stays idle over this control for a few moments, provided that the [member mouse_filter] property is not [constant MOUSE_FILTER_IGNORE]. The time required for the tooltip to appear can be changed with the [member ProjectSettings.gui/timers/tooltip_delay_sec] setting.\n\t\t\tThis string is the default return value of [method get_tooltip]. Override [method _get_tooltip] to generate tooltip text dynamically. Override [method _make_custom_tooltip] to customize the tooltip interface and behavior.\n\t\t\tThe tooltip popup will use either a default implementation, or a custom one that you can provide by overriding [method _make_custom_tooltip]. The default tooltip includes a [PopupPanel] and [Label] whose theme properties can be customized using [Theme] methods with the [code]\"TooltipPanel\"[/code] and [code]\"TooltipLabel\"[/code] respectively. For example:\n\t\t\t[codeblocks]\n\t\t\t[gdscript]\n\t\t\tvar style_box = StyleBoxFlat.new()\n\t\t\tstyle_box.set_bg_color(Color(1, 1, 0))\n\t\t\tstyle_box.set_border_width_all(2)\n\t\t\t# We assume here that the `theme` property has been assigned a custom Theme beforehand.\n\t\t\ttheme.set_stylebox(\"panel\", \"TooltipPanel\", style_box)\n\t\t\ttheme.set_color(\"font_color\", \"TooltipLabel\", Color(0, 1, 1))\n\t\t\t[/gdscript]\n\t\t\t[csharp]\n\t\t\tvar styleBox = new StyleBoxFlat();\n\t\t\tstyleBox.SetBgColor(new Color(1, 1, 0));\n\t\t\tstyleBox.SetBorderWidthAll(2);\n\t\t\t// We assume here that the `Theme` property has been assigned a custom Theme beforehand.\n\t\t\tTheme.SetStyleBox(\"panel\", \"TooltipPanel\", styleBox);\n\t\t\tTheme.SetColor(\"font_color\", \"TooltipLabel\", new Color(0, 1, 1));\n\t\t\t[/csharp]\n\t\t\t[/codeblocks]"}],"methods":[{"name":"_can_drop_data","signature":"_can_drop_data(at_position: Vector2, data: Variant) -> bool","description":"Godot calls this method to test if [param data] from a control's [method _get_drag_data] can be dropped at [param at_position]. [param at_position] is local to this control.\n\t\t\t\tThis method should only be used to test the data. Process the data in [method _drop_data].\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tfunc _can_drop_data(position, data):\n\t\t\t\t    # Check position if it is relevant to you\n\t\t\t\t    # Otherwise, just check data\n\t\t\t\t    return typeof(data) == TYPE_DICTIONARY and data.has(\"expected\")\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tpublic override bool _CanDropData(Vector2 atPosition, Variant data)\n\t\t\t\t{\n\t\t\t\t    // Check position if it is relevant to you\n\t\t\t\t    // Otherwise, just check data\n\t\t\t\t    return data.VariantType == Variant.Type.Dictionary &amp;&amp; data.AsGodotDictionary().ContainsKey(\"expected\");\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t","returnType":"bool"},{"name":"_drop_data","signature":"_drop_data(at_position: Vector2, data: Variant) -> void","description":"Godot calls this method to pass you the [param data] from a control's [method _get_drag_data] result. Godot first calls [method _can_drop_data] to test if [param data] is allowed to drop at [param at_position] where [param at_position] is local to this control.\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tfunc _can_drop_data(position, data):\n\t\t\t\t    return typeof(data) == TYPE_DICTIONARY and data.has(\"color\")\n\n\t\t\t\tfunc _drop_data(position, data):\n\t\t\t\t    var color = data[\"color\"]\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tpublic override bool _CanDropData(Vector2 atPosition, Variant data)\n\t\t\t\t{\n\t\t\t\t    return data.VariantType == Variant.Type.Dictionary &amp;&amp; data.AsGodotDictionary().ContainsKey(\"color\");\n\t\t\t\t}\n\n\t\t\t\tpublic override void _DropData(Vector2 atPosition, Variant data)\n\t\t\t\t{\n\t\t\t\t    Color color = data.AsGodotDictionary()[\"color\"].AsColor();\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t","returnType":"void"},{"name":"_get_drag_data","signature":"_get_drag_data(at_position: Vector2) -> Variant","description":"Godot calls this method to get data that can be dragged and dropped onto controls that expect drop data. Returns null if there is no data to drag. Controls that want to receive drop data should implement [method _can_drop_data] and [method _drop_data]. [param at_position] is local to this control. Drag may be forced with [method force_drag].\n\t\t\t\tA preview that will follow the mouse that should represent the data can be set with [method set_drag_preview]. A good time to set the preview is in this method.\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tfunc _get_drag_data(position):\n\t\t\t\t    var mydata = make_data() # This is your custom method generating the drag data.\n\t\t\t\t    set_drag_preview(make_preview(mydata)) # This is your custom method generating the preview of the drag data.\n\t\t\t\t    return mydata\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tpublic override Variant _GetDragData(Vector2 atPosition)\n\t\t\t\t{\n\t\t\t\t    var myData = MakeData(); // This is your custom method generating the drag data.\n\t\t\t\t    SetDragPreview(MakePreview(myData)); // This is your custom method generating the preview of the drag data.\n\t\t\t\t    return myData;\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t","returnType":"Variant"},{"name":"_get_minimum_size","signature":"_get_minimum_size() -> Vector2","description":"Virtual method to be implemented by the user. Returns the minimum size for this control. Alternative to [member custom_minimum_size] for controlling minimum size via code. The actual minimum size will be the max value of these two (in each axis separately).\n\t\t\t\tIf not overridden, defaults to [constant Vector2.ZERO].\n\t\t\t\tNote: This method will not be called when the script is attached to a  node that already overrides its minimum size (e.g. , ,  etc.). It can only be used with most basic GUI nodes, like , ,  etc.","returnType":"Vector2"},{"name":"_get_tooltip","signature":"_get_tooltip(at_position: Vector2) -> String","description":"Virtual method to be implemented by the user. Returns the tooltip text for the position [param at_position] in control's local coordinates, which will typically appear when the cursor is resting over this control. See [method get_tooltip].\n\t\t\t\tNote: If this method returns an empty  and [method _make_custom_tooltip] is not overridden, no tooltip is displayed.","returnType":"String"},{"name":"_gui_input","signature":"_gui_input(event: InputEvent) -> void","description":"Virtual method to be implemented by the user. Override this method to handle and accept inputs on UI elements. See also [method accept_event].\n\t\t\t\tExample: Click on the control to print a message:\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tfunc _gui_input(event):\n\t\t\t\t    if event is InputEventMouseButton:\n\t\t\t\t        if event.button_index == MOUSE_BUTTON_LEFT and event.pressed:\n\t\t\t\t            print(\"I've been clicked D:\")\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tpublic override void _GuiInput(InputEvent @event)\n\t\t\t\t{\n\t\t\t\t    if (@event is InputEventMouseButton mb)\n\t\t\t\t    {\n\t\t\t\t        if (mb.ButtonIndex == MouseButton.Left &amp;&amp; mb.Pressed)\n\t\t\t\t        {\n\t\t\t\t            GD.Print(\"I've been clicked D:\");\n\t\t\t\t        }\n\t\t\t\t    }\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tIf the [param event] inherits , this method will not be called when:\n\t\t\t\t- the control's [member mouse_filter] is set to [constant MOUSE_FILTER_IGNORE];\n\t\t\t\t- the control is obstructed by another control on top, that doesn't have [member mouse_filter] set to [constant MOUSE_FILTER_IGNORE];\n\t\t\t\t- the control's parent has [member mouse_filter] set to [constant MOUSE_FILTER_STOP] or has accepted the event;\n\t\t\t\t- the control's parent has [member clip_contents] enabled and the [param event]'s position is outside the parent's rectangle;\n\t\t\t\t- the [param event]'s position is outside the control (see [method _has_point]).\n\t\t\t\tNote: The [param event]'s position is relative to this control's origin.","returnType":"void"},{"name":"_has_point","signature":"_has_point(point: Vector2) -> bool","description":"Virtual method to be implemented by the user. Returns whether the given [param point] is inside this control.\n\t\t\t\tIf not overridden, default behavior is checking if the point is within control's Rect.\n\t\t\t\tNote: If you want to check if a point is inside the control, you can use Rect2(Vector2.ZERO, size).has_point(point).","returnType":"bool"},{"name":"_make_custom_tooltip","signature":"_make_custom_tooltip(for_text: String) -> Object","description":"Virtual method to be implemented by the user. Returns a  node that should be used as a tooltip instead of the default one. [param for_text] is the return value of [method get_tooltip].\n\t\t\t\tThe returned node must be of type  or Control-derived. It can have child nodes of any type. It is freed when the tooltip disappears, so make sure you always provide a new instance (if you want to use a pre-existing node from your scene tree, you can duplicate it and pass the duplicated instance). When null or a non-Control node is returned, the default tooltip will be used instead.\n\t\t\t\tThe returned node will be added as child to a , so you should only provide the contents of that panel. That  can be themed using [method Theme.set_stylebox] for the type \"TooltipPanel\" (see [member tooltip_text] for an example).\n\t\t\t\tNote: The tooltip is shrunk to minimal size. If you want to ensure it's fully visible, you might want to set its [member custom_minimum_size] to some non-zero value.\n\t\t\t\tNote: The node (and any relevant children) should have their [member CanvasItem.visible] set to true when returned, otherwise, the viewport that instantiates it will not be able to calculate its minimum size reliably.\n\t\t\t\tNote: If overridden, this method is called even if [method get_tooltip] returns an empty string. When this happens with the default tooltip, it is not displayed. To copy this behavior, return null in this method when [param for_text] is empty.\n\t\t\t\tExample: Use a constructed node as a tooltip:\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tfunc _make_custom_tooltip(for_text):\n\t\t\t\t    var label = Label.new()\n\t\t\t\t    label.text = for_text\n\t\t\t\t    return label\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tpublic override Control _MakeCustomTooltip(string forText)\n\t\t\t\t{\n\t\t\t\t    var label = new Label();\n\t\t\t\t    label.Text = forText;\n\t\t\t\t    return label;\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tExample: Usa a scene instance as a tooltip:\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tfunc _make_custom_tooltip(for_text):\n\t\t\t\t    var tooltip = preload(\"res://some_tooltip_scene.tscn\").instantiate()\n\t\t\t\t    tooltip.get_node(\"Label\").text = for_text\n\t\t\t\t    return tooltip\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tpublic override Control _MakeCustomTooltip(string forText)\n\t\t\t\t{\n\t\t\t\t    Node tooltip = ResourceLoader.Load&lt;PackedScene&gt;(\"res://some_tooltip_scene.tscn\").Instantiate();\n\t\t\t\t    tooltip.GetNode&lt;Label&gt;(\"Label\").Text = forText;\n\t\t\t\t    return tooltip;\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t","returnType":"Object"},{"name":"_structured_text_parser","signature":"_structured_text_parser(args: Array, text: String) -> Vector3i[]","description":"User defined BiDi algorithm override function.\n\t\t\t\tReturns an  of  text ranges and text base directions, in the left-to-right order. Ranges should cover full source [param text] without overlaps. BiDi algorithm will be used on each range separately.","returnType":"Vector3i[]"},{"name":"accept_event","signature":"accept_event() -> void","description":"Marks an input event as handled. Once you accept an input event, it stops propagating, even to nodes listening to [method Node._unhandled_input] or [method Node._unhandled_key_input].\n\t\t\t\tNote: This does not affect the methods in , only the way events are propagated.","returnType":"void"},{"name":"add_theme_color_override","signature":"add_theme_color_override(name: StringName, color: Color) -> void","description":"Creates a local override for a theme  with the specified [param name]. Local overrides always take precedence when fetching theme items for the control. An override can be removed with [method remove_theme_color_override].\n\t\t\t\tSee also [method get_theme_color].\n\t\t\t\tExample: Override a 's color and reset it later:\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t# Given the child Label node \"MyLabel\", override its font color with a custom value.\n\t\t\t\t$MyLabel.add_theme_color_override(\"font_color\", Color(1, 0.5, 0))\n\t\t\t\t# Reset the font color of the child label.\n\t\t\t\t$MyLabel.remove_theme_color_override(\"font_color\")\n\t\t\t\t# Alternatively it can be overridden with the default value from the Label type.\n\t\t\t\t$MyLabel.add_theme_color_override(\"font_color\", get_theme_color(\"font_color\", \"Label\"))\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t// Given the child Label node \"MyLabel\", override its font color with a custom value.\n\t\t\t\tGetNode&lt;Label&gt;(\"MyLabel\").AddThemeColorOverride(\"font_color\", new Color(1, 0.5f, 0));\n\t\t\t\t// Reset the font color of the child label.\n\t\t\t\tGetNode&lt;Label&gt;(\"MyLabel\").RemoveThemeColorOverride(\"font_color\");\n\t\t\t\t// Alternatively it can be overridden with the default value from the Label type.\n\t\t\t\tGetNode&lt;Label&gt;(\"MyLabel\").AddThemeColorOverride(\"font_color\", GetThemeColor(\"font_color\", \"Label\"));\n\t\t\t\t\n\t\t\t\t","returnType":"void"},{"name":"add_theme_constant_override","signature":"add_theme_constant_override(name: StringName, constant: int) -> void","description":"Creates a local override for a theme constant with the specified [param name]. Local overrides always take precedence when fetching theme items for the control. An override can be removed with [method remove_theme_constant_override].\n\t\t\t\tSee also [method get_theme_constant].","returnType":"void"},{"name":"add_theme_font_override","signature":"add_theme_font_override(name: StringName, font: Font) -> void","description":"Creates a local override for a theme  with the specified [param name]. Local overrides always take precedence when fetching theme items for the control. An override can be removed with [method remove_theme_font_override].\n\t\t\t\tSee also [method get_theme_font].","returnType":"void"},{"name":"add_theme_font_size_override","signature":"add_theme_font_size_override(name: StringName, font_size: int) -> void","description":"Creates a local override for a theme font size with the specified [param name]. Local overrides always take precedence when fetching theme items for the control. An override can be removed with [method remove_theme_font_size_override].\n\t\t\t\tSee also [method get_theme_font_size].","returnType":"void"},{"name":"add_theme_icon_override","signature":"add_theme_icon_override(name: StringName, texture: Texture2D) -> void","description":"Creates a local override for a theme icon with the specified [param name]. Local overrides always take precedence when fetching theme items for the control. An override can be removed with [method remove_theme_icon_override].\n\t\t\t\tSee also [method get_theme_icon].","returnType":"void"},{"name":"add_theme_stylebox_override","signature":"add_theme_stylebox_override(name: StringName, stylebox: StyleBox) -> void","description":"Creates a local override for a theme  with the specified [param name]. Local overrides always take precedence when fetching theme items for the control. An override can be removed with [method remove_theme_stylebox_override].\n\t\t\t\tSee also [method get_theme_stylebox].\n\t\t\t\tExample: Modify a property in a  by duplicating it:\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t# The snippet below assumes the child node \"MyButton\" has a StyleBoxFlat assigned.\n\t\t\t\t# Resources are shared across instances, so we need to duplicate it\n\t\t\t\t# to avoid modifying the appearance of all other buttons.\n\t\t\t\tvar new_stylebox_normal = $MyButton.get_theme_stylebox(\"normal\").duplicate()\n\t\t\t\tnew_stylebox_normal.border_width_top = 3\n\t\t\t\tnew_stylebox_normal.border_color = Color(0, 1, 0.5)\n\t\t\t\t$MyButton.add_theme_stylebox_override(\"normal\", new_stylebox_normal)\n\t\t\t\t# Remove the stylebox override.\n\t\t\t\t$MyButton.remove_theme_stylebox_override(\"normal\")\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t// The snippet below assumes the child node \"MyButton\" has a StyleBoxFlat assigned.\n\t\t\t\t// Resources are shared across instances, so we need to duplicate it\n\t\t\t\t// to avoid modifying the appearance of all other buttons.\n\t\t\t\tStyleBoxFlat newStyleboxNormal = GetNode&lt;Button&gt;(\"MyButton\").GetThemeStylebox(\"normal\").Duplicate() as StyleBoxFlat;\n\t\t\t\tnewStyleboxNormal.BorderWidthTop = 3;\n\t\t\t\tnewStyleboxNormal.BorderColor = new Color(0, 1, 0.5f);\n\t\t\t\tGetNode&lt;Button&gt;(\"MyButton\").AddThemeStyleboxOverride(\"normal\", newStyleboxNormal);\n\t\t\t\t// Remove the stylebox override.\n\t\t\t\tGetNode&lt;Button&gt;(\"MyButton\").RemoveThemeStyleboxOverride(\"normal\");\n\t\t\t\t\n\t\t\t\t","returnType":"void"},{"name":"begin_bulk_theme_override","signature":"begin_bulk_theme_override() -> void","description":"Prevents *_theme_*_override methods from emitting [constant NOTIFICATION_THEME_CHANGED] until [method end_bulk_theme_override] is called.","returnType":"void"},{"name":"end_bulk_theme_override","signature":"end_bulk_theme_override() -> void","description":"Ends a bulk theme override update. See [method begin_bulk_theme_override].","returnType":"void"},{"name":"find_next_valid_focus","signature":"find_next_valid_focus() -> Control","description":"Finds the next (below in the tree)  that can receive the focus.","returnType":"Control"},{"name":"find_prev_valid_focus","signature":"find_prev_valid_focus() -> Control","description":"Finds the previous (above in the tree)  that can receive the focus.","returnType":"Control"},{"name":"find_valid_focus_neighbor","signature":"find_valid_focus_neighbor(side: int) -> Control","description":"Finds the next  that can receive the focus on the specified [enum Side].\n\t\t\t\tNote: This is different from [method get_focus_neighbor], which returns the path of a specified focus neighbor.","returnType":"Control"},{"name":"force_drag","signature":"force_drag(data: Variant, preview: Control) -> void","description":"Forces drag and bypasses [method _get_drag_data] and [method set_drag_preview] by passing [param data] and [param preview]. Drag will start even if the mouse is neither over nor pressed on this control.\n\t\t\t\tThe methods [method _can_drop_data] and [method _drop_data] must be implemented on controls that want to receive drop data.","returnType":"void"},{"name":"get_anchor","signature":"get_anchor(side: int) -> float","description":"Returns the anchor for the specified [enum Side]. A getter method for [member anchor_bottom], [member anchor_left], [member anchor_right] and [member anchor_top].","returnType":"float"},{"name":"get_begin","signature":"get_begin() -> Vector2","description":"Returns [member offset_left] and [member offset_top]. See also [member position].","returnType":"Vector2"},{"name":"get_combined_minimum_size","signature":"get_combined_minimum_size() -> Vector2","description":"Returns combined minimum size from [member custom_minimum_size] and [method get_minimum_size].","returnType":"Vector2"},{"name":"get_cursor_shape","signature":"get_cursor_shape(position: Vector2) -> int","description":"Returns the mouse cursor shape the control displays on mouse hover. See [enum CursorShape].","returnType":"int"},{"name":"get_end","signature":"get_end() -> Vector2","description":"Returns [member offset_right] and [member offset_bottom].","returnType":"Vector2"},{"name":"get_focus_neighbor","signature":"get_focus_neighbor(side: int) -> NodePath","description":"Returns the focus neighbor for the specified [enum Side]. A getter method for [member focus_neighbor_bottom], [member focus_neighbor_left], [member focus_neighbor_right] and [member focus_neighbor_top].\n\t\t\t\tNote: To find the next  on the specific [enum Side], even if a neighbor is not assigned, use [method find_valid_focus_neighbor].","returnType":"NodePath"},{"name":"get_global_rect","signature":"get_global_rect() -> Rect2","description":"Returns the position and size of the control relative to the containing canvas. See [member global_position] and [member size].\n\t\t\t\tNote: If the node itself or any parent  between the node and the canvas have a non default rotation or skew, the resulting size is likely not meaningful.\n\t\t\t\tNote: Setting [member Viewport.gui_snap_controls_to_pixels] to true can lead to rounding inaccuracies between the displayed control and the returned .","returnType":"Rect2"},{"name":"get_minimum_size","signature":"get_minimum_size() -> Vector2","description":"Returns the minimum size for this control. See [member custom_minimum_size].","returnType":"Vector2"},{"name":"get_offset","signature":"get_offset(offset: int) -> float","description":"Returns the offset for the specified [enum Side]. A getter method for [member offset_bottom], [member offset_left], [member offset_right] and [member offset_top].","returnType":"float"},{"name":"get_parent_area_size","signature":"get_parent_area_size() -> Vector2","description":"Returns the width/height occupied in the parent control.","returnType":"Vector2"},{"name":"get_parent_control","signature":"get_parent_control() -> Control","description":"Returns the parent control node.","returnType":"Control"},{"name":"get_rect","signature":"get_rect() -> Rect2","description":"Returns the position and size of the control in the coordinate system of the containing node. See [member position], [member scale] and [member size].\n\t\t\t\tNote: If [member rotation] is not the default rotation, the resulting size is not meaningful.\n\t\t\t\tNote: Setting [member Viewport.gui_snap_controls_to_pixels] to true can lead to rounding inaccuracies between the displayed control and the returned .","returnType":"Rect2"},{"name":"get_screen_position","signature":"get_screen_position() -> Vector2","description":"Returns the position of this  in global screen coordinates (i.e. taking window position into account). Mostly useful for editor plugins.\n\t\t\t\tEquals to [member global_position] if the window is embedded (see [member Viewport.gui_embed_subwindows]).\n\t\t\t\tExample: Show a popup at the mouse position:\n\t\t\t\t\n\t\t\t\tpopup_menu.position = get_screen_position() + get_local_mouse_position()\n\t\t\t\tpopup_menu.reset_size()\n\t\t\t\tpopup_menu.popup()\n\t\t\t\t","returnType":"Vector2"},{"name":"get_theme_color","signature":"get_theme_color(name: StringName, theme_type: StringName) -> Color","description":"Returns a  from the first matching  in the tree if that  has a color item with the specified [param name] and [param theme_type]. If [param theme_type] is omitted the class name of the current control is used as the type, or [member theme_type_variation] if it is defined. If the type is a class name its parent classes are also checked, in order of inheritance. If the type is a variation its base types are checked, in order of dependency, then the control's class name and its parent classes are checked.\n\t\t\t\tFor the current control its local overrides are considered first (see [method add_theme_color_override]), then its assigned [member theme]. After the current control, each parent control and its assigned [member theme] are considered; controls without a [member theme] assigned are skipped. If no matching  is found in the tree, the custom project  (see [member ProjectSettings.gui/theme/custom]) and the default  are used (see ).\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tfunc _ready():\n\t\t\t\t    # Get the font color defined for the current Control's class, if it exists.\n\t\t\t\t    modulate = get_theme_color(\"font_color\")\n\t\t\t\t    # Get the font color defined for the Button class.\n\t\t\t\t    modulate = get_theme_color(\"font_color\", \"Button\")\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tpublic override void _Ready()\n\t\t\t\t{\n\t\t\t\t    // Get the font color defined for the current Control's class, if it exists.\n\t\t\t\t    Modulate = GetThemeColor(\"font_color\");\n\t\t\t\t    // Get the font color defined for the Button class.\n\t\t\t\t    Modulate = GetThemeColor(\"font_color\", \"Button\");\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t","returnType":"Color"},{"name":"get_theme_constant","signature":"get_theme_constant(name: StringName, theme_type: StringName) -> int","description":"Returns a constant from the first matching  in the tree if that  has a constant item with the specified [param name] and [param theme_type].\n\t\t\t\tSee [method get_theme_color] for details.","returnType":"int"},{"name":"get_theme_default_base_scale","signature":"get_theme_default_base_scale() -> float","description":"Returns the default base scale value from the first matching  in the tree if that  has a valid [member Theme.default_base_scale] value.\n\t\t\t\tSee [method get_theme_color] for details.","returnType":"float"},{"name":"get_theme_default_font","signature":"get_theme_default_font() -> Font","description":"Returns the default font from the first matching  in the tree if that  has a valid [member Theme.default_font] value.\n\t\t\t\tSee [method get_theme_color] for details.","returnType":"Font"},{"name":"get_theme_default_font_size","signature":"get_theme_default_font_size() -> int","description":"Returns the default font size value from the first matching  in the tree if that  has a valid [member Theme.default_font_size] value.\n\t\t\t\tSee [method get_theme_color] for details.","returnType":"int"},{"name":"get_theme_font","signature":"get_theme_font(name: StringName, theme_type: StringName) -> Font","description":"Returns a  from the first matching  in the tree if that  has a font item with the specified [param name] and [param theme_type].\n\t\t\t\tSee [method get_theme_color] for details.","returnType":"Font"},{"name":"get_theme_font_size","signature":"get_theme_font_size(name: StringName, theme_type: StringName) -> int","description":"Returns a font size from the first matching  in the tree if that  has a font size item with the specified [param name] and [param theme_type].\n\t\t\t\tSee [method get_theme_color] for details.","returnType":"int"},{"name":"get_theme_icon","signature":"get_theme_icon(name: StringName, theme_type: StringName) -> Texture2D","description":"Returns an icon from the first matching  in the tree if that  has an icon item with the specified [param name] and [param theme_type].\n\t\t\t\tSee [method get_theme_color] for details.","returnType":"Texture2D"},{"name":"get_theme_stylebox","signature":"get_theme_stylebox(name: StringName, theme_type: StringName) -> StyleBox","description":"Returns a  from the first matching  in the tree if that  has a stylebox item with the specified [param name] and [param theme_type].\n\t\t\t\tSee [method get_theme_color] for details.","returnType":"StyleBox"},{"name":"get_tooltip","signature":"get_tooltip(at_position: Vector2) -> String","description":"Returns the tooltip text for the position [param at_position] in control's local coordinates, which will typically appear when the cursor is resting over this control. By default, it returns [member tooltip_text].\n\t\t\t\tThis method can be overridden to customize its behavior. See [method _get_tooltip].\n\t\t\t\tNote: If this method returns an empty  and [method _make_custom_tooltip] is not overridden, no tooltip is displayed.","returnType":"String"},{"name":"grab_click_focus","signature":"grab_click_focus() -> void","description":"Creates an  that attempts to click the control. If the event is received, the control gains focus.\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tfunc _process(delta):\n\t\t\t\t    grab_click_focus() # When clicking another Control node, this node will be clicked instead.\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tpublic override void _Process(double delta)\n\t\t\t\t{\n\t\t\t\t    GrabClickFocus(); // When clicking another Control node, this node will be clicked instead.\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t","returnType":"void"},{"name":"grab_focus","signature":"grab_focus() -> void","description":"Steal the focus from another control and become the focused control (see [member focus_mode]).\n\t\t\t\tNote: Using this method together with [method Callable.call_deferred] makes it more reliable, especially when called inside [method Node._ready].","returnType":"void"},{"name":"has_focus","signature":"has_focus() -> bool","description":"Returns true if this is the current focused control. See [member focus_mode].","returnType":"bool"},{"name":"has_theme_color","signature":"has_theme_color(name: StringName, theme_type: StringName) -> bool","description":"Returns true if there is a matching  in the tree that has a color item with the specified [param name] and [param theme_type].\n\t\t\t\tSee [method get_theme_color] for details.","returnType":"bool"},{"name":"has_theme_color_override","signature":"has_theme_color_override(name: StringName) -> bool","description":"Returns true if there is a local override for a theme  with the specified [param name] in this  node.\n\t\t\t\tSee [method add_theme_color_override].","returnType":"bool"},{"name":"has_theme_constant","signature":"has_theme_constant(name: StringName, theme_type: StringName) -> bool","description":"Returns true if there is a matching  in the tree that has a constant item with the specified [param name] and [param theme_type].\n\t\t\t\tSee [method get_theme_color] for details.","returnType":"bool"},{"name":"has_theme_constant_override","signature":"has_theme_constant_override(name: StringName) -> bool","description":"Returns true if there is a local override for a theme constant with the specified [param name] in this  node.\n\t\t\t\tSee [method add_theme_constant_override].","returnType":"bool"},{"name":"has_theme_font","signature":"has_theme_font(name: StringName, theme_type: StringName) -> bool","description":"Returns true if there is a matching  in the tree that has a font item with the specified [param name] and [param theme_type].\n\t\t\t\tSee [method get_theme_color] for details.","returnType":"bool"},{"name":"has_theme_font_override","signature":"has_theme_font_override(name: StringName) -> bool","description":"Returns true if there is a local override for a theme  with the specified [param name] in this  node.\n\t\t\t\tSee [method add_theme_font_override].","returnType":"bool"},{"name":"has_theme_font_size","signature":"has_theme_font_size(name: StringName, theme_type: StringName) -> bool","description":"Returns true if there is a matching  in the tree that has a font size item with the specified [param name] and [param theme_type].\n\t\t\t\tSee [method get_theme_color] for details.","returnType":"bool"},{"name":"has_theme_font_size_override","signature":"has_theme_font_size_override(name: StringName) -> bool","description":"Returns true if there is a local override for a theme font size with the specified [param name] in this  node.\n\t\t\t\tSee [method add_theme_font_size_override].","returnType":"bool"},{"name":"has_theme_icon","signature":"has_theme_icon(name: StringName, theme_type: StringName) -> bool","description":"Returns true if there is a matching  in the tree that has an icon item with the specified [param name] and [param theme_type].\n\t\t\t\tSee [method get_theme_color] for details.","returnType":"bool"},{"name":"has_theme_icon_override","signature":"has_theme_icon_override(name: StringName) -> bool","description":"Returns true if there is a local override for a theme icon with the specified [param name] in this  node.\n\t\t\t\tSee [method add_theme_icon_override].","returnType":"bool"},{"name":"has_theme_stylebox","signature":"has_theme_stylebox(name: StringName, theme_type: StringName) -> bool","description":"Returns true if there is a matching  in the tree that has a stylebox item with the specified [param name] and [param theme_type].\n\t\t\t\tSee [method get_theme_color] for details.","returnType":"bool"},{"name":"has_theme_stylebox_override","signature":"has_theme_stylebox_override(name: StringName) -> bool","description":"Returns true if there is a local override for a theme  with the specified [param name] in this  node.\n\t\t\t\tSee [method add_theme_stylebox_override].","returnType":"bool"},{"name":"is_drag_successful","signature":"is_drag_successful() -> bool","description":"Returns true if a drag operation is successful. Alternative to [method Viewport.gui_is_drag_successful].\n\t\t\t\tBest used with [constant Node.NOTIFICATION_DRAG_END].","returnType":"bool"},{"name":"is_layout_rtl","signature":"is_layout_rtl() -> bool","description":"Returns true if layout is right-to-left. See also [member layout_direction].","returnType":"bool"},{"name":"release_focus","signature":"release_focus() -> void","description":"Give up the focus. No other control will be able to receive input.","returnType":"void"},{"name":"remove_theme_color_override","signature":"remove_theme_color_override(name: StringName) -> void","description":"Removes a local override for a theme  with the specified [param name] previously added by [method add_theme_color_override] or via the Inspector dock.","returnType":"void"},{"name":"remove_theme_constant_override","signature":"remove_theme_constant_override(name: StringName) -> void","description":"Removes a local override for a theme constant with the specified [param name] previously added by [method add_theme_constant_override] or via the Inspector dock.","returnType":"void"},{"name":"remove_theme_font_override","signature":"remove_theme_font_override(name: StringName) -> void","description":"Removes a local override for a theme  with the specified [param name] previously added by [method add_theme_font_override] or via the Inspector dock.","returnType":"void"},{"name":"remove_theme_font_size_override","signature":"remove_theme_font_size_override(name: StringName) -> void","description":"Removes a local override for a theme font size with the specified [param name] previously added by [method add_theme_font_size_override] or via the Inspector dock.","returnType":"void"},{"name":"remove_theme_icon_override","signature":"remove_theme_icon_override(name: StringName) -> void","description":"Removes a local override for a theme icon with the specified [param name] previously added by [method add_theme_icon_override] or via the Inspector dock.","returnType":"void"},{"name":"remove_theme_stylebox_override","signature":"remove_theme_stylebox_override(name: StringName) -> void","description":"Removes a local override for a theme  with the specified [param name] previously added by [method add_theme_stylebox_override] or via the Inspector dock.","returnType":"void"},{"name":"reset_size","signature":"reset_size() -> void","description":"Resets the size to [method get_combined_minimum_size]. This is equivalent to calling set_size(Vector2()) (or any size below the minimum).","returnType":"void"},{"name":"set_anchor","signature":"set_anchor(side: int, anchor: float, keep_offset: bool, push_opposite_anchor: bool) -> void","description":"Sets the anchor for the specified [enum Side] to [param anchor]. A setter method for [member anchor_bottom], [member anchor_left], [member anchor_right] and [member anchor_top].\n\t\t\t\tIf [param keep_offset] is true, offsets aren't updated after this operation.\n\t\t\t\tIf [param push_opposite_anchor] is true and the opposite anchor overlaps this anchor, the opposite one will have its value overridden. For example, when setting left anchor to 1 and the right anchor has value of 0.5, the right anchor will also get value of 1. If [param push_opposite_anchor] was false, the left anchor would get value 0.5.","returnType":"void"},{"name":"set_anchor_and_offset","signature":"set_anchor_and_offset(side: int, anchor: float, offset: float, push_opposite_anchor: bool) -> void","description":"Works the same as [method set_anchor], but instead of keep_offset argument and automatic update of offset, it allows to set the offset yourself (see [method set_offset]).","returnType":"void"},{"name":"set_anchors_and_offsets_preset","signature":"set_anchors_and_offsets_preset(preset: int, resize_mode: int, margin: int) -> void","description":"Sets both anchor preset and offset preset. See [method set_anchors_preset] and [method set_offsets_preset].","returnType":"void"},{"name":"set_anchors_preset","signature":"set_anchors_preset(preset: int, keep_offsets: bool) -> void","description":"Sets the anchors to a [param preset] from [enum Control.LayoutPreset] enum. This is the code equivalent to using the Layout menu in the 2D editor.\n\t\t\t\tIf [param keep_offsets] is true, control's position will also be updated.","returnType":"void"},{"name":"set_begin","signature":"set_begin(position: Vector2) -> void","description":"Sets [member offset_left] and [member offset_top] at the same time. Equivalent of changing [member position].","returnType":"void"},{"name":"set_drag_forwarding","signature":"set_drag_forwarding(drag_func: Callable, can_drop_func: Callable, drop_func: Callable) -> void","description":"Sets the given callables to be used instead of the control's own drag-and-drop virtual methods. If a callable is empty, its respective virtual method is used as normal.\n\t\t\t\tThe arguments for each callable should be exactly the same as their respective virtual methods, which would be:\n\t\t\t\t- [param drag_func] corresponds to [method _get_drag_data] and requires a ;\n\t\t\t\t- [param can_drop_func] corresponds to [method _can_drop_data] and requires both a  and a ;\n\t\t\t\t- [param drop_func] corresponds to [method _drop_data] and requires both a  and a .","returnType":"void"},{"name":"set_drag_preview","signature":"set_drag_preview(control: Control) -> void","description":"Shows the given control at the mouse pointer. A good time to call this method is in [method _get_drag_data]. The control must not be in the scene tree. You should not free the control, and you should not keep a reference to the control beyond the duration of the drag. It will be deleted automatically after the drag has ended.\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t@export var color = Color(1, 0, 0, 1)\n\n\t\t\t\tfunc _get_drag_data(position):\n\t\t\t\t    # Use a control that is not in the tree\n\t\t\t\t    var cpb = ColorPickerButton.new()\n\t\t\t\t    cpb.color = color\n\t\t\t\t    cpb.size = Vector2(50, 50)\n\t\t\t\t    set_drag_preview(cpb)\n\t\t\t\t    return color\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tprivate Color _color = new Color(1, 0, 0, 1);\n\n\t\t\t\tpublic override Variant _GetDragData(Vector2 atPosition)\n\t\t\t\t{\n\t\t\t\t    // Use a control that is not in the tree\n\t\t\t\t    var cpb = new ColorPickerButton();\n\t\t\t\t    cpb.Color = _color;\n\t\t\t\t    cpb.Size = new Vector2(50, 50);\n\t\t\t\t    SetDragPreview(cpb);\n\t\t\t\t    return _color;\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t","returnType":"void"},{"name":"set_end","signature":"set_end(position: Vector2) -> void","description":"Sets [member offset_right] and [member offset_bottom] at the same time.","returnType":"void"},{"name":"set_focus_neighbor","signature":"set_focus_neighbor(side: int, neighbor: NodePath) -> void","description":"Sets the focus neighbor for the specified [enum Side] to the  at [param neighbor] node path. A setter method for [member focus_neighbor_bottom], [member focus_neighbor_left], [member focus_neighbor_right] and [member focus_neighbor_top].","returnType":"void"},{"name":"set_global_position","signature":"set_global_position(position: Vector2, keep_offsets: bool) -> void","description":"Sets the [member global_position] to given [param position].\n\t\t\t\tIf [param keep_offsets] is true, control's anchors will be updated instead of offsets.","returnType":"void"},{"name":"set_offset","signature":"set_offset(side: int, offset: float) -> void","description":"Sets the offset for the specified [enum Side] to [param offset]. A setter method for [member offset_bottom], [member offset_left], [member offset_right] and [member offset_top].","returnType":"void"},{"name":"set_offsets_preset","signature":"set_offsets_preset(preset: int, resize_mode: int, margin: int) -> void","description":"Sets the offsets to a [param preset] from [enum Control.LayoutPreset] enum. This is the code equivalent to using the Layout menu in the 2D editor.\n\t\t\t\tUse parameter [param resize_mode] with constants from [enum Control.LayoutPresetMode] to better determine the resulting size of the . Constant size will be ignored if used with presets that change size, e.g. [constant PRESET_LEFT_WIDE].\n\t\t\t\tUse parameter [param margin] to determine the gap between the  and the edges.","returnType":"void"},{"name":"set_position","signature":"set_position(position: Vector2, keep_offsets: bool) -> void","description":"Sets the [member position] to given [param position].\n\t\t\t\tIf [param keep_offsets] is true, control's anchors will be updated instead of offsets.","returnType":"void"},{"name":"set_size","signature":"set_size(size: Vector2, keep_offsets: bool) -> void","description":"Sets the size (see [member size]).\n\t\t\t\tIf [param keep_offsets] is true, control's anchors will be updated instead of offsets.","returnType":"void"},{"name":"update_minimum_size","signature":"update_minimum_size() -> void","description":"Invalidates the size cache in this node and in parent nodes up to top level. Intended to be used with [method get_minimum_size] when the return value is changed. Setting [member custom_minimum_size] directly calls this method automatically.","returnType":"void"},{"name":"warp_mouse","signature":"warp_mouse(position: Vector2) -> void","description":"Moves the mouse cursor to [param position], relative to [member position] of this .\n\t\t\t\tNote: [method warp_mouse] is only supported on Windows, macOS and Linux. It has no effect on Android, iOS and Web.","returnType":"void"}],"signals":[{"name":"focus_entered","description":"Emitted when the node gains focus."},{"name":"focus_exited","description":"Emitted when the node loses focus."},{"name":"gui_input","description":"Emitted when the node receives an [InputEvent]."},{"name":"minimum_size_changed","description":"Emitted when the node's minimum size changes."},{"name":"mouse_entered","description":"Emitted when the mouse cursor enters the control's (or any child control's) visible area, that is not occluded behind other Controls or Windows, provided its [member mouse_filter] lets the event reach it and regardless if it's currently focused or not.\n\t\t\t\t[b]Note:[/b] [member CanvasItem.z_index] doesn't affect, which Control receives the signal."},{"name":"mouse_exited","description":"Emitted when the mouse cursor leaves the control's (and all child control's) visible area, that is not occluded behind other Controls or Windows, provided its [member mouse_filter] lets the event reach it and regardless if it's currently focused or not.\n\t\t\t\t[b]Note:[/b] [member CanvasItem.z_index] doesn't affect, which Control receives the signal.\n\t\t\t\t[b]Note:[/b] If you want to check whether the mouse truly left the area, ignoring any top nodes, you can use code like this:\n\t\t\t\t[codeblock]\n\t\t\t\tfunc _on_mouse_exited():\n\t\t\t\t    if not Rect2(Vector2(), size).has_point(get_local_mouse_position()):\n\t\t\t\t        # Not hovering over area.\n\t\t\t\t[/codeblock]"},{"name":"resized","description":"Emitted when the control changes size."},{"name":"size_flags_changed","description":"Emitted when one of the size flags changes. See [member size_flags_horizontal] and [member size_flags_vertical]."},{"name":"theme_changed","description":"Emitted when the [constant NOTIFICATION_THEME_CHANGED] notification is sent."}]},"ConvexPolygonShape2D":{"name":"ConvexPolygonShape2D","description":"A 2D convex polygon shape used for physics collision.","inherits":"Shape2D","properties":[{"name":"points","type":"PackedVector2Array","description":"The polygon's list of vertices that form a convex hull. Can be in either clockwise or counterclockwise order.\n\t\t\t[b]Warning:[/b] Only set this property to a list of points that actually form a convex hull. Use [method set_point_cloud] to generate the convex hull of an arbitrary set of points."}],"methods":[{"name":"set_point_cloud","signature":"set_point_cloud(point_cloud: PackedVector2Array) -> void","description":"Based on the set of points provided, this assigns the [member points] property using the convex hull algorithm, removing all unneeded points. See [method Geometry2D.convex_hull] for details.","returnType":"void"}],"signals":[]},"ConvexPolygonShape3D":{"name":"ConvexPolygonShape3D","description":"A 3D convex polyhedron shape used for physics collision.","inherits":"Shape3D","properties":[{"name":"points","type":"PackedVector3Array","description":"The list of 3D points forming the convex polygon shape."}],"methods":[],"signals":[]},"Crypto":{"name":"Crypto","description":"Provides access to advanced cryptographic functionalities.","inherits":"RefCounted","properties":[],"methods":[{"name":"constant_time_compare","signature":"constant_time_compare(trusted: PackedByteArray, received: PackedByteArray) -> bool","description":"Compares two s for equality without leaking timing information in order to prevent timing attacks.\n\t\t\t\tSee [url=https://paragonie.com/blog/2015/11/preventing-timing-attacks-on-string-comparison-with-double-hmac-strategy]this blog post for more information.","returnType":"bool"},{"name":"decrypt","signature":"decrypt(key: CryptoKey, ciphertext: PackedByteArray) -> PackedByteArray","description":"Decrypt the given [param ciphertext] with the provided private [param key].\n\t\t\t\tNote: The maximum size of accepted ciphertext is limited by the key size.","returnType":"PackedByteArray"},{"name":"encrypt","signature":"encrypt(key: CryptoKey, plaintext: PackedByteArray) -> PackedByteArray","description":"Encrypt the given [param plaintext] with the provided public [param key].\n\t\t\t\tNote: The maximum size of accepted plaintext is limited by the key size.","returnType":"PackedByteArray"},{"name":"generate_random_bytes","signature":"generate_random_bytes(size: int) -> PackedByteArray","description":"Generates a  of cryptographically secure random bytes with given [param size].","returnType":"PackedByteArray"},{"name":"generate_rsa","signature":"generate_rsa(size: int) -> CryptoKey","description":"Generates an RSA  that can be used for creating self-signed certificates and passed to [method StreamPeerTLS.accept_stream].","returnType":"CryptoKey"},{"name":"generate_self_signed_certificate","signature":"generate_self_signed_certificate(key: CryptoKey, issuer_name: String, not_before: String, not_after: String) -> X509Certificate","description":"Generates a self-signed  from the given  and [param issuer_name]. The certificate validity will be defined by [param not_before] and [param not_after] (first valid date and last valid date). The [param issuer_name] must contain at least \"CN=\" (common name, i.e. the domain name), \"O=\" (organization, i.e. your company name), \"C=\" (country, i.e. 2 lettered ISO-3166 code of the country the organization is based in).\n\t\t\t\tA small example to generate an RSA key and an X509 self-signed certificate.\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tvar crypto = Crypto.new()\n\t\t\t\t# Generate 4096 bits RSA key.\n\t\t\t\tvar key = crypto.generate_rsa(4096)\n\t\t\t\t# Generate self-signed certificate using the given key.\n\t\t\t\tvar cert = crypto.generate_self_signed_certificate(key, \"CN=example.com,O=A Game Company,C=IT\")\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tvar crypto = new Crypto();\n\t\t\t\t// Generate 4096 bits RSA key.\n\t\t\t\tCryptoKey key = crypto.GenerateRsa(4096);\n\t\t\t\t// Generate self-signed certificate using the given key.\n\t\t\t\tX509Certificate cert = crypto.GenerateSelfSignedCertificate(key, \"CN=mydomain.com,O=My Game Company,C=IT\");\n\t\t\t\t\n\t\t\t\t","returnType":"X509Certificate"},{"name":"hmac_digest","signature":"hmac_digest(hash_type: int, key: PackedByteArray, msg: PackedByteArray) -> PackedByteArray","description":"Generates an [url=https://en.wikipedia.org/wiki/HMAC]HMAC digest of [param msg] using [param key]. The [param hash_type] parameter is the hashing algorithm that is used for the inner and outer hashes.\n\t\t\t\tCurrently, only [constant HashingContext.HASH_SHA256] and [constant HashingContext.HASH_SHA1] are supported.","returnType":"PackedByteArray"},{"name":"sign","signature":"sign(hash_type: int, hash: PackedByteArray, key: CryptoKey) -> PackedByteArray","description":"Sign a given [param hash] of type [param hash_type] with the provided private [param key].","returnType":"PackedByteArray"},{"name":"verify","signature":"verify(hash_type: int, hash: PackedByteArray, signature: PackedByteArray, key: CryptoKey) -> bool","description":"Verify that a given [param signature] for [param hash] of type [param hash_type] against the provided public [param key].","returnType":"bool"}],"signals":[]},"CryptoKey":{"name":"CryptoKey","description":"A cryptographic key (RSA or elliptic-curve).","inherits":"Resource","properties":[],"methods":[{"name":"is_public_only","signature":"is_public_only() -> bool","description":"Returns true if this CryptoKey only has the public part, and not the private one.","returnType":"bool"},{"name":"load","signature":"load(path: String, public_only: bool) -> int","description":"Loads a key from [param path]. If [param public_only] is true, only the public key will be loaded.\n\t\t\t\tNote: [param path] should be a \"*.pub\" file if [param public_only] is true, a \"*.key\" file otherwise.","returnType":"int"},{"name":"load_from_string","signature":"load_from_string(string_key: String, public_only: bool) -> int","description":"Loads a key from the given [param string_key]. If [param public_only] is true, only the public key will be loaded.","returnType":"int"},{"name":"save","signature":"save(path: String, public_only: bool) -> int","description":"Saves a key to the given [param path]. If [param public_only] is true, only the public key will be saved.\n\t\t\t\tNote: [param path] should be a \"*.pub\" file if [param public_only] is true, a \"*.key\" file otherwise.","returnType":"int"},{"name":"save_to_string","signature":"save_to_string(public_only: bool) -> String","description":"Returns a string containing the key in PEM format. If [param public_only] is true, only the public key will be included.","returnType":"String"}],"signals":[]},"Cubemap":{"name":"Cubemap","description":"Six square textures representing the faces of a cube. Commonly used as a skybox.","inherits":"ImageTextureLayered","properties":[],"methods":[{"name":"create_placeholder","signature":"create_placeholder() -> Resource","description":"Creates a placeholder version of this resource ().","returnType":"Resource"}],"signals":[]},"CubemapArray":{"name":"CubemapArray","description":"An array of s, stored together and with a single reference.","inherits":"ImageTextureLayered","properties":[],"methods":[{"name":"create_placeholder","signature":"create_placeholder() -> Resource","description":"Creates a placeholder version of this resource ().","returnType":"Resource"}],"signals":[]},"Curve":{"name":"Curve","description":"A mathematical curve.","inherits":"Resource","properties":[{"name":"bake_resolution","type":"int","description":"The number of points to include in the baked (i.e. cached) curve data."},{"name":"max_domain","type":"float","description":"The maximum domain (x-coordinate) that points can have."},{"name":"max_value","type":"float","description":"The maximum value (y-coordinate) that points can have. Tangents can cause higher values between points."},{"name":"min_domain","type":"float","description":"The minimum domain (x-coordinate) that points can have."},{"name":"min_value","type":"float","description":"The minimum value (y-coordinate) that points can have. Tangents can cause lower values between points."},{"name":"point_count","type":"int","description":"The number of points describing the curve."}],"methods":[{"name":"add_point","signature":"add_point(position: Vector2, left_tangent: float, right_tangent: float, left_mode: int, right_mode: int) -> int","description":"Adds a point to the curve. For each side, if the *_mode is [constant TANGENT_LINEAR], the *_tangent angle (in degrees) uses the slope of the curve halfway to the adjacent point. Allows custom assignments to the *_tangent angle if *_mode is set to [constant TANGENT_FREE].","returnType":"int"},{"name":"bake","signature":"bake() -> void","description":"Recomputes the baked cache of points for the curve.","returnType":"void"},{"name":"clean_dupes","signature":"clean_dupes() -> void","description":"Removes duplicate points, i.e. points that are less than 0.00001 units (engine epsilon value) away from their neighbor on the curve.","returnType":"void"},{"name":"clear_points","signature":"clear_points() -> void","description":"Removes all points from the curve.","returnType":"void"},{"name":"get_domain_range","signature":"get_domain_range() -> float","description":"Returns the difference between [member min_domain] and [member max_domain].","returnType":"float"},{"name":"get_point_left_mode","signature":"get_point_left_mode(index: int) -> int","description":"Returns the left [enum TangentMode] for the point at [param index].","returnType":"int"},{"name":"get_point_left_tangent","signature":"get_point_left_tangent(index: int) -> float","description":"Returns the left tangent angle (in degrees) for the point at [param index].","returnType":"float"},{"name":"get_point_position","signature":"get_point_position(index: int) -> Vector2","description":"Returns the curve coordinates for the point at [param index].","returnType":"Vector2"},{"name":"get_point_right_mode","signature":"get_point_right_mode(index: int) -> int","description":"Returns the right [enum TangentMode] for the point at [param index].","returnType":"int"},{"name":"get_point_right_tangent","signature":"get_point_right_tangent(index: int) -> float","description":"Returns the right tangent angle (in degrees) for the point at [param index].","returnType":"float"},{"name":"get_value_range","signature":"get_value_range() -> float","description":"Returns the difference between [member min_value] and [member max_value].","returnType":"float"},{"name":"remove_point","signature":"remove_point(index: int) -> void","description":"Removes the point at [param index] from the curve.","returnType":"void"},{"name":"sample","signature":"sample(offset: float) -> float","description":"Returns the Y value for the point that would exist at the X position [param offset] along the curve.","returnType":"float"},{"name":"sample_baked","signature":"sample_baked(offset: float) -> float","description":"Returns the Y value for the point that would exist at the X position [param offset] along the curve using the baked cache. Bakes the curve's points if not already baked.","returnType":"float"},{"name":"set_point_left_mode","signature":"set_point_left_mode(index: int, mode: int) -> void","description":"Sets the left [enum TangentMode] for the point at [param index] to [param mode].","returnType":"void"},{"name":"set_point_left_tangent","signature":"set_point_left_tangent(index: int, tangent: float) -> void","description":"Sets the left tangent angle for the point at [param index] to [param tangent].","returnType":"void"},{"name":"set_point_offset","signature":"set_point_offset(index: int, offset: float) -> int","description":"Sets the offset from 0.5.","returnType":"int"},{"name":"set_point_right_mode","signature":"set_point_right_mode(index: int, mode: int) -> void","description":"Sets the right [enum TangentMode] for the point at [param index] to [param mode].","returnType":"void"},{"name":"set_point_right_tangent","signature":"set_point_right_tangent(index: int, tangent: float) -> void","description":"Sets the right tangent angle for the point at [param index] to [param tangent].","returnType":"void"},{"name":"set_point_value","signature":"set_point_value(index: int, y: float) -> void","description":"Assigns the vertical position [param y] to the point at [param index].","returnType":"void"}],"signals":[{"name":"domain_changed","description":"Emitted when [member max_domain] or [member min_domain] is changed."},{"name":"range_changed","description":"Emitted when [member max_value] or [member min_value] is changed."}]},"Curve2D":{"name":"Curve2D","description":"Describes a Bézier curve in 2D space.","inherits":"Resource","properties":[{"name":"bake_interval","type":"float","description":"The distance in pixels between two adjacent cached points. Changing it forces the cache to be recomputed the next time the [method get_baked_points] or [method get_baked_length] function is called. The smaller the distance, the more points in the cache and the more memory it will consume, so use with care."},{"name":"point_count","type":"int","description":"The number of points describing the curve."}],"methods":[{"name":"add_point","signature":"add_point(position: Vector2, in: Vector2, out: Vector2, index: int) -> void","description":"Adds a point with the specified [param position] relative to the curve's own position, with control points [param in] and [param out]. Appends the new point at the end of the point list.\n\t\t\t\tIf [param index] is given, the new point is inserted before the existing point identified by index [param index]. Every existing point starting from [param index] is shifted further down the list of points. The index must be greater than or equal to 0 and must not exceed the number of existing points in the line. See [member point_count].","returnType":"void"},{"name":"clear_points","signature":"clear_points() -> void","description":"Removes all points from the curve.","returnType":"void"},{"name":"get_baked_length","signature":"get_baked_length() -> float","description":"Returns the total length of the curve, based on the cached points. Given enough density (see [member bake_interval]), it should be approximate enough.","returnType":"float"},{"name":"get_baked_points","signature":"get_baked_points() -> PackedVector2Array","description":"Returns the cache of points as a .","returnType":"PackedVector2Array"},{"name":"get_closest_offset","signature":"get_closest_offset(to_point: Vector2) -> float","description":"Returns the closest offset to [param to_point]. This offset is meant to be used in [method sample_baked].\n\t\t\t\t[param to_point] must be in this curve's local space.","returnType":"float"},{"name":"get_closest_point","signature":"get_closest_point(to_point: Vector2) -> Vector2","description":"Returns the closest point on baked segments (in curve's local space) to [param to_point].\n\t\t\t\t[param to_point] must be in this curve's local space.","returnType":"Vector2"},{"name":"get_point_in","signature":"get_point_in(idx: int) -> Vector2","description":"Returns the position of the control point leading to the vertex [param idx]. The returned position is relative to the vertex [param idx]. If the index is out of bounds, the function sends an error to the console, and returns (0, 0).","returnType":"Vector2"},{"name":"get_point_out","signature":"get_point_out(idx: int) -> Vector2","description":"Returns the position of the control point leading out of the vertex [param idx]. The returned position is relative to the vertex [param idx]. If the index is out of bounds, the function sends an error to the console, and returns (0, 0).","returnType":"Vector2"},{"name":"get_point_position","signature":"get_point_position(idx: int) -> Vector2","description":"Returns the position of the vertex [param idx]. If the index is out of bounds, the function sends an error to the console, and returns (0, 0).","returnType":"Vector2"},{"name":"remove_point","signature":"remove_point(idx: int) -> void","description":"Deletes the point [param idx] from the curve. Sends an error to the console if [param idx] is out of bounds.","returnType":"void"},{"name":"sample","signature":"sample(idx: int, t: float) -> Vector2","description":"Returns the position between the vertex [param idx] and the vertex idx + 1, where [param t] controls if the point is the first vertex (t = 0.0), the last vertex (t = 1.0), or in between. Values of [param t] outside the range (0.0 &lt;= t &lt;= 1.0) give strange, but predictable results.\n\t\t\t\tIf [param idx] is out of bounds it is truncated to the first or last vertex, and [param t] is ignored. If the curve has no points, the function sends an error to the console, and returns (0, 0).","returnType":"Vector2"},{"name":"sample_baked","signature":"sample_baked(offset: float, cubic: bool) -> Vector2","description":"Returns a point within the curve at position [param offset], where [param offset] is measured as a pixel distance along the curve.\n\t\t\t\tTo do that, it finds the two cached points where the [param offset] lies between, then interpolates the values. This interpolation is cubic if [param cubic] is set to true, or linear if set to false.\n\t\t\t\tCubic interpolation tends to follow the curves better, but linear is faster (and often, precise enough).","returnType":"Vector2"},{"name":"sample_baked_with_rotation","signature":"sample_baked_with_rotation(offset: float, cubic: bool) -> Transform2D","description":"Similar to [method sample_baked], but returns  that includes a rotation along the curve, with [member Transform2D.origin] as the point position and the [member Transform2D.x] vector pointing in the direction of the path at that point. Returns an empty transform if the length of the curve is 0.\n\t\t\t\t\n\t\t\t\tvar baked = curve.sample_baked_with_rotation(offset)\n\t\t\t\t# The returned Transform2D can be set directly.\n\t\t\t\ttransform = baked\n\t\t\t\t# You can also read the origin and rotation separately from the returned Transform2D.\n\t\t\t\tposition = baked.get_origin()\n\t\t\t\trotation = baked.get_rotation()\n\t\t\t\t","returnType":"Transform2D"},{"name":"samplef","signature":"samplef(fofs: float) -> Vector2","description":"Returns the position at the vertex [param fofs]. It calls [method sample] using the integer part of [param fofs] as idx, and its fractional part as t.","returnType":"Vector2"},{"name":"set_point_in","signature":"set_point_in(idx: int, position: Vector2) -> void","description":"Sets the position of the control point leading to the vertex [param idx]. If the index is out of bounds, the function sends an error to the console. The position is relative to the vertex.","returnType":"void"},{"name":"set_point_out","signature":"set_point_out(idx: int, position: Vector2) -> void","description":"Sets the position of the control point leading out of the vertex [param idx]. If the index is out of bounds, the function sends an error to the console. The position is relative to the vertex.","returnType":"void"},{"name":"set_point_position","signature":"set_point_position(idx: int, position: Vector2) -> void","description":"Sets the position for the vertex [param idx]. If the index is out of bounds, the function sends an error to the console.","returnType":"void"},{"name":"tessellate","signature":"tessellate(max_stages: int, tolerance_degrees: float) -> PackedVector2Array","description":"Returns a list of points along the curve, with a curvature controlled point density. That is, the curvier parts will have more points than the straighter parts.\n\t\t\t\tThis approximation makes straight segments between each point, then subdivides those segments until the resulting shape is similar enough.\n\t\t\t\t[param max_stages] controls how many subdivisions a curve segment may face before it is considered approximate enough. Each subdivision splits the segment in half, so the default 5 stages may mean up to 32 subdivisions per curve segment. Increase with care!\n\t\t\t\t[param tolerance_degrees] controls how many degrees the midpoint of a segment may deviate from the real curve, before the segment has to be subdivided.","returnType":"PackedVector2Array"},{"name":"tessellate_even_length","signature":"tessellate_even_length(max_stages: int, tolerance_length: float) -> PackedVector2Array","description":"Returns a list of points along the curve, with almost uniform density. [param max_stages] controls how many subdivisions a curve segment may face before it is considered approximate enough. Each subdivision splits the segment in half, so the default 5 stages may mean up to 32 subdivisions per curve segment. Increase with care!\n\t\t\t\t[param tolerance_length] controls the maximal distance between two neighboring points, before the segment has to be subdivided.","returnType":"PackedVector2Array"}],"signals":[]},"Curve3D":{"name":"Curve3D","description":"Describes a Bézier curve in 3D space.","inherits":"Resource","properties":[{"name":"bake_interval","type":"float","description":"The distance in meters between two adjacent cached points. Changing it forces the cache to be recomputed the next time the [method get_baked_points] or [method get_baked_length] function is called. The smaller the distance, the more points in the cache and the more memory it will consume, so use with care."},{"name":"closed","type":"bool","description":"If [code]true[/code], and the curve has more than 2 control points, the last point and the first one will be connected in a loop."},{"name":"point_count","type":"int","description":"The number of points describing the curve."},{"name":"up_vector_enabled","type":"bool","description":"If [code]true[/code], the curve will bake up vectors used for orientation. This is used when [member PathFollow3D.rotation_mode] is set to [constant PathFollow3D.ROTATION_ORIENTED]. Changing it forces the cache to be recomputed."}],"methods":[{"name":"add_point","signature":"add_point(position: Vector3, in: Vector3, out: Vector3, index: int) -> void","description":"Adds a point with the specified [param position] relative to the curve's own position, with control points [param in] and [param out]. Appends the new point at the end of the point list.\n\t\t\t\tIf [param index] is given, the new point is inserted before the existing point identified by index [param index]. Every existing point starting from [param index] is shifted further down the list of points. The index must be greater than or equal to 0 and must not exceed the number of existing points in the line. See [member point_count].","returnType":"void"},{"name":"clear_points","signature":"clear_points() -> void","description":"Removes all points from the curve.","returnType":"void"},{"name":"get_baked_length","signature":"get_baked_length() -> float","description":"Returns the total length of the curve, based on the cached points. Given enough density (see [member bake_interval]), it should be approximate enough.","returnType":"float"},{"name":"get_baked_points","signature":"get_baked_points() -> PackedVector3Array","description":"Returns the cache of points as a .","returnType":"PackedVector3Array"},{"name":"get_baked_tilts","signature":"get_baked_tilts() -> PackedFloat32Array","description":"Returns the cache of tilts as a .","returnType":"PackedFloat32Array"},{"name":"get_baked_up_vectors","signature":"get_baked_up_vectors() -> PackedVector3Array","description":"Returns the cache of up vectors as a .\n\t\t\t\tIf [member up_vector_enabled] is false, the cache will be empty.","returnType":"PackedVector3Array"},{"name":"get_closest_offset","signature":"get_closest_offset(to_point: Vector3) -> float","description":"Returns the closest offset to [param to_point]. This offset is meant to be used in [method sample_baked] or [method sample_baked_up_vector].\n\t\t\t\t[param to_point] must be in this curve's local space.","returnType":"float"},{"name":"get_closest_point","signature":"get_closest_point(to_point: Vector3) -> Vector3","description":"Returns the closest point on baked segments (in curve's local space) to [param to_point].\n\t\t\t\t[param to_point] must be in this curve's local space.","returnType":"Vector3"},{"name":"get_point_in","signature":"get_point_in(idx: int) -> Vector3","description":"Returns the position of the control point leading to the vertex [param idx]. The returned position is relative to the vertex [param idx]. If the index is out of bounds, the function sends an error to the console, and returns (0, 0, 0).","returnType":"Vector3"},{"name":"get_point_out","signature":"get_point_out(idx: int) -> Vector3","description":"Returns the position of the control point leading out of the vertex [param idx]. The returned position is relative to the vertex [param idx]. If the index is out of bounds, the function sends an error to the console, and returns (0, 0, 0).","returnType":"Vector3"},{"name":"get_point_position","signature":"get_point_position(idx: int) -> Vector3","description":"Returns the position of the vertex [param idx]. If the index is out of bounds, the function sends an error to the console, and returns (0, 0, 0).","returnType":"Vector3"},{"name":"get_point_tilt","signature":"get_point_tilt(idx: int) -> float","description":"Returns the tilt angle in radians for the point [param idx]. If the index is out of bounds, the function sends an error to the console, and returns 0.","returnType":"float"},{"name":"remove_point","signature":"remove_point(idx: int) -> void","description":"Deletes the point [param idx] from the curve. Sends an error to the console if [param idx] is out of bounds.","returnType":"void"},{"name":"sample","signature":"sample(idx: int, t: float) -> Vector3","description":"Returns the position between the vertex [param idx] and the vertex idx + 1, where [param t] controls if the point is the first vertex (t = 0.0), the last vertex (t = 1.0), or in between. Values of [param t] outside the range (0.0 &gt;= t &lt;=1) give strange, but predictable results.\n\t\t\t\tIf [param idx] is out of bounds it is truncated to the first or last vertex, and [param t] is ignored. If the curve has no points, the function sends an error to the console, and returns (0, 0, 0).","returnType":"Vector3"},{"name":"sample_baked","signature":"sample_baked(offset: float, cubic: bool) -> Vector3","description":"Returns a point within the curve at position [param offset], where [param offset] is measured as a distance in 3D units along the curve. To do that, it finds the two cached points where the [param offset] lies between, then interpolates the values. This interpolation is cubic if [param cubic] is set to true, or linear if set to false.\n\t\t\t\tCubic interpolation tends to follow the curves better, but linear is faster (and often, precise enough).","returnType":"Vector3"},{"name":"sample_baked_up_vector","signature":"sample_baked_up_vector(offset: float, apply_tilt: bool) -> Vector3","description":"Returns an up vector within the curve at position [param offset], where [param offset] is measured as a distance in 3D units along the curve. To do that, it finds the two cached up vectors where the [param offset] lies between, then interpolates the values. If [param apply_tilt] is true, an interpolated tilt is applied to the interpolated up vector.\n\t\t\t\tIf the curve has no up vectors, the function sends an error to the console, and returns (0, 1, 0).","returnType":"Vector3"},{"name":"sample_baked_with_rotation","signature":"sample_baked_with_rotation(offset: float, cubic: bool, apply_tilt: bool) -> Transform3D","description":"Returns a  with origin as point position, basis.x as sideway vector, basis.y as up vector, basis.z as forward vector. When the curve length is 0, there is no reasonable way to calculate the rotation, all vectors aligned with global space axes. See also [method sample_baked].","returnType":"Transform3D"},{"name":"samplef","signature":"samplef(fofs: float) -> Vector3","description":"Returns the position at the vertex [param fofs]. It calls [method sample] using the integer part of [param fofs] as idx, and its fractional part as t.","returnType":"Vector3"},{"name":"set_point_in","signature":"set_point_in(idx: int, position: Vector3) -> void","description":"Sets the position of the control point leading to the vertex [param idx]. If the index is out of bounds, the function sends an error to the console. The position is relative to the vertex.","returnType":"void"},{"name":"set_point_out","signature":"set_point_out(idx: int, position: Vector3) -> void","description":"Sets the position of the control point leading out of the vertex [param idx]. If the index is out of bounds, the function sends an error to the console. The position is relative to the vertex.","returnType":"void"},{"name":"set_point_position","signature":"set_point_position(idx: int, position: Vector3) -> void","description":"Sets the position for the vertex [param idx]. If the index is out of bounds, the function sends an error to the console.","returnType":"void"},{"name":"set_point_tilt","signature":"set_point_tilt(idx: int, tilt: float) -> void","description":"Sets the tilt angle in radians for the point [param idx]. If the index is out of bounds, the function sends an error to the console.\n\t\t\t\tThe tilt controls the rotation along the look-at axis an object traveling the path would have. In the case of a curve controlling a , this tilt is an offset over the natural tilt the  calculates.","returnType":"void"},{"name":"tessellate","signature":"tessellate(max_stages: int, tolerance_degrees: float) -> PackedVector3Array","description":"Returns a list of points along the curve, with a curvature controlled point density. That is, the curvier parts will have more points than the straighter parts.\n\t\t\t\tThis approximation makes straight segments between each point, then subdivides those segments until the resulting shape is similar enough.\n\t\t\t\t[param max_stages] controls how many subdivisions a curve segment may face before it is considered approximate enough. Each subdivision splits the segment in half, so the default 5 stages may mean up to 32 subdivisions per curve segment. Increase with care!\n\t\t\t\t[param tolerance_degrees] controls how many degrees the midpoint of a segment may deviate from the real curve, before the segment has to be subdivided.","returnType":"PackedVector3Array"},{"name":"tessellate_even_length","signature":"tessellate_even_length(max_stages: int, tolerance_length: float) -> PackedVector3Array","description":"Returns a list of points along the curve, with almost uniform density. [param max_stages] controls how many subdivisions a curve segment may face before it is considered approximate enough. Each subdivision splits the segment in half, so the default 5 stages may mean up to 32 subdivisions per curve segment. Increase with care!\n\t\t\t\t[param tolerance_length] controls the maximal distance between two neighboring points, before the segment has to be subdivided.","returnType":"PackedVector3Array"}],"signals":[]},"CurveTexture":{"name":"CurveTexture","description":"A 1D texture where pixel brightness corresponds to points on a curve.","inherits":"Texture2D","properties":[{"name":"curve","type":"Curve","description":"The [Curve] that is rendered onto the texture. Should be a unit [Curve]."},{"name":"texture_mode","type":"int","description":"The format the texture should be generated with. When passing a CurveTexture as an input to a [Shader], this may need to be adjusted."},{"name":"width","type":"int","description":"The width of the texture (in pixels). Higher values make it possible to represent high-frequency data better (such as sudden direction changes), at the cost of increased generation time and memory usage."}],"methods":[],"signals":[]},"CurveXYZTexture":{"name":"CurveXYZTexture","description":"A 1D texture where the red, green, and blue color channels correspond to points on 3 curves.","inherits":"Texture2D","properties":[{"name":"curve_x","type":"Curve","description":"The [Curve] that is rendered onto the texture's red channel. Should be a unit [Curve]."},{"name":"curve_y","type":"Curve","description":"The [Curve] that is rendered onto the texture's green channel. Should be a unit [Curve]."},{"name":"curve_z","type":"Curve","description":"The [Curve] that is rendered onto the texture's blue channel. Should be a unit [Curve]."},{"name":"width","type":"int","description":"The width of the texture (in pixels). Higher values make it possible to represent high-frequency data better (such as sudden direction changes), at the cost of increased generation time and memory usage."}],"methods":[],"signals":[]},"CylinderMesh":{"name":"CylinderMesh","description":"Class representing a cylindrical .","inherits":"PrimitiveMesh","properties":[{"name":"bottom_radius","type":"float","description":"Bottom radius of the cylinder. If set to [code]0.0[/code], the bottom faces will not be generated, resulting in a conic shape. See also [member cap_bottom]."},{"name":"cap_bottom","type":"bool","description":"If [code]true[/code], generates a cap at the bottom of the cylinder. This can be set to [code]false[/code] to speed up generation and rendering when the cap is never seen by the camera. See also [member bottom_radius].\n\t\t\t[b]Note:[/b] If [member bottom_radius] is [code]0.0[/code], cap generation is always skipped even if [member cap_bottom] is [code]true[/code]."},{"name":"cap_top","type":"bool","description":"If [code]true[/code], generates a cap at the top of the cylinder. This can be set to [code]false[/code] to speed up generation and rendering when the cap is never seen by the camera. See also [member top_radius].\n\t\t\t[b]Note:[/b] If [member top_radius] is [code]0.0[/code], cap generation is always skipped even if [member cap_top] is [code]true[/code]."},{"name":"height","type":"float","description":"Full height of the cylinder."},{"name":"radial_segments","type":"int","description":"Number of radial segments on the cylinder. Higher values result in a more detailed cylinder/cone at the cost of performance."},{"name":"rings","type":"int","description":"Number of edge rings along the height of the cylinder. Changing [member rings] does not have any visual impact unless a shader or procedural mesh tool is used to alter the vertex data. Higher values result in more subdivisions, which can be used to create smoother-looking effects with shaders or procedural mesh tools (at the cost of performance). When not altering the vertex data using a shader or procedural mesh tool, [member rings] should be kept to its default value."},{"name":"top_radius","type":"float","description":"Top radius of the cylinder. If set to [code]0.0[/code], the top faces will not be generated, resulting in a conic shape. See also [member cap_top]."}],"methods":[],"signals":[]},"CylinderShape3D":{"name":"CylinderShape3D","description":"A 3D cylinder shape used for physics collision.","inherits":"Shape3D","properties":[{"name":"height","type":"float","description":"The cylinder's height."},{"name":"radius","type":"float","description":"The cylinder's radius."}],"methods":[],"signals":[]},"DTLSServer":{"name":"DTLSServer","description":"Helper class to implement a DTLS server.","inherits":"RefCounted","properties":[],"methods":[{"name":"setup","signature":"setup(server_options: TLSOptions) -> int","description":"Setup the DTLS server to use the given [param server_options]. See [method TLSOptions.server].","returnType":"int"},{"name":"take_connection","signature":"take_connection(udp_peer: PacketPeerUDP) -> PacketPeerDTLS","description":"Try to initiate the DTLS handshake with the given [param udp_peer] which must be already connected (see [method PacketPeerUDP.connect_to_host]).\n\t\t\t\tNote: You must check that the state of the return PacketPeerUDP is [constant PacketPeerDTLS.STATUS_HANDSHAKING], as it is normal that 50% of the new connections will be invalid due to cookie exchange.","returnType":"PacketPeerDTLS"}],"signals":[]},"DampedSpringJoint2D":{"name":"DampedSpringJoint2D","description":"A physics joint that connects two 2D physics bodies with a spring-like force.","inherits":"Joint2D","properties":[{"name":"damping","type":"float","description":"The spring joint's damping ratio. A value between [code]0[/code] and [code]1[/code]. When the two bodies move into different directions the system tries to align them to the spring axis again. A high [member damping] value forces the attached bodies to align faster."},{"name":"length","type":"float","description":"The spring joint's maximum length. The two attached bodies cannot stretch it past this value."},{"name":"rest_length","type":"float","description":"When the bodies attached to the spring joint move they stretch or squash it. The joint always tries to resize towards this length."},{"name":"stiffness","type":"float","description":"The higher the value, the less the bodies attached to the joint will deform it. The joint applies an opposing force to the bodies, the product of the stiffness multiplied by the size difference from its resting length."}],"methods":[],"signals":[]},"Decal":{"name":"Decal","description":"Node that projects a texture onto a .","inherits":"VisualInstance3D","properties":[{"name":"albedo_mix","type":"float","description":"Blends the albedo [Color] of the decal with albedo [Color] of the underlying mesh. This can be set to [code]0.0[/code] to create a decal that only affects normal or ORM. In this case, an albedo texture is still required as its alpha channel will determine where the normal and ORM will be overridden. See also [member modulate]."},{"name":"cull_mask","type":"int","description":"Specifies which [member VisualInstance3D.layers] this decal will project on. By default, Decals affect all layers. This is used so you can specify which types of objects receive the Decal and which do not. This is especially useful so you can ensure that dynamic objects don't accidentally receive a Decal intended for the terrain under them."},{"name":"distance_fade_begin","type":"float","description":"The distance from the camera at which the Decal begins to fade away (in 3D units)."},{"name":"distance_fade_enabled","type":"bool","description":"If [code]true[/code], decals will smoothly fade away when far from the active [Camera3D] starting at [member distance_fade_begin]. The Decal will fade out over [member distance_fade_begin] + [member distance_fade_length], after which it will be culled and not sent to the shader at all. Use this to reduce the number of active Decals in a scene and thus improve performance."},{"name":"distance_fade_length","type":"float","description":"The distance over which the Decal fades (in 3D units). The Decal becomes slowly more transparent over this distance and is completely invisible at the end. Higher values result in a smoother fade-out transition, which is more suited when the camera moves fast."},{"name":"emission_energy","type":"float","description":"Energy multiplier for the emission texture. This will make the decal emit light at a higher or lower intensity, independently of the albedo color. See also [member modulate]."},{"name":"lower_fade","type":"float","description":"Sets the curve over which the decal will fade as the surface gets further from the center of the [AABB]. Only positive values are valid (negative values will be clamped to [code]0.0[/code]). See also [member upper_fade]."},{"name":"modulate","type":"Color","description":"Changes the [Color] of the Decal by multiplying the albedo and emission colors with this value. The alpha component is only taken into account when multiplying the albedo color, not the emission color. See also [member emission_energy] and [member albedo_mix] to change the emission and albedo intensity independently of each other."},{"name":"normal_fade","type":"float","description":"Fades the Decal if the angle between the Decal's [AABB] and the target surface becomes too large. A value of [code]0[/code] projects the Decal regardless of angle, a value of [code]1[/code] limits the Decal to surfaces that are nearly perpendicular.\n\t\t\t[b]Note:[/b] Setting [member normal_fade] to a value greater than [code]0.0[/code] has a small performance cost due to the added normal angle computations."},{"name":"size","type":"Vector3","description":"Sets the size of the [AABB] used by the decal. All dimensions must be set to a value greater than zero (they will be clamped to [code]0.001[/code] if this is not the case). The AABB goes from [code]-size/2[/code] to [code]size/2[/code].\n\t\t\t[b]Note:[/b] To improve culling efficiency of \"hard surface\" decals, set their [member upper_fade] and [member lower_fade] to [code]0.0[/code] and set the Y component of the [member size] as low as possible. This will reduce the decals' AABB size without affecting their appearance."},{"name":"texture_albedo","type":"Texture2D","description":"[Texture2D] with the base [Color] of the Decal. Either this or the [member texture_emission] must be set for the Decal to be visible. Use the alpha channel like a mask to smoothly blend the edges of the decal with the underlying object.\n\t\t\t[b]Note:[/b] Unlike [BaseMaterial3D] whose filter mode can be adjusted on a per-material basis, the filter mode for [Decal] textures is set globally with [member ProjectSettings.rendering/textures/decals/filter]."},{"name":"texture_emission","type":"Texture2D","description":"[Texture2D] with the emission [Color] of the Decal. Either this or the [member texture_albedo] must be set for the Decal to be visible. Use the alpha channel like a mask to smoothly blend the edges of the decal with the underlying object.\n\t\t\t[b]Note:[/b] Unlike [BaseMaterial3D] whose filter mode can be adjusted on a per-material basis, the filter mode for [Decal] textures is set globally with [member ProjectSettings.rendering/textures/decals/filter]."},{"name":"texture_normal","type":"Texture2D","description":"[Texture2D] with the per-pixel normal map for the decal. Use this to add extra detail to decals.\n\t\t\t[b]Note:[/b] Unlike [BaseMaterial3D] whose filter mode can be adjusted on a per-material basis, the filter mode for [Decal] textures is set globally with [member ProjectSettings.rendering/textures/decals/filter].\n\t\t\t[b]Note:[/b] Setting this texture alone will not result in a visible decal, as [member texture_albedo] must also be set. To create a normal-only decal, load an albedo texture into [member texture_albedo] and set [member albedo_mix] to [code]0.0[/code]. The albedo texture's alpha channel will be used to determine where the underlying surface's normal map should be overridden (and its intensity)."},{"name":"texture_orm","type":"Texture2D","description":"[Texture2D] storing ambient occlusion, roughness, and metallic for the decal. Use this to add extra detail to decals.\n\t\t\t[b]Note:[/b] Unlike [BaseMaterial3D] whose filter mode can be adjusted on a per-material basis, the filter mode for [Decal] textures is set globally with [member ProjectSettings.rendering/textures/decals/filter].\n\t\t\t[b]Note:[/b] Setting this texture alone will not result in a visible decal, as [member texture_albedo] must also be set. To create an ORM-only decal, load an albedo texture into [member texture_albedo] and set [member albedo_mix] to [code]0.0[/code]. The albedo texture's alpha channel will be used to determine where the underlying surface's ORM map should be overridden (and its intensity)."},{"name":"upper_fade","type":"float","description":"Sets the curve over which the decal will fade as the surface gets further from the center of the [AABB]. Only positive values are valid (negative values will be clamped to [code]0.0[/code]). See also [member lower_fade]."}],"methods":[{"name":"get_texture","signature":"get_texture(type: int) -> Texture2D","description":"Returns the  associated with the specified [enum DecalTexture]. This is a convenience method, in most cases you should access the texture directly.\n\t\t\t\tFor example, instead of albedo_tex = $Decal.get_texture(Decal.TEXTURE_ALBEDO), use albedo_tex = $Decal.texture_albedo.\n\t\t\t\tOne case where this is better than accessing the texture directly is when you want to copy one Decal's textures to another. For example:\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tfor i in Decal.TEXTURE_MAX:\n\t\t\t\t    $NewDecal.set_texture(i, $OldDecal.get_texture(i))\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tfor (int i = 0; i &lt; (int)Decal.DecalTexture.Max; i++)\n\t\t\t\t{\n\t\t\t\t    GetNode&lt;Decal&gt;(\"NewDecal\").SetTexture(i, GetNode&lt;Decal&gt;(\"OldDecal\").GetTexture(i));\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t","returnType":"Texture2D"},{"name":"set_texture","signature":"set_texture(type: int, texture: Texture2D) -> void","description":"Sets the  associated with the specified [enum DecalTexture]. This is a convenience method, in most cases you should access the texture directly.\n\t\t\t\tFor example, instead of $Decal.set_texture(Decal.TEXTURE_ALBEDO, albedo_tex), use $Decal.texture_albedo = albedo_tex.\n\t\t\t\tOne case where this is better than accessing the texture directly is when you want to copy one Decal's textures to another. For example:\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tfor i in Decal.TEXTURE_MAX:\n\t\t\t\t    $NewDecal.set_texture(i, $OldDecal.get_texture(i))\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tfor (int i = 0; i &lt; (int)Decal.DecalTexture.Max; i++)\n\t\t\t\t{\n\t\t\t\t    GetNode&lt;Decal&gt;(\"NewDecal\").SetTexture(i, GetNode&lt;Decal&gt;(\"OldDecal\").GetTexture(i));\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t","returnType":"void"}],"signals":[]},"Dictionary":{"name":"Dictionary","description":"A built-in data structure that holds key-value pairs.","inherits":"","properties":[],"methods":[{"name":"assign","signature":"assign(dictionary: Dictionary) -> void","description":"Assigns elements of another [param dictionary] into the dictionary. Resizes the dictionary to match [param dictionary]. Performs type conversions if the dictionary is typed.","returnType":"void"},{"name":"clear","signature":"clear() -> void","description":"Clears the dictionary, removing all entries from it.","returnType":"void"},{"name":"duplicate","signature":"duplicate(deep: bool) -> Dictionary","description":"Creates and returns a new copy of the dictionary. If [param deep] is true, inner  and  keys and values are also copied, recursively.","returnType":"Dictionary"},{"name":"erase","signature":"erase(key: Variant) -> bool","description":"Removes the dictionary entry by key, if it exists. Returns true if the given [param key] existed in the dictionary, otherwise false.\n\t\t\t\tNote: Do not erase entries while iterating over the dictionary. You can iterate over the [method keys] array instead.","returnType":"bool"},{"name":"find_key","signature":"find_key(value: Variant) -> Variant","description":"Finds and returns the first key whose associated value is equal to [param value], or null if it is not found.\n\t\t\t\tNote: null is also a valid key. If inside the dictionary, [method find_key] may give misleading results.","returnType":"Variant"},{"name":"get","signature":"get(key: Variant, default: Variant) -> Variant","description":"Returns the corresponding value for the given [param key] in the dictionary. If the [param key] does not exist, returns [param default], or null if the parameter is omitted.","returnType":"Variant"},{"name":"get_or_add","signature":"get_or_add(key: Variant, default: Variant) -> Variant","description":"Gets a value and ensures the key is set. If the [param key] exists in the dictionary, this behaves like [method get]. Otherwise, the [param default] value is inserted into the dictionary and returned.","returnType":"Variant"},{"name":"get_typed_key_builtin","signature":"get_typed_key_builtin() -> int","description":"Returns the built-in  type of the typed dictionary's keys as a [enum Variant.Type] constant. If the keys are not typed, returns [constant TYPE_NIL]. See also [method is_typed_key].","returnType":"int"},{"name":"get_typed_key_class_name","signature":"get_typed_key_class_name() -> StringName","description":"Returns the built-in class name of the typed dictionary's keys, if the built-in  type is [constant TYPE_OBJECT]. Otherwise, returns an empty . See also [method is_typed_key] and [method Object.get_class].","returnType":"StringName"},{"name":"get_typed_key_script","signature":"get_typed_key_script() -> Variant","description":"Returns the  instance associated with this typed dictionary's keys, or null if it does not exist. See also [method is_typed_key].","returnType":"Variant"},{"name":"get_typed_value_builtin","signature":"get_typed_value_builtin() -> int","description":"Returns the built-in  type of the typed dictionary's values as a [enum Variant.Type] constant. If the values are not typed, returns [constant TYPE_NIL]. See also [method is_typed_value].","returnType":"int"},{"name":"get_typed_value_class_name","signature":"get_typed_value_class_name() -> StringName","description":"Returns the built-in class name of the typed dictionary's values, if the built-in  type is [constant TYPE_OBJECT]. Otherwise, returns an empty . See also [method is_typed_value] and [method Object.get_class].","returnType":"StringName"},{"name":"get_typed_value_script","signature":"get_typed_value_script() -> Variant","description":"Returns the  instance associated with this typed dictionary's values, or null if it does not exist. See also [method is_typed_value].","returnType":"Variant"},{"name":"has","signature":"has(key: Variant) -> bool","description":"Returns true if the dictionary contains an entry with the given [param key].\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tvar my_dict = {\n\t\t\t\t    \"Godot\" : 4,\n\t\t\t\t    210 : null,\n\t\t\t\t}\n\n\t\t\t\tprint(my_dict.has(\"Godot\")) # Prints true\n\t\t\t\tprint(my_dict.has(210))     # Prints true\n\t\t\t\tprint(my_dict.has(4))       # Prints false\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tvar myDict = new Godot.Collections.Dictionary\n\t\t\t\t{\n\t\t\t\t    { \"Godot\", 4 },\n\t\t\t\t    { 210, default },\n\t\t\t\t};\n\n\t\t\t\tGD.Print(myDict.ContainsKey(\"Godot\")); // Prints True\n\t\t\t\tGD.Print(myDict.ContainsKey(210));     // Prints True\n\t\t\t\tGD.Print(myDict.ContainsKey(4));       // Prints False\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tIn GDScript, this is equivalent to the in operator:\n\t\t\t\t\n\t\t\t\tif \"Godot\" in {\"Godot\": 4}:\n\t\t\t\t    print(\"The key is here!\") # Will be printed.\n\t\t\t\t\n\t\t\t\tNote: This method returns true as long as the [param key] exists, even if its corresponding value is null.","returnType":"bool"},{"name":"has_all","signature":"has_all(keys: Array) -> bool","description":"Returns true if the dictionary contains all keys in the given [param keys] array.\n\t\t\t\t\n\t\t\t\tvar data = {\"width\" : 10, \"height\" : 20}\n\t\t\t\tdata.has_all([\"height\", \"width\"]) # Returns true\n\t\t\t\t","returnType":"bool"},{"name":"hash","signature":"hash() -> int","description":"Returns a hashed 32-bit integer value representing the dictionary contents.\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tvar dict1 = {\"A\": 10, \"B\": 2}\n\t\t\t\tvar dict2 = {\"A\": 10, \"B\": 2}\n\n\t\t\t\tprint(dict1.hash() == dict2.hash()) # Prints true\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tvar dict1 = new Godot.Collections.Dictionary{{\"A\", 10}, {\"B\", 2}};\n\t\t\t\tvar dict2 = new Godot.Collections.Dictionary{{\"A\", 10}, {\"B\", 2}};\n\n\t\t\t\t// Godot.Collections.Dictionary has no Hash() method. Use GD.Hash() instead.\n\t\t\t\tGD.Print(GD.Hash(dict1) == GD.Hash(dict2)); // Prints True\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tNote: Dictionaries with the same entries but in a different order will not have the same hash.\n\t\t\t\tNote: Dictionaries with equal hash values are not guaranteed to be the same, because of hash collisions. On the contrary, dictionaries with different hash values are guaranteed to be different.","returnType":"int"},{"name":"is_empty","signature":"is_empty() -> bool","description":"Returns true if the dictionary is empty (its size is 0). See also [method size].","returnType":"bool"},{"name":"is_read_only","signature":"is_read_only() -> bool","description":"Returns true if the dictionary is read-only. See [method make_read_only]. Dictionaries are automatically read-only if declared with const keyword.","returnType":"bool"},{"name":"is_same_typed","signature":"is_same_typed(dictionary: Dictionary) -> bool","description":"Returns true if the dictionary is typed the same as [param dictionary].","returnType":"bool"},{"name":"is_same_typed_key","signature":"is_same_typed_key(dictionary: Dictionary) -> bool","description":"Returns true if the dictionary's keys are typed the same as [param dictionary]'s keys.","returnType":"bool"},{"name":"is_same_typed_value","signature":"is_same_typed_value(dictionary: Dictionary) -> bool","description":"Returns true if the dictionary's values are typed the same as [param dictionary]'s values.","returnType":"bool"},{"name":"is_typed","signature":"is_typed() -> bool","description":"Returns true if the dictionary is typed. Typed dictionaries can only store keys/values of their associated type and provide type safety for the [] operator. Methods of typed dictionary still return .","returnType":"bool"},{"name":"is_typed_key","signature":"is_typed_key() -> bool","description":"Returns true if the dictionary's keys are typed.","returnType":"bool"},{"name":"is_typed_value","signature":"is_typed_value() -> bool","description":"Returns true if the dictionary's values are typed.","returnType":"bool"},{"name":"keys","signature":"keys() -> Array","description":"Returns the list of keys in the dictionary.","returnType":"Array"},{"name":"make_read_only","signature":"make_read_only() -> void","description":"Makes the dictionary read-only, i.e. disables modification of the dictionary's contents. Does not apply to nested content, e.g. content of nested dictionaries.","returnType":"void"},{"name":"merge","signature":"merge(dictionary: Dictionary, overwrite: bool) -> void","description":"Adds entries from [param dictionary] to this dictionary. By default, duplicate keys are not copied over, unless [param overwrite] is true.\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tvar dict = { \"item\": \"sword\", \"quantity\": 2 }\n\t\t\t\tvar other_dict = { \"quantity\": 15, \"color\": \"silver\" }\n\n\t\t\t\t# Overwriting of existing keys is disabled by default.\n\t\t\t\tdict.merge(other_dict)\n\t\t\t\tprint(dict)  # { \"item\": \"sword\", \"quantity\": 2, \"color\": \"silver\" }\n\n\t\t\t\t# With overwriting of existing keys enabled.\n\t\t\t\tdict.merge(other_dict, true)\n\t\t\t\tprint(dict)  # { \"item\": \"sword\", \"quantity\": 15, \"color\": \"silver\" }\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tvar dict = new Godot.Collections.Dictionary\n\t\t\t\t{\n\t\t\t\t    [\"item\"] = \"sword\",\n\t\t\t\t    [\"quantity\"] = 2,\n\t\t\t\t};\n\n\t\t\t\tvar otherDict = new Godot.Collections.Dictionary\n\t\t\t\t{\n\t\t\t\t    [\"quantity\"] = 15,\n\t\t\t\t    [\"color\"] = \"silver\",\n\t\t\t\t};\n\n\t\t\t\t// Overwriting of existing keys is disabled by default.\n\t\t\t\tdict.Merge(otherDict);\n\t\t\t\tGD.Print(dict); // { \"item\": \"sword\", \"quantity\": 2, \"color\": \"silver\" }\n\n\t\t\t\t// With overwriting of existing keys enabled.\n\t\t\t\tdict.Merge(otherDict, true);\n\t\t\t\tGD.Print(dict); // { \"item\": \"sword\", \"quantity\": 15, \"color\": \"silver\" }\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tNote: [method merge] is not recursive. Nested dictionaries are considered as keys that can be overwritten or not depending on the value of [param overwrite], but they will never be merged together.","returnType":"void"},{"name":"merged","signature":"merged(dictionary: Dictionary, overwrite: bool) -> Dictionary","description":"Returns a copy of this dictionary merged with the other [param dictionary]. By default, duplicate keys are not copied over, unless [param overwrite] is true. See also [method merge].\n\t\t\t\tThis method is useful for quickly making dictionaries with default values:\n\t\t\t\t\n\t\t\t\tvar base = { \"fruit\": \"apple\", \"vegetable\": \"potato\" }\n\t\t\t\tvar extra = { \"fruit\": \"orange\", \"dressing\": \"vinegar\" }\n\t\t\t\t# Prints { \"fruit\": \"orange\", \"vegetable\": \"potato\", \"dressing\": \"vinegar\" }\n\t\t\t\tprint(extra.merged(base))\n\t\t\t\t# Prints { \"fruit\": \"apple\", \"vegetable\": \"potato\", \"dressing\": \"vinegar\" }\n\t\t\t\tprint(extra.merged(base, true))\n\t\t\t\t","returnType":"Dictionary"},{"name":"recursive_equal","signature":"recursive_equal(dictionary: Dictionary, recursion_count: int) -> bool","description":"Returns true if the two dictionaries contain the same keys and values, inner  and  keys and values are compared recursively.","returnType":"bool"},{"name":"set","signature":"set(key: Variant, value: Variant) -> bool","description":"Sets the value of the element at the given [param key] to the given [param value]. This is the same as using the [] operator (array = value).","returnType":"bool"},{"name":"size","signature":"size() -> int","description":"Returns the number of entries in the dictionary. Empty dictionaries ({ }) always return 0. See also [method is_empty].","returnType":"int"},{"name":"sort","signature":"sort() -> void","description":"Sorts the dictionary in-place by key. This can be used to ensure dictionaries with the same contents produce equivalent results when getting the [method keys], getting the [method values], and converting to a string. This is also useful when wanting a JSON representation consistent with what is in memory, and useful for storing on a database that requires dictionaries to be sorted.","returnType":"void"},{"name":"values","signature":"values() -> Array","description":"Returns the list of values in this dictionary.","returnType":"Array"}],"signals":[]},"DirAccess":{"name":"DirAccess","description":"Provides methods for managing directories and their content.","inherits":"RefCounted","properties":[{"name":"include_hidden","type":"bool","description":"If [code]true[/code], hidden files are included when navigating the directory.\n\t\t\tAffects [method list_dir_begin], [method get_directories] and [method get_files]."},{"name":"include_navigational","type":"bool","description":"If [code]true[/code], [code].[/code] and [code]..[/code] are included when navigating the directory.\n\t\t\tAffects [method list_dir_begin] and [method get_directories]."}],"methods":[{"name":"change_dir","signature":"change_dir(to_dir: String) -> int","description":"Changes the currently opened directory to the one passed as an argument. The argument can be relative to the current directory (e.g. newdir or ../newdir), or an absolute path (e.g. /tmp/newdir or res://somedir/newdir).\n\t\t\t\tReturns one of the [enum Error] code constants ([constant OK] on success).\n\t\t\t\tNote: The new directory must be within the same scope, e.g. when you had opened a directory inside res://, you can't change it to user:// directory. If you need to open a directory in another access scope, use [method open] to create a new instance instead.","returnType":"int"},{"name":"copy","signature":"copy(from: String, to: String, chmod_flags: int) -> int","description":"Copies the [param from] file to the [param to] destination. Both arguments should be paths to files, either relative or absolute. If the destination file exists and is not access-protected, it will be overwritten.\n\t\t\t\tIf [param chmod_flags] is different than -1, the Unix permissions for the destination path will be set to the provided value, if available on the current operating system.\n\t\t\t\tReturns one of the [enum Error] code constants ([constant OK] on success).","returnType":"int"},{"name":"copy_absolute","signature":"copy_absolute(from: String, to: String, chmod_flags: int) -> int","description":"Static version of [method copy]. Supports only absolute paths.","returnType":"int"},{"name":"create_link","signature":"create_link(source: String, target: String) -> int","description":"Creates symbolic link between files or folders.\n\t\t\t\tNote: On Windows, this method works only if the application is running with elevated privileges or Developer Mode is enabled.\n\t\t\t\tNote: This method is implemented on macOS, Linux, and Windows.","returnType":"int"},{"name":"create_temp","signature":"create_temp(prefix: String, keep: bool) -> DirAccess","description":"Creates a temporary directory. This directory will be freed when the returned  is freed.\n\t\t\t\tIf [param prefix] is not empty, it will be prefixed to the directory name, separated by a -.\n\t\t\t\tIf [param keep] is true, the directory is not deleted when the returned  is freed.\n\t\t\t\tReturns null if opening the directory failed. You can use [method get_open_error] to check the error that occurred.","returnType":"DirAccess"},{"name":"current_is_dir","signature":"current_is_dir() -> bool","description":"Returns whether the current item processed with the last [method get_next] call is a directory (. and .. are considered directories).","returnType":"bool"},{"name":"dir_exists","signature":"dir_exists(path: String) -> bool","description":"Returns whether the target directory exists. The argument can be relative to the current directory, or an absolute path.\n\t\t\t\tNote: The returned  in the editor and after exporting when used on a path in the res:// directory may be different. Some files are converted to engine-specific formats when exported, potentially changing the directory structure.","returnType":"bool"},{"name":"dir_exists_absolute","signature":"dir_exists_absolute(path: String) -> bool","description":"Static version of [method dir_exists]. Supports only absolute paths.\n\t\t\t\tNote: The returned  in the editor and after exporting when used on a path in the res:// directory may be different. Some files are converted to engine-specific formats when exported, potentially changing the directory structure.","returnType":"bool"},{"name":"file_exists","signature":"file_exists(path: String) -> bool","description":"Returns whether the target file exists. The argument can be relative to the current directory, or an absolute path.\n\t\t\t\tFor a static equivalent, use [method FileAccess.file_exists].\n\t\t\t\tNote: Many resources types are imported (e.g. textures or sound files), and their source asset will not be included in the exported game, as only the imported version is used. See [method ResourceLoader.exists] for an alternative approach that takes resource remapping into account.","returnType":"bool"},{"name":"get_current_dir","signature":"get_current_dir(include_drive: bool) -> String","description":"Returns the absolute path to the currently opened directory (e.g. res://folder or C:\\tmp\\folder).","returnType":"String"},{"name":"get_current_drive","signature":"get_current_drive() -> int","description":"Returns the currently opened directory's drive index. See [method get_drive_name] to convert returned index to the name of the drive.","returnType":"int"},{"name":"get_directories","signature":"get_directories() -> PackedStringArray","description":"Returns a  containing filenames of the directory contents, excluding files. The array is sorted alphabetically.\n\t\t\t\tAffected by [member include_hidden] and [member include_navigational].\n\t\t\t\tNote: The returned directories in the editor and after exporting in the res:// directory may differ as some files are converted to engine-specific formats when exported.","returnType":"PackedStringArray"},{"name":"get_directories_at","signature":"get_directories_at(path: String) -> PackedStringArray","description":"Returns a  containing filenames of the directory contents, excluding files, at the given [param path]. The array is sorted alphabetically.\n\t\t\t\tUse [method get_directories] if you want more control of what gets included.\n\t\t\t\tNote: The returned directories in the editor and after exporting in the res:// directory may differ as some files are converted to engine-specific formats when exported.","returnType":"PackedStringArray"},{"name":"get_drive_count","signature":"get_drive_count() -> int","description":"On Windows, returns the number of drives (partitions) mounted on the current filesystem.\n\t\t\t\tOn macOS, returns the number of mounted volumes.\n\t\t\t\tOn Linux, returns the number of mounted volumes and GTK 3 bookmarks.\n\t\t\t\tOn other platforms, the method returns 0.","returnType":"int"},{"name":"get_drive_name","signature":"get_drive_name(idx: int) -> String","description":"On Windows, returns the name of the drive (partition) passed as an argument (e.g. C:).\n\t\t\t\tOn macOS, returns the path to the mounted volume passed as an argument.\n\t\t\t\tOn Linux, returns the path to the mounted volume or GTK 3 bookmark passed as an argument.\n\t\t\t\tOn other platforms, or if the requested drive does not exist, the method returns an empty String.","returnType":"String"},{"name":"get_files","signature":"get_files() -> PackedStringArray","description":"Returns a  containing filenames of the directory contents, excluding directories. The array is sorted alphabetically.\n\t\t\t\tAffected by [member include_hidden].\n\t\t\t\tNote: When used on a res:// path in an exported project, only the files actually included in the PCK at the given folder level are returned. In practice, this means that since imported resources are stored in a top-level .godot/ folder, only paths to *.gd and *.import files are returned (plus a few files such as project.godot or project.binary and the project icon). In an exported project, the list of returned files will also vary depending on whether [member ProjectSettings.editor/export/convert_text_resources_to_binary] is true.","returnType":"PackedStringArray"},{"name":"get_files_at","signature":"get_files_at(path: String) -> PackedStringArray","description":"Returns a  containing filenames of the directory contents, excluding directories, at the given [param path]. The array is sorted alphabetically.\n\t\t\t\tUse [method get_files] if you want more control of what gets included.\n\t\t\t\tNote: When used on a res:// path in an exported project, only the files included in the PCK at the given folder level are returned. In practice, this means that since imported resources are stored in a top-level .godot/ folder, only paths to .gd and .import files are returned (plus a few other files, such as project.godot or project.binary and the project icon). In an exported project, the list of returned files will also vary depending on [member ProjectSettings.editor/export/convert_text_resources_to_binary].","returnType":"PackedStringArray"},{"name":"get_next","signature":"get_next() -> String","description":"Returns the next element (file or directory) in the current directory.\n\t\t\t\tThe name of the file or directory is returned (and not its full path). Once the stream has been fully processed, the method returns an empty  and closes the stream automatically (i.e. [method list_dir_end] would not be mandatory in such a case).","returnType":"String"},{"name":"get_open_error","signature":"get_open_error() -> int","description":"Returns the result of the last [method open] call in the current thread.","returnType":"int"},{"name":"get_space_left","signature":"get_space_left() -> int","description":"Returns the available space on the current directory's disk, in bytes. Returns 0 if the platform-specific method to query the available space fails.","returnType":"int"},{"name":"is_bundle","signature":"is_bundle(path: String) -> bool","description":"Returns true if the directory is a macOS bundle.\n\t\t\t\tNote: This method is implemented on macOS.","returnType":"bool"},{"name":"is_case_sensitive","signature":"is_case_sensitive(path: String) -> bool","description":"Returns true if the file system or directory use case sensitive file names.\n\t\t\t\tNote: This method is implemented on macOS, Linux (for EXT4 and F2FS filesystems only) and Windows. On other platforms, it always returns true.","returnType":"bool"},{"name":"is_link","signature":"is_link(path: String) -> bool","description":"Returns true if the file or directory is a symbolic link, directory junction, or other reparse point.\n\t\t\t\tNote: This method is implemented on macOS, Linux, and Windows.","returnType":"bool"},{"name":"list_dir_begin","signature":"list_dir_begin() -> int","description":"Initializes the stream used to list all files and directories using the [method get_next] function, closing the currently opened stream if needed. Once the stream has been processed, it should typically be closed with [method list_dir_end].\n\t\t\t\tAffected by [member include_hidden] and [member include_navigational].\n\t\t\t\tNote: The order of files and directories returned by this method is not deterministic, and can vary between operating systems. If you want a list of all files or folders sorted alphabetically, use [method get_files] or [method get_directories].","returnType":"int"},{"name":"list_dir_end","signature":"list_dir_end() -> void","description":"Closes the current stream opened with [method list_dir_begin] (whether it has been fully processed with [method get_next] does not matter).","returnType":"void"},{"name":"make_dir","signature":"make_dir(path: String) -> int","description":"Creates a directory. The argument can be relative to the current directory, or an absolute path. The target directory should be placed in an already existing directory (to create the full path recursively, see [method make_dir_recursive]).\n\t\t\t\tReturns one of the [enum Error] code constants ([constant OK] on success).","returnType":"int"},{"name":"make_dir_absolute","signature":"make_dir_absolute(path: String) -> int","description":"Static version of [method make_dir]. Supports only absolute paths.","returnType":"int"},{"name":"make_dir_recursive","signature":"make_dir_recursive(path: String) -> int","description":"Creates a target directory and all necessary intermediate directories in its path, by calling [method make_dir] recursively. The argument can be relative to the current directory, or an absolute path.\n\t\t\t\tReturns one of the [enum Error] code constants ([constant OK] on success).","returnType":"int"},{"name":"make_dir_recursive_absolute","signature":"make_dir_recursive_absolute(path: String) -> int","description":"Static version of [method make_dir_recursive]. Supports only absolute paths.","returnType":"int"},{"name":"open","signature":"open(path: String) -> DirAccess","description":"Creates a new  object and opens an existing directory of the filesystem. The [param path] argument can be within the project tree (res://folder), the user directory (user://folder) or an absolute path of the user filesystem (e.g. /tmp/folder or C:\\tmp\\folder).\n\t\t\t\tReturns null if opening the directory failed. You can use [method get_open_error] to check the error that occurred.","returnType":"DirAccess"},{"name":"read_link","signature":"read_link(path: String) -> String","description":"Returns target of the symbolic link.\n\t\t\t\tNote: This method is implemented on macOS, Linux, and Windows.","returnType":"String"},{"name":"remove","signature":"remove(path: String) -> int","description":"Permanently deletes the target file or an empty directory. The argument can be relative to the current directory, or an absolute path. If the target directory is not empty, the operation will fail.\n\t\t\t\tIf you don't want to delete the file/directory permanently, use [method OS.move_to_trash] instead.\n\t\t\t\tReturns one of the [enum Error] code constants ([constant OK] on success).","returnType":"int"},{"name":"remove_absolute","signature":"remove_absolute(path: String) -> int","description":"Static version of [method remove]. Supports only absolute paths.","returnType":"int"},{"name":"rename","signature":"rename(from: String, to: String) -> int","description":"Renames (move) the [param from] file or directory to the [param to] destination. Both arguments should be paths to files or directories, either relative or absolute. If the destination file or directory exists and is not access-protected, it will be overwritten.\n\t\t\t\tReturns one of the [enum Error] code constants ([constant OK] on success).","returnType":"int"},{"name":"rename_absolute","signature":"rename_absolute(from: String, to: String) -> int","description":"Static version of [method rename]. Supports only absolute paths.","returnType":"int"}],"signals":[]},"DirectionalLight2D":{"name":"DirectionalLight2D","description":"Directional 2D light from a distance.","inherits":"Light2D","properties":[{"name":"height","type":"float","description":"The height of the light. Used with 2D normal mapping. Ranges from 0 (parallel to the plane) to 1 (perpendicular to the plane)."},{"name":"max_distance","type":"float","description":"The maximum distance from the camera center objects can be before their shadows are culled (in pixels). Decreasing this value can prevent objects located outside the camera from casting shadows (while also improving performance). [member Camera2D.zoom] is not taken into account by [member max_distance], which means that at higher zoom values, shadows will appear to fade out sooner when zooming onto a given point."}],"methods":[],"signals":[]},"DirectionalLight3D":{"name":"DirectionalLight3D","description":"Directional light from a distance, as from the Sun.","inherits":"Light3D","properties":[{"name":"directional_shadow_blend_splits","type":"bool","description":"If [code]true[/code], shadow detail is sacrificed in exchange for smoother transitions between splits. Enabling shadow blend splitting also has a moderate performance cost. This is ignored when [member directional_shadow_mode] is [constant SHADOW_ORTHOGONAL]."},{"name":"directional_shadow_fade_start","type":"float","description":"Proportion of [member directional_shadow_max_distance] at which point the shadow starts to fade. At [member directional_shadow_max_distance], the shadow will disappear. The default value is a balance between smooth fading and distant shadow visibility. If the camera moves fast and the [member directional_shadow_max_distance] is low, consider lowering [member directional_shadow_fade_start] below [code]0.8[/code] to make shadow transitions less noticeable. On the other hand, if you tuned [member directional_shadow_max_distance] to cover the entire scene, you can set [member directional_shadow_fade_start] to [code]1.0[/code] to prevent the shadow from fading in the distance (it will suddenly cut off instead)."},{"name":"directional_shadow_max_distance","type":"float","description":"The maximum distance for shadow splits. Increasing this value will make directional shadows visible from further away, at the cost of lower overall shadow detail and performance (since more objects need to be included in the directional shadow rendering)."},{"name":"directional_shadow_mode","type":"int","description":"The light's shadow rendering algorithm. See [enum ShadowMode]."},{"name":"directional_shadow_pancake_size","type":"float","description":"Sets the size of the directional shadow pancake. The pancake offsets the start of the shadow's camera frustum to provide a higher effective depth resolution for the shadow. However, a high pancake size can cause artifacts in the shadows of large objects that are close to the edge of the frustum. Reducing the pancake size can help. Setting the size to [code]0[/code] turns off the pancaking effect."},{"name":"directional_shadow_split_1","type":"float","description":"The distance from camera to shadow split 1. Relative to [member directional_shadow_max_distance]. Only used when [member directional_shadow_mode] is [constant SHADOW_PARALLEL_2_SPLITS] or [constant SHADOW_PARALLEL_4_SPLITS]."},{"name":"directional_shadow_split_2","type":"float","description":"The distance from shadow split 1 to split 2. Relative to [member directional_shadow_max_distance]. Only used when [member directional_shadow_mode] is [constant SHADOW_PARALLEL_4_SPLITS]."},{"name":"directional_shadow_split_3","type":"float","description":"The distance from shadow split 2 to split 3. Relative to [member directional_shadow_max_distance]. Only used when [member directional_shadow_mode] is [constant SHADOW_PARALLEL_4_SPLITS]."},{"name":"sky_mode","type":"int","description":"Set whether this [DirectionalLight3D] is visible in the sky, in the scene, or both in the sky and in the scene. See [enum SkyMode] for options."}],"methods":[],"signals":[]},"DisplayServer":{"name":"DisplayServer","description":"A server interface for low-level window management.","inherits":"Object","properties":[],"methods":[{"name":"beep","signature":"beep() -> void","description":"Plays the beep sound from the operative system, if possible. Because it comes from the OS, the beep sound will be audible even if the application is muted. It may also be disabled for the entire OS by the user.\n\t\t\t\tNote: This method is implemented on macOS, Linux (X11/Wayland), and Windows.","returnType":"void"},{"name":"clipboard_get","signature":"clipboard_get() -> String","description":"Returns the user's clipboard as a string if possible.","returnType":"String"},{"name":"clipboard_get_image","signature":"clipboard_get_image() -> Image","description":"Returns the user's clipboard as an image if possible.\n\t\t\t\tNote: This method uses the copied pixel data, e.g. from a image editing software or a web browser, not an image file copied from file explorer.","returnType":"Image"},{"name":"clipboard_get_primary","signature":"clipboard_get_primary() -> String","description":"Returns the user's [url=https://unix.stackexchange.com/questions/139191/whats-the-difference-between-primary-selection-and-clipboard-buffer]primary clipboard as a string if possible. This is the clipboard that is set when the user selects text in any application, rather than when pressing Ctrl + C. The clipboard data can then be pasted by clicking the middle mouse button in any application that supports the primary clipboard mechanism.\n\t\t\t\tNote: This method is only implemented on Linux (X11/Wayland).","returnType":"String"},{"name":"clipboard_has","signature":"clipboard_has() -> bool","description":"Returns true if there is a text content on the user's clipboard.","returnType":"bool"},{"name":"clipboard_has_image","signature":"clipboard_has_image() -> bool","description":"Returns true if there is an image content on the user's clipboard.","returnType":"bool"},{"name":"clipboard_set","signature":"clipboard_set(clipboard: String) -> void","description":"Sets the user's clipboard content to the given string.","returnType":"void"},{"name":"clipboard_set_primary","signature":"clipboard_set_primary(clipboard_primary: String) -> void","description":"Sets the user's [url=https://unix.stackexchange.com/questions/139191/whats-the-difference-between-primary-selection-and-clipboard-buffer]primary clipboard content to the given string. This is the clipboard that is set when the user selects text in any application, rather than when pressing Ctrl + C. The clipboard data can then be pasted by clicking the middle mouse button in any application that supports the primary clipboard mechanism.\n\t\t\t\tNote: This method is only implemented on Linux (X11/Wayland).","returnType":"void"},{"name":"create_status_indicator","signature":"create_status_indicator(icon: Texture2D, tooltip: String, callback: Callable) -> int","description":"Creates a new application status indicator with the specified icon, tooltip, and activation callback.\n\t\t\t\t[param callback] should take two arguments: the pressed mouse button (one of the [enum MouseButton] constants) and the click position in screen coordinates (a ).","returnType":"int"},{"name":"cursor_get_shape","signature":"cursor_get_shape() -> int","description":"Returns the default mouse cursor shape set by [method cursor_set_shape].","returnType":"int"},{"name":"cursor_set_custom_image","signature":"cursor_set_custom_image(cursor: Resource, shape: int, hotspot: Vector2) -> void","description":"Sets a custom mouse cursor image for the given [param shape]. This means the user's operating system and mouse cursor theme will no longer influence the mouse cursor's appearance.\n\t\t\t\t[param cursor] can be either a  or an , and it should not be larger than 256×256 to display correctly. Optionally, [param hotspot] can be set to offset the image's position relative to the click point. By default, [param hotspot] is set to the top-left corner of the image. See also [method cursor_set_shape].","returnType":"void"},{"name":"cursor_set_shape","signature":"cursor_set_shape(shape: int) -> void","description":"Sets the default mouse cursor shape. The cursor's appearance will vary depending on the user's operating system and mouse cursor theme. See also [method cursor_get_shape] and [method cursor_set_custom_image].","returnType":"void"},{"name":"delete_status_indicator","signature":"delete_status_indicator(id: int) -> void","description":"Removes the application status indicator.","returnType":"void"},{"name":"dialog_input_text","signature":"dialog_input_text(title: String, description: String, existing_text: String, callback: Callable) -> int","description":"Shows a text input dialog which uses the operating system's native look-and-feel. [param callback] should accept a single  parameter which contains the text field's contents.\n\t\t\t\tNote: This method is implemented if the display server has the [constant FEATURE_NATIVE_DIALOG_INPUT] feature. Supported platforms include macOS, Windows, and Android.","returnType":"int"},{"name":"dialog_show","signature":"dialog_show(title: String, description: String, buttons: PackedStringArray, callback: Callable) -> int","description":"Shows a text dialog which uses the operating system's native look-and-feel. [param callback] should accept a single  parameter which corresponds to the index of the pressed button.\n\t\t\t\tNote: This method is implemented if the display server has the [constant FEATURE_NATIVE_DIALOG] feature. Supported platforms include macOS, Windows, and Android.","returnType":"int"},{"name":"enable_for_stealing_focus","signature":"enable_for_stealing_focus(process_id: int) -> void","description":"Allows the [param process_id] PID to steal focus from this window. In other words, this disables the operating system's focus stealing protection for the specified PID.\n\t\t\t\tNote: This method is implemented only on Windows.","returnType":"void"},{"name":"file_dialog_show","signature":"file_dialog_show(title: String, current_directory: String, filename: String, show_hidden: bool, mode: int, filters: PackedStringArray, callback: Callable) -> int","description":"Displays OS native dialog for selecting files or directories in the file system.\n\t\t\t\tEach filter string in the [param filters] array should be formatted like this: *.png,*.jpg,*.jpeg;Image Files;image/png,image/jpeg. The description text of the filter is optional and can be omitted. It is recommended to set both file extension and MIME type. See also [member FileDialog.filters].\n\t\t\t\tCallbacks have the following arguments: status: bool, selected_paths: PackedStringArray, selected_filter_index: int. On Android, callback argument selected_filter_index is always zero.\n\t\t\t\tNote: This method is implemented if the display server has the [constant FEATURE_NATIVE_DIALOG_FILE] feature. Supported platforms include Linux (X11/Wayland), Windows, macOS, and Android.\n\t\t\t\tNote: [param current_directory] might be ignored.\n\t\t\t\tNote: Embedded file dialog and Windows file dialog support only file extensions, while Android, Linux, and macOS file dialogs also support MIME types.\n\t\t\t\tNote: On Android and Linux, [param show_hidden] is ignored.\n\t\t\t\tNote: On Android and macOS, native file dialogs have no title.\n\t\t\t\tNote: On macOS, sandboxed apps will save security-scoped bookmarks to retain access to the opened folders across multiple sessions. Use [method OS.get_granted_permissions] to get a list of saved bookmarks.","returnType":"int"},{"name":"file_dialog_with_options_show","signature":"file_dialog_with_options_show(title: String, current_directory: String, root: String, filename: String, show_hidden: bool, mode: int, filters: PackedStringArray, options: Dictionary[], callback: Callable) -> int","description":"Displays OS native dialog for selecting files or directories in the file system with additional user selectable options.\n\t\t\t\tEach filter string in the [param filters] array should be formatted like this: *.png,*.jpg,*.jpeg;Image Files;image/png,image/jpeg. The description text of the filter is optional and can be omitted. It is recommended to set both file extension and MIME type. See also [member FileDialog.filters].\n\t\t\t\t[param options] is array of s with the following keys:\n\t\t\t\t- \"name\" - option's name .\n\t\t\t\t- \"values\" -  of values. If empty, boolean option (check box) is used.\n\t\t\t\t- \"default\" - default selected option index () or default boolean value ().\n\t\t\t\tCallbacks have the following arguments: status: bool, selected_paths: PackedStringArray, selected_filter_index: int, selected_option: Dictionary.\n\t\t\t\tNote: This method is implemented if the display server has the [constant FEATURE_NATIVE_DIALOG_FILE_EXTRA] feature. Supported platforms include Linux (X11/Wayland), Windows, and macOS.\n\t\t\t\tNote: [param current_directory] might be ignored.\n\t\t\t\tNote: Embedded file dialog and Windows file dialog support only file extensions, while Android, Linux, and macOS file dialogs also support MIME types.\n\t\t\t\tNote: On Linux (X11), [param show_hidden] is ignored.\n\t\t\t\tNote: On macOS, native file dialogs have no title.\n\t\t\t\tNote: On macOS, sandboxed apps will save security-scoped bookmarks to retain access to the opened folders across multiple sessions. Use [method OS.get_granted_permissions] to get a list of saved bookmarks.","returnType":"int"},{"name":"force_process_and_drop_events","signature":"force_process_and_drop_events() -> void","description":"Forces window manager processing while ignoring all s. See also [method process_events].\n\t\t\t\tNote: This method is implemented on Windows and macOS.","returnType":"void"},{"name":"get_accent_color","signature":"get_accent_color() -> Color","description":"Returns OS theme accent color. Returns Color(0, 0, 0, 0), if accent color is unknown.\n\t\t\t\tNote: This method is implemented on macOS, Windows, and Android.","returnType":"Color"},{"name":"get_base_color","signature":"get_base_color() -> Color","description":"Returns the OS theme base color (default control background). Returns Color(0, 0, 0, 0) if the base color is unknown.\n\t\t\t\tNote: This method is implemented on macOS, Windows, and Android.","returnType":"Color"},{"name":"get_display_cutouts","signature":"get_display_cutouts() -> Rect2[]","description":"Returns an  of , each of which is the bounding rectangle for a display cutout or notch. These are non-functional areas on edge-to-edge screens used by cameras and sensors. Returns an empty array if the device does not have cutouts. See also [method get_display_safe_area].\n\t\t\t\tNote: Currently only implemented on Android. Other platforms will return an empty array even if they do have display cutouts or notches.","returnType":"Rect2[]"},{"name":"get_display_safe_area","signature":"get_display_safe_area() -> Rect2i","description":"Returns the unobscured area of the display where interactive controls should be rendered. See also [method get_display_cutouts].\n\t\t\t\tNote: Currently only implemented on Android and iOS. On other platforms, screen_get_usable_rect(SCREEN_OF_MAIN_WINDOW) will be returned as a fallback. See also [method screen_get_usable_rect].","returnType":"Rect2i"},{"name":"get_keyboard_focus_screen","signature":"get_keyboard_focus_screen() -> int","description":"Returns the index of the screen containing the window with the keyboard focus, or the primary screen if there's no focused window.","returnType":"int"},{"name":"get_name","signature":"get_name() -> String","description":"Returns the name of the  currently in use. Most operating systems only have a single , but Linux has access to more than one  (currently X11 and Wayland).\n\t\t\t\tThe names of built-in display servers are Windows, macOS, X11 (Linux), Wayland (Linux), Android, iOS, web (HTML5), and headless (when started with the --headless [url=$DOCS_URL/tutorials/editor/command_line_tutorial.html]command line argument).","returnType":"String"},{"name":"get_primary_screen","signature":"get_primary_screen() -> int","description":"Returns index of the primary screen.","returnType":"int"},{"name":"get_screen_count","signature":"get_screen_count() -> int","description":"Returns the number of displays available.","returnType":"int"},{"name":"get_screen_from_rect","signature":"get_screen_from_rect(rect: Rect2) -> int","description":"Returns the index of the screen that overlaps the most with the given rectangle. Returns -1 if the rectangle doesn't overlap with any screen or has no area.","returnType":"int"},{"name":"get_swap_cancel_ok","signature":"get_swap_cancel_ok() -> bool","description":"Returns true if positions of OK and Cancel buttons are swapped in dialogs. This is enabled by default on Windows to follow interface conventions, and be toggled by changing [member ProjectSettings.gui/common/swap_cancel_ok].\n\t\t\t\tNote: This doesn't affect native dialogs such as the ones spawned by [method DisplayServer.dialog_show].","returnType":"bool"},{"name":"get_window_at_screen_position","signature":"get_window_at_screen_position(position: Vector2i) -> int","description":"Returns the ID of the window at the specified screen [param position] (in pixels). On multi-monitor setups, the screen position is relative to the virtual desktop area. On multi-monitor setups with different screen resolutions or orientations, the origin may be located outside any display like this:\n\t\t\t\t[codeblock lang=text]\n\t\t\t\t* (0, 0)        +-------+\n\t\t\t\t                |       |\n\t\t\t\t+-------------+ |       |\n\t\t\t\t|             | |       |\n\t\t\t\t|             | |       |\n\t\t\t\t+-------------+ +-------+\n\t\t\t\t","returnType":"int"},{"name":"get_window_list","signature":"get_window_list() -> PackedInt32Array","description":"Returns the list of Godot window IDs belonging to this process.\n\t\t\t\tNote: Native dialogs are not included in this list.","returnType":"PackedInt32Array"},{"name":"global_menu_add_check_item","signature":"global_menu_add_check_item(menu_root: String, label: String, callback: Callable, key_callback: Callable, tag: Variant, accelerator: int, index: int) -> int","description":"Adds a new checkable item with text [param label] to the global menu with ID [param menu_root].\n\t\t\t\tReturns index of the inserted item, it's not guaranteed to be the same as [param index] value.\n\t\t\t\tAn [param accelerator] can optionally be defined, which is a keyboard shortcut that can be pressed to trigger the menu button even if it's not currently open. The [param accelerator] is generally a combination of [enum KeyModifierMask]s and [enum Key]s using bitwise OR such as KEY_MASK_CTRL | KEY_A (Ctrl + A).\n\t\t\t\tNote: The [param callback] and [param key_callback] Callables need to accept exactly one Variant parameter, the parameter passed to the Callables will be the value passed to [param tag].\n\t\t\t\tNote: This method is implemented only on macOS.\n\t\t\t\tSupported system menu IDs:\n\t\t\t\t[codeblock lang=text]\n\t\t\t\t\"_main\" - Main menu (macOS).\n\t\t\t\t\"_dock\" - Dock popup menu (macOS).\n\t\t\t\t\"_apple\" - Apple menu (macOS, custom items added before \"Services\").\n\t\t\t\t\"_window\" - Window menu (macOS, custom items added after \"Bring All to Front\").\n\t\t\t\t\"_help\" - Help menu (macOS).\n\t\t\t\t","returnType":"int"},{"name":"global_menu_add_icon_check_item","signature":"global_menu_add_icon_check_item(menu_root: String, icon: Texture2D, label: String, callback: Callable, key_callback: Callable, tag: Variant, accelerator: int, index: int) -> int","description":"Adds a new checkable item with text [param label] and icon [param icon] to the global menu with ID [param menu_root].\n\t\t\t\tReturns index of the inserted item, it's not guaranteed to be the same as [param index] value.\n\t\t\t\tAn [param accelerator] can optionally be defined, which is a keyboard shortcut that can be pressed to trigger the menu button even if it's not currently open. The [param accelerator] is generally a combination of [enum KeyModifierMask]s and [enum Key]s using bitwise OR such as KEY_MASK_CTRL | KEY_A (Ctrl + A).\n\t\t\t\tNote: The [param callback] and [param key_callback] Callables need to accept exactly one Variant parameter, the parameter passed to the Callables will be the value passed to [param tag].\n\t\t\t\tNote: This method is implemented only on macOS.\n\t\t\t\tSupported system menu IDs:\n\t\t\t\t[codeblock lang=text]\n\t\t\t\t\"_main\" - Main menu (macOS).\n\t\t\t\t\"_dock\" - Dock popup menu (macOS).\n\t\t\t\t\"_apple\" - Apple menu (macOS, custom items added before \"Services\").\n\t\t\t\t\"_window\" - Window menu (macOS, custom items added after \"Bring All to Front\").\n\t\t\t\t\"_help\" - Help menu (macOS).\n\t\t\t\t","returnType":"int"},{"name":"global_menu_add_icon_item","signature":"global_menu_add_icon_item(menu_root: String, icon: Texture2D, label: String, callback: Callable, key_callback: Callable, tag: Variant, accelerator: int, index: int) -> int","description":"Adds a new item with text [param label] and icon [param icon] to the global menu with ID [param menu_root].\n\t\t\t\tReturns index of the inserted item, it's not guaranteed to be the same as [param index] value.\n\t\t\t\tAn [param accelerator] can optionally be defined, which is a keyboard shortcut that can be pressed to trigger the menu button even if it's not currently open. The [param accelerator] is generally a combination of [enum KeyModifierMask]s and [enum Key]s using bitwise OR such as KEY_MASK_CTRL | KEY_A (Ctrl + A).\n\t\t\t\tNote: The [param callback] and [param key_callback] Callables need to accept exactly one Variant parameter, the parameter passed to the Callables will be the value passed to [param tag].\n\t\t\t\tNote: This method is implemented only on macOS.\n\t\t\t\tSupported system menu IDs:\n\t\t\t\t[codeblock lang=text]\n\t\t\t\t\"_main\" - Main menu (macOS).\n\t\t\t\t\"_dock\" - Dock popup menu (macOS).\n\t\t\t\t\"_apple\" - Apple menu (macOS, custom items added before \"Services\").\n\t\t\t\t\"_window\" - Window menu (macOS, custom items added after \"Bring All to Front\").\n\t\t\t\t\"_help\" - Help menu (macOS).\n\t\t\t\t","returnType":"int"},{"name":"global_menu_add_icon_radio_check_item","signature":"global_menu_add_icon_radio_check_item(menu_root: String, icon: Texture2D, label: String, callback: Callable, key_callback: Callable, tag: Variant, accelerator: int, index: int) -> int","description":"Adds a new radio-checkable item with text [param label] and icon [param icon] to the global menu with ID [param menu_root].\n\t\t\t\tReturns index of the inserted item, it's not guaranteed to be the same as [param index] value.\n\t\t\t\tAn [param accelerator] can optionally be defined, which is a keyboard shortcut that can be pressed to trigger the menu button even if it's not currently open. The [param accelerator] is generally a combination of [enum KeyModifierMask]s and [enum Key]s using bitwise OR such as KEY_MASK_CTRL | KEY_A (Ctrl + A).\n\t\t\t\tNote: Radio-checkable items just display a checkmark, but don't have any built-in checking behavior and must be checked/unchecked manually. See [method global_menu_set_item_checked] for more info on how to control it.\n\t\t\t\tNote: The [param callback] and [param key_callback] Callables need to accept exactly one Variant parameter, the parameter passed to the Callables will be the value passed to [param tag].\n\t\t\t\tNote: This method is implemented only on macOS.\n\t\t\t\tSupported system menu IDs:\n\t\t\t\t[codeblock lang=text]\n\t\t\t\t\"_main\" - Main menu (macOS).\n\t\t\t\t\"_dock\" - Dock popup menu (macOS).\n\t\t\t\t\"_apple\" - Apple menu (macOS, custom items added before \"Services\").\n\t\t\t\t\"_window\" - Window menu (macOS, custom items added after \"Bring All to Front\").\n\t\t\t\t\"_help\" - Help menu (macOS).\n\t\t\t\t","returnType":"int"},{"name":"global_menu_add_item","signature":"global_menu_add_item(menu_root: String, label: String, callback: Callable, key_callback: Callable, tag: Variant, accelerator: int, index: int) -> int","description":"Adds a new item with text [param label] to the global menu with ID [param menu_root].\n\t\t\t\tReturns index of the inserted item, it's not guaranteed to be the same as [param index] value.\n\t\t\t\tAn [param accelerator] can optionally be defined, which is a keyboard shortcut that can be pressed to trigger the menu button even if it's not currently open. The [param accelerator] is generally a combination of [enum KeyModifierMask]s and [enum Key]s using bitwise OR such as KEY_MASK_CTRL | KEY_A (Ctrl + A).\n\t\t\t\tNote: The [param callback] and [param key_callback] Callables need to accept exactly one Variant parameter, the parameter passed to the Callables will be the value passed to [param tag].\n\t\t\t\tNote: This method is implemented only on macOS.\n\t\t\t\tSupported system menu IDs:\n\t\t\t\t[codeblock lang=text]\n\t\t\t\t\"_main\" - Main menu (macOS).\n\t\t\t\t\"_dock\" - Dock popup menu (macOS).\n\t\t\t\t\"_apple\" - Apple menu (macOS, custom items added before \"Services\").\n\t\t\t\t\"_window\" - Window menu (macOS, custom items added after \"Bring All to Front\").\n\t\t\t\t\"_help\" - Help menu (macOS).\n\t\t\t\t","returnType":"int"},{"name":"global_menu_add_multistate_item","signature":"global_menu_add_multistate_item(menu_root: String, label: String, max_states: int, default_state: int, callback: Callable, key_callback: Callable, tag: Variant, accelerator: int, index: int) -> int","description":"Adds a new item with text [param label] to the global menu with ID [param menu_root].\n\t\t\t\tContrarily to normal binary items, multistate items can have more than two states, as defined by [param max_states]. Each press or activate of the item will increase the state by one. The default value is defined by [param default_state].\n\t\t\t\tReturns index of the inserted item, it's not guaranteed to be the same as [param index] value.\n\t\t\t\tAn [param accelerator] can optionally be defined, which is a keyboard shortcut that can be pressed to trigger the menu button even if it's not currently open. The [param accelerator] is generally a combination of [enum KeyModifierMask]s and [enum Key]s using bitwise OR such as KEY_MASK_CTRL | KEY_A (Ctrl + A).\n\t\t\t\tNote: By default, there's no indication of the current item state, it should be changed manually.\n\t\t\t\tNote: The [param callback] and [param key_callback] Callables need to accept exactly one Variant parameter, the parameter passed to the Callables will be the value passed to [param tag].\n\t\t\t\tNote: This method is implemented only on macOS.\n\t\t\t\tSupported system menu IDs:\n\t\t\t\t[codeblock lang=text]\n\t\t\t\t\"_main\" - Main menu (macOS).\n\t\t\t\t\"_dock\" - Dock popup menu (macOS).\n\t\t\t\t\"_apple\" - Apple menu (macOS, custom items added before \"Services\").\n\t\t\t\t\"_window\" - Window menu (macOS, custom items added after \"Bring All to Front\").\n\t\t\t\t\"_help\" - Help menu (macOS).\n\t\t\t\t","returnType":"int"},{"name":"global_menu_add_radio_check_item","signature":"global_menu_add_radio_check_item(menu_root: String, label: String, callback: Callable, key_callback: Callable, tag: Variant, accelerator: int, index: int) -> int","description":"Adds a new radio-checkable item with text [param label] to the global menu with ID [param menu_root].\n\t\t\t\tReturns index of the inserted item, it's not guaranteed to be the same as [param index] value.\n\t\t\t\tAn [param accelerator] can optionally be defined, which is a keyboard shortcut that can be pressed to trigger the menu button even if it's not currently open. The [param accelerator] is generally a combination of [enum KeyModifierMask]s and [enum Key]s using bitwise OR such as KEY_MASK_CTRL | KEY_A (Ctrl + A).\n\t\t\t\tNote: Radio-checkable items just display a checkmark, but don't have any built-in checking behavior and must be checked/unchecked manually. See [method global_menu_set_item_checked] for more info on how to control it.\n\t\t\t\tNote: The [param callback] and [param key_callback] Callables need to accept exactly one Variant parameter, the parameter passed to the Callables will be the value passed to [param tag].\n\t\t\t\tNote: This method is implemented only on macOS.\n\t\t\t\tSupported system menu IDs:\n\t\t\t\t[codeblock lang=text]\n\t\t\t\t\"_main\" - Main menu (macOS).\n\t\t\t\t\"_dock\" - Dock popup menu (macOS).\n\t\t\t\t\"_apple\" - Apple menu (macOS, custom items added before \"Services\").\n\t\t\t\t\"_window\" - Window menu (macOS, custom items added after \"Bring All to Front\").\n\t\t\t\t\"_help\" - Help menu (macOS).\n\t\t\t\t","returnType":"int"},{"name":"global_menu_add_separator","signature":"global_menu_add_separator(menu_root: String, index: int) -> int","description":"Adds a separator between items to the global menu with ID [param menu_root]. Separators also occupy an index.\n\t\t\t\tReturns index of the inserted item, it's not guaranteed to be the same as [param index] value.\n\t\t\t\tNote: This method is implemented only on macOS.\n\t\t\t\tSupported system menu IDs:\n\t\t\t\t[codeblock lang=text]\n\t\t\t\t\"_main\" - Main menu (macOS).\n\t\t\t\t\"_dock\" - Dock popup menu (macOS).\n\t\t\t\t\"_apple\" - Apple menu (macOS, custom items added before \"Services\").\n\t\t\t\t\"_window\" - Window menu (macOS, custom items added after \"Bring All to Front\").\n\t\t\t\t\"_help\" - Help menu (macOS).\n\t\t\t\t","returnType":"int"},{"name":"global_menu_add_submenu_item","signature":"global_menu_add_submenu_item(menu_root: String, label: String, submenu: String, index: int) -> int","description":"Adds an item that will act as a submenu of the global menu [param menu_root]. The [param submenu] argument is the ID of the global menu root that will be shown when the item is clicked.\n\t\t\t\tReturns index of the inserted item, it's not guaranteed to be the same as [param index] value.\n\t\t\t\tNote: This method is implemented only on macOS.\n\t\t\t\tSupported system menu IDs:\n\t\t\t\t[codeblock lang=text]\n\t\t\t\t\"_main\" - Main menu (macOS).\n\t\t\t\t\"_dock\" - Dock popup menu (macOS).\n\t\t\t\t\"_apple\" - Apple menu (macOS, custom items added before \"Services\").\n\t\t\t\t\"_window\" - Window menu (macOS, custom items added after \"Bring All to Front\").\n\t\t\t\t\"_help\" - Help menu (macOS).\n\t\t\t\t","returnType":"int"},{"name":"global_menu_clear","signature":"global_menu_clear(menu_root: String) -> void","description":"Removes all items from the global menu with ID [param menu_root].\n\t\t\t\tNote: This method is implemented only on macOS.\n\t\t\t\tSupported system menu IDs:\n\t\t\t\t[codeblock lang=text]\n\t\t\t\t\"_main\" - Main menu (macOS).\n\t\t\t\t\"_dock\" - Dock popup menu (macOS).\n\t\t\t\t\"_apple\" - Apple menu (macOS, custom items added before \"Services\").\n\t\t\t\t\"_window\" - Window menu (macOS, custom items added after \"Bring All to Front\").\n\t\t\t\t\"_help\" - Help menu (macOS).\n\t\t\t\t","returnType":"void"},{"name":"global_menu_get_item_accelerator","signature":"global_menu_get_item_accelerator(menu_root: String, idx: int) -> int","description":"Returns the accelerator of the item at index [param idx]. Accelerators are special combinations of keys that activate the item, no matter which control is focused.\n\t\t\t\tNote: This method is implemented only on macOS.","returnType":"int"},{"name":"global_menu_get_item_callback","signature":"global_menu_get_item_callback(menu_root: String, idx: int) -> Callable","description":"Returns the callback of the item at index [param idx].\n\t\t\t\tNote: This method is implemented only on macOS.","returnType":"Callable"},{"name":"global_menu_get_item_count","signature":"global_menu_get_item_count(menu_root: String) -> int","description":"Returns number of items in the global menu with ID [param menu_root].\n\t\t\t\tNote: This method is implemented only on macOS.","returnType":"int"},{"name":"global_menu_get_item_icon","signature":"global_menu_get_item_icon(menu_root: String, idx: int) -> Texture2D","description":"Returns the icon of the item at index [param idx].\n\t\t\t\tNote: This method is implemented only on macOS.","returnType":"Texture2D"},{"name":"global_menu_get_item_indentation_level","signature":"global_menu_get_item_indentation_level(menu_root: String, idx: int) -> int","description":"Returns the horizontal offset of the item at the given [param idx].\n\t\t\t\tNote: This method is implemented only on macOS.","returnType":"int"},{"name":"global_menu_get_item_index_from_tag","signature":"global_menu_get_item_index_from_tag(menu_root: String, tag: Variant) -> int","description":"Returns the index of the item with the specified [param tag]. Indices are automatically assigned to each item by the engine, and cannot be set manually.\n\t\t\t\tNote: This method is implemented only on macOS.","returnType":"int"},{"name":"global_menu_get_item_index_from_text","signature":"global_menu_get_item_index_from_text(menu_root: String, text: String) -> int","description":"Returns the index of the item with the specified [param text]. Indices are automatically assigned to each item by the engine, and cannot be set manually.\n\t\t\t\tNote: This method is implemented only on macOS.","returnType":"int"},{"name":"global_menu_get_item_key_callback","signature":"global_menu_get_item_key_callback(menu_root: String, idx: int) -> Callable","description":"Returns the callback of the item accelerator at index [param idx].\n\t\t\t\tNote: This method is implemented only on macOS.","returnType":"Callable"},{"name":"global_menu_get_item_max_states","signature":"global_menu_get_item_max_states(menu_root: String, idx: int) -> int","description":"Returns number of states of a multistate item. See [method global_menu_add_multistate_item] for details.\n\t\t\t\tNote: This method is implemented only on macOS.","returnType":"int"},{"name":"global_menu_get_item_state","signature":"global_menu_get_item_state(menu_root: String, idx: int) -> int","description":"Returns the state of a multistate item. See [method global_menu_add_multistate_item] for details.\n\t\t\t\tNote: This method is implemented only on macOS.","returnType":"int"},{"name":"global_menu_get_item_submenu","signature":"global_menu_get_item_submenu(menu_root: String, idx: int) -> String","description":"Returns the submenu ID of the item at index [param idx]. See [method global_menu_add_submenu_item] for more info on how to add a submenu.\n\t\t\t\tNote: This method is implemented only on macOS.","returnType":"String"},{"name":"global_menu_get_item_tag","signature":"global_menu_get_item_tag(menu_root: String, idx: int) -> Variant","description":"Returns the metadata of the specified item, which might be of any type. You can set it with [method global_menu_set_item_tag], which provides a simple way of assigning context data to items.\n\t\t\t\tNote: This method is implemented only on macOS.","returnType":"Variant"},{"name":"global_menu_get_item_text","signature":"global_menu_get_item_text(menu_root: String, idx: int) -> String","description":"Returns the text of the item at index [param idx].\n\t\t\t\tNote: This method is implemented only on macOS.","returnType":"String"},{"name":"global_menu_get_item_tooltip","signature":"global_menu_get_item_tooltip(menu_root: String, idx: int) -> String","description":"Returns the tooltip associated with the specified index [param idx].\n\t\t\t\tNote: This method is implemented only on macOS.","returnType":"String"},{"name":"global_menu_get_system_menu_roots","signature":"global_menu_get_system_menu_roots() -> Dictionary","description":"Returns Dictionary of supported system menu IDs and names.\n\t\t\t\tNote: This method is implemented only on macOS.","returnType":"Dictionary"},{"name":"global_menu_is_item_checkable","signature":"global_menu_is_item_checkable(menu_root: String, idx: int) -> bool","description":"Returns true if the item at index [param idx] is checkable in some way, i.e. if it has a checkbox or radio button.\n\t\t\t\tNote: This method is implemented only on macOS.","returnType":"bool"},{"name":"global_menu_is_item_checked","signature":"global_menu_is_item_checked(menu_root: String, idx: int) -> bool","description":"Returns true if the item at index [param idx] is checked.\n\t\t\t\tNote: This method is implemented only on macOS.","returnType":"bool"},{"name":"global_menu_is_item_disabled","signature":"global_menu_is_item_disabled(menu_root: String, idx: int) -> bool","description":"Returns true if the item at index [param idx] is disabled. When it is disabled it can't be selected, or its action invoked.\n\t\t\t\tSee [method global_menu_set_item_disabled] for more info on how to disable an item.\n\t\t\t\tNote: This method is implemented only on macOS.","returnType":"bool"},{"name":"global_menu_is_item_hidden","signature":"global_menu_is_item_hidden(menu_root: String, idx: int) -> bool","description":"Returns true if the item at index [param idx] is hidden.\n\t\t\t\tSee [method global_menu_set_item_hidden] for more info on how to hide an item.\n\t\t\t\tNote: This method is implemented only on macOS.","returnType":"bool"},{"name":"global_menu_is_item_radio_checkable","signature":"global_menu_is_item_radio_checkable(menu_root: String, idx: int) -> bool","description":"Returns true if the item at index [param idx] has radio button-style checkability.\n\t\t\t\tNote: This is purely cosmetic; you must add the logic for checking/unchecking items in radio groups.\n\t\t\t\tNote: This method is implemented only on macOS.","returnType":"bool"},{"name":"global_menu_remove_item","signature":"global_menu_remove_item(menu_root: String, idx: int) -> void","description":"Removes the item at index [param idx] from the global menu [param menu_root].\n\t\t\t\tNote: The indices of items after the removed item will be shifted by one.\n\t\t\t\tNote: This method is implemented only on macOS.","returnType":"void"},{"name":"global_menu_set_item_accelerator","signature":"global_menu_set_item_accelerator(menu_root: String, idx: int, keycode: int) -> void","description":"Sets the accelerator of the item at index [param idx]. [param keycode] can be a single [enum Key], or a combination of [enum KeyModifierMask]s and [enum Key]s using bitwise OR such as KEY_MASK_CTRL | KEY_A (Ctrl + A).\n\t\t\t\tNote: This method is implemented only on macOS.","returnType":"void"},{"name":"global_menu_set_item_callback","signature":"global_menu_set_item_callback(menu_root: String, idx: int, callback: Callable) -> void","description":"Sets the callback of the item at index [param idx]. Callback is emitted when an item is pressed.\n\t\t\t\tNote: The [param callback] Callable needs to accept exactly one Variant parameter, the parameter passed to the Callable will be the value passed to the tag parameter when the menu item was created.\n\t\t\t\tNote: This method is implemented only on macOS.","returnType":"void"},{"name":"global_menu_set_item_checkable","signature":"global_menu_set_item_checkable(menu_root: String, idx: int, checkable: bool) -> void","description":"Sets whether the item at index [param idx] has a checkbox. If false, sets the type of the item to plain text.\n\t\t\t\tNote: This method is implemented only on macOS.","returnType":"void"},{"name":"global_menu_set_item_checked","signature":"global_menu_set_item_checked(menu_root: String, idx: int, checked: bool) -> void","description":"Sets the checkstate status of the item at index [param idx].\n\t\t\t\tNote: This method is implemented only on macOS.","returnType":"void"},{"name":"global_menu_set_item_disabled","signature":"global_menu_set_item_disabled(menu_root: String, idx: int, disabled: bool) -> void","description":"Enables/disables the item at index [param idx]. When it is disabled, it can't be selected and its action can't be invoked.\n\t\t\t\tNote: This method is implemented only on macOS.","returnType":"void"},{"name":"global_menu_set_item_hidden","signature":"global_menu_set_item_hidden(menu_root: String, idx: int, hidden: bool) -> void","description":"Hides/shows the item at index [param idx]. When it is hidden, an item does not appear in a menu and its action cannot be invoked.\n\t\t\t\tNote: This method is implemented only on macOS.","returnType":"void"},{"name":"global_menu_set_item_hover_callbacks","signature":"global_menu_set_item_hover_callbacks(menu_root: String, idx: int, callback: Callable) -> void","description":"Sets the callback of the item at index [param idx]. The callback is emitted when an item is hovered.\n\t\t\t\tNote: The [param callback] Callable needs to accept exactly one Variant parameter, the parameter passed to the Callable will be the value passed to the tag parameter when the menu item was created.\n\t\t\t\tNote: This method is implemented only on macOS.","returnType":"void"},{"name":"global_menu_set_item_icon","signature":"global_menu_set_item_icon(menu_root: String, idx: int, icon: Texture2D) -> void","description":"Replaces the  icon of the specified [param idx].\n\t\t\t\tNote: This method is implemented only on macOS.\n\t\t\t\tNote: This method is not supported by macOS \"_dock\" menu items.","returnType":"void"},{"name":"global_menu_set_item_indentation_level","signature":"global_menu_set_item_indentation_level(menu_root: String, idx: int, level: int) -> void","description":"Sets the horizontal offset of the item at the given [param idx].\n\t\t\t\tNote: This method is implemented only on macOS.","returnType":"void"},{"name":"global_menu_set_item_key_callback","signature":"global_menu_set_item_key_callback(menu_root: String, idx: int, key_callback: Callable) -> void","description":"Sets the callback of the item at index [param idx]. Callback is emitted when its accelerator is activated.\n\t\t\t\tNote: The [param key_callback] Callable needs to accept exactly one Variant parameter, the parameter passed to the Callable will be the value passed to the tag parameter when the menu item was created.\n\t\t\t\tNote: This method is implemented only on macOS.","returnType":"void"},{"name":"global_menu_set_item_max_states","signature":"global_menu_set_item_max_states(menu_root: String, idx: int, max_states: int) -> void","description":"Sets number of state of a multistate item. See [method global_menu_add_multistate_item] for details.\n\t\t\t\tNote: This method is implemented only on macOS.","returnType":"void"},{"name":"global_menu_set_item_radio_checkable","signature":"global_menu_set_item_radio_checkable(menu_root: String, idx: int, checkable: bool) -> void","description":"Sets the type of the item at the specified index [param idx] to radio button. If false, sets the type of the item to plain text.\n\t\t\t\tNote: This is purely cosmetic; you must add the logic for checking/unchecking items in radio groups.\n\t\t\t\tNote: This method is implemented only on macOS.","returnType":"void"},{"name":"global_menu_set_item_state","signature":"global_menu_set_item_state(menu_root: String, idx: int, state: int) -> void","description":"Sets the state of a multistate item. See [method global_menu_add_multistate_item] for details.\n\t\t\t\tNote: This method is implemented only on macOS.","returnType":"void"},{"name":"global_menu_set_item_submenu","signature":"global_menu_set_item_submenu(menu_root: String, idx: int, submenu: String) -> void","description":"Sets the submenu of the item at index [param idx]. The submenu is the ID of a global menu root that would be shown when the item is clicked.\n\t\t\t\tNote: This method is implemented only on macOS.","returnType":"void"},{"name":"global_menu_set_item_tag","signature":"global_menu_set_item_tag(menu_root: String, idx: int, tag: Variant) -> void","description":"Sets the metadata of an item, which may be of any type. You can later get it with [method global_menu_get_item_tag], which provides a simple way of assigning context data to items.\n\t\t\t\tNote: This method is implemented only on macOS.","returnType":"void"},{"name":"global_menu_set_item_text","signature":"global_menu_set_item_text(menu_root: String, idx: int, text: String) -> void","description":"Sets the text of the item at index [param idx].\n\t\t\t\tNote: This method is implemented only on macOS.","returnType":"void"},{"name":"global_menu_set_item_tooltip","signature":"global_menu_set_item_tooltip(menu_root: String, idx: int, tooltip: String) -> void","description":"Sets the  tooltip of the item at the specified index [param idx].\n\t\t\t\tNote: This method is implemented only on macOS.","returnType":"void"},{"name":"global_menu_set_popup_callbacks","signature":"global_menu_set_popup_callbacks(menu_root: String, open_callback: Callable, close_callback: Callable) -> void","description":"Registers callables to emit when the menu is respectively about to show or closed. Callback methods should have zero arguments.","returnType":"void"},{"name":"has_additional_outputs","signature":"has_additional_outputs() -> bool","description":"Returns true if any additional outputs have been registered via [method register_additional_output].","returnType":"bool"},{"name":"has_feature","signature":"has_feature(feature: int) -> bool","description":"Returns true if the specified [param feature] is supported by the current , false otherwise.","returnType":"bool"},{"name":"has_hardware_keyboard","signature":"has_hardware_keyboard() -> bool","description":"Returns true if hardware keyboard is connected.\n\t\t\t\tNote: This method is implemented on Android and iOS, on other platforms this method always returns true.","returnType":"bool"},{"name":"help_set_search_callbacks","signature":"help_set_search_callbacks(search_callback: Callable, action_callback: Callable) -> void","description":"Sets native help system search callbacks.\n\t\t\t\t[param search_callback] has the following arguments: String search_string, int result_limit and return a  with \"key, display name\" pairs for the search results. Called when the user enters search terms in the Help menu.\n\t\t\t\t[param action_callback] has the following arguments: String key. Called when the user selects a search result in the Help menu.\n\t\t\t\tNote: This method is implemented only on macOS.","returnType":"void"},{"name":"ime_get_selection","signature":"ime_get_selection() -> Vector2i","description":"Returns the text selection in the [url=https://en.wikipedia.org/wiki/Input_method]Input Method Editor composition string, with the 's x component being the caret position and y being the length of the selection.\n\t\t\t\tNote: This method is implemented only on macOS.","returnType":"Vector2i"},{"name":"ime_get_text","signature":"ime_get_text() -> String","description":"Returns the composition string contained within the [url=https://en.wikipedia.org/wiki/Input_method]Input Method Editor window.\n\t\t\t\tNote: This method is implemented only on macOS.","returnType":"String"},{"name":"is_dark_mode","signature":"is_dark_mode() -> bool","description":"Returns true if OS is using dark mode.\n\t\t\t\tNote: This method is implemented on Android, iOS, macOS, Windows, and Linux (X11/Wayland).","returnType":"bool"},{"name":"is_dark_mode_supported","signature":"is_dark_mode_supported() -> bool","description":"Returns true if OS supports dark mode.\n\t\t\t\tNote: This method is implemented on Android, iOS, macOS, Windows, and Linux (X11/Wayland).","returnType":"bool"},{"name":"is_touchscreen_available","signature":"is_touchscreen_available() -> bool","description":"Returns true if touch events are available (Android or iOS), the capability is detected on the Web platform or if [member ProjectSettings.input_devices/pointing/emulate_touch_from_mouse] is true.","returnType":"bool"},{"name":"is_window_transparency_available","signature":"is_window_transparency_available() -> bool","description":"Returns true if the window background can be made transparent. This method returns false if [member ProjectSettings.display/window/per_pixel_transparency/allowed] is set to false, or if transparency is not supported by the renderer or OS compositor.","returnType":"bool"},{"name":"keyboard_get_current_layout","signature":"keyboard_get_current_layout() -> int","description":"Returns active keyboard layout index.\n\t\t\t\tNote: This method is implemented on Linux (X11/Wayland), macOS, and Windows.","returnType":"int"},{"name":"keyboard_get_keycode_from_physical","signature":"keyboard_get_keycode_from_physical(keycode: int) -> int","description":"Converts a physical (US QWERTY) [param keycode] to one in the active keyboard layout.\n\t\t\t\tNote: This method is implemented on Linux (X11/Wayland), macOS and Windows.","returnType":"int"},{"name":"keyboard_get_label_from_physical","signature":"keyboard_get_label_from_physical(keycode: int) -> int","description":"Converts a physical (US QWERTY) [param keycode] to localized label printed on the key in the active keyboard layout.\n\t\t\t\tNote: This method is implemented on Linux (X11/Wayland), macOS and Windows.","returnType":"int"},{"name":"keyboard_get_layout_count","signature":"keyboard_get_layout_count() -> int","description":"Returns the number of keyboard layouts.\n\t\t\t\tNote: This method is implemented on Linux (X11/Wayland), macOS and Windows.","returnType":"int"},{"name":"keyboard_get_layout_language","signature":"keyboard_get_layout_language(index: int) -> String","description":"Returns the ISO-639/BCP-47 language code of the keyboard layout at position [param index].\n\t\t\t\tNote: This method is implemented on Linux (X11/Wayland), macOS and Windows.","returnType":"String"},{"name":"keyboard_get_layout_name","signature":"keyboard_get_layout_name(index: int) -> String","description":"Returns the localized name of the keyboard layout at position [param index].\n\t\t\t\tNote: This method is implemented on Linux (X11/Wayland), macOS and Windows.","returnType":"String"},{"name":"keyboard_set_current_layout","signature":"keyboard_set_current_layout(index: int) -> void","description":"Sets the active keyboard layout.\n\t\t\t\tNote: This method is implemented on Linux (X11/Wayland), macOS and Windows.","returnType":"void"},{"name":"mouse_get_button_state","signature":"mouse_get_button_state() -> int","description":"Returns the current state of mouse buttons (whether each button is pressed) as a bitmask. If multiple mouse buttons are pressed at the same time, the bits are added together. Equivalent to [method Input.get_mouse_button_mask].","returnType":"int"},{"name":"mouse_get_mode","signature":"mouse_get_mode() -> int","description":"Returns the current mouse mode. See also [method mouse_set_mode].","returnType":"int"},{"name":"mouse_get_position","signature":"mouse_get_position() -> Vector2i","description":"Returns the mouse cursor's current position in screen coordinates.","returnType":"Vector2i"},{"name":"mouse_set_mode","signature":"mouse_set_mode(mouse_mode: int) -> void","description":"Sets the current mouse mode. See also [method mouse_get_mode].","returnType":"void"},{"name":"process_events","signature":"process_events() -> void","description":"Perform window manager processing, including input flushing. See also [method force_process_and_drop_events], [method Input.flush_buffered_events] and [member Input.use_accumulated_input].","returnType":"void"},{"name":"register_additional_output","signature":"register_additional_output(object: Object) -> void","description":"Registers an  which represents an additional output that will be rendered too, beyond normal windows. The  is only used as an identifier, which can be later passed to [method unregister_additional_output].\n\t\t\t\tThis can be used to prevent Godot from skipping rendering when no normal windows are visible.","returnType":"void"},{"name":"screen_get_dpi","signature":"screen_get_dpi(screen: int) -> int","description":"Returns the dots per inch density of the specified screen. If [param screen] is [constant SCREEN_OF_MAIN_WINDOW] (the default value), a screen with the main window will be used.\n\t\t\t\tNote: On macOS, returned value is inaccurate if fractional display scaling mode is used.\n\t\t\t\tNote: On Android devices, the actual screen densities are grouped into six generalized densities:\n\t\t\t\t[codeblock lang=text]\n\t\t\t\t   ldpi - 120 dpi\n\t\t\t\t   mdpi - 160 dpi\n\t\t\t\t   hdpi - 240 dpi\n\t\t\t\t  xhdpi - 320 dpi\n\t\t\t\t xxhdpi - 480 dpi\n\t\t\t\txxxhdpi - 640 dpi\n\t\t\t\t\n\t\t\t\tNote: This method is implemented on Android, Linux (X11/Wayland), macOS and Windows. Returns 72 on unsupported platforms.","returnType":"int"},{"name":"screen_get_image","signature":"screen_get_image(screen: int) -> Image","description":"Returns screenshot of the [param screen].\n\t\t\t\tNote: This method is implemented on Linux (X11), macOS, and Windows.\n\t\t\t\tNote: On macOS, this method requires \"Screen Recording\" permission, if permission is not granted it will return desktop wallpaper color.","returnType":"Image"},{"name":"screen_get_image_rect","signature":"screen_get_image_rect(rect: Rect2i) -> Image","description":"Returns screenshot of the screen [param rect].\n\t\t\t\tNote: This method is implemented on macOS and Windows.\n\t\t\t\tNote: On macOS, this method requires \"Screen Recording\" permission, if permission is not granted it will return desktop wallpaper color.","returnType":"Image"},{"name":"screen_get_max_scale","signature":"screen_get_max_scale() -> float","description":"Returns the greatest scale factor of all screens.\n\t\t\t\tNote: On macOS returned value is 2.0 if there is at least one hiDPI (Retina) screen in the system, and 1.0 in all other cases.\n\t\t\t\tNote: This method is implemented only on macOS.","returnType":"float"},{"name":"screen_get_orientation","signature":"screen_get_orientation(screen: int) -> int","description":"Returns the [param screen]'s current orientation. See also [method screen_set_orientation].\n\t\t\t\tNote: This method is implemented on Android and iOS.","returnType":"int"},{"name":"screen_get_pixel","signature":"screen_get_pixel(position: Vector2i) -> Color","description":"Returns color of the display pixel at the [param position].\n\t\t\t\tNote: This method is implemented on Linux (X11), macOS, and Windows.\n\t\t\t\tNote: On macOS, this method requires \"Screen Recording\" permission, if permission is not granted it will return desktop wallpaper color.","returnType":"Color"},{"name":"screen_get_position","signature":"screen_get_position(screen: int) -> Vector2i","description":"Returns the screen's top-left corner position in pixels. On multi-monitor setups, the screen position is relative to the virtual desktop area. On multi-monitor setups with different screen resolutions or orientations, the origin may be located outside any display like this:\n\t\t\t\t[codeblock lang=text]\n\t\t\t\t* (0, 0)        +-------+\n\t\t\t\t                |       |\n\t\t\t\t+-------------+ |       |\n\t\t\t\t|             | |       |\n\t\t\t\t|             | |       |\n\t\t\t\t+-------------+ +-------+\n\t\t\t\t\n\t\t\t\tSee also [method screen_get_size].\n\t\t\t\tNote: On Linux (Wayland) this method always returns (0, 0).","returnType":"Vector2i"},{"name":"screen_get_refresh_rate","signature":"screen_get_refresh_rate(screen: int) -> float","description":"Returns the current refresh rate of the specified screen. If [param screen] is [constant SCREEN_OF_MAIN_WINDOW] (the default value), a screen with the main window will be used.\n\t\t\t\tNote: Returns -1.0 if the DisplayServer fails to find the refresh rate for the specified screen. On Web, [method screen_get_refresh_rate] will always return -1.0 as there is no way to retrieve the refresh rate on that platform.\n\t\t\t\tTo fallback to a default refresh rate if the method fails, try:\n\t\t\t\t\n\t\t\t\tvar refresh_rate = DisplayServer.screen_get_refresh_rate()\n\t\t\t\tif refresh_rate &lt; 0:\n\t\t\t\t    refresh_rate = 60.0\n\t\t\t\t","returnType":"float"},{"name":"screen_get_scale","signature":"screen_get_scale(screen: int) -> float","description":"Returns the scale factor of the specified screen by index.\n\t\t\t\tNote: On macOS, the returned value is 2.0 for hiDPI (Retina) screens, and 1.0 for all other cases.\n\t\t\t\tNote: On Linux (Wayland), the returned value is accurate only when [param screen] is [constant SCREEN_OF_MAIN_WINDOW]. Due to API limitations, passing a direct index will return a rounded-up integer, if the screen has a fractional scale (e.g. 1.25 would get rounded up to 2.0).\n\t\t\t\tNote: This method is implemented on Android, iOS, Web, macOS, and Linux (Wayland).","returnType":"float"},{"name":"screen_get_size","signature":"screen_get_size(screen: int) -> Vector2i","description":"Returns the screen's size in pixels. See also [method screen_get_position] and [method screen_get_usable_rect].","returnType":"Vector2i"},{"name":"screen_get_usable_rect","signature":"screen_get_usable_rect(screen: int) -> Rect2i","description":"Returns the portion of the screen that is not obstructed by a status bar in pixels. See also [method screen_get_size].","returnType":"Rect2i"},{"name":"screen_is_kept_on","signature":"screen_is_kept_on() -> bool","description":"Returns true if the screen should never be turned off by the operating system's power-saving measures. See also [method screen_set_keep_on].","returnType":"bool"},{"name":"screen_set_keep_on","signature":"screen_set_keep_on(enable: bool) -> void","description":"Sets whether the screen should never be turned off by the operating system's power-saving measures. See also [method screen_is_kept_on].","returnType":"void"},{"name":"screen_set_orientation","signature":"screen_set_orientation(orientation: int, screen: int) -> void","description":"Sets the [param screen]'s [param orientation]. See also [method screen_get_orientation].\n\t\t\t\tNote: On iOS, this method has no effect if [member ProjectSettings.display/window/handheld/orientation] is not set to [constant SCREEN_SENSOR].","returnType":"void"},{"name":"set_icon","signature":"set_icon(image: Image) -> void","description":"Sets the window icon (usually displayed in the top-left corner) with an . To use icons in the operating system's native format, use [method set_native_icon] instead.\n\t\t\t\tNote: Requires support for [constant FEATURE_ICON].","returnType":"void"},{"name":"set_native_icon","signature":"set_native_icon(filename: String) -> void","description":"Sets the window icon (usually displayed in the top-left corner) in the operating system's native format. The file at [param filename] must be in .ico format on Windows or .icns on macOS. By using specially crafted .ico or .icns icons, [method set_native_icon] allows specifying different icons depending on the size the icon is displayed at. This size is determined by the operating system and user preferences (including the display scale factor). To use icons in other formats, use [method set_icon] instead.\n\t\t\t\tNote: Requires support for [constant FEATURE_NATIVE_ICON].","returnType":"void"},{"name":"set_system_theme_change_callback","signature":"set_system_theme_change_callback(callable: Callable) -> void","description":"Sets the [param callable] that should be called when system theme settings are changed. Callback method should have zero arguments.\n\t\t\t\tNote: This method is implemented on Android, iOS, macOS, Windows, and Linux (X11/Wayland).","returnType":"void"},{"name":"show_emoji_and_symbol_picker","signature":"show_emoji_and_symbol_picker() -> void","description":"Opens system emoji and symbol picker.\n\t\t\t\tNote: This method is implemented on macOS and Windows.","returnType":"void"},{"name":"status_indicator_get_rect","signature":"status_indicator_get_rect(id: int) -> Rect2","description":"Returns the rectangle for the given status indicator [param id] in screen coordinates. If the status indicator is not visible, returns an empty .\n\t\t\t\tNote: This method is implemented on macOS and Windows.","returnType":"Rect2"},{"name":"status_indicator_set_callback","signature":"status_indicator_set_callback(id: int, callback: Callable) -> void","description":"Sets the application status indicator activation callback. [param callback] should take two arguments:  mouse button index (one of [enum MouseButton] values) and  click position in screen coordinates.\n\t\t\t\tNote: This method is implemented on macOS and Windows.","returnType":"void"},{"name":"status_indicator_set_icon","signature":"status_indicator_set_icon(id: int, icon: Texture2D) -> void","description":"Sets the application status indicator icon.\n\t\t\t\tNote: This method is implemented on macOS and Windows.","returnType":"void"},{"name":"status_indicator_set_menu","signature":"status_indicator_set_menu(id: int, menu_rid: RID) -> void","description":"Sets the application status indicator native popup menu.\n\t\t\t\tNote: On macOS, the menu is activated by any mouse button. Its activation callback is not triggered.\n\t\t\t\tNote: On Windows, the menu is activated by the right mouse button, selecting the status icon and pressing Shift + F10, or the applications key. The menu's activation callback for the other mouse buttons is still triggered.\n\t\t\t\tNote: Native popup is only supported if  supports the [constant NativeMenu.FEATURE_POPUP_MENU] feature.","returnType":"void"},{"name":"status_indicator_set_tooltip","signature":"status_indicator_set_tooltip(id: int, tooltip: String) -> void","description":"Sets the application status indicator tooltip.\n\t\t\t\tNote: This method is implemented on macOS and Windows.","returnType":"void"},{"name":"tablet_get_current_driver","signature":"tablet_get_current_driver() -> String","description":"Returns current active tablet driver name.\n\t\t\t\tNote: This method is implemented only on Windows.","returnType":"String"},{"name":"tablet_get_driver_count","signature":"tablet_get_driver_count() -> int","description":"Returns the total number of available tablet drivers.\n\t\t\t\tNote: This method is implemented only on Windows.","returnType":"int"},{"name":"tablet_get_driver_name","signature":"tablet_get_driver_name(idx: int) -> String","description":"Returns the tablet driver name for the given index.\n\t\t\t\tNote: This method is implemented only on Windows.","returnType":"String"},{"name":"tablet_set_current_driver","signature":"tablet_set_current_driver(name: String) -> void","description":"Set active tablet driver name.\n\t\t\t\tSupported drivers:\n\t\t\t\t- winink: Windows Ink API, default (Windows 8.1+ required).\n\t\t\t\t- wintab: Wacom Wintab API (compatible device driver required).\n\t\t\t\t- dummy: Dummy driver, tablet input is disabled.\n\t\t\t\tNote: This method is implemented only on Windows.","returnType":"void"},{"name":"tts_get_voices","signature":"tts_get_voices() -> Dictionary[]","description":"Returns an  of voice information dictionaries.\n\t\t\t\tEach  contains two  entries:\n\t\t\t\t- name is voice name.\n\t\t\t\t- id is voice identifier.\n\t\t\t\t- language is language code in lang_Variant format. The lang part is a 2 or 3-letter code based on the ISO-639 standard, in lowercase. The [code skip-lint]Variant part is an engine-dependent string describing country, region or/and dialect.\n\t\t\t\tNote that Godot depends on system libraries for text-to-speech functionality. These libraries are installed by default on Windows and macOS, but not on all Linux distributions. If they are not present, this method will return an empty list. This applies to both Godot users on Linux, as well as end-users on Linux running Godot games that use text-to-speech.\n\t\t\t\tNote: This method is implemented on Android, iOS, Web, Linux (X11/Wayland), macOS, and Windows.\n\t\t\t\tNote: [member ProjectSettings.audio/general/text_to_speech] should be true to use text-to-speech.","returnType":"Dictionary[]"},{"name":"tts_get_voices_for_language","signature":"tts_get_voices_for_language(language: String) -> PackedStringArray","description":"Returns an  of voice identifiers for the [param language].\n\t\t\t\tNote: This method is implemented on Android, iOS, Web, Linux (X11/Wayland), macOS, and Windows.\n\t\t\t\tNote: [member ProjectSettings.audio/general/text_to_speech] should be true to use text-to-speech.","returnType":"PackedStringArray"},{"name":"tts_is_paused","signature":"tts_is_paused() -> bool","description":"Returns true if the synthesizer is in a paused state.\n\t\t\t\tNote: This method is implemented on Android, iOS, Web, Linux (X11/Wayland), macOS, and Windows.\n\t\t\t\tNote: [member ProjectSettings.audio/general/text_to_speech] should be true to use text-to-speech.","returnType":"bool"},{"name":"tts_is_speaking","signature":"tts_is_speaking() -> bool","description":"Returns true if the synthesizer is generating speech, or have utterance waiting in the queue.\n\t\t\t\tNote: This method is implemented on Android, iOS, Web, Linux (X11/Wayland), macOS, and Windows.\n\t\t\t\tNote: [member ProjectSettings.audio/general/text_to_speech] should be true to use text-to-speech.","returnType":"bool"},{"name":"tts_pause","signature":"tts_pause() -> void","description":"Puts the synthesizer into a paused state.\n\t\t\t\tNote: This method is implemented on Android, iOS, Web, Linux (X11/Wayland), macOS, and Windows.\n\t\t\t\tNote: [member ProjectSettings.audio/general/text_to_speech] should be true to use text-to-speech.","returnType":"void"},{"name":"tts_resume","signature":"tts_resume() -> void","description":"Resumes the synthesizer if it was paused.\n\t\t\t\tNote: This method is implemented on Android, iOS, Web, Linux (X11/Wayland), macOS, and Windows.\n\t\t\t\tNote: [member ProjectSettings.audio/general/text_to_speech] should be true to use text-to-speech.","returnType":"void"},{"name":"tts_set_utterance_callback","signature":"tts_set_utterance_callback(event: int, callable: Callable) -> void","description":"Adds a callback, which is called when the utterance has started, finished, canceled or reached a text boundary.\n\t\t\t\t- [constant TTS_UTTERANCE_STARTED], [constant TTS_UTTERANCE_ENDED], and [constant TTS_UTTERANCE_CANCELED] callable's method should take one  parameter, the utterance ID.\n\t\t\t\t- [constant TTS_UTTERANCE_BOUNDARY] callable's method should take two  parameters, the index of the character and the utterance ID.\n\t\t\t\tNote: The granularity of the boundary callbacks is engine dependent.\n\t\t\t\tNote: This method is implemented on Android, iOS, Web, Linux (X11/Wayland), macOS, and Windows.\n\t\t\t\tNote: [member ProjectSettings.audio/general/text_to_speech] should be true to use text-to-speech.","returnType":"void"},{"name":"tts_speak","signature":"tts_speak(text: String, voice: String, volume: int, pitch: float, rate: float, utterance_id: int, interrupt: bool) -> void","description":"Adds an utterance to the queue. If [param interrupt] is true, the queue is cleared first.\n\t\t\t\t- [param voice] identifier is one of the \"id\" values returned by [method tts_get_voices] or one of the values returned by [method tts_get_voices_for_language].\n\t\t\t\t- [param volume] ranges from 0 (lowest) to 100 (highest).\n\t\t\t\t- [param pitch] ranges from 0.0 (lowest) to 2.0 (highest), 1.0 is default pitch for the current voice.\n\t\t\t\t- [param rate] ranges from 0.1 (lowest) to 10.0 (highest), 1.0 is a normal speaking rate. Other values act as a percentage relative.\n\t\t\t\t- [param utterance_id] is passed as a parameter to the callback functions.\n\t\t\t\tNote: On Windows and Linux (X11/Wayland), utterance [param text] can use SSML markup. SSML support is engine and voice dependent. If the engine does not support SSML, you should strip out all XML markup before calling [method tts_speak].\n\t\t\t\tNote: The granularity of pitch, rate, and volume is engine and voice dependent. Values may be truncated.\n\t\t\t\tNote: This method is implemented on Android, iOS, Web, Linux (X11/Wayland), macOS, and Windows.\n\t\t\t\tNote: [member ProjectSettings.audio/general/text_to_speech] should be true to use text-to-speech.","returnType":"void"},{"name":"tts_stop","signature":"tts_stop() -> void","description":"Stops synthesis in progress and removes all utterances from the queue.\n\t\t\t\tNote: This method is implemented on Android, iOS, Web, Linux (X11/Linux), macOS, and Windows.\n\t\t\t\tNote: [member ProjectSettings.audio/general/text_to_speech] should be true to use text-to-speech.","returnType":"void"},{"name":"unregister_additional_output","signature":"unregister_additional_output(object: Object) -> void","description":"Unregisters an  representing an additional output, that was registered via [method register_additional_output].","returnType":"void"},{"name":"virtual_keyboard_get_height","signature":"virtual_keyboard_get_height() -> int","description":"Returns the on-screen keyboard's height in pixels. Returns 0 if there is no keyboard or if it is currently hidden.","returnType":"int"},{"name":"virtual_keyboard_hide","signature":"virtual_keyboard_hide() -> void","description":"Hides the virtual keyboard if it is shown, does nothing otherwise.","returnType":"void"},{"name":"virtual_keyboard_show","signature":"virtual_keyboard_show(existing_text: String, position: Rect2, type: int, max_length: int, cursor_start: int, cursor_end: int) -> void","description":"Shows the virtual keyboard if the platform has one.\n\t\t\t\t[param existing_text] parameter is useful for implementing your own  or , as it tells the virtual keyboard what text has already been typed (the virtual keyboard uses it for auto-correct and predictions).\n\t\t\t\t[param position] parameter is the screen space  of the edited text.\n\t\t\t\t[param type] parameter allows configuring which type of virtual keyboard to show.\n\t\t\t\t[param max_length] limits the number of characters that can be entered if different from -1.\n\t\t\t\t[param cursor_start] can optionally define the current text cursor position if [param cursor_end] is not set.\n\t\t\t\t[param cursor_start] and [param cursor_end] can optionally define the current text selection.\n\t\t\t\tNote: This method is implemented on Android, iOS and Web.","returnType":"void"},{"name":"warp_mouse","signature":"warp_mouse(position: Vector2i) -> void","description":"Sets the mouse cursor position to the given [param position] relative to an origin at the upper left corner of the currently focused game Window Manager window.\n\t\t\t\tNote: [method warp_mouse] is only supported on Windows, macOS, and Linux (X11/Wayland). It has no effect on Android, iOS, and Web.","returnType":"void"},{"name":"window_can_draw","signature":"window_can_draw(window_id: int) -> bool","description":"Returns true if anything can be drawn in the window specified by [param window_id], false otherwise. Using the --disable-render-loop command line argument or a headless build will return false.","returnType":"bool"},{"name":"window_get_active_popup","signature":"window_get_active_popup() -> int","description":"Returns ID of the active popup window, or [constant INVALID_WINDOW_ID] if there is none.","returnType":"int"},{"name":"window_get_attached_instance_id","signature":"window_get_attached_instance_id(window_id: int) -> int","description":"Returns the [method Object.get_instance_id] of the  the [param window_id] is attached to.","returnType":"int"},{"name":"window_get_current_screen","signature":"window_get_current_screen(window_id: int) -> int","description":"Returns the screen the window specified by [param window_id] is currently positioned on. If the screen overlaps multiple displays, the screen where the window's center is located is returned. See also [method window_set_current_screen].","returnType":"int"},{"name":"window_get_flag","signature":"window_get_flag(flag: int, window_id: int) -> bool","description":"Returns the current value of the given window's [param flag].","returnType":"bool"},{"name":"window_get_max_size","signature":"window_get_max_size(window_id: int) -> Vector2i","description":"Returns the window's maximum size (in pixels). See also [method window_set_max_size].","returnType":"Vector2i"},{"name":"window_get_min_size","signature":"window_get_min_size(window_id: int) -> Vector2i","description":"Returns the window's minimum size (in pixels). See also [method window_set_min_size].","returnType":"Vector2i"},{"name":"window_get_mode","signature":"window_get_mode(window_id: int) -> int","description":"Returns the mode of the given window.","returnType":"int"},{"name":"window_get_native_handle","signature":"window_get_native_handle(handle_type: int, window_id: int) -> int","description":"Returns internal structure pointers for use in plugins.\n\t\t\t\tNote: This method is implemented on Android, Linux (X11/Wayland), macOS, and Windows.","returnType":"int"},{"name":"window_get_popup_safe_rect","signature":"window_get_popup_safe_rect(window: int) -> Rect2i","description":"Returns the bounding box of control, or menu item that was used to open the popup window, in the screen coordinate system.","returnType":"Rect2i"},{"name":"window_get_position","signature":"window_get_position(window_id: int) -> Vector2i","description":"Returns the position of the client area of the given window on the screen.","returnType":"Vector2i"},{"name":"window_get_position_with_decorations","signature":"window_get_position_with_decorations(window_id: int) -> Vector2i","description":"Returns the position of the given window on the screen including the borders drawn by the operating system. See also [method window_get_position].","returnType":"Vector2i"},{"name":"window_get_safe_title_margins","signature":"window_get_safe_title_margins(window_id: int) -> Vector3i","description":"Returns left margins (x), right margins (y) and height (z) of the title that are safe to use (contains no buttons or other elements) when [constant WINDOW_FLAG_EXTEND_TO_TITLE] flag is set.","returnType":"Vector3i"},{"name":"window_get_size","signature":"window_get_size(window_id: int) -> Vector2i","description":"Returns the size of the window specified by [param window_id] (in pixels), excluding the borders drawn by the operating system. This is also called the \"client area\". See also [method window_get_size_with_decorations], [method window_set_size] and [method window_get_position].","returnType":"Vector2i"},{"name":"window_get_size_with_decorations","signature":"window_get_size_with_decorations(window_id: int) -> Vector2i","description":"Returns the size of the window specified by [param window_id] (in pixels), including the borders drawn by the operating system. See also [method window_get_size].","returnType":"Vector2i"},{"name":"window_get_title_size","signature":"window_get_title_size(title: String, window_id: int) -> Vector2i","description":"Returns the estimated window title bar size (including text and window buttons) for the window specified by [param window_id] (in pixels). This method does not change the window title.\n\t\t\t\tNote: This method is implemented on macOS and Windows.","returnType":"Vector2i"},{"name":"window_get_vsync_mode","signature":"window_get_vsync_mode(window_id: int) -> int","description":"Returns the V-Sync mode of the given window.","returnType":"int"},{"name":"window_is_focused","signature":"window_is_focused(window_id: int) -> bool","description":"Returns true if the window specified by [param window_id] is focused.","returnType":"bool"},{"name":"window_is_maximize_allowed","signature":"window_is_maximize_allowed(window_id: int) -> bool","description":"Returns true if the given window can be maximized (the maximize button is enabled).","returnType":"bool"},{"name":"window_maximize_on_title_dbl_click","signature":"window_maximize_on_title_dbl_click() -> bool","description":"Returns true, if double-click on a window title should maximize it.\n\t\t\t\tNote: This method is implemented only on macOS.","returnType":"bool"},{"name":"window_minimize_on_title_dbl_click","signature":"window_minimize_on_title_dbl_click() -> bool","description":"Returns true, if double-click on a window title should minimize it.\n\t\t\t\tNote: This method is implemented only on macOS.","returnType":"bool"},{"name":"window_move_to_foreground","signature":"window_move_to_foreground(window_id: int) -> void","description":"Moves the window specified by [param window_id] to the foreground, so that it is visible over other windows.","returnType":"void"},{"name":"window_request_attention","signature":"window_request_attention(window_id: int) -> void","description":"Makes the window specified by [param window_id] request attention, which is materialized by the window title and taskbar entry blinking until the window is focused. This usually has no visible effect if the window is currently focused. The exact behavior varies depending on the operating system.","returnType":"void"},{"name":"window_set_current_screen","signature":"window_set_current_screen(screen: int, window_id: int) -> void","description":"Moves the window specified by [param window_id] to the specified [param screen]. See also [method window_get_current_screen].","returnType":"void"},{"name":"window_set_drop_files_callback","signature":"window_set_drop_files_callback(callback: Callable, window_id: int) -> void","description":"Sets the [param callback] that should be called when files are dropped from the operating system's file manager to the window specified by [param window_id]. [param callback] should take one  argument, which is the list of dropped files.\n\t\t\t\tWarning: Advanced users only! Adding such a callback to a  node will override its default implementation, which can introduce bugs.\n\t\t\t\tNote: This method is implemented on Windows, macOS, Linux (X11/Wayland), and Web.","returnType":"void"},{"name":"window_set_exclusive","signature":"window_set_exclusive(window_id: int, exclusive: bool) -> void","description":"If set to true, this window will always stay on top of its parent window, parent window will ignore input while this window is opened.\n\t\t\t\tNote: On macOS, exclusive windows are confined to the same space (virtual desktop or screen) as the parent window.\n\t\t\t\tNote: This method is implemented on macOS and Windows.","returnType":"void"},{"name":"window_set_flag","signature":"window_set_flag(flag: int, enabled: bool, window_id: int) -> void","description":"Enables or disables the given window's given [param flag]. See [enum WindowFlags] for possible values and their behavior.","returnType":"void"},{"name":"window_set_ime_active","signature":"window_set_ime_active(active: bool, window_id: int) -> void","description":"Sets whether [url=https://en.wikipedia.org/wiki/Input_method]Input Method Editor should be enabled for the window specified by [param window_id]. See also [method window_set_ime_position].","returnType":"void"},{"name":"window_set_ime_position","signature":"window_set_ime_position(position: Vector2i, window_id: int) -> void","description":"Sets the position of the [url=https://en.wikipedia.org/wiki/Input_method]Input Method Editor popup for the specified [param window_id]. Only effective if [method window_set_ime_active] was set to true for the specified [param window_id].","returnType":"void"},{"name":"window_set_input_event_callback","signature":"window_set_input_event_callback(callback: Callable, window_id: int) -> void","description":"Sets the [param callback] that should be called when any  is sent to the window specified by [param window_id].\n\t\t\t\tWarning: Advanced users only! Adding such a callback to a  node will override its default implementation, which can introduce bugs.","returnType":"void"},{"name":"window_set_input_text_callback","signature":"window_set_input_text_callback(callback: Callable, window_id: int) -> void","description":"Sets the [param callback] that should be called when text is entered using the virtual keyboard to the window specified by [param window_id].\n\t\t\t\tWarning: Advanced users only! Adding such a callback to a  node will override its default implementation, which can introduce bugs.","returnType":"void"},{"name":"window_set_max_size","signature":"window_set_max_size(max_size: Vector2i, window_id: int) -> void","description":"Sets the maximum size of the window specified by [param window_id] in pixels. Normally, the user will not be able to drag the window to make it larger than the specified size. See also [method window_get_max_size].\n\t\t\t\tNote: It's recommended to change this value using [member Window.max_size] instead.\n\t\t\t\tNote: Using third-party tools, it is possible for users to disable window geometry restrictions and therefore bypass this limit.","returnType":"void"},{"name":"window_set_min_size","signature":"window_set_min_size(min_size: Vector2i, window_id: int) -> void","description":"Sets the minimum size for the given window to [param min_size] in pixels. Normally, the user will not be able to drag the window to make it smaller than the specified size. See also [method window_get_min_size].\n\t\t\t\tNote: It's recommended to change this value using [member Window.min_size] instead.\n\t\t\t\tNote: By default, the main window has a minimum size of Vector2i(64, 64). This prevents issues that can arise when the window is resized to a near-zero size.\n\t\t\t\tNote: Using third-party tools, it is possible for users to disable window geometry restrictions and therefore bypass this limit.","returnType":"void"},{"name":"window_set_mode","signature":"window_set_mode(mode: int, window_id: int) -> void","description":"Sets window mode for the given window to [param mode]. See [enum WindowMode] for possible values and how each mode behaves.\n\t\t\t\tNote: On Android, setting it to [constant WINDOW_MODE_FULLSCREEN] or [constant WINDOW_MODE_EXCLUSIVE_FULLSCREEN] will enable immersive mode.\n\t\t\t\tNote: Setting the window to full screen forcibly sets the borderless flag to true, so make sure to set it back to false when not wanted.","returnType":"void"},{"name":"window_set_mouse_passthrough","signature":"window_set_mouse_passthrough(region: PackedVector2Array, window_id: int) -> void","description":"Sets a polygonal region of the window which accepts mouse events. Mouse events outside the region will be passed through.\n\t\t\t\tPassing an empty array will disable passthrough support (all mouse events will be intercepted by the window, which is the default behavior).\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t# Set region, using Path2D node.\n\t\t\t\tDisplayServer.window_set_mouse_passthrough($Path2D.curve.get_baked_points())\n\n\t\t\t\t# Set region, using Polygon2D node.\n\t\t\t\tDisplayServer.window_set_mouse_passthrough($Polygon2D.polygon)\n\n\t\t\t\t# Reset region to default.\n\t\t\t\tDisplayServer.window_set_mouse_passthrough([])\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t// Set region, using Path2D node.\n\t\t\t\tDisplayServer.WindowSetMousePassthrough(GetNode&lt;Path2D&gt;(\"Path2D\").Curve.GetBakedPoints());\n\n\t\t\t\t// Set region, using Polygon2D node.\n\t\t\t\tDisplayServer.WindowSetMousePassthrough(GetNode&lt;Polygon2D&gt;(\"Polygon2D\").Polygon);\n\n\t\t\t\t// Reset region to default.\n\t\t\t\tDisplayServer.WindowSetMousePassthrough([]);\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tNote: On Windows, the portion of a window that lies outside the region is not drawn, while on Linux (X11) and macOS it is.\n\t\t\t\tNote: This method is implemented on Linux (X11), macOS and Windows.","returnType":"void"},{"name":"window_set_popup_safe_rect","signature":"window_set_popup_safe_rect(window: int, rect: Rect2i) -> void","description":"Sets the bounding box of control, or menu item that was used to open the popup window, in the screen coordinate system. Clicking this area will not auto-close this popup.","returnType":"void"},{"name":"window_set_position","signature":"window_set_position(position: Vector2i, window_id: int) -> void","description":"Sets the position of the given window to [param position]. On multi-monitor setups, the screen position is relative to the virtual desktop area. On multi-monitor setups with different screen resolutions or orientations, the origin may be located outside any display like this:\n\t\t\t\t[codeblock lang=text]\n\t\t\t\t* (0, 0)        +-------+\n\t\t\t\t                |       |\n\t\t\t\t+-------------+ |       |\n\t\t\t\t|             | |       |\n\t\t\t\t|             | |       |\n\t\t\t\t+-------------+ +-------+\n\t\t\t\t\n\t\t\t\tSee also [method window_get_position] and [method window_set_size].\n\t\t\t\tNote: It's recommended to change this value using [member Window.position] instead.\n\t\t\t\tNote: On Linux (Wayland): this method is a no-op.","returnType":"void"},{"name":"window_set_rect_changed_callback","signature":"window_set_rect_changed_callback(callback: Callable, window_id: int) -> void","description":"Sets the [param callback] that will be called when the window specified by [param window_id] is moved or resized.\n\t\t\t\tWarning: Advanced users only! Adding such a callback to a  node will override its default implementation, which can introduce bugs.","returnType":"void"},{"name":"window_set_size","signature":"window_set_size(size: Vector2i, window_id: int) -> void","description":"Sets the size of the given window to [param size] (in pixels). See also [method window_get_size] and [method window_get_position].\n\t\t\t\tNote: It's recommended to change this value using [member Window.size] instead.","returnType":"void"},{"name":"window_set_title","signature":"window_set_title(title: String, window_id: int) -> void","description":"Sets the title of the given window to [param title].\n\t\t\t\tNote: It's recommended to change this value using [member Window.title] instead.\n\t\t\t\tNote: Avoid changing the window title every frame, as this can cause performance issues on certain window managers. Try to change the window title only a few times per second at most.","returnType":"void"},{"name":"window_set_transient","signature":"window_set_transient(window_id: int, parent_window_id: int) -> void","description":"Sets window transient parent. Transient window will be destroyed with its transient parent and will return focus to their parent when closed. The transient window is displayed on top of a non-exclusive full-screen parent window. Transient windows can't enter full-screen mode.\n\t\t\t\tNote: It's recommended to change this value using [member Window.transient] instead.\n\t\t\t\tNote: The behavior might be different depending on the platform.","returnType":"void"},{"name":"window_set_vsync_mode","signature":"window_set_vsync_mode(vsync_mode: int, window_id: int) -> void","description":"Sets the V-Sync mode of the given window. See also [member ProjectSettings.display/window/vsync/vsync_mode].\n\t\t\t\tSee [enum DisplayServer.VSyncMode] for possible values and how they affect the behavior of your application.\n\t\t\t\tDepending on the platform and used renderer, the engine will fall back to [constant VSYNC_ENABLED] if the desired mode is not supported.\n\t\t\t\tNote: V-Sync modes other than [constant VSYNC_ENABLED] are only supported in the Forward+ and Mobile rendering methods, not Compatibility.","returnType":"void"},{"name":"window_set_window_buttons_offset","signature":"window_set_window_buttons_offset(offset: Vector2i, window_id: int) -> void","description":"When [constant WINDOW_FLAG_EXTEND_TO_TITLE] flag is set, set offset to the center of the first titlebar button.\n\t\t\t\tNote: This flag is implemented only on macOS.","returnType":"void"},{"name":"window_set_window_event_callback","signature":"window_set_window_event_callback(callback: Callable, window_id: int) -> void","description":"Sets the [param callback] that will be called when an event occurs in the window specified by [param window_id].\n\t\t\t\tWarning: Advanced users only! Adding such a callback to a  node will override its default implementation, which can introduce bugs.","returnType":"void"},{"name":"window_start_drag","signature":"window_start_drag(window_id: int) -> void","description":"Starts an interactive drag operation on the window with the given [param window_id], using the current mouse position. Call this method when handling a mouse button being pressed to simulate a pressed event on the window's title bar. Using this method allows the window to participate in space switching, tiling, and other system features.\n\t\t\t\tNote: This method is implemented on Linux (X11/Wayland), macOS, and Windows.","returnType":"void"},{"name":"window_start_resize","signature":"window_start_resize(edge: int, window_id: int) -> void","description":"Starts an interactive resize operation on the window with the given [param window_id], using the current mouse position. Call this method when handling a mouse button being pressed to simulate a pressed event on the window's edge.\n\t\t\t\tNote: This method is implemented on Linux (X11/Wayland), macOS, and Windows.","returnType":"void"}],"signals":[]},"EditorCommandPalette":{"name":"EditorCommandPalette","description":"Godot editor's command palette.","inherits":"ConfirmationDialog","properties":[],"methods":[{"name":"add_command","signature":"add_command(command_name: String, key_name: String, binded_callable: Callable, shortcut_text: String) -> void","description":"Adds a custom command to EditorCommandPalette.\n\t\t\t\t- [param command_name]:  (Name of the Command. This is displayed to the user.)\n\t\t\t\t- [param key_name]:  (Name of the key for a particular Command. This is used to uniquely identify the Command.)\n\t\t\t\t- [param binded_callable]:  (Callable of the Command. This will be executed when the Command is selected.)\n\t\t\t\t- [param shortcut_text]:  (Shortcut text of the Command if available.)","returnType":"void"},{"name":"remove_command","signature":"remove_command(key_name: String) -> void","description":"Removes the custom command from EditorCommandPalette.\n\t\t\t\t- [param key_name]:  (Name of the key for a particular Command.)","returnType":"void"}],"signals":[]},"EditorContextMenuPlugin":{"name":"EditorContextMenuPlugin","description":"Plugin for adding custom context menus in the editor.","inherits":"RefCounted","properties":[],"methods":[{"name":"_popup_menu","signature":"_popup_menu(paths: PackedStringArray) -> void","description":"Called when creating a context menu, custom options can be added by using the [method add_context_menu_item] or [method add_context_menu_item_from_shortcut] functions. [param paths] contains currently selected paths (depending on menu), which can be used to conditionally add options.","returnType":"void"},{"name":"add_context_menu_item","signature":"add_context_menu_item(name: String, callback: Callable, icon: Texture2D) -> void","description":"Add custom option to the context menu of the plugin's specified slot. When the option is activated, [param callback] will be called. Callback should take single  argument; array contents depend on context menu slot.\n\t\t\t\t\n\t\t\t\tfunc _popup_menu(paths):\n\t\t\t\t    add_context_menu_item(\"File Custom options\", handle, ICON)\n\t\t\t\t\n\t\t\t\tIf you want to assign shortcut to the menu item, use [method add_context_menu_item_from_shortcut] instead.","returnType":"void"},{"name":"add_context_menu_item_from_shortcut","signature":"add_context_menu_item_from_shortcut(name: String, shortcut: Shortcut, icon: Texture2D) -> void","description":"Add custom option to the context menu of the plugin's specified slot. The option will have the [param shortcut] assigned and reuse its callback. The shortcut has to be registered beforehand with [method add_menu_shortcut].\n\t\t\t\t\n\t\t\t\tfunc _init():\n\t\t\t\t    add_menu_shortcut(SHORTCUT, handle)\n\n\t\t\t\tfunc _popup_menu(paths):\n\t\t\t\t    add_context_menu_item_from_shortcut(\"File Custom options\", SHORTCUT, ICON)\n\t\t\t\t","returnType":"void"},{"name":"add_context_submenu_item","signature":"add_context_submenu_item(name: String, menu: PopupMenu, icon: Texture2D) -> void","description":"Add a submenu to the context menu of the plugin's specified slot. The submenu is not automatically handled, you need to connect to its signals yourself. Also the submenu is freed on every popup, so provide a new  every time.\n\t\t\t\t\n\t\t\t\tfunc _popup_menu(paths):\n\t\t\t\t    var popup_menu = PopupMenu.new()\n\t\t\t\t    popup_menu.add_item(\"Blue\")\n\t\t\t\t    popup_menu.add_item(\"White\")\n\t\t\t\t    popup_menu.id_pressed.connect(_on_color_submenu_option)\n\n\t\t\t\t    add_context_submenu_item(\"Set Node Color\", popup_menu)\n\t\t\t\t","returnType":"void"},{"name":"add_menu_shortcut","signature":"add_menu_shortcut(shortcut: Shortcut, callback: Callable) -> void","description":"Registers a shortcut associated with the plugin's context menu. This method should be called once (e.g. in plugin's [method Object._init]). [param callback] will be called when user presses the specified [param shortcut] while the menu's context is in effect (e.g. FileSystem dock is focused). Callback should take single  argument; array contents depend on context menu slot.\n\t\t\t\t\n\t\t\t\tfunc _init():\n\t\t\t\t    add_menu_shortcut(SHORTCUT, handle)\n\t\t\t\t","returnType":"void"}],"signals":[]},"EditorDebuggerPlugin":{"name":"EditorDebuggerPlugin","description":"A base class to implement debugger plugins.","inherits":"RefCounted","properties":[],"methods":[{"name":"_breakpoint_set_in_tree","signature":"_breakpoint_set_in_tree(script: Script, line: int, enabled: bool) -> void","description":"Override this method to be notified when a breakpoint is set in the editor.","returnType":"void"},{"name":"_breakpoints_cleared_in_tree","signature":"_breakpoints_cleared_in_tree() -> void","description":"Override this method to be notified when all breakpoints are cleared in the editor.","returnType":"void"},{"name":"_capture","signature":"_capture(message: String, data: Array, session_id: int) -> bool","description":"Override this method to process incoming messages. The [param session_id] is the ID of the  that received the [param message]. Use [method get_session] to retrieve the session. This method should return true if the message is recognized.","returnType":"bool"},{"name":"_goto_script_line","signature":"_goto_script_line(script: Script, line: int) -> void","description":"Override this method to be notified when a breakpoint line has been clicked in the debugger breakpoint panel.","returnType":"void"},{"name":"_has_capture","signature":"_has_capture(capture: String) -> bool","description":"Override this method to enable receiving messages from the debugger. If [param capture] is \"my_message\" then messages starting with \"my_message:\" will be passed to the [method _capture] method.","returnType":"bool"},{"name":"_setup_session","signature":"_setup_session(session_id: int) -> void","description":"Override this method to be notified whenever a new  is created. Note that the session may be inactive during this stage.","returnType":"void"},{"name":"get_session","signature":"get_session(id: int) -> EditorDebuggerSession","description":"Returns the  with the given [param id].","returnType":"EditorDebuggerSession"},{"name":"get_sessions","signature":"get_sessions() -> Array","description":"Returns an array of  currently available to this debugger plugin.\n\t\t\t\tNote: Sessions in the array may be inactive, check their state via [method EditorDebuggerSession.is_active].","returnType":"Array"}],"signals":[]},"EditorDebuggerSession":{"name":"EditorDebuggerSession","description":"A class to interact with the editor debugger.","inherits":"RefCounted","properties":[],"methods":[{"name":"add_session_tab","signature":"add_session_tab(control: Control) -> void","description":"Adds the given [param control] to the debug session UI in the debugger bottom panel. The [param control]'s node name will be used as the tab title.","returnType":"void"},{"name":"is_active","signature":"is_active() -> bool","description":"Returns true if the debug session is currently attached to a remote instance.","returnType":"bool"},{"name":"is_breaked","signature":"is_breaked() -> bool","description":"Returns true if the attached remote instance is currently in the debug loop.","returnType":"bool"},{"name":"is_debuggable","signature":"is_debuggable() -> bool","description":"Returns true if the attached remote instance can be debugged.","returnType":"bool"},{"name":"remove_session_tab","signature":"remove_session_tab(control: Control) -> void","description":"Removes the given [param control] from the debug session UI in the debugger bottom panel.","returnType":"void"},{"name":"send_message","signature":"send_message(message: String, data: Array) -> void","description":"Sends the given [param message] to the attached remote instance, optionally passing additionally [param data]. See  for how to retrieve those messages.","returnType":"void"},{"name":"set_breakpoint","signature":"set_breakpoint(path: String, line: int, enabled: bool) -> void","description":"Enables or disables a specific breakpoint based on [param enabled], updating the Editor Breakpoint Panel accordingly.","returnType":"void"},{"name":"toggle_profiler","signature":"toggle_profiler(profiler: String, enable: bool, data: Array) -> void","description":"Toggle the given [param profiler] on the attached remote instance, optionally passing additionally [param data]. See  for more details.","returnType":"void"}],"signals":[{"name":"breaked","description":"Emitted when the attached remote instance enters a break state. If [param can_debug] is [code]true[/code], the remote instance will enter the debug loop."},{"name":"continued","description":"Emitted when the attached remote instance exits a break state."},{"name":"started","description":"Emitted when a remote instance is attached to this session (i.e. the session becomes active)."},{"name":"stopped","description":"Emitted when a remote instance is detached from this session (i.e. the session becomes inactive)."}]},"EditorExportPlatform":{"name":"EditorExportPlatform","description":"Identifies a supported export platform, and internally provides the functionality of exporting to that platform.","inherits":"RefCounted","properties":[],"methods":[{"name":"add_message","signature":"add_message(type: int, category: String, message: String) -> void","description":"Adds a message to the export log that will be displayed when exporting ends.","returnType":"void"},{"name":"clear_messages","signature":"clear_messages() -> void","description":"Clears the export log.","returnType":"void"},{"name":"create_preset","signature":"create_preset() -> EditorExportPreset","description":"Create a new preset for this platform.","returnType":"EditorExportPreset"},{"name":"export_pack","signature":"export_pack(preset: EditorExportPreset, debug: bool, path: String, flags: int) -> int","description":"Creates a PCK archive at [param path] for the specified [param preset].","returnType":"int"},{"name":"export_pack_patch","signature":"export_pack_patch(preset: EditorExportPreset, debug: bool, path: String, patches: PackedStringArray, flags: int) -> int","description":"Creates a patch PCK archive at [param path] for the specified [param preset], containing only the files that have changed since the last patch.\n\t\t\t\tNote: [param patches] is an optional override of the set of patches defined in the export preset. When empty the patches defined in the export preset will be used instead.","returnType":"int"},{"name":"export_project","signature":"export_project(preset: EditorExportPreset, debug: bool, path: String, flags: int) -> int","description":"Creates a full project at [param path] for the specified [param preset].","returnType":"int"},{"name":"export_project_files","signature":"export_project_files(preset: EditorExportPreset, debug: bool, save_cb: Callable, shared_cb: Callable) -> int","description":"Exports project files for the specified preset. This method can be used to implement custom export format, other than PCK and ZIP. One of the callbacks is called for each exported file.\n\t\t\t\t[param save_cb] is called for all exported files and have the following arguments: file_path: String, file_data: PackedByteArray, file_index: int, file_count: int, encryption_include_filters: PackedStringArray, encryption_exclude_filters: PackedStringArray, encryption_key: PackedByteArray.\n\t\t\t\t[param shared_cb] is called for exported native shared/static libraries and have the following arguments: file_path: String, tags: PackedStringArray, target_folder: String.\n\t\t\t\tNote: file_index and file_count are intended for progress tracking only and aren't necessarily unique and precise.","returnType":"int"},{"name":"export_zip","signature":"export_zip(preset: EditorExportPreset, debug: bool, path: String, flags: int) -> int","description":"Create a ZIP archive at [param path] for the specified [param preset].","returnType":"int"},{"name":"export_zip_patch","signature":"export_zip_patch(preset: EditorExportPreset, debug: bool, path: String, patches: PackedStringArray, flags: int) -> int","description":"Create a patch ZIP archive at [param path] for the specified [param preset], containing only the files that have changed since the last patch.\n\t\t\t\tNote: [param patches] is an optional override of the set of patches defined in the export preset. When empty the patches defined in the export preset will be used instead.","returnType":"int"},{"name":"find_export_template","signature":"find_export_template(template_file_name: String) -> Dictionary","description":"Locates export template for the platform, and returns  with the following keys: path: String and error: String. This method is provided for convenience and custom export platforms aren't required to use it or keep export templates stored in the same way official templates are.","returnType":"Dictionary"},{"name":"gen_export_flags","signature":"gen_export_flags(flags: int) -> PackedStringArray","description":"Generates array of command line arguments for the default export templates for the debug flags and editor settings.","returnType":"PackedStringArray"},{"name":"get_current_presets","signature":"get_current_presets() -> Array","description":"Returns array of s for this platform.","returnType":"Array"},{"name":"get_forced_export_files","signature":"get_forced_export_files() -> PackedStringArray","description":"Returns array of core file names that always should be exported regardless of preset config.","returnType":"PackedStringArray"},{"name":"get_internal_export_files","signature":"get_internal_export_files(preset: EditorExportPreset, debug: bool) -> Dictionary","description":"Returns additional files that should always be exported regardless of preset configuration, and are not part of the project source. The returned  contains filename keys () and their corresponding raw data ().","returnType":"Dictionary"},{"name":"get_message_category","signature":"get_message_category(index: int) -> String","description":"Returns message category, for the message with [param index].","returnType":"String"},{"name":"get_message_count","signature":"get_message_count() -> int","description":"Returns number of messages in the export log.","returnType":"int"},{"name":"get_message_text","signature":"get_message_text(index: int) -> String","description":"Returns message text, for the message with [param index].","returnType":"String"},{"name":"get_message_type","signature":"get_message_type(index: int) -> int","description":"Returns message type, for the message with [param index].","returnType":"int"},{"name":"get_os_name","signature":"get_os_name() -> String","description":"Returns the name of the export operating system handled by this  class, as a friendly string. Possible return values are Windows, Linux, macOS, Android, iOS, and Web.","returnType":"String"},{"name":"get_worst_message_type","signature":"get_worst_message_type() -> int","description":"Returns most severe message type currently present in the export log.","returnType":"int"},{"name":"save_pack","signature":"save_pack(preset: EditorExportPreset, debug: bool, path: String, embed: bool) -> Dictionary","description":"Saves PCK archive and returns  with the following keys: result: Error, so_files: Array (array of the shared/static objects which contains dictionaries with the following keys: path: String, tags: PackedStringArray, and target_folder: String).\n\t\t\t\tIf [param embed] is true, PCK content is appended to the end of [param path] file and return  additionally include following keys: embedded_start: int (embedded PCK offset) and embedded_size: int (embedded PCK size).","returnType":"Dictionary"},{"name":"save_pack_patch","signature":"save_pack_patch(preset: EditorExportPreset, debug: bool, path: String) -> Dictionary","description":"Saves patch PCK archive and returns  with the following keys: result: Error, so_files: Array (array of the shared/static objects which contains dictionaries with the following keys: path: String, tags: PackedStringArray, and target_folder: String).","returnType":"Dictionary"},{"name":"save_zip","signature":"save_zip(preset: EditorExportPreset, debug: bool, path: String) -> Dictionary","description":"Saves ZIP archive and returns  with the following keys: result: Error, so_files: Array (array of the shared/static objects which contains dictionaries with the following keys: path: String, tags: PackedStringArray, and target_folder: String).","returnType":"Dictionary"},{"name":"save_zip_patch","signature":"save_zip_patch(preset: EditorExportPreset, debug: bool, path: String) -> Dictionary","description":"Saves patch ZIP archive and returns  with the following keys: result: Error, so_files: Array (array of the shared/static objects which contains dictionaries with the following keys: path: String, tags: PackedStringArray, and target_folder: String).","returnType":"Dictionary"},{"name":"ssh_push_to_remote","signature":"ssh_push_to_remote(host: String, port: String, scp_args: PackedStringArray, src_file: String, dst_file: String) -> int","description":"Uploads specified file over SCP protocol to the remote host.","returnType":"int"},{"name":"ssh_run_on_remote","signature":"ssh_run_on_remote(host: String, port: String, ssh_arg: PackedStringArray, cmd_args: String, output: Array, port_fwd: int) -> int","description":"Executes specified command on the remote host via SSH protocol and returns command output in the [param output].","returnType":"int"},{"name":"ssh_run_on_remote_no_wait","signature":"ssh_run_on_remote_no_wait(host: String, port: String, ssh_args: PackedStringArray, cmd_args: String, port_fwd: int) -> int","description":"Executes specified command on the remote host via SSH protocol and returns process ID (on the remote host) without waiting for command to finish.","returnType":"int"}],"signals":[]},"EditorExportPlatformExtension":{"name":"EditorExportPlatformExtension","description":"Base class for custom  implementations (plugins).","inherits":"EditorExportPlatform","properties":[],"methods":[{"name":"_can_export","signature":"_can_export(preset: EditorExportPreset, debug: bool) -> bool","description":"Optional.\n\t\t\t\tReturns true, if specified [param preset] is valid and can be exported. Use [method set_config_error] and [method set_config_missing_templates] to set error details.\n\t\t\t\tUsual implementation can call [method _has_valid_export_configuration] and [method _has_valid_project_configuration] to determine if export is possible.","returnType":"bool"},{"name":"_cleanup","signature":"_cleanup() -> void","description":"Optional.\n\t\t\t\tCalled by the editor before platform is unregistered.","returnType":"void"},{"name":"_export_pack","signature":"_export_pack(preset: EditorExportPreset, debug: bool, path: String, flags: int) -> int","description":"Optional.\n\t\t\t\tCreates a PCK archive at [param path] for the specified [param preset].\n\t\t\t\tThis method is called when \"Export PCK/ZIP\" button is pressed in the export dialog, with \"Export as Patch\" disabled, and PCK is selected as a file type.","returnType":"int"},{"name":"_export_pack_patch","signature":"_export_pack_patch(preset: EditorExportPreset, debug: bool, path: String, patches: PackedStringArray, flags: int) -> int","description":"Optional.\n\t\t\t\tCreates a patch PCK archive at [param path] for the specified [param preset], containing only the files that have changed since the last patch.\n\t\t\t\tThis method is called when \"Export PCK/ZIP\" button is pressed in the export dialog, with \"Export as Patch\" enabled, and PCK is selected as a file type.\n\t\t\t\tNote: The patches provided in [param patches] have already been loaded when this method is called and are merely provided as context. When empty the patches defined in the export preset have been loaded instead.","returnType":"int"},{"name":"_export_project","signature":"_export_project(preset: EditorExportPreset, debug: bool, path: String, flags: int) -> int","description":"Required.\n\t\t\t\tCreates a full project at [param path] for the specified [param preset].\n\t\t\t\tThis method is called when \"Export\" button is pressed in the export dialog.\n\t\t\t\tThis method implementation can call [method EditorExportPlatform.save_pack] or [method EditorExportPlatform.save_zip] to use default PCK/ZIP export process, or calls [method EditorExportPlatform.export_project_files] and implement custom callback for processing each exported file.","returnType":"int"},{"name":"_export_zip","signature":"_export_zip(preset: EditorExportPreset, debug: bool, path: String, flags: int) -> int","description":"Optional.\n\t\t\t\tCreate a ZIP archive at [param path] for the specified [param preset].\n\t\t\t\tThis method is called when \"Export PCK/ZIP\" button is pressed in the export dialog, with \"Export as Patch\" disabled, and ZIP is selected as a file type.","returnType":"int"},{"name":"_export_zip_patch","signature":"_export_zip_patch(preset: EditorExportPreset, debug: bool, path: String, patches: PackedStringArray, flags: int) -> int","description":"Optional.\n\t\t\t\tCreate a ZIP archive at [param path] for the specified [param preset], containing only the files that have changed since the last patch.\n\t\t\t\tThis method is called when \"Export PCK/ZIP\" button is pressed in the export dialog, with \"Export as Patch\" enabled, and ZIP is selected as a file type.\n\t\t\t\tNote: The patches provided in [param patches] have already been loaded when this method is called and are merely provided as context. When empty the patches defined in the export preset have been loaded instead.","returnType":"int"},{"name":"_get_binary_extensions","signature":"_get_binary_extensions(preset: EditorExportPreset) -> PackedStringArray","description":"Required.\n\t\t\t\tReturns array of supported binary extensions for the full project export.","returnType":"PackedStringArray"},{"name":"_get_debug_protocol","signature":"_get_debug_protocol() -> String","description":"Optional.\n\t\t\t\tReturns protocol used for remote debugging. Default implementation return tcp://.","returnType":"String"},{"name":"_get_device_architecture","signature":"_get_device_architecture(device: int) -> String","description":"Optional.\n\t\t\t\tReturns device architecture for one-click deploy.","returnType":"String"},{"name":"_get_export_option_visibility","signature":"_get_export_option_visibility(preset: EditorExportPreset, option: String) -> bool","description":"Optional.\n\t\t\t\tValidates [param option] and returns visibility for the specified [param preset]. Default implementation return true for all options.","returnType":"bool"},{"name":"_get_export_option_warning","signature":"_get_export_option_warning(preset: EditorExportPreset, option: StringName) -> String","description":"Optional.\n\t\t\t\tValidates [param option] and returns warning message for the specified [param preset]. Default implementation return empty string for all options.","returnType":"String"},{"name":"_get_export_options","signature":"_get_export_options() -> Dictionary[]","description":"Optional.\n\t\t\t\tReturns a property list, as an  of dictionaries. Each  must at least contain the name: StringName and type: Variant.Type entries.\n\t\t\t\tAdditionally, the following keys are supported:\n\t\t\t\t- hint: PropertyHint\n\t\t\t\t- hint_string: String\n\t\t\t\t- usage: PropertyUsageFlags\n\t\t\t\t- class_name: StringName\n\t\t\t\t- default_value: Variant, default value of the property.\n\t\t\t\t- update_visibility: bool, if set to true, [method _get_export_option_visibility] is called for each property when this property is changed.\n\t\t\t\t- required: bool, if set to true, this property warnings are critical, and should be resolved to make export possible. This value is a hint for the [method _has_valid_export_configuration] implementation, and not used by the engine directly.\n\t\t\t\tSee also [method Object._get_property_list].","returnType":"Dictionary[]"},{"name":"_get_logo","signature":"_get_logo() -> Texture2D","description":"Required.\n\t\t\t\tReturns platform logo displayed in the export dialog, logo should be 32x32 adjusted to the current editor scale, see [method EditorInterface.get_editor_scale].","returnType":"Texture2D"},{"name":"_get_name","signature":"_get_name() -> String","description":"Required.\n\t\t\t\tReturns export platform name.","returnType":"String"},{"name":"_get_option_icon","signature":"_get_option_icon(device: int) -> ImageTexture","description":"Optional.\n\t\t\t\tReturns one-click deploy menu item icon for the specified [param device], icon should be 16x16 adjusted to the current editor scale, see [method EditorInterface.get_editor_scale].","returnType":"ImageTexture"},{"name":"_get_option_label","signature":"_get_option_label(device: int) -> String","description":"Optional.\n\t\t\t\tReturns one-click deploy menu item label for the specified [param device].","returnType":"String"},{"name":"_get_option_tooltip","signature":"_get_option_tooltip(device: int) -> String","description":"Optional.\n\t\t\t\tReturns one-click deploy menu item tooltip for the specified [param device].","returnType":"String"},{"name":"_get_options_count","signature":"_get_options_count() -> int","description":"Optional.\n\t\t\t\tReturns number one-click deploy devices (or other one-click option displayed in the menu).","returnType":"int"},{"name":"_get_options_tooltip","signature":"_get_options_tooltip() -> String","description":"Optional.\n\t\t\t\tReturns tooltip of the one-click deploy menu button.","returnType":"String"},{"name":"_get_os_name","signature":"_get_os_name() -> String","description":"Required.\n\t\t\t\tReturns target OS name.","returnType":"String"},{"name":"_get_platform_features","signature":"_get_platform_features() -> PackedStringArray","description":"Required.\n\t\t\t\tReturns array of platform specific features.","returnType":"PackedStringArray"},{"name":"_get_preset_features","signature":"_get_preset_features(preset: EditorExportPreset) -> PackedStringArray","description":"Required.\n\t\t\t\tReturns array of platform specific features for the specified [param preset].","returnType":"PackedStringArray"},{"name":"_get_run_icon","signature":"_get_run_icon() -> Texture2D","description":"Optional.\n\t\t\t\tReturns icon of the one-click deploy menu button, icon should be 16x16 adjusted to the current editor scale, see [method EditorInterface.get_editor_scale].","returnType":"Texture2D"},{"name":"_has_valid_export_configuration","signature":"_has_valid_export_configuration(preset: EditorExportPreset, debug: bool) -> bool","description":"Required.\n\t\t\t\tReturns true if export configuration is valid.","returnType":"bool"},{"name":"_has_valid_project_configuration","signature":"_has_valid_project_configuration(preset: EditorExportPreset) -> bool","description":"Required.\n\t\t\t\tReturns true if project configuration is valid.","returnType":"bool"},{"name":"_is_executable","signature":"_is_executable(path: String) -> bool","description":"Optional.\n\t\t\t\tReturns true if specified file is a valid executable (native executable or script) for the target platform.","returnType":"bool"},{"name":"_poll_export","signature":"_poll_export() -> bool","description":"Optional.\n\t\t\t\tReturns true if one-click deploy options are changed and editor interface should be updated.","returnType":"bool"},{"name":"_run","signature":"_run(preset: EditorExportPreset, device: int, debug_flags: int) -> int","description":"Optional.\n\t\t\t\tThis method is called when [param device] one-click deploy menu option is selected.\n\t\t\t\tImplementation should export project to a temporary location, upload and run it on the specific [param device], or perform another action associated with the menu item.","returnType":"int"},{"name":"_should_update_export_options","signature":"_should_update_export_options() -> bool","description":"Optional.\n\t\t\t\tReturns true if export options list is changed and presets should be updated.","returnType":"bool"},{"name":"get_config_error","signature":"get_config_error() -> String","description":"Returns current configuration error message text. This method should be called only from the [method _can_export], [method _has_valid_export_configuration], or [method _has_valid_project_configuration] implementations.","returnType":"String"},{"name":"get_config_missing_templates","signature":"get_config_missing_templates() -> bool","description":"Returns true is export templates are missing from the current configuration. This method should be called only from the [method _can_export], [method _has_valid_export_configuration], or [method _has_valid_project_configuration] implementations.","returnType":"bool"},{"name":"set_config_error","signature":"set_config_error(error_text: String) -> void","description":"Sets current configuration error message text. This method should be called only from the [method _can_export], [method _has_valid_export_configuration], or [method _has_valid_project_configuration] implementations.","returnType":"void"},{"name":"set_config_missing_templates","signature":"set_config_missing_templates(missing_templates: bool) -> void","description":"Set to true is export templates are missing from the current configuration. This method should be called only from the [method _can_export], [method _has_valid_export_configuration], or [method _has_valid_project_configuration] implementations.","returnType":"void"}],"signals":[]},"EditorExportPlatformPC":{"name":"EditorExportPlatformPC","description":"Base class for the desktop platform exporter (Windows and Linux/BSD).","inherits":"EditorExportPlatform","properties":[],"methods":[],"signals":[]},"EditorExportPlugin":{"name":"EditorExportPlugin","description":"A script that is executed when exporting the project.","inherits":"RefCounted","properties":[],"methods":[{"name":"_begin_customize_resources","signature":"_begin_customize_resources(platform: EditorExportPlatform, features: PackedStringArray) -> bool","description":"Return true if this plugin will customize resources based on the platform and features used.\n\t\t\t\tWhen enabled, [method _get_customization_configuration_hash] and [method _customize_resource] will be called and must be implemented.","returnType":"bool"},{"name":"_begin_customize_scenes","signature":"_begin_customize_scenes(platform: EditorExportPlatform, features: PackedStringArray) -> bool","description":"Return true if this plugin will customize scenes based on the platform and features used.\n\t\t\t\tWhen enabled, [method _get_customization_configuration_hash] and [method _customize_scene] will be called and must be implemented.\n\t\t\t\tNote: [method _customize_scene] will only be called for scenes that have been modified since the last export.","returnType":"bool"},{"name":"_customize_resource","signature":"_customize_resource(resource: Resource, path: String) -> Resource","description":"Customize a resource. If changes are made to it, return the same or a new resource. Otherwise, return null. When a new resource is returned, [param resource] will be replaced by a copy of the new resource.\n\t\t\t\tThe [param path] argument is only used when customizing an actual file, otherwise this means that this resource is part of another one and it will be empty.\n\t\t\t\tImplementing this method is required if [method _begin_customize_resources] returns true.\n\t\t\t\tNote: When customizing any of the following types and returning another resource, the other resource should not be skipped using [method skip] in [method _export_file]:\n\t\t\t\t- \n\t\t\t\t- \n\t\t\t\t- \n\t\t\t\t- \n\t\t\t\t- \n\t\t\t\t- ","returnType":"Resource"},{"name":"_customize_scene","signature":"_customize_scene(scene: Node, path: String) -> Node","description":"Customize a scene. If changes are made to it, return the same or a new scene. Otherwise, return null. If a new scene is returned, it is up to you to dispose of the old one.\n\t\t\t\tImplementing this method is required if [method _begin_customize_scenes] returns true.","returnType":"Node"},{"name":"_end_customize_resources","signature":"_end_customize_resources() -> void","description":"This is called when the customization process for resources ends.","returnType":"void"},{"name":"_end_customize_scenes","signature":"_end_customize_scenes() -> void","description":"This is called when the customization process for scenes ends.","returnType":"void"},{"name":"_export_begin","signature":"_export_begin(features: PackedStringArray, is_debug: bool, path: String, flags: int) -> void","description":"Virtual method to be overridden by the user. It is called when the export starts and provides all information about the export. [param features] is the list of features for the export, [param is_debug] is true for debug builds, [param path] is the target path for the exported project. [param flags] is only used when running a runnable profile, e.g. when using native run on Android.","returnType":"void"},{"name":"_export_end","signature":"_export_end() -> void","description":"Virtual method to be overridden by the user. Called when the export is finished.","returnType":"void"},{"name":"_export_file","signature":"_export_file(path: String, type: String, features: PackedStringArray) -> void","description":"Virtual method to be overridden by the user. Called for each exported file before [method _customize_resource] and [method _customize_scene]. The arguments can be used to identify the file. [param path] is the path of the file, [param type] is the  represented by the file (e.g. ), and [param features] is the list of features for the export.\n\t\t\t\tCalling [method skip] inside this callback will make the file not included in the export.","returnType":"void"},{"name":"_get_android_dependencies","signature":"_get_android_dependencies(platform: EditorExportPlatform, debug: bool) -> PackedStringArray","description":"Virtual method to be overridden by the user. This is called to retrieve the set of Android dependencies provided by this plugin. Each returned Android dependency should have the format of an Android remote binary dependency: org.godot.example:my-plugin:0.0.0\n\t\t\t\tFor more information see [url=https://developer.android.com/build/dependencies?agpversion=4.1#dependency-types]Android documentation on dependencies.\n\t\t\t\tNote: Only supported on Android and requires [member EditorExportPlatformAndroid.gradle_build/use_gradle_build] to be enabled.","returnType":"PackedStringArray"},{"name":"_get_android_dependencies_maven_repos","signature":"_get_android_dependencies_maven_repos(platform: EditorExportPlatform, debug: bool) -> PackedStringArray","description":"Virtual method to be overridden by the user. This is called to retrieve the URLs of Maven repositories for the set of Android dependencies provided by this plugin.\n\t\t\t\tFor more information see [url=https://docs.gradle.org/current/userguide/dependency_management.html#sec:maven_repo]Gradle documentation on dependency management.\n\t\t\t\tNote: Google's Maven repo and the Maven Central repo are already included by default.\n\t\t\t\tNote: Only supported on Android and requires [member EditorExportPlatformAndroid.gradle_build/use_gradle_build] to be enabled.","returnType":"PackedStringArray"},{"name":"_get_android_libraries","signature":"_get_android_libraries(platform: EditorExportPlatform, debug: bool) -> PackedStringArray","description":"Virtual method to be overridden by the user. This is called to retrieve the local paths of the Android libraries archive (AAR) files provided by this plugin.\n\t\t\t\tNote: Relative paths must be relative to Godot's res://addons/ directory. For example, an AAR file located under res://addons/hello_world_plugin/HelloWorld.release.aar can be returned as an absolute path using res://addons/hello_world_plugin/HelloWorld.release.aar or a relative path using hello_world_plugin/HelloWorld.release.aar.\n\t\t\t\tNote: Only supported on Android and requires [member EditorExportPlatformAndroid.gradle_build/use_gradle_build] to be enabled.","returnType":"PackedStringArray"},{"name":"_get_android_manifest_activity_element_contents","signature":"_get_android_manifest_activity_element_contents(platform: EditorExportPlatform, debug: bool) -> String","description":"Virtual method to be overridden by the user. This is used at export time to update the contents of the activity element in the generated Android manifest.\n\t\t\t\tNote: Only supported on Android and requires [member EditorExportPlatformAndroid.gradle_build/use_gradle_build] to be enabled.","returnType":"String"},{"name":"_get_android_manifest_application_element_contents","signature":"_get_android_manifest_application_element_contents(platform: EditorExportPlatform, debug: bool) -> String","description":"Virtual method to be overridden by the user. This is used at export time to update the contents of the application element in the generated Android manifest.\n\t\t\t\tNote: Only supported on Android and requires [member EditorExportPlatformAndroid.gradle_build/use_gradle_build] to be enabled.","returnType":"String"},{"name":"_get_android_manifest_element_contents","signature":"_get_android_manifest_element_contents(platform: EditorExportPlatform, debug: bool) -> String","description":"Virtual method to be overridden by the user. This is used at export time to update the contents of the manifest element in the generated Android manifest.\n\t\t\t\tNote: Only supported on Android and requires [member EditorExportPlatformAndroid.gradle_build/use_gradle_build] to be enabled.","returnType":"String"},{"name":"_get_customization_configuration_hash","signature":"_get_customization_configuration_hash() -> int","description":"Return a hash based on the configuration passed (for both scenes and resources). This helps keep separate caches for separate export configurations.\n\t\t\t\tImplementing this method is required if [method _begin_customize_resources] returns true.","returnType":"int"},{"name":"_get_export_features","signature":"_get_export_features(platform: EditorExportPlatform, debug: bool) -> PackedStringArray","description":"Return a  of additional features this preset, for the given [param platform], should have.","returnType":"PackedStringArray"},{"name":"_get_export_option_visibility","signature":"_get_export_option_visibility(platform: EditorExportPlatform, option: String) -> bool","description":"Optional.\n\t\t\t\tValidates [param option] and returns the visibility for the specified [param platform]. The default implementation returns true for all options.","returnType":"bool"},{"name":"_get_export_option_warning","signature":"_get_export_option_warning(platform: EditorExportPlatform, option: String) -> String","description":"Check the requirements for the given [param option] and return a non-empty warning string if they are not met.\n\t\t\t\tNote: Use [method get_option] to check the value of the export options.","returnType":"String"},{"name":"_get_export_options","signature":"_get_export_options(platform: EditorExportPlatform) -> Dictionary[]","description":"Return a list of export options that can be configured for this export plugin.\n\t\t\t\tEach element in the return value is a  with the following keys:\n\t\t\t\t- option: A dictionary with the structure documented by [method Object.get_property_list], but all keys are optional.\n\t\t\t\t- default_value: The default value for this option.\n\t\t\t\t- update_visibility: An optional boolean value. If set to true, the preset will emit [signal Object.property_list_changed] when the option is changed.","returnType":"Dictionary[]"},{"name":"_get_export_options_overrides","signature":"_get_export_options_overrides(platform: EditorExportPlatform) -> Dictionary","description":"Return a  of override values for export options, that will be used instead of user-provided values. Overridden options will be hidden from the user interface.\n\t\t\t\t\n\t\t\t\tclass MyExportPlugin extends EditorExportPlugin:\n\t\t\t\t    func _get_name() -&gt; String:\n\t\t\t\t        return \"MyExportPlugin\"\n\n\t\t\t\t    func _supports_platform(platform) -&gt; bool:\n\t\t\t\t        if platform is EditorExportPlatformPC:\n\t\t\t\t            # Run on all desktop platforms including Windows, MacOS and Linux.\n\t\t\t\t            return true\n\t\t\t\t        return false\n\n\t\t\t\t    func _get_export_options_overrides(platform) -&gt; Dictionary:\n\t\t\t\t        # Override \"Embed PCK\" to always be enabled.\n\t\t\t\t        return {\n\t\t\t\t            \"binary_format/embed_pck\": true,\n\t\t\t\t        }\n\t\t\t\t","returnType":"Dictionary"},{"name":"_get_name","signature":"_get_name() -> String","description":"Return the name identifier of this plugin (for future identification by the exporter). The plugins are sorted by name before exporting.\n\t\t\t\tImplementing this method is required.","returnType":"String"},{"name":"_should_update_export_options","signature":"_should_update_export_options(platform: EditorExportPlatform) -> bool","description":"Return true, if the result of [method _get_export_options] has changed and the export options of preset corresponding to [param platform] should be updated.","returnType":"bool"},{"name":"_supports_platform","signature":"_supports_platform(platform: EditorExportPlatform) -> bool","description":"Return true if the plugin supports the given [param platform].","returnType":"bool"},{"name":"add_file","signature":"add_file(path: String, file: PackedByteArray, remap: bool) -> void","description":"Adds a custom file to be exported. [param path] is the virtual path that can be used to load the file, [param file] is the binary data of the file.\n\t\t\t\tWhen called inside [method _export_file] and [param remap] is true, the current file will not be exported, but instead remapped to this custom file. [param remap] is ignored when called in other places.\n\t\t\t\t[param file] will not be imported, so consider using [method _customize_resource] to remap imported resources.","returnType":"void"},{"name":"add_ios_bundle_file","signature":"add_ios_bundle_file(path: String) -> void","description":"Adds an iOS bundle file from the given [param path] to the exported project.","returnType":"void"},{"name":"add_ios_cpp_code","signature":"add_ios_cpp_code(code: String) -> void","description":"Adds a C++ code to the iOS export. The final code is created from the code appended by each active export plugin.","returnType":"void"},{"name":"add_ios_embedded_framework","signature":"add_ios_embedded_framework(path: String) -> void","description":"Adds a dynamic library (*.dylib, *.framework) to Linking Phase in iOS's Xcode project and embeds it into resulting binary.\n\t\t\t\tNote: For static libraries (*.a) works in same way as [method add_ios_framework].\n\t\t\t\tNote: This method should not be used for System libraries as they are already present on the device.","returnType":"void"},{"name":"add_ios_framework","signature":"add_ios_framework(path: String) -> void","description":"Adds a static library (*.a) or dynamic library (*.dylib, *.framework) to Linking Phase in iOS's Xcode project.","returnType":"void"},{"name":"add_ios_linker_flags","signature":"add_ios_linker_flags(flags: String) -> void","description":"Adds linker flags for the iOS export.","returnType":"void"},{"name":"add_ios_plist_content","signature":"add_ios_plist_content(plist_content: String) -> void","description":"Adds content for iOS Property List files.","returnType":"void"},{"name":"add_ios_project_static_lib","signature":"add_ios_project_static_lib(path: String) -> void","description":"Adds a static lib from the given [param path] to the iOS project.","returnType":"void"},{"name":"add_macos_plugin_file","signature":"add_macos_plugin_file(path: String) -> void","description":"Adds file or directory matching [param path] to PlugIns directory of macOS app bundle.\n\t\t\t\tNote: This is useful only for macOS exports.","returnType":"void"},{"name":"add_shared_object","signature":"add_shared_object(path: String, tags: PackedStringArray, target: String) -> void","description":"Adds a shared object or a directory containing only shared objects with the given [param tags] and destination [param path].\n\t\t\t\tNote: In case of macOS exports, those shared objects will be added to Frameworks directory of app bundle.\n\t\t\t\tIn case of a directory code-sign will error if you place non code object in directory.","returnType":"void"},{"name":"get_export_platform","signature":"get_export_platform() -> EditorExportPlatform","description":"Returns currently used export platform.","returnType":"EditorExportPlatform"},{"name":"get_export_preset","signature":"get_export_preset() -> EditorExportPreset","description":"Returns currently used export preset.","returnType":"EditorExportPreset"},{"name":"get_option","signature":"get_option(name: StringName) -> Variant","description":"Returns the current value of an export option supplied by [method _get_export_options].","returnType":"Variant"},{"name":"skip","signature":"skip() -> void","description":"To be called inside [method _export_file]. Skips the current file, so it's not included in the export.","returnType":"void"}],"signals":[]},"EditorExportPreset":{"name":"EditorExportPreset","description":"Export preset configuration.","inherits":"RefCounted","properties":[],"methods":[{"name":"are_advanced_options_enabled","signature":"are_advanced_options_enabled() -> bool","description":"Returns true if \"Advanced\" toggle is enabled in the export dialog.","returnType":"bool"},{"name":"get_custom_features","signature":"get_custom_features() -> String","description":"Returns string with a comma separated list of custom features.","returnType":"String"},{"name":"get_customized_files","signature":"get_customized_files() -> Dictionary","description":"Returns  of files selected in the \"Resources\" tab of the export dialog. Dictionary keys are file names and values are export mode - \"strip\", \"keep\", or \"remove\". See also [method get_file_export_mode].","returnType":"Dictionary"},{"name":"get_customized_files_count","signature":"get_customized_files_count() -> int","description":"Returns number of files selected in the \"Resources\" tab of the export dialog.","returnType":"int"},{"name":"get_encrypt_directory","signature":"get_encrypt_directory() -> bool","description":"Returns true, PCK directory encryption is enabled in the export dialog.","returnType":"bool"},{"name":"get_encrypt_pck","signature":"get_encrypt_pck() -> bool","description":"Returns true, PCK encryption is enabled in the export dialog.","returnType":"bool"},{"name":"get_encryption_ex_filter","signature":"get_encryption_ex_filter() -> String","description":"Returns file filters to exclude during PCK encryption.","returnType":"String"},{"name":"get_encryption_in_filter","signature":"get_encryption_in_filter() -> String","description":"Returns file filters to include during PCK encryption.","returnType":"String"},{"name":"get_encryption_key","signature":"get_encryption_key() -> String","description":"Returns PCK encryption key.","returnType":"String"},{"name":"get_exclude_filter","signature":"get_exclude_filter() -> String","description":"Returns file filters to exclude during export.","returnType":"String"},{"name":"get_export_filter","signature":"get_export_filter() -> int","description":"Returns export file filter mode selected in the \"Resources\" tab of the export dialog.","returnType":"int"},{"name":"get_export_path","signature":"get_export_path() -> String","description":"Returns export target path.","returnType":"String"},{"name":"get_file_export_mode","signature":"get_file_export_mode(path: String, default: int) -> int","description":"Returns file export mode for the specified file.","returnType":"int"},{"name":"get_files_to_export","signature":"get_files_to_export() -> PackedStringArray","description":"Returns array of files to export.","returnType":"PackedStringArray"},{"name":"get_include_filter","signature":"get_include_filter() -> String","description":"Returns file filters to include during export.","returnType":"String"},{"name":"get_or_env","signature":"get_or_env(name: StringName, env_var: String) -> Variant","description":"Returns export option value or value of environment variable if it is set.","returnType":"Variant"},{"name":"get_patches","signature":"get_patches() -> PackedStringArray","description":"Returns the list of packs on which to base a patch export on.","returnType":"PackedStringArray"},{"name":"get_preset_name","signature":"get_preset_name() -> String","description":"Returns export preset name.","returnType":"String"},{"name":"get_script_export_mode","signature":"get_script_export_mode() -> int","description":"Returns script export mode.","returnType":"int"},{"name":"get_version","signature":"get_version(name: StringName, windows_version: bool) -> String","description":"Returns the preset's version number, or fall back to the [member ProjectSettings.application/config/version] project setting if set to an empty string.\n\t\t\t\tIf [param windows_version] is true, formats the returned version number to be compatible with Windows executable metadata.","returnType":"String"},{"name":"has","signature":"has(property: StringName) -> bool","description":"Returns true if preset has specified property.","returnType":"bool"},{"name":"has_export_file","signature":"has_export_file(path: String) -> bool","description":"Returns true if specified file is exported.","returnType":"bool"},{"name":"is_dedicated_server","signature":"is_dedicated_server() -> bool","description":"Returns true if dedicated server export mode is selected in the export dialog.","returnType":"bool"},{"name":"is_runnable","signature":"is_runnable() -> bool","description":"Returns true if \"Runnable\" toggle is enabled in the export dialog.","returnType":"bool"}],"signals":[]},"EditorFeatureProfile":{"name":"EditorFeatureProfile","description":"An editor feature profile which can be used to disable specific features.","inherits":"RefCounted","properties":[],"methods":[{"name":"get_feature_name","signature":"get_feature_name(feature: int) -> String","description":"Returns the specified [param feature]'s human-readable name.","returnType":"String"},{"name":"is_class_disabled","signature":"is_class_disabled(class_name: StringName) -> bool","description":"Returns true if the class specified by [param class_name] is disabled. When disabled, the class won't appear in the Create New Node dialog.","returnType":"bool"},{"name":"is_class_editor_disabled","signature":"is_class_editor_disabled(class_name: StringName) -> bool","description":"Returns true if editing for the class specified by [param class_name] is disabled. When disabled, the class will still appear in the Create New Node dialog but the Inspector will be read-only when selecting a node that extends the class.","returnType":"bool"},{"name":"is_class_property_disabled","signature":"is_class_property_disabled(class_name: StringName, property: StringName) -> bool","description":"Returns true if [param property] is disabled in the class specified by [param class_name]. When a property is disabled, it won't appear in the Inspector when selecting a node that extends the class specified by [param class_name].","returnType":"bool"},{"name":"is_feature_disabled","signature":"is_feature_disabled(feature: int) -> bool","description":"Returns true if the [param feature] is disabled. When a feature is disabled, it will disappear from the editor entirely.","returnType":"bool"},{"name":"load_from_file","signature":"load_from_file(path: String) -> int","description":"Loads an editor feature profile from a file. The file must follow the JSON format obtained by using the feature profile manager's Export button or the [method save_to_file] method.\n\t\t\t\tNote: Feature profiles created via the user interface are loaded from the feature_profiles directory, as a file with the .profile extension. The editor configuration folder can be found by using [method EditorPaths.get_config_dir].","returnType":"int"},{"name":"save_to_file","signature":"save_to_file(path: String) -> int","description":"Saves the editor feature profile to a file in JSON format. It can then be imported using the feature profile manager's Import button or the [method load_from_file] method.\n\t\t\t\tNote: Feature profiles created via the user interface are saved in the feature_profiles directory, as a file with the .profile extension. The editor configuration folder can be found by using [method EditorPaths.get_config_dir].","returnType":"int"},{"name":"set_disable_class","signature":"set_disable_class(class_name: StringName, disable: bool) -> void","description":"If [param disable] is true, disables the class specified by [param class_name]. When disabled, the class won't appear in the Create New Node dialog.","returnType":"void"},{"name":"set_disable_class_editor","signature":"set_disable_class_editor(class_name: StringName, disable: bool) -> void","description":"If [param disable] is true, disables editing for the class specified by [param class_name]. When disabled, the class will still appear in the Create New Node dialog but the Inspector will be read-only when selecting a node that extends the class.","returnType":"void"},{"name":"set_disable_class_property","signature":"set_disable_class_property(class_name: StringName, property: StringName, disable: bool) -> void","description":"If [param disable] is true, disables editing for [param property] in the class specified by [param class_name]. When a property is disabled, it won't appear in the Inspector when selecting a node that extends the class specified by [param class_name].","returnType":"void"},{"name":"set_disable_feature","signature":"set_disable_feature(feature: int, disable: bool) -> void","description":"If [param disable] is true, disables the editor feature specified in [param feature]. When a feature is disabled, it will disappear from the editor entirely.","returnType":"void"}],"signals":[]},"EditorFileDialog":{"name":"EditorFileDialog","description":"A modified version of  used by the editor.","inherits":"ConfirmationDialog","properties":[{"name":"access","type":"int","description":"The location from which the user may select a file, including [code]res://[/code], [code]user://[/code], and the local file system."},{"name":"current_dir","type":"String","description":"The currently occupied directory."},{"name":"current_file","type":"String","description":"The currently selected file."},{"name":"current_path","type":"String","description":"The file system path in the address bar."},{"name":"disable_overwrite_warning","type":"bool","description":"If [code]true[/code], the [EditorFileDialog] will not warn the user before overwriting files."},{"name":"display_mode","type":"int","description":"The view format in which the [EditorFileDialog] displays resources to the user."},{"name":"file_mode","type":"int","description":"The dialog's open or save mode, which affects the selection behavior. See [enum FileMode]."},{"name":"filters","type":"PackedStringArray","description":"The available file type filters. For example, this shows only [code].png[/code] and [code].gd[/code] files: [code]set_filters(PackedStringArray([\"*.png ; PNG Images\",\"*.gd ; GDScript Files\"]))[/code]. Multiple file types can also be specified in a single filter. [code]\"*.png, *.jpg, *.jpeg ; Supported Images\"[/code] will show both PNG and JPEG files when selected."},{"name":"option_count","type":"int","description":"The number of additional [OptionButton]s and [CheckBox]es in the dialog."},{"name":"show_hidden_files","type":"bool","description":"If [code]true[/code], hidden files and directories will be visible in the [EditorFileDialog]. This property is synchronized with [member EditorSettings.filesystem/file_dialog/show_hidden_files]."}],"methods":[{"name":"add_filter","signature":"add_filter(filter: String, description: String) -> void","description":"Adds a comma-delimited file name [param filter] option to the  with an optional [param description], which restricts what files can be picked.\n\t\t\t\tA [param filter] should be of the form \"filename.extension\", where filename and extension can be * to match any string. Filters starting with . (i.e. empty filenames) are not allowed.\n\t\t\t\tFor example, a [param filter] of \"*.tscn, *.scn\" and a [param description] of \"Scenes\" results in filter text \"Scenes (*.tscn, *.scn)\".","returnType":"void"},{"name":"add_option","signature":"add_option(name: String, values: PackedStringArray, default_value_index: int) -> void","description":"Adds an additional  to the file dialog. If [param values] is empty, a  is added instead.\n\t\t\t\t[param default_value_index] should be an index of the value in the [param values]. If [param values] is empty it should be either 1 (checked), or 0 (unchecked).","returnType":"void"},{"name":"add_side_menu","signature":"add_side_menu(menu: Control, title: String) -> void","description":"Adds the given [param menu] to the side of the file dialog with the given [param title] text on top. Only one side menu is allowed.","returnType":"void"},{"name":"clear_filename_filter","signature":"clear_filename_filter() -> void","description":"Clear the filter for file names.","returnType":"void"},{"name":"clear_filters","signature":"clear_filters() -> void","description":"Removes all filters except for \"All Files (*.*)\".","returnType":"void"},{"name":"get_filename_filter","signature":"get_filename_filter() -> String","description":"Returns the value of the filter for file names.","returnType":"String"},{"name":"get_line_edit","signature":"get_line_edit() -> LineEdit","description":"Returns the LineEdit for the selected file.\n\t\t\t\tWarning: This is a required internal node, removing and freeing it may cause a crash. If you wish to hide it or any of its children, use their [member CanvasItem.visible] property.","returnType":"LineEdit"},{"name":"get_option_default","signature":"get_option_default(option: int) -> int","description":"Returns the default value index of the  or  with index [param option].","returnType":"int"},{"name":"get_option_name","signature":"get_option_name(option: int) -> String","description":"Returns the name of the  or  with index [param option].","returnType":"String"},{"name":"get_option_values","signature":"get_option_values(option: int) -> PackedStringArray","description":"Returns an array of values of the  with index [param option].","returnType":"PackedStringArray"},{"name":"get_selected_options","signature":"get_selected_options() -> Dictionary","description":"Returns a  with the selected values of the additional s and/or es.  keys are names and values are selected value indices.","returnType":"Dictionary"},{"name":"get_vbox","signature":"get_vbox() -> VBoxContainer","description":"Returns the  used to display the file system.\n\t\t\t\tWarning: This is a required internal node, removing and freeing it may cause a crash. If you wish to hide it or any of its children, use their [member CanvasItem.visible] property.","returnType":"VBoxContainer"},{"name":"invalidate","signature":"invalidate() -> void","description":"Notify the  that its view of the data is no longer accurate. Updates the view contents on next view update.","returnType":"void"},{"name":"popup_file_dialog","signature":"popup_file_dialog() -> void","description":"Shows the  at the default size and position for file dialogs in the editor, and selects the file name if there is a current file.","returnType":"void"},{"name":"set_filename_filter","signature":"set_filename_filter(filter: String) -> void","description":"Sets the value of the filter for file names.","returnType":"void"},{"name":"set_option_default","signature":"set_option_default(option: int, default_value_index: int) -> void","description":"Sets the default value index of the  or  with index [param option].","returnType":"void"},{"name":"set_option_name","signature":"set_option_name(option: int, name: String) -> void","description":"Sets the name of the  or  with index [param option].","returnType":"void"},{"name":"set_option_values","signature":"set_option_values(option: int, values: PackedStringArray) -> void","description":"Sets the option values of the  with index [param option].","returnType":"void"}],"signals":[{"name":"dir_selected","description":"Emitted when a directory is selected."},{"name":"file_selected","description":"Emitted when a file is selected."},{"name":"filename_filter_changed","description":"Emitted when the filter for file names changes."},{"name":"files_selected","description":"Emitted when multiple files are selected."}]},"EditorFileSystem":{"name":"EditorFileSystem","description":"Resource filesystem, as the editor sees it.","inherits":"Node","properties":[],"methods":[{"name":"get_file_type","signature":"get_file_type(path: String) -> String","description":"Returns the resource type of the file, given the full path. This returns a string such as \"Resource\" or \"GDScript\", not a file extension such as \".gd\".","returnType":"String"},{"name":"get_filesystem","signature":"get_filesystem() -> EditorFileSystemDirectory","description":"Gets the root directory object.","returnType":"EditorFileSystemDirectory"},{"name":"get_filesystem_path","signature":"get_filesystem_path(path: String) -> EditorFileSystemDirectory","description":"Returns a view into the filesystem at [param path].","returnType":"EditorFileSystemDirectory"},{"name":"get_scanning_progress","signature":"get_scanning_progress() -> float","description":"Returns the scan progress for 0 to 1 if the FS is being scanned.","returnType":"float"},{"name":"is_scanning","signature":"is_scanning() -> bool","description":"Returns true if the filesystem is being scanned.","returnType":"bool"},{"name":"reimport_files","signature":"reimport_files(files: PackedStringArray) -> void","description":"Reimports a set of files. Call this if these files or their .import files were directly edited by script or an external program.\n\t\t\t\tIf the file type changed or the file was newly created, use [method update_file] or [method scan].\n\t\t\t\tNote: This function blocks until the import is finished. However, the main loop iteration, including timers and [method Node._process], will occur during the import process due to progress bar updates. Avoid calls to [method reimport_files] or [method scan] while an import is in progress.","returnType":"void"},{"name":"scan","signature":"scan() -> void","description":"Scan the filesystem for changes.","returnType":"void"},{"name":"scan_sources","signature":"scan_sources() -> void","description":"Check if the source of any imported resource changed.","returnType":"void"},{"name":"update_file","signature":"update_file(path: String) -> void","description":"Add a file in an existing directory, or schedule file information to be updated on editor restart. Can be used to update text files saved by an external program.\n\t\t\t\tThis will not import the file. To reimport, call [method reimport_files] or [method scan] methods.","returnType":"void"}],"signals":[{"name":"filesystem_changed","description":"Emitted if the filesystem changed."},{"name":"resources_reimported","description":"Emitted if a resource is reimported."},{"name":"resources_reimporting","description":"Emitted before a resource is reimported."},{"name":"resources_reload","description":"Emitted if at least one resource is reloaded when the filesystem is scanned."},{"name":"script_classes_updated","description":"Emitted when the list of global script classes gets updated."},{"name":"sources_changed","description":"Emitted if the source of any imported file changed."}]},"EditorFileSystemDirectory":{"name":"EditorFileSystemDirectory","description":"A directory for the resource filesystem.","inherits":"Object","properties":[],"methods":[{"name":"find_dir_index","signature":"find_dir_index(name: String) -> int","description":"Returns the index of the directory with name [param name] or -1 if not found.","returnType":"int"},{"name":"find_file_index","signature":"find_file_index(name: String) -> int","description":"Returns the index of the file with name [param name] or -1 if not found.","returnType":"int"},{"name":"get_file","signature":"get_file(idx: int) -> String","description":"Returns the name of the file at index [param idx].","returnType":"String"},{"name":"get_file_count","signature":"get_file_count() -> int","description":"Returns the number of files in this directory.","returnType":"int"},{"name":"get_file_import_is_valid","signature":"get_file_import_is_valid(idx: int) -> bool","description":"Returns true if the file at index [param idx] imported properly.","returnType":"bool"},{"name":"get_file_path","signature":"get_file_path(idx: int) -> String","description":"Returns the path to the file at index [param idx].","returnType":"String"},{"name":"get_file_script_class_extends","signature":"get_file_script_class_extends(idx: int) -> String","description":"Returns the base class of the script class defined in the file at index [param idx]. If the file doesn't define a script class using the class_name syntax, this will return an empty string.","returnType":"String"},{"name":"get_file_script_class_name","signature":"get_file_script_class_name(idx: int) -> String","description":"Returns the name of the script class defined in the file at index [param idx]. If the file doesn't define a script class using the class_name syntax, this will return an empty string.","returnType":"String"},{"name":"get_file_type","signature":"get_file_type(idx: int) -> StringName","description":"Returns the resource type of the file at index [param idx]. This returns a string such as \"Resource\" or \"GDScript\", not a file extension such as \".gd\".","returnType":"StringName"},{"name":"get_name","signature":"get_name() -> String","description":"Returns the name of this directory.","returnType":"String"},{"name":"get_parent","signature":"get_parent() -> EditorFileSystemDirectory","description":"Returns the parent directory for this directory or null if called on a directory at res:// or user://.","returnType":"EditorFileSystemDirectory"},{"name":"get_path","signature":"get_path() -> String","description":"Returns the path to this directory.","returnType":"String"},{"name":"get_subdir","signature":"get_subdir(idx: int) -> EditorFileSystemDirectory","description":"Returns the subdirectory at index [param idx].","returnType":"EditorFileSystemDirectory"},{"name":"get_subdir_count","signature":"get_subdir_count() -> int","description":"Returns the number of subdirectories in this directory.","returnType":"int"}],"signals":[]},"EditorFileSystemImportFormatSupportQuery":{"name":"EditorFileSystemImportFormatSupportQuery","description":"Used to query and configure import format support.","inherits":"RefCounted","properties":[],"methods":[{"name":"_get_file_extensions","signature":"_get_file_extensions() -> PackedStringArray","description":"Return the file extensions supported.","returnType":"PackedStringArray"},{"name":"_is_active","signature":"_is_active() -> bool","description":"Return whether this importer is active.","returnType":"bool"},{"name":"_query","signature":"_query() -> bool","description":"Query support. Return false if import must not continue.","returnType":"bool"}],"signals":[]},"EditorImportPlugin":{"name":"EditorImportPlugin","description":"Registers a custom resource importer in the editor. Use the class to parse any file and import it as a new resource type.","inherits":"ResourceImporter","properties":[],"methods":[{"name":"_can_import_threaded","signature":"_can_import_threaded() -> bool","description":"Tells whether this importer can be run in parallel on threads, or, on the contrary, it's only safe for the editor to call it from the main thread, for one file at a time.\n\t\t\t\tIf this method is not overridden, it will return false by default.\n\t\t\t\tIf this importer's implementation is thread-safe and can be run in parallel, override this with true to optimize for concurrency.","returnType":"bool"},{"name":"_get_format_version","signature":"_get_format_version() -> int","description":"Gets the format version of this importer. Increment this version when making incompatible changes to the format of the imported resources.","returnType":"int"},{"name":"_get_import_options","signature":"_get_import_options(path: String, preset_index: int) -> Dictionary[]","description":"Gets the options and default values for the preset at this index. Returns an Array of Dictionaries with the following keys: name, default_value, property_hint (optional), hint_string (optional), usage (optional).","returnType":"Dictionary[]"},{"name":"_get_import_order","signature":"_get_import_order() -> int","description":"Gets the order of this importer to be run when importing resources. Importers with lower import orders will be called first, and higher values will be called later. Use this to ensure the importer runs after the dependencies are already imported. The default import order is 0 unless overridden by a specific importer. See [enum ResourceImporter.ImportOrder] for some predefined values.","returnType":"int"},{"name":"_get_importer_name","signature":"_get_importer_name() -> String","description":"Gets the unique name of the importer.","returnType":"String"},{"name":"_get_option_visibility","signature":"_get_option_visibility(path: String, option_name: StringName, options: Dictionary) -> bool","description":"This method can be overridden to hide specific import options if conditions are met. This is mainly useful for hiding options that depend on others if one of them is disabled.\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tfunc _get_option_visibility(option, options):\n\t\t\t\t    # Only show the lossy quality setting if the compression mode is set to \"Lossy\".\n\t\t\t\t    if option == \"compress/lossy_quality\" and options.has(\"compress/mode\"):\n\t\t\t\t        return int(options[\"compress/mode\"]) == COMPRESS_LOSSY # This is a constant that you set\n\n\t\t\t\t    return true\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tpublic void _GetOptionVisibility(string option, Godot.Collections.Dictionary options)\n\t\t\t\t{\n\t\t\t\t    // Only show the lossy quality setting if the compression mode is set to \"Lossy\".\n\t\t\t\t    if (option == \"compress/lossy_quality\" &amp;&amp; options.ContainsKey(\"compress/mode\"))\n\t\t\t\t    {\n\t\t\t\t        return (int)options[\"compress/mode\"] == CompressLossy; // This is a constant you set\n\t\t\t\t    }\n\n\t\t\t\t    return true;\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tReturns true to make all options always visible.","returnType":"bool"},{"name":"_get_preset_count","signature":"_get_preset_count() -> int","description":"Gets the number of initial presets defined by the plugin. Use [method _get_import_options] to get the default options for the preset and [method _get_preset_name] to get the name of the preset.","returnType":"int"},{"name":"_get_preset_name","signature":"_get_preset_name(preset_index: int) -> String","description":"Gets the name of the options preset at this index.","returnType":"String"},{"name":"_get_priority","signature":"_get_priority() -> float","description":"Gets the priority of this plugin for the recognized extension. Higher priority plugins will be preferred. The default priority is 1.0.","returnType":"float"},{"name":"_get_recognized_extensions","signature":"_get_recognized_extensions() -> PackedStringArray","description":"Gets the list of file extensions to associate with this loader (case-insensitive). e.g. [\"obj\"].","returnType":"PackedStringArray"},{"name":"_get_resource_type","signature":"_get_resource_type() -> String","description":"Gets the Godot resource type associated with this loader. e.g. \"Mesh\" or \"Animation\".","returnType":"String"},{"name":"_get_save_extension","signature":"_get_save_extension() -> String","description":"Gets the extension used to save this resource in the .godot/imported directory (see [member ProjectSettings.application/config/use_hidden_project_data_directory]).","returnType":"String"},{"name":"_get_visible_name","signature":"_get_visible_name() -> String","description":"Gets the name to display in the import window. You should choose this name as a continuation to \"Import as\", e.g. \"Import as Special Mesh\".","returnType":"String"},{"name":"_import","signature":"_import(source_file: String, save_path: String, options: Dictionary, platform_variants: String[], gen_files: String[]) -> int","description":"Imports [param source_file] into [param save_path] with the import [param options] specified. The [param platform_variants] and [param gen_files] arrays will be modified by this function.\n\t\t\t\tThis method must be overridden to do the actual importing work. See this class' description for an example of overriding this method.","returnType":"int"},{"name":"append_import_external_resource","signature":"append_import_external_resource(path: String, custom_options: Dictionary, custom_importer: String, generator_parameters: Variant) -> int","description":"This function can only be called during the [method _import] callback and it allows manually importing resources from it. This is useful when the imported file generates external resources that require importing (as example, images). Custom parameters for the \".import\" file can be passed via the [param custom_options]. Additionally, in cases where multiple importers can handle a file, the [param custom_importer] can be specified to force a specific one. This function performs a resource import and returns immediately with a success or error code. [param generator_parameters] defines optional extra metadata which will be stored as [code skip-lint]generator_parameters in the remap section of the .import file, for example to store a md5 hash of the source data.","returnType":"int"}],"signals":[]},"EditorInspector":{"name":"EditorInspector","description":"A control used to edit properties of an object.","inherits":"ScrollContainer","properties":[],"methods":[{"name":"edit","signature":"edit(object: Object) -> void","description":"Shows the properties of the given [param object] in this inspector for editing. To clear the inspector, call this method with null.\n\t\t\t\tNote: If you want to edit an object in the editor's main inspector, use the edit_* methods in  instead.","returnType":"void"},{"name":"get_edited_object","signature":"get_edited_object() -> Object","description":"Returns the object currently selected in this inspector.","returnType":"Object"},{"name":"get_selected_path","signature":"get_selected_path() -> String","description":"Gets the path of the currently selected property.","returnType":"String"},{"name":"instantiate_property_editor","signature":"instantiate_property_editor(object: Object, type: int, path: String, hint: int, hint_text: String, usage: int, wide: bool) -> EditorProperty","description":"Creates a property editor that can be used by plugin UI to edit the specified property of an [param object].","returnType":"EditorProperty"}],"signals":[{"name":"edited_object_changed","description":"Emitted when the object being edited by the inspector has changed."},{"name":"object_id_selected","description":"Emitted when the Edit button of an [Object] has been pressed in the inspector. This is mainly used in the remote scene tree Inspector."},{"name":"property_deleted","description":"Emitted when a property is removed from the inspector."},{"name":"property_edited","description":"Emitted when a property is edited in the inspector."},{"name":"property_keyed","description":"Emitted when a property is keyed in the inspector. Properties can be keyed by clicking the \"key\" icon next to a property when the Animation panel is toggled."},{"name":"property_selected","description":"Emitted when a property is selected in the inspector."},{"name":"property_toggled","description":"Emitted when a boolean property is toggled in the inspector.\n\t\t\t\t[b]Note:[/b] This signal is never emitted if the internal [code]autoclear[/code] property enabled. Since this property is always enabled in the editor inspector, this signal is never emitted by the editor itself."},{"name":"resource_selected","description":"Emitted when a resource is selected in the inspector."},{"name":"restart_requested","description":"Emitted when a property that requires a restart to be applied is edited in the inspector. This is only used in the Project Settings and Editor Settings."}]},"EditorInspectorPlugin":{"name":"EditorInspectorPlugin","description":"Plugin for adding custom property editors on the inspector.","inherits":"RefCounted","properties":[],"methods":[{"name":"_can_handle","signature":"_can_handle(object: Object) -> bool","description":"Returns true if this object can be handled by this plugin.","returnType":"bool"},{"name":"_parse_begin","signature":"_parse_begin(object: Object) -> void","description":"Called to allow adding controls at the beginning of the property list for [param object].","returnType":"void"},{"name":"_parse_category","signature":"_parse_category(object: Object, category: String) -> void","description":"Called to allow adding controls at the beginning of a category in the property list for [param object].","returnType":"void"},{"name":"_parse_end","signature":"_parse_end(object: Object) -> void","description":"Called to allow adding controls at the end of the property list for [param object].","returnType":"void"},{"name":"_parse_group","signature":"_parse_group(object: Object, group: String) -> void","description":"Called to allow adding controls at the beginning of a group or a sub-group in the property list for [param object].","returnType":"void"},{"name":"_parse_property","signature":"_parse_property(object: Object, type: int, name: String, hint_type: int, hint_string: String, usage_flags: int, wide: bool) -> bool","description":"Called to allow adding property-specific editors to the property list for [param object]. The added editor control must extend . Returning true removes the built-in editor for this property, otherwise allows to insert a custom editor before the built-in one.","returnType":"bool"},{"name":"add_custom_control","signature":"add_custom_control(control: Control) -> void","description":"Adds a custom control, which is not necessarily a property editor.","returnType":"void"},{"name":"add_property_editor","signature":"add_property_editor(property: String, editor: Control, add_to_end: bool, label: String) -> void","description":"Adds a property editor for an individual property. The [param editor] control must extend .\n\t\t\t\tThere can be multiple property editors for a property. If [param add_to_end] is true, this newly added editor will be displayed after all the other editors of the property whose [param add_to_end] is false. For example, the editor uses this parameter to add an \"Edit Region\" button for [member Sprite2D.region_rect] below the regular  editor.\n\t\t\t\t[param label] can be used to choose a custom label for the property editor in the inspector. If left empty, the label is computed from the name of the property instead.","returnType":"void"},{"name":"add_property_editor_for_multiple_properties","signature":"add_property_editor_for_multiple_properties(label: String, properties: PackedStringArray, editor: Control) -> void","description":"Adds an editor that allows modifying multiple properties. The [param editor] control must extend .","returnType":"void"}],"signals":[]},"EditorInterface":{"name":"EditorInterface","description":"Godot editor's interface.","inherits":"Object","properties":[{"name":"distraction_free_mode","type":"bool","description":"If [code]true[/code], enables distraction-free mode which hides side docks to increase the space available for the main view."},{"name":"movie_maker_enabled","type":"bool","description":"If [code]true[/code], the Movie Maker mode is enabled in the editor. See [MovieWriter] for more information."}],"methods":[{"name":"edit_node","signature":"edit_node(node: Node) -> void","description":"Edits the given . The node will be also selected if it's inside the scene tree.","returnType":"void"},{"name":"edit_resource","signature":"edit_resource(resource: Resource) -> void","description":"Edits the given . If the resource is a  you can also edit it with [method edit_script] to specify the line and column position.","returnType":"void"},{"name":"edit_script","signature":"edit_script(script: Script, line: int, column: int, grab_focus: bool) -> void","description":"Edits the given . The line and column on which to open the script can also be specified. The script will be open with the user-configured editor for the script's language which may be an external editor.","returnType":"void"},{"name":"get_base_control","signature":"get_base_control() -> Control","description":"Returns the main container of Godot editor's window. For example, you can use it to retrieve the size of the container and place your controls accordingly.\n\t\t\t\tWarning: Removing and freeing this node will render the editor useless and may cause a crash.","returnType":"Control"},{"name":"get_command_palette","signature":"get_command_palette() -> EditorCommandPalette","description":"Returns the editor's  instance.\n\t\t\t\tWarning: Removing and freeing this node will render a part of the editor useless and may cause a crash.","returnType":"EditorCommandPalette"},{"name":"get_current_directory","signature":"get_current_directory() -> String","description":"Returns the current directory being viewed in the . If a file is selected, its base directory will be returned using [method String.get_base_dir] instead.","returnType":"String"},{"name":"get_current_feature_profile","signature":"get_current_feature_profile() -> String","description":"Returns the name of the currently activated feature profile. If the default profile is currently active, an empty string is returned instead.\n\t\t\t\tIn order to get a reference to the , you must load the feature profile using [method EditorFeatureProfile.load_from_file].\n\t\t\t\tNote: Feature profiles created via the user interface are loaded from the feature_profiles directory, as a file with the .profile extension. The editor configuration folder can be found by using [method EditorPaths.get_config_dir].","returnType":"String"},{"name":"get_current_path","signature":"get_current_path() -> String","description":"Returns the current path being viewed in the .","returnType":"String"},{"name":"get_edited_scene_root","signature":"get_edited_scene_root() -> Node","description":"Returns the edited (current) scene's root .","returnType":"Node"},{"name":"get_editor_main_screen","signature":"get_editor_main_screen() -> VBoxContainer","description":"Returns the editor control responsible for main screen plugins and tools. Use it with plugins that implement [method EditorPlugin._has_main_screen].\n\t\t\t\tNote: This node is a , which means that if you add a  child to it, you need to set the child's [member Control.size_flags_vertical] to [constant Control.SIZE_EXPAND_FILL] to make it use the full available space.\n\t\t\t\tWarning: Removing and freeing this node will render a part of the editor useless and may cause a crash.","returnType":"VBoxContainer"},{"name":"get_editor_paths","signature":"get_editor_paths() -> EditorPaths","description":"Returns the  singleton.","returnType":"EditorPaths"},{"name":"get_editor_scale","signature":"get_editor_scale() -> float","description":"Returns the actual scale of the editor UI (1.0 being 100% scale). This can be used to adjust position and dimensions of the UI added by plugins.\n\t\t\t\tNote: This value is set via the interface/editor/display_scale and interface/editor/custom_display_scale editor settings. Editor must be restarted for changes to be properly applied.","returnType":"float"},{"name":"get_editor_settings","signature":"get_editor_settings() -> EditorSettings","description":"Returns the editor's  instance.","returnType":"EditorSettings"},{"name":"get_editor_theme","signature":"get_editor_theme() -> Theme","description":"Returns the editor's .\n\t\t\t\tNote: When creating custom editor UI, prefer accessing theme items directly from your GUI nodes using the get_theme_* methods.","returnType":"Theme"},{"name":"get_editor_toaster","signature":"get_editor_toaster() -> EditorToaster","description":"Returns the editor's .","returnType":"EditorToaster"},{"name":"get_editor_undo_redo","signature":"get_editor_undo_redo() -> EditorUndoRedoManager","description":"Returns the editor's .","returnType":"EditorUndoRedoManager"},{"name":"get_editor_viewport_2d","signature":"get_editor_viewport_2d() -> SubViewport","description":"Returns the 2D editor . It does not have a camera. Instead, the view transforms are done directly and can be accessed with [member Viewport.global_canvas_transform].","returnType":"SubViewport"},{"name":"get_editor_viewport_3d","signature":"get_editor_viewport_3d(idx: int) -> SubViewport","description":"Returns the specified 3D editor , from 0 to 3. The viewport can be used to access the active editor cameras with [method Viewport.get_camera_3d].","returnType":"SubViewport"},{"name":"get_file_system_dock","signature":"get_file_system_dock() -> FileSystemDock","description":"Returns the editor's  instance.\n\t\t\t\tWarning: Removing and freeing this node will render a part of the editor useless and may cause a crash.","returnType":"FileSystemDock"},{"name":"get_inspector","signature":"get_inspector() -> EditorInspector","description":"Returns the editor's  instance.\n\t\t\t\tWarning: Removing and freeing this node will render a part of the editor useless and may cause a crash.","returnType":"EditorInspector"},{"name":"get_open_scenes","signature":"get_open_scenes() -> PackedStringArray","description":"Returns an  with the file paths of the currently opened scenes.","returnType":"PackedStringArray"},{"name":"get_playing_scene","signature":"get_playing_scene() -> String","description":"Returns the name of the scene that is being played. If no scene is currently being played, returns an empty string.","returnType":"String"},{"name":"get_resource_filesystem","signature":"get_resource_filesystem() -> EditorFileSystem","description":"Returns the editor's  instance.","returnType":"EditorFileSystem"},{"name":"get_resource_previewer","signature":"get_resource_previewer() -> EditorResourcePreview","description":"Returns the editor's  instance.","returnType":"EditorResourcePreview"},{"name":"get_script_editor","signature":"get_script_editor() -> ScriptEditor","description":"Returns the editor's  instance.\n\t\t\t\tWarning: Removing and freeing this node will render a part of the editor useless and may cause a crash.","returnType":"ScriptEditor"},{"name":"get_selected_paths","signature":"get_selected_paths() -> PackedStringArray","description":"Returns an array containing the paths of the currently selected files (and directories) in the .","returnType":"PackedStringArray"},{"name":"get_selection","signature":"get_selection() -> EditorSelection","description":"Returns the editor's  instance.","returnType":"EditorSelection"},{"name":"inspect_object","signature":"inspect_object(object: Object, for_property: String, inspector_only: bool) -> void","description":"Shows the given property on the given [param object] in the editor's Inspector dock. If [param inspector_only] is true, plugins will not attempt to edit [param object].","returnType":"void"},{"name":"is_multi_window_enabled","signature":"is_multi_window_enabled() -> bool","description":"Returns true if multiple window support is enabled in the editor. Multiple window support is enabled if all of these statements are true:\n\t\t\t\t- [member EditorSettings.interface/multi_window/enable] is true.\n\t\t\t\t- [member EditorSettings.interface/editor/single_window_mode] is false.\n\t\t\t\t- [member Viewport.gui_embed_subwindows] is false. This is forced to true on platforms that don't support multiple windows such as Web, or when the --single-window [url=$DOCS_URL/tutorials/editor/command_line_tutorial.html]command line argument is used.","returnType":"bool"},{"name":"is_playing_scene","signature":"is_playing_scene() -> bool","description":"Returns true if a scene is currently being played, false otherwise. Paused scenes are considered as being played.","returnType":"bool"},{"name":"is_plugin_enabled","signature":"is_plugin_enabled(plugin: String) -> bool","description":"Returns true if the specified [param plugin] is enabled. The plugin name is the same as its directory name.","returnType":"bool"},{"name":"make_mesh_previews","signature":"make_mesh_previews(meshes: Mesh[], preview_size: int) -> Texture2D[]","description":"Returns mesh previews rendered at the given size as an  of s.","returnType":"Texture2D[]"},{"name":"mark_scene_as_unsaved","signature":"mark_scene_as_unsaved() -> void","description":"Marks the current scene tab as unsaved.","returnType":"void"},{"name":"open_scene_from_path","signature":"open_scene_from_path(scene_filepath: String, set_inherited: bool) -> void","description":"Opens the scene at the given path. If [param set_inherited] is true, creates a new inherited scene.","returnType":"void"},{"name":"play_current_scene","signature":"play_current_scene() -> void","description":"Plays the currently active scene.","returnType":"void"},{"name":"play_custom_scene","signature":"play_custom_scene(scene_filepath: String) -> void","description":"Plays the scene specified by its filepath.","returnType":"void"},{"name":"play_main_scene","signature":"play_main_scene() -> void","description":"Plays the main scene.","returnType":"void"},{"name":"popup_create_dialog","signature":"popup_create_dialog(callback: Callable, base_type: StringName, current_type: String, dialog_title: String, type_blocklist: StringName[]) -> void","description":"Pops up an editor dialog for creating an object.\n\t\t\t\tThe [param callback] must take a single argument of type  which will contain the type name of the selected object or be empty if no item is selected.\n\t\t\t\tThe [param base_type] specifies the base type of objects to display. For example, if you set this to \"Resource\", all types derived from  will display in the create dialog.\n\t\t\t\tThe [param current_type] will be passed in the search box of the create dialog, and the specified type can be immediately selected when the dialog pops up. If the [param current_type] is not derived from [param base_type], there will be no result of the type in the dialog.\n\t\t\t\tThe [param dialog_title] allows you to define a custom title for the dialog. This is useful if you want to accurately hint the usage of the dialog. If the [param dialog_title] is an empty string, the dialog will use \"Create New 'Base Type'\" as the default title.\n\t\t\t\tThe [param type_blocklist] contains a list of type names, and the types in the blocklist will be hidden from the create dialog.\n\t\t\t\tNote: Trying to list the base type in the [param type_blocklist] will hide all types derived from the base type from the create dialog.","returnType":"void"},{"name":"popup_dialog","signature":"popup_dialog(dialog: Window, rect: Rect2i) -> void","description":"Pops up the [param dialog] in the editor UI with [method Window.popup_exclusive]. The dialog must have no current parent, otherwise the method fails.\n\t\t\t\tSee also [method Window.set_unparent_when_invisible].","returnType":"void"},{"name":"popup_dialog_centered","signature":"popup_dialog_centered(dialog: Window, minsize: Vector2i) -> void","description":"Pops up the [param dialog] in the editor UI with [method Window.popup_exclusive_centered]. The dialog must have no current parent, otherwise the method fails.\n\t\t\t\tSee also [method Window.set_unparent_when_invisible].","returnType":"void"},{"name":"popup_dialog_centered_clamped","signature":"popup_dialog_centered_clamped(dialog: Window, minsize: Vector2i, fallback_ratio: float) -> void","description":"Pops up the [param dialog] in the editor UI with [method Window.popup_exclusive_centered_clamped]. The dialog must have no current parent, otherwise the method fails.\n\t\t\t\tSee also [method Window.set_unparent_when_invisible].","returnType":"void"},{"name":"popup_dialog_centered_ratio","signature":"popup_dialog_centered_ratio(dialog: Window, ratio: float) -> void","description":"Pops up the [param dialog] in the editor UI with [method Window.popup_exclusive_centered_ratio]. The dialog must have no current parent, otherwise the method fails.\n\t\t\t\tSee also [method Window.set_unparent_when_invisible].","returnType":"void"},{"name":"popup_method_selector","signature":"popup_method_selector(object: Object, callback: Callable, current_value: String) -> void","description":"Pops up an editor dialog for selecting a method from [param object]. The [param callback] must take a single argument of type  which will contain the name of the selected method or be empty if the dialog is canceled. If [param current_value] is provided, the method will be selected automatically in the method list, if it exists.","returnType":"void"},{"name":"popup_node_selector","signature":"popup_node_selector(callback: Callable, valid_types: StringName[], current_value: Node) -> void","description":"Pops up an editor dialog for selecting a  from the edited scene. The [param callback] must take a single argument of type . It is called on the selected  or the empty path ^\"\" if the dialog is canceled. If [param valid_types] is provided, the dialog will only show Nodes that match one of the listed Node types. If [param current_value] is provided, the Node will be automatically selected in the tree, if it exists.\n\t\t\t\tExample: Display the node selection dialog as soon as this node is added to the tree for the first time:\n\t\t\t\t\n\t\t\t\tfunc _ready():\n\t\t\t\t    if Engine.is_editor_hint():\n\t\t\t\t        EditorInterface.popup_node_selector(_on_node_selected, [\"Button\"])\n\n\t\t\t\tfunc _on_node_selected(node_path):\n\t\t\t\t    if node_path.is_empty():\n\t\t\t\t        print(\"node selection canceled\")\n\t\t\t\t    else:\n\t\t\t\t        print(\"selected \", node_path)\n\t\t\t\t","returnType":"void"},{"name":"popup_property_selector","signature":"popup_property_selector(object: Object, callback: Callable, type_filter: PackedInt32Array, current_value: String) -> void","description":"Pops up an editor dialog for selecting properties from [param object]. The [param callback] must take a single argument of type . It is called on the selected property path (see [method NodePath.get_as_property_path]) or the empty path ^\"\" if the dialog is canceled. If [param type_filter] is provided, the dialog will only show properties that match one of the listed [enum Variant.Type] values. If [param current_value] is provided, the property will be selected automatically in the property list, if it exists.\n\t\t\t\t\n\t\t\t\tfunc _ready():\n\t\t\t\t    if Engine.is_editor_hint():\n\t\t\t\t        EditorInterface.popup_property_selector(this, _on_property_selected, )\n\n\t\t\t\tfunc _on_property_selected(property_path):\n\t\t\t\t    if property_path.is_empty():\n\t\t\t\t        print(\"property selection canceled\")\n\t\t\t\t    else:\n\t\t\t\t        print(\"selected \", property_path)\n\t\t\t\t","returnType":"void"},{"name":"popup_quick_open","signature":"popup_quick_open(callback: Callable, base_types: StringName[]) -> void","description":"Pops up an editor dialog for quick selecting a resource file. The [param callback] must take a single argument of type  which will contain the path of the selected resource or be empty if the dialog is canceled. If [param base_types] is provided, the dialog will only show resources that match these types. Only types deriving from  are supported.","returnType":"void"},{"name":"reload_scene_from_path","signature":"reload_scene_from_path(scene_filepath: String) -> void","description":"Reloads the scene at the given path.","returnType":"void"},{"name":"restart_editor","signature":"restart_editor(save: bool) -> void","description":"Restarts the editor. This closes the editor and then opens the same project. If [param save] is true, the project will be saved before restarting.","returnType":"void"},{"name":"save_all_scenes","signature":"save_all_scenes() -> void","description":"Saves all opened scenes in the editor.","returnType":"void"},{"name":"save_scene","signature":"save_scene() -> int","description":"Saves the currently active scene. Returns either [constant OK] or [constant ERR_CANT_CREATE].","returnType":"int"},{"name":"save_scene_as","signature":"save_scene_as(path: String, with_preview: bool) -> void","description":"Saves the currently active scene as a file at [param path].","returnType":"void"},{"name":"select_file","signature":"select_file(file: String) -> void","description":"Selects the file, with the path provided by [param file], in the FileSystem dock.","returnType":"void"},{"name":"set_current_feature_profile","signature":"set_current_feature_profile(profile_name: String) -> void","description":"Selects and activates the specified feature profile with the given [param profile_name]. Set [param profile_name] to an empty string to reset to the default feature profile.\n\t\t\t\tA feature profile can be created programmatically using the  class.\n\t\t\t\tNote: The feature profile that gets activated must be located in the feature_profiles directory, as a file with the .profile extension. If a profile could not be found, an error occurs. The editor configuration folder can be found by using [method EditorPaths.get_config_dir].","returnType":"void"},{"name":"set_main_screen_editor","signature":"set_main_screen_editor(name: String) -> void","description":"Sets the editor's current main screen to the one specified in [param name]. [param name] must match the title of the tab in question exactly (e.g. 2D, 3D, [code skip-lint]Script, or AssetLib for default tabs).","returnType":"void"},{"name":"set_plugin_enabled","signature":"set_plugin_enabled(plugin: String, enabled: bool) -> void","description":"Sets the enabled status of a plugin. The plugin name is the same as its directory name.","returnType":"void"},{"name":"stop_playing_scene","signature":"stop_playing_scene() -> void","description":"Stops the scene that is currently playing.","returnType":"void"}],"signals":[]},"EditorNode3DGizmo":{"name":"EditorNode3DGizmo","description":"Gizmo for editing  objects.","inherits":"Node3DGizmo","properties":[],"methods":[{"name":"_begin_handle_action","signature":"_begin_handle_action(id: int, secondary: bool) -> void","description":"","returnType":"void"},{"name":"_commit_handle","signature":"_commit_handle(id: int, secondary: bool, restore: Variant, cancel: bool) -> void","description":"Override this method to commit a handle being edited (handles must have been previously added by [method add_handles]). This usually means creating an  action for the change, using the current handle value as \"do\" and the [param restore] argument as \"undo\".\n\t\t\t\tIf the [param cancel] argument is true, the [param restore] value should be directly set, without any  action.\n\t\t\t\tThe [param secondary] argument is true when the committed handle is secondary (see [method add_handles] for more information).","returnType":"void"},{"name":"_commit_subgizmos","signature":"_commit_subgizmos(ids: PackedInt32Array, restores: Transform3D[], cancel: bool) -> void","description":"Override this method to commit a group of subgizmos being edited (see [method _subgizmos_intersect_ray] and [method _subgizmos_intersect_frustum]). This usually means creating an  action for the change, using the current transforms as \"do\" and the [param restores] transforms as \"undo\".\n\t\t\t\tIf the [param cancel] argument is true, the [param restores] transforms should be directly set, without any  action.","returnType":"void"},{"name":"_get_handle_name","signature":"_get_handle_name(id: int, secondary: bool) -> String","description":"Override this method to return the name of an edited handle (handles must have been previously added by [method add_handles]). Handles can be named for reference to the user when editing.\n\t\t\t\tThe [param secondary] argument is true when the requested handle is secondary (see [method add_handles] for more information).","returnType":"String"},{"name":"_get_handle_value","signature":"_get_handle_value(id: int, secondary: bool) -> Variant","description":"Override this method to return the current value of a handle. This value will be requested at the start of an edit and used as the restore argument in [method _commit_handle].\n\t\t\t\tThe [param secondary] argument is true when the requested handle is secondary (see [method add_handles] for more information).","returnType":"Variant"},{"name":"_get_subgizmo_transform","signature":"_get_subgizmo_transform(id: int) -> Transform3D","description":"Override this method to return the current transform of a subgizmo. This transform will be requested at the start of an edit and used as the restore argument in [method _commit_subgizmos].","returnType":"Transform3D"},{"name":"_is_handle_highlighted","signature":"_is_handle_highlighted(id: int, secondary: bool) -> bool","description":"Override this method to return true whenever the given handle should be highlighted in the editor.\n\t\t\t\tThe [param secondary] argument is true when the requested handle is secondary (see [method add_handles] for more information).","returnType":"bool"},{"name":"_redraw","signature":"_redraw() -> void","description":"Override this method to add all the gizmo elements whenever a gizmo update is requested. It's common to call [method clear] at the beginning of this method and then add visual elements depending on the node's properties.","returnType":"void"},{"name":"_set_handle","signature":"_set_handle(id: int, secondary: bool, camera: Camera3D, point: Vector2) -> void","description":"Override this method to update the node properties when the user drags a gizmo handle (previously added with [method add_handles]). The provided [param point] is the mouse position in screen coordinates and the [param camera] can be used to convert it to raycasts.\n\t\t\t\tThe [param secondary] argument is true when the edited handle is secondary (see [method add_handles] for more information).","returnType":"void"},{"name":"_set_subgizmo_transform","signature":"_set_subgizmo_transform(id: int, transform: Transform3D) -> void","description":"Override this method to update the node properties during subgizmo editing (see [method _subgizmos_intersect_ray] and [method _subgizmos_intersect_frustum]). The [param transform] is given in the 's local coordinate system.","returnType":"void"},{"name":"_subgizmos_intersect_frustum","signature":"_subgizmos_intersect_frustum(camera: Camera3D, frustum: Plane[]) -> PackedInt32Array","description":"Override this method to allow selecting subgizmos using mouse drag box selection. Given a [param camera] and a [param frustum], this method should return which subgizmos are contained within the frustum. The [param frustum] argument consists of an array with all the s that make up the selection frustum. The returned value should contain a list of unique subgizmo identifiers, which can have any non-negative value and will be used in other virtual methods like [method _get_subgizmo_transform] or [method _commit_subgizmos].","returnType":"PackedInt32Array"},{"name":"_subgizmos_intersect_ray","signature":"_subgizmos_intersect_ray(camera: Camera3D, point: Vector2) -> int","description":"Override this method to allow selecting subgizmos using mouse clicks. Given a [param camera] and a [param point] in screen coordinates, this method should return which subgizmo should be selected. The returned value should be a unique subgizmo identifier, which can have any non-negative value and will be used in other virtual methods like [method _get_subgizmo_transform] or [method _commit_subgizmos].","returnType":"int"},{"name":"add_collision_segments","signature":"add_collision_segments(segments: PackedVector3Array) -> void","description":"Adds the specified [param segments] to the gizmo's collision shape for picking. Call this method during [method _redraw].","returnType":"void"},{"name":"add_collision_triangles","signature":"add_collision_triangles(triangles: TriangleMesh) -> void","description":"Adds collision triangles to the gizmo for picking. A  can be generated from a regular  too. Call this method during [method _redraw].","returnType":"void"},{"name":"add_handles","signature":"add_handles(handles: PackedVector3Array, material: Material, ids: PackedInt32Array, billboard: bool, secondary: bool) -> void","description":"Adds a list of handles (points) which can be used to edit the properties of the gizmo's . The [param ids] argument can be used to specify a custom identifier for each handle, if an empty array is passed, the ids will be assigned automatically from the [param handles] argument order.\n\t\t\t\tThe [param secondary] argument marks the added handles as secondary, meaning they will normally have lower selection priority than regular handles. When the user is holding the shift key secondary handles will switch to have higher priority than regular handles. This change in priority can be used to place multiple handles at the same point while still giving the user control on their selection.\n\t\t\t\tThere are virtual methods which will be called upon editing of these handles. Call this method during [method _redraw].","returnType":"void"},{"name":"add_lines","signature":"add_lines(lines: PackedVector3Array, material: Material, billboard: bool, modulate: Color) -> void","description":"Adds lines to the gizmo (as sets of 2 points), with a given material. The lines are used for visualizing the gizmo. Call this method during [method _redraw].","returnType":"void"},{"name":"add_mesh","signature":"add_mesh(mesh: Mesh, material: Material, transform: Transform3D, skeleton: SkinReference) -> void","description":"Adds a mesh to the gizmo with the specified [param material], local [param transform] and [param skeleton]. Call this method during [method _redraw].","returnType":"void"},{"name":"add_unscaled_billboard","signature":"add_unscaled_billboard(material: Material, default_scale: float, modulate: Color) -> void","description":"Adds an unscaled billboard for visualization and selection. Call this method during [method _redraw].","returnType":"void"},{"name":"clear","signature":"clear() -> void","description":"Removes everything in the gizmo including meshes, collisions and handles.","returnType":"void"},{"name":"get_node_3d","signature":"get_node_3d() -> Node3D","description":"Returns the  node associated with this gizmo.","returnType":"Node3D"},{"name":"get_plugin","signature":"get_plugin() -> EditorNode3DGizmoPlugin","description":"Returns the  that owns this gizmo. It's useful to retrieve materials using [method EditorNode3DGizmoPlugin.get_material].","returnType":"EditorNode3DGizmoPlugin"},{"name":"get_subgizmo_selection","signature":"get_subgizmo_selection() -> PackedInt32Array","description":"Returns a list of the currently selected subgizmos. Can be used to highlight selected elements during [method _redraw].","returnType":"PackedInt32Array"},{"name":"is_subgizmo_selected","signature":"is_subgizmo_selected(id: int) -> bool","description":"Returns true if the given subgizmo is currently selected. Can be used to highlight selected elements during [method _redraw].","returnType":"bool"},{"name":"set_hidden","signature":"set_hidden(hidden: bool) -> void","description":"Sets the gizmo's hidden state. If true, the gizmo will be hidden. If false, it will be shown.","returnType":"void"},{"name":"set_node_3d","signature":"set_node_3d(node: Node) -> void","description":"Sets the reference  node for the gizmo. [param node] must inherit from .","returnType":"void"}],"signals":[]},"EditorNode3DGizmoPlugin":{"name":"EditorNode3DGizmoPlugin","description":"A class used by the editor to define Node3D gizmo types.","inherits":"Resource","properties":[],"methods":[{"name":"_begin_handle_action","signature":"_begin_handle_action(gizmo: EditorNode3DGizmo, handle_id: int, secondary: bool) -> void","description":"","returnType":"void"},{"name":"_can_be_hidden","signature":"_can_be_hidden() -> bool","description":"Override this method to define whether the gizmos handled by this plugin can be hidden or not. Returns true if not overridden.","returnType":"bool"},{"name":"_commit_handle","signature":"_commit_handle(gizmo: EditorNode3DGizmo, handle_id: int, secondary: bool, restore: Variant, cancel: bool) -> void","description":"Override this method to commit a handle being edited (handles must have been previously added by [method EditorNode3DGizmo.add_handles] during [method _redraw]). This usually means creating an  action for the change, using the current handle value as \"do\" and the [param restore] argument as \"undo\".\n\t\t\t\tIf the [param cancel] argument is true, the [param restore] value should be directly set, without any  action.\n\t\t\t\tThe [param secondary] argument is true when the committed handle is secondary (see [method EditorNode3DGizmo.add_handles] for more information).\n\t\t\t\tCalled for this plugin's active gizmos.","returnType":"void"},{"name":"_commit_subgizmos","signature":"_commit_subgizmos(gizmo: EditorNode3DGizmo, ids: PackedInt32Array, restores: Transform3D[], cancel: bool) -> void","description":"Override this method to commit a group of subgizmos being edited (see [method _subgizmos_intersect_ray] and [method _subgizmos_intersect_frustum]). This usually means creating an  action for the change, using the current transforms as \"do\" and the [param restores] transforms as \"undo\".\n\t\t\t\tIf the [param cancel] argument is true, the [param restores] transforms should be directly set, without any  action. As with all subgizmo methods, transforms are given in local space respect to the gizmo's Node3D. Called for this plugin's active gizmos.","returnType":"void"},{"name":"_create_gizmo","signature":"_create_gizmo(for_node_3d: Node3D) -> EditorNode3DGizmo","description":"Override this method to return a custom  for the 3D nodes of your choice, return null for the rest of nodes. See also [method _has_gizmo].","returnType":"EditorNode3DGizmo"},{"name":"_get_gizmo_name","signature":"_get_gizmo_name() -> String","description":"Override this method to provide the name that will appear in the gizmo visibility menu.","returnType":"String"},{"name":"_get_handle_name","signature":"_get_handle_name(gizmo: EditorNode3DGizmo, handle_id: int, secondary: bool) -> String","description":"Override this method to provide gizmo's handle names. The [param secondary] argument is true when the requested handle is secondary (see [method EditorNode3DGizmo.add_handles] for more information). Called for this plugin's active gizmos.","returnType":"String"},{"name":"_get_handle_value","signature":"_get_handle_value(gizmo: EditorNode3DGizmo, handle_id: int, secondary: bool) -> Variant","description":"Override this method to return the current value of a handle. This value will be requested at the start of an edit and used as the restore argument in [method _commit_handle].\n\t\t\t\tThe [param secondary] argument is true when the requested handle is secondary (see [method EditorNode3DGizmo.add_handles] for more information).\n\t\t\t\tCalled for this plugin's active gizmos.","returnType":"Variant"},{"name":"_get_priority","signature":"_get_priority() -> int","description":"Override this method to set the gizmo's priority. Gizmos with higher priority will have precedence when processing inputs like handles or subgizmos selection.\n\t\t\t\tAll built-in editor gizmos return a priority of -1. If not overridden, this method will return 0, which means custom gizmos will automatically get higher priority than built-in gizmos.","returnType":"int"},{"name":"_get_subgizmo_transform","signature":"_get_subgizmo_transform(gizmo: EditorNode3DGizmo, subgizmo_id: int) -> Transform3D","description":"Override this method to return the current transform of a subgizmo. As with all subgizmo methods, the transform should be in local space respect to the gizmo's Node3D. This transform will be requested at the start of an edit and used in the restore argument in [method _commit_subgizmos]. Called for this plugin's active gizmos.","returnType":"Transform3D"},{"name":"_has_gizmo","signature":"_has_gizmo(for_node_3d: Node3D) -> bool","description":"Override this method to define which Node3D nodes have a gizmo from this plugin. Whenever a  node is added to a scene this method is called, if it returns true the node gets a generic  assigned and is added to this plugin's list of active gizmos.","returnType":"bool"},{"name":"_is_handle_highlighted","signature":"_is_handle_highlighted(gizmo: EditorNode3DGizmo, handle_id: int, secondary: bool) -> bool","description":"Override this method to return true whenever to given handle should be highlighted in the editor. The [param secondary] argument is true when the requested handle is secondary (see [method EditorNode3DGizmo.add_handles] for more information). Called for this plugin's active gizmos.","returnType":"bool"},{"name":"_is_selectable_when_hidden","signature":"_is_selectable_when_hidden() -> bool","description":"Override this method to define whether Node3D with this gizmo should be selectable even when the gizmo is hidden.","returnType":"bool"},{"name":"_redraw","signature":"_redraw(gizmo: EditorNode3DGizmo) -> void","description":"Override this method to add all the gizmo elements whenever a gizmo update is requested. It's common to call [method EditorNode3DGizmo.clear] at the beginning of this method and then add visual elements depending on the node's properties.","returnType":"void"},{"name":"_set_handle","signature":"_set_handle(gizmo: EditorNode3DGizmo, handle_id: int, secondary: bool, camera: Camera3D, screen_pos: Vector2) -> void","description":"Override this method to update the node's properties when the user drags a gizmo handle (previously added with [method EditorNode3DGizmo.add_handles]). The provided [param screen_pos] is the mouse position in screen coordinates and the [param camera] can be used to convert it to raycasts.\n\t\t\t\tThe [param secondary] argument is true when the edited handle is secondary (see [method EditorNode3DGizmo.add_handles] for more information).\n\t\t\t\tCalled for this plugin's active gizmos.","returnType":"void"},{"name":"_set_subgizmo_transform","signature":"_set_subgizmo_transform(gizmo: EditorNode3DGizmo, subgizmo_id: int, transform: Transform3D) -> void","description":"Override this method to update the node properties during subgizmo editing (see [method _subgizmos_intersect_ray] and [method _subgizmos_intersect_frustum]). The [param transform] is given in the Node3D's local coordinate system. Called for this plugin's active gizmos.","returnType":"void"},{"name":"_subgizmos_intersect_frustum","signature":"_subgizmos_intersect_frustum(gizmo: EditorNode3DGizmo, camera: Camera3D, frustum_planes: Plane[]) -> PackedInt32Array","description":"Override this method to allow selecting subgizmos using mouse drag box selection. Given a [param camera] and [param frustum_planes], this method should return which subgizmos are contained within the frustums. The [param frustum_planes] argument consists of an array with all the s that make up the selection frustum. The returned value should contain a list of unique subgizmo identifiers, these identifiers can have any non-negative value and will be used in other virtual methods like [method _get_subgizmo_transform] or [method _commit_subgizmos]. Called for this plugin's active gizmos.","returnType":"PackedInt32Array"},{"name":"_subgizmos_intersect_ray","signature":"_subgizmos_intersect_ray(gizmo: EditorNode3DGizmo, camera: Camera3D, screen_pos: Vector2) -> int","description":"Override this method to allow selecting subgizmos using mouse clicks. Given a [param camera] and a [param screen_pos] in screen coordinates, this method should return which subgizmo should be selected. The returned value should be a unique subgizmo identifier, which can have any non-negative value and will be used in other virtual methods like [method _get_subgizmo_transform] or [method _commit_subgizmos]. Called for this plugin's active gizmos.","returnType":"int"},{"name":"add_material","signature":"add_material(name: String, material: StandardMaterial3D) -> void","description":"Adds a new material to the internal material list for the plugin. It can then be accessed with [method get_material]. Should not be overridden.","returnType":"void"},{"name":"create_handle_material","signature":"create_handle_material(name: String, billboard: bool, texture: Texture2D) -> void","description":"Creates a handle material with its variants (selected and/or editable) and adds them to the internal material list. They can then be accessed with [method get_material] and used in [method EditorNode3DGizmo.add_handles]. Should not be overridden.\n\t\t\t\tYou can optionally provide a texture to use instead of the default icon.","returnType":"void"},{"name":"create_icon_material","signature":"create_icon_material(name: String, texture: Texture2D, on_top: bool, color: Color) -> void","description":"Creates an icon material with its variants (selected and/or editable) and adds them to the internal material list. They can then be accessed with [method get_material] and used in [method EditorNode3DGizmo.add_unscaled_billboard]. Should not be overridden.","returnType":"void"},{"name":"create_material","signature":"create_material(name: String, color: Color, billboard: bool, on_top: bool, use_vertex_color: bool) -> void","description":"Creates an unshaded material with its variants (selected and/or editable) and adds them to the internal material list. They can then be accessed with [method get_material] and used in [method EditorNode3DGizmo.add_mesh] and [method EditorNode3DGizmo.add_lines]. Should not be overridden.","returnType":"void"},{"name":"get_material","signature":"get_material(name: String, gizmo: EditorNode3DGizmo) -> StandardMaterial3D","description":"Gets material from the internal list of materials. If an  is provided, it will try to get the corresponding variant (selected and/or editable).","returnType":"StandardMaterial3D"}],"signals":[]},"EditorPaths":{"name":"EditorPaths","description":"Editor-only singleton that returns paths to various OS-specific data folders and files.","inherits":"Object","properties":[],"methods":[{"name":"get_cache_dir","signature":"get_cache_dir() -> String","description":"Returns the absolute path to the user's cache folder. This folder should be used for temporary data that can be removed safely whenever the editor is closed (such as generated resource thumbnails).\n\t\t\t\tDefault paths per platform:\n\t\t\t\t[codeblock lang=text]\n\t\t\t\t- Windows: %LOCALAPPDATA%\\Godot\\\n\t\t\t\t- macOS: ~/Library/Caches/Godot/\n\t\t\t\t- Linux: ~/.cache/godot/\n\t\t\t\t","returnType":"String"},{"name":"get_config_dir","signature":"get_config_dir() -> String","description":"Returns the absolute path to the user's configuration folder. This folder should be used for persistent user configuration files.\n\t\t\t\tDefault paths per platform:\n\t\t\t\t[codeblock lang=text]\n\t\t\t\t- Windows: %APPDATA%\\Godot\\                    (same as `get_data_dir()`)\n\t\t\t\t- macOS: ~/Library/Application Support/Godot/  (same as `get_data_dir()`)\n\t\t\t\t- Linux: ~/.config/godot/\n\t\t\t\t","returnType":"String"},{"name":"get_data_dir","signature":"get_data_dir() -> String","description":"Returns the absolute path to the user's data folder. This folder should be used for persistent user data files such as installed export templates.\n\t\t\t\tDefault paths per platform:\n\t\t\t\t[codeblock lang=text]\n\t\t\t\t- Windows: %APPDATA%\\Godot\\                    (same as `get_config_dir()`)\n\t\t\t\t- macOS: ~/Library/Application Support/Godot/  (same as `get_config_dir()`)\n\t\t\t\t- Linux: ~/.local/share/godot/\n\t\t\t\t","returnType":"String"},{"name":"get_project_settings_dir","signature":"get_project_settings_dir() -> String","description":"Returns the project-specific editor settings path. Projects all have a unique subdirectory inside the settings path where project-specific editor settings are saved.","returnType":"String"},{"name":"get_self_contained_file","signature":"get_self_contained_file() -> String","description":"Returns the absolute path to the self-contained file that makes the current Godot editor instance be considered as self-contained. Returns an empty string if the current Godot editor instance isn't self-contained. See also [method is_self_contained].","returnType":"String"},{"name":"is_self_contained","signature":"is_self_contained() -> bool","description":"Returns true if the editor is marked as self-contained, false otherwise. When self-contained mode is enabled, user configuration, data and cache files are saved in an editor_data/ folder next to the editor binary. This makes portable usage easier and ensures the Godot editor minimizes file writes outside its own folder. Self-contained mode is not available for exported projects.\n\t\t\t\tSelf-contained mode can be enabled by creating a file named ._sc_ or _sc_ in the same folder as the editor binary or macOS .app bundle while the editor is not running. See also [method get_self_contained_file].\n\t\t\t\tNote: On macOS, quarantine flag should be manually removed before using self-contained mode, see [url=https://docs.godotengine.org/en/stable/tutorials/export/running_on_macos.html]Running on macOS.\n\t\t\t\tNote: On macOS, placing _sc_ or any other file inside .app bundle will break digital signature and make it non-portable, consider placing it in the same folder as the .app bundle instead.\n\t\t\t\tNote: The Steam release of Godot uses self-contained mode by default.","returnType":"bool"}],"signals":[]},"EditorPlugin":{"name":"EditorPlugin","description":"Used by the editor to extend its functionality.","inherits":"Node","properties":[],"methods":[{"name":"_apply_changes","signature":"_apply_changes() -> void","description":"This method is called when the editor is about to save the project, switch to another tab, etc. It asks the plugin to apply any pending state changes to ensure consistency.\n\t\t\t\tThis is used, for example, in shader editors to let the plugin know that it must apply the shader code being written by the user to the object.","returnType":"void"},{"name":"_build","signature":"_build() -> bool","description":"This method is called when the editor is about to run the project. The plugin can then perform required operations before the project runs.\n\t\t\t\tThis method must return a boolean. If this method returns false, the project will not run. The run is aborted immediately, so this also prevents all other plugins' [method _build] methods from running.","returnType":"bool"},{"name":"_clear","signature":"_clear() -> void","description":"Clear all the state and reset the object being edited to zero. This ensures your plugin does not keep editing a currently existing node, or a node from the wrong scene.","returnType":"void"},{"name":"_disable_plugin","signature":"_disable_plugin() -> void","description":"Called by the engine when the user disables the  in the Plugin tab of the project settings window.","returnType":"void"},{"name":"_edit","signature":"_edit(object: Object) -> void","description":"This function is used for plugins that edit specific object types (nodes or resources). It requests the editor to edit the given object.\n\t\t\t\t[param object] can be null if the plugin was editing an object, but there is no longer any selected object handled by this plugin. It can be used to cleanup editing state.","returnType":"void"},{"name":"_enable_plugin","signature":"_enable_plugin() -> void","description":"Called by the engine when the user enables the  in the Plugin tab of the project settings window.","returnType":"void"},{"name":"_forward_3d_draw_over_viewport","signature":"_forward_3d_draw_over_viewport(viewport_control: Control) -> void","description":"Called by the engine when the 3D editor's viewport is updated. Use the overlay  for drawing. You can update the viewport manually by calling [method update_overlays].\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tfunc _forward_3d_draw_over_viewport(overlay):\n\t\t\t\t    # Draw a circle at cursor position.\n\t\t\t\t    overlay.draw_circle(overlay.get_local_mouse_position(), 64, Color.WHITE)\n\n\t\t\t\tfunc _forward_3d_gui_input(camera, event):\n\t\t\t\t    if event is InputEventMouseMotion:\n\t\t\t\t        # Redraw viewport when cursor is moved.\n\t\t\t\t        update_overlays()\n\t\t\t\t        return EditorPlugin.AFTER_GUI_INPUT_STOP\n\t\t\t\t    return EditorPlugin.AFTER_GUI_INPUT_PASS\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tpublic override void _Forward3DDrawOverViewport(Control viewportControl)\n\t\t\t\t{\n\t\t\t\t    // Draw a circle at cursor position.\n\t\t\t\t    viewportControl.DrawCircle(viewportControl.GetLocalMousePosition(), 64, Colors.White);\n\t\t\t\t}\n\n\t\t\t\tpublic override EditorPlugin.AfterGuiInput _Forward3DGuiInput(Camera3D viewportCamera, InputEvent @event)\n\t\t\t\t{\n\t\t\t\t    if (@event is InputEventMouseMotion)\n\t\t\t\t    {\n\t\t\t\t        // Redraw viewport when cursor is moved.\n\t\t\t\t        UpdateOverlays();\n\t\t\t\t        return EditorPlugin.AfterGuiInput.Stop;\n\t\t\t\t    }\n\t\t\t\t    return EditorPlugin.AfterGuiInput.Pass;\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t","returnType":"void"},{"name":"_forward_3d_force_draw_over_viewport","signature":"_forward_3d_force_draw_over_viewport(viewport_control: Control) -> void","description":"This method is the same as [method _forward_3d_draw_over_viewport], except it draws on top of everything. Useful when you need an extra layer that shows over anything else.\n\t\t\t\tYou need to enable calling of this method by using [method set_force_draw_over_forwarding_enabled].","returnType":"void"},{"name":"_forward_3d_gui_input","signature":"_forward_3d_gui_input(viewport_camera: Camera3D, event: InputEvent) -> int","description":"Called when there is a root node in the current edited scene, [method _handles] is implemented, and an  happens in the 3D viewport. The return value decides whether the  is consumed or forwarded to other s. See [enum AfterGUIInput] for options.\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t# Prevents the InputEvent from reaching other Editor classes.\n\t\t\t\tfunc _forward_3d_gui_input(camera, event):\n\t\t\t\t    return EditorPlugin.AFTER_GUI_INPUT_STOP\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t// Prevents the InputEvent from reaching other Editor classes.\n\t\t\t\tpublic override EditorPlugin.AfterGuiInput _Forward3DGuiInput(Camera3D camera, InputEvent @event)\n\t\t\t\t{\n\t\t\t\t    return EditorPlugin.AfterGuiInput.Stop;\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tThis method must return [constant AFTER_GUI_INPUT_PASS] in order to forward the  to other Editor classes.\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t# Consumes InputEventMouseMotion and forwards other InputEvent types.\n\t\t\t\tfunc _forward_3d_gui_input(camera, event):\n\t\t\t\t    return EditorPlugin.AFTER_GUI_INPUT_STOP if event is InputEventMouseMotion else EditorPlugin.AFTER_GUI_INPUT_PASS\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t// Consumes InputEventMouseMotion and forwards other InputEvent types.\n\t\t\t\tpublic override EditorPlugin.AfterGuiInput _Forward3DGuiInput(Camera3D camera, InputEvent @event)\n\t\t\t\t{\n\t\t\t\t    return @event is InputEventMouseMotion ? EditorPlugin.AfterGuiInput.Stop : EditorPlugin.AfterGuiInput.Pass;\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t","returnType":"int"},{"name":"_forward_canvas_draw_over_viewport","signature":"_forward_canvas_draw_over_viewport(viewport_control: Control) -> void","description":"Called by the engine when the 2D editor's viewport is updated. Use the overlay  for drawing. You can update the viewport manually by calling [method update_overlays].\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tfunc _forward_canvas_draw_over_viewport(overlay):\n\t\t\t\t    # Draw a circle at cursor position.\n\t\t\t\t    overlay.draw_circle(overlay.get_local_mouse_position(), 64, Color.WHITE)\n\n\t\t\t\tfunc _forward_canvas_gui_input(event):\n\t\t\t\t    if event is InputEventMouseMotion:\n\t\t\t\t        # Redraw viewport when cursor is moved.\n\t\t\t\t        update_overlays()\n\t\t\t\t        return true\n\t\t\t\t    return false\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tpublic override void _ForwardCanvasDrawOverViewport(Control viewportControl)\n\t\t\t\t{\n\t\t\t\t    // Draw a circle at cursor position.\n\t\t\t\t    viewportControl.DrawCircle(viewportControl.GetLocalMousePosition(), 64, Colors.White);\n\t\t\t\t}\n\n\t\t\t\tpublic override bool _ForwardCanvasGuiInput(InputEvent @event)\n\t\t\t\t{\n\t\t\t\t    if (@event is InputEventMouseMotion)\n\t\t\t\t    {\n\t\t\t\t        // Redraw viewport when cursor is moved.\n\t\t\t\t        UpdateOverlays();\n\t\t\t\t        return true;\n\t\t\t\t    }\n\t\t\t\t    return false;\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t","returnType":"void"},{"name":"_forward_canvas_force_draw_over_viewport","signature":"_forward_canvas_force_draw_over_viewport(viewport_control: Control) -> void","description":"This method is the same as [method _forward_canvas_draw_over_viewport], except it draws on top of everything. Useful when you need an extra layer that shows over anything else.\n\t\t\t\tYou need to enable calling of this method by using [method set_force_draw_over_forwarding_enabled].","returnType":"void"},{"name":"_forward_canvas_gui_input","signature":"_forward_canvas_gui_input(event: InputEvent) -> bool","description":"Called when there is a root node in the current edited scene, [method _handles] is implemented, and an  happens in the 2D viewport. If this method returns true, [param event] is intercepted by this , otherwise [param event] is forwarded to other Editor classes.\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t# Prevents the InputEvent from reaching other Editor classes.\n\t\t\t\tfunc _forward_canvas_gui_input(event):\n\t\t\t\t    return true\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t// Prevents the InputEvent from reaching other Editor classes.\n\t\t\t\tpublic override bool ForwardCanvasGuiInput(InputEvent @event)\n\t\t\t\t{\n\t\t\t\t    return true;\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tThis method must return false in order to forward the  to other Editor classes.\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t# Consumes InputEventMouseMotion and forwards other InputEvent types.\n\t\t\t\tfunc _forward_canvas_gui_input(event):\n\t\t\t\t    if (event is InputEventMouseMotion):\n\t\t\t\t        return true\n\t\t\t\t    return false\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t// Consumes InputEventMouseMotion and forwards other InputEvent types.\n\t\t\t\tpublic override bool _ForwardCanvasGuiInput(InputEvent @event)\n\t\t\t\t{\n\t\t\t\t    if (@event is InputEventMouseMotion)\n\t\t\t\t    {\n\t\t\t\t        return true;\n\t\t\t\t    }\n\t\t\t\t    return false;\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t","returnType":"bool"},{"name":"_get_breakpoints","signature":"_get_breakpoints() -> PackedStringArray","description":"This is for editors that edit script-based objects. You can return a list of breakpoints in the format (script:line), for example: res://path_to_script.gd:25.","returnType":"PackedStringArray"},{"name":"_get_plugin_icon","signature":"_get_plugin_icon() -> Texture2D","description":"Override this method in your plugin to return a  in order to give it an icon.\n\t\t\t\tFor main screen plugins, this appears at the top of the screen, to the right of the \"2D\", \"3D\", \"Script\", and \"AssetLib\" buttons.\n\t\t\t\tIdeally, the plugin icon should be white with a transparent background and 16×16 pixels in size.\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tfunc _get_plugin_icon():\n\t\t\t\t    # You can use a custom icon:\n\t\t\t\t    return preload(\"res://addons/my_plugin/my_plugin_icon.svg\")\n\t\t\t\t    # Or use a built-in icon:\n\t\t\t\t    return EditorInterface.get_editor_theme().get_icon(\"Node\", \"EditorIcons\")\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tpublic override Texture2D _GetPluginIcon()\n\t\t\t\t{\n\t\t\t\t    // You can use a custom icon:\n\t\t\t\t    return ResourceLoader.Load&lt;Texture2D&gt;(\"res://addons/my_plugin/my_plugin_icon.svg\");\n\t\t\t\t    // Or use a built-in icon:\n\t\t\t\t    return EditorInterface.Singleton.GetEditorTheme().GetIcon(\"Node\", \"EditorIcons\");\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t","returnType":"Texture2D"},{"name":"_get_plugin_name","signature":"_get_plugin_name() -> String","description":"Override this method in your plugin to provide the name of the plugin when displayed in the Godot editor.\n\t\t\t\tFor main screen plugins, this appears at the top of the screen, to the right of the \"2D\", \"3D\", \"Script\", and \"AssetLib\" buttons.","returnType":"String"},{"name":"_get_state","signature":"_get_state() -> Dictionary","description":"Override this method to provide a state data you want to be saved, like view position, grid settings, folding, etc. This is used when saving the scene (so state is kept when opening it again) and for switching tabs (so state can be restored when the tab returns). This data is automatically saved for each scene in an editstate file in the editor metadata folder. If you want to store global (scene-independent) editor data for your plugin, you can use [method _get_window_layout] instead.\n\t\t\t\tUse [method _set_state] to restore your saved state.\n\t\t\t\tNote: This method should not be used to save important settings that should persist with the project.\n\t\t\t\tNote: You must implement [method _get_plugin_name] for the state to be stored and restored correctly.\n\t\t\t\t\n\t\t\t\tfunc _get_state():\n\t\t\t\t    var state = {\"zoom\": zoom, \"preferred_color\": my_color}\n\t\t\t\t    return state\n\t\t\t\t","returnType":"Dictionary"},{"name":"_get_unsaved_status","signature":"_get_unsaved_status(for_scene: String) -> String","description":"Override this method to provide a custom message that lists unsaved changes. The editor will call this method when exiting or when closing a scene, and display the returned string in a confirmation dialog. Return empty string if the plugin has no unsaved changes.\n\t\t\t\tWhen closing a scene, [param for_scene] is the path to the scene being closed. You can use it to handle built-in resources in that scene.\n\t\t\t\tIf the user confirms saving, [method _save_external_data] will be called, before closing the editor.\n\t\t\t\t\n\t\t\t\tfunc _get_unsaved_status(for_scene):\n\t\t\t\t    if not unsaved:\n\t\t\t\t        return \"\"\n\n\t\t\t\t    if for_scene.is_empty():\n\t\t\t\t        return \"Save changes in MyCustomPlugin before closing?\"\n\t\t\t\t    else:\n\t\t\t\t        return \"Scene %s has changes from MyCustomPlugin. Save before closing?\" % for_scene.get_file()\n\n\t\t\t\tfunc _save_external_data():\n\t\t\t\t    unsaved = false\n\t\t\t\t\n\t\t\t\tIf the plugin has no scene-specific changes, you can ignore the calls when closing scenes:\n\t\t\t\t\n\t\t\t\tfunc _get_unsaved_status(for_scene):\n\t\t\t\t    if not for_scene.is_empty():\n\t\t\t\t        return \"\"\n\t\t\t\t","returnType":"String"},{"name":"_get_window_layout","signature":"_get_window_layout(configuration: ConfigFile) -> void","description":"Override this method to provide the GUI layout of the plugin or any other data you want to be stored. This is used to save the project's editor layout when [method queue_save_layout] is called or the editor layout was changed (for example changing the position of a dock). The data is stored in the editor_layout.cfg file in the editor metadata directory.\n\t\t\t\tUse [method _set_window_layout] to restore your saved layout.\n\t\t\t\t\n\t\t\t\tfunc _get_window_layout(configuration):\n\t\t\t\t    configuration.set_value(\"MyPlugin\", \"window_position\", $Window.position)\n\t\t\t\t    configuration.set_value(\"MyPlugin\", \"icon_color\", $Icon.modulate)\n\t\t\t\t","returnType":"void"},{"name":"_handles","signature":"_handles(object: Object) -> bool","description":"Implement this function if your plugin edits a specific type of object (Resource or Node). If you return true, then you will get the functions [method _edit] and [method _make_visible] called when the editor requests them. If you have declared the methods [method _forward_canvas_gui_input] and [method _forward_3d_gui_input] these will be called too.\n\t\t\t\tNote: Each plugin should handle only one type of objects at a time. If a plugin handles more types of objects and they are edited at the same time, it will result in errors.","returnType":"bool"},{"name":"_has_main_screen","signature":"_has_main_screen() -> bool","description":"Returns true if this is a main screen editor plugin (it goes in the workspace selector together with 2D, 3D, Script and AssetLib).\n\t\t\t\tWhen the plugin's workspace is selected, other main screen plugins will be hidden, but your plugin will not appear automatically. It needs to be added as a child of [method EditorInterface.get_editor_main_screen] and made visible inside [method _make_visible].\n\t\t\t\tUse [method _get_plugin_name] and [method _get_plugin_icon] to customize the plugin button's appearance.\n\t\t\t\t\n\t\t\t\tvar plugin_control\n\n\t\t\t\tfunc _enter_tree():\n\t\t\t\t    plugin_control = preload(\"my_plugin_control.tscn\").instantiate()\n\t\t\t\t    EditorInterface.get_editor_main_screen().add_child(plugin_control)\n\t\t\t\t    plugin_control.hide()\n\n\t\t\t\tfunc _has_main_screen():\n\t\t\t\t    return true\n\n\t\t\t\tfunc _make_visible(visible):\n\t\t\t\t    plugin_control.visible = visible\n\n\t\t\t\tfunc _get_plugin_name():\n\t\t\t\t    return \"My Super Cool Plugin 3000\"\n\n\t\t\t\tfunc _get_plugin_icon():\n\t\t\t\t    return EditorInterface.get_editor_theme().get_icon(\"Node\", \"EditorIcons\")\n\t\t\t\t","returnType":"bool"},{"name":"_make_visible","signature":"_make_visible(visible: bool) -> void","description":"This function will be called when the editor is requested to become visible. It is used for plugins that edit a specific object type.\n\t\t\t\tRemember that you have to manage the visibility of all your editor controls manually.","returnType":"void"},{"name":"_save_external_data","signature":"_save_external_data() -> void","description":"This method is called after the editor saves the project or when it's closed. It asks the plugin to save edited external scenes/resources.","returnType":"void"},{"name":"_set_state","signature":"_set_state(state: Dictionary) -> void","description":"Restore the state saved by [method _get_state]. This method is called when the current scene tab is changed in the editor.\n\t\t\t\tNote: Your plugin must implement [method _get_plugin_name], otherwise it will not be recognized and this method will not be called.\n\t\t\t\t\n\t\t\t\tfunc _set_state(data):\n\t\t\t\t    zoom = data.get(\"zoom\", 1.0)\n\t\t\t\t    preferred_color = data.get(\"my_color\", Color.WHITE)\n\t\t\t\t","returnType":"void"},{"name":"_set_window_layout","signature":"_set_window_layout(configuration: ConfigFile) -> void","description":"Restore the plugin GUI layout and data saved by [method _get_window_layout]. This method is called for every plugin on editor startup. Use the provided [param configuration] file to read your saved data.\n\t\t\t\t\n\t\t\t\tfunc _set_window_layout(configuration):\n\t\t\t\t    $Window.position = configuration.get_value(\"MyPlugin\", \"window_position\", Vector2())\n\t\t\t\t    $Icon.modulate = configuration.get_value(\"MyPlugin\", \"icon_color\", Color.WHITE)\n\t\t\t\t","returnType":"void"},{"name":"add_autoload_singleton","signature":"add_autoload_singleton(name: String, path: String) -> void","description":"Adds a script at [param path] to the Autoload list as [param name].","returnType":"void"},{"name":"add_context_menu_plugin","signature":"add_context_menu_plugin(slot: int, plugin: EditorContextMenuPlugin) -> void","description":"Adds a plugin to the context menu. [param slot] is the context menu where the plugin will be added.\n\t\t\t\tSee [enum EditorContextMenuPlugin.ContextMenuSlot] for available context menus. A plugin instance can belong only to a single context menu slot.","returnType":"void"},{"name":"add_control_to_bottom_panel","signature":"add_control_to_bottom_panel(control: Control, title: String, shortcut: Shortcut) -> Button","description":"Adds a control to the bottom panel (together with Output, Debug, Animation, etc.). Returns a reference to the button added. It's up to you to hide/show the button when needed. When your plugin is deactivated, make sure to remove your custom control with [method remove_control_from_bottom_panel] and free it with [method Node.queue_free].\n\t\t\t\tOptionally, you can specify a shortcut parameter. When pressed, this shortcut will toggle the bottom panel's visibility. See the default editor bottom panel shortcuts in the Editor Settings for inspiration. Per convention, they all use Alt modifier.","returnType":"Button"},{"name":"add_control_to_container","signature":"add_control_to_container(container: int, control: Control) -> void","description":"Adds a custom control to a container (see [enum CustomControlContainer]). There are many locations where custom controls can be added in the editor UI.\n\t\t\t\tPlease remember that you have to manage the visibility of your custom controls yourself (and likely hide it after adding it).\n\t\t\t\tWhen your plugin is deactivated, make sure to remove your custom control with [method remove_control_from_container] and free it with [method Node.queue_free].","returnType":"void"},{"name":"add_control_to_dock","signature":"add_control_to_dock(slot: int, control: Control, shortcut: Shortcut) -> void","description":"Adds the control to a specific dock slot (see [enum DockSlot] for options).\n\t\t\t\tIf the dock is repositioned and as long as the plugin is active, the editor will save the dock position on further sessions.\n\t\t\t\tWhen your plugin is deactivated, make sure to remove your custom control with [method remove_control_from_docks] and free it with [method Node.queue_free].\n\t\t\t\tOptionally, you can specify a shortcut parameter. When pressed, this shortcut will toggle the dock's visibility once it's moved to the bottom panel (this shortcut does not affect the dock otherwise). See the default editor bottom panel shortcuts in the Editor Settings for inspiration. Per convention, they all use Alt modifier.","returnType":"void"},{"name":"add_custom_type","signature":"add_custom_type(type: String, base: String, script: Script, icon: Texture2D) -> void","description":"Adds a custom type, which will appear in the list of nodes or resources.\n\t\t\t\tWhen a given node or resource is selected, the base type will be instantiated (e.g. \"Node3D\", \"Control\", \"Resource\"), then the script will be loaded and set to this object.\n\t\t\t\tNote: The base type is the base engine class which this type's class hierarchy inherits, not any custom type parent classes.\n\t\t\t\tYou can use the virtual method [method _handles] to check if your custom object is being edited by checking the script or using the is keyword.\n\t\t\t\tDuring run-time, this will be a simple object with a script so this function does not need to be called then.\n\t\t\t\tNote: Custom types added this way are not true classes. They are just a helper to create a node with specific script.","returnType":"void"},{"name":"add_debugger_plugin","signature":"add_debugger_plugin(script: EditorDebuggerPlugin) -> void","description":"Adds a  as debugger plugin to the Debugger. The script must extend .","returnType":"void"},{"name":"add_export_platform","signature":"add_export_platform(platform: EditorExportPlatform) -> void","description":"Registers a new . Export platforms provides functionality of exporting to the specific platform.","returnType":"void"},{"name":"add_export_plugin","signature":"add_export_plugin(plugin: EditorExportPlugin) -> void","description":"Registers a new . Export plugins are used to perform tasks when the project is being exported.\n\t\t\t\tSee [method add_inspector_plugin] for an example of how to register a plugin.","returnType":"void"},{"name":"add_import_plugin","signature":"add_import_plugin(importer: EditorImportPlugin, first_priority: bool) -> void","description":"Registers a new . Import plugins are used to import custom and unsupported assets as a custom  type.\n\t\t\t\tIf [param first_priority] is true, the new import plugin is inserted first in the list and takes precedence over pre-existing plugins.\n\t\t\t\tNote: If you want to import custom 3D asset formats use [method add_scene_format_importer_plugin] instead.\n\t\t\t\tSee [method add_inspector_plugin] for an example of how to register a plugin.","returnType":"void"},{"name":"add_inspector_plugin","signature":"add_inspector_plugin(plugin: EditorInspectorPlugin) -> void","description":"Registers a new . Inspector plugins are used to extend  and provide custom configuration tools for your object's properties.\n\t\t\t\tNote: Always use [method remove_inspector_plugin] to remove the registered  when your  is disabled to prevent leaks and an unexpected behavior.\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tconst MyInspectorPlugin = preload(\"res://addons/your_addon/path/to/your/script.gd\")\n\t\t\t\tvar inspector_plugin = MyInspectorPlugin.new()\n\n\t\t\t\tfunc _enter_tree():\n\t\t\t\t    add_inspector_plugin(inspector_plugin)\n\n\t\t\t\tfunc _exit_tree():\n\t\t\t\t    remove_inspector_plugin(inspector_plugin)\n\t\t\t\t\n\t\t\t\t","returnType":"void"},{"name":"add_node_3d_gizmo_plugin","signature":"add_node_3d_gizmo_plugin(plugin: EditorNode3DGizmoPlugin) -> void","description":"Registers a new . Gizmo plugins are used to add custom gizmos to the 3D preview viewport for a .\n\t\t\t\tSee [method add_inspector_plugin] for an example of how to register a plugin.","returnType":"void"},{"name":"add_resource_conversion_plugin","signature":"add_resource_conversion_plugin(plugin: EditorResourceConversionPlugin) -> void","description":"Registers a new . Resource conversion plugins are used to add custom resource converters to the editor inspector.\n\t\t\t\tSee  for an example of how to create a resource conversion plugin.","returnType":"void"},{"name":"add_scene_format_importer_plugin","signature":"add_scene_format_importer_plugin(scene_format_importer: EditorSceneFormatImporter, first_priority: bool) -> void","description":"Registers a new . Scene importers are used to import custom 3D asset formats as scenes.\n\t\t\t\tIf [param first_priority] is true, the new import plugin is inserted first in the list and takes precedence over pre-existing plugins.","returnType":"void"},{"name":"add_scene_post_import_plugin","signature":"add_scene_post_import_plugin(scene_import_plugin: EditorScenePostImportPlugin, first_priority: bool) -> void","description":"Add a . These plugins allow customizing the import process of 3D assets by adding new options to the import dialogs.\n\t\t\t\tIf [param first_priority] is true, the new import plugin is inserted first in the list and takes precedence over pre-existing plugins.","returnType":"void"},{"name":"add_tool_menu_item","signature":"add_tool_menu_item(name: String, callable: Callable) -> void","description":"Adds a custom menu item to Project &gt; Tools named [param name]. When clicked, the provided [param callable] will be called.","returnType":"void"},{"name":"add_tool_submenu_item","signature":"add_tool_submenu_item(name: String, submenu: PopupMenu) -> void","description":"Adds a custom  submenu under Project &gt; Tools &gt; [param name]. Use [method remove_tool_menu_item] on plugin clean up to remove the menu.","returnType":"void"},{"name":"add_translation_parser_plugin","signature":"add_translation_parser_plugin(parser: EditorTranslationParserPlugin) -> void","description":"Registers a custom translation parser plugin for extracting translatable strings from custom files.","returnType":"void"},{"name":"add_undo_redo_inspector_hook_callback","signature":"add_undo_redo_inspector_hook_callback(callable: Callable) -> void","description":"Hooks a callback into the undo/redo action creation when a property is modified in the inspector. This allows, for example, to save other properties that may be lost when a given property is modified.\n\t\t\t\tThe callback should have 4 arguments:  undo_redo,  modified_object,  property and  new_value. They are, respectively, the  object used by the inspector, the currently modified object, the name of the modified property and the new value the property is about to take.","returnType":"void"},{"name":"get_editor_interface","signature":"get_editor_interface() -> EditorInterface","description":"Returns the  singleton instance.","returnType":"EditorInterface"},{"name":"get_export_as_menu","signature":"get_export_as_menu() -> PopupMenu","description":"Returns the  under Scene &gt; Export As....","returnType":"PopupMenu"},{"name":"get_plugin_version","signature":"get_plugin_version() -> String","description":"Provide the version of the plugin declared in the plugin.cfg config file.","returnType":"String"},{"name":"get_script_create_dialog","signature":"get_script_create_dialog() -> ScriptCreateDialog","description":"Gets the Editor's dialog used for making scripts.\n\t\t\t\tNote: Users can configure it before use.\n\t\t\t\tWarning: Removing and freeing this node will render a part of the editor useless and may cause a crash.","returnType":"ScriptCreateDialog"},{"name":"get_undo_redo","signature":"get_undo_redo() -> EditorUndoRedoManager","description":"Gets the undo/redo object. Most actions in the editor can be undoable, so use this object to make sure this happens when it's worth it.","returnType":"EditorUndoRedoManager"},{"name":"hide_bottom_panel","signature":"hide_bottom_panel() -> void","description":"Minimizes the bottom panel.","returnType":"void"},{"name":"make_bottom_panel_item_visible","signature":"make_bottom_panel_item_visible(item: Control) -> void","description":"Makes a specific item in the bottom panel visible.","returnType":"void"},{"name":"queue_save_layout","signature":"queue_save_layout() -> void","description":"Queue save the project's editor layout.","returnType":"void"},{"name":"remove_autoload_singleton","signature":"remove_autoload_singleton(name: String) -> void","description":"Removes an Autoload [param name] from the list.","returnType":"void"},{"name":"remove_context_menu_plugin","signature":"remove_context_menu_plugin(plugin: EditorContextMenuPlugin) -> void","description":"Removes the specified context menu plugin.","returnType":"void"},{"name":"remove_control_from_bottom_panel","signature":"remove_control_from_bottom_panel(control: Control) -> void","description":"Removes the control from the bottom panel. You have to manually [method Node.queue_free] the control.","returnType":"void"},{"name":"remove_control_from_container","signature":"remove_control_from_container(container: int, control: Control) -> void","description":"Removes the control from the specified container. You have to manually [method Node.queue_free] the control.","returnType":"void"},{"name":"remove_control_from_docks","signature":"remove_control_from_docks(control: Control) -> void","description":"Removes the control from the dock. You have to manually [method Node.queue_free] the control.","returnType":"void"},{"name":"remove_custom_type","signature":"remove_custom_type(type: String) -> void","description":"Removes a custom type added by [method add_custom_type].","returnType":"void"},{"name":"remove_debugger_plugin","signature":"remove_debugger_plugin(script: EditorDebuggerPlugin) -> void","description":"Removes the debugger plugin with given script from the Debugger.","returnType":"void"},{"name":"remove_export_platform","signature":"remove_export_platform(platform: EditorExportPlatform) -> void","description":"Removes an export platform registered by [method add_export_platform].","returnType":"void"},{"name":"remove_export_plugin","signature":"remove_export_plugin(plugin: EditorExportPlugin) -> void","description":"Removes an export plugin registered by [method add_export_plugin].","returnType":"void"},{"name":"remove_import_plugin","signature":"remove_import_plugin(importer: EditorImportPlugin) -> void","description":"Removes an import plugin registered by [method add_import_plugin].","returnType":"void"},{"name":"remove_inspector_plugin","signature":"remove_inspector_plugin(plugin: EditorInspectorPlugin) -> void","description":"Removes an inspector plugin registered by [method add_inspector_plugin].","returnType":"void"},{"name":"remove_node_3d_gizmo_plugin","signature":"remove_node_3d_gizmo_plugin(plugin: EditorNode3DGizmoPlugin) -> void","description":"Removes a gizmo plugin registered by [method add_node_3d_gizmo_plugin].","returnType":"void"},{"name":"remove_resource_conversion_plugin","signature":"remove_resource_conversion_plugin(plugin: EditorResourceConversionPlugin) -> void","description":"Removes a resource conversion plugin registered by [method add_resource_conversion_plugin].","returnType":"void"},{"name":"remove_scene_format_importer_plugin","signature":"remove_scene_format_importer_plugin(scene_format_importer: EditorSceneFormatImporter) -> void","description":"Removes a scene format importer registered by [method add_scene_format_importer_plugin].","returnType":"void"},{"name":"remove_scene_post_import_plugin","signature":"remove_scene_post_import_plugin(scene_import_plugin: EditorScenePostImportPlugin) -> void","description":"Remove the , added with [method add_scene_post_import_plugin].","returnType":"void"},{"name":"remove_tool_menu_item","signature":"remove_tool_menu_item(name: String) -> void","description":"Removes a menu [param name] from Project &gt; Tools.","returnType":"void"},{"name":"remove_translation_parser_plugin","signature":"remove_translation_parser_plugin(parser: EditorTranslationParserPlugin) -> void","description":"Removes a custom translation parser plugin registered by [method add_translation_parser_plugin].","returnType":"void"},{"name":"remove_undo_redo_inspector_hook_callback","signature":"remove_undo_redo_inspector_hook_callback(callable: Callable) -> void","description":"Removes a callback previously added by [method add_undo_redo_inspector_hook_callback].","returnType":"void"},{"name":"set_dock_tab_icon","signature":"set_dock_tab_icon(control: Control, icon: Texture2D) -> void","description":"Sets the tab icon for the given control in a dock slot. Setting to null removes the icon.","returnType":"void"},{"name":"set_force_draw_over_forwarding_enabled","signature":"set_force_draw_over_forwarding_enabled() -> void","description":"Enables calling of [method _forward_canvas_force_draw_over_viewport] for the 2D editor and [method _forward_3d_force_draw_over_viewport] for the 3D editor when their viewports are updated. You need to call this method only once and it will work permanently for this plugin.","returnType":"void"},{"name":"set_input_event_forwarding_always_enabled","signature":"set_input_event_forwarding_always_enabled() -> void","description":"Use this method if you always want to receive inputs from 3D view screen inside [method _forward_3d_gui_input]. It might be especially usable if your plugin will want to use raycast in the scene.","returnType":"void"},{"name":"update_overlays","signature":"update_overlays() -> int","description":"Updates the overlays of the 2D and 3D editor viewport. Causes methods [method _forward_canvas_draw_over_viewport], [method _forward_canvas_force_draw_over_viewport], [method _forward_3d_draw_over_viewport] and [method _forward_3d_force_draw_over_viewport] to be called.","returnType":"int"}],"signals":[{"name":"main_screen_changed","description":"Emitted when user changes the workspace ([b]2D[/b], [b]3D[/b], [b]Script[/b], [b]AssetLib[/b]). Also works with custom screens defined by plugins."},{"name":"project_settings_changed","description":"Emitted when any project setting has changed."},{"name":"resource_saved","description":"Emitted when the given [param resource] was saved on disc. See also [signal scene_saved]."},{"name":"scene_changed","description":"Emitted when the scene is changed in the editor. The argument will return the root node of the scene that has just become active. If this scene is new and empty, the argument will be [code]null[/code]."},{"name":"scene_closed","description":"Emitted when user closes a scene. The argument is a file path to the closed scene."},{"name":"scene_saved","description":"Emitted when a scene was saved on disc. The argument is a file path to the saved scene. See also [signal resource_saved]."}]},"EditorProperty":{"name":"EditorProperty","description":"Custom control for editing properties that can be added to the .","inherits":"Container","properties":[{"name":"checkable","type":"bool","description":"Used by the inspector, set to [code]true[/code] when the property is checkable."},{"name":"checked","type":"bool","description":"Used by the inspector, set to [code]true[/code] when the property is checked."},{"name":"deletable","type":"bool","description":"Used by the inspector, set to [code]true[/code] when the property can be deleted by the user."},{"name":"draw_background","type":"bool","description":"Used by the inspector, set to [code]true[/code] when the property label is drawn."},{"name":"draw_label","type":"bool","description":"Used by the inspector, set to [code]true[/code] when the property background is drawn."},{"name":"draw_warning","type":"bool","description":"Used by the inspector, set to [code]true[/code] when the property is drawn with the editor theme's warning color. This is used for editable children's properties."},{"name":"keying","type":"bool","description":"Used by the inspector, set to [code]true[/code] when the property can add keys for animation."},{"name":"label","type":"String","description":"Set this property to change the label (if you want to show one)."},{"name":"name_split_ratio","type":"float","description":"Space distribution ratio between the label and the editing field."},{"name":"read_only","type":"bool","description":"Used by the inspector, set to [code]true[/code] when the property is read-only."},{"name":"selectable","type":"bool","description":"Used by the inspector, set to [code]true[/code] when the property is selectable."},{"name":"use_folding","type":"bool","description":"Used by the inspector, set to [code]true[/code] when the property is using folding."}],"methods":[{"name":"_set_read_only","signature":"_set_read_only(read_only: bool) -> void","description":"Called when the read-only status of the property is changed. It may be used to change custom controls into a read-only or modifiable state.","returnType":"void"},{"name":"_update_property","signature":"_update_property() -> void","description":"When this virtual function is called, you must update your editor.","returnType":"void"},{"name":"add_focusable","signature":"add_focusable(control: Control) -> void","description":"If any of the controls added can gain keyboard focus, add it here. This ensures that focus will be restored if the inspector is refreshed.","returnType":"void"},{"name":"deselect","signature":"deselect() -> void","description":"Draw property as not selected. Used by the inspector.","returnType":"void"},{"name":"emit_changed","signature":"emit_changed(property: StringName, value: Variant, field: StringName, changing: bool) -> void","description":"If one or several properties have changed, this must be called. [param field] is used in case your editor can modify fields separately (as an example, Vector3.x). The [param changing] argument avoids the editor requesting this property to be refreshed (leave as false if unsure).","returnType":"void"},{"name":"get_edited_object","signature":"get_edited_object() -> Object","description":"Gets the edited object.","returnType":"Object"},{"name":"get_edited_property","signature":"get_edited_property() -> StringName","description":"Gets the edited property. If your editor is for a single property (added via [method EditorInspectorPlugin._parse_property]), then this will return the property.","returnType":"StringName"},{"name":"is_selected","signature":"is_selected() -> bool","description":"Returns true if property is drawn as selected. Used by the inspector.","returnType":"bool"},{"name":"select","signature":"select(focusable: int) -> void","description":"Draw property as selected. Used by the inspector.","returnType":"void"},{"name":"set_bottom_editor","signature":"set_bottom_editor(editor: Control) -> void","description":"Puts the [param editor] control below the property label. The control must be previously added using [method Node.add_child].","returnType":"void"},{"name":"set_label_reference","signature":"set_label_reference(control: Control) -> void","description":"Used by the inspector, set to a control that will be used as a reference to calculate the size of the label.","returnType":"void"},{"name":"set_object_and_property","signature":"set_object_and_property(object: Object, property: StringName) -> void","description":"Assigns object and property to edit.","returnType":"void"},{"name":"update_property","signature":"update_property() -> void","description":"Forces refresh of the property display.","returnType":"void"}],"signals":[{"name":"multiple_properties_changed","description":"Emit it if you want multiple properties modified at the same time. Do not use if added via [method EditorInspectorPlugin._parse_property]."},{"name":"object_id_selected","description":"Used by sub-inspectors. Emit it if what was selected was an Object ID."},{"name":"property_can_revert_changed","description":"Emitted when the revertability (i.e., whether it has a non-default value and thus is displayed with a revert icon) of a property has changed."},{"name":"property_changed","description":"Do not emit this manually, use the [method emit_changed] method instead."},{"name":"property_checked","description":"Emitted when a property was checked. Used internally."},{"name":"property_deleted","description":"Emitted when a property was deleted. Used internally."},{"name":"property_favorited","description":"Emit it if you want to mark a property as favorited, making it appear at the top of the inspector."},{"name":"property_keyed","description":"Emit it if you want to add this value as an animation key (check for keying being enabled first)."},{"name":"property_keyed_with_value","description":"Emit it if you want to key a property with a single value."},{"name":"property_pinned","description":"Emit it if you want to mark (or unmark) the value of a property for being saved regardless of being equal to the default value.\n\t\t\t\tThe default value is the one the property will get when the node is just instantiated and can come from an ancestor scene in the inheritance/instantiation chain, a script or a builtin class."},{"name":"resource_selected","description":"If you want a sub-resource to be edited, emit this signal with the resource."},{"name":"selected","description":"Emitted when selected. Used internally."}]},"EditorResourceConversionPlugin":{"name":"EditorResourceConversionPlugin","description":"Plugin for adding custom converters from one resource format to another in the editor resource picker context menu; for example, converting a  to a .","inherits":"RefCounted","properties":[],"methods":[{"name":"_convert","signature":"_convert(resource: Resource) -> Resource","description":"Takes an input  and converts it to the type given in [method _converts_to]. The returned  is the result of the conversion, and the input  remains unchanged.","returnType":"Resource"},{"name":"_converts_to","signature":"_converts_to() -> String","description":"Returns the class name of the target type of  that this plugin converts source resources to.","returnType":"String"},{"name":"_handles","signature":"_handles(resource: Resource) -> bool","description":"Called to determine whether a particular  can be converted to the target resource type by this plugin.","returnType":"bool"}],"signals":[]},"EditorResourcePicker":{"name":"EditorResourcePicker","description":"Godot editor's control for selecting  type properties.","inherits":"HBoxContainer","properties":[{"name":"base_type","type":"String","description":"The base type of allowed resource types. Can be a comma-separated list of several options."},{"name":"editable","type":"bool","description":"If [code]true[/code], the value can be selected and edited."},{"name":"edited_resource","type":"Resource","description":"The edited resource value."},{"name":"toggle_mode","type":"bool","description":"If [code]true[/code], the main button with the resource preview works in the toggle mode. Use [method set_toggle_pressed] to manually set the state."}],"methods":[{"name":"_handle_menu_selected","signature":"_handle_menu_selected(id: int) -> bool","description":"This virtual method can be implemented to handle context menu items not handled by default. See [method _set_create_options].","returnType":"bool"},{"name":"_set_create_options","signature":"_set_create_options(menu_node: Object) -> void","description":"This virtual method is called when updating the context menu of . Implement this method to override the \"New ...\" items with your own options. [param menu_node] is a reference to the  node.\n\t\t\t\tNote: Implement [method _handle_menu_selected] to handle these custom items.","returnType":"void"},{"name":"get_allowed_types","signature":"get_allowed_types() -> PackedStringArray","description":"Returns a list of all allowed types and subtypes corresponding to the [member base_type]. If the [member base_type] is empty, an empty list is returned.","returnType":"PackedStringArray"},{"name":"set_toggle_pressed","signature":"set_toggle_pressed(pressed: bool) -> void","description":"Sets the toggle mode state for the main button. Works only if [member toggle_mode] is set to true.","returnType":"void"}],"signals":[{"name":"resource_changed","description":"Emitted when the value of the edited resource was changed."},{"name":"resource_selected","description":"Emitted when the resource value was set and user clicked to edit it. When [param inspect] is [code]true[/code], the signal was caused by the context menu \"Edit\" or \"Inspect\" option."}]},"EditorResourcePreview":{"name":"EditorResourcePreview","description":"A node used to generate previews of resources or files.","inherits":"Node","properties":[],"methods":[{"name":"add_preview_generator","signature":"add_preview_generator(generator: EditorResourcePreviewGenerator) -> void","description":"Create an own, custom preview generator.","returnType":"void"},{"name":"check_for_invalidation","signature":"check_for_invalidation(path: String) -> void","description":"Check if the resource changed, if so, it will be invalidated and the corresponding signal emitted.","returnType":"void"},{"name":"queue_edited_resource_preview","signature":"queue_edited_resource_preview(resource: Resource, receiver: Object, receiver_func: StringName, userdata: Variant) -> void","description":"Queue the [param resource] being edited for preview. Once the preview is ready, the [param receiver]'s [param receiver_func] will be called. The [param receiver_func] must take the following four arguments:  path,  preview,  thumbnail_preview,  userdata. [param userdata] can be anything, and will be returned when [param receiver_func] is called.\n\t\t\t\tNote: If it was not possible to create the preview the [param receiver_func] will still be called, but the preview will be null.","returnType":"void"},{"name":"queue_resource_preview","signature":"queue_resource_preview(path: String, receiver: Object, receiver_func: StringName, userdata: Variant) -> void","description":"Queue a resource file located at [param path] for preview. Once the preview is ready, the [param receiver]'s [param receiver_func] will be called. The [param receiver_func] must take the following four arguments:  path,  preview,  thumbnail_preview,  userdata. [param userdata] can be anything, and will be returned when [param receiver_func] is called.\n\t\t\t\tNote: If it was not possible to create the preview the [param receiver_func] will still be called, but the preview will be null.","returnType":"void"},{"name":"remove_preview_generator","signature":"remove_preview_generator(generator: EditorResourcePreviewGenerator) -> void","description":"Removes a custom preview generator.","returnType":"void"}],"signals":[{"name":"preview_invalidated","description":"Emitted if a preview was invalidated (changed). [param path] corresponds to the path of the preview."}]},"EditorResourcePreviewGenerator":{"name":"EditorResourcePreviewGenerator","description":"Custom generator of previews.","inherits":"RefCounted","properties":[],"methods":[{"name":"_can_generate_small_preview","signature":"_can_generate_small_preview() -> bool","description":"If this function returns true, the generator will call [method _generate] or [method _generate_from_path] for small previews as well.\n\t\t\t\tBy default, it returns false.","returnType":"bool"},{"name":"_generate","signature":"_generate(resource: Resource, size: Vector2i, metadata: Dictionary) -> Texture2D","description":"Generate a preview from a given resource with the specified size. This must always be implemented.\n\t\t\t\tReturning null is an OK way to fail and let another generator take care.\n\t\t\t\tCare must be taken because this function is always called from a thread (not the main thread).\n\t\t\t\t[param metadata] dictionary can be modified to store file-specific metadata that can be used in [method EditorResourceTooltipPlugin._make_tooltip_for_path] (like image size, sample length etc.).","returnType":"Texture2D"},{"name":"_generate_from_path","signature":"_generate_from_path(path: String, size: Vector2i, metadata: Dictionary) -> Texture2D","description":"Generate a preview directly from a path with the specified size. Implementing this is optional, as default code will load and call [method _generate].\n\t\t\t\tReturning null is an OK way to fail and let another generator take care.\n\t\t\t\tCare must be taken because this function is always called from a thread (not the main thread).\n\t\t\t\t[param metadata] dictionary can be modified to store file-specific metadata that can be used in [method EditorResourceTooltipPlugin._make_tooltip_for_path] (like image size, sample length etc.).","returnType":"Texture2D"},{"name":"_generate_small_preview_automatically","signature":"_generate_small_preview_automatically() -> bool","description":"If this function returns true, the generator will automatically generate the small previews from the normal preview texture generated by the methods [method _generate] or [method _generate_from_path].\n\t\t\t\tBy default, it returns false.","returnType":"bool"},{"name":"_handles","signature":"_handles(type: String) -> bool","description":"Returns true if your generator supports the resource of type [param type].","returnType":"bool"}],"signals":[]},"EditorResourceTooltipPlugin":{"name":"EditorResourceTooltipPlugin","description":"A plugin that advanced tooltip for its handled resource type.","inherits":"RefCounted","properties":[],"methods":[{"name":"_handles","signature":"_handles(type: String) -> bool","description":"Return true if the plugin is going to handle the given  [param type].","returnType":"bool"},{"name":"_make_tooltip_for_path","signature":"_make_tooltip_for_path(path: String, metadata: Dictionary, base: Control) -> Control","description":"Create and return a tooltip that will be displayed when the user hovers a resource under the given [param path] in filesystem dock.\n\t\t\t\tThe [param metadata] dictionary is provided by preview generator (see [method EditorResourcePreviewGenerator._generate]).\n\t\t\t\t[param base] is the base default tooltip, which is a  with a file name, type and size labels. If another plugin handled the same file type, [param base] will be output from the previous plugin. For best result, make sure the base tooltip is part of the returned .\n\t\t\t\tNote: It's unadvised to use [method ResourceLoader.load], especially with heavy resources like models or textures, because it will make the editor unresponsive when creating the tooltip. You can use [method request_thumbnail] if you want to display a preview in your tooltip.\n\t\t\t\tNote: If you decide to discard the [param base], make sure to call [method Node.queue_free], because it's not freed automatically.\n\t\t\t\t\n\t\t\t\tfunc _make_tooltip_for_path(path, metadata, base):\n\t\t\t\t    var t_rect = TextureRect.new()\n\t\t\t\t    request_thumbnail(path, t_rect)\n\t\t\t\t    base.add_child(t_rect) # The TextureRect will appear at the bottom of the tooltip.\n\t\t\t\t    return base\n\t\t\t\t","returnType":"Control"},{"name":"request_thumbnail","signature":"request_thumbnail(path: String, control: TextureRect) -> void","description":"Requests a thumbnail for the given . The thumbnail is created asynchronously by  and automatically set when available.","returnType":"void"}],"signals":[]},"EditorSceneFormatImporter":{"name":"EditorSceneFormatImporter","description":"Imports scenes from third-parties' 3D files.","inherits":"RefCounted","properties":[],"methods":[{"name":"_get_extensions","signature":"_get_extensions() -> PackedStringArray","description":"Return supported file extensions for this scene importer.","returnType":"PackedStringArray"},{"name":"_get_import_options","signature":"_get_import_options(path: String) -> void","description":"Override to add general import options. These will appear in the main import dock on the editor. Add options via [method add_import_option] and [method add_import_option_advanced].\n\t\t\t\tNote: All  and  instances will add options for all files. It is good practice to check the file extension when [param path] is non-empty.\n\t\t\t\tWhen the user is editing project settings, [param path] will be empty. It is recommended to add all options when [param path] is empty to allow the user to customize Import Defaults.","returnType":"void"},{"name":"_get_option_visibility","signature":"_get_option_visibility(path: String, for_animation: bool, option: String) -> Variant","description":"Should return true to show the given option, false to hide the given option, or null to ignore.","returnType":"Variant"},{"name":"_import_scene","signature":"_import_scene(path: String, flags: int, options: Dictionary) -> Object","description":"Perform the bulk of the scene import logic here, for example using  or .","returnType":"Object"},{"name":"add_import_option","signature":"add_import_option(name: String, value: Variant) -> void","description":"Add a specific import option (name and default value only). This function can only be called from [method _get_import_options].","returnType":"void"},{"name":"add_import_option_advanced","signature":"add_import_option_advanced(type: int, name: String, default_value: Variant, hint: int, hint_string: String, usage_flags: int) -> void","description":"Add a specific import option. This function can only be called from [method _get_import_options].","returnType":"void"}],"signals":[]},"EditorScenePostImport":{"name":"EditorScenePostImport","description":"Post-processes scenes after import.","inherits":"RefCounted","properties":[],"methods":[{"name":"_post_import","signature":"_post_import(scene: Node) -> Object","description":"Called after the scene was imported. This method must return the modified version of the scene.","returnType":"Object"},{"name":"get_source_file","signature":"get_source_file() -> String","description":"Returns the source file path which got imported (e.g. res://scene.dae).","returnType":"String"}],"signals":[]},"EditorScenePostImportPlugin":{"name":"EditorScenePostImportPlugin","description":"Plugin to control and modifying the process of importing a scene.","inherits":"RefCounted","properties":[],"methods":[{"name":"_get_import_options","signature":"_get_import_options(path: String) -> void","description":"Override to add general import options. These will appear in the main import dock on the editor. Add options via [method add_import_option] and [method add_import_option_advanced].","returnType":"void"},{"name":"_get_internal_import_options","signature":"_get_internal_import_options(category: int) -> void","description":"Override to add internal import options. These will appear in the 3D scene import dialog. Add options via [method add_import_option] and [method add_import_option_advanced].","returnType":"void"},{"name":"_get_internal_option_update_view_required","signature":"_get_internal_option_update_view_required(category: int, option: String) -> Variant","description":"Should return true if the 3D view of the import dialog needs to update when changing the given option.","returnType":"Variant"},{"name":"_get_internal_option_visibility","signature":"_get_internal_option_visibility(category: int, for_animation: bool, option: String) -> Variant","description":"Should return true to show the given option, false to hide the given option, or null to ignore.","returnType":"Variant"},{"name":"_get_option_visibility","signature":"_get_option_visibility(path: String, for_animation: bool, option: String) -> Variant","description":"Should return true to show the given option, false to hide the given option, or null to ignore.","returnType":"Variant"},{"name":"_internal_process","signature":"_internal_process(category: int, base_node: Node, node: Node, resource: Resource) -> void","description":"Process a specific node or resource for a given category.","returnType":"void"},{"name":"_post_process","signature":"_post_process(scene: Node) -> void","description":"Post process the scene. This function is called after the final scene has been configured.","returnType":"void"},{"name":"_pre_process","signature":"_pre_process(scene: Node) -> void","description":"Pre Process the scene. This function is called right after the scene format loader loaded the scene and no changes have been made.\n\t\t\t\tPre process may be used to adjust internal import options in the \"nodes\", \"meshes\", \"animations\" or \"materials\" keys inside get_option_value(\"_subresources\").","returnType":"void"},{"name":"add_import_option","signature":"add_import_option(name: String, value: Variant) -> void","description":"Add a specific import option (name and default value only). This function can only be called from [method _get_import_options] and [method _get_internal_import_options].","returnType":"void"},{"name":"add_import_option_advanced","signature":"add_import_option_advanced(type: int, name: String, default_value: Variant, hint: int, hint_string: String, usage_flags: int) -> void","description":"Add a specific import option. This function can only be called from [method _get_import_options] and [method _get_internal_import_options].","returnType":"void"},{"name":"get_option_value","signature":"get_option_value(name: StringName) -> Variant","description":"Query the value of an option. This function can only be called from those querying visibility, or processing.","returnType":"Variant"}],"signals":[]},"EditorScript":{"name":"EditorScript","description":"Base script that can be used to add extension functions to the editor.","inherits":"RefCounted","properties":[],"methods":[{"name":"_run","signature":"_run() -> void","description":"This method is executed by the Editor when File &gt; Run is used.","returnType":"void"},{"name":"add_root_node","signature":"add_root_node(node: Node) -> void","description":"Makes [param node] root of the currently opened scene. Only works if the scene is empty. If the [param node] is a scene instance, an inheriting scene will be created.","returnType":"void"},{"name":"get_editor_interface","signature":"get_editor_interface() -> EditorInterface","description":"Returns the  singleton instance.","returnType":"EditorInterface"},{"name":"get_scene","signature":"get_scene() -> Node","description":"Returns the edited (current) scene's root . Equivalent of [method EditorInterface.get_edited_scene_root].","returnType":"Node"}],"signals":[]},"EditorScriptPicker":{"name":"EditorScriptPicker","description":"Godot editor's control for selecting the script property of a .","inherits":"EditorResourcePicker","properties":[{"name":"script_owner","type":"Node","description":"The owner [Node] of the script property that holds the edited resource."}],"methods":[],"signals":[]},"EditorSelection":{"name":"EditorSelection","description":"Manages the SceneTree selection in the editor.","inherits":"Object","properties":[],"methods":[{"name":"add_node","signature":"add_node(node: Node) -> void","description":"Adds a node to the selection.\n\t\t\t\tNote: The newly selected node will not be automatically edited in the inspector. If you want to edit a node, use [method EditorInterface.edit_node].","returnType":"void"},{"name":"clear","signature":"clear() -> void","description":"Clear the selection.","returnType":"void"},{"name":"get_selected_nodes","signature":"get_selected_nodes() -> Node[]","description":"Returns the list of selected nodes.","returnType":"Node[]"},{"name":"get_transformable_selected_nodes","signature":"get_transformable_selected_nodes() -> Node[]","description":"Returns the list of selected nodes, optimized for transform operations (i.e. moving them, rotating, etc.). This list can be used to avoid situations where a node is selected and is also a child/grandchild.","returnType":"Node[]"},{"name":"remove_node","signature":"remove_node(node: Node) -> void","description":"Removes a node from the selection.","returnType":"void"}],"signals":[{"name":"selection_changed","description":"Emitted when the selection changes."}]},"EditorSettings":{"name":"EditorSettings","description":"Object that holds the project-independent editor settings.","inherits":"Resource","properties":[{"name":"asset_library/use_threads","type":"bool","description":"If [code]true[/code], the Asset Library uses multiple threads for its HTTP requests. This prevents the Asset Library from blocking the main thread for every loaded asset."},{"name":"debugger/auto_switch_to_remote_scene_tree","type":"bool","description":"If [code]true[/code], automatically switches to the [b]Remote[/b] scene tree when running the project from the editor. If [code]false[/code], stays on the [b]Local[/b] scene tree when running the project from the editor.\n\t\t\t[b]Warning:[/b] Enabling this setting can cause stuttering when running a project with a large amount of nodes (typically a few thousands of nodes or more), even if the editor window isn't focused. This is due to the remote scene tree being updated every second regardless of whether the editor is focused."},{"name":"debugger/auto_switch_to_stack_trace","type":"bool","description":"If [code]true[/code], automatically switches to the [b]Stack Trace[/b] panel when the debugger hits a breakpoint or steps."},{"name":"debugger/profile_native_calls","type":"bool","description":"If [code]true[/code], enables collection of profiling data from non-GDScript Godot functions, such as engine class methods. Enabling this slows execution while profiling further."},{"name":"debugger/profiler_frame_history_size","type":"int","description":"The size of the profiler's frame history. The default value (3600) allows seeing up to 60 seconds of profiling if the project renders at a constant 60 FPS. Higher values allow viewing longer periods of profiling in the graphs, especially when the project is running at high framerates."},{"name":"debugger/profiler_frame_max_functions","type":"int","description":"The maximum number of script functions that can be displayed per frame in the profiler. If there are more script functions called in a given profiler frame, these functions will be discarded from the profiling results entirely.\n\t\t\t[b]Note:[/b] This setting is only read when the profiler is first started, so changing it during profiling will have no effect."},{"name":"debugger/profiler_target_fps","type":"int","description":"The target frame rate shown in the visual profiler graph, in frames per second."},{"name":"debugger/remote_inspect_refresh_interval","type":"float","description":"The refresh interval for the remote inspector's properties (in seconds). Lower values are more reactive, but may cause stuttering while the project is running from the editor and the [b]Remote[/b] scene tree is selected in the Scene tree dock."},{"name":"debugger/remote_scene_tree_refresh_interval","type":"float","description":"The refresh interval for the remote scene tree (in seconds). Lower values are more reactive, but may cause stuttering while the project is running from the editor and the [b]Remote[/b] scene tree is selected in the Scene tree dock."},{"name":"docks/filesystem/always_show_folders","type":"bool","description":"If [code]true[/code], displays folders in the FileSystem dock's bottom pane when split mode is enabled. If [code]false[/code], only files will be displayed in the bottom pane. Split mode can be toggled by pressing the icon next to the [code]res://[/code] folder path.\n\t\t\t[b]Note:[/b] This setting has no effect when split mode is disabled (which is the default)."},{"name":"docks/filesystem/other_file_extensions","type":"String","description":"A comma separated list of unsupported file extensions to show in the FileSystem dock, e.g. [code]\"ico,icns\"[/code]."},{"name":"docks/filesystem/textfile_extensions","type":"String","description":"A comma separated list of file extensions to consider as editable text files in the FileSystem dock (by double-clicking on the files), e.g. [code]\"txt,md,cfg,ini,log,json,yml,yaml,toml,xml\"[/code]."},{"name":"docks/filesystem/thumbnail_size","type":"int","description":"The thumbnail size to use in the FileSystem dock (in pixels). See also [member filesystem/file_dialog/thumbnail_size]."},{"name":"docks/property_editor/auto_refresh_interval","type":"float","description":"The refresh interval to use for the Inspector dock's properties. The effect of this setting is mainly noticeable when adjusting gizmos in the 2D/3D editor and looking at the inspector at the same time. Lower values make the inspector refresh more often, but take up more CPU time."},{"name":"docks/property_editor/subresource_hue_tint","type":"float","description":"The tint intensity to use for the subresources background in the Inspector dock. The tint is used to distinguish between different subresources in the inspector. Higher values result in a more noticeable background color difference."},{"name":"docks/scene_tree/ask_before_deleting_related_animation_tracks","type":"bool","description":"If [code]true[/code], when a node is deleted with animation tracks referencing it, a confirmation dialog appears before the tracks are deleted. The dialog will appear even when using the \"Delete (No Confirm)\" shortcut."},{"name":"docks/scene_tree/ask_before_revoking_unique_name","type":"bool","description":"If [code]true[/code], displays a confirmation dialog after left-clicking the \"percent\" icon next to a node name in the Scene tree dock. When clicked, this icon revokes the node's scene-unique name, which can impact the behavior of scripts that rely on this scene-unique name due to identifiers not being found anymore."},{"name":"docks/scene_tree/auto_expand_to_selected","type":"bool","description":"If [code]true[/code], the scene tree dock will automatically unfold nodes when a node that has folded parents is selected."},{"name":"docks/scene_tree/center_node_on_reparent","type":"bool","description":"If [code]true[/code], new node created when reparenting node(s) will be positioned at the average position of the selected node(s)."},{"name":"docks/scene_tree/hide_filtered_out_parents","type":"bool","description":"If [code]true[/code], the scene tree dock will only show nodes that match the filter, without showing parents that don't. This settings can also be changed in the Scene dock's top menu."},{"name":"docks/scene_tree/start_create_dialog_fully_expanded","type":"bool","description":"If [code]true[/code], the Create dialog (Create New Node/Create New Resource) will start with all its sections expanded. Otherwise, sections will be collapsed until the user starts searching (which will automatically expand sections as needed)."},{"name":"editors/2d/bone_color1","type":"Color","description":"The \"start\" stop of the color gradient to use for bones in the 2D skeleton editor."},{"name":"editors/2d/bone_color2","type":"Color","description":"The \"end\" stop of the color gradient to use for bones in the 2D skeleton editor."},{"name":"editors/2d/bone_ik_color","type":"Color","description":"The color to use for inverse kinematics-enabled bones in the 2D skeleton editor."},{"name":"editors/2d/bone_outline_color","type":"Color","description":"The outline color to use for non-selected bones in the 2D skeleton editor. See also [member editors/2d/bone_selected_color]."},{"name":"editors/2d/bone_outline_size","type":"float","description":"The outline size in the 2D skeleton editor (in pixels). See also [member editors/2d/bone_width].\n\t\t\t[b]Note:[/b] Changes to this value only apply after modifying a [Bone2D] node in any way, or closing and reopening the scene."},{"name":"editors/2d/bone_selected_color","type":"Color","description":"The color to use for selected bones in the 2D skeleton editor. See also [member editors/2d/bone_outline_color]."},{"name":"editors/2d/bone_width","type":"float","description":"The bone width in the 2D skeleton editor (in pixels). See also [member editors/2d/bone_outline_size].\n\t\t\t[b]Note:[/b] Changes to this value only apply after modifying a [Bone2D] node in any way, or closing and reopening the scene."},{"name":"editors/2d/grid_color","type":"Color","description":"The grid color to use in the 2D editor."},{"name":"editors/2d/guides_color","type":"Color","description":"The guides color to use in the 2D editor. Guides can be created by dragging the mouse cursor from the rulers."},{"name":"editors/2d/smart_snapping_line_color","type":"Color","description":"The color to use when drawing smart snapping lines in the 2D editor. The smart snapping lines will automatically display when moving 2D nodes if smart snapping is enabled in the Snapping Options menu at the top of the 2D editor viewport."},{"name":"editors/2d/use_integer_zoom_by_default","type":"bool","description":"If [code]true[/code], the 2D editor will snap to integer zoom values when not holding the [kbd]Alt[/kbd] key. If [code]false[/code], this behavior is swapped."},{"name":"editors/2d/viewport_border_color","type":"Color","description":"The color of the viewport border in the 2D editor. This border represents the viewport's size at the base resolution defined in the Project Settings. Objects placed outside this border will not be visible unless a [Camera2D] node is used, or unless the window is resized and the stretch mode is set to [code]disabled[/code]."},{"name":"editors/2d/zoom_speed_factor","type":"float","description":"The factor to use when zooming in or out in the 2D editor. For example, [code]1.1[/code] will zoom in by 10% with every step. If set to [code]2.0[/code], zooming will only cycle through powers of two."},{"name":"editors/3d/default_fov","type":"float","description":"The default camera vertical field of view to use in the 3D editor (in degrees). The camera field of view can be adjusted on a per-scene basis using the [b]View[/b] menu at the top of the 3D editor. If a scene had its camera field of view adjusted using the [b]View[/b] menu, this setting is ignored in the scene in question. This setting is also ignored while a [Camera3D] node is being previewed in the editor.\n\t\t\t[b]Note:[/b] The editor camera always uses the [b]Keep Height[/b] aspect mode."},{"name":"editors/3d/default_z_far","type":"float","description":"The default camera far clip distance to use in the 3D editor (in degrees). Higher values make it possible to view objects placed further away from the camera, at the cost of lower precision in the depth buffer (which can result in visible Z-fighting in the distance). The camera far clip distance can be adjusted on a per-scene basis using the [b]View[/b] menu at the top of the 3D editor. If a scene had its camera far clip distance adjusted using the [b]View[/b] menu, this setting is ignored in the scene in question. This setting is also ignored while a [Camera3D] node is being previewed in the editor."},{"name":"editors/3d/default_z_near","type":"float","description":"The default camera near clip distance to use in the 3D editor (in degrees). Lower values make it possible to view objects placed closer to the camera, at the cost of lower precision in the depth buffer (which can result in visible Z-fighting in the distance). The camera near clip distance can be adjusted on a per-scene basis using the [b]View[/b] menu at the top of the 3D editor. If a scene had its camera near clip distance adjusted using the [b]View[/b] menu, this setting is ignored in the scene in question. This setting is also ignored while a [Camera3D] node is being previewed in the editor."},{"name":"editors/3d/freelook/freelook_activation_modifier","type":"int","description":"The modifier key to use to enable freelook in the 3D editor (on top of pressing the right mouse button).\n\t\t\t[b]Note:[/b] Regardless of this setting, the freelook toggle keyboard shortcut ([kbd]Shift + F[/kbd] by default) is always available.\n\t\t\t[b]Note:[/b] On certain window managers on Linux, the [kbd]Alt[/kbd] key will be intercepted by the window manager when clicking a mouse button at the same time. This means Godot will not see the modifier key as being pressed."},{"name":"editors/3d/freelook/freelook_base_speed","type":"float","description":"The base 3D freelook speed in units per second. This can be adjusted by using the mouse wheel while in freelook mode, or by holding down the \"fast\" or \"slow\" modifier keys ([kbd]Shift[/kbd] and [kbd]Alt[/kbd] by default, respectively)."},{"name":"editors/3d/freelook/freelook_inertia","type":"float","description":"The inertia of the 3D freelook camera. Higher values make the camera start and stop slower, which looks smoother but adds latency."},{"name":"editors/3d/freelook/freelook_navigation_scheme","type":"int","description":"The navigation scheme to use when freelook is enabled in the 3D editor. Some of the navigation schemes below may be more convenient when designing specific levels in the 3D editor.\n\t\t\t- [b]Default:[/b] The \"Freelook Forward\", \"Freelook Backward\", \"Freelook Up\" and \"Freelook Down\" keys will move relative to the camera, taking its pitch angle into account for the movement.\n\t\t\t- [b]Partially Axis-Locked:[/b] The \"Freelook Forward\" and \"Freelook Backward\" keys will move relative to the camera, taking its pitch angle into account for the movement. The \"Freelook Up\" and \"Freelook Down\" keys will move in an \"absolute\" manner, [i]not[/i] taking the camera's pitch angle into account for the movement.\n\t\t\t- [b]Fully Axis-Locked:[/b] The \"Freelook Forward\", \"Freelook Backward\", \"Freelook Up\" and \"Freelook Down\" keys will move in an \"absolute\" manner, [i]not[/i] taking the camera's pitch angle into account for the movement.\n\t\t\tSee also [member editors/3d/navigation/navigation_scheme]."},{"name":"editors/3d/freelook/freelook_sensitivity","type":"float","description":"The mouse sensitivity to use while freelook mode is active in the 3D editor. See also [member editors/3d/navigation_feel/orbit_sensitivity]."},{"name":"editors/3d/freelook/freelook_speed_zoom_link","type":"bool","description":"If [code]true[/code], freelook speed is linked to the zoom value used in the camera orbit mode in the 3D editor."},{"name":"editors/3d/grid_division_level_bias","type":"float","description":"The grid division bias to use in the 3D editor. Negative values will cause small grid divisions to appear earlier, whereas positive values will cause small grid divisions to appear later."},{"name":"editors/3d/grid_division_level_max","type":"int","description":"The largest grid division to use in the 3D editor. Together with [member editors/3d/primary_grid_steps], this determines how large the grid divisions can be. The grid divisions will not be able to get larger than [code]primary_grid_steps ^ grid_division_level_max[/code] units. By default, when [member editors/3d/primary_grid_steps] is [code]8[/code], this means grid divisions cannot get larger than [code]64[/code] units each (so primary grid lines are [code]512[/code] units apart), no matter how far away the camera is from the grid."},{"name":"editors/3d/grid_division_level_min","type":"int","description":"The smallest grid division to use in the 3D editor. Together with [member editors/3d/primary_grid_steps], this determines how small the grid divisions can be. The grid divisions will not be able to get smaller than [code]primary_grid_steps ^ grid_division_level_min[/code] units. By default, this means grid divisions cannot get smaller than 1 unit each, no matter how close the camera is from the grid."},{"name":"editors/3d/grid_size","type":"int","description":"The grid size in units. Higher values prevent the grid from appearing \"cut off\" at certain angles, but make the grid more demanding to render. Depending on the camera's position, the grid may not be fully visible since a shader is used to fade it progressively."},{"name":"editors/3d/grid_xy_plane","type":"bool","description":"If [code]true[/code], renders the grid on the XY plane in perspective view. This can be useful for 3D side-scrolling games."},{"name":"editors/3d/grid_xz_plane","type":"bool","description":"If [code]true[/code], renders the grid on the XZ plane in perspective view."},{"name":"editors/3d/grid_yz_plane","type":"bool","description":"If [code]true[/code], renders the grid on the YZ plane in perspective view. This can be useful for 3D side-scrolling games."},{"name":"editors/3d/manipulator_gizmo_opacity","type":"float","description":"Opacity of the default gizmo for moving, rotating, and scaling 3D nodes."},{"name":"editors/3d/manipulator_gizmo_size","type":"int","description":"Size of the default gizmo for moving, rotating, and scaling 3D nodes."},{"name":"editors/3d/navigation/emulate_3_button_mouse","type":"bool","description":"If [code]true[/code], enables 3-button mouse emulation mode. This is useful on laptops when using a trackpad.\n\t\t\tWhen 3-button mouse emulation mode is enabled, the pan, zoom and orbit modifiers can always be used in the 3D editor viewport, even when not holding down any mouse button."},{"name":"editors/3d/navigation/emulate_numpad","type":"bool","description":"If [code]true[/code], allows using the top row [kbd]0[/kbd]-[kbd]9[/kbd] keys to function as their equivalent numpad keys for 3D editor navigation. This should be enabled on keyboards that have no numeric keypad available."},{"name":"editors/3d/navigation/invert_x_axis","type":"bool","description":"If [code]true[/code], invert the horizontal mouse axis when panning or orbiting in the 3D editor. This setting does [i]not[/i] apply to freelook mode."},{"name":"editors/3d/navigation/invert_y_axis","type":"bool","description":"If [code]true[/code], invert the vertical mouse axis when panning, orbiting, or using freelook mode in the 3D editor."},{"name":"editors/3d/navigation/navigation_scheme","type":"int","description":"The navigation scheme preset to use in the 3D editor. Changing this setting will affect the mouse button and modifier keys used to navigate the 3D editor viewport.\n\t\t\tAll schemes can use [kbd]Mouse wheel[/kbd] to zoom.\n\t\t\t- [b]Godot:[/b] [kbd]Middle mouse button[/kbd] to orbit. [kbd]Shift + Middle mouse button[/kbd] to pan. [kbd]Ctrl + Middle mouse button[/kbd] to zoom.\n\t\t\t- [b]Maya:[/b] [kbd]Alt + Left mouse button[/kbd] to orbit. [kbd]Middle mouse button[/kbd] to pan, [kbd]Shift + Middle mouse button[/kbd] to pan 10 times faster. [kbd]Alt + Right mouse button[/kbd] to zoom.\n\t\t\t- [b]Modo:[/b] [kbd]Alt + Left mouse button[/kbd] to orbit. [kbd]Alt + Shift + Left mouse button[/kbd] to pan. [kbd]Ctrl + Alt + Left mouse button[/kbd] to zoom.\n\t\t\t- [b]Tablet/Trackpad:[/b] [kbd]Alt[/kbd] to orbit. [kbd]Shift[/kbd] to pan. [kbd]Ctrl[/kbd] to zoom. Enables 3-button mouse emulation mode.\n\t\t\tSee also [member editors/3d/navigation/orbit_mouse_button], [member editors/3d/navigation/pan_mouse_button], [member editors/3d/navigation/zoom_mouse_button], [member editors/3d/freelook/freelook_navigation_scheme], and [member editors/3d/navigation/emulate_3_button_mouse].\n\t\t\t[b]Note:[/b] On certain window managers on Linux, the [kbd]Alt[/kbd] key will be intercepted by the window manager when clicking a mouse button at the same time. This means Godot will not see the modifier key as being pressed."},{"name":"editors/3d/navigation/orbit_mouse_button","type":"int","description":"The mouse button that needs to be held down to orbit in the 3D editor viewport."},{"name":"editors/3d/navigation/pan_mouse_button","type":"int","description":"The mouse button that needs to be held down to pan in the 3D editor viewport."},{"name":"editors/3d/navigation/show_viewport_navigation_gizmo","type":"bool","description":"If [code]true[/code], shows gizmos for moving and rotating the camera in the bottom corners of the 3D editor's viewport. Useful for devices that use touch screen."},{"name":"editors/3d/navigation/show_viewport_rotation_gizmo","type":"bool","description":"If [code]true[/code], shows a small orientation gizmo in the top-right corner of the 3D editor's viewports."},{"name":"editors/3d/navigation/warped_mouse_panning","type":"bool","description":"If [code]true[/code], warps the mouse around the 3D viewport while panning in the 3D editor. This makes it possible to pan over a large area without having to exit panning and adjust the mouse cursor."},{"name":"editors/3d/navigation/zoom_mouse_button","type":"int","description":"The mouse button that needs to be held down to zoom in the 3D editor viewport."},{"name":"editors/3d/navigation/zoom_style","type":"int","description":"The mouse cursor movement direction to use when zooming by moving the mouse. This does not affect zooming with the mouse wheel."},{"name":"editors/3d/navigation_feel/orbit_inertia","type":"float","description":"The inertia to use when orbiting in the 3D editor. Higher values make the camera start and stop slower, which looks smoother but adds latency."},{"name":"editors/3d/navigation_feel/orbit_sensitivity","type":"float","description":"The mouse sensitivity to use when orbiting in the 3D editor. See also [member editors/3d/freelook/freelook_sensitivity]."},{"name":"editors/3d/navigation_feel/translation_inertia","type":"float","description":"The inertia to use when panning in the 3D editor. Higher values make the camera start and stop slower, which looks smoother but adds latency."},{"name":"editors/3d/navigation_feel/translation_sensitivity","type":"float","description":"The mouse sensitivity to use when panning in the 3D editor."},{"name":"editors/3d/navigation_feel/zoom_inertia","type":"float","description":"The inertia to use when zooming in the 3D editor. Higher values make the camera start and stop slower, which looks smoother but adds latency."},{"name":"editors/3d/primary_grid_color","type":"Color","description":"The color to use for the primary 3D grid. The color's alpha channel affects the grid's opacity."},{"name":"editors/3d/primary_grid_steps","type":"int","description":"If set above 0, where a primary grid line should be drawn. By default, primary lines are configured to be more visible than secondary lines. This helps with measurements in the 3D editor. See also [member editors/3d/primary_grid_color] and [member editors/3d/secondary_grid_color]."},{"name":"editors/3d/secondary_grid_color","type":"Color","description":"The color to use for the secondary 3D grid. This is generally a less visible color than [member editors/3d/primary_grid_color]. The color's alpha channel affects the grid's opacity."},{"name":"editors/3d/selection_box_color","type":"Color","description":"The color to use for the selection box that surrounds selected nodes in the 3D editor viewport. The color's alpha channel influences the selection box's opacity."},{"name":"editors/3d_gizmos/gizmo_colors/aabb","type":"Color","description":"The color to use for the AABB gizmo that displays the [GeometryInstance3D]'s custom [AABB]."},{"name":"editors/3d_gizmos/gizmo_colors/camera","type":"Color","description":"The 3D editor gizmo color for [Camera3D]s."},{"name":"editors/3d_gizmos/gizmo_colors/csg","type":"Color","description":"The 3D editor gizmo color for CSG nodes (such as [CSGShape3D] or [CSGBox3D])."},{"name":"editors/3d_gizmos/gizmo_colors/decal","type":"Color","description":"The 3D editor gizmo color for [Decal] nodes."},{"name":"editors/3d_gizmos/gizmo_colors/fog_volume","type":"Color","description":"The 3D editor gizmo color for [FogVolume] nodes."},{"name":"editors/3d_gizmos/gizmo_colors/gridmap_grid","type":"Color","description":"The 3D editor gizmo color for the [GridMap] grid."},{"name":"editors/3d_gizmos/gizmo_colors/instantiated","type":"Color","description":"The color override to use for 3D editor gizmos if the [Node3D] in question is part of an instantiated scene file (from the perspective of the current scene)."},{"name":"editors/3d_gizmos/gizmo_colors/joint","type":"Color","description":"The 3D editor gizmo color for [Joint3D]s and [PhysicalBone3D]s."},{"name":"editors/3d_gizmos/gizmo_colors/joint_body_a","type":"Color","description":"Color for representing [member Joint3D.node_a] for some [Joint3D] types."},{"name":"editors/3d_gizmos/gizmo_colors/joint_body_b","type":"Color","description":"Color for representing [member Joint3D.node_b] for some [Joint3D] types."},{"name":"editors/3d_gizmos/gizmo_colors/lightmap_lines","type":"Color","description":"Color of lines displayed in baked [LightmapGI] node's grid."},{"name":"editors/3d_gizmos/gizmo_colors/lightprobe_lines","type":"Color","description":"The 3D editor gizmo color used for [LightmapProbe] nodes."},{"name":"editors/3d_gizmos/gizmo_colors/occluder","type":"Color","description":"The 3D editor gizmo color used for [OccluderInstance3D] nodes."},{"name":"editors/3d_gizmos/gizmo_colors/particle_attractor","type":"Color","description":"The 3D editor gizmo color used for [GPUParticlesAttractor3D] nodes."},{"name":"editors/3d_gizmos/gizmo_colors/particle_collision","type":"Color","description":"The 3D editor gizmo color used for [GPUParticlesCollision3D] nodes."},{"name":"editors/3d_gizmos/gizmo_colors/particles","type":"Color","description":"The 3D editor gizmo color used for [CPUParticles3D] and [GPUParticles3D] nodes."},{"name":"editors/3d_gizmos/gizmo_colors/path_tilt","type":"Color","description":"The 3D editor gizmo color used for [Path3D] tilt circles, which indicate the direction the [Curve3D] is tilted towards."},{"name":"editors/3d_gizmos/gizmo_colors/reflection_probe","type":"Color","description":"The 3D editor gizmo color used for [ReflectionProbe] nodes."},{"name":"editors/3d_gizmos/gizmo_colors/selected_bone","type":"Color","description":"The 3D editor gizmo color used for the currently selected [Skeleton3D] bone."},{"name":"editors/3d_gizmos/gizmo_colors/skeleton","type":"Color","description":"The 3D editor gizmo color used for [Skeleton3D] nodes."},{"name":"editors/3d_gizmos/gizmo_colors/spring_bone_collision","type":"Color","description":"The 3D editor gizmo color used for [SpringBoneCollision3D] nodes."},{"name":"editors/3d_gizmos/gizmo_colors/spring_bone_inside_collision","type":"Color","description":"The 3D editor gizmo color used for [SpringBoneCollision3D] nodes with inside mode."},{"name":"editors/3d_gizmos/gizmo_colors/spring_bone_joint","type":"Color","description":"The 3D editor gizmo color used for [SpringBoneSimulator3D] nodes."},{"name":"editors/3d_gizmos/gizmo_colors/stream_player_3d","type":"Color","description":"The 3D editor gizmo color used for [AudioStreamPlayer3D]'s emission angle."},{"name":"editors/3d_gizmos/gizmo_colors/visibility_notifier","type":"Color","description":"The 3D editor gizmo color used for [VisibleOnScreenNotifier3D] and [VisibleOnScreenEnabler3D] nodes."},{"name":"editors/3d_gizmos/gizmo_colors/voxel_gi","type":"Color","description":"The 3D editor gizmo color used for [VoxelGI] nodes."},{"name":"editors/3d_gizmos/gizmo_settings/bone_axis_length","type":"float","description":"The length of [Skeleton3D] bone gizmos in the 3D editor."},{"name":"editors/3d_gizmos/gizmo_settings/bone_shape","type":"int","description":"The shape of [Skeleton3D] bone gizmos in the 3D editor. [b]Wire[/b] is a thin line, while [b]Octahedron[/b] is a set of lines that represent a thicker hollow line pointing in a specific direction (similar to most 3D animation software)."},{"name":"editors/3d_gizmos/gizmo_settings/path3d_tilt_disk_size","type":"float","description":"Size of the disk gizmo displayed when editing [Path3D]'s tilt handles."},{"name":"editors/animation/autorename_animation_tracks","type":"bool","description":"If [code]true[/code], automatically updates animation tracks' target paths when renaming or reparenting nodes in the Scene tree dock."},{"name":"editors/animation/confirm_insert_track","type":"bool","description":"If [code]true[/code], display a confirmation dialog when adding a new track to an animation by pressing the \"key\" icon next to a property. Holding Shift will bypass the dialog.\n\t\t\tIf [code]false[/code], the behavior is reversed, i.e. the dialog only appears when Shift is held."},{"name":"editors/animation/default_create_bezier_tracks","type":"bool","description":"If [code]true[/code], create a Bezier track instead of a standard track when pressing the \"key\" icon next to a property. Bezier tracks provide more control over animation curves, but are more difficult to adjust quickly."},{"name":"editors/animation/default_create_reset_tracks","type":"bool","description":"If [code]true[/code], create a [code]RESET[/code] track when creating a new animation track. This track can be used to restore the animation to a \"default\" state."},{"name":"editors/animation/onion_layers_future_color","type":"Color","description":"The modulate color to use for \"future\" frames displayed in the animation editor's onion skinning feature."},{"name":"editors/animation/onion_layers_past_color","type":"Color","description":"The modulate color to use for \"past\" frames displayed in the animation editor's onion skinning feature."},{"name":"editors/bone_mapper/handle_colors/error","type":"Color","description":""},{"name":"editors/bone_mapper/handle_colors/missing","type":"Color","description":""},{"name":"editors/bone_mapper/handle_colors/set","type":"Color","description":""},{"name":"editors/bone_mapper/handle_colors/unset","type":"Color","description":""},{"name":"editors/grid_map/palette_min_width","type":"int","description":"Minimum width of GridMap's mesh palette side panel."},{"name":"editors/grid_map/pick_distance","type":"float","description":"The maximum distance at which tiles can be placed on a GridMap, relative to the camera position (in 3D units)."},{"name":"editors/grid_map/preview_size","type":"int","description":"Texture size of mesh previews generated for GridMap's MeshLibrary."},{"name":"editors/panning/2d_editor_pan_speed","type":"int","description":"The panning speed when using the mouse wheel or touchscreen events in the 2D editor. This setting does not apply to panning by holding down the middle or right mouse buttons."},{"name":"editors/panning/2d_editor_panning_scheme","type":"int","description":"Controls whether the mouse wheel scroll zooms or pans in the 2D editor. See also [member editors/panning/sub_editors_panning_scheme] and [member editors/panning/animation_editors_panning_scheme]."},{"name":"editors/panning/animation_editors_panning_scheme","type":"int","description":"Controls whether the mouse wheel scroll zooms or pans in the animation track and Bezier editors. See also [member editors/panning/2d_editor_panning_scheme] and [member editors/panning/sub_editors_panning_scheme] (which controls the animation blend tree editor's pan behavior)."},{"name":"editors/panning/simple_panning","type":"bool","description":"If [code]true[/code], allows panning by holding down [kbd]Space[/kbd] in the 2D editor viewport (in addition to panning with the middle or right mouse buttons). If [code]false[/code], the left mouse button must be held down while holding down [kbd]Space[/kbd] to pan in the 2D editor viewport."},{"name":"editors/panning/sub_editors_panning_scheme","type":"int","description":"Controls whether the mouse wheel scroll zooms or pans in subeditors. The list of affected subeditors is: animation blend tree editor, [Polygon2D] editor, tileset editor, texture region editor and visual shader editor. See also [member editors/panning/2d_editor_panning_scheme] and [member editors/panning/animation_editors_panning_scheme]."},{"name":"editors/panning/warped_mouse_panning","type":"bool","description":"If [code]true[/code], warps the mouse around the 2D viewport while panning in the 2D editor. This makes it possible to pan over a large area without having to exit panning and adjust the mouse cursor."},{"name":"editors/polygon_editor/auto_bake_delay","type":"float","description":"The delay in seconds until more complex and performance costly polygon editors commit their outlines, e.g. the 2D navigation polygon editor rebakes the navigation mesh polygons. A negative value stops the auto bake."},{"name":"editors/polygon_editor/point_grab_radius","type":"int","description":"The radius in which points can be selected in the [Polygon2D] and [CollisionPolygon2D] editors (in pixels). Higher values make it easier to select points quickly, but can make it more difficult to select the expected point when several points are located close to each other."},{"name":"editors/polygon_editor/show_previous_outline","type":"bool","description":"If [code]true[/code], displays the polygon's previous shape in the 2D polygon editors with an opaque gray outline. This outline is displayed while dragging a point until the left mouse button is released."},{"name":"editors/shader_editor/behavior/files/restore_shaders_on_load","type":"bool","description":"If [code]true[/code], reopens shader files that were open in the shader editor when the project was last closed."},{"name":"editors/tiles_editor/display_grid","type":"bool","description":"If [code]true[/code], displays a grid while the TileMap editor is active. See also [member editors/tiles_editor/grid_color]."},{"name":"editors/tiles_editor/grid_color","type":"Color","description":"The color to use for the TileMap editor's grid.\n\t\t\t[b]Note:[/b] Only effective if [member editors/tiles_editor/display_grid] is [code]true[/code]."},{"name":"editors/tiles_editor/highlight_selected_layer","type":"bool","description":"Highlight the currently selected TileMapLayer by dimming the other ones in the scene."},{"name":"editors/visual_editors/category_colors/color_color","type":"Color","description":"The color of a graph node's header when it belongs to the \"Color\" category."},{"name":"editors/visual_editors/category_colors/conditional_color","type":"Color","description":"The color of a graph node's header when it belongs to the \"Conditional\" category."},{"name":"editors/visual_editors/category_colors/input_color","type":"Color","description":"The color of a graph node's header when it belongs to the \"Input\" category."},{"name":"editors/visual_editors/category_colors/output_color","type":"Color","description":"The color of a graph node's header when it belongs to the \"Output\" category."},{"name":"editors/visual_editors/category_colors/particle_color","type":"Color","description":"The color of a graph node's header when it belongs to the \"Particle\" category."},{"name":"editors/visual_editors/category_colors/scalar_color","type":"Color","description":"The color of a graph node's header when it belongs to the \"Scalar\" category."},{"name":"editors/visual_editors/category_colors/special_color","type":"Color","description":"The color of a graph node's header when it belongs to the \"Special\" category."},{"name":"editors/visual_editors/category_colors/textures_color","type":"Color","description":"The color of a graph node's header when it belongs to the \"Textures\" category."},{"name":"editors/visual_editors/category_colors/transform_color","type":"Color","description":"The color of a graph node's header when it belongs to the \"Transform\" category."},{"name":"editors/visual_editors/category_colors/utility_color","type":"Color","description":"The color of a graph node's header when it belongs to the \"Utility\" category."},{"name":"editors/visual_editors/category_colors/vector_color","type":"Color","description":"The color of a graph node's header when it belongs to the \"Vector\" category."},{"name":"editors/visual_editors/color_theme","type":"String","description":"The color theme to use in the visual shader editor."},{"name":"editors/visual_editors/connection_colors/boolean_color","type":"Color","description":"The color of a port/connection of boolean type."},{"name":"editors/visual_editors/connection_colors/sampler_color","type":"Color","description":"The color of a port/connection of sampler type."},{"name":"editors/visual_editors/connection_colors/scalar_color","type":"Color","description":"The color of a port/connection of scalar type (float, int, unsigned int)."},{"name":"editors/visual_editors/connection_colors/transform_color","type":"Color","description":"The color of a port/connection of transform type."},{"name":"editors/visual_editors/connection_colors/vector2_color","type":"Color","description":"The color of a port/connection of Vector2 type."},{"name":"editors/visual_editors/connection_colors/vector3_color","type":"Color","description":"The color of a port/connection of Vector3 type."},{"name":"editors/visual_editors/connection_colors/vector4_color","type":"Color","description":"The color of a port/connection of Vector4 type."},{"name":"editors/visual_editors/grid_pattern","type":"int","description":"The pattern used for the background grid."},{"name":"editors/visual_editors/lines_curvature","type":"float","description":"The curvature to use for connection lines in the visual shader editor. Higher values will make connection lines appear more curved, with values above [code]0.5[/code] resulting in more \"angular\" turns in the middle of connection lines."},{"name":"editors/visual_editors/minimap_opacity","type":"float","description":"The opacity of the minimap displayed in the bottom-right corner of the visual shader editor."},{"name":"editors/visual_editors/visual_shader/port_preview_size","type":"int","description":"The size to use for port previews in the visual shader uniforms (toggled by clicking the \"eye\" icon next to an output). The value is defined in pixels at 100% zoom, and will scale with zoom automatically."},{"name":"export/ssh/scp","type":"String","description":"Path to the SCP (secure copy) executable (used for remote deploy to desktop platforms). If left empty, the editor will attempt to run [code]scp[/code] from [code]PATH[/code].\n\t\t\t[b]Note:[/b] SCP is not the same as SFTP. Specifying the SFTP executable here will not work."},{"name":"export/ssh/ssh","type":"String","description":"Path to the SSH executable (used for remote deploy to desktop platforms). If left empty, the editor will attempt to run [code]ssh[/code] from [code]PATH[/code]."},{"name":"filesystem/directories/autoscan_project_path","type":"String","description":"The folder where projects should be scanned for (recursively), in a way similar to the project manager's [b]Scan[/b] button. This can be set to the same value as [member filesystem/directories/default_project_path] for convenience.\n\t\t\t[b]Note:[/b] Setting this path to a folder with very large amounts of files/folders can slow down the project manager startup significantly. To keep the project manager quick to start up, it is recommended to set this value to a folder as \"specific\" as possible."},{"name":"filesystem/directories/default_project_path","type":"String","description":"The folder where new projects should be created by default when clicking the project manager's [b]New Project[/b] button. This can be set to the same value as [member filesystem/directories/autoscan_project_path] for convenience."},{"name":"filesystem/external_programs/3d_model_editor","type":"String","description":"The program that opens 3D model scene files when clicking \"Open in External Program\" option in Filesystem Dock. If not specified, the file will be opened in the system's default program."},{"name":"filesystem/external_programs/audio_editor","type":"String","description":"The program that opens audio files when clicking \"Open in External Program\" option in Filesystem Dock. If not specified, the file will be opened in the system's default program."},{"name":"filesystem/external_programs/raster_image_editor","type":"String","description":"The program that opens raster image files when clicking \"Open in External Program\" option in Filesystem Dock. If not specified, the file will be opened in the system's default program."},{"name":"filesystem/external_programs/terminal_emulator","type":"String","description":"The terminal emulator program to use when using [b]Open in Terminal[/b] context menu action in the FileSystem dock. You can enter an absolute path to a program binary, or a path to a program that is present in the [code]PATH[/code] environment variable.\n\t\t\tIf left empty, Godot will use the default terminal emulator for the system:\n\t\t\t- [b]Windows:[/b] PowerShell\n\t\t\t- [b]macOS:[/b] Terminal.app\n\t\t\t- [b]Linux:[/b] The first terminal found on the system in this order: gnome-terminal, konsole, xfce4-terminal, lxterminal, kitty, alacritty, urxvt, xterm.\n\t\t\tTo use Command Prompt (cmd) instead of PowerShell on Windows, enter [code]cmd[/code] in this field and the correct flags will automatically be used.\n\t\t\tOn macOS, make sure to point to the actual program binary located within the [code]Programs/MacOS[/code] folder of the .app bundle, rather than the .app bundle directory.\n\t\t\tIf specifying a custom terminal emulator, you may need to override [member filesystem/external_programs/terminal_emulator_flags] so it opens in the correct folder."},{"name":"filesystem/external_programs/terminal_emulator_flags","type":"String","description":"The command-line arguments to pass to the terminal emulator that is run when using [b]Open in Terminal[/b] context menu action in the FileSystem dock. See also [member filesystem/external_programs/terminal_emulator].\n\t\t\tIf left empty, the default flags are [code]{directory}[/code], which is replaced by the absolute path to the directory that is being opened in the terminal.\n\t\t\t[b]Note:[/b] If the terminal emulator is set to PowerShell, cmd, or Konsole, Godot will automatically prepend arguments to this list, as these terminals require nonstandard arguments to open in the correct folder."},{"name":"filesystem/external_programs/vector_image_editor","type":"String","description":"The program that opens vector image files when clicking \"Open in External Program\" option in Filesystem Dock. If not specified, the file will be opened in the system's default program."},{"name":"filesystem/file_dialog/display_mode","type":"int","description":"The display mode to use in the editor's file dialogs.\n\t\t\t- [b]Thumbnails[/b] takes more space, but displays dynamic resource thumbnails, making resources easier to preview without having to open them.\n\t\t\t- [b]List[/b] is more compact but doesn't display dynamic resource thumbnails. Instead, it displays static icons based on the file extension."},{"name":"filesystem/file_dialog/show_hidden_files","type":"bool","description":"If [code]true[/code], display hidden files in the editor's file dialogs. Files that have names starting with [code].[/code] are considered hidden (e.g. [code].hidden_file[/code])."},{"name":"filesystem/file_dialog/thumbnail_size","type":"int","description":"The thumbnail size to use in the editor's file dialogs (in pixels). See also [member docks/filesystem/thumbnail_size]."},{"name":"filesystem/file_server/password","type":"String","description":"Password used for file server when exporting project with remote file system."},{"name":"filesystem/file_server/port","type":"int","description":"Port used for file server when exporting project with remote file system."},{"name":"filesystem/import/blender/blender_path","type":"String","description":"The path to the Blender executable used for converting the Blender 3D scene files [code].blend[/code] to glTF 2.0 format during import. Blender 3.0 or later is required.\n\t\t\tTo enable this feature for your specific project, use [member ProjectSettings.filesystem/import/blender/enabled].\n\t\t\tIf this setting is empty, Blender's default paths will be detected and used automatically if present in this order:\n\t\t\t[b]Windows:[/b]\n\t\t\t[codeblock]\n\t\t\t- C:\\Program Files\\Blender Foundation\\blender.exe\n\t\t\t- C:\\Program Files (x86)\\Blender Foundation\\blender.exe\n\t\t\t[/codeblock]\n\t\t\t[b]macOS:[/b]\n\t\t\t[codeblock]\n\t\t\t- /opt/homebrew/bin/blender\n\t\t\t- /opt/local/bin/blender\n\t\t\t- /usr/local/bin/blender\n\t\t\t- /usr/local/opt/blender\n\t\t\t- /Applications/Blender.app/Contents/MacOS/Blender\n\t\t\t[/codeblock]\n\t\t\t[b]Linux/*BSD:[/b]\n\t\t\t[codeblock]\n\t\t\t- /usr/bin/blender\n\t\t\t- /usr/local/bin/blender\n\t\t\t- /opt/blender/bin/blender\n\t\t\t[/codeblock]"},{"name":"filesystem/import/blender/rpc_port","type":"int","description":"The port number used for Remote Procedure Call (RPC) communication with Godot's created process of the blender executable.\n\t\t\tSetting this to 0 effectively disables communication with Godot and the blender process, making performance slower."},{"name":"filesystem/import/blender/rpc_server_uptime","type":"float","description":"The maximum idle uptime (in seconds) of the Blender process.\n\t\t\tThis prevents Godot from having to create a new process for each import within the given seconds."},{"name":"filesystem/import/fbx/fbx2gltf_path","type":"String","description":"The path to the FBX2glTF executable used for converting Autodesk FBX 3D scene files [code].fbx[/code] to glTF 2.0 format during import.\n\t\t\tTo enable this feature for your specific project, use [member ProjectSettings.filesystem/import/fbx2gltf/enabled]."},{"name":"filesystem/on_save/compress_binary_resources","type":"bool","description":"If [code]true[/code], uses lossless compression for binary resources."},{"name":"filesystem/on_save/safe_save_on_backup_then_rename","type":"bool","description":"If [code]true[/code], when saving a file, the editor will rename the old file to a different name, save a new file, then only remove the old file once the new file has been saved. This makes loss of data less likely to happen if the editor or operating system exits unexpectedly while saving (e.g. due to a crash or power outage).\n\t\t\t[b]Note:[/b] On Windows, this feature can interact negatively with certain antivirus programs. In this case, you may have to set this to [code]false[/code] to prevent file locking issues."},{"name":"filesystem/quick_open_dialog/default_display_mode","type":"int","description":"If set to [code]Adaptive[/code], the dialog opens in list view or grid view depending on the requested type. If set to [code]Last Used[/code], the display mode will always open the way you last used it."},{"name":"filesystem/quick_open_dialog/enable_fuzzy_matching","type":"bool","description":"If [code]true[/code], fuzzy matching of search tokens is allowed."},{"name":"filesystem/quick_open_dialog/include_addons","type":"bool","description":"If [code]true[/code], results will include files located in the [code]addons[/code] folder."},{"name":"filesystem/quick_open_dialog/max_fuzzy_misses","type":"int","description":"The number of allowed missed query characters in a match, if fuzzy matching is enabled. For example, with the default value of 2, [code]foobar[/code] would match [code]foobur[/code] and [code]foob[/code] but not [code]foo[/code]."},{"name":"filesystem/quick_open_dialog/max_results","type":"int","description":"Maximum number of matches to show in dialog."},{"name":"filesystem/quick_open_dialog/show_search_highlight","type":"bool","description":"If [code]true[/code], results will be highlighted with their search matches."},{"name":"filesystem/tools/oidn/oidn_denoise_path","type":"String","description":"The path to the directory containing the Open Image Denoise (OIDN) executable, used optionally for denoising lightmaps. It can be downloaded from [url=https://www.openimagedenoise.org/downloads.html]openimagedenoise.org[/url].\n\t\t\tTo enable this feature for your specific project, use [member ProjectSettings.rendering/lightmapping/denoising/denoiser]."},{"name":"input/buffering/agile_event_flushing","type":"bool","description":"If [code]true[/code], input events will be flushed just before every idle and physics frame.\n\t\t\tIf [code]false[/code], these events will be flushed only once per process frame, between iterations of the engine.\n\t\t\tEnabling this setting can greatly improve input responsiveness, especially in devices that struggle to run at the project's intended frame rate."},{"name":"input/buffering/use_accumulated_input","type":"bool","description":"If [code]true[/code], similar input events sent by the operating system are accumulated. When input accumulation is enabled, all input events generated during a frame will be merged and emitted when the frame is done rendering. Therefore, this limits the number of input method calls per second to the rendering FPS.\n\t\t\tInput accumulation can be disabled to get slightly more precise/reactive input at the cost of increased CPU usage.\n\t\t\t[b]Note:[/b] Input accumulation is [i]enabled[/i] by default."},{"name":"interface/editor/accept_dialog_cancel_ok_buttons","type":"int","description":"How to position the Cancel and OK buttons in the editor's [AcceptDialog]s. Different platforms have different standard behaviors for this, which can be overridden using this setting. This is useful if you use Godot both on Windows and macOS/Linux and your Godot muscle memory is stronger than your OS specific one.\n\t\t\t- [b]Auto[/b] follows the platform convention: Cancel first on macOS and Linux, OK first on Windows.\n\t\t\t- [b]Cancel First[/b] forces the ordering Cancel/OK.\n\t\t\t- [b]OK First[/b] forces the ordering OK/Cancel."},{"name":"interface/editor/automatically_open_screenshots","type":"bool","description":"If [code]true[/code], automatically opens screenshots with the default program associated to [code].png[/code] files after a screenshot is taken using the [b]Editor &gt; Take Screenshot[/b] action."},{"name":"interface/editor/code_font","type":"String","description":"The font to use for the script editor. Must be a resource of a [Font] type such as a [code].ttf[/code] or [code].otf[/code] font file."},{"name":"interface/editor/code_font_contextual_ligatures","type":"int","description":"The font ligatures to enable for the currently configured code font. Not all fonts include support for ligatures.\n\t\t\t[b]Note:[/b] The default editor code font ([url=https://www.jetbrains.com/lp/mono/]JetBrains Mono[/url]) has contextual ligatures in its font file."},{"name":"interface/editor/code_font_custom_opentype_features","type":"String","description":"List of custom OpenType features to use, if supported by the currently configured code font. Not all fonts include support for custom OpenType features. The string should follow the OpenType specification.\n\t\t\t[b]Note:[/b] The default editor code font ([url=https://www.jetbrains.com/lp/mono/]JetBrains Mono[/url]) has custom OpenType features in its font file, but there is no documented list yet."},{"name":"interface/editor/code_font_custom_variations","type":"String","description":"List of alternative characters to use, if supported by the currently configured code font. Not all fonts include support for custom variations. The string should follow the OpenType specification.\n\t\t\t[b]Note:[/b] The default editor code font ([url=https://www.jetbrains.com/lp/mono/]JetBrains Mono[/url]) has alternate characters in its font file, but there is no documented list yet."},{"name":"interface/editor/code_font_size","type":"int","description":"The size of the font in the script editor. This setting does not impact the font size of the Output panel (see [member run/output/font_size])."},{"name":"interface/editor/custom_display_scale","type":"float","description":"The custom editor scale factor to use. This can be used for displays with very high DPI where a scale factor of 200% is not sufficient.\n\t\t\t[b]Note:[/b] Only effective if [member interface/editor/display_scale] is set to [b]Custom[/b]."},{"name":"interface/editor/display_scale","type":"int","description":"The display scale factor to use for the editor interface. Higher values are more suited to hiDPI/Retina displays.\n\t\t\tIf set to [b]Auto[/b], the editor scale is automatically determined based on the screen resolution and reported display DPI. This heuristic is not always ideal, which means you can get better results by setting the editor scale manually.\n\t\t\tIf set to [b]Custom[/b], the scaling value in [member interface/editor/custom_display_scale] will be used."},{"name":"interface/editor/dock_tab_style","type":"int","description":"Tab style of editor docks."},{"name":"interface/editor/editor_language","type":"String","description":"The language to use for the editor interface.\n\t\t\tTranslations are provided by the community. If you spot a mistake, [url=$DOCS_URL/contributing/documentation/editor_and_docs_localization.html]contribute to editor translations on Weblate![/url]"},{"name":"interface/editor/editor_screen","type":"int","description":"The preferred monitor to display the editor. If [b]Auto[/b], the editor will remember the last screen it was displayed on across restarts."},{"name":"interface/editor/expand_to_title","type":"bool","description":"Expanding main editor window content to the title, if supported by [DisplayServer]. See [constant DisplayServer.WINDOW_FLAG_EXTEND_TO_TITLE].\n\t\t\tSpecific to the macOS platform."},{"name":"interface/editor/font_allow_msdf","type":"bool","description":"If set to [code]true[/code], MSDF font rendering will be used for the visual shader graph editor. You may need to set this to [code]false[/code] when using a custom main font, as some fonts will look broken due to the use of self-intersecting outlines in their font data. Downloading the font from the font maker's official website as opposed to a service like Google Fonts can help resolve this issue."},{"name":"interface/editor/font_antialiasing","type":"int","description":"FreeType's font anti-aliasing mode used to render the editor fonts. Most fonts are not designed to look good with anti-aliasing disabled, so it's recommended to leave this enabled unless you're using a pixel art font."},{"name":"interface/editor/font_disable_embedded_bitmaps","type":"bool","description":"If set to [code]true[/code], embedded font bitmap loading is disabled (bitmap-only and color fonts ignore this property)."},{"name":"interface/editor/font_hinting","type":"int","description":"The font hinting mode to use for the editor fonts. FreeType supports the following font hinting modes:\n\t\t\t- [b]None:[/b] Don't use font hinting when rasterizing the font. This results in a smooth font, but it can look blurry.\n\t\t\t- [b]Light:[/b] Use hinting on the X axis only. This is a compromise between font sharpness and smoothness.\n\t\t\t- [b]Normal:[/b] Use hinting on both X and Y axes. This results in a sharp font, but it doesn't look very smooth.\n\t\t\tIf set to [b]Auto[/b], the font hinting mode will be set to match the current operating system in use. This means the [b]Light[/b] hinting mode will be used on Windows and Linux, and the [b]None[/b] hinting mode will be used on macOS."},{"name":"interface/editor/font_subpixel_positioning","type":"int","description":"The subpixel positioning mode to use when rendering editor font glyphs. This affects both the main and code fonts. [b]Disabled[/b] is the fastest to render and uses the least memory. [b]Auto[/b] only uses subpixel positioning for small font sizes (where the benefit is the most noticeable). [b]One Half of a Pixel[/b] and [b]One Quarter of a Pixel[/b] force the same subpixel positioning mode for all editor fonts, regardless of their size (with [b]One Quarter of a Pixel[/b] being the highest-quality option)."},{"name":"interface/editor/import_resources_when_unfocused","type":"bool","description":"If [code]true[/code], (re)imports resources even if the editor window is unfocused or minimized. If [code]false[/code], resources are only (re)imported when the editor window is focused. This can be set to [code]true[/code] to speed up iteration by starting the import process earlier when saving files in the project folder. This also allows getting visual feedback on changes without having to click the editor window, which is useful with multi-monitor setups. The downside of setting this to [code]true[/code] is that it increases idle CPU usage and may steal CPU time from other applications when importing resources."},{"name":"interface/editor/keep_screen_on","type":"bool","description":"If [code]true[/code], keeps the screen on (even in case of inactivity), so the screensaver does not take over. Works on desktop and mobile platforms."},{"name":"interface/editor/localize_settings","type":"bool","description":"If [code]true[/code], setting names in the editor are localized when possible.\n\t\t\t[b]Note:[/b] This setting affects most [EditorInspector]s in the editor UI, primarily Project Settings and Editor Settings. To control names displayed in the Inspector dock, use [member interface/inspector/default_property_name_style] instead."},{"name":"interface/editor/low_processor_mode_sleep_usec","type":"int","description":"The amount of sleeping between frames when the low-processor usage mode is enabled (in microseconds). Higher values will result in lower CPU/GPU usage, which can improve battery life on laptops. However, higher values will result in a less responsive editor. The default value is set to allow for maximum smoothness on monitors up to 144 Hz. See also [member interface/editor/unfocused_low_processor_mode_sleep_usec].\n\t\t\t[b]Note:[/b] This setting is ignored if [member interface/editor/update_continuously] is [code]true[/code], as enabling that setting disables low-processor mode."},{"name":"interface/editor/main_font","type":"String","description":"The font to use for the editor interface. Must be a resource of a [Font] type such as a [code].ttf[/code] or [code].otf[/code] font file."},{"name":"interface/editor/main_font_bold","type":"String","description":"The font to use for bold text in the editor interface. Must be a resource of a [Font] type such as a [code].ttf[/code] or [code].otf[/code] font file."},{"name":"interface/editor/main_font_size","type":"int","description":"The size of the font in the editor interface."},{"name":"interface/editor/mouse_extra_buttons_navigate_history","type":"bool","description":"If [code]true[/code], the mouse's additional side buttons will be usable to navigate in the script editor's file history. Set this to [code]false[/code] if you're using the side buttons for other purposes (such as a push-to-talk button in a VoIP program)."},{"name":"interface/editor/project_manager_screen","type":"int","description":"The preferred monitor to display the project manager."},{"name":"interface/editor/save_each_scene_on_quit","type":"bool","description":"If [code]false[/code], the editor will save all scenes when confirming the [b]Save[/b] action when quitting the editor or quitting to the project list. If [code]true[/code], the editor will ask to save each scene individually."},{"name":"interface/editor/save_on_focus_loss","type":"bool","description":"If [code]true[/code], scenes and scripts are saved when the editor loses focus. Depending on the work flow, this behavior can be less intrusive than [member text_editor/behavior/files/autosave_interval_secs] or remembering to save manually."},{"name":"interface/editor/separate_distraction_mode","type":"bool","description":"If [code]true[/code], the editor's Script tab will have a separate distraction mode setting from the 2D/3D/AssetLib tabs. If [code]false[/code], the distraction-free mode toggle is shared between all tabs."},{"name":"interface/editor/show_internal_errors_in_toast_notifications","type":"int","description":"If enabled, displays internal engine errors in toast notifications (toggleable by clicking the \"bell\" icon at the bottom of the editor). No matter the value of this setting, non-internal engine errors will always be visible in toast notifications.\n\t\t\tThe default [b]Auto[/b] value will only enable this if the editor was compiled with the [code]dev_build=yes[/code] SCons option (the default is [code]dev_build=no[/code])."},{"name":"interface/editor/show_update_spinner","type":"int","description":"If enabled, displays an icon in the top-right corner of the editor that spins when the editor redraws a frame. This can be used to diagnose situations where the engine is constantly redrawing, which should be avoided as this increases CPU and GPU utilization for no good reason. To further troubleshoot these situations, start the editor with the [code]--debug-canvas-item-redraw[/code] [url=$DOCS_URL/tutorials/editor/command_line_tutorial.html]command line argument[/url].\n\t\t\tConsider enabling this if you are developing editor plugins to ensure they only make the editor redraw when required.\n\t\t\tThe default [b]Auto[/b] value will only enable this if the editor was compiled with the [code]dev_build=yes[/code] SCons option (the default is [code]dev_build=no[/code]).\n\t\t\t[b]Note:[/b] If [member interface/editor/update_continuously] is [code]true[/code], the spinner icon displays in red.\n\t\t\t[b]Note:[/b] If the editor was started with the [code]--debug-canvas-item-redraw[/code] [url=$DOCS_URL/tutorials/editor/command_line_tutorial.html]command line argument[/url], the update spinner will [i]never[/i] display regardless of this setting's value. This is to avoid confusion with what would cause redrawing in real world scenarios."},{"name":"interface/editor/single_window_mode","type":"bool","description":"If [code]true[/code], embed modal windows such as docks inside the main editor window. When single-window mode is enabled, tooltips will also be embedded inside the main editor window, which means they can't be displayed outside of the editor window. Single-window mode can be faster as it does not need to create a separate window for every popup and tooltip, which can be a slow operation depending on the operating system and rendering method in use.\n\t\t\tThis is equivalent to [member ProjectSettings.display/window/subwindows/embed_subwindows] in the running project, except the setting's value is inverted.\n\t\t\t[b]Note:[/b] To query whether the editor can use multiple windows in an editor plugin, use [method EditorInterface.is_multi_window_enabled] instead of querying the value of this editor setting.\n\t\t\t[b]Note:[/b] If [code]true[/code], game embedding is disabled."},{"name":"interface/editor/ui_layout_direction","type":"int","description":"Editor UI default layout direction."},{"name":"interface/editor/unfocused_low_processor_mode_sleep_usec","type":"int","description":"When the editor window is unfocused, the amount of sleeping between frames when the low-processor usage mode is enabled (in microseconds). Higher values will result in lower CPU/GPU usage, which can improve battery life on laptops (in addition to improving the running project's performance if the editor has to redraw continuously). However, higher values will result in a less responsive editor. The default value is set to limit the editor to 20 FPS when the editor window is unfocused. See also [member interface/editor/low_processor_mode_sleep_usec].\n\t\t\t[b]Note:[/b] This setting is ignored if [member interface/editor/update_continuously] is [code]true[/code], as enabling that setting disables low-processor mode."},{"name":"interface/editor/update_continuously","type":"bool","description":"If [code]true[/code], redraws the editor every frame even if nothing has changed on screen. When this setting is enabled, the update spinner displays in red (see [member interface/editor/show_update_spinner]).\n\t\t\t[b]Warning:[/b] This greatly increases CPU and GPU utilization, leading to increased power usage. This should only be enabled for troubleshooting purposes."},{"name":"interface/editor/use_embedded_menu","type":"bool","description":"If [code]true[/code], editor main menu is using embedded [MenuBar] instead of system global menu.\n\t\t\tSpecific to the macOS platform."},{"name":"interface/editor/use_native_file_dialogs","type":"bool","description":"If [code]true[/code], editor UI uses OS native file/directory selection dialogs."},{"name":"interface/editor/vsync_mode","type":"int","description":"Sets the V-Sync mode for the editor. Does not affect the project when run from the editor (this is controlled by [member ProjectSettings.display/window/vsync/vsync_mode]).\n\t\t\tDepending on the platform and used renderer, the engine will fall back to [b]Enabled[/b] if the desired mode is not supported.\n\t\t\t[b]Note:[/b] V-Sync modes other than [b]Enabled[/b] are only supported in the Forward+ and Mobile rendering methods, not Compatibility."},{"name":"interface/editors/derive_script_globals_by_name","type":"bool","description":"If [code]true[/code], when extending a script, the global class name of the script is inserted in the script creation dialog, if it exists. If [code]false[/code], the script's file path is always inserted."},{"name":"interface/editors/show_scene_tree_root_selection","type":"bool","description":"If [code]true[/code], the Scene dock will display buttons to quickly add a root node to a newly created scene."},{"name":"interface/inspector/auto_unfold_foreign_scenes","type":"bool","description":"If [code]true[/code], automatically expands property groups in the Inspector dock when opening a scene that hasn't been opened previously. If [code]false[/code], all groups remain collapsed by default."},{"name":"interface/inspector/default_color_picker_mode","type":"int","description":"The default color picker mode to use when opening [ColorPicker]s in the editor. This mode can be temporarily adjusted on the color picker itself."},{"name":"interface/inspector/default_color_picker_shape","type":"int","description":"The default color picker shape to use when opening [ColorPicker]s in the editor. This shape can be temporarily adjusted on the color picker itself."},{"name":"interface/inspector/default_float_step","type":"float","description":"The floating-point precision to use for properties that don't define an explicit precision step. Lower values allow entering more precise values."},{"name":"interface/inspector/default_property_name_style","type":"int","description":"The default property name style to display in the Inspector dock. This style can be temporarily adjusted in the Inspector dock's menu.\n\t\t\t- [b]Raw:[/b] Displays properties in [code]snake_case[/code].\n\t\t\t- [b]Capitalized:[/b] Displays properties capitalized.\n\t\t\t- [b]Localized:[/b] Displays the localized string for the current editor language if a translation is available for the given property. If no translation is available, falls back to [b]Capitalized[/b].\n\t\t\t[b]Note:[/b] To display translated setting names in Project Settings and Editor Settings, use [member interface/editor/localize_settings] instead."},{"name":"interface/inspector/delimitate_all_container_and_resources","type":"bool","description":"If [code]true[/code], add a margin around Array, Dictionary, and Resource Editors that are not already colored.\n\t\t\t[b]Note:[/b] If [member interface/inspector/nested_color_mode] is set to [b]Containers &amp; Resources[/b] this parameter will have no effect since those editors will already be colored."},{"name":"interface/inspector/disable_folding","type":"bool","description":"If [code]true[/code], forces all property groups to be expanded in the Inspector dock and prevents collapsing them."},{"name":"interface/inspector/float_drag_speed","type":"float","description":"Base speed for increasing/decreasing float values by dragging them in the inspector."},{"name":"interface/inspector/horizontal_vector2_editing","type":"bool","description":"If [code]true[/code], [Vector2] and [Vector2i] properties are shown on a single line in the inspector instead of two lines. This is overall more compact, but it can be harder to view and edit large values without expanding the inspector horizontally."},{"name":"interface/inspector/horizontal_vector_types_editing","type":"bool","description":"If [code]true[/code], [Vector3], [Vector3i], [Vector4], [Vector4i], [Rect2], [Rect2i], [Plane], and [Quaternion] properties are shown on a single line in the inspector instead of multiple lines. This is overall more compact, but it can be harder to view and edit large values without expanding the inspector horizontally."},{"name":"interface/inspector/max_array_dictionary_items_per_page","type":"int","description":"The number of [Array] or [Dictionary] items to display on each \"page\" in the inspector. Higher values allow viewing more values per page, but take more time to load. This increased load time is noticeable when selecting nodes that have array or dictionary properties in the editor."},{"name":"interface/inspector/nested_color_mode","type":"int","description":"Control which property editors are colored when they are opened.\n\t\t\t- [b]Containers &amp; Resources:[/b] Color all Array, Dictionary, and Resource Editors.\n\t\t\t- [b]Resources:[/b] Color all Resource Editors.\n\t\t\t- [b]External Resources:[/b] Color Resource Editors that edits an external resource."},{"name":"interface/inspector/open_resources_in_current_inspector","type":"bool","description":"If [code]true[/code], subresources can be edited in the current inspector view. If the resource type is defined in [member interface/inspector/resources_to_open_in_new_inspector] or if this setting is [code]false[/code], attempting to edit a subresource always opens a new inspector view."},{"name":"interface/inspector/resources_to_open_in_new_inspector","type":"PackedStringArray","description":"List of resources that should always be opened in a new inspector view, even if [member interface/inspector/open_resources_in_current_inspector] is [code]true[/code]."},{"name":"interface/inspector/show_low_level_opentype_features","type":"bool","description":"If [code]true[/code], display OpenType features marked as [code]hidden[/code] by the font file in the [Font] editor."},{"name":"interface/multi_window/enable","type":"bool","description":"If [code]true[/code], multiple window support in editor is enabled. The following panels can become dedicated windows (i.e. made floating): Docks, Script editor, Shader editor, and Game Workspace.\n\t\t\t[b]Note:[/b] When [member interface/editor/single_window_mode] is [code]true[/code], the multi window support is always disabled.\n\t\t\t[b]Note:[/b] To query whether the editor can use multiple windows in an editor plugin, use [method EditorInterface.is_multi_window_enabled] instead of querying the value of this editor setting."},{"name":"interface/multi_window/maximize_window","type":"bool","description":"If [code]true[/code], when panels are made floating they will be maximized.\n\t\t\tIf [code]false[/code], when panels are made floating their position and size will match the ones when they are attached (excluding window border) to the editor window."},{"name":"interface/multi_window/restore_windows_on_load","type":"bool","description":"If [code]true[/code], the floating panel position, size, and screen will be saved on editor exit. On next launch the panels that were floating will be made floating in the saved positions, sizes and screens, if possible."},{"name":"interface/scene_tabs/display_close_button","type":"int","description":"Controls when the Close (X) button is displayed on scene tabs at the top of the editor."},{"name":"interface/scene_tabs/maximum_width","type":"int","description":"The maximum width of each scene tab at the top editor (in pixels)."},{"name":"interface/scene_tabs/restore_scenes_on_load","type":"bool","description":"If [code]true[/code], when a project is loaded, restores scenes that were opened on the last editor session.\n\t\t\t[b]Note:[/b] With many opened scenes, the editor may take longer to become usable. If starting the editor quickly is necessary, consider setting this to [code]false[/code]."},{"name":"interface/scene_tabs/show_script_button","type":"bool","description":"If [code]true[/code], show a button next to each scene tab that opens the scene's \"dominant\" script when clicked. The \"dominant\" script is the one that is at the highest level in the scene's hierarchy."},{"name":"interface/scene_tabs/show_thumbnail_on_hover","type":"bool","description":"If [code]true[/code], display an automatically-generated thumbnail when hovering scene tabs with the mouse. Scene thumbnails are generated when saving the scene."},{"name":"interface/theme/accent_color","type":"Color","description":"The color to use for \"highlighted\" user interface elements in the editor (pressed and hovered items)."},{"name":"interface/theme/additional_spacing","type":"int","description":"The extra spacing to add to various GUI elements in the editor (in pixels). Increasing this value is useful to improve usability on touch screens, at the cost of reducing the amount of usable screen real estate.\n\t\t\tSee also [member interface/theme/spacing_preset]."},{"name":"interface/theme/base_color","type":"Color","description":"The base color to use for user interface elements in the editor. Secondary colors (such as darker/lighter variants) are derived from this color."},{"name":"interface/theme/base_spacing","type":"int","description":"The base spacing used by various GUI elements in the editor (in pixels). See also [member interface/theme/spacing_preset]."},{"name":"interface/theme/border_size","type":"int","description":"The border size to use for interface elements (in pixels)."},{"name":"interface/theme/contrast","type":"float","description":"The contrast factor to use when deriving the editor theme's base color (see [member interface/theme/base_color]). When using a positive values, the derived colors will be [i]darker[/i] than the base color. This contrast factor can be set to a negative value, which will make the derived colors [i]brighter[/i] than the base color. Negative contrast rates often look better for light themes."},{"name":"interface/theme/corner_radius","type":"int","description":"The corner radius to use for interface elements (in pixels). [code]0[/code] is square."},{"name":"interface/theme/custom_theme","type":"String","description":"The custom theme resource to use for the editor. Must be a Godot theme resource in [code].tres[/code] or [code].res[/code] format."},{"name":"interface/theme/draw_extra_borders","type":"bool","description":"If [code]true[/code], draws additional borders around interactive UI elements in the editor. This is automatically enabled when using the [b]Black (OLED)[/b] theme preset, as this theme preset uses a fully black background."},{"name":"interface/theme/follow_system_theme","type":"bool","description":"If [code]true[/code], the editor theme preset will attempt to automatically match the system theme."},{"name":"interface/theme/icon_and_font_color","type":"int","description":"The icon and font color scheme to use in the editor.\n\t\t\t- [b]Auto[/b] determines the color scheme to use automatically based on [member interface/theme/base_color].\n\t\t\t- [b]Dark[/b] makes fonts and icons dark (suitable for light themes). Icon colors are automatically converted by the editor following the set of rules defined in [url=https://github.com/godotengine/godot/blob/master/editor/themes/editor_theme_manager.cpp]this file[/url].\n\t\t\t- [b]Light[/b] makes fonts and icons light (suitable for dark themes)."},{"name":"interface/theme/icon_saturation","type":"float","description":"The saturation to use for editor icons. Higher values result in more vibrant colors.\n\t\t\t[b]Note:[/b] The default editor icon saturation was increased by 30% in Godot 4.0 and later. To get Godot 3.x's icon saturation back, set [member interface/theme/icon_saturation] to [code]0.77[/code]."},{"name":"interface/theme/preset","type":"String","description":"The editor theme preset to use."},{"name":"interface/theme/relationship_line_opacity","type":"float","description":"The opacity to use when drawing relationship lines in the editor's [Tree]-based GUIs (such as the Scene tree dock)."},{"name":"interface/theme/spacing_preset","type":"String","description":"The editor theme spacing preset to use. See also [member interface/theme/base_spacing] and [member interface/theme/additional_spacing]."},{"name":"interface/theme/use_system_accent_color","type":"bool","description":"If [code]true[/code], set accent color based on system settings.\n\t\t\t[b]Note:[/b] This setting is only effective on Windows, MacOS, and Android."},{"name":"interface/touchscreen/enable_long_press_as_right_click","type":"bool","description":"If [code]true[/code], long press on touchscreen is treated as right click.\n\t\t\t[b]Note:[/b] Defaults to [code]true[/code] on touchscreen devices."},{"name":"interface/touchscreen/enable_pan_and_scale_gestures","type":"bool","description":"If [code]true[/code], enable two finger pan and scale gestures on touchscreen devices.\n\t\t\t[b]Note:[/b] Defaults to [code]true[/code] on touchscreen devices."},{"name":"interface/touchscreen/increase_scrollbar_touch_area","type":"bool","description":"If [code]true[/code], increases the scrollbar touch area to improve usability on touchscreen devices.\n\t\t\t[b]Note:[/b] Defaults to [code]true[/code] on touchscreen devices."},{"name":"interface/touchscreen/scale_gizmo_handles","type":"float","description":"Specify the multiplier to apply to the scale for the editor gizmo handles to improve usability on touchscreen devices.\n\t\t\t[b]Note:[/b] Defaults to [code]1[/code] on non-touchscreen devices."},{"name":"network/connection/engine_version_update_mode","type":"int","description":"Specifies how the engine should check for updates.\n\t\t\t- [b]Disable Update Checks[/b] will block the engine from checking updates (see also [member network/connection/network_mode]).\n\t\t\t- [b]Check Newest Preview[/b] (default for preview versions) will check for the newest available development snapshot.\n\t\t\t- [b]Check Newest Stable[/b] (default for stable versions) will check for the newest available stable version.\n\t\t\t- [b]Check Newest Patch[/b] will check for the latest available stable version, but only within the same minor version. E.g. if your version is [code]4.3.stable[/code], you will be notified about [code]4.3.1.stable[/code], but not [code]4.4.stable[/code].\n\t\t\tAll update modes will ignore builds with different major versions (e.g. Godot 4 -&gt; Godot 5)."},{"name":"network/connection/network_mode","type":"int","description":"Determines whether online features are enabled in the editor, such as the Asset Library or update checks. Disabling these online features helps alleviate privacy concerns by preventing the editor from making HTTP requests to the Godot website or third-party platforms hosting assets from the Asset Library."},{"name":"network/debug/remote_host","type":"String","description":"The address to listen to when starting the remote debugger. This can be set to this device's local IP address to allow external clients to connect to the remote debugger (instead of restricting the remote debugger to connections from [code]localhost[/code])."},{"name":"network/debug/remote_port","type":"int","description":"The port to listen to when starting the remote debugger. Godot will try to use port numbers above the configured number if the configured number is already taken by another application."},{"name":"network/http_proxy/host","type":"String","description":"The host to use to contact the HTTP and HTTPS proxy in the editor (for the asset library and export template downloads). See also [member network/http_proxy/port].\n\t\t\t[b]Note:[/b] Godot currently doesn't automatically use system proxy settings, so you have to enter them manually here if needed."},{"name":"network/http_proxy/port","type":"int","description":"The port number to use to contact the HTTP and HTTPS proxy in the editor (for the asset library and export template downloads). See also [member network/http_proxy/host].\n\t\t\t[b]Note:[/b] Godot currently doesn't automatically use system proxy settings, so you have to enter them manually here if needed."},{"name":"network/tls/editor_tls_certificates","type":"String","description":"The TLS certificate bundle to use for HTTP requests made within the editor (e.g. from the AssetLib tab). If left empty, the [url=https://github.com/godotengine/godot/blob/master/thirdparty/certs/ca-certificates.crt]included Mozilla certificate bundle[/url] will be used."},{"name":"network/tls/enable_tls_v1.3","type":"bool","description":"If [code]true[/code], enable TLSv1.3 negotiation.\n\t\t\t[b]Note:[/b] Only supported when using Mbed TLS 3.0 or later (Linux distribution packages may be compiled against older system Mbed TLS packages), otherwise the maximum supported TLS version is always TLSv1.2."},{"name":"project_manager/default_renderer","type":"String","description":"The renderer type that will be checked off by default when creating a new project. Accepted strings are \"forward_plus\", \"mobile\" or \"gl_compatibility\"."},{"name":"project_manager/directory_naming_convention","type":"int","description":"Directory naming convention for the project manager. Options are \"No convention\" (project name is directory name), \"kebab-case\" (default), \"snake_case\", \"camelCase\", \"PascalCase\", or \"Title Case\"."},{"name":"project_manager/sorting_order","type":"int","description":"The sorting order to use in the project manager. When changing the sorting order in the project manager, this setting is set permanently in the editor settings."},{"name":"run/auto_save/save_before_running","type":"bool","description":"If [code]true[/code], saves all scenes and scripts automatically before running the project. Setting this to [code]false[/code] prevents the editor from saving if there are no changes which can speed up the project startup slightly, but it makes it possible to run a project that has unsaved changes. (Unsaved changes will not be visible in the running project.)"},{"name":"run/bottom_panel/action_on_play","type":"int","description":"The action to execute on the bottom panel when running the project.\n\t\t\t[b]Note:[/b] This option won't do anything if the bottom panel switching is locked using the pin button in the corner of the bottom panel."},{"name":"run/bottom_panel/action_on_stop","type":"int","description":"The action to execute on the bottom panel when stopping the project.\n\t\t\t[b]Note:[/b] This option won't do anything if the bottom panel switching is locked using the pin button in the corner of the bottom panel."},{"name":"run/output/always_clear_output_on_play","type":"bool","description":"If [code]true[/code], the editor will clear the Output panel when running the project."},{"name":"run/output/font_size","type":"int","description":"The size of the font in the [b]Output[/b] panel at the bottom of the editor. This setting does not impact the font size of the script editor (see [member interface/editor/code_font_size])."},{"name":"run/output/max_lines","type":"int","description":"Maximum number of lines to show at any one time in the Output panel."},{"name":"run/platforms/linuxbsd/prefer_wayland","type":"bool","description":"If [code]true[/code], on Linux/BSD, the editor will check for Wayland first instead of X11 (if available)."},{"name":"run/window_placement/android_window","type":"int","description":"Specifies how the Play window is launched relative to the Android editor.\n\t\t\t- [b]Auto (based on screen size)[/b] (default) will automatically choose how to launch the Play window based on the device and screen metrics. Defaults to [b]Same as Editor[/b] on phones and [b]Side-by-side with Editor[/b] on tablets.\n\t\t\t- [b]Same as Editor[/b] will launch the Play window in the same window as the Editor.\n\t\t\t- [b]Side-by-side with Editor[/b] will launch the Play window side-by-side with the Editor window.\n\t\t\t[b]Note:[/b] Only available in the Android editor."},{"name":"run/window_placement/game_embed_mode","type":"int","description":"Overrides game embedding setting for all newly opened projects. If enabled, game embedding settings are not saved."},{"name":"run/window_placement/rect","type":"int","description":"The window mode to use to display the project when starting the project from the editor.\n\t\t\t[b]Note:[/b] Game embedding is not available for \"Force Maximized\" or \"Force Fullscreen.\""},{"name":"run/window_placement/rect_custom_position","type":"Vector2","description":"The custom position to use when starting the project from the editor (in pixels from the top-left corner). Only effective if [member run/window_placement/rect] is set to [b]Custom Position[/b]."},{"name":"run/window_placement/screen","type":"int","description":"The monitor to display the project on when starting the project from the editor."},{"name":"text_editor/appearance/caret/caret_blink","type":"bool","description":"If [code]true[/code], makes the caret blink according to [member text_editor/appearance/caret/caret_blink_interval]. Disabling this setting can improve battery life on laptops if you spend long amounts of time in the script editor, since it will reduce the frequency at which the editor needs to be redrawn."},{"name":"text_editor/appearance/caret/caret_blink_interval","type":"float","description":"The interval at which the caret will blink (in seconds). See also [member text_editor/appearance/caret/caret_blink]."},{"name":"text_editor/appearance/caret/highlight_all_occurrences","type":"bool","description":"If [code]true[/code], highlights all occurrences of the currently selected text in the script editor. See also [member text_editor/theme/highlighting/word_highlighted_color]."},{"name":"text_editor/appearance/caret/highlight_current_line","type":"bool","description":"If [code]true[/code], colors the background of the line the caret is currently on with [member text_editor/theme/highlighting/current_line_color]."},{"name":"text_editor/appearance/caret/type","type":"int","description":"The shape of the caret to use in the script editor. [b]Line[/b] displays a vertical line to the left of the current character, whereas [b]Block[/b] displays an outline over the current character."},{"name":"text_editor/appearance/guidelines/line_length_guideline_hard_column","type":"int","description":"The column at which to display a subtle line as a line length guideline for scripts. This should generally be greater than [member text_editor/appearance/guidelines/line_length_guideline_soft_column]."},{"name":"text_editor/appearance/guidelines/line_length_guideline_soft_column","type":"int","description":"The column at which to display a [i]very[/i] subtle line as a line length guideline for scripts. This should generally be lower than [member text_editor/appearance/guidelines/line_length_guideline_hard_column]."},{"name":"text_editor/appearance/guidelines/show_line_length_guidelines","type":"bool","description":"If [code]true[/code], displays line length guidelines to help you keep line lengths in check. See also [member text_editor/appearance/guidelines/line_length_guideline_soft_column] and [member text_editor/appearance/guidelines/line_length_guideline_hard_column]."},{"name":"text_editor/appearance/gutters/highlight_type_safe_lines","type":"bool","description":"If [code]true[/code], highlights type-safe lines by displaying their line number color with [member text_editor/theme/highlighting/safe_line_number_color] instead of [member text_editor/theme/highlighting/line_number_color]. Type-safe lines are lines of code where the type of all variables is known at compile-time. These type-safe lines may run faster thanks to typed instructions."},{"name":"text_editor/appearance/gutters/line_numbers_zero_padded","type":"bool","description":"If [code]true[/code], displays line numbers with zero padding (e.g. [code]007[/code] instead of [code]7[/code])."},{"name":"text_editor/appearance/gutters/show_info_gutter","type":"bool","description":"If [code]true[/code], displays a gutter at the left containing icons for methods with signal connections and for overridden methods."},{"name":"text_editor/appearance/gutters/show_line_numbers","type":"bool","description":"If [code]true[/code], displays line numbers in a gutter at the left."},{"name":"text_editor/appearance/lines/autowrap_mode","type":"int","description":"If [member text_editor/appearance/lines/word_wrap] is set to [code]1[/code], sets text wrapping mode. To see how each mode behaves, see [enum TextServer.AutowrapMode]."},{"name":"text_editor/appearance/lines/code_folding","type":"bool","description":"If [code]true[/code], displays the folding arrows next to indented code sections and allows code folding. If [code]false[/code], hides the folding arrows next to indented code sections and disallows code folding."},{"name":"text_editor/appearance/lines/word_wrap","type":"int","description":"If [code]true[/code], wraps long lines over multiple lines to avoid horizontal scrolling. This is a display-only feature; it does not actually insert line breaks in your scripts."},{"name":"text_editor/appearance/minimap/minimap_width","type":"int","description":"The width of the minimap in the script editor (in pixels)."},{"name":"text_editor/appearance/minimap/show_minimap","type":"bool","description":"If [code]true[/code], draws an overview of the script near the scroll bar. The minimap can be left-clicked to scroll directly to a location in an \"absolute\" manner."},{"name":"text_editor/appearance/whitespace/draw_spaces","type":"bool","description":"If [code]true[/code], draws space characters as centered points."},{"name":"text_editor/appearance/whitespace/draw_tabs","type":"bool","description":"If [code]true[/code], draws tab characters as chevrons."},{"name":"text_editor/appearance/whitespace/line_spacing","type":"int","description":"The space to add between lines (in pixels). Greater line spacing can help improve readability at the cost of displaying fewer lines on screen."},{"name":"text_editor/behavior/documentation/enable_tooltips","type":"bool","description":"If [code]true[/code], documentation tooltips will appear when hovering over a symbol."},{"name":"text_editor/behavior/files/auto_reload_and_parse_scripts_on_save","type":"bool","description":"If [code]true[/code], tool scripts will be automatically soft-reloaded after they are saved."},{"name":"text_editor/behavior/files/auto_reload_scripts_on_external_change","type":"bool","description":"If [code]true[/code], automatically reloads scripts in the editor when they have been modified and saved by external editors."},{"name":"text_editor/behavior/files/autosave_interval_secs","type":"int","description":"If set to a value greater than [code]0[/code], automatically saves the current script following the specified interval (in seconds). This can be used to prevent data loss if the editor crashes."},{"name":"text_editor/behavior/files/convert_indent_on_save","type":"bool","description":"If [code]true[/code], converts indentation to match the script editor's indentation settings when saving a script. See also [member text_editor/behavior/indent/type]."},{"name":"text_editor/behavior/files/open_dominant_script_on_scene_change","type":"bool","description":"If [code]true[/code], opening a scene automatically opens the script attached to the root node, or the topmost node if the root has no script."},{"name":"text_editor/behavior/files/restore_scripts_on_load","type":"bool","description":"If [code]true[/code], reopens scripts that were opened in the last session when the editor is reopened on a given project."},{"name":"text_editor/behavior/files/trim_final_newlines_on_save","type":"bool","description":"If [code]true[/code], trims all empty newlines after the final newline when saving a script. Final newlines refer to the empty newlines found at the end of files. Since these serve no practical purpose, they can and should be removed to make version control diffs less noisy."},{"name":"text_editor/behavior/files/trim_trailing_whitespace_on_save","type":"bool","description":"If [code]true[/code], trims trailing whitespace when saving a script. Trailing whitespace refers to tab and space characters placed at the end of lines. Since these serve no practical purpose, they can and should be removed to make version control diffs less noisy."},{"name":"text_editor/behavior/general/empty_selection_clipboard","type":"bool","description":"If [code]true[/code], copying or cutting without a selection is performed on all lines with a caret. Otherwise, copy and cut require a selection."},{"name":"text_editor/behavior/indent/auto_indent","type":"bool","description":"If [code]true[/code], automatically indents code when pressing the [kbd]Enter[/kbd] key based on blocks above the new line."},{"name":"text_editor/behavior/indent/indent_wrapped_lines","type":"bool","description":"If [code]true[/code], all wrapped lines are indented to the same amount as the unwrapped line."},{"name":"text_editor/behavior/indent/size","type":"int","description":"When using tab indentation, determines the length of each tab. When using space indentation, determines how many spaces are inserted when pressing [kbd]Tab[/kbd] and when automatic indentation is performed."},{"name":"text_editor/behavior/indent/type","type":"int","description":"The indentation style to use (tabs or spaces).\n\t\t\t[b]Note:[/b] The [url=$DOCS_URL/tutorials/scripting/gdscript/gdscript_styleguide.html]GDScript style guide[/url] recommends using tabs for indentation. It is advised to change this setting only if you need to work on a project that currently uses spaces for indentation."},{"name":"text_editor/behavior/navigation/custom_word_separators","type":"String","description":"The characters to consider as word delimiters if [member text_editor/behavior/navigation/use_custom_word_separators] is [code]true[/code]. This is in addition to default characters if [member text_editor/behavior/navigation/use_default_word_separators] is [code]true[/code]. The characters should be defined without separation, for example [code]_♥=[/code]."},{"name":"text_editor/behavior/navigation/drag_and_drop_selection","type":"bool","description":"If [code]true[/code], allows drag-and-dropping text in the script editor to move text. Disable this if you find yourself accidentally drag-and-dropping text in the script editor."},{"name":"text_editor/behavior/navigation/move_caret_on_right_click","type":"bool","description":"If [code]true[/code], the caret will be moved when right-clicking somewhere in the script editor (like when left-clicking or middle-clicking). If [code]false[/code], the caret will only be moved when left-clicking or middle-clicking somewhere."},{"name":"text_editor/behavior/navigation/open_script_when_connecting_signal_to_existing_method","type":"bool","description":"If [code]true[/code], opens the script editor when connecting a signal to an existing script method from the Node dock."},{"name":"text_editor/behavior/navigation/scroll_past_end_of_file","type":"bool","description":"If [code]true[/code], allows scrolling past the end of the file."},{"name":"text_editor/behavior/navigation/smooth_scrolling","type":"bool","description":"If [code]true[/code], enables a smooth scrolling animation when using the mouse wheel to scroll. See [member text_editor/behavior/navigation/v_scroll_speed] for the speed of this animation.\n\t\t\t[b]Note:[/b] [member text_editor/behavior/navigation/smooth_scrolling] currently behaves poorly in projects where [member ProjectSettings.physics/common/physics_ticks_per_second] has been increased significantly from its default value ([code]60[/code]). In this case, it is recommended to disable this setting."},{"name":"text_editor/behavior/navigation/stay_in_script_editor_on_node_selected","type":"bool","description":"If [code]true[/code], prevents automatically switching between the Script and 2D/3D screens when selecting a node in the Scene tree dock."},{"name":"text_editor/behavior/navigation/use_custom_word_separators","type":"bool","description":"If [code]true[/code], uses the characters in [member text_editor/behavior/navigation/custom_word_separators] as word separators for word navigation and operations. This is in addition to the default characters if [member text_editor/behavior/navigation/use_default_word_separators] is also enabled. Word navigation and operations include double-clicking on a word or holding [kbd]Ctrl[/kbd] ([kbd]Cmd[/kbd] on macOS) while pressing [kbd]left[/kbd], [kbd]right[/kbd], [kbd]backspace[/kbd], or [kbd]delete[/kbd]."},{"name":"text_editor/behavior/navigation/use_default_word_separators","type":"bool","description":"If [code]true[/code], uses the characters in [code]`!\"#$%&amp;'()*+,-./:;&lt;=&gt;?@[\\]^`{|}~[/code], the Unicode General Punctuation table, and the Unicode CJK Punctuation table as word separators for word navigation and operations. If [code]false[/code], a subset of these characters are used and does not include the characters [code]&lt;&gt;$~^=+|[/code]. This is in addition to custom characters if [member text_editor/behavior/navigation/use_custom_word_separators] is also enabled. These characters are used to determine where a word stops. Word navigation and operations include double-clicking on a word or holding [kbd]Ctrl[/kbd] ([kbd]Cmd[/kbd] on macOS) while pressing [kbd]left[/kbd], [kbd]right[/kbd], [kbd]backspace[/kbd], or [kbd]delete[/kbd]."},{"name":"text_editor/behavior/navigation/v_scroll_speed","type":"int","description":"The speed of scrolling in lines per second when [member text_editor/behavior/navigation/smooth_scrolling] is [code]true[/code]. Higher values make the script scroll by faster when using the mouse wheel.\n\t\t\t[b]Note:[/b] You can hold down [kbd]Alt[/kbd] while using the mouse wheel to temporarily scroll 5 times faster."},{"name":"text_editor/completion/add_node_path_literals","type":"bool","description":"If [code]true[/code], uses [NodePath] instead of [String] when appropriate for code autocompletion or for drag and dropping object properties into the script editor."},{"name":"text_editor/completion/add_string_name_literals","type":"bool","description":"If [code]true[/code], uses [StringName] instead of [String] when appropriate for code autocompletion."},{"name":"text_editor/completion/add_type_hints","type":"bool","description":"If [code]true[/code], adds [url=$DOCS_URL/tutorials/scripting/gdscript/static_typing.html]GDScript static typing[/url] hints such as [code]-&gt; void[/code] and [code]: int[/code] when using code autocompletion or when creating onready variables by drag and dropping nodes into the script editor while pressing the [kbd]Ctrl[/kbd] key. If [code]true[/code], newly created scripts will also automatically have type hints added to their method parameters and return types."},{"name":"text_editor/completion/auto_brace_complete","type":"bool","description":"If [code]true[/code], automatically inserts the matching closing brace when the opening brace is inserted by typing or autocompletion. Also automatically removes the closing brace when pressing [kbd]Backspace[/kbd] on the opening brace. This includes brackets ([code]()[/code], [code][][/code], [code]{}[/code]), string quotation marks ([code]''[/code], [code]\"\"[/code]), and comments ([code]/**/[/code]) if the language supports it."},{"name":"text_editor/completion/code_complete_delay","type":"float","description":"The delay in seconds after which autocompletion suggestions should be displayed when the user stops typing."},{"name":"text_editor/completion/code_complete_enabled","type":"bool","description":"If [code]true[/code], code completion will be triggered automatically after [member text_editor/completion/code_complete_delay]. Even if [code]false[/code], code completion can be triggered manually with the [code]ui_text_completion_query[/code] action (by default [kbd]Ctrl + Space[/kbd] or [kbd]Cmd + Space[/kbd] on macOS)."},{"name":"text_editor/completion/colorize_suggestions","type":"bool","description":"If [code]true[/code] enables the coloring for some items in the autocompletion suggestions, like vector components."},{"name":"text_editor/completion/complete_file_paths","type":"bool","description":"If [code]true[/code], provides autocompletion suggestions for file paths in methods such as [code]load()[/code] and [code]preload()[/code]."},{"name":"text_editor/completion/idle_parse_delay","type":"float","description":"The delay in seconds after which the script editor should check for errors when the user stops typing."},{"name":"text_editor/completion/idle_parse_delay_with_errors_found","type":"float","description":"The delay used instead of [member text_editor/completion/idle_parse_delay], when the parser has found errors. A lower value should feel more responsive while fixing code, but may cause notable stuttering and increase CPU usage."},{"name":"text_editor/completion/put_callhint_tooltip_below_current_line","type":"bool","description":"If [code]true[/code], the code completion tooltip will appear below the current line unless there is no space on screen below the current line. If [code]false[/code], the code completion tooltip will appear above the current line."},{"name":"text_editor/completion/use_single_quotes","type":"bool","description":"If [code]true[/code], performs string autocompletion with single quotes. If [code]false[/code], performs string autocompletion with double quotes (which matches the [url=$DOCS_URL/tutorials/scripting/gdscript/gdscript_styleguide.html]GDScript style guide[/url])."},{"name":"text_editor/external/exec_flags","type":"String","description":"The command-line arguments to pass to the external text editor that is run when [member text_editor/external/use_external_editor] is [code]true[/code]. See also [member text_editor/external/exec_path]."},{"name":"text_editor/external/exec_path","type":"String","description":"The path to the text editor executable used to edit text files if [member text_editor/external/use_external_editor] is [code]true[/code]."},{"name":"text_editor/external/use_external_editor","type":"bool","description":"If [code]true[/code], uses an external editor instead of the built-in Script Editor. See also [member text_editor/external/exec_path] and [member text_editor/external/exec_flags]."},{"name":"text_editor/help/class_reference_examples","type":"int","description":"Controls which multi-line code blocks should be displayed in the editor help. This setting does not affect single-line code literals in the editor help."},{"name":"text_editor/help/help_font_size","type":"int","description":"The font size to use for the editor help (built-in class reference)."},{"name":"text_editor/help/help_source_font_size","type":"int","description":"The font size to use for code samples in the editor help (built-in class reference)."},{"name":"text_editor/help/help_title_font_size","type":"int","description":"The font size to use for headings in the editor help (built-in class reference)."},{"name":"text_editor/help/show_help_index","type":"bool","description":"If [code]true[/code], displays a table of contents at the left of the editor help (at the location where the members overview would appear when editing a script)."},{"name":"text_editor/help/sort_functions_alphabetically","type":"bool","description":"If [code]true[/code], the script's method list in the Script Editor is sorted alphabetically."},{"name":"text_editor/script_list/group_help_pages","type":"bool","description":"If [code]true[/code], class reference pages are grouped together at the bottom of the Script Editor's script list."},{"name":"text_editor/script_list/highlight_scene_scripts","type":"bool","description":"If [code]true[/code], the scripts that are used by the current scene are highlighted in the Script Editor's script list."},{"name":"text_editor/script_list/list_script_names_as","type":"int","description":"Specifies how script paths should be displayed in Script Editor's script list. If using the \"Name\" option and some scripts share the same file name, more parts of their paths are revealed to avoid conflicts."},{"name":"text_editor/script_list/script_temperature_enabled","type":"bool","description":"If [code]true[/code], the names of recently opened scripts in the Script Editor are highlighted with the accent color, with its intensity based on how recently they were opened."},{"name":"text_editor/script_list/script_temperature_history_size","type":"int","description":"How many script names can be highlighted at most, if [member text_editor/script_list/script_temperature_enabled] is [code]true[/code]. Scripts older than this value use the default font color."},{"name":"text_editor/script_list/show_members_overview","type":"bool","description":"If [code]true[/code], displays an overview of the current script's member variables and functions at the left of the script editor. See also [member text_editor/script_list/sort_members_outline_alphabetically]."},{"name":"text_editor/script_list/sort_members_outline_alphabetically","type":"bool","description":"If [code]true[/code], sorts the members outline (located at the left of the script editor) using alphabetical order. If [code]false[/code], sorts the members outline depending on the order in which members are found in the script.\n\t\t\t[b]Note:[/b] Only effective if [member text_editor/script_list/show_members_overview] is [code]true[/code]."},{"name":"text_editor/script_list/sort_scripts_by","type":"int","description":"Specifies sorting used for Script Editor's open script list."},{"name":"text_editor/theme/color_theme","type":"String","description":"The syntax theme to use in the script editor.\n\t\t\tYou can save your own syntax theme from your current settings by using [b]File &gt; Theme &gt; Save As...[/b] at the top of the script editor. The syntax theme will then be available locally in the list of color themes.\n\t\t\tYou can find additional syntax themes to install in the [url=https://github.com/godotengine/godot-syntax-themes]godot-syntax-themes[/url] repository."},{"name":"text_editor/theme/highlighting/background_color","type":"Color","description":"The script editor's background color. If set to a translucent color, the editor theme's base color will be visible behind."},{"name":"text_editor/theme/highlighting/base_type_color","type":"Color","description":"The script editor's base type color (used for types like [Vector2], [Vector3], [Color], ...)."},{"name":"text_editor/theme/highlighting/bookmark_color","type":"Color","description":"The script editor's bookmark icon color (displayed in the gutter)."},{"name":"text_editor/theme/highlighting/brace_mismatch_color","type":"Color","description":"The script editor's brace mismatch color. Used when the caret is currently on a mismatched brace, parenthesis or bracket character."},{"name":"text_editor/theme/highlighting/breakpoint_color","type":"Color","description":"The script editor's breakpoint icon color (displayed in the gutter)."},{"name":"text_editor/theme/highlighting/caret_background_color","type":"Color","description":"The script editor's caret background color.\n\t\t\t[b]Note:[/b] This setting has no effect as it's currently unused."},{"name":"text_editor/theme/highlighting/caret_color","type":"Color","description":"The script editor's caret color."},{"name":"text_editor/theme/highlighting/code_folding_color","type":"Color","description":"The script editor's color for the code folding icon (displayed in the gutter)."},{"name":"text_editor/theme/highlighting/comment_color","type":"Color","description":"The script editor's comment color.\n\t\t\t[b]Note:[/b] In GDScript, unlike Python, multiline strings are not considered to be comments, and will use the string highlighting color instead."},{"name":"text_editor/theme/highlighting/completion_background_color","type":"Color","description":"The script editor's autocompletion box background color."},{"name":"text_editor/theme/highlighting/completion_existing_color","type":"Color","description":"The script editor's autocompletion box background color to highlight existing characters in the completion results. This should be a translucent color so that [member text_editor/theme/highlighting/completion_selected_color] can be seen behind."},{"name":"text_editor/theme/highlighting/completion_font_color","type":"Color","description":"The script editor's autocompletion box text color."},{"name":"text_editor/theme/highlighting/completion_scroll_color","type":"Color","description":"The script editor's autocompletion box scroll bar color."},{"name":"text_editor/theme/highlighting/completion_scroll_hovered_color","type":"Color","description":"The script editor's autocompletion box scroll bar color when hovered or pressed with the mouse."},{"name":"text_editor/theme/highlighting/completion_selected_color","type":"Color","description":"The script editor's autocompletion box background color for the currently selected line."},{"name":"text_editor/theme/highlighting/control_flow_keyword_color","type":"Color","description":"The script editor's control flow keyword color (used for keywords like [code]if[/code], [code]for[/code], [code]return[/code], ...)."},{"name":"text_editor/theme/highlighting/current_line_color","type":"Color","description":"The script editor's background color for the line the caret is currently on. This should be set to a translucent color so that it can display on top of other line color modifiers such as [member text_editor/theme/highlighting/mark_color]."},{"name":"text_editor/theme/highlighting/doc_comment_color","type":"Color","description":"The script editor's documentation comment color. In GDScript, this is used for comments starting with [code]##[/code]. In C#, this is used for comments starting with [code]///[/code] or [code]/**[/code]."},{"name":"text_editor/theme/highlighting/engine_type_color","type":"Color","description":"The script editor's engine type color ([Object], [Mesh], [Node], ...)."},{"name":"text_editor/theme/highlighting/executing_line_color","type":"Color","description":"The script editor's color for the debugger's executing line icon (displayed in the gutter)."},{"name":"text_editor/theme/highlighting/folded_code_region_color","type":"Color","description":"The script editor's background line highlighting color for folded code region."},{"name":"text_editor/theme/highlighting/function_color","type":"Color","description":"The script editor's function call color.\n\t\t\t[b]Note:[/b] When using the GDScript syntax highlighter, this is replaced by the function definition color configured in the syntax theme for function definitions (e.g. [code]func _ready():[/code])."},{"name":"text_editor/theme/highlighting/keyword_color","type":"Color","description":"The script editor's non-control flow keyword color (used for keywords like [code]var[/code], [code]func[/code], [code]extends[/code], ...)."},{"name":"text_editor/theme/highlighting/line_length_guideline_color","type":"Color","description":"The script editor's color for the line length guideline. The \"hard\" line length guideline will be drawn with this color, whereas the \"soft\" line length guideline will be drawn with half of its opacity."},{"name":"text_editor/theme/highlighting/line_number_color","type":"Color","description":"The script editor's color for line numbers. See also [member text_editor/theme/highlighting/safe_line_number_color]."},{"name":"text_editor/theme/highlighting/mark_color","type":"Color","description":"The script editor's background color for lines with errors. This should be set to a translucent color so that it can display on top of other line color modifiers such as [member text_editor/theme/highlighting/current_line_color]."},{"name":"text_editor/theme/highlighting/member_variable_color","type":"Color","description":"The script editor's color for member variables on objects (e.g. [code]self.some_property[/code]).\n\t\t\t[b]Note:[/b] This color is not used for local variable declaration and access."},{"name":"text_editor/theme/highlighting/number_color","type":"Color","description":"The script editor's color for numbers (integer and floating-point)."},{"name":"text_editor/theme/highlighting/safe_line_number_color","type":"Color","description":"The script editor's color for type-safe line numbers. See also [member text_editor/theme/highlighting/line_number_color].\n\t\t\t[b]Note:[/b] Only displayed if [member text_editor/appearance/gutters/highlight_type_safe_lines] is [code]true[/code]."},{"name":"text_editor/theme/highlighting/search_result_border_color","type":"Color","description":"The script editor's color for the border of search results. This border helps bring further attention to the search result. Set this color's opacity to 0 to disable the border."},{"name":"text_editor/theme/highlighting/search_result_color","type":"Color","description":"The script editor's background color for search results."},{"name":"text_editor/theme/highlighting/selection_color","type":"Color","description":"The script editor's background color for the currently selected text."},{"name":"text_editor/theme/highlighting/string_color","type":"Color","description":"The script editor's color for strings (single-line and multi-line)."},{"name":"text_editor/theme/highlighting/symbol_color","type":"Color","description":"The script editor's color for operators ([code]( ) [ ] { } + - * /[/code], ...)."},{"name":"text_editor/theme/highlighting/text_color","type":"Color","description":"The script editor's color for text not highlighted by any syntax highlighting rule."},{"name":"text_editor/theme/highlighting/text_selected_color","type":"Color","description":"The script editor's background color for text. This should be set to a translucent color so that it can display on top of other line color modifiers such as [member text_editor/theme/highlighting/current_line_color]."},{"name":"text_editor/theme/highlighting/user_type_color","type":"Color","description":"The script editor's color for user-defined types (using [code]class_name[/code])."},{"name":"text_editor/theme/highlighting/word_highlighted_color","type":"Color","description":"The script editor's color for words highlighted by selecting them. Only visible if [member text_editor/appearance/caret/highlight_all_occurrences] is [code]true[/code]."},{"name":"text_editor/theme/line_spacing","type":"int","description":"The vertical line separation used in text editors, in pixels."},{"name":"version_control/ssh_private_key_path","type":"String","description":"Path to private SSH key file for the editor's Version Control integration credentials."},{"name":"version_control/ssh_public_key_path","type":"String","description":"Path to public SSH key file for the editor's Version Control integration credentials."},{"name":"version_control/username","type":"String","description":"Default username for editor's Version Control integration."}],"methods":[{"name":"add_property_info","signature":"add_property_info(info: Dictionary) -> void","description":"Adds a custom property info to a property. The dictionary must contain:\n\t\t\t\t- name:  (the name of the property)\n\t\t\t\t- type:  (see [enum Variant.Type])\n\t\t\t\t- optionally hint:  (see [enum PropertyHint]) and hint_string: \n\t\t\t\t\n\t\t\t\t\n\t\t\t\tvar settings = EditorInterface.get_editor_settings()\n\t\t\t\tsettings.set(\"category/property_name\", 0)\n\n\t\t\t\tvar property_info = {\n\t\t\t\t    \"name\": \"category/property_name\",\n\t\t\t\t    \"type\": TYPE_INT,\n\t\t\t\t    \"hint\": PROPERTY_HINT_ENUM,\n\t\t\t\t    \"hint_string\": \"one,two,three\"\n\t\t\t\t}\n\n\t\t\t\tsettings.add_property_info(property_info)\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tvar settings = GetEditorInterface().GetEditorSettings();\n\t\t\t\tsettings.Set(\"category/property_name\", 0);\n\n\t\t\t\tvar propertyInfo = new Godot.Collections.Dictionary\n\t\t\t\t{\n\t\t\t\t    {\"name\", \"category/propertyName\"},\n\t\t\t\t    {\"type\", Variant.Type.Int},\n\t\t\t\t    {\"hint\", PropertyHint.Enum},\n\t\t\t\t    {\"hint_string\", \"one,two,three\"}\n\t\t\t\t};\n\n\t\t\t\tsettings.AddPropertyInfo(propertyInfo);\n\t\t\t\t\n\t\t\t\t","returnType":"void"},{"name":"check_changed_settings_in_group","signature":"check_changed_settings_in_group(setting_prefix: String) -> bool","description":"Checks if any settings with the prefix [param setting_prefix] exist in the set of changed settings. See also [method get_changed_settings].","returnType":"bool"},{"name":"erase","signature":"erase(property: String) -> void","description":"Erases the setting whose name is specified by [param property].","returnType":"void"},{"name":"get_changed_settings","signature":"get_changed_settings() -> PackedStringArray","description":"Gets an array of the settings which have been changed since the last save. Note that internally changed_settings is cleared after a successful save, so generally the most appropriate place to use this method is when processing [constant NOTIFICATION_EDITOR_SETTINGS_CHANGED].","returnType":"PackedStringArray"},{"name":"get_favorites","signature":"get_favorites() -> PackedStringArray","description":"Returns the list of favorite files and directories for this project.","returnType":"PackedStringArray"},{"name":"get_project_metadata","signature":"get_project_metadata(section: String, key: String, default: Variant) -> Variant","description":"Returns project-specific metadata for the [param section] and [param key] specified. If the metadata doesn't exist, [param default] will be returned instead. See also [method set_project_metadata].","returnType":"Variant"},{"name":"get_recent_dirs","signature":"get_recent_dirs() -> PackedStringArray","description":"Returns the list of recently visited folders in the file dialog for this project.","returnType":"PackedStringArray"},{"name":"get_setting","signature":"get_setting(name: String) -> Variant","description":"Returns the value of the setting specified by [param name]. This is equivalent to using [method Object.get] on the EditorSettings instance.","returnType":"Variant"},{"name":"has_setting","signature":"has_setting(name: String) -> bool","description":"Returns true if the setting specified by [param name] exists, false otherwise.","returnType":"bool"},{"name":"mark_setting_changed","signature":"mark_setting_changed(setting: String) -> void","description":"Marks the passed editor setting as being changed, see [method get_changed_settings]. Only settings which exist (see [method has_setting]) will be accepted.","returnType":"void"},{"name":"set_builtin_action_override","signature":"set_builtin_action_override(name: String, actions_list: InputEvent[]) -> void","description":"Overrides the built-in editor action [param name] with the input actions defined in [param actions_list].","returnType":"void"},{"name":"set_favorites","signature":"set_favorites(dirs: PackedStringArray) -> void","description":"Sets the list of favorite files and directories for this project.","returnType":"void"},{"name":"set_initial_value","signature":"set_initial_value(name: StringName, value: Variant, update_current: bool) -> void","description":"Sets the initial value of the setting specified by [param name] to [param value]. This is used to provide a value for the Revert button in the Editor Settings. If [param update_current] is true, the setting is reset to [param value] as well.","returnType":"void"},{"name":"set_project_metadata","signature":"set_project_metadata(section: String, key: String, data: Variant) -> void","description":"Sets project-specific metadata with the [param section], [param key] and [param data] specified. This metadata is stored outside the project folder and therefore won't be checked into version control. See also [method get_project_metadata].","returnType":"void"},{"name":"set_recent_dirs","signature":"set_recent_dirs(dirs: PackedStringArray) -> void","description":"Sets the list of recently visited folders in the file dialog for this project.","returnType":"void"},{"name":"set_setting","signature":"set_setting(name: String, value: Variant) -> void","description":"Sets the [param value] of the setting specified by [param name]. This is equivalent to using [method Object.set] on the EditorSettings instance.","returnType":"void"}],"signals":[{"name":"settings_changed","description":"Emitted after any editor setting has changed."}]},"EditorSpinSlider":{"name":"EditorSpinSlider","description":"Godot editor's control for editing numeric values.","inherits":"Range","properties":[{"name":"editing_integer","type":"bool","description":"If [code]true[/code], the [EditorSpinSlider] is considered to be editing an integer value. If [code]false[/code], the [EditorSpinSlider] is considered to be editing a floating-point value. This is used to determine whether a slider should be drawn. The slider is only drawn for floats; integers use up-down arrows similar to [SpinBox] instead."},{"name":"flat","type":"bool","description":"If [code]true[/code], the slider will not draw background."},{"name":"hide_slider","type":"bool","description":"If [code]true[/code], the slider and up/down arrows are hidden."},{"name":"label","type":"String","description":"The text that displays to the left of the value."},{"name":"read_only","type":"bool","description":"If [code]true[/code], the slider can't be interacted with."},{"name":"suffix","type":"String","description":"The suffix to display after the value (in a faded color). This should generally be a plural word. You may have to use an abbreviation if the suffix is too long to be displayed."}],"methods":[],"signals":[{"name":"grabbed","description":"Emitted when the spinner/slider is grabbed."},{"name":"ungrabbed","description":"Emitted when the spinner/slider is ungrabbed."},{"name":"updown_pressed","description":"Emitted when the updown button is pressed."},{"name":"value_focus_entered","description":"Emitted when the value form gains focus."},{"name":"value_focus_exited","description":"Emitted when the value form loses focus."}]},"EditorSyntaxHighlighter":{"name":"EditorSyntaxHighlighter","description":"Base class for  used by the .","inherits":"SyntaxHighlighter","properties":[],"methods":[{"name":"_get_name","signature":"_get_name() -> String","description":"Virtual method which can be overridden to return the syntax highlighter name.","returnType":"String"},{"name":"_get_supported_languages","signature":"_get_supported_languages() -> PackedStringArray","description":"Virtual method which can be overridden to return the supported language names.","returnType":"PackedStringArray"}],"signals":[]},"EditorToaster":{"name":"EditorToaster","description":"Manages toast notifications within the editor.","inherits":"HBoxContainer","properties":[],"methods":[{"name":"push_toast","signature":"push_toast(message: String, severity: int, tooltip: String) -> void","description":"Pushes a toast notification to the editor for display.","returnType":"void"}],"signals":[]},"EditorTranslationParserPlugin":{"name":"EditorTranslationParserPlugin","description":"Plugin for adding custom parsers to extract strings that are to be translated from custom files (.csv, .json etc.).","inherits":"RefCounted","properties":[],"methods":[{"name":"_get_recognized_extensions","signature":"_get_recognized_extensions() -> PackedStringArray","description":"Gets the list of file extensions to associate with this parser, e.g. [\"csv\"].","returnType":"PackedStringArray"},{"name":"_parse_file","signature":"_parse_file(path: String) -> PackedStringArray[]","description":"Override this method to define a custom parsing logic to extract the translatable strings.","returnType":"PackedStringArray[]"}],"signals":[]},"EditorUndoRedoManager":{"name":"EditorUndoRedoManager","description":"Manages undo history of scenes opened in the editor.","inherits":"Object","properties":[],"methods":[{"name":"add_do_method","signature":"add_do_method(object: Object, method: StringName) -> void","description":"Register a method that will be called when the action is committed (i.e. the \"do\" action).\n\t\t\t\tIf this is the first operation, the [param object] will be used to deduce target undo history.","returnType":"void"},{"name":"add_do_property","signature":"add_do_property(object: Object, property: StringName, value: Variant) -> void","description":"Register a property value change for \"do\".\n\t\t\t\tIf this is the first operation, the [param object] will be used to deduce target undo history.","returnType":"void"},{"name":"add_do_reference","signature":"add_do_reference(object: Object) -> void","description":"Register a reference for \"do\" that will be erased if the \"do\" history is lost. This is useful mostly for new nodes created for the \"do\" call. Do not use for resources.","returnType":"void"},{"name":"add_undo_method","signature":"add_undo_method(object: Object, method: StringName) -> void","description":"Register a method that will be called when the action is undone (i.e. the \"undo\" action).\n\t\t\t\tIf this is the first operation, the [param object] will be used to deduce target undo history.","returnType":"void"},{"name":"add_undo_property","signature":"add_undo_property(object: Object, property: StringName, value: Variant) -> void","description":"Register a property value change for \"undo\".\n\t\t\t\tIf this is the first operation, the [param object] will be used to deduce target undo history.","returnType":"void"},{"name":"add_undo_reference","signature":"add_undo_reference(object: Object) -> void","description":"Register a reference for \"undo\" that will be erased if the \"undo\" history is lost. This is useful mostly for nodes removed with the \"do\" call (not the \"undo\" call!).","returnType":"void"},{"name":"clear_history","signature":"clear_history(id: int, increase_version: bool) -> void","description":"Clears the given undo history. You can clear history for a specific scene, global history, or for all scenes at once if [param id] is [constant INVALID_HISTORY].\n\t\t\t\tIf [param increase_version] is true, the undo history version will be increased, marking it as unsaved. Useful for operations that modify the scene, but don't support undo.\n\t\t\t\t\n\t\t\t\tvar scene_root = EditorInterface.get_edited_scene_root()\n\t\t\t\tvar undo_redo = EditorInterface.get_editor_undo_redo()\n\t\t\t\tundo_redo.clear_history(undo_redo.get_object_history_id(scene_root))\n\t\t\t\t\n\t\t\t\tNote: If you want to mark an edited scene as unsaved without clearing its history, use [method EditorInterface.mark_scene_as_unsaved] instead.","returnType":"void"},{"name":"commit_action","signature":"commit_action(execute: bool) -> void","description":"Commits the action. If [param execute] is true (default), all \"do\" methods/properties are called/set when this function is called.","returnType":"void"},{"name":"create_action","signature":"create_action(name: String, merge_mode: int, custom_context: Object, backward_undo_ops: bool) -> void","description":"Create a new action. After this is called, do all your calls to [method add_do_method], [method add_undo_method], [method add_do_property], and [method add_undo_property], then commit the action with [method commit_action].\n\t\t\t\tThe way actions are merged is dictated by the [param merge_mode] argument. See [enum UndoRedo.MergeMode] for details.\n\t\t\t\tIf [param custom_context] object is provided, it will be used for deducing target history (instead of using the first operation).\n\t\t\t\tThe way undo operation are ordered in actions is dictated by [param backward_undo_ops]. When [param backward_undo_ops] is false undo option are ordered in the same order they were added. Which means the first operation to be added will be the first to be undone.","returnType":"void"},{"name":"force_fixed_history","signature":"force_fixed_history() -> void","description":"Forces the next operation (e.g. [method add_do_method]) to use the action's history rather than guessing it from the object. This is sometimes needed when a history can't be correctly determined, like for a nested resource that doesn't have a path yet.\n\t\t\t\tThis method should only be used when absolutely necessary, otherwise it might cause invalid history state. For most of complex cases, the custom_context parameter of [method create_action] is sufficient.","returnType":"void"},{"name":"get_history_undo_redo","signature":"get_history_undo_redo(id: int) -> UndoRedo","description":"Returns the  object associated with the given history [param id].\n\t\t\t\t[param id] above 0 are mapped to the opened scene tabs (but it doesn't match their order). [param id] of 0 or lower have special meaning (see [enum SpecialHistory]).\n\t\t\t\tBest used with [method get_object_history_id]. This method is only provided in case you need some more advanced methods of  (but keep in mind that directly operating on the  object might affect editor's stability).","returnType":"UndoRedo"},{"name":"get_object_history_id","signature":"get_object_history_id(object: Object) -> int","description":"Returns the history ID deduced from the given [param object]. It can be used with [method get_history_undo_redo].","returnType":"int"},{"name":"is_committing_action","signature":"is_committing_action() -> bool","description":"Returns true if the  is currently committing the action, i.e. running its \"do\" method or property change (see [method commit_action]).","returnType":"bool"}],"signals":[{"name":"history_changed","description":"Emitted when the list of actions in any history has changed, either when an action is committed or a history is cleared."},{"name":"version_changed","description":"Emitted when the version of any history has changed as a result of undo or redo call."}]},"EditorVCSInterface":{"name":"EditorVCSInterface","description":"Version Control System (VCS) interface, which reads and writes to the local VCS in use.","inherits":"Object","properties":[],"methods":[{"name":"_checkout_branch","signature":"_checkout_branch(branch_name: String) -> bool","description":"Checks out a [param branch_name] in the VCS.","returnType":"bool"},{"name":"_commit","signature":"_commit(msg: String) -> void","description":"Commits the currently staged changes and applies the commit [param msg] to the resulting commit.","returnType":"void"},{"name":"_create_branch","signature":"_create_branch(branch_name: String) -> void","description":"Creates a new branch named [param branch_name] in the VCS.","returnType":"void"},{"name":"_create_remote","signature":"_create_remote(remote_name: String, remote_url: String) -> void","description":"Creates a new remote destination with name [param remote_name] and points it to [param remote_url]. This can be an HTTPS remote or an SSH remote.","returnType":"void"},{"name":"_discard_file","signature":"_discard_file(file_path: String) -> void","description":"Discards the changes made in a file present at [param file_path].","returnType":"void"},{"name":"_fetch","signature":"_fetch(remote: String) -> void","description":"Fetches new changes from the [param remote], but doesn't write changes to the current working directory. Equivalent to git fetch.","returnType":"void"},{"name":"_get_branch_list","signature":"_get_branch_list() -> String[]","description":"Gets an instance of an  of s containing available branch names in the VCS.","returnType":"String[]"},{"name":"_get_current_branch_name","signature":"_get_current_branch_name() -> String","description":"Gets the current branch name defined in the VCS.","returnType":"String"},{"name":"_get_diff","signature":"_get_diff(identifier: String, area: int) -> Dictionary[]","description":"Returns an array of  items (see [method create_diff_file], [method create_diff_hunk], [method create_diff_line], [method add_line_diffs_into_diff_hunk] and [method add_diff_hunks_into_diff_file]), each containing information about a diff. If [param identifier] is a file path, returns a file diff, and if it is a commit identifier, then returns a commit diff.","returnType":"Dictionary[]"},{"name":"_get_line_diff","signature":"_get_line_diff(file_path: String, text: String) -> Dictionary[]","description":"Returns an  of  items (see [method create_diff_hunk]), each containing a line diff between a file at [param file_path] and the [param text] which is passed in.","returnType":"Dictionary[]"},{"name":"_get_modified_files_data","signature":"_get_modified_files_data() -> Dictionary[]","description":"Returns an  of  items (see [method create_status_file]), each containing the status data of every modified file in the project folder.","returnType":"Dictionary[]"},{"name":"_get_previous_commits","signature":"_get_previous_commits(max_commits: int) -> Dictionary[]","description":"Returns an  of  items (see [method create_commit]), each containing the data for a past commit.","returnType":"Dictionary[]"},{"name":"_get_remotes","signature":"_get_remotes() -> String[]","description":"Returns an  of s, each containing the name of a remote configured in the VCS.","returnType":"String[]"},{"name":"_get_vcs_name","signature":"_get_vcs_name() -> String","description":"Returns the name of the underlying VCS provider.","returnType":"String"},{"name":"_initialize","signature":"_initialize(project_path: String) -> bool","description":"Initializes the VCS plugin when called from the editor. Returns whether or not the plugin was successfully initialized. A VCS project is initialized at [param project_path].","returnType":"bool"},{"name":"_pull","signature":"_pull(remote: String) -> void","description":"Pulls changes from the remote. This can give rise to merge conflicts.","returnType":"void"},{"name":"_push","signature":"_push(remote: String, force: bool) -> void","description":"Pushes changes to the [param remote]. If [param force] is true, a force push will override the change history already present on the remote.","returnType":"void"},{"name":"_remove_branch","signature":"_remove_branch(branch_name: String) -> void","description":"Remove a branch from the local VCS.","returnType":"void"},{"name":"_remove_remote","signature":"_remove_remote(remote_name: String) -> void","description":"Remove a remote from the local VCS.","returnType":"void"},{"name":"_set_credentials","signature":"_set_credentials(username: String, password: String, ssh_public_key_path: String, ssh_private_key_path: String, ssh_passphrase: String) -> void","description":"Set user credentials in the underlying VCS. [param username] and [param password] are used only during HTTPS authentication unless not already mentioned in the remote URL. [param ssh_public_key_path], [param ssh_private_key_path], and [param ssh_passphrase] are only used during SSH authentication.","returnType":"void"},{"name":"_shut_down","signature":"_shut_down() -> bool","description":"Shuts down VCS plugin instance. Called when the user either closes the editor or shuts down the VCS plugin through the editor UI.","returnType":"bool"},{"name":"_stage_file","signature":"_stage_file(file_path: String) -> void","description":"Stages the file present at [param file_path] to the staged area.","returnType":"void"},{"name":"_unstage_file","signature":"_unstage_file(file_path: String) -> void","description":"Unstages the file present at [param file_path] from the staged area to the unstaged area.","returnType":"void"},{"name":"add_diff_hunks_into_diff_file","signature":"add_diff_hunks_into_diff_file(diff_file: Dictionary, diff_hunks: Dictionary[]) -> Dictionary","description":"Helper function to add an array of [param diff_hunks] into a [param diff_file].","returnType":"Dictionary"},{"name":"add_line_diffs_into_diff_hunk","signature":"add_line_diffs_into_diff_hunk(diff_hunk: Dictionary, line_diffs: Dictionary[]) -> Dictionary","description":"Helper function to add an array of [param line_diffs] into a [param diff_hunk].","returnType":"Dictionary"},{"name":"create_commit","signature":"create_commit(msg: String, author: String, id: String, unix_timestamp: int, offset_minutes: int) -> Dictionary","description":"Helper function to create a commit  item. [param msg] is the commit message of the commit. [param author] is a single human-readable string containing all the author's details, e.g. the email and name configured in the VCS. [param id] is the identifier of the commit, in whichever format your VCS may provide an identifier to commits. [param unix_timestamp] is the UTC Unix timestamp of when the commit was created. [param offset_minutes] is the timezone offset in minutes, recorded from the system timezone where the commit was created.","returnType":"Dictionary"},{"name":"create_diff_file","signature":"create_diff_file(new_file: String, old_file: String) -> Dictionary","description":"Helper function to create a  for storing old and new diff file paths.","returnType":"Dictionary"},{"name":"create_diff_hunk","signature":"create_diff_hunk(old_start: int, new_start: int, old_lines: int, new_lines: int) -> Dictionary","description":"Helper function to create a  for storing diff hunk data. [param old_start] is the starting line number in old file. [param new_start] is the starting line number in new file. [param old_lines] is the number of lines in the old file. [param new_lines] is the number of lines in the new file.","returnType":"Dictionary"},{"name":"create_diff_line","signature":"create_diff_line(new_line_no: int, old_line_no: int, content: String, status: String) -> Dictionary","description":"Helper function to create a  for storing a line diff. [param new_line_no] is the line number in the new file (can be -1 if the line is deleted). [param old_line_no] is the line number in the old file (can be -1 if the line is added). [param content] is the diff text. [param status] is a single character string which stores the line origin.","returnType":"Dictionary"},{"name":"create_status_file","signature":"create_status_file(file_path: String, change_type: int, area: int) -> Dictionary","description":"Helper function to create a  used by editor to read the status of a file.","returnType":"Dictionary"},{"name":"popup_error","signature":"popup_error(msg: String) -> void","description":"Pops up an error message in the editor which is shown as coming from the underlying VCS. Use this to show VCS specific error messages.","returnType":"void"}],"signals":[]},"EncodedObjectAsID":{"name":"EncodedObjectAsID","description":"Holds a reference to an 's instance ID.","inherits":"RefCounted","properties":[{"name":"object_id","type":"int","description":"The [Object] identifier stored in this [EncodedObjectAsID] instance. The object instance can be retrieved with [method @GlobalScope.instance_from_id]."}],"methods":[],"signals":[]},"Engine":{"name":"Engine","description":"Provides access to engine properties.","inherits":"Object","properties":[{"name":"max_fps","type":"int","description":"The maximum number of frames that can be rendered every second (FPS). A value of [code]0[/code] means the framerate is uncapped.\n\t\t\tLimiting the FPS can be useful to reduce the host machine's power consumption, which reduces heat, noise emissions, and improves battery life.\n\t\t\tIf [member ProjectSettings.display/window/vsync/vsync_mode] is [b]Enabled[/b] or [b]Adaptive[/b], the setting takes precedence and the max FPS number cannot exceed the monitor's refresh rate.\n\t\t\tIf [member ProjectSettings.display/window/vsync/vsync_mode] is [b]Enabled[/b], on monitors with variable refresh rate enabled (G-Sync/FreeSync), using an FPS limit a few frames lower than the monitor's refresh rate will [url=https://blurbusters.com/howto-low-lag-vsync-on/]reduce input lag while avoiding tearing[/url].\n\t\t\tSee also [member physics_ticks_per_second] and [member ProjectSettings.application/run/max_fps].\n\t\t\t[b]Note:[/b] The actual number of frames per second may still be below this value if the CPU or GPU cannot keep up with the project's logic and rendering.\n\t\t\t[b]Note:[/b] If [member ProjectSettings.display/window/vsync/vsync_mode] is [b]Disabled[/b], limiting the FPS to a high value that can be consistently reached on the system can reduce input lag compared to an uncapped framerate. Since this works by ensuring the GPU load is lower than 100%, this latency reduction is only effective in GPU-bottlenecked scenarios, not CPU-bottlenecked scenarios."},{"name":"max_physics_steps_per_frame","type":"int","description":"The maximum number of physics steps that can be simulated each rendered frame.\n\t\t\t[b]Note:[/b] The default value is tuned to prevent expensive physics simulations from triggering even more expensive simulations indefinitely. However, the game will appear to slow down if the rendering FPS is less than [code]1 / max_physics_steps_per_frame[/code] of [member physics_ticks_per_second]. This occurs even if [code]delta[/code] is consistently used in physics calculations. To avoid this, increase [member max_physics_steps_per_frame] if you have increased [member physics_ticks_per_second] significantly above its default value."},{"name":"physics_jitter_fix","type":"float","description":"How much physics ticks are synchronized with real time. If [code]0[/code] or less, the ticks are fully synchronized. Higher values cause the in-game clock to deviate more from the real clock, but they smooth out framerate jitters.\n\t\t\t[b]Note:[/b] The default value of [code]0.5[/code] should be good enough for most cases; values above [code]2[/code] could cause the game to react to dropped frames with a noticeable delay and are not recommended.\n\t\t\t[b]Note:[/b] When using a custom physics interpolation solution, or within a network game, it's recommended to disable the physics jitter fix by setting this property to [code]0[/code]."},{"name":"physics_ticks_per_second","type":"int","description":"The number of fixed iterations per second. This controls how often physics simulation and [method Node._physics_process] methods are run. This value should generally always be set to [code]60[/code] or above, as Godot doesn't interpolate the physics step. As a result, values lower than [code]60[/code] will look stuttery. This value can be increased to make input more reactive or work around collision tunneling issues, but keep in mind doing so will increase CPU usage. See also [member max_fps] and [member ProjectSettings.physics/common/physics_ticks_per_second].\n\t\t\t[b]Note:[/b] Only [member max_physics_steps_per_frame] physics ticks may be simulated per rendered frame at most. If more physics ticks have to be simulated per rendered frame to keep up with rendering, the project will appear to slow down (even if [code]delta[/code] is used consistently in physics calculations). Therefore, it is recommended to also increase [member max_physics_steps_per_frame] if increasing [member physics_ticks_per_second] significantly above its default value."},{"name":"print_error_messages","type":"bool","description":"If [code]false[/code], stops printing error and warning messages to the console and editor Output log. This can be used to hide error and warning messages during unit test suite runs. This property is equivalent to the [member ProjectSettings.application/run/disable_stderr] project setting.\n\t\t\t[b]Note:[/b] This property does not impact the editor's Errors tab when running a project from the editor.\n\t\t\t[b]Warning:[/b] If set to [code]false[/code] anywhere in the project, important error messages may be hidden even if they are emitted from other scripts. In a [code]@tool[/code] script, this will also impact the editor itself. Do [i]not[/i] report bugs before ensuring error messages are enabled (as they are by default)."},{"name":"print_to_stdout","type":"bool","description":"If [code]false[/code], stops printing messages (for example using [method @GlobalScope.print]) to the console, log files, and editor Output log. This property is equivalent to the [member ProjectSettings.application/run/disable_stdout] project setting.\n\t\t\t[b]Note:[/b] This does not stop printing errors or warnings produced by scripts to the console or log files, for more details see [member print_error_messages]."},{"name":"time_scale","type":"float","description":"The speed multiplier at which the in-game clock updates, compared to real time. For example, if set to [code]2.0[/code] the game runs twice as fast, and if set to [code]0.5[/code] the game runs half as fast.\n\t\t\tThis value affects [Timer], [SceneTreeTimer], and all other simulations that make use of [code]delta[/code] time (such as [method Node._process] and [method Node._physics_process]).\n\t\t\t[b]Note:[/b] It's recommended to keep this property above [code]0.0[/code], as the game may behave unexpectedly otherwise.\n\t\t\t[b]Note:[/b] This does not affect audio playback speed. Use [member AudioServer.playback_speed_scale] to adjust audio playback speed independently of [member Engine.time_scale].\n\t\t\t[b]Note:[/b] This does not automatically adjust [member physics_ticks_per_second]. With values above [code]1.0[/code] physics simulation may become less precise, as each physics tick will stretch over a larger period of engine time. If you're modifying [member Engine.time_scale] to speed up simulation by a large factor, consider also increasing [member physics_ticks_per_second] to make the simulation more reliable."}],"methods":[{"name":"get_architecture_name","signature":"get_architecture_name() -> String","description":"Returns the name of the CPU architecture the Godot binary was built for. Possible return values include \"x86_64\", \"x86_32\", \"arm64\", \"arm32\", \"rv64\", \"riscv\", \"ppc64\", \"ppc\", \"wasm64\", and \"wasm32\".\n\t\t\t\tTo detect whether the current build is 64-bit, or the type of architecture, don't use the architecture name. Instead, use [method OS.has_feature] to check for the \"64\" feature tag, or tags such as \"x86\" or \"arm\". See the [url=$DOCS_URL/tutorials/export/feature_tags.html]Feature Tags documentation for more details.\n\t\t\t\tNote: This method does not return the name of the system's CPU architecture (like [method OS.get_processor_name]). For example, when running an x86_32 Godot binary on an x86_64 system, the returned value will still be \"x86_32\".","returnType":"String"},{"name":"get_author_info","signature":"get_author_info() -> Dictionary","description":"Returns the engine author information as a , where each entry is an  of strings with the names of notable contributors to the Godot Engine: lead_developers, founders, project_managers, and developers.","returnType":"Dictionary"},{"name":"get_copyright_info","signature":"get_copyright_info() -> Dictionary[]","description":"Returns an  of dictionaries with copyright information for every component of Godot's source code.\n\t\t\t\tEvery  contains a name identifier, and a parts array of dictionaries. It describes the component in detail with the following entries:\n\t\t\t\t- files -  of file paths from the source code affected by this component;\n\t\t\t\t- copyright -  of owners of this component;\n\t\t\t\t- license - The license applied to this component (such as \"[url=https://en.wikipedia.org/wiki/MIT_License#Ambiguity_and_variants]Expat\" or \"[url=https://creativecommons.org/licenses/by/4.0/]CC-BY-4.0\").","returnType":"Dictionary[]"},{"name":"get_donor_info","signature":"get_donor_info() -> Dictionary","description":"Returns a  of categorized donor names. Each entry is an  of strings:\n\t\t\t\t{platinum_sponsors, gold_sponsors, silver_sponsors, bronze_sponsors, mini_sponsors, gold_donors, silver_donors, bronze_donors}","returnType":"Dictionary"},{"name":"get_frames_drawn","signature":"get_frames_drawn() -> int","description":"Returns the total number of frames drawn since the engine started.\n\t\t\t\tNote: On headless platforms, or if rendering is disabled with --disable-render-loop via command line, this method always returns 0. See also [method get_process_frames].","returnType":"int"},{"name":"get_frames_per_second","signature":"get_frames_per_second() -> float","description":"Returns the average frames rendered every second (FPS), also known as the framerate.","returnType":"float"},{"name":"get_license_info","signature":"get_license_info() -> Dictionary","description":"Returns a  of licenses used by Godot and included third party components. Each entry is a license name (such as \"[url=https://en.wikipedia.org/wiki/MIT_License#Ambiguity_and_variants]Expat\") and its associated text.","returnType":"Dictionary"},{"name":"get_license_text","signature":"get_license_text() -> String","description":"Returns the full Godot license text.","returnType":"String"},{"name":"get_main_loop","signature":"get_main_loop() -> MainLoop","description":"Returns the instance of the . This is usually the main  and is the same as [method Node.get_tree].\n\t\t\t\tNote: The type instantiated as the main loop can changed with [member ProjectSettings.application/run/main_loop_type].","returnType":"MainLoop"},{"name":"get_physics_frames","signature":"get_physics_frames() -> int","description":"Returns the total number of frames passed since the engine started. This number is increased every physics frame. See also [method get_process_frames].\n\t\t\t\tThis method can be used to run expensive logic less often without relying on a :\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tfunc _physics_process(_delta):\n\t\t\t\t    if Engine.get_physics_frames() % 2 == 0:\n\t\t\t\t        pass # Run expensive logic only once every 2 physics frames here.\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tpublic override void _PhysicsProcess(double delta)\n\t\t\t\t{\n\t\t\t\t    base._PhysicsProcess(delta);\n\n\t\t\t\t    if (Engine.GetPhysicsFrames() % 2 == 0)\n\t\t\t\t    {\n\t\t\t\t        // Run expensive logic only once every 2 physics frames here.\n\t\t\t\t    }\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t","returnType":"int"},{"name":"get_physics_interpolation_fraction","signature":"get_physics_interpolation_fraction() -> float","description":"Returns the fraction through the current physics tick we are at the time of rendering the frame. This can be used to implement fixed timestep interpolation.","returnType":"float"},{"name":"get_process_frames","signature":"get_process_frames() -> int","description":"Returns the total number of frames passed since the engine started. This number is increased every process frame, regardless of whether the render loop is enabled. See also [method get_frames_drawn] and [method get_physics_frames].\n\t\t\t\tThis method can be used to run expensive logic less often without relying on a :\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tfunc _process(_delta):\n\t\t\t\t    if Engine.get_process_frames() % 5 == 0:\n\t\t\t\t        pass # Run expensive logic only once every 5 process (render) frames here.\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tpublic override void _Process(double delta)\n\t\t\t\t{\n\t\t\t\t    base._Process(delta);\n\n\t\t\t\t    if (Engine.GetProcessFrames() % 5 == 0)\n\t\t\t\t    {\n\t\t\t\t        // Run expensive logic only once every 5 process (render) frames here.\n\t\t\t\t    }\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t","returnType":"int"},{"name":"get_script_language","signature":"get_script_language(index: int) -> ScriptLanguage","description":"Returns an instance of a  with the given [param index].","returnType":"ScriptLanguage"},{"name":"get_script_language_count","signature":"get_script_language_count() -> int","description":"Returns the number of available script languages. Use with [method get_script_language].","returnType":"int"},{"name":"get_singleton","signature":"get_singleton(name: StringName) -> Object","description":"Returns the global singleton with the given [param name], or null if it does not exist. Often used for plugins. See also [method has_singleton] and [method get_singleton_list].\n\t\t\t\tNote: Global singletons are not the same as autoloaded nodes, which are configurable in the project settings.","returnType":"Object"},{"name":"get_singleton_list","signature":"get_singleton_list() -> PackedStringArray","description":"Returns a list of names of all available global singletons. See also [method get_singleton].","returnType":"PackedStringArray"},{"name":"get_version_info","signature":"get_version_info() -> Dictionary","description":"Returns the current engine version information as a  containing the following entries:\n\t\t\t\t- major - Major version number as an int;\n\t\t\t\t- minor - Minor version number as an int;\n\t\t\t\t- patch - Patch version number as an int;\n\t\t\t\t- hex - Full version encoded as a hexadecimal int with one byte (2 hex digits) per number (see example below);\n\t\t\t\t- status - Status (such as \"beta\", \"rc1\", \"rc2\", \"stable\", etc.) as a String;\n\t\t\t\t- build - Build name (e.g. \"custom_build\") as a String;\n\t\t\t\t- hash - Full Git commit hash as a String;\n\t\t\t\t- timestamp - Holds the Git commit date UNIX timestamp in seconds as an int, or 0 if unavailable;\n\t\t\t\t- string - major, minor, patch, status, and build in a single String.\n\t\t\t\tThe hex value is encoded as follows, from left to right: one byte for the major, one byte for the minor, one byte for the patch version. For example, \"3.1.12\" would be 0x03010C.\n\t\t\t\tNote: The hex value is still an  internally, and printing it will give you its decimal representation, which is not particularly meaningful. Use hexadecimal literals for quick version comparisons from code:\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tif Engine.get_version_info().hex &gt;= 0x040100:\n\t\t\t\t    pass # Do things specific to version 4.1 or later.\n\t\t\t\telse:\n\t\t\t\t    pass # Do things specific to versions before 4.1.\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tif ((int)Engine.GetVersionInfo()[\"hex\"] &gt;= 0x040100)\n\t\t\t\t{\n\t\t\t\t    // Do things specific to version 4.1 or later.\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t    // Do things specific to versions before 4.1.\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t","returnType":"Dictionary"},{"name":"get_write_movie_path","signature":"get_write_movie_path() -> String","description":"Returns the path to the 's output file, or an empty string if the engine wasn't started in Movie Maker mode. The default path can be changed in [member ProjectSettings.editor/movie_writer/movie_file].","returnType":"String"},{"name":"has_singleton","signature":"has_singleton(name: StringName) -> bool","description":"Returns true if a singleton with the given [param name] exists in the global scope. See also [method get_singleton].\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tprint(Engine.has_singleton(\"OS\"))          # Prints true\n\t\t\t\tprint(Engine.has_singleton(\"Engine\"))      # Prints true\n\t\t\t\tprint(Engine.has_singleton(\"AudioServer\")) # Prints true\n\t\t\t\tprint(Engine.has_singleton(\"Unknown\"))     # Prints false\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tGD.Print(Engine.HasSingleton(\"OS\"));          // Prints True\n\t\t\t\tGD.Print(Engine.HasSingleton(\"Engine\"));      // Prints True\n\t\t\t\tGD.Print(Engine.HasSingleton(\"AudioServer\")); // Prints True\n\t\t\t\tGD.Print(Engine.HasSingleton(\"Unknown\"));     // Prints False\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tNote: Global singletons are not the same as autoloaded nodes, which are configurable in the project settings.","returnType":"bool"},{"name":"is_editor_hint","signature":"is_editor_hint() -> bool","description":"Returns true if the script is currently running inside the editor, otherwise returns false. This is useful for @tool scripts to conditionally draw editor helpers, or prevent accidentally running \"game\" code that would affect the scene state while in the editor:\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tif Engine.is_editor_hint():\n\t\t\t\t    draw_gizmos()\n\t\t\t\telse:\n\t\t\t\t    simulate_physics()\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tif (Engine.IsEditorHint())\n\t\t\t\t    DrawGizmos();\n\t\t\t\telse\n\t\t\t\t    SimulatePhysics();\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tSee [url=$DOCS_URL/tutorials/plugins/running_code_in_the_editor.html]Running code in the editor in the documentation for more information.\n\t\t\t\tNote: To detect whether the script is running on an editor build (such as when pressing F5), use [method OS.has_feature] with the \"editor\" argument instead. OS.has_feature(\"editor\") evaluate to true both when the script is running in the editor and when running the project from the editor, but returns false when run from an exported project.","returnType":"bool"},{"name":"is_embedded_in_editor","signature":"is_embedded_in_editor() -> bool","description":"Returns true if the engine is running embedded in the editor. This is useful to prevent attempting to update window mode or window flags that are not supported when running the project embedded in the editor.","returnType":"bool"},{"name":"is_in_physics_frame","signature":"is_in_physics_frame() -> bool","description":"Returns true if the engine is inside the fixed physics process step of the main loop.\n\t\t\t\t\n\t\t\t\tfunc _enter_tree():\n\t\t\t\t    # Depending on when the node is added to the tree,\n\t\t\t\t    # prints either \"true\" or \"false\".\n\t\t\t\t    print(Engine.is_in_physics_frame())\n\n\t\t\t\tfunc _process(delta):\n\t\t\t\t    print(Engine.is_in_physics_frame()) # Prints false\n\n\t\t\t\tfunc _physics_process(delta):\n\t\t\t\t    print(Engine.is_in_physics_frame()) # Prints true\n\t\t\t\t","returnType":"bool"},{"name":"register_script_language","signature":"register_script_language(language: ScriptLanguage) -> int","description":"Registers a  instance to be available with ScriptServer.\n\t\t\t\tReturns:\n\t\t\t\t- [constant OK] on success;\n\t\t\t\t- [constant ERR_UNAVAILABLE] if ScriptServer has reached the limit and cannot register any new language;\n\t\t\t\t- [constant ERR_ALREADY_EXISTS] if ScriptServer already contains a language with similar extension/name/type.","returnType":"int"},{"name":"register_singleton","signature":"register_singleton(name: StringName, instance: Object) -> void","description":"Registers the given  [param instance] as a singleton, available globally under [param name]. Useful for plugins.","returnType":"void"},{"name":"unregister_script_language","signature":"unregister_script_language(language: ScriptLanguage) -> int","description":"Unregisters the  instance from ScriptServer.\n\t\t\t\tReturns:\n\t\t\t\t- [constant OK] on success;\n\t\t\t\t- [constant ERR_DOES_NOT_EXIST] if the language is not registered in ScriptServer.","returnType":"int"},{"name":"unregister_singleton","signature":"unregister_singleton(name: StringName) -> void","description":"Removes the singleton registered under [param name]. The singleton object is not freed. Only works with user-defined singletons registered with [method register_singleton].","returnType":"void"}],"signals":[]},"EngineDebugger":{"name":"EngineDebugger","description":"Exposes the internal debugger.","inherits":"Object","properties":[],"methods":[{"name":"clear_breakpoints","signature":"clear_breakpoints() -> void","description":"Clears all breakpoints.","returnType":"void"},{"name":"debug","signature":"debug(can_continue: bool, is_error_breakpoint: bool) -> void","description":"Starts a debug break in script execution, optionally specifying whether the program can continue based on [param can_continue] and whether the break was due to a breakpoint.","returnType":"void"},{"name":"get_depth","signature":"get_depth() -> int","description":"Returns the current debug depth.","returnType":"int"},{"name":"get_lines_left","signature":"get_lines_left() -> int","description":"Returns the number of lines that remain.","returnType":"int"},{"name":"has_capture","signature":"has_capture(name: StringName) -> bool","description":"Returns true if a capture with the given name is present otherwise false.","returnType":"bool"},{"name":"has_profiler","signature":"has_profiler(name: StringName) -> bool","description":"Returns true if a profiler with the given name is present otherwise false.","returnType":"bool"},{"name":"insert_breakpoint","signature":"insert_breakpoint(line: int, source: StringName) -> void","description":"Inserts a new breakpoint with the given [param source] and [param line].","returnType":"void"},{"name":"is_active","signature":"is_active() -> bool","description":"Returns true if the debugger is active otherwise false.","returnType":"bool"},{"name":"is_breakpoint","signature":"is_breakpoint(line: int, source: StringName) -> bool","description":"Returns true if the given [param source] and [param line] represent an existing breakpoint.","returnType":"bool"},{"name":"is_profiling","signature":"is_profiling(name: StringName) -> bool","description":"Returns true if a profiler with the given name is present and active otherwise false.","returnType":"bool"},{"name":"is_skipping_breakpoints","signature":"is_skipping_breakpoints() -> bool","description":"Returns true if the debugger is skipping breakpoints otherwise false.","returnType":"bool"},{"name":"line_poll","signature":"line_poll() -> void","description":"Forces a processing loop of debugger events. The purpose of this method is just processing events every now and then when the script might get too busy, so that bugs like infinite loops can be caught.","returnType":"void"},{"name":"profiler_add_frame_data","signature":"profiler_add_frame_data(name: StringName, data: Array) -> void","description":"Calls the add callable of the profiler with given [param name] and [param data].","returnType":"void"},{"name":"profiler_enable","signature":"profiler_enable(name: StringName, enable: bool, arguments: Array) -> void","description":"Calls the toggle callable of the profiler with given [param name] and [param arguments]. Enables/Disables the same profiler depending on [param enable] argument.","returnType":"void"},{"name":"register_message_capture","signature":"register_message_capture(name: StringName, callable: Callable) -> void","description":"Registers a message capture with given [param name]. If [param name] is \"my_message\" then messages starting with \"my_message:\" will be called with the given callable.\n\t\t\t\tThe callable must accept a message string and a data array as argument. The callable should return true if the message is recognized.\n\t\t\t\tNote: The callable will receive the message with the prefix stripped, unlike [method EditorDebuggerPlugin._capture]. See the  description for an example.","returnType":"void"},{"name":"register_profiler","signature":"register_profiler(name: StringName, profiler: EngineProfiler) -> void","description":"Registers a profiler with the given [param name]. See  for more information.","returnType":"void"},{"name":"remove_breakpoint","signature":"remove_breakpoint(line: int, source: StringName) -> void","description":"Removes a breakpoint with the given [param source] and [param line].","returnType":"void"},{"name":"script_debug","signature":"script_debug(language: ScriptLanguage, can_continue: bool, is_error_breakpoint: bool) -> void","description":"Starts a debug break in script execution, optionally specifying whether the program can continue based on [param can_continue] and whether the break was due to a breakpoint.","returnType":"void"},{"name":"send_message","signature":"send_message(message: String, data: Array) -> void","description":"Sends a message with given [param message] and [param data] array.","returnType":"void"},{"name":"set_depth","signature":"set_depth(depth: int) -> void","description":"Sets the current debugging depth.","returnType":"void"},{"name":"set_lines_left","signature":"set_lines_left(lines: int) -> void","description":"Sets the current debugging lines that remain.","returnType":"void"},{"name":"unregister_message_capture","signature":"unregister_message_capture(name: StringName) -> void","description":"Unregisters the message capture with given [param name].","returnType":"void"},{"name":"unregister_profiler","signature":"unregister_profiler(name: StringName) -> void","description":"Unregisters a profiler with given [param name].","returnType":"void"}],"signals":[]},"EngineProfiler":{"name":"EngineProfiler","description":"Base class for creating custom profilers.","inherits":"RefCounted","properties":[],"methods":[{"name":"_add_frame","signature":"_add_frame(data: Array) -> void","description":"Called when data is added to profiler using [method EngineDebugger.profiler_add_frame_data].","returnType":"void"},{"name":"_tick","signature":"_tick(frame_time: float, process_time: float, physics_time: float, physics_frame_time: float) -> void","description":"Called once every engine iteration when the profiler is active with information about the current frame. All time values are in seconds. Lower values represent faster processing times and are therefore considered better.","returnType":"void"},{"name":"_toggle","signature":"_toggle(enable: bool, options: Array) -> void","description":"Called when the profiler is enabled/disabled, along with a set of [param options].","returnType":"void"}],"signals":[]},"Environment":{"name":"Environment","description":"Resource for environment nodes (like ) that define multiple rendering options.","inherits":"Resource","properties":[{"name":"adjustment_brightness","type":"float","description":"The global brightness value of the rendered scene. Effective only if [member adjustment_enabled] is [code]true[/code]."},{"name":"adjustment_color_correction","type":"Texture","description":"The [Texture2D] or [Texture3D] lookup table (LUT) to use for the built-in post-process color grading. Can use a [GradientTexture1D] for a 1-dimensional LUT, or a [Texture3D] for a more complex LUT. Effective only if [member adjustment_enabled] is [code]true[/code]."},{"name":"adjustment_contrast","type":"float","description":"The global contrast value of the rendered scene (default value is 1). Effective only if [member adjustment_enabled] is [code]true[/code]."},{"name":"adjustment_enabled","type":"bool","description":"If [code]true[/code], enables the [code]adjustment_*[/code] properties provided by this resource. If [code]false[/code], modifications to the [code]adjustment_*[/code] properties will have no effect on the rendered scene."},{"name":"adjustment_saturation","type":"float","description":"The global color saturation value of the rendered scene (default value is 1). Effective only if [member adjustment_enabled] is [code]true[/code]."},{"name":"ambient_light_color","type":"Color","description":"The ambient light's [Color]. Only effective if [member ambient_light_sky_contribution] is lower than [code]1.0[/code] (exclusive)."},{"name":"ambient_light_energy","type":"float","description":"The ambient light's energy. The higher the value, the stronger the light. Only effective if [member ambient_light_sky_contribution] is lower than [code]1.0[/code] (exclusive)."},{"name":"ambient_light_sky_contribution","type":"float","description":"Defines the amount of light that the sky brings on the scene. A value of [code]0.0[/code] means that the sky's light emission has no effect on the scene illumination, thus all ambient illumination is provided by the ambient light. On the contrary, a value of [code]1.0[/code] means that [i]all[/i] the light that affects the scene is provided by the sky, thus the ambient light parameter has no effect on the scene.\n\t\t\t[b]Note:[/b] [member ambient_light_sky_contribution] is internally clamped between [code]0.0[/code] and [code]1.0[/code] (inclusive)."},{"name":"ambient_light_source","type":"int","description":"The ambient light source to use for rendering materials and global illumination."},{"name":"background_camera_feed_id","type":"int","description":"The ID of the camera feed to show in the background."},{"name":"background_canvas_max_layer","type":"int","description":"The maximum layer ID to display. Only effective when using the [constant BG_CANVAS] background mode."},{"name":"background_color","type":"Color","description":"The [Color] displayed for clear areas of the scene. Only effective when using the [constant BG_COLOR] background mode."},{"name":"background_energy_multiplier","type":"float","description":"Multiplier for background energy. Increase to make background brighter, decrease to make background dimmer."},{"name":"background_intensity","type":"float","description":"Luminance of background measured in nits (candela per square meter). Only used when [member ProjectSettings.rendering/lights_and_shadows/use_physical_light_units] is enabled. The default value is roughly equivalent to the sky at midday."},{"name":"background_mode","type":"int","description":"The background mode. See [enum BGMode] for possible values."},{"name":"fog_aerial_perspective","type":"float","description":"If set above [code]0.0[/code] (exclusive), blends between the fog's color and the color of the background [Sky], as read from the radiance cubemap. This has a small performance cost when set above [code]0.0[/code]. Must have [member background_mode] set to [constant BG_SKY].\n\t\t\tThis is useful to simulate [url=https://en.wikipedia.org/wiki/Aerial_perspective]aerial perspective[/url] in large scenes with low density fog. However, it is not very useful for high-density fog, as the sky will shine through. When set to [code]1.0[/code], the fog color comes completely from the [Sky]. If set to [code]0.0[/code], aerial perspective is disabled.\n\t\t\tNotice that this does not sample the [Sky] directly, but rather the radiance cubemap. The cubemap is sampled at a mipmap level depending on the depth of the rendered pixel; the farther away, the higher the resolution of the sampled mipmap. This results in the actual color being a blurred version of the sky, with more blur closer to the camera. The highest mipmap resolution is used at a depth of [member Camera3D.far]."},{"name":"fog_density","type":"float","description":"The fog density to be used. This is demonstrated in different ways depending on the [member fog_mode] mode chosen:\n\t\t\t[b]Exponential Fog Mode:[/b] Higher values result in denser fog. The fog rendering is exponential like in real life.\n\t\t\t[b]Depth Fog mode:[/b] The maximum intensity of the deep fog, effect will appear in the distance (relative to the camera). At [code]1.0[/code] the fog will fully obscure the scene, at [code]0.0[/code] the fog will not be visible."},{"name":"fog_depth_begin","type":"float","description":"The fog's depth starting distance from the camera. Only available when [member fog_mode] is set to [constant FOG_MODE_DEPTH]."},{"name":"fog_depth_curve","type":"float","description":"The fog depth's intensity curve. A number of presets are available in the Inspector by right-clicking the curve. Only available when [member fog_mode] is set to [constant FOG_MODE_DEPTH]."},{"name":"fog_depth_end","type":"float","description":"The fog's depth end distance from the camera. If this value is set to [code]0[/code], it will be equal to the current camera's [member Camera3D.far] value. Only available when [member fog_mode] is set to [constant FOG_MODE_DEPTH]."},{"name":"fog_enabled","type":"bool","description":"If [code]true[/code], fog effects are enabled."},{"name":"fog_height","type":"float","description":"The height at which the height fog effect begins."},{"name":"fog_height_density","type":"float","description":"The density used to increase fog as height decreases. To make fog increase as height increases, use a negative value."},{"name":"fog_light_color","type":"Color","description":"The fog's color."},{"name":"fog_light_energy","type":"float","description":"The fog's brightness. Higher values result in brighter fog."},{"name":"fog_mode","type":"int","description":"The fog mode. See [enum FogMode] for possible values."},{"name":"fog_sky_affect","type":"float","description":"The factor to use when affecting the sky with non-volumetric fog. [code]1.0[/code] means that fog can fully obscure the sky. Lower values reduce the impact of fog on sky rendering, with [code]0.0[/code] not affecting sky rendering at all.\n\t\t\t[b]Note:[/b] [member fog_sky_affect] has no visual effect if [member fog_aerial_perspective] is [code]1.0[/code]."},{"name":"fog_sun_scatter","type":"float","description":"If set above [code]0.0[/code], renders the scene's directional light(s) in the fog color depending on the view angle. This can be used to give the impression that the sun is \"piercing\" through the fog."},{"name":"glow_blend_mode","type":"int","description":"The glow blending mode.\n\t\t\t[b]Note:[/b] [member glow_blend_mode] has no effect when using the Compatibility rendering method, due to this rendering method using a simpler glow implementation optimized for low-end devices."},{"name":"glow_bloom","type":"float","description":"The bloom's intensity. If set to a value higher than [code]0[/code], this will make glow visible in areas darker than the [member glow_hdr_threshold]."},{"name":"glow_enabled","type":"bool","description":"If [code]true[/code], the glow effect is enabled. This simulates real world eye/camera behavior where bright pixels bleed onto surrounding pixels.\n\t\t\t[b]Note:[/b] When using the Mobile rendering method, glow looks different due to the lower dynamic range available in the Mobile rendering method.\n\t\t\t[b]Note:[/b] When using the Compatibility rendering method, glow uses a different implementation with some properties being unavailable and hidden from the inspector: [code]glow_levels/*[/code], [member glow_normalized], [member glow_strength], [member glow_blend_mode], [member glow_mix], [member glow_map], and [member glow_map_strength]. This implementation is optimized to run on low-end devices and is less flexible as a result."},{"name":"glow_hdr_luminance_cap","type":"float","description":"The higher threshold of the HDR glow. Areas brighter than this threshold will be clamped for the purposes of the glow effect."},{"name":"glow_hdr_scale","type":"float","description":"The bleed scale of the HDR glow."},{"name":"glow_hdr_threshold","type":"float","description":"The lower threshold of the HDR glow. When using the Mobile rendering method (which only supports a lower dynamic range up to [code]2.0[/code]), this may need to be below [code]1.0[/code] for glow to be visible. A value of [code]0.9[/code] works well in this case. This value also needs to be decreased below [code]1.0[/code] when using glow in 2D, as 2D rendering is performed in SDR."},{"name":"glow_intensity","type":"float","description":"The overall brightness multiplier of the glow effect. When using the Mobile rendering method (which only supports a lower dynamic range up to [code]2.0[/code]), this should be increased to [code]1.5[/code] to compensate."},{"name":"glow_levels/1","type":"float","description":"The intensity of the 1st level of glow. This is the most \"local\" level (least blurry).\n\t\t\t[b]Note:[/b] [member glow_levels/1] has no effect when using the Compatibility rendering method, due to this rendering method using a simpler glow implementation optimized for low-end devices."},{"name":"glow_levels/2","type":"float","description":"The intensity of the 2nd level of glow.\n\t\t\t[b]Note:[/b] [member glow_levels/2] has no effect when using the Compatibility rendering method, due to this rendering method using a simpler glow implementation optimized for low-end devices."},{"name":"glow_levels/3","type":"float","description":"The intensity of the 3rd level of glow.\n\t\t\t[b]Note:[/b] [member glow_levels/3] has no effect when using the Compatibility rendering method, due to this rendering method using a simpler glow implementation optimized for low-end devices."},{"name":"glow_levels/4","type":"float","description":"The intensity of the 4th level of glow.\n\t\t\t[b]Note:[/b] [member glow_levels/4] has no effect when using the Compatibility rendering method, due to this rendering method using a simpler glow implementation optimized for low-end devices."},{"name":"glow_levels/5","type":"float","description":"The intensity of the 5th level of glow.\n\t\t\t[b]Note:[/b] [member glow_levels/5] has no effect when using the Compatibility rendering method, due to this rendering method using a simpler glow implementation optimized for low-end devices."},{"name":"glow_levels/6","type":"float","description":"The intensity of the 6th level of glow.\n\t\t\t[b]Note:[/b] [member glow_levels/6] has no effect when using the Compatibility rendering method, due to this rendering method using a simpler glow implementation optimized for low-end devices."},{"name":"glow_levels/7","type":"float","description":"The intensity of the 7th level of glow. This is the most \"global\" level (blurriest).\n\t\t\t[b]Note:[/b] [member glow_levels/7] has no effect when using the Compatibility rendering method, due to this rendering method using a simpler glow implementation optimized for low-end devices."},{"name":"glow_map","type":"Texture","description":"The texture that should be used as a glow map to [i]multiply[/i] the resulting glow color according to [member glow_map_strength]. This can be used to create a \"lens dirt\" effect. The texture's RGB color channels are used for modulation, but the alpha channel is ignored.\n\t\t\t[b]Note:[/b] The texture will be stretched to fit the screen. Therefore, it's recommended to use a texture with an aspect ratio that matches your project's base aspect ratio (typically 16:9).\n\t\t\t[b]Note:[/b] [member glow_map] has no effect when using the Compatibility rendering method, due to this rendering method using a simpler glow implementation optimized for low-end devices."},{"name":"glow_map_strength","type":"float","description":"How strong of an influence the [member glow_map] should have on the overall glow effect. A strength of [code]0.0[/code] means the glow map has no influence, while a strength of [code]1.0[/code] means the glow map has full influence.\n\t\t\t[b]Note:[/b] If the glow map has black areas, a value of [code]1.0[/code] can also turn off the glow effect entirely in specific areas of the screen.\n\t\t\t[b]Note:[/b] [member glow_map_strength] has no effect when using the Compatibility rendering method, due to this rendering method using a simpler glow implementation optimized for low-end devices."},{"name":"glow_mix","type":"float","description":"When using the [constant GLOW_BLEND_MODE_MIX] [member glow_blend_mode], this controls how much the source image is blended with the glow layer. A value of [code]0.0[/code] makes the glow rendering invisible, while a value of [code]1.0[/code] is equivalent to [constant GLOW_BLEND_MODE_REPLACE].\n\t\t\t[b]Note:[/b] [member glow_mix] has no effect when using the Compatibility rendering method, due to this rendering method using a simpler glow implementation optimized for low-end devices."},{"name":"glow_normalized","type":"bool","description":"If [code]true[/code], glow levels will be normalized so that summed together their intensities equal [code]1.0[/code].\n\t\t\t[b]Note:[/b] [member glow_normalized] has no effect when using the Compatibility rendering method, due to this rendering method using a simpler glow implementation optimized for low-end devices."},{"name":"glow_strength","type":"float","description":"The strength of the glow effect. This applies as the glow is blurred across the screen and increases the distance and intensity of the blur. When using the Mobile rendering method, this should be increased to compensate for the lower dynamic range.\n\t\t\t[b]Note:[/b] [member glow_strength] has no effect when using the Compatibility rendering method, due to this rendering method using a simpler glow implementation optimized for low-end devices."},{"name":"reflected_light_source","type":"int","description":"The reflected (specular) light source."},{"name":"sdfgi_bounce_feedback","type":"float","description":"The energy multiplier applied to light every time it bounces from a surface when using SDFGI. Values greater than [code]0.0[/code] will simulate multiple bounces, resulting in a more realistic appearance. Increasing [member sdfgi_bounce_feedback] generally has no performance impact. See also [member sdfgi_energy].\n\t\t\t[b]Note:[/b] Values greater than [code]0.5[/code] can cause infinite feedback loops and should be avoided in scenes with bright materials.\n\t\t\t[b]Note:[/b] If [member sdfgi_bounce_feedback] is [code]0.0[/code], indirect lighting will not be represented in reflections as light will only bounce one time."},{"name":"sdfgi_cascade0_distance","type":"float","description":"[b]Note:[/b] This property is linked to [member sdfgi_min_cell_size] and [member sdfgi_max_distance]. Changing its value will automatically change those properties as well."},{"name":"sdfgi_cascades","type":"int","description":"The number of cascades to use for SDFGI (between 1 and 8). A higher number of cascades allows displaying SDFGI further away while preserving detail up close, at the cost of performance. When using SDFGI on small-scale levels, [member sdfgi_cascades] can often be decreased between [code]1[/code] and [code]4[/code] to improve performance."},{"name":"sdfgi_enabled","type":"bool","description":"If [code]true[/code], enables signed distance field global illumination for meshes that have their [member GeometryInstance3D.gi_mode] set to [constant GeometryInstance3D.GI_MODE_STATIC]. SDFGI is a real-time global illumination technique that works well with procedurally generated and user-built levels, including in situations where geometry is created during gameplay. The signed distance field is automatically generated around the camera as it moves. Dynamic lights are supported, but dynamic occluders and emissive surfaces are not.\n\t\t\t[b]Note:[/b] SDFGI is only supported in the Forward+ rendering method, not Mobile or Compatibility.\n\t\t\t[b]Performance:[/b] SDFGI is relatively demanding on the GPU and is not suited to low-end hardware such as integrated graphics (consider [LightmapGI] instead). To improve SDFGI performance, enable [member ProjectSettings.rendering/global_illumination/gi/use_half_resolution] in the Project Settings.\n\t\t\t[b]Note:[/b] Meshes should have sufficiently thick walls to avoid light leaks (avoid one-sided walls). For interior levels, enclose your level geometry in a sufficiently large box and bridge the loops to close the mesh."},{"name":"sdfgi_energy","type":"float","description":"The energy multiplier to use for SDFGI. Higher values will result in brighter indirect lighting and reflections. See also [member sdfgi_bounce_feedback]."},{"name":"sdfgi_max_distance","type":"float","description":"The maximum distance at which SDFGI is visible. Beyond this distance, environment lighting or other sources of GI such as [ReflectionProbe] will be used as a fallback.\n\t\t\t[b]Note:[/b] This property is linked to [member sdfgi_min_cell_size] and [member sdfgi_cascade0_distance]. Changing its value will automatically change those properties as well."},{"name":"sdfgi_min_cell_size","type":"float","description":"The cell size to use for the closest SDFGI cascade (in 3D units). Lower values allow SDFGI to be more precise up close, at the cost of making SDFGI updates more demanding. This can cause stuttering when the camera moves fast. Higher values allow SDFGI to cover more ground, while also reducing the performance impact of SDFGI updates.\n\t\t\t[b]Note:[/b] This property is linked to [member sdfgi_max_distance] and [member sdfgi_cascade0_distance]. Changing its value will automatically change those properties as well."},{"name":"sdfgi_normal_bias","type":"float","description":"The normal bias to use for SDFGI probes. Increasing this value can reduce visible streaking artifacts on sloped surfaces, at the cost of increased light leaking."},{"name":"sdfgi_probe_bias","type":"float","description":"The constant bias to use for SDFGI probes. Increasing this value can reduce visible streaking artifacts on sloped surfaces, at the cost of increased light leaking."},{"name":"sdfgi_read_sky_light","type":"bool","description":"If [code]true[/code], SDFGI takes the environment lighting into account. This should be set to [code]false[/code] for interior scenes."},{"name":"sdfgi_use_occlusion","type":"bool","description":"If [code]true[/code], SDFGI uses an occlusion detection approach to reduce light leaking. Occlusion may however introduce dark blotches in certain spots, which may be undesired in mostly outdoor scenes. [member sdfgi_use_occlusion] has a performance impact and should only be enabled when needed."},{"name":"sdfgi_y_scale","type":"int","description":"The Y scale to use for SDFGI cells. Lower values will result in SDFGI cells being packed together more closely on the Y axis. This is used to balance between quality and covering a lot of vertical ground. [member sdfgi_y_scale] should be set depending on how vertical your scene is (and how fast your camera may move on the Y axis)."},{"name":"sky","type":"Sky","description":"The [Sky] resource used for this [Environment]."},{"name":"sky_custom_fov","type":"float","description":"If set to a value greater than [code]0.0[/code], overrides the field of view to use for sky rendering. If set to [code]0.0[/code], the same FOV as the current [Camera3D] is used for sky rendering."},{"name":"sky_rotation","type":"Vector3","description":"The rotation to use for sky rendering."},{"name":"ssao_ao_channel_affect","type":"float","description":"The screen-space ambient occlusion intensity on materials that have an AO texture defined. Values higher than [code]0[/code] will make the SSAO effect visible in areas darkened by AO textures."},{"name":"ssao_detail","type":"float","description":"Sets the strength of the additional level of detail for the screen-space ambient occlusion effect. A high value makes the detail pass more prominent, but it may contribute to aliasing in your final image."},{"name":"ssao_enabled","type":"bool","description":"If [code]true[/code], the screen-space ambient occlusion effect is enabled. This darkens objects' corners and cavities to simulate ambient light not reaching the entire object as in real life. This works well for small, dynamic objects, but baked lighting or ambient occlusion textures will do a better job at displaying ambient occlusion on large static objects. Godot uses a form of SSAO called Adaptive Screen Space Ambient Occlusion which is itself a form of Horizon Based Ambient Occlusion.\n\t\t\t[b]Note:[/b] SSAO is only supported in the Forward+ rendering method, not Mobile or Compatibility."},{"name":"ssao_horizon","type":"float","description":"The threshold for considering whether a given point on a surface is occluded or not represented as an angle from the horizon mapped into the [code]0.0-1.0[/code] range. A value of [code]1.0[/code] results in no occlusion."},{"name":"ssao_intensity","type":"float","description":"The primary screen-space ambient occlusion intensity. Acts as a multiplier for the screen-space ambient occlusion effect. A higher value results in darker occlusion."},{"name":"ssao_light_affect","type":"float","description":"The screen-space ambient occlusion intensity in direct light. In real life, ambient occlusion only applies to indirect light, which means its effects can't be seen in direct light. Values higher than [code]0[/code] will make the SSAO effect visible in direct light."},{"name":"ssao_power","type":"float","description":"The distribution of occlusion. A higher value results in darker occlusion, similar to [member ssao_intensity], but with a sharper falloff."},{"name":"ssao_radius","type":"float","description":"The distance at which objects can occlude each other when calculating screen-space ambient occlusion. Higher values will result in occlusion over a greater distance at the cost of performance and quality."},{"name":"ssao_sharpness","type":"float","description":"The amount that the screen-space ambient occlusion effect is allowed to blur over the edges of objects. Setting too high will result in aliasing around the edges of objects. Setting too low will make object edges appear blurry."},{"name":"ssil_enabled","type":"bool","description":"If [code]true[/code], the screen-space indirect lighting effect is enabled. Screen space indirect lighting is a form of indirect lighting that allows diffuse light to bounce between nearby objects. Screen-space indirect lighting works very similarly to screen-space ambient occlusion, in that it only affects a limited range. It is intended to be used along with a form of proper global illumination like SDFGI or [VoxelGI]. Screen-space indirect lighting is not affected by individual light's [member Light3D.light_indirect_energy].\n\t\t\t[b]Note:[/b] SSIL is only supported in the Forward+ rendering method, not Mobile or Compatibility."},{"name":"ssil_intensity","type":"float","description":"The brightness multiplier for the screen-space indirect lighting effect. A higher value will result in brighter light."},{"name":"ssil_normal_rejection","type":"float","description":"Amount of normal rejection used when calculating screen-space indirect lighting. Normal rejection uses the normal of a given sample point to reject samples that are facing away from the current pixel. Normal rejection is necessary to avoid light leaking when only one side of an object is illuminated. However, normal rejection can be disabled if light leaking is desirable, such as when the scene mostly contains emissive objects that emit light from faces that cannot be seen from the camera."},{"name":"ssil_radius","type":"float","description":"The distance that bounced lighting can travel when using the screen space indirect lighting effect. A larger value will result in light bouncing further in a scene, but may result in under-sampling artifacts which look like long spikes surrounding light sources."},{"name":"ssil_sharpness","type":"float","description":"The amount that the screen-space indirect lighting effect is allowed to blur over the edges of objects. Setting too high will result in aliasing around the edges of objects. Setting too low will make object edges appear blurry."},{"name":"ssr_depth_tolerance","type":"float","description":"The depth tolerance for screen-space reflections."},{"name":"ssr_enabled","type":"bool","description":"If [code]true[/code], screen-space reflections are enabled. Screen-space reflections are more accurate than reflections from [VoxelGI]s or [ReflectionProbe]s, but are slower and can't reflect surfaces occluded by others.\n\t\t\t[b]Note:[/b] SSR is only supported in the Forward+ rendering method, not Mobile or Compatibility."},{"name":"ssr_fade_in","type":"float","description":"The fade-in distance for screen-space reflections. Affects the area from the reflected material to the screen-space reflection. Only positive values are valid (negative values will be clamped to [code]0.0[/code])."},{"name":"ssr_fade_out","type":"float","description":"The fade-out distance for screen-space reflections. Affects the area from the screen-space reflection to the \"global\" reflection. Only positive values are valid (negative values will be clamped to [code]0.0[/code])."},{"name":"ssr_max_steps","type":"int","description":"The maximum number of steps for screen-space reflections. Higher values are slower."},{"name":"tonemap_exposure","type":"float","description":"Adjusts the brightness of values before they are provided to the tonemapper. Higher [member tonemap_exposure] values result in a brighter image. See also [member tonemap_white].\n\t\t\t[b]Note:[/b] Values provided to the tonemapper will also be multiplied by [code]2.0[/code] and [code]1.8[/code] for [constant TONE_MAPPER_FILMIC] and [constant TONE_MAPPER_ACES] respectively to produce a similar apparent brightness as [constant TONE_MAPPER_LINEAR]."},{"name":"tonemap_mode","type":"int","description":"The tonemapping mode to use. Tonemapping is the process that \"converts\" HDR values to be suitable for rendering on an LDR display. (Godot doesn't support rendering on HDR displays yet.)"},{"name":"tonemap_white","type":"float","description":"The white reference value for tonemapping, which indicates where bright white is located in the scale of values provided to the tonemapper. For photorealistic lighting, recommended values are between [code]6.0[/code] and [code]8.0[/code]. Higher values result in less blown out highlights, but may make the scene appear lower contrast. See also [member tonemap_exposure].\n\t\t\t[b]Note:[/b] [member tonemap_white] is ignored when using [constant TONE_MAPPER_LINEAR] or [constant TONE_MAPPER_AGX]."},{"name":"volumetric_fog_albedo","type":"Color","description":"The [Color] of the volumetric fog when interacting with lights. Mist and fog have an albedo close to [code]Color(1, 1, 1, 1)[/code] while smoke has a darker albedo."},{"name":"volumetric_fog_ambient_inject","type":"float","description":"Scales the strength of ambient light used in the volumetric fog. A value of [code]0.0[/code] means that ambient light will not impact the volumetric fog. [member volumetric_fog_ambient_inject] has a small performance cost when set above [code]0.0[/code].\n\t\t\t[b]Note:[/b] This has no visible effect if [member volumetric_fog_density] is [code]0.0[/code] or if [member volumetric_fog_albedo] is a fully black color."},{"name":"volumetric_fog_anisotropy","type":"float","description":"The direction of scattered light as it goes through the volumetric fog. A value close to [code]1.0[/code] means almost all light is scattered forward. A value close to [code]0.0[/code] means light is scattered equally in all directions. A value close to [code]-1.0[/code] means light is scattered mostly backward. Fog and mist scatter light slightly forward, while smoke scatters light equally in all directions."},{"name":"volumetric_fog_density","type":"float","description":"The base [i]exponential[/i] density of the volumetric fog. Set this to the lowest density you want to have globally. [FogVolume]s can be used to add to or subtract from this density in specific areas. Fog rendering is exponential as in real life.\n\t\t\tA value of [code]0.0[/code] disables global volumetric fog while allowing [FogVolume]s to display volumetric fog in specific areas.\n\t\t\tTo make volumetric fog work as a volumetric [i]lighting[/i] solution, set [member volumetric_fog_density] to the lowest non-zero value ([code]0.0001[/code]) then increase lights' [member Light3D.light_volumetric_fog_energy] to values between [code]10000[/code] and [code]100000[/code] to compensate for the very low density."},{"name":"volumetric_fog_detail_spread","type":"float","description":"The distribution of size down the length of the froxel buffer. A higher value compresses the froxels closer to the camera and places more detail closer to the camera."},{"name":"volumetric_fog_emission","type":"Color","description":"The emitted light from the volumetric fog. Even with emission, volumetric fog will not cast light onto other surfaces. Emission is useful to establish an ambient color. As the volumetric fog effect uses single-scattering only, fog tends to need a little bit of emission to soften the harsh shadows."},{"name":"volumetric_fog_emission_energy","type":"float","description":"The brightness of the emitted light from the volumetric fog."},{"name":"volumetric_fog_enabled","type":"bool","description":"Enables the volumetric fog effect. Volumetric fog uses a screen-aligned froxel buffer to calculate accurate volumetric scattering in the short to medium range. Volumetric fog interacts with [FogVolume]s and lights to calculate localized and global fog. Volumetric fog uses a PBR single-scattering model based on extinction, scattering, and emission which it exposes to users as density, albedo, and emission.\n\t\t\t[b]Note:[/b] Volumetric fog is only supported in the Forward+ rendering method, not Mobile or Compatibility."},{"name":"volumetric_fog_gi_inject","type":"float","description":"Scales the strength of Global Illumination used in the volumetric fog's albedo color. A value of [code]0.0[/code] means that Global Illumination will not impact the volumetric fog. [member volumetric_fog_gi_inject] has a small performance cost when set above [code]0.0[/code].\n\t\t\t[b]Note:[/b] This has no visible effect if [member volumetric_fog_density] is [code]0.0[/code] or if [member volumetric_fog_albedo] is a fully black color.\n\t\t\t[b]Note:[/b] Only [VoxelGI] and SDFGI ([member Environment.sdfgi_enabled]) are taken into account when using [member volumetric_fog_gi_inject]. Global illumination from [LightmapGI], [ReflectionProbe] and SSIL (see [member ssil_enabled]) will be ignored by volumetric fog."},{"name":"volumetric_fog_length","type":"float","description":"The distance over which the volumetric fog is computed. Increase to compute fog over a greater range, decrease to add more detail when a long range is not needed. For best quality fog, keep this as low as possible. See also [member ProjectSettings.rendering/environment/volumetric_fog/volume_depth]."},{"name":"volumetric_fog_sky_affect","type":"float","description":"The factor to use when affecting the sky with volumetric fog. [code]1.0[/code] means that volumetric fog can fully obscure the sky. Lower values reduce the impact of volumetric fog on sky rendering, with [code]0.0[/code] not affecting sky rendering at all.\n\t\t\t[b]Note:[/b] [member volumetric_fog_sky_affect] also affects [FogVolume]s, even if [member volumetric_fog_density] is [code]0.0[/code]. If you notice [FogVolume]s are disappearing when looking towards the sky, set [member volumetric_fog_sky_affect] to [code]1.0[/code]."},{"name":"volumetric_fog_temporal_reprojection_amount","type":"float","description":"The amount by which to blend the last frame with the current frame. A higher number results in smoother volumetric fog, but makes \"ghosting\" much worse. A lower value reduces ghosting but can result in the per-frame temporal jitter becoming visible."},{"name":"volumetric_fog_temporal_reprojection_enabled","type":"bool","description":"Enables temporal reprojection in the volumetric fog. Temporal reprojection blends the current frame's volumetric fog with the last frame's volumetric fog to smooth out jagged edges. The performance cost is minimal; however, it leads to moving [FogVolume]s and [Light3D]s \"ghosting\" and leaving a trail behind them. When temporal reprojection is enabled, try to avoid moving [FogVolume]s or [Light3D]s too fast. Short-lived dynamic lighting effects should have [member Light3D.light_volumetric_fog_energy] set to [code]0.0[/code] to avoid ghosting."}],"methods":[{"name":"get_glow_level","signature":"get_glow_level(idx: int) -> float","description":"Returns the intensity of the glow level [param idx].","returnType":"float"},{"name":"set_glow_level","signature":"set_glow_level(idx: int, intensity: float) -> void","description":"Sets the intensity of the glow level [param idx]. A value above 0.0 enables the level. Each level relies on the previous level. This means that enabling higher glow levels will slow down the glow effect rendering, even if previous levels aren't enabled.","returnType":"void"}],"signals":[]},"Expression":{"name":"Expression","description":"A class that stores an expression you can execute.","inherits":"RefCounted","properties":[],"methods":[{"name":"execute","signature":"execute(inputs: Array, base_instance: Object, show_error: bool, const_calls_only: bool) -> Variant","description":"Executes the expression that was previously parsed by [method parse] and returns the result. Before you use the returned object, you should check if the method failed by calling [method has_execute_failed].\n\t\t\t\tIf you defined input variables in [method parse], you can specify their values in the inputs array, in the same order.","returnType":"Variant"},{"name":"get_error_text","signature":"get_error_text() -> String","description":"Returns the error text if [method parse] or [method execute] has failed.","returnType":"String"},{"name":"has_execute_failed","signature":"has_execute_failed() -> bool","description":"Returns true if [method execute] has failed.","returnType":"bool"},{"name":"parse","signature":"parse(expression: String, input_names: PackedStringArray) -> int","description":"Parses the expression and returns an [enum Error] code.\n\t\t\t\tYou can optionally specify names of variables that may appear in the expression with [param input_names], so that you can bind them when it gets executed.","returnType":"int"}],"signals":[]},"ExternalTexture":{"name":"ExternalTexture","description":"Texture which displays the content of an external buffer.","inherits":"Texture2D","properties":[{"name":"size","type":"Vector2","description":"External texture size."}],"methods":[{"name":"get_external_texture_id","signature":"get_external_texture_id() -> int","description":"Returns the external texture ID.\n\t\t\t\tDepending on your use case, you may need to pass this to platform APIs, for example, when creating an android.graphics.SurfaceTexture on Android.","returnType":"int"},{"name":"set_external_buffer_id","signature":"set_external_buffer_id(external_buffer_id: int) -> void","description":"Sets the external buffer ID.\n\t\t\t\tDepending on your use case, you may need to call this with data received from a platform API, for example, SurfaceTexture.getHardwareBuffer() on Android.","returnType":"void"}],"signals":[]},"FileAccess":{"name":"FileAccess","description":"Provides methods for file reading and writing operations.","inherits":"RefCounted","properties":[{"name":"big_endian","type":"bool","description":"If [code]true[/code], the file is read with big-endian [url=https://en.wikipedia.org/wiki/Endianness]endianness[/url]. If [code]false[/code], the file is read with little-endian endianness. If in doubt, leave this to [code]false[/code] as most files are written with little-endian endianness.\n\t\t\t[b]Note:[/b] [member big_endian] is only about the file format, not the CPU type. The CPU endianness doesn't affect the default endianness for files written.\n\t\t\t[b]Note:[/b] This is always reset to [code]false[/code] whenever you open the file. Therefore, you must set [member big_endian] [i]after[/i] opening the file, not before."}],"methods":[{"name":"close","signature":"close() -> void","description":"Closes the currently opened file and prevents subsequent read/write operations. Use [method flush] to persist the data to disk without closing the file.\n\t\t\t\tNote:  will automatically close when it's freed, which happens when it goes out of scope or when it gets assigned with null. In C# the reference must be disposed after we are done using it, this can be done with the using statement or calling the Dispose method directly.","returnType":"void"},{"name":"create_temp","signature":"create_temp(mode_flags: int, prefix: String, extension: String, keep: bool) -> FileAccess","description":"Creates a temporary file. This file will be freed when the returned  is freed.\n\t\t\t\tIf [param prefix] is not empty, it will be prefixed to the file name, separated by a -.\n\t\t\t\tIf [param extension] is not empty, it will be appended to the temporary file name.\n\t\t\t\tIf [param keep] is true, the file is not deleted when the returned  is freed.\n\t\t\t\tReturns null if opening the file failed. You can use [method get_open_error] to check the error that occurred.","returnType":"FileAccess"},{"name":"eof_reached","signature":"eof_reached() -> bool","description":"Returns true if the file cursor has already read past the end of the file.\n\t\t\t\tNote: eof_reached() == false cannot be used to check whether there is more data available. To loop while there is more data available, use:\n\t\t\t\t\n\t\t\t\t\n\t\t\t\twhile file.get_position() &lt; file.get_length():\n\t\t\t\t    # Read data\n\t\t\t\t\n\t\t\t\t\n\t\t\t\twhile (file.GetPosition() &lt; file.GetLength())\n\t\t\t\t{\n\t\t\t\t    // Read data\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t","returnType":"bool"},{"name":"file_exists","signature":"file_exists(path: String) -> bool","description":"Returns true if the file exists in the given path.\n\t\t\t\tNote: Many resources types are imported (e.g. textures or sound files), and their source asset will not be included in the exported game, as only the imported version is used. See [method ResourceLoader.exists] for an alternative approach that takes resource remapping into account.\n\t\t\t\tFor a non-static, relative equivalent, use [method DirAccess.file_exists].","returnType":"bool"},{"name":"flush","signature":"flush() -> void","description":"Writes the file's buffer to disk. Flushing is automatically performed when the file is closed. This means you don't need to call [method flush] manually before closing a file. Still, calling [method flush] can be used to ensure the data is safe even if the project crashes instead of being closed gracefully.\n\t\t\t\tNote: Only call [method flush] when you actually need it. Otherwise, it will decrease performance due to constant disk writes.","returnType":"void"},{"name":"get_8","signature":"get_8() -> int","description":"Returns the next 8 bits from the file as an integer. See [method store_8] for details on what values can be stored and retrieved this way.","returnType":"int"},{"name":"get_16","signature":"get_16() -> int","description":"Returns the next 16 bits from the file as an integer. See [method store_16] for details on what values can be stored and retrieved this way.","returnType":"int"},{"name":"get_32","signature":"get_32() -> int","description":"Returns the next 32 bits from the file as an integer. See [method store_32] for details on what values can be stored and retrieved this way.","returnType":"int"},{"name":"get_64","signature":"get_64() -> int","description":"Returns the next 64 bits from the file as an integer. See [method store_64] for details on what values can be stored and retrieved this way.","returnType":"int"},{"name":"get_as_text","signature":"get_as_text(skip_cr: bool) -> String","description":"Returns the whole file as a . Text is interpreted as being UTF-8 encoded.\n\t\t\t\tIf [param skip_cr] is true, carriage return characters (\\r, CR) will be ignored when parsing the UTF-8, so that only line feed characters (\\n, LF) represent a new line (Unix convention).","returnType":"String"},{"name":"get_buffer","signature":"get_buffer(length: int) -> PackedByteArray","description":"Returns next [param length] bytes of the file as a .","returnType":"PackedByteArray"},{"name":"get_csv_line","signature":"get_csv_line(delim: String) -> PackedStringArray","description":"Returns the next value of the file in CSV (Comma-Separated Values) format. You can pass a different delimiter [param delim] to use other than the default \",\" (comma). This delimiter must be one-character long, and cannot be a double quotation mark.\n\t\t\t\tText is interpreted as being UTF-8 encoded. Text values must be enclosed in double quotes if they include the delimiter character. Double quotes within a text value can be escaped by doubling their occurrence.\n\t\t\t\tFor example, the following CSV lines are valid and will be properly parsed as two strings each:\n\t\t\t\t[codeblock lang=text]\n\t\t\t\tAlice,\"Hello, Bob!\"\n\t\t\t\tBob,Alice! What a surprise!\n\t\t\t\tAlice,\"I thought you'd reply with \"\"Hello, world\"\".\"\n\t\t\t\t\n\t\t\t\tNote how the second line can omit the enclosing quotes as it does not include the delimiter. However it could very well use quotes, it was only written without for demonstration purposes. The third line must use \"\" for each quotation mark that needs to be interpreted as such instead of the end of a text value.","returnType":"PackedStringArray"},{"name":"get_double","signature":"get_double() -> float","description":"Returns the next 64 bits from the file as a floating-point number.","returnType":"float"},{"name":"get_error","signature":"get_error() -> int","description":"Returns the last error that happened when trying to perform operations. Compare with the ERR_FILE_* constants from [enum Error].","returnType":"int"},{"name":"get_file_as_bytes","signature":"get_file_as_bytes(path: String) -> PackedByteArray","description":"Returns the whole [param path] file contents as a  without any decoding.\n\t\t\t\tReturns an empty  if an error occurred while opening the file. You can use [method get_open_error] to check the error that occurred.","returnType":"PackedByteArray"},{"name":"get_file_as_string","signature":"get_file_as_string(path: String) -> String","description":"Returns the whole [param path] file contents as a . Text is interpreted as being UTF-8 encoded.\n\t\t\t\tReturns an empty  if an error occurred while opening the file. You can use [method get_open_error] to check the error that occurred.","returnType":"String"},{"name":"get_float","signature":"get_float() -> float","description":"Returns the next 32 bits from the file as a floating-point number.","returnType":"float"},{"name":"get_half","signature":"get_half() -> float","description":"Returns the next 16 bits from the file as a half-precision floating-point number.","returnType":"float"},{"name":"get_hidden_attribute","signature":"get_hidden_attribute(file: String) -> bool","description":"Returns true, if file hidden attribute is set.\n\t\t\t\tNote: This method is implemented on iOS, BSD, macOS, and Windows.","returnType":"bool"},{"name":"get_length","signature":"get_length() -> int","description":"Returns the size of the file in bytes. For a pipe, returns the number of bytes available for reading from the pipe.","returnType":"int"},{"name":"get_line","signature":"get_line() -> String","description":"Returns the next line of the file as a . The returned string doesn't include newline (\\n) or carriage return (\\r) characters, but does include any other leading or trailing whitespace.\n\t\t\t\tText is interpreted as being UTF-8 encoded.","returnType":"String"},{"name":"get_md5","signature":"get_md5(path: String) -> String","description":"Returns an MD5 String representing the file at the given path or an empty  on failure.","returnType":"String"},{"name":"get_modified_time","signature":"get_modified_time(file: String) -> int","description":"Returns the last time the [param file] was modified in Unix timestamp format, or 0 on error. This Unix timestamp can be converted to another format using the  singleton.","returnType":"int"},{"name":"get_open_error","signature":"get_open_error() -> int","description":"Returns the result of the last [method open] call in the current thread.","returnType":"int"},{"name":"get_pascal_string","signature":"get_pascal_string() -> String","description":"Returns a  saved in Pascal format from the file.\n\t\t\t\tText is interpreted as being UTF-8 encoded.","returnType":"String"},{"name":"get_path","signature":"get_path() -> String","description":"Returns the path as a  for the current open file.","returnType":"String"},{"name":"get_path_absolute","signature":"get_path_absolute() -> String","description":"Returns the absolute path as a  for the current open file.","returnType":"String"},{"name":"get_position","signature":"get_position() -> int","description":"Returns the file cursor's position.","returnType":"int"},{"name":"get_read_only_attribute","signature":"get_read_only_attribute(file: String) -> bool","description":"Returns true, if file read only attribute is set.\n\t\t\t\tNote: This method is implemented on iOS, BSD, macOS, and Windows.","returnType":"bool"},{"name":"get_real","signature":"get_real() -> float","description":"Returns the next bits from the file as a floating-point number.","returnType":"float"},{"name":"get_sha256","signature":"get_sha256(path: String) -> String","description":"Returns an SHA-256  representing the file at the given path or an empty  on failure.","returnType":"String"},{"name":"get_unix_permissions","signature":"get_unix_permissions(file: String) -> int","description":"Returns file UNIX permissions.\n\t\t\t\tNote: This method is implemented on iOS, Linux/BSD, and macOS.","returnType":"int"},{"name":"get_var","signature":"get_var(allow_objects: bool) -> Variant","description":"Returns the next  value from the file. If [param allow_objects] is true, decoding objects is allowed.\n\t\t\t\tInternally, this uses the same decoding mechanism as the [method @GlobalScope.bytes_to_var] method.\n\t\t\t\tWarning: Deserialized objects can contain code which gets executed. Do not use this option if the serialized object comes from untrusted sources to avoid potential security threats such as remote code execution.","returnType":"Variant"},{"name":"is_open","signature":"is_open() -> bool","description":"Returns true if the file is currently opened.","returnType":"bool"},{"name":"open","signature":"open(path: String, flags: int) -> FileAccess","description":"Creates a new  object and opens the file for writing or reading, depending on the flags.\n\t\t\t\tReturns null if opening the file failed. You can use [method get_open_error] to check the error that occurred.","returnType":"FileAccess"},{"name":"open_compressed","signature":"open_compressed(path: String, mode_flags: int, compression_mode: int) -> FileAccess","description":"Creates a new  object and opens a compressed file for reading or writing.\n\t\t\t\tNote: [method open_compressed] can only read files that were saved by Godot, not third-party compression formats. See [url=https://github.com/godotengine/godot/issues/28999]GitHub issue #28999 for a workaround.\n\t\t\t\tReturns null if opening the file failed. You can use [method get_open_error] to check the error that occurred.","returnType":"FileAccess"},{"name":"open_encrypted","signature":"open_encrypted(path: String, mode_flags: int, key: PackedByteArray, iv: PackedByteArray) -> FileAccess","description":"Creates a new  object and opens an encrypted file in write or read mode. You need to pass a binary key to encrypt/decrypt it.\n\t\t\t\tNote: The provided key must be 32 bytes long.\n\t\t\t\tReturns null if opening the file failed. You can use [method get_open_error] to check the error that occurred.","returnType":"FileAccess"},{"name":"open_encrypted_with_pass","signature":"open_encrypted_with_pass(path: String, mode_flags: int, pass: String) -> FileAccess","description":"Creates a new  object and opens an encrypted file in write or read mode. You need to pass a password to encrypt/decrypt it.\n\t\t\t\tReturns null if opening the file failed. You can use [method get_open_error] to check the error that occurred.","returnType":"FileAccess"},{"name":"resize","signature":"resize(length: int) -> int","description":"Resizes the file to a specified length. The file must be open in a mode that permits writing. If the file is extended, NUL characters are appended. If the file is truncated, all data from the end file to the original length of the file is lost.","returnType":"int"},{"name":"seek","signature":"seek(position: int) -> void","description":"Changes the file reading/writing cursor to the specified position (in bytes from the beginning of the file).","returnType":"void"},{"name":"seek_end","signature":"seek_end(position: int) -> void","description":"Changes the file reading/writing cursor to the specified position (in bytes from the end of the file).\n\t\t\t\tNote: This is an offset, so you should use negative numbers or the cursor will be at the end of the file.","returnType":"void"},{"name":"set_hidden_attribute","signature":"set_hidden_attribute(file: String, hidden: bool) -> int","description":"Sets file hidden attribute.\n\t\t\t\tNote: This method is implemented on iOS, BSD, macOS, and Windows.","returnType":"int"},{"name":"set_read_only_attribute","signature":"set_read_only_attribute(file: String, ro: bool) -> int","description":"Sets file read only attribute.\n\t\t\t\tNote: This method is implemented on iOS, BSD, macOS, and Windows.","returnType":"int"},{"name":"set_unix_permissions","signature":"set_unix_permissions(file: String, permissions: int) -> int","description":"Sets file UNIX permissions.\n\t\t\t\tNote: This method is implemented on iOS, Linux/BSD, and macOS.","returnType":"int"},{"name":"store_8","signature":"store_8(value: int) -> bool","description":"Stores an integer as 8 bits in the file.\n\t\t\t\tNote: The [param value] should lie in the interval [0, 255]. Any other value will overflow and wrap around.\n\t\t\t\tNote: If an error occurs, the resulting value of the file position indicator is indeterminate.\n\t\t\t\tTo store a signed integer, use [method store_64], or convert it manually (see [method store_16] for an example).","returnType":"bool"},{"name":"store_16","signature":"store_16(value: int) -> bool","description":"Stores an integer as 16 bits in the file.\n\t\t\t\tNote: The [param value] should lie in the interval [0, 2^16 - 1]. Any other value will overflow and wrap around.\n\t\t\t\tNote: If an error occurs, the resulting value of the file position indicator is indeterminate.\n\t\t\t\tTo store a signed integer, use [method store_64] or store a signed integer from the interval [-2^15, 2^15 - 1] (i.e. keeping one bit for the signedness) and compute its sign manually when reading. For example:\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tconst MAX_15B = 1 &lt;&lt; 15\n\t\t\t\tconst MAX_16B = 1 &lt;&lt; 16\n\n\t\t\t\tfunc unsigned16_to_signed(unsigned):\n\t\t\t\t    return (unsigned + MAX_15B) % MAX_16B - MAX_15B\n\n\t\t\t\tfunc _ready():\n\t\t\t\t    var f = FileAccess.open(\"user://file.dat\", FileAccess.WRITE_READ)\n\t\t\t\t    f.store_16(-42) # This wraps around and stores 65494 (2^16 - 42).\n\t\t\t\t    f.store_16(121) # In bounds, will store 121.\n\t\t\t\t    f.seek(0) # Go back to start to read the stored value.\n\t\t\t\t    var read1 = f.get_16() # 65494\n\t\t\t\t    var read2 = f.get_16() # 121\n\t\t\t\t    var converted1 = unsigned16_to_signed(read1) # -42\n\t\t\t\t    var converted2 = unsigned16_to_signed(read2) # 121\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tpublic override void _Ready()\n\t\t\t\t{\n\t\t\t\t    using var f = FileAccess.Open(\"user://file.dat\", FileAccess.ModeFlags.WriteRead);\n\t\t\t\t    f.Store16(unchecked((ushort)-42)); // This wraps around and stores 65494 (2^16 - 42).\n\t\t\t\t    f.Store16(121); // In bounds, will store 121.\n\t\t\t\t    f.Seek(0); // Go back to start to read the stored value.\n\t\t\t\t    ushort read1 = f.Get16(); // 65494\n\t\t\t\t    ushort read2 = f.Get16(); // 121\n\t\t\t\t    short converted1 = (short)read1; // -42\n\t\t\t\t    short converted2 = (short)read2; // 121\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t","returnType":"bool"},{"name":"store_32","signature":"store_32(value: int) -> bool","description":"Stores an integer as 32 bits in the file.\n\t\t\t\tNote: The [param value] should lie in the interval [0, 2^32 - 1]. Any other value will overflow and wrap around.\n\t\t\t\tNote: If an error occurs, the resulting value of the file position indicator is indeterminate.\n\t\t\t\tTo store a signed integer, use [method store_64], or convert it manually (see [method store_16] for an example).","returnType":"bool"},{"name":"store_64","signature":"store_64(value: int) -> bool","description":"Stores an integer as 64 bits in the file.\n\t\t\t\tNote: The [param value] must lie in the interval [-2^63, 2^63 - 1] (i.e. be a valid  value).\n\t\t\t\tNote: If an error occurs, the resulting value of the file position indicator is indeterminate.","returnType":"bool"},{"name":"store_buffer","signature":"store_buffer(buffer: PackedByteArray) -> bool","description":"Stores the given array of bytes in the file.\n\t\t\t\tNote: If an error occurs, the resulting value of the file position indicator is indeterminate.","returnType":"bool"},{"name":"store_csv_line","signature":"store_csv_line(values: PackedStringArray, delim: String) -> bool","description":"Store the given  in the file as a line formatted in the CSV (Comma-Separated Values) format. You can pass a different delimiter [param delim] to use other than the default \",\" (comma). This delimiter must be one-character long.\n\t\t\t\tText will be encoded as UTF-8.\n\t\t\t\tNote: If an error occurs, the resulting value of the file position indicator is indeterminate.","returnType":"bool"},{"name":"store_double","signature":"store_double(value: float) -> bool","description":"Stores a floating-point number as 64 bits in the file.\n\t\t\t\tNote: If an error occurs, the resulting value of the file position indicator is indeterminate.","returnType":"bool"},{"name":"store_float","signature":"store_float(value: float) -> bool","description":"Stores a floating-point number as 32 bits in the file.\n\t\t\t\tNote: If an error occurs, the resulting value of the file position indicator is indeterminate.","returnType":"bool"},{"name":"store_half","signature":"store_half(value: float) -> bool","description":"Stores a half-precision floating-point number as 16 bits in the file.","returnType":"bool"},{"name":"store_line","signature":"store_line(line: String) -> bool","description":"Stores [param line] in the file followed by a newline character (\\n), encoding the text as UTF-8.\n\t\t\t\tNote: If an error occurs, the resulting value of the file position indicator is indeterminate.","returnType":"bool"},{"name":"store_pascal_string","signature":"store_pascal_string(string: String) -> bool","description":"Stores the given  as a line in the file in Pascal format (i.e. also store the length of the string).\n\t\t\t\tText will be encoded as UTF-8.\n\t\t\t\tNote: If an error occurs, the resulting value of the file position indicator is indeterminate.","returnType":"bool"},{"name":"store_real","signature":"store_real(value: float) -> bool","description":"Stores a floating-point number in the file.\n\t\t\t\tNote: If an error occurs, the resulting value of the file position indicator is indeterminate.","returnType":"bool"},{"name":"store_string","signature":"store_string(string: String) -> bool","description":"Stores [param string] in the file without a newline character (\\n), encoding the text as UTF-8.\n\t\t\t\tNote: This method is intended to be used to write text files. The string is stored as a UTF-8 encoded buffer without string length or terminating zero, which means that it can't be loaded back easily. If you want to store a retrievable string in a binary file, consider using [method store_pascal_string] instead. For retrieving strings from a text file, you can use get_buffer(length).get_string_from_utf8() (if you know the length) or [method get_as_text].\n\t\t\t\tNote: If an error occurs, the resulting value of the file position indicator is indeterminate.","returnType":"bool"},{"name":"store_var","signature":"store_var(value: Variant, full_objects: bool) -> bool","description":"Stores any Variant value in the file. If [param full_objects] is true, encoding objects is allowed (and can potentially include code).\n\t\t\t\tInternally, this uses the same encoding mechanism as the [method @GlobalScope.var_to_bytes] method.\n\t\t\t\tNote: Not all properties are included. Only properties that are configured with the [constant PROPERTY_USAGE_STORAGE] flag set will be serialized. You can add a new usage flag to a property by overriding the [method Object._get_property_list] method in your class. You can also check how property usage is configured by calling [method Object._get_property_list]. See [enum PropertyUsageFlags] for the possible usage flags.\n\t\t\t\tNote: If an error occurs, the resulting value of the file position indicator is indeterminate.","returnType":"bool"}],"signals":[]},"FileDialog":{"name":"FileDialog","description":"A dialog for selecting files or directories in the filesystem.","inherits":"ConfirmationDialog","properties":[{"name":"access","type":"int","description":"The file system access scope. See [enum Access] constants.\n\t\t\t[b]Warning:[/b] In Web builds, FileDialog cannot access the host file system. In sandboxed Linux and macOS environments, [member use_native_dialog] is automatically used to allow limited access to host file system."},{"name":"current_dir","type":"String","description":"The current working directory of the file dialog.\n\t\t\t[b]Note:[/b] For native file dialogs, this property is only treated as a hint and may not be respected by specific OS implementations."},{"name":"current_file","type":"String","description":"The currently selected file of the file dialog."},{"name":"current_path","type":"String","description":"The currently selected file path of the file dialog."},{"name":"file_mode","type":"int","description":"The dialog's open or save mode, which affects the selection behavior. See [enum FileMode]."},{"name":"filename_filter","type":"String","description":"The filter for file names (case-insensitive). When set to a non-empty string, only files that contains the substring will be shown. [member filename_filter] can be edited by the user with the filter button at the top of the file dialog.\n\t\t\tSee also [member filters], which should be used to restrict the file types that can be selected instead of [member filename_filter] which is meant to be set by the user."},{"name":"filters","type":"PackedStringArray","description":"The available file type filters. Each filter string in the array should be formatted like this: [code]*.png,*.jpg,*.jpeg;Image Files;image/png,image/jpeg[/code]. The description text of the filter is optional and can be omitted. Both file extensions and MIME type should be always set.\n\t\t\t[b]Note:[/b] Embedded file dialog and Windows file dialog support only file extensions, while Android, Linux, and macOS file dialogs also support MIME types."},{"name":"mode_overrides_title","type":"bool","description":"If [code]true[/code], changing the [member file_mode] property will set the window title accordingly (e.g. setting [member file_mode] to [constant FILE_MODE_OPEN_FILE] will change the window title to \"Open a File\")."},{"name":"option_count","type":"int","description":"The number of additional [OptionButton]s and [CheckBox]es in the dialog."},{"name":"root_subfolder","type":"String","description":"If non-empty, the given sub-folder will be \"root\" of this [FileDialog], i.e. user won't be able to go to its parent directory.\n\t\t\t[b]Note:[/b] This property is ignored by native file dialogs."},{"name":"show_hidden_files","type":"bool","description":"If [code]true[/code], the dialog will show hidden files.\n\t\t\t[b]Note:[/b] This property is ignored by native file dialogs on Android and Linux."},{"name":"use_native_dialog","type":"bool","description":"If [code]true[/code], and if supported by the current [DisplayServer], OS native dialog will be used instead of custom one.\n\t\t\t[b]Note:[/b] On Android, it is only supported when using [constant ACCESS_FILESYSTEM]. For access mode [constant ACCESS_RESOURCES] and [constant ACCESS_USERDATA], the system will fall back to custom FileDialog.\n\t\t\t[b]Note:[/b] On Linux and macOS, sandboxed apps always use native dialogs to access the host file system.\n\t\t\t[b]Note:[/b] On macOS, sandboxed apps will save security-scoped bookmarks to retain access to the opened folders across multiple sessions. Use [method OS.get_granted_permissions] to get a list of saved bookmarks.\n\t\t\t[b]Note:[/b] Native dialogs are isolated from the base process, file dialog properties can't be modified once the dialog is shown."}],"methods":[{"name":"add_filter","signature":"add_filter(filter: String, description: String) -> void","description":"Adds a comma-delimited file name [param filter] option to the  with an optional [param description], which restricts what files can be picked.\n\t\t\t\tA [param filter] should be of the form \"filename.extension\", where filename and extension can be * to match any string. Filters starting with . (i.e. empty filenames) are not allowed.\n\t\t\t\tFor example, a [param filter] of \"*.png, *.jpg\" and a [param description] of \"Images\" results in filter text \"Images (*.png, *.jpg)\".","returnType":"void"},{"name":"add_option","signature":"add_option(name: String, values: PackedStringArray, default_value_index: int) -> void","description":"Adds an additional  to the file dialog. If [param values] is empty, a  is added instead.\n\t\t\t\t[param default_value_index] should be an index of the value in the [param values]. If [param values] is empty it should be either 1 (checked), or 0 (unchecked).","returnType":"void"},{"name":"clear_filename_filter","signature":"clear_filename_filter() -> void","description":"Clear the filter for file names.","returnType":"void"},{"name":"clear_filters","signature":"clear_filters() -> void","description":"Clear all the added filters in the dialog.","returnType":"void"},{"name":"deselect_all","signature":"deselect_all() -> void","description":"Clear all currently selected items in the dialog.","returnType":"void"},{"name":"get_line_edit","signature":"get_line_edit() -> LineEdit","description":"Returns the LineEdit for the selected file.\n\t\t\t\tWarning: This is a required internal node, removing and freeing it may cause a crash. If you wish to hide it or any of its children, use their [member CanvasItem.visible] property.","returnType":"LineEdit"},{"name":"get_option_default","signature":"get_option_default(option: int) -> int","description":"Returns the default value index of the  or  with index [param option].","returnType":"int"},{"name":"get_option_name","signature":"get_option_name(option: int) -> String","description":"Returns the name of the  or  with index [param option].","returnType":"String"},{"name":"get_option_values","signature":"get_option_values(option: int) -> PackedStringArray","description":"Returns an array of values of the  with index [param option].","returnType":"PackedStringArray"},{"name":"get_selected_options","signature":"get_selected_options() -> Dictionary","description":"Returns a  with the selected values of the additional s and/or es.  keys are names and values are selected value indices.","returnType":"Dictionary"},{"name":"get_vbox","signature":"get_vbox() -> VBoxContainer","description":"Returns the vertical box container of the dialog, custom controls can be added to it.\n\t\t\t\tWarning: This is a required internal node, removing and freeing it may cause a crash. If you wish to hide it or any of its children, use their [member CanvasItem.visible] property.\n\t\t\t\tNote: Changes to this node are ignored by native file dialogs, use [method add_option] to add custom elements to the dialog instead.","returnType":"VBoxContainer"},{"name":"invalidate","signature":"invalidate() -> void","description":"Invalidate and update the current dialog content list.\n\t\t\t\tNote: This method does nothing on native file dialogs.","returnType":"void"},{"name":"set_option_default","signature":"set_option_default(option: int, default_value_index: int) -> void","description":"Sets the default value index of the  or  with index [param option].","returnType":"void"},{"name":"set_option_name","signature":"set_option_name(option: int, name: String) -> void","description":"Sets the name of the  or  with index [param option].","returnType":"void"},{"name":"set_option_values","signature":"set_option_values(option: int, values: PackedStringArray) -> void","description":"Sets the option values of the  with index [param option].","returnType":"void"}],"signals":[{"name":"dir_selected","description":"Emitted when the user selects a directory."},{"name":"file_selected","description":"Emitted when the user selects a file by double-clicking it or pressing the [b]OK[/b] button."},{"name":"filename_filter_changed","description":"Emitted when the filter for file names changes."},{"name":"files_selected","description":"Emitted when the user selects multiple files."}]},"FileSystemDock":{"name":"FileSystemDock","description":"Godot editor's dock for managing files in the project.","inherits":"VBoxContainer","properties":[],"methods":[{"name":"add_resource_tooltip_plugin","signature":"add_resource_tooltip_plugin(plugin: EditorResourceTooltipPlugin) -> void","description":"Registers a new .","returnType":"void"},{"name":"navigate_to_path","signature":"navigate_to_path(path: String) -> void","description":"Sets the given [param path] as currently selected, ensuring that the selected file/directory is visible.","returnType":"void"},{"name":"remove_resource_tooltip_plugin","signature":"remove_resource_tooltip_plugin(plugin: EditorResourceTooltipPlugin) -> void","description":"Removes an . Fails if the plugin wasn't previously added.","returnType":"void"}],"signals":[{"name":"display_mode_changed","description":"Emitted when the user switches file display mode or split mode."},{"name":"file_removed","description":"Emitted when the given [param file] was removed."},{"name":"files_moved","description":"Emitted when a file is moved from [param old_file] path to [param new_file] path."},{"name":"folder_color_changed","description":"Emitted when folders change color."},{"name":"folder_moved","description":"Emitted when a folder is moved from [param old_folder] path to [param new_folder] path."},{"name":"folder_removed","description":"Emitted when the given [param folder] was removed."},{"name":"inherit","description":"Emitted when a new scene is created that inherits the scene at [param file] path."},{"name":"instantiate","description":"Emitted when the given scenes are being instantiated in the editor."},{"name":"resource_removed","description":"Emitted when an external [param resource] had its file removed."}]},"FlowContainer":{"name":"FlowContainer","description":"A container that arranges its child controls horizontally or vertically and wraps them around at the borders.","inherits":"Container","properties":[{"name":"alignment","type":"int","description":"The alignment of the container's children (must be one of [constant ALIGNMENT_BEGIN], [constant ALIGNMENT_CENTER], or [constant ALIGNMENT_END])."},{"name":"last_wrap_alignment","type":"int","description":"The wrap behavior of the last, partially filled row or column (must be one of [constant LAST_WRAP_ALIGNMENT_INHERIT], [constant LAST_WRAP_ALIGNMENT_BEGIN], [constant LAST_WRAP_ALIGNMENT_CENTER], or [constant LAST_WRAP_ALIGNMENT_END])."},{"name":"reverse_fill","type":"bool","description":"If [code]true[/code], reverses fill direction. Horizontal [FlowContainer]s will fill rows bottom to top, vertical [FlowContainer]s will fill columns right to left.\n\t\t\tWhen using a vertical [FlowContainer] with a right to left [member Control.layout_direction], columns will fill left to right instead."},{"name":"vertical","type":"bool","description":"If [code]true[/code], the [FlowContainer] will arrange its children vertically, rather than horizontally.\n\t\t\tCan't be changed when using [HFlowContainer] and [VFlowContainer]."}],"methods":[{"name":"get_line_count","signature":"get_line_count() -> int","description":"Returns the current line count.","returnType":"int"}],"signals":[]},"FogMaterial":{"name":"FogMaterial","description":"A material that controls how volumetric fog is rendered, to be assigned to a .","inherits":"Material","properties":[{"name":"albedo","type":"Color","description":"The single-scattering [Color] of the [FogVolume]. Internally, [member albedo] is converted into single-scattering, which is additively blended with other [FogVolume]s and the [member Environment.volumetric_fog_albedo]."},{"name":"density","type":"float","description":"The density of the [FogVolume]. Denser objects are more opaque, but may suffer from under-sampling artifacts that look like stripes. Negative values can be used to subtract fog from other [FogVolume]s or global volumetric fog.\n\t\t\t[b]Note:[/b] Due to limited precision, [member density] values between [code]-0.001[/code] and [code]0.001[/code] (exclusive) act like [code]0.0[/code]. This does not apply to [member Environment.volumetric_fog_density]."},{"name":"density_texture","type":"Texture3D","description":"The 3D texture that is used to scale the [member density] of the [FogVolume]. This can be used to vary fog density within the [FogVolume] with any kind of static pattern. For animated effects, consider using a custom [url=$DOCS_URL/tutorials/shaders/shader_reference/fog_shader.html]fog shader[/url]."},{"name":"edge_fade","type":"float","description":"The hardness of the edges of the [FogVolume]. A higher value will result in softer edges, while a lower value will result in harder edges."},{"name":"emission","type":"Color","description":"The [Color] of the light emitted by the [FogVolume]. Emitted light will not cast light or shadows on other objects, but can be useful for modulating the [Color] of the [FogVolume] independently from light sources."},{"name":"height_falloff","type":"float","description":"The rate by which the height-based fog decreases in density as height increases in world space. A high falloff will result in a sharp transition, while a low falloff will result in a smoother transition. A value of [code]0.0[/code] results in uniform-density fog. The height threshold is determined by the height of the associated [FogVolume]."}],"methods":[],"signals":[]},"FogVolume":{"name":"FogVolume","description":"A region that contributes to the default volumetric fog from the world environment.","inherits":"VisualInstance3D","properties":[{"name":"material","type":"Material","description":"The [Material] used by the [FogVolume]. Can be either a built-in [FogMaterial] or a custom [ShaderMaterial]."},{"name":"shape","type":"int","description":"The shape of the [FogVolume]. This can be set to either [constant RenderingServer.FOG_VOLUME_SHAPE_ELLIPSOID], [constant RenderingServer.FOG_VOLUME_SHAPE_CONE], [constant RenderingServer.FOG_VOLUME_SHAPE_CYLINDER], [constant RenderingServer.FOG_VOLUME_SHAPE_BOX] or [constant RenderingServer.FOG_VOLUME_SHAPE_WORLD]."},{"name":"size","type":"Vector3","description":"The size of the [FogVolume] when [member shape] is [constant RenderingServer.FOG_VOLUME_SHAPE_ELLIPSOID], [constant RenderingServer.FOG_VOLUME_SHAPE_CONE], [constant RenderingServer.FOG_VOLUME_SHAPE_CYLINDER] or [constant RenderingServer.FOG_VOLUME_SHAPE_BOX].\n\t\t\t[b]Note:[/b] Thin fog volumes may appear to flicker when the camera moves or rotates. This can be alleviated by increasing [member ProjectSettings.rendering/environment/volumetric_fog/volume_depth] (at a performance cost) or by decreasing [member Environment.volumetric_fog_length] (at no performance cost, but at the cost of lower fog range). Alternatively, the [FogVolume] can be made thicker and use a lower density in the [member material].\n\t\t\t[b]Note:[/b] If [member shape] is [constant RenderingServer.FOG_VOLUME_SHAPE_CONE] or [constant RenderingServer.FOG_VOLUME_SHAPE_CYLINDER], the cone/cylinder will be adjusted to fit within the size. Non-uniform scaling of cone/cylinder shapes via the [member size] property is not supported, but you can scale the [FogVolume] node instead."}],"methods":[],"signals":[]},"Font":{"name":"Font","description":"Abstract base class for fonts and font variations.","inherits":"Resource","properties":[{"name":"fallbacks","type":"Font[]","description":"Array of fallback [Font]s to use as a substitute if a glyph is not found in this current [Font].\n\t\t\tIf this array is empty in a [FontVariation], the [member FontVariation.base_font]'s fallbacks are used instead."}],"methods":[{"name":"draw_char","signature":"draw_char(canvas_item: RID, pos: Vector2, char: int, font_size: int, modulate: Color) -> float","description":"Draw a single Unicode character [param char] into a canvas item using the font, at a given position, with [param modulate] color. [param pos] specifies the baseline, not the top. To draw from the top, ascent must be added to the Y axis.\n\t\t\t\tNote: Do not use this function to draw strings character by character, use [method draw_string] or  instead.","returnType":"float"},{"name":"draw_char_outline","signature":"draw_char_outline(canvas_item: RID, pos: Vector2, char: int, font_size: int, size: int, modulate: Color) -> float","description":"Draw a single Unicode character [param char] outline into a canvas item using the font, at a given position, with [param modulate] color and [param size] outline size. [param pos] specifies the baseline, not the top. To draw from the top, ascent must be added to the Y axis.\n\t\t\t\tNote: Do not use this function to draw strings character by character, use [method draw_string] or  instead.","returnType":"float"},{"name":"draw_multiline_string","signature":"draw_multiline_string(canvas_item: RID, pos: Vector2, text: String, alignment: int, width: float, font_size: int, max_lines: int, modulate: Color, brk_flags: int, justification_flags: int, direction: int, orientation: int) -> void","description":"Breaks [param text] into lines using rules specified by [param brk_flags] and draws it into a canvas item using the font, at a given position, with [param modulate] color, optionally clipping the width and aligning horizontally. [param pos] specifies the baseline of the first line, not the top. To draw from the top, ascent must be added to the Y axis.\n\t\t\t\tSee also [method CanvasItem.draw_multiline_string].","returnType":"void"},{"name":"draw_multiline_string_outline","signature":"draw_multiline_string_outline(canvas_item: RID, pos: Vector2, text: String, alignment: int, width: float, font_size: int, max_lines: int, size: int, modulate: Color, brk_flags: int, justification_flags: int, direction: int, orientation: int) -> void","description":"Breaks [param text] to the lines using rules specified by [param brk_flags] and draws text outline into a canvas item using the font, at a given position, with [param modulate] color and [param size] outline size, optionally clipping the width and aligning horizontally. [param pos] specifies the baseline of the first line, not the top. To draw from the top, ascent must be added to the Y axis.\n\t\t\t\tSee also [method CanvasItem.draw_multiline_string_outline].","returnType":"void"},{"name":"draw_string","signature":"draw_string(canvas_item: RID, pos: Vector2, text: String, alignment: int, width: float, font_size: int, modulate: Color, justification_flags: int, direction: int, orientation: int) -> void","description":"Draw [param text] into a canvas item using the font, at a given position, with [param modulate] color, optionally clipping the width and aligning horizontally. [param pos] specifies the baseline, not the top. To draw from the top, ascent must be added to the Y axis.\n\t\t\t\tSee also [method CanvasItem.draw_string].","returnType":"void"},{"name":"draw_string_outline","signature":"draw_string_outline(canvas_item: RID, pos: Vector2, text: String, alignment: int, width: float, font_size: int, size: int, modulate: Color, justification_flags: int, direction: int, orientation: int) -> void","description":"Draw [param text] outline into a canvas item using the font, at a given position, with [param modulate] color and [param size] outline size, optionally clipping the width and aligning horizontally. [param pos] specifies the baseline, not the top. To draw from the top, ascent must be added to the Y axis.\n\t\t\t\tSee also [method CanvasItem.draw_string_outline].","returnType":"void"},{"name":"find_variation","signature":"find_variation(variation_coordinates: Dictionary, face_index: int, strength: float, transform: Transform2D, spacing_top: int, spacing_bottom: int, spacing_space: int, spacing_glyph: int, baseline_offset: float) -> RID","description":"Returns  RID of the font cache for specific variation.","returnType":"RID"},{"name":"get_ascent","signature":"get_ascent(font_size: int) -> float","description":"Returns the average font ascent (number of pixels above the baseline).\n\t\t\t\tNote: Real ascent of the string is context-dependent and can be significantly different from the value returned by this function. Use it only as rough estimate (e.g. as the ascent of empty line).","returnType":"float"},{"name":"get_char_size","signature":"get_char_size(char: int, font_size: int) -> Vector2","description":"Returns the size of a character. Does not take kerning into account.\n\t\t\t\tNote: Do not use this function to calculate width of the string character by character, use [method get_string_size] or  instead. The height returned is the font height (see also [method get_height]) and has no relation to the glyph height.","returnType":"Vector2"},{"name":"get_descent","signature":"get_descent(font_size: int) -> float","description":"Returns the average font descent (number of pixels below the baseline).\n\t\t\t\tNote: Real descent of the string is context-dependent and can be significantly different from the value returned by this function. Use it only as rough estimate (e.g. as the descent of empty line).","returnType":"float"},{"name":"get_face_count","signature":"get_face_count() -> int","description":"Returns number of faces in the TrueType / OpenType collection.","returnType":"int"},{"name":"get_font_name","signature":"get_font_name() -> String","description":"Returns font family name.","returnType":"String"},{"name":"get_font_stretch","signature":"get_font_stretch() -> int","description":"Returns font stretch amount, compared to a normal width. A percentage value between 50% and 200%.","returnType":"int"},{"name":"get_font_style","signature":"get_font_style() -> int","description":"Returns font style flags, see [enum TextServer.FontStyle].","returnType":"int"},{"name":"get_font_style_name","signature":"get_font_style_name() -> String","description":"Returns font style name.","returnType":"String"},{"name":"get_font_weight","signature":"get_font_weight() -> int","description":"Returns weight (boldness) of the font. A value in the 100...999 range, normal font weight is 400, bold font weight is 700.","returnType":"int"},{"name":"get_height","signature":"get_height(font_size: int) -> float","description":"Returns the total average font height (ascent plus descent) in pixels.\n\t\t\t\tNote: Real height of the string is context-dependent and can be significantly different from the value returned by this function. Use it only as rough estimate (e.g. as the height of empty line).","returnType":"float"},{"name":"get_multiline_string_size","signature":"get_multiline_string_size(text: String, alignment: int, width: float, font_size: int, max_lines: int, brk_flags: int, justification_flags: int, direction: int, orientation: int) -> Vector2","description":"Returns the size of a bounding box of a string broken into the lines, taking kerning and advance into account.\n\t\t\t\tSee also [method draw_multiline_string].","returnType":"Vector2"},{"name":"get_opentype_features","signature":"get_opentype_features() -> Dictionary","description":"Returns a set of OpenType feature tags. More info: [url=https://docs.microsoft.com/en-us/typography/opentype/spec/featuretags]OpenType feature tags.","returnType":"Dictionary"},{"name":"get_ot_name_strings","signature":"get_ot_name_strings() -> Dictionary","description":"Returns  with OpenType font name strings (localized font names, version, description, license information, sample text, etc.).","returnType":"Dictionary"},{"name":"get_rids","signature":"get_rids() -> RID[]","description":"Returns  of valid  s, which can be passed to the  methods.","returnType":"RID[]"},{"name":"get_spacing","signature":"get_spacing(spacing: int) -> int","description":"Returns the spacing for the given type (see [enum TextServer.SpacingType]).","returnType":"int"},{"name":"get_string_size","signature":"get_string_size(text: String, alignment: int, width: float, font_size: int, justification_flags: int, direction: int, orientation: int) -> Vector2","description":"Returns the size of a bounding box of a single-line string, taking kerning, advance and subpixel positioning into account. See also [method get_multiline_string_size] and [method draw_string].\n\t\t\t\tFor example, to get the string size as displayed by a single-line Label, use:\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tvar string_size = $Label.get_theme_font(\"font\").get_string_size($Label.text, HORIZONTAL_ALIGNMENT_LEFT, -1, $Label.get_theme_font_size(\"font_size\"))\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tLabel label = GetNode&lt;Label&gt;(\"Label\");\n\t\t\t\tVector2 stringSize = label.GetThemeFont(\"font\").GetStringSize(label.Text, HorizontalAlignment.Left, -1, label.GetThemeFontSize(\"font_size\"));\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tNote: Since kerning, advance and subpixel positioning are taken into account by [method get_string_size], using separate [method get_string_size] calls on substrings of a string then adding the results together will return a different result compared to using a single [method get_string_size] call on the full string.\n\t\t\t\tNote: Real height of the string is context-dependent and can be significantly different from the value returned by [method get_height].","returnType":"Vector2"},{"name":"get_supported_chars","signature":"get_supported_chars() -> String","description":"Returns a string containing all the characters available in the font.\n\t\t\t\tIf a given character is included in more than one font data source, it appears only once in the returned string.","returnType":"String"},{"name":"get_supported_feature_list","signature":"get_supported_feature_list() -> Dictionary","description":"Returns list of OpenType features supported by font.","returnType":"Dictionary"},{"name":"get_supported_variation_list","signature":"get_supported_variation_list() -> Dictionary","description":"Returns list of supported [url=https://docs.microsoft.com/en-us/typography/opentype/spec/dvaraxisreg]variation coordinates, each coordinate is returned as tag: Vector3i(min_value,max_value,default_value).\n\t\t\t\tFont variations allow for continuous change of glyph characteristics along some given design axis, such as weight, width or slant.\n\t\t\t\tTo print available variation axes of a variable font:\n\t\t\t\t\n\t\t\t\tvar fv = FontVariation.new()\n\t\t\t\tfv.base_font = load(\"res://RobotoFlex.ttf\")\n\t\t\t\tvar variation_list = fv.get_supported_variation_list()\n\t\t\t\tfor tag in variation_list:\n\t\t\t\t    var name = TextServerManager.get_primary_interface().tag_to_name(tag)\n\t\t\t\t    var values = variation_list\n\t\t\t\t    print(\"variation axis: %s (%d)\\n\\tmin, max, default: %s\" % [name, tag, values])\n\t\t\t\t\n\t\t\t\tNote: To set and get variation coordinates of a , use [member FontVariation.variation_opentype].","returnType":"Dictionary"},{"name":"get_underline_position","signature":"get_underline_position(font_size: int) -> float","description":"Returns average pixel offset of the underline below the baseline.\n\t\t\t\tNote: Real underline position of the string is context-dependent and can be significantly different from the value returned by this function. Use it only as rough estimate.","returnType":"float"},{"name":"get_underline_thickness","signature":"get_underline_thickness(font_size: int) -> float","description":"Returns average thickness of the underline.\n\t\t\t\tNote: Real underline thickness of the string is context-dependent and can be significantly different from the value returned by this function. Use it only as rough estimate.","returnType":"float"},{"name":"has_char","signature":"has_char(char: int) -> bool","description":"Returns true if a Unicode [param char] is available in the font.","returnType":"bool"},{"name":"is_language_supported","signature":"is_language_supported(language: String) -> bool","description":"Returns true, if font supports given language ([url=https://en.wikipedia.org/wiki/ISO_639-1]ISO 639 code).","returnType":"bool"},{"name":"is_script_supported","signature":"is_script_supported(script: String) -> bool","description":"Returns true, if font supports given script ([url=https://en.wikipedia.org/wiki/ISO_15924]ISO 15924 code).","returnType":"bool"},{"name":"set_cache_capacity","signature":"set_cache_capacity(single_line: int, multi_line: int) -> void","description":"Sets LRU cache capacity for draw_* methods.","returnType":"void"}],"signals":[]},"FontFile":{"name":"FontFile","description":"Holds font source data and prerendered glyph cache, imported from a dynamic or a bitmap font.","inherits":"Font","properties":[{"name":"allow_system_fallback","type":"bool","description":"If set to [code]true[/code], system fonts can be automatically used as fallbacks."},{"name":"antialiasing","type":"int","description":"Font anti-aliasing mode."},{"name":"data","type":"PackedByteArray","description":"Contents of the dynamic font source file."},{"name":"disable_embedded_bitmaps","type":"bool","description":"If set to [code]true[/code], embedded font bitmap loading is disabled (bitmap-only and color fonts ignore this property)."},{"name":"fixed_size","type":"int","description":"Font size, used only for the bitmap fonts."},{"name":"fixed_size_scale_mode","type":"int","description":"Scaling mode, used only for the bitmap fonts with [member fixed_size] greater than zero."},{"name":"font_name","type":"String","description":"Font family name."},{"name":"font_stretch","type":"int","description":"Font stretch amount, compared to a normal width. A percentage value between [code]50%[/code] and [code]200%[/code]."},{"name":"font_style","type":"int","description":"Font style flags, see [enum TextServer.FontStyle]."},{"name":"font_weight","type":"int","description":"Weight (boldness) of the font. A value in the [code]100...999[/code] range, normal font weight is [code]400[/code], bold font weight is [code]700[/code]."},{"name":"force_autohinter","type":"bool","description":"If set to [code]true[/code], auto-hinting is supported and preferred over font built-in hinting. Used by dynamic fonts only (MSDF fonts don't support hinting)."},{"name":"generate_mipmaps","type":"bool","description":"If set to [code]true[/code], generate mipmaps for the font textures."},{"name":"hinting","type":"int","description":"Font hinting mode. Used by dynamic fonts only."},{"name":"keep_rounding_remainders","type":"bool","description":"If set to [code]true[/code], when aligning glyphs to the pixel boundaries rounding remainders are accumulated to ensure more uniform glyph distribution. This setting has no effect if subpixel positioning is enabled."},{"name":"msdf_pixel_range","type":"int","description":"The width of the range around the shape between the minimum and maximum representable signed distance. If using font outlines, [member msdf_pixel_range] must be set to at least [i]twice[/i] the size of the largest font outline. The default [member msdf_pixel_range] value of [code]16[/code] allows outline sizes up to [code]8[/code] to look correct."},{"name":"msdf_size","type":"int","description":"Source font size used to generate MSDF textures. Higher values allow for more precision, but are slower to render and require more memory. Only increase this value if you notice a visible lack of precision in glyph rendering."},{"name":"multichannel_signed_distance_field","type":"bool","description":"If set to [code]true[/code], glyphs of all sizes are rendered using single multichannel signed distance field (MSDF) generated from the dynamic font vector data. Since this approach does not rely on rasterizing the font every time its size changes, this allows for resizing the font in real-time without any performance penalty. Text will also not look grainy for [Control]s that are scaled down (or for [Label3D]s viewed from a long distance). As a downside, font hinting is not available with MSDF. The lack of font hinting may result in less crisp and less readable fonts at small sizes.\n\t\t\t[b]Note:[/b] If using font outlines, [member msdf_pixel_range] must be set to at least [i]twice[/i] the size of the largest font outline.\n\t\t\t[b]Note:[/b] MSDF font rendering does not render glyphs with overlapping shapes correctly. Overlapping shapes are not valid per the OpenType standard, but are still commonly found in many font files, especially those converted by Google Fonts. To avoid issues with overlapping glyphs, consider downloading the font file directly from the type foundry instead of relying on Google Fonts."},{"name":"opentype_feature_overrides","type":"Dictionary","description":"Font OpenType feature set override."},{"name":"oversampling","type":"float","description":"Font oversampling factor. If set to [code]0.0[/code], the global oversampling factor is used instead. Used by dynamic fonts only (MSDF fonts ignore oversampling)."},{"name":"style_name","type":"String","description":"Font style name."},{"name":"subpixel_positioning","type":"int","description":"Font glyph subpixel positioning mode. Subpixel positioning provides shaper text and better kerning for smaller font sizes, at the cost of higher memory usage and lower font rasterization speed. Use [constant TextServer.SUBPIXEL_POSITIONING_AUTO] to automatically enable it based on the font size."}],"methods":[{"name":"clear_cache","signature":"clear_cache() -> void","description":"Removes all font cache entries.","returnType":"void"},{"name":"clear_glyphs","signature":"clear_glyphs(cache_index: int, size: Vector2i) -> void","description":"Removes all rendered glyph information from the cache entry.\n\t\t\t\tNote: This function will not remove textures associated with the glyphs, use [method remove_texture] to remove them manually.","returnType":"void"},{"name":"clear_kerning_map","signature":"clear_kerning_map(cache_index: int, size: int) -> void","description":"Removes all kerning overrides.","returnType":"void"},{"name":"clear_size_cache","signature":"clear_size_cache(cache_index: int) -> void","description":"Removes all font sizes from the cache entry.","returnType":"void"},{"name":"clear_textures","signature":"clear_textures(cache_index: int, size: Vector2i) -> void","description":"Removes all textures from font cache entry.\n\t\t\t\tNote: This function will not remove glyphs associated with the texture, use [method remove_glyph] to remove them manually.","returnType":"void"},{"name":"get_cache_ascent","signature":"get_cache_ascent(cache_index: int, size: int) -> float","description":"Returns the font ascent (number of pixels above the baseline).","returnType":"float"},{"name":"get_cache_count","signature":"get_cache_count() -> int","description":"Returns number of the font cache entries.","returnType":"int"},{"name":"get_cache_descent","signature":"get_cache_descent(cache_index: int, size: int) -> float","description":"Returns the font descent (number of pixels below the baseline).","returnType":"float"},{"name":"get_cache_scale","signature":"get_cache_scale(cache_index: int, size: int) -> float","description":"Returns scaling factor of the color bitmap font.","returnType":"float"},{"name":"get_cache_underline_position","signature":"get_cache_underline_position(cache_index: int, size: int) -> float","description":"Returns pixel offset of the underline below the baseline.","returnType":"float"},{"name":"get_cache_underline_thickness","signature":"get_cache_underline_thickness(cache_index: int, size: int) -> float","description":"Returns thickness of the underline in pixels.","returnType":"float"},{"name":"get_char_from_glyph_index","signature":"get_char_from_glyph_index(size: int, glyph_index: int) -> int","description":"Returns character code associated with [param glyph_index], or 0 if [param glyph_index] is invalid. See [method get_glyph_index].","returnType":"int"},{"name":"get_embolden","signature":"get_embolden(cache_index: int) -> float","description":"Returns embolden strength, if is not equal to zero, emboldens the font outlines. Negative values reduce the outline thickness.","returnType":"float"},{"name":"get_extra_baseline_offset","signature":"get_extra_baseline_offset(cache_index: int) -> float","description":"Returns extra baseline offset (as a fraction of font height).","returnType":"float"},{"name":"get_extra_spacing","signature":"get_extra_spacing(cache_index: int, spacing: int) -> int","description":"Returns spacing for [param spacing] (see [enum TextServer.SpacingType]) in pixels (not relative to the font size).","returnType":"int"},{"name":"get_face_index","signature":"get_face_index(cache_index: int) -> int","description":"Returns an active face index in the TrueType / OpenType collection.","returnType":"int"},{"name":"get_glyph_advance","signature":"get_glyph_advance(cache_index: int, size: int, glyph: int) -> Vector2","description":"Returns glyph advance (offset of the next glyph).\n\t\t\t\tNote: Advance for glyphs outlines is the same as the base glyph advance and is not saved.","returnType":"Vector2"},{"name":"get_glyph_index","signature":"get_glyph_index(size: int, char: int, variation_selector: int) -> int","description":"Returns the glyph index of a [param char], optionally modified by the [param variation_selector].","returnType":"int"},{"name":"get_glyph_list","signature":"get_glyph_list(cache_index: int, size: Vector2i) -> PackedInt32Array","description":"Returns list of rendered glyphs in the cache entry.","returnType":"PackedInt32Array"},{"name":"get_glyph_offset","signature":"get_glyph_offset(cache_index: int, size: Vector2i, glyph: int) -> Vector2","description":"Returns glyph offset from the baseline.","returnType":"Vector2"},{"name":"get_glyph_size","signature":"get_glyph_size(cache_index: int, size: Vector2i, glyph: int) -> Vector2","description":"Returns glyph size.","returnType":"Vector2"},{"name":"get_glyph_texture_idx","signature":"get_glyph_texture_idx(cache_index: int, size: Vector2i, glyph: int) -> int","description":"Returns index of the cache texture containing the glyph.","returnType":"int"},{"name":"get_glyph_uv_rect","signature":"get_glyph_uv_rect(cache_index: int, size: Vector2i, glyph: int) -> Rect2","description":"Returns rectangle in the cache texture containing the glyph.","returnType":"Rect2"},{"name":"get_kerning","signature":"get_kerning(cache_index: int, size: int, glyph_pair: Vector2i) -> Vector2","description":"Returns kerning for the pair of glyphs.","returnType":"Vector2"},{"name":"get_kerning_list","signature":"get_kerning_list(cache_index: int, size: int) -> Vector2i[]","description":"Returns list of the kerning overrides.","returnType":"Vector2i[]"},{"name":"get_language_support_override","signature":"get_language_support_override(language: String) -> bool","description":"Returns true if support override is enabled for the [param language].","returnType":"bool"},{"name":"get_language_support_overrides","signature":"get_language_support_overrides() -> PackedStringArray","description":"Returns list of language support overrides.","returnType":"PackedStringArray"},{"name":"get_script_support_override","signature":"get_script_support_override(script: String) -> bool","description":"Returns true if support override is enabled for the [param script].","returnType":"bool"},{"name":"get_script_support_overrides","signature":"get_script_support_overrides() -> PackedStringArray","description":"Returns list of script support overrides.","returnType":"PackedStringArray"},{"name":"get_size_cache_list","signature":"get_size_cache_list(cache_index: int) -> Vector2i[]","description":"Returns list of the font sizes in the cache. Each size is  with font size and outline size.","returnType":"Vector2i[]"},{"name":"get_texture_count","signature":"get_texture_count(cache_index: int, size: Vector2i) -> int","description":"Returns number of textures used by font cache entry.","returnType":"int"},{"name":"get_texture_image","signature":"get_texture_image(cache_index: int, size: Vector2i, texture_index: int) -> Image","description":"Returns a copy of the font cache texture image.","returnType":"Image"},{"name":"get_texture_offsets","signature":"get_texture_offsets(cache_index: int, size: Vector2i, texture_index: int) -> PackedInt32Array","description":"Returns a copy of the array containing glyph packing data.","returnType":"PackedInt32Array"},{"name":"get_transform","signature":"get_transform(cache_index: int) -> Transform2D","description":"Returns 2D transform, applied to the font outlines, can be used for slanting, flipping and rotating glyphs.","returnType":"Transform2D"},{"name":"get_variation_coordinates","signature":"get_variation_coordinates(cache_index: int) -> Dictionary","description":"Returns variation coordinates for the specified font cache entry. See [method Font.get_supported_variation_list] for more info.","returnType":"Dictionary"},{"name":"load_bitmap_font","signature":"load_bitmap_font(path: String) -> int","description":"Loads an AngelCode BMFont (.fnt, .font) bitmap font from file [param path].\n\t\t\t\tWarning: This method should only be used in the editor or in cases when you need to load external fonts at run-time, such as fonts located at the user:// directory.","returnType":"int"},{"name":"load_dynamic_font","signature":"load_dynamic_font(path: String) -> int","description":"Loads a TrueType (.ttf), OpenType (.otf), WOFF (.woff), WOFF2 (.woff2) or Type 1 (.pfb, .pfm) dynamic font from file [param path].\n\t\t\t\tWarning: This method should only be used in the editor or in cases when you need to load external fonts at run-time, such as fonts located at the user:// directory.","returnType":"int"},{"name":"remove_cache","signature":"remove_cache(cache_index: int) -> void","description":"Removes specified font cache entry.","returnType":"void"},{"name":"remove_glyph","signature":"remove_glyph(cache_index: int, size: Vector2i, glyph: int) -> void","description":"Removes specified rendered glyph information from the cache entry.\n\t\t\t\tNote: This function will not remove textures associated with the glyphs, use [method remove_texture] to remove them manually.","returnType":"void"},{"name":"remove_kerning","signature":"remove_kerning(cache_index: int, size: int, glyph_pair: Vector2i) -> void","description":"Removes kerning override for the pair of glyphs.","returnType":"void"},{"name":"remove_language_support_override","signature":"remove_language_support_override(language: String) -> void","description":"Remove language support override.","returnType":"void"},{"name":"remove_script_support_override","signature":"remove_script_support_override(script: String) -> void","description":"Removes script support override.","returnType":"void"},{"name":"remove_size_cache","signature":"remove_size_cache(cache_index: int, size: Vector2i) -> void","description":"Removes specified font size from the cache entry.","returnType":"void"},{"name":"remove_texture","signature":"remove_texture(cache_index: int, size: Vector2i, texture_index: int) -> void","description":"Removes specified texture from the cache entry.\n\t\t\t\tNote: This function will not remove glyphs associated with the texture. Remove them manually using [method remove_glyph].","returnType":"void"},{"name":"render_glyph","signature":"render_glyph(cache_index: int, size: Vector2i, index: int) -> void","description":"Renders specified glyph to the font cache texture.","returnType":"void"},{"name":"render_range","signature":"render_range(cache_index: int, size: Vector2i, start: int, end: int) -> void","description":"Renders the range of characters to the font cache texture.","returnType":"void"},{"name":"set_cache_ascent","signature":"set_cache_ascent(cache_index: int, size: int, ascent: float) -> void","description":"Sets the font ascent (number of pixels above the baseline).","returnType":"void"},{"name":"set_cache_descent","signature":"set_cache_descent(cache_index: int, size: int, descent: float) -> void","description":"Sets the font descent (number of pixels below the baseline).","returnType":"void"},{"name":"set_cache_scale","signature":"set_cache_scale(cache_index: int, size: int, scale: float) -> void","description":"Sets scaling factor of the color bitmap font.","returnType":"void"},{"name":"set_cache_underline_position","signature":"set_cache_underline_position(cache_index: int, size: int, underline_position: float) -> void","description":"Sets pixel offset of the underline below the baseline.","returnType":"void"},{"name":"set_cache_underline_thickness","signature":"set_cache_underline_thickness(cache_index: int, size: int, underline_thickness: float) -> void","description":"Sets thickness of the underline in pixels.","returnType":"void"},{"name":"set_embolden","signature":"set_embolden(cache_index: int, strength: float) -> void","description":"Sets embolden strength, if is not equal to zero, emboldens the font outlines. Negative values reduce the outline thickness.","returnType":"void"},{"name":"set_extra_baseline_offset","signature":"set_extra_baseline_offset(cache_index: int, baseline_offset: float) -> void","description":"Sets extra baseline offset (as a fraction of font height).","returnType":"void"},{"name":"set_extra_spacing","signature":"set_extra_spacing(cache_index: int, spacing: int, value: int) -> void","description":"Sets the spacing for [param spacing] (see [enum TextServer.SpacingType]) to [param value] in pixels (not relative to the font size).","returnType":"void"},{"name":"set_face_index","signature":"set_face_index(cache_index: int, face_index: int) -> void","description":"Sets an active face index in the TrueType / OpenType collection.","returnType":"void"},{"name":"set_glyph_advance","signature":"set_glyph_advance(cache_index: int, size: int, glyph: int, advance: Vector2) -> void","description":"Sets glyph advance (offset of the next glyph).\n\t\t\t\tNote: Advance for glyphs outlines is the same as the base glyph advance and is not saved.","returnType":"void"},{"name":"set_glyph_offset","signature":"set_glyph_offset(cache_index: int, size: Vector2i, glyph: int, offset: Vector2) -> void","description":"Sets glyph offset from the baseline.","returnType":"void"},{"name":"set_glyph_size","signature":"set_glyph_size(cache_index: int, size: Vector2i, glyph: int, gl_size: Vector2) -> void","description":"Sets glyph size.","returnType":"void"},{"name":"set_glyph_texture_idx","signature":"set_glyph_texture_idx(cache_index: int, size: Vector2i, glyph: int, texture_idx: int) -> void","description":"Sets index of the cache texture containing the glyph.","returnType":"void"},{"name":"set_glyph_uv_rect","signature":"set_glyph_uv_rect(cache_index: int, size: Vector2i, glyph: int, uv_rect: Rect2) -> void","description":"Sets rectangle in the cache texture containing the glyph.","returnType":"void"},{"name":"set_kerning","signature":"set_kerning(cache_index: int, size: int, glyph_pair: Vector2i, kerning: Vector2) -> void","description":"Sets kerning for the pair of glyphs.","returnType":"void"},{"name":"set_language_support_override","signature":"set_language_support_override(language: String, supported: bool) -> void","description":"Adds override for [method Font.is_language_supported].","returnType":"void"},{"name":"set_script_support_override","signature":"set_script_support_override(script: String, supported: bool) -> void","description":"Adds override for [method Font.is_script_supported].","returnType":"void"},{"name":"set_texture_image","signature":"set_texture_image(cache_index: int, size: Vector2i, texture_index: int, image: Image) -> void","description":"Sets font cache texture image.","returnType":"void"},{"name":"set_texture_offsets","signature":"set_texture_offsets(cache_index: int, size: Vector2i, texture_index: int, offset: PackedInt32Array) -> void","description":"Sets array containing glyph packing data.","returnType":"void"},{"name":"set_transform","signature":"set_transform(cache_index: int, transform: Transform2D) -> void","description":"Sets 2D transform, applied to the font outlines, can be used for slanting, flipping, and rotating glyphs.","returnType":"void"},{"name":"set_variation_coordinates","signature":"set_variation_coordinates(cache_index: int, variation_coordinates: Dictionary) -> void","description":"Sets variation coordinates for the specified font cache entry. See [method Font.get_supported_variation_list] for more info.","returnType":"void"}],"signals":[]},"FontVariation":{"name":"FontVariation","description":"A variation of a font with additional settings.","inherits":"Font","properties":[{"name":"base_font","type":"Font","description":"Base font used to create a variation. If not set, default [Theme] font is used."},{"name":"baseline_offset","type":"float","description":"Extra baseline offset (as a fraction of font height)."},{"name":"opentype_features","type":"Dictionary","description":"A set of OpenType feature tags. More info: [url=https://docs.microsoft.com/en-us/typography/opentype/spec/featuretags]OpenType feature tags[/url]."},{"name":"spacing_bottom","type":"int","description":"Extra spacing at the bottom of the line in pixels."},{"name":"spacing_glyph","type":"int","description":"Extra spacing between graphical glyphs."},{"name":"spacing_space","type":"int","description":"Extra width of the space glyphs."},{"name":"spacing_top","type":"int","description":"Extra spacing at the top of the line in pixels."},{"name":"variation_embolden","type":"float","description":"If is not equal to zero, emboldens the font outlines. Negative values reduce the outline thickness.\n\t\t\t[b]Note:[/b] Emboldened fonts might have self-intersecting outlines, which will prevent MSDF fonts and [TextMesh] from working correctly."},{"name":"variation_face_index","type":"int","description":"Active face index in the TrueType / OpenType collection file."},{"name":"variation_opentype","type":"Dictionary","description":"Font OpenType variation coordinates. More info: [url=https://docs.microsoft.com/en-us/typography/opentype/spec/dvaraxisreg]OpenType variation tags[/url].\n\t\t\t[b]Note:[/b] This [Dictionary] uses OpenType tags as keys. Variation axes can be identified both by tags ([int], e.g. [code]0x77678674[/code]) and names ([String], e.g. [code]wght[/code]). Some axes might be accessible by multiple names. For example, [code]wght[/code] refers to the same axis as [code]weight[/code]. Tags on the other hand are unique. To convert between names and tags, use [method TextServer.name_to_tag] and [method TextServer.tag_to_name].\n\t\t\t[b]Note:[/b] To get available variation axes of a font, use [method Font.get_supported_variation_list]."},{"name":"variation_transform","type":"Transform2D","description":"2D transform, applied to the font outlines, can be used for slanting, flipping and rotating glyphs.\n\t\t\tFor example, to simulate italic typeface by slanting, apply the following transform [code]Transform2D(1.0, slant, 0.0, 1.0, 0.0, 0.0)[/code]."}],"methods":[{"name":"set_spacing","signature":"set_spacing(spacing: int, value: int) -> void","description":"Sets the spacing for [param spacing] (see [enum TextServer.SpacingType]) to [param value] in pixels (not relative to the font size).","returnType":"void"}],"signals":[]},"FramebufferCacheRD":{"name":"FramebufferCacheRD","description":"Framebuffer cache manager for Rendering Device based renderers.","inherits":"Object","properties":[],"methods":[{"name":"get_cache_multipass","signature":"get_cache_multipass(textures: RID[], passes: RDFramebufferPass[], views: int) -> RID","description":"Creates, or obtains a cached, framebuffer. [param textures] lists textures accessed. [param passes] defines the subpasses and texture allocation, if left empty a single pass is created and textures are allocated depending on their usage flags. [param views] defines the number of views used when rendering.","returnType":"RID"}],"signals":[]},"GDExtension":{"name":"GDExtension","description":"A native library for GDExtension.","inherits":"Resource","properties":[],"methods":[{"name":"get_minimum_library_initialization_level","signature":"get_minimum_library_initialization_level() -> int","description":"Returns the lowest level required for this extension to be properly initialized (see the [enum InitializationLevel] enum).","returnType":"int"},{"name":"is_library_open","signature":"is_library_open() -> bool","description":"Returns true if this extension's library has been opened.","returnType":"bool"}],"signals":[]},"GDExtensionManager":{"name":"GDExtensionManager","description":"Provides access to GDExtension functionality.","inherits":"Object","properties":[],"methods":[{"name":"get_extension","signature":"get_extension(path: String) -> GDExtension","description":"Returns the  at the given file [param path], or null if it has not been loaded or does not exist.","returnType":"GDExtension"},{"name":"get_loaded_extensions","signature":"get_loaded_extensions() -> PackedStringArray","description":"Returns the file paths of all currently loaded extensions.","returnType":"PackedStringArray"},{"name":"is_extension_loaded","signature":"is_extension_loaded(path: String) -> bool","description":"Returns true if the extension at the given file [param path] has already been loaded successfully. See also [method get_loaded_extensions].","returnType":"bool"},{"name":"load_extension","signature":"load_extension(path: String) -> int","description":"Loads an extension by absolute file path. The [param path] needs to point to a valid . Returns [constant LOAD_STATUS_OK] if successful.","returnType":"int"},{"name":"reload_extension","signature":"reload_extension(path: String) -> int","description":"Reloads the extension at the given file path. The [param path] needs to point to a valid , otherwise this method may return either [constant LOAD_STATUS_NOT_LOADED] or [constant LOAD_STATUS_FAILED].\n\t\t\t\tNote: You can only reload extensions in the editor. In release builds, this method always fails and returns [constant LOAD_STATUS_FAILED].","returnType":"int"},{"name":"unload_extension","signature":"unload_extension(path: String) -> int","description":"Unloads an extension by file path. The [param path] needs to point to an already loaded , otherwise this method returns [constant LOAD_STATUS_NOT_LOADED].","returnType":"int"}],"signals":[{"name":"extension_loaded","description":"Emitted after the editor has finished loading a new extension.\n\t\t\t\t[b]Note:[/b] This signal is only emitted in editor builds."},{"name":"extension_unloading","description":"Emitted before the editor starts unloading an extension.\n\t\t\t\t[b]Note:[/b] This signal is only emitted in editor builds."},{"name":"extensions_reloaded","description":"Emitted after the editor has finished reloading one or more extensions."}]},"GPUParticles2D":{"name":"GPUParticles2D","description":"A 2D particle emitter.","inherits":"Node2D","properties":[{"name":"amount","type":"int","description":"The number of particles to emit in one emission cycle. The effective emission rate is [code](amount * amount_ratio) / lifetime[/code] particles per second. Higher values will increase GPU requirements, even if not all particles are visible at a given time or if [member amount_ratio] is decreased.\n\t\t\t[b]Note:[/b] Changing this value will cause the particle system to restart. To avoid this, change [member amount_ratio] instead."},{"name":"amount_ratio","type":"float","description":"The ratio of particles that should actually be emitted. If set to a value lower than [code]1.0[/code], this will set the amount of emitted particles throughout the lifetime to [code]amount * amount_ratio[/code]. Unlike changing [member amount], changing [member amount_ratio] while emitting does not affect already-emitted particles and doesn't cause the particle system to restart. [member amount_ratio] can be used to create effects that make the number of emitted particles vary over time.\n\t\t\t[b]Note:[/b] Reducing the [member amount_ratio] has no performance benefit, since resources need to be allocated and processed for the total [member amount] of particles regardless of the [member amount_ratio]. If you don't intend to change the number of particles emitted while the particles are emitting, make sure [member amount_ratio] is set to [code]1[/code] and change [member amount] to your liking instead."},{"name":"collision_base_size","type":"float","description":"Multiplier for particle's collision radius. [code]1.0[/code] corresponds to the size of the sprite. If particles appear to sink into the ground when colliding, increase this value. If particles appear to float when colliding, decrease this value. Only effective if [member ParticleProcessMaterial.collision_mode] is [constant ParticleProcessMaterial.COLLISION_RIGID] or [constant ParticleProcessMaterial.COLLISION_HIDE_ON_CONTACT].\n\t\t\t[b]Note:[/b] Particles always have a spherical collision shape."},{"name":"draw_order","type":"int","description":"Particle draw order. Uses [enum DrawOrder] values."},{"name":"emitting","type":"bool","description":"If [code]true[/code], particles are being emitted. [member emitting] can be used to start and stop particles from emitting. However, if [member one_shot] is [code]true[/code] setting [member emitting] to [code]true[/code] will not restart the emission cycle unless all active particles have finished processing. Use the [signal finished] signal to be notified once all active particles finish processing.\n\t\t\t[b]Note:[/b] For [member one_shot] emitters, due to the particles being computed on the GPU, there may be a short period after receiving the [signal finished] signal during which setting this to [code]true[/code] will not restart the emission cycle.\n\t\t\t[b]Tip:[/b] If your [member one_shot] emitter needs to immediately restart emitting particles once [signal finished] signal is received, consider calling [method restart] instead of setting [member emitting]."},{"name":"explosiveness","type":"float","description":"How rapidly particles in an emission cycle are emitted. If greater than [code]0[/code], there will be a gap in emissions before the next cycle begins."},{"name":"fixed_fps","type":"int","description":"The particle system's frame rate is fixed to a value. For example, changing the value to 2 will make the particles render at 2 frames per second. Note this does not slow down the simulation of the particle system itself."},{"name":"fract_delta","type":"bool","description":"If [code]true[/code], results in fractional delta calculation which has a smoother particles display effect."},{"name":"interp_to_end","type":"float","description":"Causes all the particles in this node to interpolate towards the end of their lifetime.\n\t\t\t[b]Note:[/b] This only works when used with a [ParticleProcessMaterial]. It needs to be manually implemented for custom process shaders."},{"name":"interpolate","type":"bool","description":"Enables particle interpolation, which makes the particle movement smoother when their [member fixed_fps] is lower than the screen refresh rate."},{"name":"lifetime","type":"float","description":"The amount of time each particle will exist (in seconds). The effective emission rate is [code](amount * amount_ratio) / lifetime[/code] particles per second."},{"name":"local_coords","type":"bool","description":"If [code]true[/code], particles use the parent node's coordinate space (known as local coordinates). This will cause particles to move and rotate along the [GPUParticles2D] node (and its parents) when it is moved or rotated. If [code]false[/code], particles use global coordinates; they will not move or rotate along the [GPUParticles2D] node (and its parents) when it is moved or rotated."},{"name":"one_shot","type":"bool","description":"If [code]true[/code], only one emission cycle occurs. If set [code]true[/code] during a cycle, emission will stop at the cycle's end."},{"name":"preprocess","type":"float","description":"Particle system starts as if it had already run for this many seconds.\n\t\t\t[b]Note:[/b] This can be very expensive if set to a high number as it requires running the particle shader a number of times equal to the [member fixed_fps] (or 30, if [member fixed_fps] is 0) for every second. In extreme cases it can even lead to a GPU crash due to the volume of work done in a single frame."},{"name":"process_material","type":"Material","description":"[Material] for processing particles. Can be a [ParticleProcessMaterial] or a [ShaderMaterial]."},{"name":"randomness","type":"float","description":"Emission lifetime randomness ratio."},{"name":"seed","type":"int","description":"Sets the random seed used by the particle system. Only effective if [member use_fixed_seed] is [code]true[/code]."},{"name":"speed_scale","type":"float","description":"Particle system's running speed scaling ratio. A value of [code]0[/code] can be used to pause the particles."},{"name":"sub_emitter","type":"NodePath","description":"Path to another [GPUParticles2D] node that will be used as a subemitter (see [member ParticleProcessMaterial.sub_emitter_mode]). Subemitters can be used to achieve effects such as fireworks, sparks on collision, bubbles popping into water drops, and more.\n\t\t\t[b]Note:[/b] When [member sub_emitter] is set, the target [GPUParticles2D] node will no longer emit particles on its own."},{"name":"texture","type":"Texture2D","description":"Particle texture. If [code]null[/code], particles will be squares with a size of 1×1 pixels.\n\t\t\t[b]Note:[/b] To use a flipbook texture, assign a new [CanvasItemMaterial] to the [GPUParticles2D]'s [member CanvasItem.material] property, then enable [member CanvasItemMaterial.particles_animation] and set [member CanvasItemMaterial.particles_anim_h_frames], [member CanvasItemMaterial.particles_anim_v_frames], and [member CanvasItemMaterial.particles_anim_loop] to match the flipbook texture."},{"name":"trail_enabled","type":"bool","description":"If [code]true[/code], enables particle trails using a mesh skinning system.\n\t\t\t[b]Note:[/b] Unlike [GPUParticles3D], the number of trail sections and subdivisions is set with the [member trail_sections] and [member trail_section_subdivisions] properties."},{"name":"trail_lifetime","type":"float","description":"The amount of time the particle's trail should represent (in seconds). Only effective if [member trail_enabled] is [code]true[/code]."},{"name":"trail_section_subdivisions","type":"int","description":"The number of subdivisions to use for the particle trail rendering. Higher values can result in smoother trail curves, at the cost of performance due to increased mesh complexity. See also [member trail_sections]. Only effective if [member trail_enabled] is [code]true[/code]."},{"name":"trail_sections","type":"int","description":"The number of sections to use for the particle trail rendering. Higher values can result in smoother trail curves, at the cost of performance due to increased mesh complexity. See also [member trail_section_subdivisions]. Only effective if [member trail_enabled] is [code]true[/code]."},{"name":"use_fixed_seed","type":"bool","description":"If [code]true[/code], particles will use the same seed for every simulation using the seed defined in [member seed]. This is useful for situations where the visual outcome should be consistent across replays, for example when using Movie Maker mode."},{"name":"visibility_rect","type":"Rect2","description":"The [Rect2] that determines the node's region which needs to be visible on screen for the particle system to be active.\n\t\t\tGrow the rect if particles suddenly appear/disappear when the node enters/exits the screen. The [Rect2] can be grown via code or with the [b]Particles → Generate Visibility Rect[/b] editor tool."}],"methods":[{"name":"capture_rect","signature":"capture_rect() -> Rect2","description":"Returns a rectangle containing the positions of all existing particles.\n\t\t\t\tNote: When using threaded rendering this method synchronizes the rendering thread. Calling it often may have a negative impact on performance.","returnType":"Rect2"},{"name":"convert_from_particles","signature":"convert_from_particles(particles: Node) -> void","description":"Sets this node's properties to match a given  node.","returnType":"void"},{"name":"emit_particle","signature":"emit_particle(xform: Transform2D, velocity: Vector2, color: Color, custom: Color, flags: int) -> void","description":"Emits a single particle. Whether [param xform], [param velocity], [param color] and [param custom] are applied depends on the value of [param flags]. See [enum EmitFlags].\n\t\t\t\tThe default ParticleProcessMaterial will overwrite [param color] and use the contents of [param custom] as (rotation, age, animation, lifetime).\n\t\t\t\tNote: [method emit_particle] is only supported on the Forward+ and Mobile rendering methods, not Compatibility.","returnType":"void"},{"name":"request_particles_process","signature":"request_particles_process(process_time: float) -> void","description":"Requests the particles to process for extra process time during a single frame.\n\t\t\t\tUseful for particle playback, if used in combination with [member use_fixed_seed] or by calling [method restart] with parameter keep_seed set to true.","returnType":"void"},{"name":"restart","signature":"restart(keep_seed: bool) -> void","description":"Restarts the particle emission cycle, clearing existing particles. To avoid particles vanishing from the viewport, wait for the [signal finished] signal before calling.\n\t\t\t\tNote: The [signal finished] signal is only emitted by [member one_shot] emitters.\n\t\t\t\tIf [param keep_seed] is true, the current random seed will be preserved. Useful for seeking and playback.","returnType":"void"}],"signals":[{"name":"finished","description":"Emitted when all active particles have finished processing. To immediately restart the emission cycle, call [method restart].\n\t\t\t\tThis signal is never emitted when [member one_shot] is disabled, as particles will be emitted and processed continuously.\n\t\t\t\t[b]Note:[/b] For [member one_shot] emitters, due to the particles being computed on the GPU, there may be a short period after receiving the signal during which setting [member emitting] to [code]true[/code] will not restart the emission cycle. This delay is avoided by instead calling [method restart]."}]},"GPUParticles3D":{"name":"GPUParticles3D","description":"A 3D particle emitter.","inherits":"GeometryInstance3D","properties":[{"name":"amount","type":"int","description":"The number of particles to emit in one emission cycle. The effective emission rate is [code](amount * amount_ratio) / lifetime[/code] particles per second. Higher values will increase GPU requirements, even if not all particles are visible at a given time or if [member amount_ratio] is decreased.\n\t\t\t[b]Note:[/b] Changing this value will cause the particle system to restart. To avoid this, change [member amount_ratio] instead."},{"name":"amount_ratio","type":"float","description":"The ratio of particles that should actually be emitted. If set to a value lower than [code]1.0[/code], this will set the amount of emitted particles throughout the lifetime to [code]amount * amount_ratio[/code]. Unlike changing [member amount], changing [member amount_ratio] while emitting does not affect already-emitted particles and doesn't cause the particle system to restart. [member amount_ratio] can be used to create effects that make the number of emitted particles vary over time.\n\t\t\t[b]Note:[/b] Reducing the [member amount_ratio] has no performance benefit, since resources need to be allocated and processed for the total [member amount] of particles regardless of the [member amount_ratio]. If you don't intend to change the number of particles emitted while the particles are emitting, make sure [member amount_ratio] is set to [code]1[/code] and change [member amount] to your liking instead."},{"name":"collision_base_size","type":"float","description":"The base diameter for particle collision in meters. If particles appear to sink into the ground when colliding, increase this value. If particles appear to float when colliding, decrease this value. Only effective if [member ParticleProcessMaterial.collision_mode] is [constant ParticleProcessMaterial.COLLISION_RIGID] or [constant ParticleProcessMaterial.COLLISION_HIDE_ON_CONTACT].\n\t\t\t[b]Note:[/b] Particles always have a spherical collision shape."},{"name":"draw_order","type":"int","description":"Particle draw order. Uses [enum DrawOrder] values.\n\t\t\t[b]Note:[/b] [constant DRAW_ORDER_INDEX] is the only option that supports motion vectors for effects like TAA. It is suggested to use this draw order if the particles are opaque to fix ghosting artifacts."},{"name":"draw_pass_1","type":"Mesh","description":"[Mesh] that is drawn for the first draw pass."},{"name":"draw_pass_2","type":"Mesh","description":"[Mesh] that is drawn for the second draw pass."},{"name":"draw_pass_3","type":"Mesh","description":"[Mesh] that is drawn for the third draw pass."},{"name":"draw_pass_4","type":"Mesh","description":"[Mesh] that is drawn for the fourth draw pass."},{"name":"draw_passes","type":"int","description":"The number of draw passes when rendering particles."},{"name":"draw_skin","type":"Skin","description":""},{"name":"emitting","type":"bool","description":"If [code]true[/code], particles are being emitted. [member emitting] can be used to start and stop particles from emitting. However, if [member one_shot] is [code]true[/code] setting [member emitting] to [code]true[/code] will not restart the emission cycle unless all active particles have finished processing. Use the [signal finished] signal to be notified once all active particles finish processing.\n\t\t\t[b]Note:[/b] For [member one_shot] emitters, due to the particles being computed on the GPU, there may be a short period after receiving the [signal finished] signal during which setting this to [code]true[/code] will not restart the emission cycle.\n\t\t\t[b]Tip:[/b] If your [member one_shot] emitter needs to immediately restart emitting particles once [signal finished] signal is received, consider calling [method restart] instead of setting [member emitting]."},{"name":"explosiveness","type":"float","description":"Time ratio between each emission. If [code]0[/code], particles are emitted continuously. If [code]1[/code], all particles are emitted simultaneously."},{"name":"fixed_fps","type":"int","description":"The particle system's frame rate is fixed to a value. For example, changing the value to 2 will make the particles render at 2 frames per second. Note this does not slow down the simulation of the particle system itself."},{"name":"fract_delta","type":"bool","description":"If [code]true[/code], results in fractional delta calculation which has a smoother particles display effect."},{"name":"interp_to_end","type":"float","description":"Causes all the particles in this node to interpolate towards the end of their lifetime.\n\t\t\t[b]Note:[/b] This only works when used with a [ParticleProcessMaterial]. It needs to be manually implemented for custom process shaders."},{"name":"interpolate","type":"bool","description":"Enables particle interpolation, which makes the particle movement smoother when their [member fixed_fps] is lower than the screen refresh rate."},{"name":"lifetime","type":"float","description":"The amount of time each particle will exist (in seconds). The effective emission rate is [code](amount * amount_ratio) / lifetime[/code] particles per second."},{"name":"local_coords","type":"bool","description":"If [code]true[/code], particles use the parent node's coordinate space (known as local coordinates). This will cause particles to move and rotate along the [GPUParticles3D] node (and its parents) when it is moved or rotated. If [code]false[/code], particles use global coordinates; they will not move or rotate along the [GPUParticles3D] node (and its parents) when it is moved or rotated."},{"name":"one_shot","type":"bool","description":"If [code]true[/code], only the number of particles equal to [member amount] will be emitted."},{"name":"preprocess","type":"float","description":"Amount of time to preprocess the particles before animation starts. Lets you start the animation some time after particles have started emitting.\n\t\t\t[b]Note:[/b] This can be very expensive if set to a high number as it requires running the particle shader a number of times equal to the [member fixed_fps] (or 30, if [member fixed_fps] is 0) for every second. In extreme cases it can even lead to a GPU crash due to the volume of work done in a single frame."},{"name":"process_material","type":"Material","description":"[Material] for processing particles. Can be a [ParticleProcessMaterial] or a [ShaderMaterial]."},{"name":"randomness","type":"float","description":"Emission randomness ratio."},{"name":"seed","type":"int","description":"Sets the random seed used by the particle system. Only effective if [member use_fixed_seed] is [code]true[/code]."},{"name":"speed_scale","type":"float","description":"Speed scaling ratio. A value of [code]0[/code] can be used to pause the particles."},{"name":"sub_emitter","type":"NodePath","description":"Path to another [GPUParticles3D] node that will be used as a subemitter (see [member ParticleProcessMaterial.sub_emitter_mode]). Subemitters can be used to achieve effects such as fireworks, sparks on collision, bubbles popping into water drops, and more.\n\t\t\t[b]Note:[/b] When [member sub_emitter] is set, the target [GPUParticles3D] node will no longer emit particles on its own."},{"name":"trail_enabled","type":"bool","description":"If [code]true[/code], enables particle trails using a mesh skinning system. Designed to work with [RibbonTrailMesh] and [TubeTrailMesh].\n\t\t\t[b]Note:[/b] [member BaseMaterial3D.use_particle_trails] must also be enabled on the particle mesh's material. Otherwise, setting [member trail_enabled] to [code]true[/code] will have no effect.\n\t\t\t[b]Note:[/b] Unlike [GPUParticles2D], the number of trail sections and subdivisions is set in the [RibbonTrailMesh] or the [TubeTrailMesh]'s properties."},{"name":"trail_lifetime","type":"float","description":"The amount of time the particle's trail should represent (in seconds). Only effective if [member trail_enabled] is [code]true[/code]."},{"name":"transform_align","type":"int","description":""},{"name":"use_fixed_seed","type":"bool","description":"If [code]true[/code], particles will use the same seed for every simulation using the seed defined in [member seed]. This is useful for situations where the visual outcome should be consistent across replays, for example when using Movie Maker mode."},{"name":"visibility_aabb","type":"AABB","description":"The [AABB] that determines the node's region which needs to be visible on screen for the particle system to be active. [member GeometryInstance3D.extra_cull_margin] is added on each of the AABB's axes. Particle collisions and attraction will only occur within this area.\n\t\t\tGrow the box if particles suddenly appear/disappear when the node enters/exits the screen. The [AABB] can be grown via code or with the [b]Particles → Generate AABB[/b] editor tool.\n\t\t\t[b]Note:[/b] [member visibility_aabb] is overridden by [member GeometryInstance3D.custom_aabb] if that property is set to a non-default value."}],"methods":[{"name":"capture_aabb","signature":"capture_aabb() -> AABB","description":"Returns the axis-aligned bounding box that contains all the particles that are active in the current frame.","returnType":"AABB"},{"name":"convert_from_particles","signature":"convert_from_particles(particles: Node) -> void","description":"Sets this node's properties to match a given  node.","returnType":"void"},{"name":"emit_particle","signature":"emit_particle(xform: Transform3D, velocity: Vector3, color: Color, custom: Color, flags: int) -> void","description":"Emits a single particle. Whether [param xform], [param velocity], [param color] and [param custom] are applied depends on the value of [param flags]. See [enum EmitFlags].\n\t\t\t\tThe default ParticleProcessMaterial will overwrite [param color] and use the contents of [param custom] as (rotation, age, animation, lifetime).\n\t\t\t\tNote: [method emit_particle] is only supported on the Forward+ and Mobile rendering methods, not Compatibility.","returnType":"void"},{"name":"get_draw_pass_mesh","signature":"get_draw_pass_mesh(pass: int) -> Mesh","description":"Returns the  that is drawn at index [param pass].","returnType":"Mesh"},{"name":"request_particles_process","signature":"request_particles_process(process_time: float) -> void","description":"Requests the particles to process for extra process time during a single frame.\n\t\t\t\tUseful for particle playback, if used in combination with [member use_fixed_seed] or by calling [method restart] with parameter keep_seed set to true.","returnType":"void"},{"name":"restart","signature":"restart(keep_seed: bool) -> void","description":"Restarts the particle emission cycle, clearing existing particles. To avoid particles vanishing from the viewport, wait for the [signal finished] signal before calling.\n\t\t\t\tNote: The [signal finished] signal is only emitted by [member one_shot] emitters.\n\t\t\t\tIf [param keep_seed] is true, the current random seed will be preserved. Useful for seeking and playback.","returnType":"void"},{"name":"set_draw_pass_mesh","signature":"set_draw_pass_mesh(pass: int, mesh: Mesh) -> void","description":"Sets the  that is drawn at index [param pass].","returnType":"void"}],"signals":[{"name":"finished","description":"Emitted when all active particles have finished processing. To immediately restart the emission cycle, call [method restart].\n\t\t\t\tThis signal is never emitted when [member one_shot] is disabled, as particles will be emitted and processed continuously.\n\t\t\t\t[b]Note:[/b] For [member one_shot] emitters, due to the particles being computed on the GPU, there may be a short period after receiving the signal during which setting [member emitting] to [code]true[/code] will not restart the emission cycle. This delay is avoided by instead calling [method restart]."}]},"GPUParticlesAttractor3D":{"name":"GPUParticlesAttractor3D","description":"Abstract base class for 3D particle attractors.","inherits":"VisualInstance3D","properties":[{"name":"attenuation","type":"float","description":"The particle attractor's attenuation. Higher values result in more gradual pushing of particles as they come closer to the attractor's origin. Zero or negative values will cause particles to be pushed very fast as soon as the touch the attractor's edges."},{"name":"cull_mask","type":"int","description":"The particle rendering layers ([member VisualInstance3D.layers]) that will be affected by the attractor. By default, all particles are affected by an attractor.\n\t\t\tAfter configuring particle nodes accordingly, specific layers can be unchecked to prevent certain particles from being affected by attractors. For example, this can be used if you're using an attractor as part of a spell effect but don't want the attractor to affect unrelated weather particles at the same position.\n\t\t\tParticle attraction can also be disabled on a per-process material basis by setting [member ParticleProcessMaterial.attractor_interaction_enabled] on the [GPUParticles3D] node."},{"name":"directionality","type":"float","description":"Adjusts how directional the attractor is. At [code]0.0[/code], the attractor is not directional at all: it will attract particles towards its center. At [code]1.0[/code], the attractor is fully directional: particles will always be pushed towards local -Z (or +Z if [member strength] is negative).\n\t\t\t[b]Note:[/b] If [member directionality] is greater than [code]0.0[/code], the direction in which particles are pushed can be changed by rotating the [GPUParticlesAttractor3D] node."},{"name":"strength","type":"float","description":"Adjusts the strength of the attractor. If [member strength] is negative, particles will be pushed in the opposite direction. Particles will be pushed [i]away[/i] from the attractor's origin if [member directionality] is [code]0.0[/code], or towards local +Z if [member directionality] is greater than [code]0.0[/code]."}],"methods":[],"signals":[]},"GPUParticlesAttractorBox3D":{"name":"GPUParticlesAttractorBox3D","description":"A box-shaped attractor that influences particles from  nodes.","inherits":"GPUParticlesAttractor3D","properties":[{"name":"size","type":"Vector3","description":"The attractor box's size in 3D units."}],"methods":[],"signals":[]},"GPUParticlesAttractorSphere3D":{"name":"GPUParticlesAttractorSphere3D","description":"A spheroid-shaped attractor that influences particles from  nodes.","inherits":"GPUParticlesAttractor3D","properties":[{"name":"radius","type":"float","description":"The attractor sphere's radius in 3D units.\n\t\t\t[b]Note:[/b] Stretched ellipses can be obtained by using non-uniform scaling on the [GPUParticlesAttractorSphere3D] node."}],"methods":[],"signals":[]},"GPUParticlesAttractorVectorField3D":{"name":"GPUParticlesAttractorVectorField3D","description":"A box-shaped attractor with varying directions and strengths defined in it that influences particles from  nodes.","inherits":"GPUParticlesAttractor3D","properties":[{"name":"size","type":"Vector3","description":"The size of the vector field box in 3D units."},{"name":"texture","type":"Texture3D","description":"The 3D texture to be used. Values are linearly interpolated between the texture's pixels.\n\t\t\t[b]Note:[/b] To get better performance, the 3D texture's resolution should reflect the [member size] of the attractor. Since particle attraction is usually low-frequency data, the texture can be kept at a low resolution such as 64×64×64."}],"methods":[],"signals":[]},"GPUParticlesCollision3D":{"name":"GPUParticlesCollision3D","description":"Abstract base class for 3D particle collision shapes affecting  nodes.","inherits":"VisualInstance3D","properties":[{"name":"cull_mask","type":"int","description":"The particle rendering layers ([member VisualInstance3D.layers]) that will be affected by the collision shape. By default, all particles that have [member ParticleProcessMaterial.collision_mode] set to [constant ParticleProcessMaterial.COLLISION_RIGID] or [constant ParticleProcessMaterial.COLLISION_HIDE_ON_CONTACT] will be affected by a collision shape.\n\t\t\tAfter configuring particle nodes accordingly, specific layers can be unchecked to prevent certain particles from being affected by colliders. For example, this can be used if you're using a collider as part of a spell effect but don't want the collider to affect unrelated weather particles at the same position.\n\t\t\tParticle collision can also be disabled on a per-process material basis by setting [member ParticleProcessMaterial.collision_mode] on the [GPUParticles3D] node."}],"methods":[],"signals":[]},"GPUParticlesCollisionBox3D":{"name":"GPUParticlesCollisionBox3D","description":"A box-shaped 3D particle collision shape affecting  nodes.","inherits":"GPUParticlesCollision3D","properties":[{"name":"size","type":"Vector3","description":"The collision box's size in 3D units."}],"methods":[],"signals":[]},"GPUParticlesCollisionHeightField3D":{"name":"GPUParticlesCollisionHeightField3D","description":"A real-time heightmap-shaped 3D particle collision shape affecting  nodes.","inherits":"GPUParticlesCollision3D","properties":[{"name":"follow_camera_enabled","type":"bool","description":"If [code]true[/code], the [GPUParticlesCollisionHeightField3D] will follow the current camera in global space. The [GPUParticlesCollisionHeightField3D] does not need to be a child of the [Camera3D] node for this to work.\n\t\t\tFollowing the camera has a performance cost, as it will force the heightmap to update whenever the camera moves. Consider lowering [member resolution] to improve performance if [member follow_camera_enabled] is [code]true[/code]."},{"name":"heightfield_mask","type":"int","description":"The visual layers to account for when updating the heightmap. Only [MeshInstance3D]s whose [member VisualInstance3D.layers] match with this [member heightfield_mask] will be included in the heightmap collision update. By default, all 20 user-visible layers are taken into account for updating the heightmap collision.\n\t\t\t[b]Note:[/b] Since the [member heightfield_mask] allows for 32 layers to be stored in total, there are an additional 12 layers that are only used internally by the engine and aren't exposed in the editor. Setting [member heightfield_mask] using a script allows you to toggle those reserved layers, which can be useful for editor plugins.\n\t\t\tTo adjust [member heightfield_mask] more easily using a script, use [method get_heightfield_mask_value] and [method set_heightfield_mask_value]."},{"name":"resolution","type":"int","description":"Higher resolutions can represent small details more accurately in large scenes, at the cost of lower performance. If [member update_mode] is [constant UPDATE_MODE_ALWAYS], consider using the lowest resolution possible."},{"name":"size","type":"Vector3","description":"The collision heightmap's size in 3D units. To improve heightmap quality, [member size] should be set as small as possible while covering the parts of the scene you need."},{"name":"update_mode","type":"int","description":"The update policy to use for the generated heightmap."}],"methods":[{"name":"get_heightfield_mask_value","signature":"get_heightfield_mask_value(layer_number: int) -> bool","description":"Returns true if the specified layer of the [member heightfield_mask] is enabled, given a [param layer_number] between 1 and 20, inclusive.","returnType":"bool"},{"name":"set_heightfield_mask_value","signature":"set_heightfield_mask_value(layer_number: int, value: bool) -> void","description":"Based on [param value], enables or disables the specified layer in the [member heightfield_mask], given a [param layer_number] between 1 and 20, inclusive.","returnType":"void"}],"signals":[]},"GPUParticlesCollisionSDF3D":{"name":"GPUParticlesCollisionSDF3D","description":"A baked signed distance field 3D particle collision shape affecting  nodes.","inherits":"GPUParticlesCollision3D","properties":[{"name":"bake_mask","type":"int","description":"The visual layers to account for when baking the particle collision SDF. Only [MeshInstance3D]s whose [member VisualInstance3D.layers] match with this [member bake_mask] will be included in the generated particle collision SDF. By default, all objects are taken into account for the particle collision SDF baking."},{"name":"resolution","type":"int","description":"The bake resolution to use for the signed distance field [member texture]. The texture must be baked again for changes to the [member resolution] property to be effective. Higher resolutions have a greater performance cost and take more time to bake. Higher resolutions also result in larger baked textures, leading to increased VRAM and storage space requirements. To improve performance and reduce bake times, use the lowest resolution possible for the object you're representing the collision of."},{"name":"size","type":"Vector3","description":"The collision SDF's size in 3D units. To improve SDF quality, the [member size] should be set as small as possible while covering the parts of the scene you need."},{"name":"texture","type":"Texture3D","description":"The 3D texture representing the signed distance field."},{"name":"thickness","type":"float","description":"The collision shape's thickness. Unlike other particle colliders, [GPUParticlesCollisionSDF3D] is actually hollow on the inside. [member thickness] can be increased to prevent particles from tunneling through the collision shape at high speeds, or when the [GPUParticlesCollisionSDF3D] is moved."}],"methods":[{"name":"get_bake_mask_value","signature":"get_bake_mask_value(layer_number: int) -> bool","description":"Returns whether or not the specified layer of the [member bake_mask] is enabled, given a [param layer_number] between 1 and 32.","returnType":"bool"},{"name":"set_bake_mask_value","signature":"set_bake_mask_value(layer_number: int, value: bool) -> void","description":"Based on [param value], enables or disables the specified layer in the [member bake_mask], given a [param layer_number] between 1 and 32.","returnType":"void"}],"signals":[]},"GPUParticlesCollisionSphere3D":{"name":"GPUParticlesCollisionSphere3D","description":"A sphere-shaped 3D particle collision shape affecting  nodes.","inherits":"GPUParticlesCollision3D","properties":[{"name":"radius","type":"float","description":"The collision sphere's radius in 3D units."}],"methods":[],"signals":[]},"Generic6DOFJoint3D":{"name":"Generic6DOFJoint3D","description":"A physics joint that allows for complex movement and rotation between two 3D physics bodies.","inherits":"Joint3D","properties":[{"name":"angular_limit_x/damping","type":"float","description":"The amount of rotational damping across the X axis.\n\t\t\tThe lower, the longer an impulse from one side takes to travel to the other side."},{"name":"angular_limit_x/enabled","type":"bool","description":"If [code]true[/code], rotation across the X axis is limited."},{"name":"angular_limit_x/erp","type":"float","description":"When rotating across the X axis, this error tolerance factor defines how much the correction gets slowed down. The lower, the slower."},{"name":"angular_limit_x/force_limit","type":"float","description":"The maximum amount of force that can occur, when rotating around the X axis."},{"name":"angular_limit_x/lower_angle","type":"float","description":"The minimum rotation in negative direction to break loose and rotate around the X axis."},{"name":"angular_limit_x/restitution","type":"float","description":"The amount of rotational restitution across the X axis. The lower, the more restitution occurs."},{"name":"angular_limit_x/softness","type":"float","description":"The speed of all rotations across the X axis."},{"name":"angular_limit_x/upper_angle","type":"float","description":"The minimum rotation in positive direction to break loose and rotate around the X axis."},{"name":"angular_limit_y/damping","type":"float","description":"The amount of rotational damping across the Y axis. The lower, the more damping occurs."},{"name":"angular_limit_y/enabled","type":"bool","description":"If [code]true[/code], rotation across the Y axis is limited."},{"name":"angular_limit_y/erp","type":"float","description":"When rotating across the Y axis, this error tolerance factor defines how much the correction gets slowed down. The lower, the slower."},{"name":"angular_limit_y/force_limit","type":"float","description":"The maximum amount of force that can occur, when rotating around the Y axis."},{"name":"angular_limit_y/lower_angle","type":"float","description":"The minimum rotation in negative direction to break loose and rotate around the Y axis."},{"name":"angular_limit_y/restitution","type":"float","description":"The amount of rotational restitution across the Y axis. The lower, the more restitution occurs."},{"name":"angular_limit_y/softness","type":"float","description":"The speed of all rotations across the Y axis."},{"name":"angular_limit_y/upper_angle","type":"float","description":"The minimum rotation in positive direction to break loose and rotate around the Y axis."},{"name":"angular_limit_z/damping","type":"float","description":"The amount of rotational damping across the Z axis. The lower, the more damping occurs."},{"name":"angular_limit_z/enabled","type":"bool","description":"If [code]true[/code], rotation across the Z axis is limited."},{"name":"angular_limit_z/erp","type":"float","description":"When rotating across the Z axis, this error tolerance factor defines how much the correction gets slowed down. The lower, the slower."},{"name":"angular_limit_z/force_limit","type":"float","description":"The maximum amount of force that can occur, when rotating around the Z axis."},{"name":"angular_limit_z/lower_angle","type":"float","description":"The minimum rotation in negative direction to break loose and rotate around the Z axis."},{"name":"angular_limit_z/restitution","type":"float","description":"The amount of rotational restitution across the Z axis. The lower, the more restitution occurs."},{"name":"angular_limit_z/softness","type":"float","description":"The speed of all rotations across the Z axis."},{"name":"angular_limit_z/upper_angle","type":"float","description":"The minimum rotation in positive direction to break loose and rotate around the Z axis."},{"name":"angular_motor_x/enabled","type":"bool","description":"If [code]true[/code], a rotating motor at the X axis is enabled."},{"name":"angular_motor_x/force_limit","type":"float","description":"Maximum acceleration for the motor at the X axis."},{"name":"angular_motor_x/target_velocity","type":"float","description":"Target speed for the motor at the X axis."},{"name":"angular_motor_y/enabled","type":"bool","description":"If [code]true[/code], a rotating motor at the Y axis is enabled."},{"name":"angular_motor_y/force_limit","type":"float","description":"Maximum acceleration for the motor at the Y axis."},{"name":"angular_motor_y/target_velocity","type":"float","description":"Target speed for the motor at the Y axis."},{"name":"angular_motor_z/enabled","type":"bool","description":"If [code]true[/code], a rotating motor at the Z axis is enabled."},{"name":"angular_motor_z/force_limit","type":"float","description":"Maximum acceleration for the motor at the Z axis."},{"name":"angular_motor_z/target_velocity","type":"float","description":"Target speed for the motor at the Z axis."},{"name":"angular_spring_x/damping","type":"float","description":""},{"name":"angular_spring_x/enabled","type":"bool","description":""},{"name":"angular_spring_x/equilibrium_point","type":"float","description":""},{"name":"angular_spring_x/stiffness","type":"float","description":""},{"name":"angular_spring_y/damping","type":"float","description":""},{"name":"angular_spring_y/enabled","type":"bool","description":""},{"name":"angular_spring_y/equilibrium_point","type":"float","description":""},{"name":"angular_spring_y/stiffness","type":"float","description":""},{"name":"angular_spring_z/damping","type":"float","description":""},{"name":"angular_spring_z/enabled","type":"bool","description":""},{"name":"angular_spring_z/equilibrium_point","type":"float","description":""},{"name":"angular_spring_z/stiffness","type":"float","description":""},{"name":"linear_limit_x/damping","type":"float","description":"The amount of damping that happens at the X motion."},{"name":"linear_limit_x/enabled","type":"bool","description":"If [code]true[/code], the linear motion across the X axis is limited."},{"name":"linear_limit_x/lower_distance","type":"float","description":"The minimum difference between the pivot points' X axis."},{"name":"linear_limit_x/restitution","type":"float","description":"The amount of restitution on the X axis movement. The lower, the more momentum gets lost."},{"name":"linear_limit_x/softness","type":"float","description":"A factor applied to the movement across the X axis. The lower, the slower the movement."},{"name":"linear_limit_x/upper_distance","type":"float","description":"The maximum difference between the pivot points' X axis."},{"name":"linear_limit_y/damping","type":"float","description":"The amount of damping that happens at the Y motion."},{"name":"linear_limit_y/enabled","type":"bool","description":"If [code]true[/code], the linear motion across the Y axis is limited."},{"name":"linear_limit_y/lower_distance","type":"float","description":"The minimum difference between the pivot points' Y axis."},{"name":"linear_limit_y/restitution","type":"float","description":"The amount of restitution on the Y axis movement. The lower, the more momentum gets lost."},{"name":"linear_limit_y/softness","type":"float","description":"A factor applied to the movement across the Y axis. The lower, the slower the movement."},{"name":"linear_limit_y/upper_distance","type":"float","description":"The maximum difference between the pivot points' Y axis."},{"name":"linear_limit_z/damping","type":"float","description":"The amount of damping that happens at the Z motion."},{"name":"linear_limit_z/enabled","type":"bool","description":"If [code]true[/code], the linear motion across the Z axis is limited."},{"name":"linear_limit_z/lower_distance","type":"float","description":"The minimum difference between the pivot points' Z axis."},{"name":"linear_limit_z/restitution","type":"float","description":"The amount of restitution on the Z axis movement. The lower, the more momentum gets lost."},{"name":"linear_limit_z/softness","type":"float","description":"A factor applied to the movement across the Z axis. The lower, the slower the movement."},{"name":"linear_limit_z/upper_distance","type":"float","description":"The maximum difference between the pivot points' Z axis."},{"name":"linear_motor_x/enabled","type":"bool","description":"If [code]true[/code], then there is a linear motor on the X axis. It will attempt to reach the target velocity while staying within the force limits."},{"name":"linear_motor_x/force_limit","type":"float","description":"The maximum force the linear motor can apply on the X axis while trying to reach the target velocity."},{"name":"linear_motor_x/target_velocity","type":"float","description":"The speed that the linear motor will attempt to reach on the X axis."},{"name":"linear_motor_y/enabled","type":"bool","description":"If [code]true[/code], then there is a linear motor on the Y axis. It will attempt to reach the target velocity while staying within the force limits."},{"name":"linear_motor_y/force_limit","type":"float","description":"The maximum force the linear motor can apply on the Y axis while trying to reach the target velocity."},{"name":"linear_motor_y/target_velocity","type":"float","description":"The speed that the linear motor will attempt to reach on the Y axis."},{"name":"linear_motor_z/enabled","type":"bool","description":"If [code]true[/code], then there is a linear motor on the Z axis. It will attempt to reach the target velocity while staying within the force limits."},{"name":"linear_motor_z/force_limit","type":"float","description":"The maximum force the linear motor can apply on the Z axis while trying to reach the target velocity."},{"name":"linear_motor_z/target_velocity","type":"float","description":"The speed that the linear motor will attempt to reach on the Z axis."},{"name":"linear_spring_x/damping","type":"float","description":""},{"name":"linear_spring_x/enabled","type":"bool","description":""},{"name":"linear_spring_x/equilibrium_point","type":"float","description":""},{"name":"linear_spring_x/stiffness","type":"float","description":""},{"name":"linear_spring_y/damping","type":"float","description":""},{"name":"linear_spring_y/enabled","type":"bool","description":""},{"name":"linear_spring_y/equilibrium_point","type":"float","description":""},{"name":"linear_spring_y/stiffness","type":"float","description":""},{"name":"linear_spring_z/damping","type":"float","description":""},{"name":"linear_spring_z/enabled","type":"bool","description":""},{"name":"linear_spring_z/equilibrium_point","type":"float","description":""},{"name":"linear_spring_z/stiffness","type":"float","description":""}],"methods":[{"name":"get_flag_x","signature":"get_flag_x(flag: int) -> bool","description":"","returnType":"bool"},{"name":"get_flag_y","signature":"get_flag_y(flag: int) -> bool","description":"","returnType":"bool"},{"name":"get_flag_z","signature":"get_flag_z(flag: int) -> bool","description":"","returnType":"bool"},{"name":"get_param_x","signature":"get_param_x(param: int) -> float","description":"","returnType":"float"},{"name":"get_param_y","signature":"get_param_y(param: int) -> float","description":"","returnType":"float"},{"name":"get_param_z","signature":"get_param_z(param: int) -> float","description":"","returnType":"float"},{"name":"set_flag_x","signature":"set_flag_x(flag: int, value: bool) -> void","description":"","returnType":"void"},{"name":"set_flag_y","signature":"set_flag_y(flag: int, value: bool) -> void","description":"","returnType":"void"},{"name":"set_flag_z","signature":"set_flag_z(flag: int, value: bool) -> void","description":"","returnType":"void"},{"name":"set_param_x","signature":"set_param_x(param: int, value: float) -> void","description":"","returnType":"void"},{"name":"set_param_y","signature":"set_param_y(param: int, value: float) -> void","description":"","returnType":"void"},{"name":"set_param_z","signature":"set_param_z(param: int, value: float) -> void","description":"","returnType":"void"}],"signals":[]},"Geometry2D":{"name":"Geometry2D","description":"Provides methods for some common 2D geometric operations.","inherits":"Object","properties":[],"methods":[{"name":"bresenham_line","signature":"bresenham_line(from: Vector2i, to: Vector2i) -> Vector2i[]","description":"Returns the [url=https://en.wikipedia.org/wiki/Bresenham%27s_line_algorithm]Bresenham line between the [param from] and [param to] points. A Bresenham line is a series of pixels that draws a line and is always 1-pixel thick on every row and column of the drawing (never more, never less).\n\t\t\t\tExample code to draw a line between two  nodes using a series of [method CanvasItem.draw_rect] calls:\n\t\t\t\t\n\t\t\t\tfunc _draw():\n\t\t\t\t    for pixel in Geometry2D.bresenham_line($MarkerA.position, $MarkerB.position):\n\t\t\t\t        draw_rect(Rect2(pixel, Vector2.ONE), Color.WHITE)\n\t\t\t\t","returnType":"Vector2i[]"},{"name":"clip_polygons","signature":"clip_polygons(polygon_a: PackedVector2Array, polygon_b: PackedVector2Array) -> PackedVector2Array[]","description":"Clips [param polygon_a] against [param polygon_b] and returns an array of clipped polygons. This performs [constant OPERATION_DIFFERENCE] between polygons. Returns an empty array if [param polygon_b] completely overlaps [param polygon_a].\n\t\t\t\tIf [param polygon_b] is enclosed by [param polygon_a], returns an outer polygon (boundary) and inner polygon (hole) which could be distinguished by calling [method is_polygon_clockwise].","returnType":"PackedVector2Array[]"},{"name":"clip_polyline_with_polygon","signature":"clip_polyline_with_polygon(polyline: PackedVector2Array, polygon: PackedVector2Array) -> PackedVector2Array[]","description":"Clips [param polyline] against [param polygon] and returns an array of clipped polylines. This performs [constant OPERATION_DIFFERENCE] between the polyline and the polygon. This operation can be thought of as cutting a line with a closed shape.","returnType":"PackedVector2Array[]"},{"name":"convex_hull","signature":"convex_hull(points: PackedVector2Array) -> PackedVector2Array","description":"Given an array of s, returns the convex hull as a list of points in counterclockwise order. The last point is the same as the first one.","returnType":"PackedVector2Array"},{"name":"decompose_polygon_in_convex","signature":"decompose_polygon_in_convex(polygon: PackedVector2Array) -> PackedVector2Array[]","description":"Decomposes the [param polygon] into multiple convex hulls and returns an array of .","returnType":"PackedVector2Array[]"},{"name":"exclude_polygons","signature":"exclude_polygons(polygon_a: PackedVector2Array, polygon_b: PackedVector2Array) -> PackedVector2Array[]","description":"Mutually excludes common area defined by intersection of [param polygon_a] and [param polygon_b] (see [method intersect_polygons]) and returns an array of excluded polygons. This performs [constant OPERATION_XOR] between polygons. In other words, returns all but common area between polygons.\n\t\t\t\tThe operation may result in an outer polygon (boundary) and inner polygon (hole) produced which could be distinguished by calling [method is_polygon_clockwise].","returnType":"PackedVector2Array[]"},{"name":"get_closest_point_to_segment","signature":"get_closest_point_to_segment(point: Vector2, s1: Vector2, s2: Vector2) -> Vector2","description":"Returns the 2D point on the 2D segment ([param s1], [param s2]) that is closest to [param point]. The returned point will always be inside the specified segment.","returnType":"Vector2"},{"name":"get_closest_point_to_segment_uncapped","signature":"get_closest_point_to_segment_uncapped(point: Vector2, s1: Vector2, s2: Vector2) -> Vector2","description":"Returns the 2D point on the 2D line defined by ([param s1], [param s2]) that is closest to [param point]. The returned point can be inside the segment ([param s1], [param s2]) or outside of it, i.e. somewhere on the line extending from the segment.","returnType":"Vector2"},{"name":"get_closest_points_between_segments","signature":"get_closest_points_between_segments(p1: Vector2, q1: Vector2, p2: Vector2, q2: Vector2) -> PackedVector2Array","description":"Given the two 2D segments ([param p1], [param q1]) and ([param p2], [param q2]), finds those two points on the two segments that are closest to each other. Returns a  that contains this point on ([param p1], [param q1]) as well the accompanying point on ([param p2], [param q2]).","returnType":"PackedVector2Array"},{"name":"intersect_polygons","signature":"intersect_polygons(polygon_a: PackedVector2Array, polygon_b: PackedVector2Array) -> PackedVector2Array[]","description":"Intersects [param polygon_a] with [param polygon_b] and returns an array of intersected polygons. This performs [constant OPERATION_INTERSECTION] between polygons. In other words, returns common area shared by polygons. Returns an empty array if no intersection occurs.\n\t\t\t\tThe operation may result in an outer polygon (boundary) and inner polygon (hole) produced which could be distinguished by calling [method is_polygon_clockwise].","returnType":"PackedVector2Array[]"},{"name":"intersect_polyline_with_polygon","signature":"intersect_polyline_with_polygon(polyline: PackedVector2Array, polygon: PackedVector2Array) -> PackedVector2Array[]","description":"Intersects [param polyline] with [param polygon] and returns an array of intersected polylines. This performs [constant OPERATION_INTERSECTION] between the polyline and the polygon. This operation can be thought of as chopping a line with a closed shape.","returnType":"PackedVector2Array[]"},{"name":"is_point_in_circle","signature":"is_point_in_circle(point: Vector2, circle_position: Vector2, circle_radius: float) -> bool","description":"Returns true if [param point] is inside the circle or if it's located exactly on the circle's boundary, otherwise returns false.","returnType":"bool"},{"name":"is_point_in_polygon","signature":"is_point_in_polygon(point: Vector2, polygon: PackedVector2Array) -> bool","description":"Returns true if [param point] is inside [param polygon] or if it's located exactly on polygon's boundary, otherwise returns false.","returnType":"bool"},{"name":"is_polygon_clockwise","signature":"is_polygon_clockwise(polygon: PackedVector2Array) -> bool","description":"Returns true if [param polygon]'s vertices are ordered in clockwise order, otherwise returns false.\n\t\t\t\tNote: Assumes a Cartesian coordinate system where +x is right and +y is up. If using screen coordinates (+y is down), the result will need to be flipped (i.e. a true result will indicate counter-clockwise).","returnType":"bool"},{"name":"line_intersects_line","signature":"line_intersects_line(from_a: Vector2, dir_a: Vector2, from_b: Vector2, dir_b: Vector2) -> Variant","description":"Returns the point of intersection between the two lines ([param from_a], [param dir_a]) and ([param from_b], [param dir_b]). Returns a , or null if the lines are parallel.\n\t\t\t\tfrom and dir are not endpoints of a line segment or ray but the slope (dir) and a known point (from) on that line.\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tvar from_a = Vector2.ZERO\n\t\t\t\tvar dir_a = Vector2.RIGHT\n\t\t\t\tvar from_b = Vector2.DOWN\n\n\t\t\t\t# Returns Vector2(1, 0)\n\t\t\t\tGeometry2D.line_intersects_line(from_a, dir_a, from_b, Vector2(1, -1))\n\t\t\t\t# Returns Vector2(-1, 0)\n\t\t\t\tGeometry2D.line_intersects_line(from_a, dir_a, from_b, Vector2(-1, -1))\n\t\t\t\t# Returns null\n\t\t\t\tGeometry2D.line_intersects_line(from_a, dir_a, from_b, Vector2.RIGHT)\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tvar fromA = Vector2.Zero;\n\t\t\t\tvar dirA = Vector2.Right;\n\t\t\t\tvar fromB = Vector2.Down;\n\n\t\t\t\t// Returns new Vector2(1, 0)\n\t\t\t\tGeometry2D.LineIntersectsLine(fromA, dirA, fromB, new Vector2(1, -1));\n\t\t\t\t// Returns new Vector2(-1, 0)\n\t\t\t\tGeometry2D.LineIntersectsLine(fromA, dirA, fromB, new Vector2(-1, -1));\n\t\t\t\t// Returns null\n\t\t\t\tGeometry2D.LineIntersectsLine(fromA, dirA, fromB, Vector2.Right);\n\t\t\t\t\n\t\t\t\t","returnType":"Variant"},{"name":"make_atlas","signature":"make_atlas(sizes: PackedVector2Array) -> Dictionary","description":"Given an array of s representing tiles, builds an atlas. The returned dictionary has two keys: points is a  that specifies the positions of each tile, size contains the overall size of the whole atlas as .","returnType":"Dictionary"},{"name":"merge_polygons","signature":"merge_polygons(polygon_a: PackedVector2Array, polygon_b: PackedVector2Array) -> PackedVector2Array[]","description":"Merges (combines) [param polygon_a] and [param polygon_b] and returns an array of merged polygons. This performs [constant OPERATION_UNION] between polygons.\n\t\t\t\tThe operation may result in an outer polygon (boundary) and multiple inner polygons (holes) produced which could be distinguished by calling [method is_polygon_clockwise].","returnType":"PackedVector2Array[]"},{"name":"offset_polygon","signature":"offset_polygon(polygon: PackedVector2Array, delta: float, join_type: int) -> PackedVector2Array[]","description":"Inflates or deflates [param polygon] by [param delta] units (pixels). If [param delta] is positive, makes the polygon grow outward. If [param delta] is negative, shrinks the polygon inward. Returns an array of polygons because inflating/deflating may result in multiple discrete polygons. Returns an empty array if [param delta] is negative and the absolute value of it approximately exceeds the minimum bounding rectangle dimensions of the polygon.\n\t\t\t\tEach polygon's vertices will be rounded as determined by [param join_type], see [enum PolyJoinType].\n\t\t\t\tThe operation may result in an outer polygon (boundary) and inner polygon (hole) produced which could be distinguished by calling [method is_polygon_clockwise].\n\t\t\t\tNote: To translate the polygon's vertices specifically, multiply them to a :\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tvar polygon = PackedVector2Array([Vector2(0, 0), Vector2(100, 0), Vector2(100, 100), Vector2(0, 100)])\n\t\t\t\tvar offset = Vector2(50, 50)\n\t\t\t\tpolygon = Transform2D(0, offset) * polygon\n\t\t\t\tprint(polygon) # Prints [(50.0, 50.0), (150.0, 50.0), (150.0, 150.0), (50.0, 150.0)]\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tVector2[] polygon = [new Vector2(0, 0), new Vector2(100, 0), new Vector2(100, 100), new Vector2(0, 100)];\n\t\t\t\tvar offset = new Vector2(50, 50);\n\t\t\t\tpolygon = new Transform2D(0, offset) * polygon;\n\t\t\t\tGD.Print((Variant)polygon); // Prints [(50, 50), (150, 50), (150, 150), (50, 150)]\n\t\t\t\t\n\t\t\t\t","returnType":"PackedVector2Array[]"},{"name":"offset_polyline","signature":"offset_polyline(polyline: PackedVector2Array, delta: float, join_type: int, end_type: int) -> PackedVector2Array[]","description":"Inflates or deflates [param polyline] by [param delta] units (pixels), producing polygons. If [param delta] is positive, makes the polyline grow outward. Returns an array of polygons because inflating/deflating may result in multiple discrete polygons. If [param delta] is negative, returns an empty array.\n\t\t\t\tEach polygon's vertices will be rounded as determined by [param join_type], see [enum PolyJoinType].\n\t\t\t\tEach polygon's endpoints will be rounded as determined by [param end_type], see [enum PolyEndType].\n\t\t\t\tThe operation may result in an outer polygon (boundary) and inner polygon (hole) produced which could be distinguished by calling [method is_polygon_clockwise].","returnType":"PackedVector2Array[]"},{"name":"point_is_inside_triangle","signature":"point_is_inside_triangle(point: Vector2, a: Vector2, b: Vector2, c: Vector2) -> bool","description":"Returns if [param point] is inside the triangle specified by [param a], [param b] and [param c].","returnType":"bool"},{"name":"segment_intersects_circle","signature":"segment_intersects_circle(segment_from: Vector2, segment_to: Vector2, circle_position: Vector2, circle_radius: float) -> float","description":"Given the 2D segment ([param segment_from], [param segment_to]), returns the position on the segment (as a number between 0 and 1) at which the segment hits the circle that is located at position [param circle_position] and has radius [param circle_radius]. If the segment does not intersect the circle, -1 is returned (this is also the case if the line extending the segment would intersect the circle, but the segment does not).","returnType":"float"},{"name":"segment_intersects_segment","signature":"segment_intersects_segment(from_a: Vector2, to_a: Vector2, from_b: Vector2, to_b: Vector2) -> Variant","description":"Checks if the two segments ([param from_a], [param to_a]) and ([param from_b], [param to_b]) intersect. If yes, return the point of intersection as . If no intersection takes place, returns null.","returnType":"Variant"},{"name":"triangulate_delaunay","signature":"triangulate_delaunay(points: PackedVector2Array) -> PackedInt32Array","description":"Triangulates the area specified by discrete set of [param points] such that no point is inside the circumcircle of any resulting triangle. Returns a  where each triangle consists of three consecutive point indices into [param points] (i.e. the returned array will have n * 3 elements, with n being the number of found triangles). If the triangulation did not succeed, an empty  is returned.","returnType":"PackedInt32Array"},{"name":"triangulate_polygon","signature":"triangulate_polygon(polygon: PackedVector2Array) -> PackedInt32Array","description":"Triangulates the polygon specified by the points in [param polygon]. Returns a  where each triangle consists of three consecutive point indices into [param polygon] (i.e. the returned array will have n * 3 elements, with n being the number of found triangles). Output triangles will always be counter clockwise, and the contour will be flipped if it's clockwise. If the triangulation did not succeed, an empty  is returned.","returnType":"PackedInt32Array"}],"signals":[]},"Geometry3D":{"name":"Geometry3D","description":"Provides methods for some common 3D geometric operations.","inherits":"Object","properties":[],"methods":[{"name":"build_box_planes","signature":"build_box_planes(extents: Vector3) -> Plane[]","description":"Returns an array with 6 s that describe the sides of a box centered at the origin. The box size is defined by [param extents], which represents one (positive) corner of the box (i.e. half its actual size).","returnType":"Plane[]"},{"name":"build_capsule_planes","signature":"build_capsule_planes(radius: float, height: float, sides: int, lats: int, axis: int) -> Plane[]","description":"Returns an array of s closely bounding a faceted capsule centered at the origin with radius [param radius] and height [param height]. The parameter [param sides] defines how many planes will be generated for the side part of the capsule, whereas [param lats] gives the number of latitudinal steps at the bottom and top of the capsule. The parameter [param axis] describes the axis along which the capsule is oriented (0 for X, 1 for Y, 2 for Z).","returnType":"Plane[]"},{"name":"build_cylinder_planes","signature":"build_cylinder_planes(radius: float, height: float, sides: int, axis: int) -> Plane[]","description":"Returns an array of s closely bounding a faceted cylinder centered at the origin with radius [param radius] and height [param height]. The parameter [param sides] defines how many planes will be generated for the round part of the cylinder. The parameter [param axis] describes the axis along which the cylinder is oriented (0 for X, 1 for Y, 2 for Z).","returnType":"Plane[]"},{"name":"clip_polygon","signature":"clip_polygon(points: PackedVector3Array, plane: Plane) -> PackedVector3Array","description":"Clips the polygon defined by the points in [param points] against the [param plane] and returns the points of the clipped polygon.","returnType":"PackedVector3Array"},{"name":"compute_convex_mesh_points","signature":"compute_convex_mesh_points(planes: Plane[]) -> PackedVector3Array","description":"Calculates and returns all the vertex points of a convex shape defined by an array of [param planes].","returnType":"PackedVector3Array"},{"name":"get_closest_point_to_segment","signature":"get_closest_point_to_segment(point: Vector3, s1: Vector3, s2: Vector3) -> Vector3","description":"Returns the 3D point on the 3D segment ([param s1], [param s2]) that is closest to [param point]. The returned point will always be inside the specified segment.","returnType":"Vector3"},{"name":"get_closest_point_to_segment_uncapped","signature":"get_closest_point_to_segment_uncapped(point: Vector3, s1: Vector3, s2: Vector3) -> Vector3","description":"Returns the 3D point on the 3D line defined by ([param s1], [param s2]) that is closest to [param point]. The returned point can be inside the segment ([param s1], [param s2]) or outside of it, i.e. somewhere on the line extending from the segment.","returnType":"Vector3"},{"name":"get_closest_points_between_segments","signature":"get_closest_points_between_segments(p1: Vector3, p2: Vector3, q1: Vector3, q2: Vector3) -> PackedVector3Array","description":"Given the two 3D segments ([param p1], [param p2]) and ([param q1], [param q2]), finds those two points on the two segments that are closest to each other. Returns a  that contains this point on ([param p1], [param p2]) as well the accompanying point on ([param q1], [param q2]).","returnType":"PackedVector3Array"},{"name":"get_triangle_barycentric_coords","signature":"get_triangle_barycentric_coords(point: Vector3, a: Vector3, b: Vector3, c: Vector3) -> Vector3","description":"Returns a  containing weights based on how close a 3D position ([param point]) is to a triangle's different vertices ([param a], [param b] and [param c]). This is useful for interpolating between the data of different vertices in a triangle. One example use case is using this to smoothly rotate over a mesh instead of relying solely on face normals.\n\t\t\t\t[url=https://en.wikipedia.org/wiki/Barycentric_coordinate_system]Here is a more detailed explanation of barycentric coordinates.","returnType":"Vector3"},{"name":"ray_intersects_triangle","signature":"ray_intersects_triangle(from: Vector3, dir: Vector3, a: Vector3, b: Vector3, c: Vector3) -> Variant","description":"Tests if the 3D ray starting at [param from] with the direction of [param dir] intersects the triangle specified by [param a], [param b] and [param c]. If yes, returns the point of intersection as . If no intersection takes place, returns null.","returnType":"Variant"},{"name":"segment_intersects_convex","signature":"segment_intersects_convex(from: Vector3, to: Vector3, planes: Plane[]) -> PackedVector3Array","description":"Given a convex hull defined though the s in the array [param planes], tests if the segment ([param from], [param to]) intersects with that hull. If an intersection is found, returns a  containing the point the intersection and the hull's normal. Otherwise, returns an empty array.","returnType":"PackedVector3Array"},{"name":"segment_intersects_cylinder","signature":"segment_intersects_cylinder(from: Vector3, to: Vector3, height: float, radius: float) -> PackedVector3Array","description":"Checks if the segment ([param from], [param to]) intersects the cylinder with height [param height] that is centered at the origin and has radius [param radius]. If no, returns an empty . If an intersection takes place, the returned array contains the point of intersection and the cylinder's normal at the point of intersection.","returnType":"PackedVector3Array"},{"name":"segment_intersects_sphere","signature":"segment_intersects_sphere(from: Vector3, to: Vector3, sphere_position: Vector3, sphere_radius: float) -> PackedVector3Array","description":"Checks if the segment ([param from], [param to]) intersects the sphere that is located at [param sphere_position] and has radius [param sphere_radius]. If no, returns an empty . If yes, returns a  containing the point of intersection and the sphere's normal at the point of intersection.","returnType":"PackedVector3Array"},{"name":"segment_intersects_triangle","signature":"segment_intersects_triangle(from: Vector3, to: Vector3, a: Vector3, b: Vector3, c: Vector3) -> Variant","description":"Tests if the segment ([param from], [param to]) intersects the triangle [param a], [param b], [param c]. If yes, returns the point of intersection as . If no intersection takes place, returns null.","returnType":"Variant"},{"name":"tetrahedralize_delaunay","signature":"tetrahedralize_delaunay(points: PackedVector3Array) -> PackedInt32Array","description":"Tetrahedralizes the volume specified by a discrete set of [param points] in 3D space, ensuring that no point lies within the circumsphere of any resulting tetrahedron. The method returns a  where each tetrahedron consists of four consecutive point indices into the [param points] array (resulting in an array with n * 4 elements, where n is the number of tetrahedra found). If the tetrahedralization is unsuccessful, an empty  is returned.","returnType":"PackedInt32Array"}],"signals":[]},"GeometryInstance3D":{"name":"GeometryInstance3D","description":"Base node for geometry-based visual instances.","inherits":"VisualInstance3D","properties":[{"name":"cast_shadow","type":"int","description":"The selected shadow casting flag. See [enum ShadowCastingSetting] for possible values."},{"name":"custom_aabb","type":"AABB","description":"Overrides the bounding box of this node with a custom one. This can be used to avoid the expensive [AABB] recalculation that happens when a skeleton is used with a [MeshInstance3D] or to have precise control over the [MeshInstance3D]'s bounding box. To use the default AABB, set value to an [AABB] with all fields set to [code]0.0[/code]. To avoid frustum culling, set [member custom_aabb] to a very large AABB that covers your entire game world such as [code]AABB(-10000, -10000, -10000, 20000, 20000, 20000)[/code]. To disable all forms of culling (including occlusion culling), call [method RenderingServer.instance_set_ignore_culling] on the [GeometryInstance3D]'s [RID]."},{"name":"extra_cull_margin","type":"float","description":"The extra distance added to the GeometryInstance3D's bounding box ([AABB]) to increase its cull box."},{"name":"gi_lightmap_scale","type":"int","description":"The texel density to use for lightmapping in [LightmapGI]."},{"name":"gi_lightmap_texel_scale","type":"float","description":"The texel density to use for lightmapping in [LightmapGI]. Greater scale values provide higher resolution in the lightmap, which can result in sharper shadows for lights that have both direct and indirect light baked. However, greater scale values will also increase the space taken by the mesh in the lightmap texture, which increases the memory, storage, and bake time requirements. When using a single mesh at different scales, consider adjusting this value to keep the lightmap texel density consistent across meshes.\n\t\t\tFor example, doubling [member gi_lightmap_texel_scale] doubles the lightmap texture resolution for this object [i]on each axis[/i], so it will [i]quadruple[/i] the texel count."},{"name":"gi_mode","type":"int","description":"The global illumination mode to use for the whole geometry. To avoid inconsistent results, use a mode that matches the purpose of the mesh during gameplay (static/dynamic).\n\t\t\t[b]Note:[/b] Lights' bake mode will also affect the global illumination rendering. See [member Light3D.light_bake_mode]."},{"name":"ignore_occlusion_culling","type":"bool","description":"If [code]true[/code], disables occlusion culling for this instance. Useful for gizmos that must be rendered even when occlusion culling is in use.\n\t\t\t[b]Note:[/b] [member ignore_occlusion_culling] does not affect frustum culling (which is what happens when an object is not visible given the camera's angle). To avoid frustum culling, set [member custom_aabb] to a very large AABB that covers your entire game world such as [code]AABB(-10000, -10000, -10000, 20000, 20000, 20000)[/code]."},{"name":"lod_bias","type":"float","description":"Changes how quickly the mesh transitions to a lower level of detail. A value of 0 will force the mesh to its lowest level of detail, a value of 1 will use the default settings, and larger values will keep the mesh in a higher level of detail at farther distances.\n\t\t\tUseful for testing level of detail transitions in the editor."},{"name":"material_overlay","type":"Material","description":"The material overlay for the whole geometry.\n\t\t\tIf a material is assigned to this property, it will be rendered on top of any other active material for all the surfaces."},{"name":"material_override","type":"Material","description":"The material override for the whole geometry.\n\t\t\tIf a material is assigned to this property, it will be used instead of any material set in any material slot of the mesh."},{"name":"transparency","type":"float","description":"The transparency applied to the whole geometry (as a multiplier of the materials' existing transparency). [code]0.0[/code] is fully opaque, while [code]1.0[/code] is fully transparent. Values greater than [code]0.0[/code] (exclusive) will force the geometry's materials to go through the transparent pipeline, which is slower to render and can exhibit rendering issues due to incorrect transparency sorting. However, unlike using a transparent material, setting [member transparency] to a value greater than [code]0.0[/code] (exclusive) will [i]not[/i] disable shadow rendering.\n\t\t\tIn spatial shaders, [code]1.0 - transparency[/code] is set as the default value of the [code]ALPHA[/code] built-in.\n\t\t\t[b]Note:[/b] [member transparency] is clamped between [code]0.0[/code] and [code]1.0[/code], so this property cannot be used to make transparent materials more opaque than they originally are.\n\t\t\t[b]Note:[/b] Only supported when using the Forward+ rendering method. When using the Mobile or Compatibility rendering method, [member transparency] is ignored and is considered as always being [code]0.0[/code]."},{"name":"visibility_range_begin","type":"float","description":"Starting distance from which the GeometryInstance3D will be visible, taking [member visibility_range_begin_margin] into account as well. The default value of 0 is used to disable the range check."},{"name":"visibility_range_begin_margin","type":"float","description":"Margin for the [member visibility_range_begin] threshold. The GeometryInstance3D will only change its visibility state when it goes over or under the [member visibility_range_begin] threshold by this amount.\n\t\t\tIf [member visibility_range_fade_mode] is [constant VISIBILITY_RANGE_FADE_DISABLED], this acts as a hysteresis distance. If [member visibility_range_fade_mode] is [constant VISIBILITY_RANGE_FADE_SELF] or [constant VISIBILITY_RANGE_FADE_DEPENDENCIES], this acts as a fade transition distance and must be set to a value greater than [code]0.0[/code] for the effect to be noticeable."},{"name":"visibility_range_end","type":"float","description":"Distance from which the GeometryInstance3D will be hidden, taking [member visibility_range_end_margin] into account as well. The default value of 0 is used to disable the range check."},{"name":"visibility_range_end_margin","type":"float","description":"Margin for the [member visibility_range_end] threshold. The GeometryInstance3D will only change its visibility state when it goes over or under the [member visibility_range_end] threshold by this amount.\n\t\t\tIf [member visibility_range_fade_mode] is [constant VISIBILITY_RANGE_FADE_DISABLED], this acts as a hysteresis distance. If [member visibility_range_fade_mode] is [constant VISIBILITY_RANGE_FADE_SELF] or [constant VISIBILITY_RANGE_FADE_DEPENDENCIES], this acts as a fade transition distance and must be set to a value greater than [code]0.0[/code] for the effect to be noticeable."},{"name":"visibility_range_fade_mode","type":"int","description":"Controls which instances will be faded when approaching the limits of the visibility range. See [enum VisibilityRangeFadeMode] for possible values."}],"methods":[{"name":"get_instance_shader_parameter","signature":"get_instance_shader_parameter(name: StringName) -> Variant","description":"Get the value of a shader parameter as set on this instance.","returnType":"Variant"},{"name":"set_instance_shader_parameter","signature":"set_instance_shader_parameter(name: StringName, value: Variant) -> void","description":"Set the value of a shader uniform for this instance only ([url=$DOCS_URL/tutorials/shaders/shader_reference/shading_language.html#per-instance-uniforms]per-instance uniform). See also [method ShaderMaterial.set_shader_parameter] to assign a uniform on all instances using the same .\n\t\t\t\tNote: For a shader uniform to be assignable on a per-instance basis, it must be defined with instance uniform ... rather than uniform ... in the shader code.\n\t\t\t\tNote: [param name] is case-sensitive and must match the name of the uniform in the code exactly (not the capitalized name in the inspector).\n\t\t\t\tNote: Per-instance shader uniforms are only available in Spatial and CanvasItem shaders, but not for Fog, Sky, or Particles shaders.","returnType":"void"}],"signals":[]},"Gradient":{"name":"Gradient","description":"A color transition.","inherits":"Resource","properties":[{"name":"colors","type":"PackedColorArray","description":"Gradient's colors as a [PackedColorArray].\n\t\t\t[b]Note:[/b] Setting this property updates all colors at once. To update any color individually use [method set_color]."},{"name":"interpolation_color_space","type":"int","description":"The color space used to interpolate between points of the gradient. It does not affect the returned colors, which will always be in sRGB space. See [enum ColorSpace] for available modes.\n\t\t\t[b]Note:[/b] This setting has no effect when [member interpolation_mode] is set to [constant GRADIENT_INTERPOLATE_CONSTANT]."},{"name":"interpolation_mode","type":"int","description":"The algorithm used to interpolate between points of the gradient. See [enum InterpolationMode] for available modes."},{"name":"offsets","type":"PackedFloat32Array","description":"Gradient's offsets as a [PackedFloat32Array].\n\t\t\t[b]Note:[/b] Setting this property updates all offsets at once. To update any offset individually use [method set_offset]."}],"methods":[{"name":"add_point","signature":"add_point(offset: float, color: Color) -> void","description":"Adds the specified color to the gradient, with the specified offset.","returnType":"void"},{"name":"get_color","signature":"get_color(point: int) -> Color","description":"Returns the color of the gradient color at index [param point].","returnType":"Color"},{"name":"get_offset","signature":"get_offset(point: int) -> float","description":"Returns the offset of the gradient color at index [param point].","returnType":"float"},{"name":"get_point_count","signature":"get_point_count() -> int","description":"Returns the number of colors in the gradient.","returnType":"int"},{"name":"remove_point","signature":"remove_point(point: int) -> void","description":"Removes the color at index [param point].","returnType":"void"},{"name":"reverse","signature":"reverse() -> void","description":"Reverses/mirrors the gradient.\n\t\t\t\tNote: This method mirrors all points around the middle of the gradient, which may produce unexpected results when [member interpolation_mode] is set to [constant GRADIENT_INTERPOLATE_CONSTANT].","returnType":"void"},{"name":"sample","signature":"sample(offset: float) -> Color","description":"Returns the interpolated color specified by [param offset].","returnType":"Color"},{"name":"set_color","signature":"set_color(point: int, color: Color) -> void","description":"Sets the color of the gradient color at index [param point].","returnType":"void"},{"name":"set_offset","signature":"set_offset(point: int, offset: float) -> void","description":"Sets the offset for the gradient color at index [param point].","returnType":"void"}],"signals":[]},"GradientTexture1D":{"name":"GradientTexture1D","description":"A 1D texture that uses colors obtained from a .","inherits":"Texture2D","properties":[{"name":"gradient","type":"Gradient","description":"The [Gradient] used to fill the texture."},{"name":"use_hdr","type":"bool","description":"If [code]true[/code], the generated texture will support high dynamic range ([constant Image.FORMAT_RGBAF] format). This allows for glow effects to work if [member Environment.glow_enabled] is [code]true[/code]. If [code]false[/code], the generated texture will use low dynamic range; overbright colors will be clamped ([constant Image.FORMAT_RGBA8] format)."},{"name":"width","type":"int","description":"The number of color samples that will be obtained from the [Gradient]."}],"methods":[],"signals":[]},"GradientTexture2D":{"name":"GradientTexture2D","description":"A 2D texture that creates a pattern with colors obtained from a .","inherits":"Texture2D","properties":[{"name":"fill","type":"int","description":"The gradient fill type, one of the [enum Fill] values. The texture is filled by interpolating colors starting from [member fill_from] to [member fill_to] offsets."},{"name":"fill_from","type":"Vector2","description":"The initial offset used to fill the texture specified in UV coordinates."},{"name":"fill_to","type":"Vector2","description":"The final offset used to fill the texture specified in UV coordinates."},{"name":"gradient","type":"Gradient","description":"The [Gradient] used to fill the texture."},{"name":"height","type":"int","description":"The number of vertical color samples that will be obtained from the [Gradient], which also represents the texture's height."},{"name":"repeat","type":"int","description":"The gradient repeat type, one of the [enum Repeat] values. The texture is filled starting from [member fill_from] to [member fill_to] offsets by default, but the gradient fill can be repeated to cover the entire texture."},{"name":"use_hdr","type":"bool","description":"If [code]true[/code], the generated texture will support high dynamic range ([constant Image.FORMAT_RGBAF] format). This allows for glow effects to work if [member Environment.glow_enabled] is [code]true[/code]. If [code]false[/code], the generated texture will use low dynamic range; overbright colors will be clamped ([constant Image.FORMAT_RGBA8] format)."},{"name":"width","type":"int","description":"The number of horizontal color samples that will be obtained from the [Gradient], which also represents the texture's width."}],"methods":[],"signals":[]},"GraphEdit":{"name":"GraphEdit","description":"An editor for graph-like structures, using s.","inherits":"Control","properties":[{"name":"connection_lines_antialiased","type":"bool","description":"If [code]true[/code], the lines between nodes will use antialiasing."},{"name":"connection_lines_curvature","type":"float","description":"The curvature of the lines between the nodes. 0 results in straight lines."},{"name":"connection_lines_thickness","type":"float","description":"The thickness of the lines between the nodes."},{"name":"connections","type":"Dictionary[]","description":"The connections between [GraphNode]s.\n\t\t\tA connection is represented as a [Dictionary] in the form of:\n\t\t\t[codeblock]\n\t\t\t{\n\t\t\t    from_node: StringName,\n\t\t\t    from_port: int,\n\t\t\t    to_node: StringName,\n\t\t\t    to_port: int,\n\t\t\t    keep_alive: bool\n\t\t\t}\n\t\t\t[/codeblock]\n\t\t\tConnections with [code]keep_alive[/code] set to [code]false[/code] may be deleted automatically if invalid during a redraw."},{"name":"grid_pattern","type":"int","description":"The pattern used for drawing the grid."},{"name":"minimap_enabled","type":"bool","description":"If [code]true[/code], the minimap is visible."},{"name":"minimap_opacity","type":"float","description":"The opacity of the minimap rectangle."},{"name":"minimap_size","type":"Vector2","description":"The size of the minimap rectangle. The map itself is based on the size of the grid area and is scaled to fit this rectangle."},{"name":"panning_scheme","type":"int","description":"Defines the control scheme for panning with mouse wheel."},{"name":"right_disconnects","type":"bool","description":"If [code]true[/code], enables disconnection of existing connections in the GraphEdit by dragging the right end."},{"name":"scroll_offset","type":"Vector2","description":"The scroll offset."},{"name":"show_arrange_button","type":"bool","description":"If [code]true[/code], the button to automatically arrange graph nodes is visible."},{"name":"show_grid","type":"bool","description":"If [code]true[/code], the grid is visible."},{"name":"show_grid_buttons","type":"bool","description":"If [code]true[/code], buttons that allow to configure grid and snapping options are visible."},{"name":"show_menu","type":"bool","description":"If [code]true[/code], the menu toolbar is visible."},{"name":"show_minimap_button","type":"bool","description":"If [code]true[/code], the button to toggle the minimap is visible."},{"name":"show_zoom_buttons","type":"bool","description":"If [code]true[/code], buttons that allow to change and reset the zoom level are visible."},{"name":"show_zoom_label","type":"bool","description":"If [code]true[/code], the label with the current zoom level is visible. The zoom level is displayed in percents."},{"name":"snapping_distance","type":"int","description":"The snapping distance in pixels, also determines the grid line distance."},{"name":"snapping_enabled","type":"bool","description":"If [code]true[/code], enables snapping."},{"name":"zoom","type":"float","description":"The current zoom value."},{"name":"zoom_max","type":"float","description":"The upper zoom limit."},{"name":"zoom_min","type":"float","description":"The lower zoom limit."},{"name":"zoom_step","type":"float","description":"The step of each zoom level."}],"methods":[{"name":"_get_connection_line","signature":"_get_connection_line(from_position: Vector2, to_position: Vector2) -> PackedVector2Array","description":"Virtual method which can be overridden to customize how connections are drawn.","returnType":"PackedVector2Array"},{"name":"_is_in_input_hotzone","signature":"_is_in_input_hotzone(in_node: Object, in_port: int, mouse_position: Vector2) -> bool","description":"Returns whether the [param mouse_position] is in the input hot zone.\n\t\t\t\tBy default, a hot zone is a  positioned such that its center is at [param in_node].[method GraphNode.get_input_port_position]([param in_port]) (For output's case, call [method GraphNode.get_output_port_position] instead). The hot zone's width is twice the Theme Property port_grab_distance_horizontal, and its height is twice the port_grab_distance_vertical.\n\t\t\t\tBelow is a sample code to help get started:\n\t\t\t\t\n\t\t\t\tfunc _is_in_input_hotzone(in_node, in_port, mouse_position):\n\t\t\t\t    var port_size = Vector2(get_theme_constant(\"port_grab_distance_horizontal\"), get_theme_constant(\"port_grab_distance_vertical\"))\n\t\t\t\t    var port_pos = in_node.get_position() + in_node.get_input_port_position(in_port) - port_size / 2\n\t\t\t\t    var rect = Rect2(port_pos, port_size)\n\n\t\t\t\t    return rect.has_point(mouse_position)\n\t\t\t\t","returnType":"bool"},{"name":"_is_in_output_hotzone","signature":"_is_in_output_hotzone(in_node: Object, in_port: int, mouse_position: Vector2) -> bool","description":"Returns whether the [param mouse_position] is in the output hot zone. For more information on hot zones, see [method _is_in_input_hotzone].\n\t\t\t\tBelow is a sample code to help get started:\n\t\t\t\t\n\t\t\t\tfunc _is_in_output_hotzone(in_node, in_port, mouse_position):\n\t\t\t\t    var port_size = Vector2(get_theme_constant(\"port_grab_distance_horizontal\"), get_theme_constant(\"port_grab_distance_vertical\"))\n\t\t\t\t    var port_pos = in_node.get_position() + in_node.get_output_port_position(in_port) - port_size / 2\n\t\t\t\t    var rect = Rect2(port_pos, port_size)\n\n\t\t\t\t    return rect.has_point(mouse_position)\n\t\t\t\t","returnType":"bool"},{"name":"_is_node_hover_valid","signature":"_is_node_hover_valid(from_node: StringName, from_port: int, to_node: StringName, to_port: int) -> bool","description":"This virtual method can be used to insert additional error detection while the user is dragging a connection over a valid port.\n\t\t\t\tReturn true if the connection is indeed valid or return false if the connection is impossible. If the connection is impossible, no snapping to the port and thus no connection request to that port will happen.\n\t\t\t\tIn this example a connection to same node is suppressed:\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tfunc _is_node_hover_valid(from, from_port, to, to_port):\n\t\t\t\t    return from != to\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tpublic override bool _IsNodeHoverValid(StringName fromNode, int fromPort, StringName toNode, int toPort)\n\t\t\t\t{\n\t\t\t\t    return fromNode != toNode;\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t","returnType":"bool"},{"name":"add_valid_connection_type","signature":"add_valid_connection_type(from_type: int, to_type: int) -> void","description":"Allows the connection between two different port types. The port type is defined individually for the left and the right port of each slot with the [method GraphNode.set_slot] method.\n\t\t\t\tSee also [method is_valid_connection_type] and [method remove_valid_connection_type].","returnType":"void"},{"name":"add_valid_left_disconnect_type","signature":"add_valid_left_disconnect_type(type: int) -> void","description":"Allows to disconnect nodes when dragging from the left port of the 's slot if it has the specified type. See also [method remove_valid_left_disconnect_type].","returnType":"void"},{"name":"add_valid_right_disconnect_type","signature":"add_valid_right_disconnect_type(type: int) -> void","description":"Allows to disconnect nodes when dragging from the right port of the 's slot if it has the specified type. See also [method remove_valid_right_disconnect_type].","returnType":"void"},{"name":"arrange_nodes","signature":"arrange_nodes() -> void","description":"Rearranges selected nodes in a layout with minimum crossings between connections and uniform horizontal and vertical gap between nodes.","returnType":"void"},{"name":"attach_graph_element_to_frame","signature":"attach_graph_element_to_frame(element: StringName, frame: StringName) -> void","description":"Attaches the [param element]  to the [param frame] .","returnType":"void"},{"name":"clear_connections","signature":"clear_connections() -> void","description":"Removes all connections between nodes.","returnType":"void"},{"name":"connect_node","signature":"connect_node(from_node: StringName, from_port: int, to_node: StringName, to_port: int, keep_alive: bool) -> int","description":"Create a connection between the [param from_port] of the [param from_node]  and the [param to_port] of the [param to_node] . If the connection already exists, no connection is created.\n\t\t\t\tConnections with [param keep_alive] set to false may be deleted automatically if invalid during a redraw.","returnType":"int"},{"name":"detach_graph_element_from_frame","signature":"detach_graph_element_from_frame(element: StringName) -> void","description":"Detaches the [param element]  from the  it is currently attached to.","returnType":"void"},{"name":"disconnect_node","signature":"disconnect_node(from_node: StringName, from_port: int, to_node: StringName, to_port: int) -> void","description":"Removes the connection between the [param from_port] of the [param from_node]  and the [param to_port] of the [param to_node] . If the connection does not exist, no connection is removed.","returnType":"void"},{"name":"force_connection_drag_end","signature":"force_connection_drag_end() -> void","description":"Ends the creation of the current connection. In other words, if you are dragging a connection you can use this method to abort the process and remove the line that followed your cursor.\n\t\t\t\tThis is best used together with [signal connection_drag_started] and [signal connection_drag_ended] to add custom behavior like node addition through shortcuts.\n\t\t\t\tNote: This method suppresses any other connection request signals apart from [signal connection_drag_ended].","returnType":"void"},{"name":"get_attached_nodes_of_frame","signature":"get_attached_nodes_of_frame(frame: StringName) -> StringName[]","description":"Returns an array of node names that are attached to the  with the given name.","returnType":"StringName[]"},{"name":"get_closest_connection_at_point","signature":"get_closest_connection_at_point(point: Vector2, max_distance: float) -> Dictionary","description":"Returns the closest connection to the given point in screen space. If no connection is found within [param max_distance] pixels, an empty  is returned.\n\t\t\t\tA connection is represented as a  in the form of:\n\t\t\t\t\n\t\t\t\t{\n\t\t\t\t    from_node: StringName,\n\t\t\t\t    from_port: int,\n\t\t\t\t    to_node: StringName,\n\t\t\t\t    to_port: int,\n\t\t\t\t    keep_alive: bool\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tFor example, getting a connection at a given mouse position can be achieved like this:\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tvar connection = get_closest_connection_at_point(mouse_event.get_position())\n\t\t\t\t\n\t\t\t\t","returnType":"Dictionary"},{"name":"get_connection_count","signature":"get_connection_count(from_node: StringName, from_port: int) -> int","description":"Returns the number of connections from [param from_port] of [param from_node].","returnType":"int"},{"name":"get_connection_line","signature":"get_connection_line(from_node: Vector2, to_node: Vector2) -> PackedVector2Array","description":"Returns the points which would make up a connection between [param from_node] and [param to_node].","returnType":"PackedVector2Array"},{"name":"get_connections_intersecting_with_rect","signature":"get_connections_intersecting_with_rect(rect: Rect2) -> Dictionary[]","description":"Returns an  containing the list of connections that intersect with the given .\n\t\t\t\tA connection is represented as a  in the form of:\n\t\t\t\t\n\t\t\t\t{\n\t\t\t\t    from_node: StringName,\n\t\t\t\t    from_port: int,\n\t\t\t\t    to_node: StringName,\n\t\t\t\t    to_port: int,\n\t\t\t\t    keep_alive: bool\n\t\t\t\t}\n\t\t\t\t","returnType":"Dictionary[]"},{"name":"get_element_frame","signature":"get_element_frame(element: StringName) -> GraphFrame","description":"Returns the  that contains the  with the given name.","returnType":"GraphFrame"},{"name":"get_menu_hbox","signature":"get_menu_hbox() -> HBoxContainer","description":"Gets the  that contains the zooming and grid snap controls in the top left of the graph. You can use this method to reposition the toolbar or to add your own custom controls to it.\n\t\t\t\tWarning: This is a required internal node, removing and freeing it may cause a crash. If you wish to hide it or any of its children, use their [member CanvasItem.visible] property.","returnType":"HBoxContainer"},{"name":"is_node_connected","signature":"is_node_connected(from_node: StringName, from_port: int, to_node: StringName, to_port: int) -> bool","description":"Returns true if the [param from_port] of the [param from_node]  is connected to the [param to_port] of the [param to_node] .","returnType":"bool"},{"name":"is_valid_connection_type","signature":"is_valid_connection_type(from_type: int, to_type: int) -> bool","description":"Returns whether it's possible to make a connection between two different port types. The port type is defined individually for the left and the right port of each slot with the [method GraphNode.set_slot] method.\n\t\t\t\tSee also [method add_valid_connection_type] and [method remove_valid_connection_type].","returnType":"bool"},{"name":"remove_valid_connection_type","signature":"remove_valid_connection_type(from_type: int, to_type: int) -> void","description":"Disallows the connection between two different port types previously allowed by [method add_valid_connection_type]. The port type is defined individually for the left and the right port of each slot with the [method GraphNode.set_slot] method.\n\t\t\t\tSee also [method is_valid_connection_type].","returnType":"void"},{"name":"remove_valid_left_disconnect_type","signature":"remove_valid_left_disconnect_type(type: int) -> void","description":"Disallows to disconnect nodes when dragging from the left port of the 's slot if it has the specified type. Use this to disable disconnection previously allowed with [method add_valid_left_disconnect_type].","returnType":"void"},{"name":"remove_valid_right_disconnect_type","signature":"remove_valid_right_disconnect_type(type: int) -> void","description":"Disallows to disconnect nodes when dragging from the right port of the 's slot if it has the specified type. Use this to disable disconnection previously allowed with [method add_valid_right_disconnect_type].","returnType":"void"},{"name":"set_connection_activity","signature":"set_connection_activity(from_node: StringName, from_port: int, to_node: StringName, to_port: int, amount: float) -> void","description":"Sets the coloration of the connection between [param from_node]'s [param from_port] and [param to_node]'s [param to_port] with the color provided in the [theme_item activity] theme property. The color is linearly interpolated between the connection color and the activity color using [param amount] as weight.","returnType":"void"},{"name":"set_selected","signature":"set_selected(node: Node) -> void","description":"Sets the specified [param node] as the one selected.","returnType":"void"}],"signals":[{"name":"begin_node_move","description":"Emitted at the beginning of a [GraphElement]'s movement."},{"name":"connection_drag_ended","description":"Emitted at the end of a connection drag."},{"name":"connection_drag_started","description":"Emitted at the beginning of a connection drag."},{"name":"connection_from_empty","description":"Emitted when user drags a connection from an input port into the empty space of the graph."},{"name":"connection_request","description":"Emitted to the GraphEdit when the connection between the [param from_port] of the [param from_node] [GraphNode] and the [param to_port] of the [param to_node] [GraphNode] is attempted to be created."},{"name":"connection_to_empty","description":"Emitted when user drags a connection from an output port into the empty space of the graph."},{"name":"copy_nodes_request","description":"Emitted when this [GraphEdit] captures a [code]ui_copy[/code] action ([kbd]Ctrl + C[/kbd] by default). In general, this signal indicates that the selected [GraphElement]s should be copied."},{"name":"cut_nodes_request","description":"Emitted when this [GraphEdit] captures a [code]ui_cut[/code] action ([kbd]Ctrl + X[/kbd] by default). In general, this signal indicates that the selected [GraphElement]s should be cut."},{"name":"delete_nodes_request","description":"Emitted when this [GraphEdit] captures a [code]ui_graph_delete[/code] action ([kbd]Delete[/kbd] by default).\n\t\t\t\t[param nodes] is an array of node names that should be removed. These usually include all selected nodes."},{"name":"disconnection_request","description":"Emitted to the GraphEdit when the connection between [param from_port] of [param from_node] [GraphNode] and [param to_port] of [param to_node] [GraphNode] is attempted to be removed."},{"name":"duplicate_nodes_request","description":"Emitted when this [GraphEdit] captures a [code]ui_graph_duplicate[/code] action ([kbd]Ctrl + D[/kbd] by default). In general, this signal indicates that the selected [GraphElement]s should be duplicated."},{"name":"end_node_move","description":"Emitted at the end of a [GraphElement]'s movement."},{"name":"frame_rect_changed","description":"Emitted when the [GraphFrame] [param frame] is resized to [param new_rect]."},{"name":"graph_elements_linked_to_frame_request","description":"Emitted when one or more [GraphElement]s are dropped onto the [GraphFrame] named [param frame], when they were not previously attached to any other one.\n\t\t\t\t[param elements] is an array of [GraphElement]s to be attached."},{"name":"node_deselected","description":"Emitted when the given [GraphElement] node is deselected."},{"name":"node_selected","description":"Emitted when the given [GraphElement] node is selected."},{"name":"paste_nodes_request","description":"Emitted when this [GraphEdit] captures a [code]ui_paste[/code] action ([kbd]Ctrl + V[/kbd] by default). In general, this signal indicates that previously copied [GraphElement]s should be pasted."},{"name":"popup_request","description":"Emitted when a popup is requested. Happens on right-clicking in the GraphEdit. [param at_position] is the position of the mouse pointer when the signal is sent."},{"name":"scroll_offset_changed","description":"Emitted when the scroll offset is changed by the user. It will not be emitted when changed in code."}]},"GraphElement":{"name":"GraphElement","description":"A container that represents a basic element that can be placed inside a  control.","inherits":"Container","properties":[{"name":"draggable","type":"bool","description":"If [code]true[/code], the user can drag the GraphElement."},{"name":"position_offset","type":"Vector2","description":"The offset of the GraphElement, relative to the scroll offset of the [GraphEdit]."},{"name":"resizable","type":"bool","description":"If [code]true[/code], the user can resize the GraphElement.\n\t\t\t[b]Note:[/b] Dragging the handle will only emit the [signal resize_request] and [signal resize_end] signals, the GraphElement needs to be resized manually."},{"name":"selectable","type":"bool","description":"If [code]true[/code], the user can select the GraphElement."},{"name":"selected","type":"bool","description":"If [code]true[/code], the GraphElement is selected."}],"methods":[],"signals":[{"name":"delete_request","description":"Emitted when removing the GraphElement is requested."},{"name":"dragged","description":"Emitted when the GraphElement is dragged."},{"name":"node_deselected","description":"Emitted when the GraphElement is deselected."},{"name":"node_selected","description":"Emitted when the GraphElement is selected."},{"name":"position_offset_changed","description":"Emitted when the GraphElement is moved."},{"name":"raise_request","description":"Emitted when displaying the GraphElement over other ones is requested. Happens on focusing (clicking into) the GraphElement."},{"name":"resize_end","description":"Emitted when releasing the mouse button after dragging the resizer handle (see [member resizable])."},{"name":"resize_request","description":"Emitted when resizing the GraphElement is requested. Happens on dragging the resizer handle (see [member resizable])."}]},"GraphFrame":{"name":"GraphFrame","description":"GraphFrame is a special  that can be used to organize other s inside a .","inherits":"GraphElement","properties":[{"name":"autoshrink_enabled","type":"bool","description":"If [code]true[/code], the frame's rect will be adjusted automatically to enclose all attached [GraphElement]s."},{"name":"autoshrink_margin","type":"int","description":"The margin around the attached nodes that is used to calculate the size of the frame when [member autoshrink_enabled] is [code]true[/code]."},{"name":"drag_margin","type":"int","description":"The margin inside the frame that can be used to drag the frame."},{"name":"tint_color","type":"Color","description":"The color of the frame when [member tint_color_enabled] is [code]true[/code]."},{"name":"tint_color_enabled","type":"bool","description":"If [code]true[/code], the tint color will be used to tint the frame."},{"name":"title","type":"String","description":"Title of the frame."}],"methods":[{"name":"get_titlebar_hbox","signature":"get_titlebar_hbox() -> HBoxContainer","description":"Returns the  used for the title bar, only containing a  for displaying the title by default.\n\t\t\t\tThis can be used to add custom controls to the title bar such as option or close buttons.","returnType":"HBoxContainer"}],"signals":[{"name":"autoshrink_changed","description":"Emitted when [member autoshrink_enabled] or [member autoshrink_margin] changes."}]},"GraphNode":{"name":"GraphNode","description":"A container with connection ports, representing a node in a .","inherits":"GraphElement","properties":[{"name":"ignore_invalid_connection_type","type":"bool","description":"If [code]true[/code], you can connect ports with different types, even if the connection was not explicitly allowed in the parent [GraphEdit]."},{"name":"title","type":"String","description":"The text displayed in the GraphNode's title bar."}],"methods":[{"name":"_draw_port","signature":"_draw_port(slot_index: int, position: Vector2i, left: bool, color: Color) -> void","description":"","returnType":"void"},{"name":"clear_all_slots","signature":"clear_all_slots() -> void","description":"Disables all slots of the GraphNode. This will remove all input/output ports from the GraphNode.","returnType":"void"},{"name":"clear_slot","signature":"clear_slot(slot_index: int) -> void","description":"Disables the slot with the given [param slot_index]. This will remove the corresponding input and output port from the GraphNode.","returnType":"void"},{"name":"get_input_port_color","signature":"get_input_port_color(port_idx: int) -> Color","description":"Returns the  of the input port with the given [param port_idx].","returnType":"Color"},{"name":"get_input_port_count","signature":"get_input_port_count() -> int","description":"Returns the number of slots with an enabled input port.","returnType":"int"},{"name":"get_input_port_position","signature":"get_input_port_position(port_idx: int) -> Vector2","description":"Returns the position of the input port with the given [param port_idx].","returnType":"Vector2"},{"name":"get_input_port_slot","signature":"get_input_port_slot(port_idx: int) -> int","description":"Returns the corresponding slot index of the input port with the given [param port_idx].","returnType":"int"},{"name":"get_input_port_type","signature":"get_input_port_type(port_idx: int) -> int","description":"Returns the type of the input port with the given [param port_idx].","returnType":"int"},{"name":"get_output_port_color","signature":"get_output_port_color(port_idx: int) -> Color","description":"Returns the  of the output port with the given [param port_idx].","returnType":"Color"},{"name":"get_output_port_count","signature":"get_output_port_count() -> int","description":"Returns the number of slots with an enabled output port.","returnType":"int"},{"name":"get_output_port_position","signature":"get_output_port_position(port_idx: int) -> Vector2","description":"Returns the position of the output port with the given [param port_idx].","returnType":"Vector2"},{"name":"get_output_port_slot","signature":"get_output_port_slot(port_idx: int) -> int","description":"Returns the corresponding slot index of the output port with the given [param port_idx].","returnType":"int"},{"name":"get_output_port_type","signature":"get_output_port_type(port_idx: int) -> int","description":"Returns the type of the output port with the given [param port_idx].","returnType":"int"},{"name":"get_slot_color_left","signature":"get_slot_color_left(slot_index: int) -> Color","description":"Returns the left (input)  of the slot with the given [param slot_index].","returnType":"Color"},{"name":"get_slot_color_right","signature":"get_slot_color_right(slot_index: int) -> Color","description":"Returns the right (output)  of the slot with the given [param slot_index].","returnType":"Color"},{"name":"get_slot_custom_icon_left","signature":"get_slot_custom_icon_left(slot_index: int) -> Texture2D","description":"Returns the left (input) custom  of the slot with the given [param slot_index].","returnType":"Texture2D"},{"name":"get_slot_custom_icon_right","signature":"get_slot_custom_icon_right(slot_index: int) -> Texture2D","description":"Returns the right (output) custom  of the slot with the given [param slot_index].","returnType":"Texture2D"},{"name":"get_slot_type_left","signature":"get_slot_type_left(slot_index: int) -> int","description":"Returns the left (input) type of the slot with the given [param slot_index].","returnType":"int"},{"name":"get_slot_type_right","signature":"get_slot_type_right(slot_index: int) -> int","description":"Returns the right (output) type of the slot with the given [param slot_index].","returnType":"int"},{"name":"get_titlebar_hbox","signature":"get_titlebar_hbox() -> HBoxContainer","description":"Returns the  used for the title bar, only containing a  for displaying the title by default. This can be used to add custom controls to the title bar such as option or close buttons.","returnType":"HBoxContainer"},{"name":"is_slot_draw_stylebox","signature":"is_slot_draw_stylebox(slot_index: int) -> bool","description":"Returns true if the background  of the slot with the given [param slot_index] is drawn.","returnType":"bool"},{"name":"is_slot_enabled_left","signature":"is_slot_enabled_left(slot_index: int) -> bool","description":"Returns true if left (input) side of the slot with the given [param slot_index] is enabled.","returnType":"bool"},{"name":"is_slot_enabled_right","signature":"is_slot_enabled_right(slot_index: int) -> bool","description":"Returns true if right (output) side of the slot with the given [param slot_index] is enabled.","returnType":"bool"},{"name":"set_slot","signature":"set_slot(slot_index: int, enable_left_port: bool, type_left: int, color_left: Color, enable_right_port: bool, type_right: int, color_right: Color, custom_icon_left: Texture2D, custom_icon_right: Texture2D, draw_stylebox: bool) -> void","description":"Sets properties of the slot with the given [param slot_index].\n\t\t\t\tIf [param enable_left_port]/[param enable_right_port] is true, a port will appear and the slot will be able to be connected from this side.\n\t\t\t\tWith [param type_left]/[param type_right] an arbitrary type can be assigned to each port. Two ports can be connected if they share the same type, or if the connection between their types is allowed in the parent  (see [method GraphEdit.add_valid_connection_type]). Keep in mind that the  has the final say in accepting the connection. Type compatibility simply allows the [signal GraphEdit.connection_request] signal to be emitted.\n\t\t\t\tPorts can be further customized using [param color_left]/[param color_right] and [param custom_icon_left]/[param custom_icon_right]. The color parameter adds a tint to the icon. The custom icon can be used to override the default port dot.\n\t\t\t\tAdditionally, [param draw_stylebox] can be used to enable or disable drawing of the background stylebox for each slot. See [theme_item slot].\n\t\t\t\tIndividual properties can also be set using one of the set_slot_* methods.\n\t\t\t\tNote: This method only sets properties of the slot. To create the slot itself, add a -derived child to the GraphNode.","returnType":"void"},{"name":"set_slot_color_left","signature":"set_slot_color_left(slot_index: int, color: Color) -> void","description":"Sets the  of the left (input) side of the slot with the given [param slot_index] to [param color].","returnType":"void"},{"name":"set_slot_color_right","signature":"set_slot_color_right(slot_index: int, color: Color) -> void","description":"Sets the  of the right (output) side of the slot with the given [param slot_index] to [param color].","returnType":"void"},{"name":"set_slot_custom_icon_left","signature":"set_slot_custom_icon_left(slot_index: int, custom_icon: Texture2D) -> void","description":"Sets the custom  of the left (input) side of the slot with the given [param slot_index] to [param custom_icon].","returnType":"void"},{"name":"set_slot_custom_icon_right","signature":"set_slot_custom_icon_right(slot_index: int, custom_icon: Texture2D) -> void","description":"Sets the custom  of the right (output) side of the slot with the given [param slot_index] to [param custom_icon].","returnType":"void"},{"name":"set_slot_draw_stylebox","signature":"set_slot_draw_stylebox(slot_index: int, enable: bool) -> void","description":"Toggles the background  of the slot with the given [param slot_index].","returnType":"void"},{"name":"set_slot_enabled_left","signature":"set_slot_enabled_left(slot_index: int, enable: bool) -> void","description":"Toggles the left (input) side of the slot with the given [param slot_index]. If [param enable] is true, a port will appear on the left side and the slot will be able to be connected from this side.","returnType":"void"},{"name":"set_slot_enabled_right","signature":"set_slot_enabled_right(slot_index: int, enable: bool) -> void","description":"Toggles the right (output) side of the slot with the given [param slot_index]. If [param enable] is true, a port will appear on the right side and the slot will be able to be connected from this side.","returnType":"void"},{"name":"set_slot_type_left","signature":"set_slot_type_left(slot_index: int, type: int) -> void","description":"Sets the left (input) type of the slot with the given [param slot_index] to [param type]. If the value is negative, all connections will be disallowed to be created via user inputs.","returnType":"void"},{"name":"set_slot_type_right","signature":"set_slot_type_right(slot_index: int, type: int) -> void","description":"Sets the right (output) type of the slot with the given [param slot_index] to [param type]. If the value is negative, all connections will be disallowed to be created via user inputs.","returnType":"void"}],"signals":[{"name":"slot_updated","description":"Emitted when any GraphNode's slot is updated."}]},"GridContainer":{"name":"GridContainer","description":"A container that arranges its child controls in a grid layout.","inherits":"Container","properties":[{"name":"columns","type":"int","description":"The number of columns in the [GridContainer]. If modified, [GridContainer] reorders its Control-derived children to accommodate the new layout."}],"methods":[],"signals":[]},"GrooveJoint2D":{"name":"GrooveJoint2D","description":"A physics joint that restricts the movement of two 2D physics bodies to a fixed axis.","inherits":"Joint2D","properties":[{"name":"initial_offset","type":"float","description":"The body B's initial anchor position defined by the joint's origin and a local offset [member initial_offset] along the joint's Y axis (along the groove)."},{"name":"length","type":"float","description":"The groove's length. The groove is from the joint's origin towards [member length] along the joint's local Y axis."}],"methods":[],"signals":[]},"HBoxContainer":{"name":"HBoxContainer","description":"A container that arranges its child controls horizontally.","inherits":"BoxContainer","properties":[],"methods":[],"signals":[]},"HFlowContainer":{"name":"HFlowContainer","description":"A container that arranges its child controls horizontally and wraps them around at the borders.","inherits":"FlowContainer","properties":[],"methods":[],"signals":[]},"HMACContext":{"name":"HMACContext","description":"Used to create an HMAC for a message using a key.","inherits":"RefCounted","properties":[],"methods":[{"name":"finish","signature":"finish() -> PackedByteArray","description":"Returns the resulting HMAC. If the HMAC failed, an empty  is returned.","returnType":"PackedByteArray"},{"name":"start","signature":"start(hash_type: int, key: PackedByteArray) -> int","description":"Initializes the HMACContext. This method cannot be called again on the same HMACContext until [method finish] has been called.","returnType":"int"},{"name":"update","signature":"update(data: PackedByteArray) -> int","description":"Updates the message to be HMACed. This can be called multiple times before [method finish] is called to append [param data] to the message, but cannot be called until [method start] has been called.","returnType":"int"}],"signals":[]},"HScrollBar":{"name":"HScrollBar","description":"A horizontal scrollbar that goes from left (min) to right (max).","inherits":"ScrollBar","properties":[],"methods":[],"signals":[]},"HSeparator":{"name":"HSeparator","description":"A horizontal line used for separating other controls.","inherits":"Separator","properties":[],"methods":[],"signals":[]},"HSlider":{"name":"HSlider","description":"A horizontal slider that goes from left (min) to right (max).","inherits":"Slider","properties":[],"methods":[],"signals":[]},"HSplitContainer":{"name":"HSplitContainer","description":"A container that splits two child controls horizontally and provides a grabber for adjusting the split ratio.","inherits":"SplitContainer","properties":[],"methods":[],"signals":[]},"HTTPClient":{"name":"HTTPClient","description":"Low-level hyper-text transfer protocol client.","inherits":"RefCounted","properties":[{"name":"blocking_mode_enabled","type":"bool","description":"If [code]true[/code], execution will block until all data is read from the response."},{"name":"connection","type":"StreamPeer","description":"The connection to use for this client."},{"name":"read_chunk_size","type":"int","description":"The size of the buffer used and maximum bytes to read per iteration. See [method read_response_body_chunk]."}],"methods":[{"name":"close","signature":"close() -> void","description":"Closes the current connection, allowing reuse of this .","returnType":"void"},{"name":"connect_to_host","signature":"connect_to_host(host: String, port: int, tls_options: TLSOptions) -> int","description":"Connects to a host. This needs to be done before any requests are sent.\n\t\t\t\tIf no [param port] is specified (or -1 is used), it is automatically set to 80 for HTTP and 443 for HTTPS. You can pass the optional [param tls_options] parameter to customize the trusted certification authorities, or the common name verification when using HTTPS. See [method TLSOptions.client] and [method TLSOptions.client_unsafe].","returnType":"int"},{"name":"get_response_body_length","signature":"get_response_body_length() -> int","description":"Returns the response's body length.\n\t\t\t\tNote: Some Web servers may not send a body length. In this case, the value returned will be -1. If using chunked transfer encoding, the body length will also be -1.\n\t\t\t\tNote: This function always returns -1 on the Web platform due to browsers limitations.","returnType":"int"},{"name":"get_response_code","signature":"get_response_code() -> int","description":"Returns the response's HTTP status code.","returnType":"int"},{"name":"get_response_headers","signature":"get_response_headers() -> PackedStringArray","description":"Returns the response headers.","returnType":"PackedStringArray"},{"name":"get_response_headers_as_dictionary","signature":"get_response_headers_as_dictionary() -> Dictionary","description":"Returns all response headers as a . Each entry is composed by the header name, and a  containing the values separated by \"; \". The casing is kept the same as the headers were received.\n\t\t\t\t\n\t\t\t\t{\n\t\t\t\t    \"content-length\": 12,\n\t\t\t\t    \"Content-Type\": \"application/json; charset=UTF-8\",\n\t\t\t\t}\n\t\t\t\t","returnType":"Dictionary"},{"name":"get_status","signature":"get_status() -> int","description":"Returns a [enum Status] constant. Need to call [method poll] in order to get status updates.","returnType":"int"},{"name":"has_response","signature":"has_response() -> bool","description":"If true, this  has a response available.","returnType":"bool"},{"name":"is_response_chunked","signature":"is_response_chunked() -> bool","description":"If true, this  has a response that is chunked.","returnType":"bool"},{"name":"poll","signature":"poll() -> int","description":"This needs to be called in order to have any request processed. Check results with [method get_status].","returnType":"int"},{"name":"query_string_from_dict","signature":"query_string_from_dict(fields: Dictionary) -> String","description":"Generates a GET/POST application/x-www-form-urlencoded style query string from a provided dictionary, e.g.:\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tvar fields = {\"username\": \"user\", \"password\": \"pass\"}\n\t\t\t\tvar query_string = http_client.query_string_from_dict(fields)\n\t\t\t\t# Returns \"username=user&amp;password=pass\"\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tvar fields = new Godot.Collections.Dictionary { { \"username\", \"user\" }, { \"password\", \"pass\" } };\n\t\t\t\tstring queryString = httpClient.QueryStringFromDict(fields);\n\t\t\t\t// Returns \"username=user&amp;password=pass\"\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tFurthermore, if a key has a null value, only the key itself is added, without equal sign and value. If the value is an array, for each value in it a pair with the same key is added.\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tvar fields = {\"single\": 123, \"not_valued\": null, \"multiple\": [22, 33, 44]}\n\t\t\t\tvar query_string = http_client.query_string_from_dict(fields)\n\t\t\t\t# Returns \"single=123&amp;not_valued&amp;multiple=22&amp;multiple=33&amp;multiple=44\"\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tvar fields = new Godot.Collections.Dictionary\n\t\t\t\t{\n\t\t\t\t    { \"single\", 123 },\n\t\t\t\t    { \"notValued\", default },\n\t\t\t\t    { \"multiple\", new Godot.Collections.Array { 22, 33, 44 } },\n\t\t\t\t};\n\t\t\t\tstring queryString = httpClient.QueryStringFromDict(fields);\n\t\t\t\t// Returns \"single=123&amp;not_valued&amp;multiple=22&amp;multiple=33&amp;multiple=44\"\n\t\t\t\t\n\t\t\t\t","returnType":"String"},{"name":"read_response_body_chunk","signature":"read_response_body_chunk() -> PackedByteArray","description":"Reads one chunk from the response.","returnType":"PackedByteArray"},{"name":"request","signature":"request(method: int, url: String, headers: PackedStringArray, body: String) -> int","description":"Sends a request to the connected host.\n\t\t\t\tThe URL parameter is usually just the part after the host, so for https://example.com/index.php, it is /index.php. When sending requests to an HTTP proxy server, it should be an absolute URL. For [constant HTTPClient.METHOD_OPTIONS] requests, * is also allowed. For [constant HTTPClient.METHOD_CONNECT] requests, it should be the authority component (host:port).\n\t\t\t\tHeaders are HTTP request headers. For available HTTP methods, see [enum Method].\n\t\t\t\tTo create a POST request with query strings to push to the server, do:\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tvar fields = {\"username\" : \"user\", \"password\" : \"pass\"}\n\t\t\t\tvar query_string = http_client.query_string_from_dict(fields)\n\t\t\t\tvar headers = [\"Content-Type: application/x-www-form-urlencoded\", \"Content-Length: \" + str(query_string.length())]\n\t\t\t\tvar result = http_client.request(http_client.METHOD_POST, \"/index.php\", headers, query_string)\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tvar fields = new Godot.Collections.Dictionary { { \"username\", \"user\" }, { \"password\", \"pass\" } };\n\t\t\t\tstring queryString = new HttpClient().QueryStringFromDict(fields);\n\t\t\t\tstring[] headers = [\"Content-Type: application/x-www-form-urlencoded\", $\"Content-Length: {queryString.Length}\"];\n\t\t\t\tvar result = new HttpClient().Request(HttpClient.Method.Post, \"index.php\", headers, queryString);\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tNote: The [param body] parameter is ignored if [param method] is [constant HTTPClient.METHOD_GET]. This is because GET methods can't contain request data. As a workaround, you can pass request data as a query string in the URL. See [method String.uri_encode] for an example.","returnType":"int"},{"name":"request_raw","signature":"request_raw(method: int, url: String, headers: PackedStringArray, body: PackedByteArray) -> int","description":"Sends a raw request to the connected host.\n\t\t\t\tThe URL parameter is usually just the part after the host, so for https://example.com/index.php, it is /index.php. When sending requests to an HTTP proxy server, it should be an absolute URL. For [constant HTTPClient.METHOD_OPTIONS] requests, * is also allowed. For [constant HTTPClient.METHOD_CONNECT] requests, it should be the authority component (host:port).\n\t\t\t\tHeaders are HTTP request headers. For available HTTP methods, see [enum Method].\n\t\t\t\tSends the body data raw, as a byte array and does not encode it in any way.","returnType":"int"},{"name":"set_http_proxy","signature":"set_http_proxy(host: String, port: int) -> void","description":"Sets the proxy server for HTTP requests.\n\t\t\t\tThe proxy server is unset if [param host] is empty or [param port] is -1.","returnType":"void"},{"name":"set_https_proxy","signature":"set_https_proxy(host: String, port: int) -> void","description":"Sets the proxy server for HTTPS requests.\n\t\t\t\tThe proxy server is unset if [param host] is empty or [param port] is -1.","returnType":"void"}],"signals":[]},"HTTPRequest":{"name":"HTTPRequest","description":"A node with the ability to send HTTP(S) requests.","inherits":"Node","properties":[{"name":"accept_gzip","type":"bool","description":"If [code]true[/code], this header will be added to each request: [code]Accept-Encoding: gzip, deflate[/code] telling servers that it's okay to compress response bodies.\n\t\t\tAny Response body declaring a [code]Content-Encoding[/code] of either [code]gzip[/code] or [code]deflate[/code] will then be automatically decompressed, and the uncompressed bytes will be delivered via [signal request_completed].\n\t\t\tIf the user has specified their own [code]Accept-Encoding[/code] header, then no header will be added regardless of [member accept_gzip].\n\t\t\tIf [code]false[/code] no header will be added, and no decompression will be performed on response bodies. The raw bytes of the response body will be returned via [signal request_completed]."},{"name":"body_size_limit","type":"int","description":"Maximum allowed size for response bodies. If the response body is compressed, this will be used as the maximum allowed size for the decompressed body."},{"name":"download_chunk_size","type":"int","description":"The size of the buffer used and maximum bytes to read per iteration. See [member HTTPClient.read_chunk_size].\n\t\t\tSet this to a lower value (e.g. 4096 for 4 KiB) when downloading small files to decrease memory usage at the cost of download speeds."},{"name":"download_file","type":"String","description":"The file to download into. Will output any received file into it."},{"name":"max_redirects","type":"int","description":"Maximum number of allowed redirects."},{"name":"timeout","type":"float","description":"The duration to wait in seconds before a request times out. If [member timeout] is set to [code]0.0[/code] then the request will never time out. For simple requests, such as communication with a REST API, it is recommended that [member timeout] is set to a value suitable for the server response time (e.g. between [code]1.0[/code] and [code]10.0[/code]). This will help prevent unwanted timeouts caused by variation in server response times while still allowing the application to detect when a request has timed out. For larger requests such as file downloads it is suggested the [member timeout] be set to [code]0.0[/code], disabling the timeout functionality. This will help to prevent large transfers from failing due to exceeding the timeout value."},{"name":"use_threads","type":"bool","description":"If [code]true[/code], multithreading is used to improve performance."}],"methods":[{"name":"cancel_request","signature":"cancel_request() -> void","description":"Cancels the current request.","returnType":"void"},{"name":"get_body_size","signature":"get_body_size() -> int","description":"Returns the response body length.\n\t\t\t\tNote: Some Web servers may not send a body length. In this case, the value returned will be -1. If using chunked transfer encoding, the body length will also be -1.","returnType":"int"},{"name":"get_downloaded_bytes","signature":"get_downloaded_bytes() -> int","description":"Returns the number of bytes this HTTPRequest downloaded.","returnType":"int"},{"name":"get_http_client_status","signature":"get_http_client_status() -> int","description":"Returns the current status of the underlying . See [enum HTTPClient.Status].","returnType":"int"},{"name":"request","signature":"request(url: String, custom_headers: PackedStringArray, method: int, request_data: String) -> int","description":"Creates request on the underlying . If there is no configuration errors, it tries to connect using [method HTTPClient.connect_to_host] and passes parameters onto [method HTTPClient.request].\n\t\t\t\tReturns [constant OK] if request is successfully created. (Does not imply that the server has responded), [constant ERR_UNCONFIGURED] if not in the tree, [constant ERR_BUSY] if still processing previous request, [constant ERR_INVALID_PARAMETER] if given string is not a valid URL format, or [constant ERR_CANT_CONNECT] if not using thread and the  cannot connect to host.\n\t\t\t\tNote: When [param method] is [constant HTTPClient.METHOD_GET], the payload sent via [param request_data] might be ignored by the server or even cause the server to reject the request (check [url=https://datatracker.ietf.org/doc/html/rfc7231#section-4.3.1]RFC 7231 section 4.3.1 for more details). As a workaround, you can send data as a query string in the URL (see [method String.uri_encode] for an example).\n\t\t\t\tNote: It's recommended to use transport encryption (TLS) and to avoid sending sensitive information (such as login credentials) in HTTP GET URL parameters. Consider using HTTP POST requests or HTTP headers for such information instead.","returnType":"int"},{"name":"request_raw","signature":"request_raw(url: String, custom_headers: PackedStringArray, method: int, request_data_raw: PackedByteArray) -> int","description":"Creates request on the underlying  using a raw array of bytes for the request body. If there is no configuration errors, it tries to connect using [method HTTPClient.connect_to_host] and passes parameters onto [method HTTPClient.request].\n\t\t\t\tReturns [constant OK] if request is successfully created. (Does not imply that the server has responded), [constant ERR_UNCONFIGURED] if not in the tree, [constant ERR_BUSY] if still processing previous request, [constant ERR_INVALID_PARAMETER] if given string is not a valid URL format, or [constant ERR_CANT_CONNECT] if not using thread and the  cannot connect to host.","returnType":"int"},{"name":"set_http_proxy","signature":"set_http_proxy(host: String, port: int) -> void","description":"Sets the proxy server for HTTP requests.\n\t\t\t\tThe proxy server is unset if [param host] is empty or [param port] is -1.","returnType":"void"},{"name":"set_https_proxy","signature":"set_https_proxy(host: String, port: int) -> void","description":"Sets the proxy server for HTTPS requests.\n\t\t\t\tThe proxy server is unset if [param host] is empty or [param port] is -1.","returnType":"void"},{"name":"set_tls_options","signature":"set_tls_options(client_options: TLSOptions) -> void","description":"Sets the  to be used when connecting to an HTTPS server. See [method TLSOptions.client].","returnType":"void"}],"signals":[{"name":"request_completed","description":"Emitted when a request is completed."}]},"HashingContext":{"name":"HashingContext","description":"Provides functionality for computing cryptographic hashes chunk by chunk.","inherits":"RefCounted","properties":[],"methods":[{"name":"finish","signature":"finish() -> PackedByteArray","description":"Closes the current context, and return the computed hash.","returnType":"PackedByteArray"},{"name":"start","signature":"start(type: int) -> int","description":"Starts a new hash computation of the given [param type] (e.g. [constant HASH_SHA256] to start computation of an SHA-256).","returnType":"int"},{"name":"update","signature":"update(chunk: PackedByteArray) -> int","description":"Updates the computation with the given [param chunk] of data.","returnType":"int"}],"signals":[]},"HeightMapShape3D":{"name":"HeightMapShape3D","description":"A 3D height map shape used for physics collision.","inherits":"Shape3D","properties":[{"name":"map_data","type":"PackedFloat32Array","description":"Height map data. The array's size must be equal to [member map_width] multiplied by [member map_depth]."},{"name":"map_depth","type":"int","description":"Number of vertices in the depth of the height map. Changing this will resize the [member map_data]."},{"name":"map_width","type":"int","description":"Number of vertices in the width of the height map. Changing this will resize the [member map_data]."}],"methods":[{"name":"get_max_height","signature":"get_max_height() -> float","description":"Returns the largest height value found in [member map_data]. Recalculates only when [member map_data] changes.","returnType":"float"},{"name":"get_min_height","signature":"get_min_height() -> float","description":"Returns the smallest height value found in [member map_data]. Recalculates only when [member map_data] changes.","returnType":"float"},{"name":"update_map_data_from_image","signature":"update_map_data_from_image(image: Image, height_min: float, height_max: float) -> void","description":"Updates [member map_data] with data read from an  reference. Automatically resizes heightmap [member map_width] and [member map_depth] to fit the full image width and height.\n\t\t\t\tThe image needs to be in either [constant Image.FORMAT_RF] (32 bit), [constant Image.FORMAT_RH] (16 bit), or [constant Image.FORMAT_R8] (8 bit).\n\t\t\t\tEach image pixel is read in as a float on the range from 0.0 (black pixel) to 1.0 (white pixel). This range value gets remapped to [param height_min] and [param height_max] to form the final height value.","returnType":"void"}],"signals":[]},"HingeJoint3D":{"name":"HingeJoint3D","description":"A physics joint that restricts the rotation of a 3D physics body around an axis relative to another physics body.","inherits":"Joint3D","properties":[{"name":"angular_limit/bias","type":"float","description":"The speed with which the rotation across the axis perpendicular to the hinge gets corrected."},{"name":"angular_limit/enable","type":"bool","description":"If [code]true[/code], the hinges maximum and minimum rotation, defined by [member angular_limit/lower] and [member angular_limit/upper] has effects."},{"name":"angular_limit/lower","type":"float","description":"The minimum rotation. Only active if [member angular_limit/enable] is [code]true[/code]."},{"name":"angular_limit/relaxation","type":"float","description":"The lower this value, the more the rotation gets slowed down."},{"name":"angular_limit/softness","type":"float","description":""},{"name":"angular_limit/upper","type":"float","description":"The maximum rotation. Only active if [member angular_limit/enable] is [code]true[/code]."},{"name":"motor/enable","type":"bool","description":"When activated, a motor turns the hinge."},{"name":"motor/max_impulse","type":"float","description":"Maximum acceleration for the motor."},{"name":"motor/target_velocity","type":"float","description":"Target speed for the motor."},{"name":"params/bias","type":"float","description":"The speed with which the two bodies get pulled together when they move in different directions."}],"methods":[{"name":"get_flag","signature":"get_flag(flag: int) -> bool","description":"Returns the value of the specified flag.","returnType":"bool"},{"name":"get_param","signature":"get_param(param: int) -> float","description":"Returns the value of the specified parameter.","returnType":"float"},{"name":"set_flag","signature":"set_flag(flag: int, enabled: bool) -> void","description":"If true, enables the specified flag.","returnType":"void"},{"name":"set_param","signature":"set_param(param: int, value: float) -> void","description":"Sets the value of the specified parameter.","returnType":"void"}],"signals":[]},"IP":{"name":"IP","description":"Internet protocol (IP) support functions such as DNS resolution.","inherits":"Object","properties":[],"methods":[{"name":"clear_cache","signature":"clear_cache(hostname: String) -> void","description":"Removes all of a [param hostname]'s cached references. If no [param hostname] is given, all cached IP addresses are removed.","returnType":"void"},{"name":"erase_resolve_item","signature":"erase_resolve_item(id: int) -> void","description":"Removes a given item [param id] from the queue. This should be used to free a queue after it has completed to enable more queries to happen.","returnType":"void"},{"name":"get_local_addresses","signature":"get_local_addresses() -> PackedStringArray","description":"Returns all the user's current IPv4 and IPv6 addresses as an array.","returnType":"PackedStringArray"},{"name":"get_local_interfaces","signature":"get_local_interfaces() -> Dictionary[]","description":"Returns all network adapters as an array.\n\t\t\t\tEach adapter is a dictionary of the form:\n\t\t\t\t\n\t\t\t\t{\n\t\t\t\t    \"index\": \"1\", # Interface index.\n\t\t\t\t    \"name\": \"eth0\", # Interface name.\n\t\t\t\t    \"friendly\": \"Ethernet One\", # A friendly name (might be empty).\n\t\t\t\t    \"addresses\": [\"192.168.1.101\"], # An array of IP addresses associated to this interface.\n\t\t\t\t}\n\t\t\t\t","returnType":"Dictionary[]"},{"name":"get_resolve_item_address","signature":"get_resolve_item_address(id: int) -> String","description":"Returns a queued hostname's IP address, given its queue [param id]. Returns an empty string on error or if resolution hasn't happened yet (see [method get_resolve_item_status]).","returnType":"String"},{"name":"get_resolve_item_addresses","signature":"get_resolve_item_addresses(id: int) -> Array","description":"Returns resolved addresses, or an empty array if an error happened or resolution didn't happen yet (see [method get_resolve_item_status]).","returnType":"Array"},{"name":"get_resolve_item_status","signature":"get_resolve_item_status(id: int) -> int","description":"Returns a queued hostname's status as a [enum ResolverStatus] constant, given its queue [param id].","returnType":"int"},{"name":"resolve_hostname","signature":"resolve_hostname(host: String, ip_type: int) -> String","description":"Returns a given hostname's IPv4 or IPv6 address when resolved (blocking-type method). The address type returned depends on the [enum Type] constant given as [param ip_type].","returnType":"String"},{"name":"resolve_hostname_addresses","signature":"resolve_hostname_addresses(host: String, ip_type: int) -> PackedStringArray","description":"Resolves a given hostname in a blocking way. Addresses are returned as an  of IPv4 or IPv6 addresses depending on [param ip_type].","returnType":"PackedStringArray"},{"name":"resolve_hostname_queue_item","signature":"resolve_hostname_queue_item(host: String, ip_type: int) -> int","description":"Creates a queue item to resolve a hostname to an IPv4 or IPv6 address depending on the [enum Type] constant given as [param ip_type]. Returns the queue ID if successful, or [constant RESOLVER_INVALID_ID] on error.","returnType":"int"}],"signals":[]},"Image":{"name":"Image","description":"Image datatype.","inherits":"Resource","properties":[{"name":"data","type":"Dictionary","description":"Holds all the image's color data in a given format. See [enum Format] constants."}],"methods":[{"name":"adjust_bcs","signature":"adjust_bcs(brightness: float, contrast: float, saturation: float) -> void","description":"Adjusts this image's [param brightness], [param contrast], and [param saturation] by the given values. Does not work if the image is compressed (see [method is_compressed]).","returnType":"void"},{"name":"blend_rect","signature":"blend_rect(src: Image, src_rect: Rect2i, dst: Vector2i) -> void","description":"Alpha-blends [param src_rect] from [param src] image to this image at coordinates [param dst], clipped accordingly to both image bounds. This image and [param src] image must have the same format. [param src_rect] with non-positive size is treated as empty.","returnType":"void"},{"name":"blend_rect_mask","signature":"blend_rect_mask(src: Image, mask: Image, src_rect: Rect2i, dst: Vector2i) -> void","description":"Alpha-blends [param src_rect] from [param src] image to this image using [param mask] image at coordinates [param dst], clipped accordingly to both image bounds. Alpha channels are required for both [param src] and [param mask]. [param dst] pixels and [param src] pixels will blend if the corresponding mask pixel's alpha value is not 0. This image and [param src] image must have the same format. [param src] image and [param mask] image must have the same size (width and height) but they can have different formats. [param src_rect] with non-positive size is treated as empty.","returnType":"void"},{"name":"blit_rect","signature":"blit_rect(src: Image, src_rect: Rect2i, dst: Vector2i) -> void","description":"Copies [param src_rect] from [param src] image to this image at coordinates [param dst], clipped accordingly to both image bounds. This image and [param src] image must have the same format. [param src_rect] with non-positive size is treated as empty.\n\t\t\t\tNote: The alpha channel data in [param src] will overwrite the corresponding data in this image at the target position. To blend alpha channels, use [method blend_rect] instead.","returnType":"void"},{"name":"blit_rect_mask","signature":"blit_rect_mask(src: Image, mask: Image, src_rect: Rect2i, dst: Vector2i) -> void","description":"Blits [param src_rect] area from [param src] image to this image at the coordinates given by [param dst], clipped accordingly to both image bounds. [param src] pixel is copied onto [param dst] if the corresponding [param mask] pixel's alpha value is not 0. This image and [param src] image must have the same format. [param src] image and [param mask] image must have the same size (width and height) but they can have different formats. [param src_rect] with non-positive size is treated as empty.","returnType":"void"},{"name":"bump_map_to_normal_map","signature":"bump_map_to_normal_map(bump_scale: float) -> void","description":"Converts a bump map to a normal map. A bump map provides a height offset per-pixel, while a normal map provides a normal direction per pixel.","returnType":"void"},{"name":"clear_mipmaps","signature":"clear_mipmaps() -> void","description":"Removes the image's mipmaps.","returnType":"void"},{"name":"compress","signature":"compress(mode: int, source: int, astc_format: int) -> int","description":"Compresses the image to use less memory. Can not directly access pixel data while the image is compressed. Returns error if the chosen compression mode is not available.\n\t\t\t\tThe [param source] parameter helps to pick the best compression method for DXT and ETC2 formats. It is ignored for ASTC compression.\n\t\t\t\tFor ASTC compression, the [param astc_format] parameter must be supplied.","returnType":"int"},{"name":"compress_from_channels","signature":"compress_from_channels(mode: int, channels: int, astc_format: int) -> int","description":"Compresses the image to use less memory. Can not directly access pixel data while the image is compressed. Returns error if the chosen compression mode is not available.\n\t\t\t\tThis is an alternative to [method compress] that lets the user supply the channels used in order for the compressor to pick the best DXT and ETC2 formats. For other formats (non DXT or ETC2), this argument is ignored.\n\t\t\t\tFor ASTC compression, the [param astc_format] parameter must be supplied.","returnType":"int"},{"name":"compute_image_metrics","signature":"compute_image_metrics(compared_image: Image, use_luma: bool) -> Dictionary","description":"Compute image metrics on the current image and the compared image.\n\t\t\t\tThe dictionary contains max, mean, mean_squared, root_mean_squared and peak_snr.","returnType":"Dictionary"},{"name":"convert","signature":"convert(format: int) -> void","description":"Converts the image's format. See [enum Format] constants.","returnType":"void"},{"name":"copy_from","signature":"copy_from(src: Image) -> void","description":"Copies [param src] image to this image.","returnType":"void"},{"name":"create","signature":"create(width: int, height: int, use_mipmaps: bool, format: int) -> Image","description":"Creates an empty image of given size and format. See [enum Format] constants. If [param use_mipmaps] is true, then generate mipmaps for this image. See the [method generate_mipmaps].","returnType":"Image"},{"name":"create_empty","signature":"create_empty(width: int, height: int, use_mipmaps: bool, format: int) -> Image","description":"Creates an empty image of given size and format. See [enum Format] constants. If [param use_mipmaps] is true, then generate mipmaps for this image. See the [method generate_mipmaps].","returnType":"Image"},{"name":"create_from_data","signature":"create_from_data(width: int, height: int, use_mipmaps: bool, format: int, data: PackedByteArray) -> Image","description":"Creates a new image of given size and format. See [enum Format] constants. Fills the image with the given raw data. If [param use_mipmaps] is true then loads mipmaps for this image from [param data]. See [method generate_mipmaps].","returnType":"Image"},{"name":"crop","signature":"crop(width: int, height: int) -> void","description":"Crops the image to the given [param width] and [param height]. If the specified size is larger than the current size, the extra area is filled with black pixels.","returnType":"void"},{"name":"decompress","signature":"decompress() -> int","description":"Decompresses the image if it is VRAM compressed in a supported format. Returns [constant OK] if the format is supported, otherwise [constant ERR_UNAVAILABLE].\n\t\t\t\tNote: The following formats can be decompressed: DXT, RGTC, BPTC. The formats ETC1 and ETC2 are not supported.","returnType":"int"},{"name":"detect_alpha","signature":"detect_alpha() -> int","description":"Returns [constant ALPHA_BLEND] if the image has data for alpha values. Returns [constant ALPHA_BIT] if all the alpha values are stored in a single bit. Returns [constant ALPHA_NONE] if no data for alpha values is found.","returnType":"int"},{"name":"detect_used_channels","signature":"detect_used_channels(source: int) -> int","description":"Returns the color channels used by this image, as one of the [enum UsedChannels] constants. If the image is compressed, the original [param source] must be specified.","returnType":"int"},{"name":"fill","signature":"fill(color: Color) -> void","description":"Fills the image with [param color].","returnType":"void"},{"name":"fill_rect","signature":"fill_rect(rect: Rect2i, color: Color) -> void","description":"Fills [param rect] with [param color].","returnType":"void"},{"name":"fix_alpha_edges","signature":"fix_alpha_edges() -> void","description":"Blends low-alpha pixels with nearby pixels.","returnType":"void"},{"name":"flip_x","signature":"flip_x() -> void","description":"Flips the image horizontally.","returnType":"void"},{"name":"flip_y","signature":"flip_y() -> void","description":"Flips the image vertically.","returnType":"void"},{"name":"generate_mipmaps","signature":"generate_mipmaps(renormalize: bool) -> int","description":"Generates mipmaps for the image. Mipmaps are precalculated lower-resolution copies of the image that are automatically used if the image needs to be scaled down when rendered. They help improve image quality and performance when rendering. This method returns an error if the image is compressed, in a custom format, or if the image's width/height is 0. Enabling [param renormalize] when generating mipmaps for normal map textures will make sure all resulting vector values are normalized.\n\t\t\t\tIt is possible to check if the image has mipmaps by calling [method has_mipmaps] or [method get_mipmap_count]. Calling [method generate_mipmaps] on an image that already has mipmaps will replace existing mipmaps in the image.","returnType":"int"},{"name":"get_data","signature":"get_data() -> PackedByteArray","description":"Returns a copy of the image's raw data.","returnType":"PackedByteArray"},{"name":"get_data_size","signature":"get_data_size() -> int","description":"Returns size (in bytes) of the image's raw data.","returnType":"int"},{"name":"get_format","signature":"get_format() -> int","description":"Returns the image's format. See [enum Format] constants.","returnType":"int"},{"name":"get_height","signature":"get_height() -> int","description":"Returns the image's height.","returnType":"int"},{"name":"get_mipmap_count","signature":"get_mipmap_count() -> int","description":"Returns the number of mipmap levels or 0 if the image has no mipmaps. The largest main level image is not counted as a mipmap level by this method, so if you want to include it you can add 1 to this count.","returnType":"int"},{"name":"get_mipmap_offset","signature":"get_mipmap_offset(mipmap: int) -> int","description":"Returns the offset where the image's mipmap with index [param mipmap] is stored in the [member data] dictionary.","returnType":"int"},{"name":"get_pixel","signature":"get_pixel(x: int, y: int) -> Color","description":"Returns the color of the pixel at (x, y).\n\t\t\t\tThis is the same as [method get_pixelv], but with two integer arguments instead of a  argument.","returnType":"Color"},{"name":"get_pixelv","signature":"get_pixelv(point: Vector2i) -> Color","description":"Returns the color of the pixel at [param point].\n\t\t\t\tThis is the same as [method get_pixel], but with a  argument instead of two integer arguments.","returnType":"Color"},{"name":"get_region","signature":"get_region(region: Rect2i) -> Image","description":"Returns a new  that is a copy of this 's area specified with [param region].","returnType":"Image"},{"name":"get_size","signature":"get_size() -> Vector2i","description":"Returns the image's size (width and height).","returnType":"Vector2i"},{"name":"get_used_rect","signature":"get_used_rect() -> Rect2i","description":"Returns a  enclosing the visible portion of the image, considering each pixel with a non-zero alpha channel as visible.","returnType":"Rect2i"},{"name":"get_width","signature":"get_width() -> int","description":"Returns the image's width.","returnType":"int"},{"name":"has_mipmaps","signature":"has_mipmaps() -> bool","description":"Returns true if the image has generated mipmaps.","returnType":"bool"},{"name":"is_compressed","signature":"is_compressed() -> bool","description":"Returns true if the image is compressed.","returnType":"bool"},{"name":"is_empty","signature":"is_empty() -> bool","description":"Returns true if the image has no data.","returnType":"bool"},{"name":"is_invisible","signature":"is_invisible() -> bool","description":"Returns true if all the image's pixels have an alpha value of 0. Returns false if any pixel has an alpha value higher than 0.","returnType":"bool"},{"name":"linear_to_srgb","signature":"linear_to_srgb() -> void","description":"Converts the entire image from the linear colorspace to the sRGB colorspace. Only works on images with [constant FORMAT_RGB8] or [constant FORMAT_RGBA8] formats.","returnType":"void"},{"name":"load","signature":"load(path: String) -> int","description":"Loads an image from file [param path]. See [url=$DOCS_URL/tutorials/assets_pipeline/importing_images.html#supported-image-formats]Supported image formats for a list of supported image formats and limitations.\n\t\t\t\tWarning: This method should only be used in the editor or in cases when you need to load external images at run-time, such as images located at the user:// directory, and may not work in exported projects.\n\t\t\t\tSee also  description for usage examples.","returnType":"int"},{"name":"load_bmp_from_buffer","signature":"load_bmp_from_buffer(buffer: PackedByteArray) -> int","description":"Loads an image from the binary contents of a BMP file.\n\t\t\t\tNote: Godot's BMP module doesn't support 16-bit per pixel images. Only 1-bit, 4-bit, 8-bit, 24-bit, and 32-bit per pixel images are supported.\n\t\t\t\tNote: This method is only available in engine builds with the BMP module enabled. By default, the BMP module is enabled, but it can be disabled at build-time using the module_bmp_enabled=no SCons option.","returnType":"int"},{"name":"load_from_file","signature":"load_from_file(path: String) -> Image","description":"Creates a new  and loads data from the specified file.","returnType":"Image"},{"name":"load_jpg_from_buffer","signature":"load_jpg_from_buffer(buffer: PackedByteArray) -> int","description":"Loads an image from the binary contents of a JPEG file.","returnType":"int"},{"name":"load_ktx_from_buffer","signature":"load_ktx_from_buffer(buffer: PackedByteArray) -> int","description":"Loads an image from the binary contents of a [url=https://github.com/KhronosGroup/KTX-Software]KTX file. Unlike most image formats, KTX can store VRAM-compressed data and embed mipmaps.\n\t\t\t\tNote: Godot's libktx implementation only supports 2D images. Cubemaps, texture arrays, and de-padding are not supported.\n\t\t\t\tNote: This method is only available in engine builds with the KTX module enabled. By default, the KTX module is enabled, but it can be disabled at build-time using the module_ktx_enabled=no SCons option.","returnType":"int"},{"name":"load_png_from_buffer","signature":"load_png_from_buffer(buffer: PackedByteArray) -> int","description":"Loads an image from the binary contents of a PNG file.","returnType":"int"},{"name":"load_svg_from_buffer","signature":"load_svg_from_buffer(buffer: PackedByteArray, scale: float) -> int","description":"Loads an image from the UTF-8 binary contents of an uncompressed SVG file (.svg).\n\t\t\t\tNote: Beware when using compressed SVG files (like .svgz), they need to be decompressed before loading.\n\t\t\t\tNote: This method is only available in engine builds with the SVG module enabled. By default, the SVG module is enabled, but it can be disabled at build-time using the module_svg_enabled=no SCons option.","returnType":"int"},{"name":"load_svg_from_string","signature":"load_svg_from_string(svg_str: String, scale: float) -> int","description":"Loads an image from the string contents of an SVG file (.svg).\n\t\t\t\tNote: This method is only available in engine builds with the SVG module enabled. By default, the SVG module is enabled, but it can be disabled at build-time using the module_svg_enabled=no SCons option.","returnType":"int"},{"name":"load_tga_from_buffer","signature":"load_tga_from_buffer(buffer: PackedByteArray) -> int","description":"Loads an image from the binary contents of a TGA file.\n\t\t\t\tNote: This method is only available in engine builds with the TGA module enabled. By default, the TGA module is enabled, but it can be disabled at build-time using the module_tga_enabled=no SCons option.","returnType":"int"},{"name":"load_webp_from_buffer","signature":"load_webp_from_buffer(buffer: PackedByteArray) -> int","description":"Loads an image from the binary contents of a WebP file.","returnType":"int"},{"name":"normal_map_to_xy","signature":"normal_map_to_xy() -> void","description":"Converts the image's data to represent coordinates on a 3D plane. This is used when the image represents a normal map. A normal map can add lots of detail to a 3D surface without increasing the polygon count.","returnType":"void"},{"name":"premultiply_alpha","signature":"premultiply_alpha() -> void","description":"Multiplies color values with alpha values. Resulting color values for a pixel are (color * alpha)/256. See also [member CanvasItemMaterial.blend_mode].","returnType":"void"},{"name":"resize","signature":"resize(width: int, height: int, interpolation: int) -> void","description":"Resizes the image to the given [param width] and [param height]. New pixels are calculated using the [param interpolation] mode defined via [enum Interpolation] constants.","returnType":"void"},{"name":"resize_to_po2","signature":"resize_to_po2(square: bool, interpolation: int) -> void","description":"Resizes the image to the nearest power of 2 for the width and height. If [param square] is true then set width and height to be the same. New pixels are calculated using the [param interpolation] mode defined via [enum Interpolation] constants.","returnType":"void"},{"name":"rgbe_to_srgb","signature":"rgbe_to_srgb() -> Image","description":"Converts a standard RGBE (Red Green Blue Exponent) image to an sRGB image.","returnType":"Image"},{"name":"rotate_90","signature":"rotate_90(direction: int) -> void","description":"Rotates the image in the specified [param direction] by 90 degrees. The width and height of the image must be greater than 1. If the width and height are not equal, the image will be resized.","returnType":"void"},{"name":"rotate_180","signature":"rotate_180() -> void","description":"Rotates the image by 180 degrees. The width and height of the image must be greater than 1.","returnType":"void"},{"name":"save_exr","signature":"save_exr(path: String, grayscale: bool) -> int","description":"Saves the image as an EXR file to [param path]. If [param grayscale] is true and the image has only one channel, it will be saved explicitly as monochrome rather than one red channel. This function will return [constant ERR_UNAVAILABLE] if Godot was compiled without the TinyEXR module.\n\t\t\t\tNote: The TinyEXR module is disabled in non-editor builds, which means [method save_exr] will return [constant ERR_UNAVAILABLE] when it is called from an exported project.","returnType":"int"},{"name":"save_exr_to_buffer","signature":"save_exr_to_buffer(grayscale: bool) -> PackedByteArray","description":"Saves the image as an EXR file to a byte array. If [param grayscale] is true and the image has only one channel, it will be saved explicitly as monochrome rather than one red channel. This function will return an empty byte array if Godot was compiled without the TinyEXR module.\n\t\t\t\tNote: The TinyEXR module is disabled in non-editor builds, which means [method save_exr] will return an empty byte array when it is called from an exported project.","returnType":"PackedByteArray"},{"name":"save_jpg","signature":"save_jpg(path: String, quality: float) -> int","description":"Saves the image as a JPEG file to [param path] with the specified [param quality] between 0.01 and 1.0 (inclusive). Higher [param quality] values result in better-looking output at the cost of larger file sizes. Recommended [param quality] values are between 0.75 and 0.90. Even at quality 1.00, JPEG compression remains lossy.\n\t\t\t\tNote: JPEG does not save an alpha channel. If the  contains an alpha channel, the image will still be saved, but the resulting JPEG file won't contain the alpha channel.","returnType":"int"},{"name":"save_jpg_to_buffer","signature":"save_jpg_to_buffer(quality: float) -> PackedByteArray","description":"Saves the image as a JPEG file to a byte array with the specified [param quality] between 0.01 and 1.0 (inclusive). Higher [param quality] values result in better-looking output at the cost of larger byte array sizes (and therefore memory usage). Recommended [param quality] values are between 0.75 and 0.90. Even at quality 1.00, JPEG compression remains lossy.\n\t\t\t\tNote: JPEG does not save an alpha channel. If the  contains an alpha channel, the image will still be saved, but the resulting byte array won't contain the alpha channel.","returnType":"PackedByteArray"},{"name":"save_png","signature":"save_png(path: String) -> int","description":"Saves the image as a PNG file to the file at [param path].","returnType":"int"},{"name":"save_png_to_buffer","signature":"save_png_to_buffer() -> PackedByteArray","description":"Saves the image as a PNG file to a byte array.","returnType":"PackedByteArray"},{"name":"save_webp","signature":"save_webp(path: String, lossy: bool, quality: float) -> int","description":"Saves the image as a WebP (Web Picture) file to the file at [param path]. By default it will save lossless. If [param lossy] is true, the image will be saved lossy, using the [param quality] setting between 0.0 and 1.0 (inclusive). Lossless WebP offers more efficient compression than PNG.\n\t\t\t\tNote: The WebP format is limited to a size of 16383×16383 pixels, while PNG can save larger images.","returnType":"int"},{"name":"save_webp_to_buffer","signature":"save_webp_to_buffer(lossy: bool, quality: float) -> PackedByteArray","description":"Saves the image as a WebP (Web Picture) file to a byte array. By default it will save lossless. If [param lossy] is true, the image will be saved lossy, using the [param quality] setting between 0.0 and 1.0 (inclusive). Lossless WebP offers more efficient compression than PNG.\n\t\t\t\tNote: The WebP format is limited to a size of 16383×16383 pixels, while PNG can save larger images.","returnType":"PackedByteArray"},{"name":"set_data","signature":"set_data(width: int, height: int, use_mipmaps: bool, format: int, data: PackedByteArray) -> void","description":"Overwrites data of an existing . Non-static equivalent of [method create_from_data].","returnType":"void"},{"name":"set_pixel","signature":"set_pixel(x: int, y: int, color: Color) -> void","description":"Sets the  of the pixel at (x, y) to [param color].\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tvar img_width = 10\n\t\t\t\tvar img_height = 5\n\t\t\t\tvar img = Image.create(img_width, img_height, false, Image.FORMAT_RGBA8)\n\n\t\t\t\timg.set_pixel(1, 2, Color.RED) # Sets the color at (1, 2) to red.\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tint imgWidth = 10;\n\t\t\t\tint imgHeight = 5;\n\t\t\t\tvar img = Image.Create(imgWidth, imgHeight, false, Image.Format.Rgba8);\n\n\t\t\t\timg.SetPixel(1, 2, Colors.Red); // Sets the color at (1, 2) to red.\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tThis is the same as [method set_pixelv], but with a two integer arguments instead of a  argument.","returnType":"void"},{"name":"set_pixelv","signature":"set_pixelv(point: Vector2i, color: Color) -> void","description":"Sets the  of the pixel at [param point] to [param color].\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tvar img_width = 10\n\t\t\t\tvar img_height = 5\n\t\t\t\tvar img = Image.create(img_width, img_height, false, Image.FORMAT_RGBA8)\n\n\t\t\t\timg.set_pixelv(Vector2i(1, 2), Color.RED) # Sets the color at (1, 2) to red.\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tint imgWidth = 10;\n\t\t\t\tint imgHeight = 5;\n\t\t\t\tvar img = Image.Create(imgWidth, imgHeight, false, Image.Format.Rgba8);\n\n\t\t\t\timg.SetPixelv(new Vector2I(1, 2), Colors.Red); // Sets the color at (1, 2) to red.\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tThis is the same as [method set_pixel], but with a  argument instead of two integer arguments.","returnType":"void"},{"name":"shrink_x2","signature":"shrink_x2() -> void","description":"Shrinks the image by a factor of 2 on each axis (this divides the pixel count by 4).","returnType":"void"},{"name":"srgb_to_linear","signature":"srgb_to_linear() -> void","description":"Converts the raw data from the sRGB colorspace to a linear scale. Only works on images with [constant FORMAT_RGB8] or [constant FORMAT_RGBA8] formats.","returnType":"void"}],"signals":[]},"ImageFormatLoader":{"name":"ImageFormatLoader","description":"Base class to add support for specific image formats.","inherits":"RefCounted","properties":[],"methods":[],"signals":[]},"ImageFormatLoaderExtension":{"name":"ImageFormatLoaderExtension","description":"Base class for creating  extensions (adding support for extra image formats).","inherits":"ImageFormatLoader","properties":[],"methods":[{"name":"_get_recognized_extensions","signature":"_get_recognized_extensions() -> PackedStringArray","description":"Returns the list of file extensions for this image format. Files with the given extensions will be treated as image file and loaded using this class.","returnType":"PackedStringArray"},{"name":"_load_image","signature":"_load_image(image: Image, fileaccess: FileAccess, flags: int, scale: float) -> int","description":"Loads the content of [param fileaccess] into the provided [param image].","returnType":"int"},{"name":"add_format_loader","signature":"add_format_loader() -> void","description":"Add this format loader to the engine, allowing it to recognize the file extensions returned by [method _get_recognized_extensions].","returnType":"void"},{"name":"remove_format_loader","signature":"remove_format_loader() -> void","description":"Remove this format loader from the engine.","returnType":"void"}],"signals":[]},"ImageTexture":{"name":"ImageTexture","description":"A  based on an .","inherits":"Texture2D","properties":[],"methods":[{"name":"create_from_image","signature":"create_from_image(image: Image) -> ImageTexture","description":"Creates a new  and initializes it by allocating and setting the data from an .","returnType":"ImageTexture"},{"name":"get_format","signature":"get_format() -> int","description":"Returns the format of the texture, one of [enum Image.Format].","returnType":"int"},{"name":"set_image","signature":"set_image(image: Image) -> void","description":"Replaces the texture's data with a new . This will re-allocate new memory for the texture.\n\t\t\t\tIf you want to update the image, but don't need to change its parameters (format, size), use [method update] instead for better performance.","returnType":"void"},{"name":"set_size_override","signature":"set_size_override(size: Vector2i) -> void","description":"Resizes the texture to the specified dimensions.","returnType":"void"},{"name":"update","signature":"update(image: Image) -> void","description":"Replaces the texture's data with a new .\n\t\t\t\tNote: The texture has to be created using [method create_from_image] or initialized first with the [method set_image] method before it can be updated. The new image dimensions, format, and mipmaps configuration should match the existing texture's image configuration.\n\t\t\t\tUse this method over [method set_image] if you need to update the texture frequently, which is faster than allocating additional memory for a new texture each time.","returnType":"void"}],"signals":[]},"ImageTexture3D":{"name":"ImageTexture3D","description":"Texture with 3 dimensions.","inherits":"Texture3D","properties":[],"methods":[{"name":"create","signature":"create(format: int, width: int, height: int, depth: int, use_mipmaps: bool, data: Image[]) -> int","description":"Creates the  with specified [param width], [param height], and [param depth]. See [enum Image.Format] for [param format] options. If [param use_mipmaps] is true, then generate mipmaps for the .","returnType":"int"},{"name":"update","signature":"update(data: Image[]) -> void","description":"Replaces the texture's existing data with the layers specified in [param data]. The size of [param data] must match the parameters that were used for [method create]. In other words, the texture cannot be resized or have its format changed by calling [method update].","returnType":"void"}],"signals":[]},"ImageTextureLayered":{"name":"ImageTextureLayered","description":"Base class for texture types which contain the data of multiple s. Each image is of the same size and format.","inherits":"TextureLayered","properties":[],"methods":[{"name":"create_from_images","signature":"create_from_images(images: Image[]) -> int","description":"Creates an  from an array of s. See [method Image.create] for the expected data format. The first image decides the width, height, image format and mipmapping setting. The other images must have the same width, height, image format and mipmapping setting.\n\t\t\t\tEach  represents one layer.\n\t\t\t\t\n\t\t\t\t# Fill in an array of Images with different colors.\n\t\t\t\tvar images = []\n\t\t\t\tconst LAYERS = 6\n\t\t\t\tfor i in LAYERS:\n\t\t\t\t    var image = Image.create_empty(128, 128, false, Image.FORMAT_RGB8)\n\t\t\t\t    if i % 3 == 0:\n\t\t\t\t        image.fill(Color.RED)\n\t\t\t\t    elif i % 3 == 1:\n\t\t\t\t        image.fill(Color.GREEN)\n\t\t\t\t    else:\n\t\t\t\t        image.fill(Color.BLUE)\n\t\t\t\t    images.push_back(image)\n\n\t\t\t\t# Create and save a 2D texture array. The array of images must have at least 1 Image.\n\t\t\t\tvar texture_2d_array = Texture2DArray.new()\n\t\t\t\ttexture_2d_array.create_from_images(images)\n\t\t\t\tResourceSaver.save(texture_2d_array, \"res://texture_2d_array.res\", ResourceSaver.FLAG_COMPRESS)\n\n\t\t\t\t# Create and save a cubemap. The array of images must have exactly 6 Images.\n\t\t\t\t# The cubemap's images are specified in this order: X+, X-, Y+, Y-, Z+, Z-\n\t\t\t\t# (in Godot's coordinate system, so Y+ is \"up\" and Z- is \"forward\").\n\t\t\t\tvar cubemap = Cubemap.new()\n\t\t\t\tcubemap.create_from_images(images)\n\t\t\t\tResourceSaver.save(cubemap, \"res://cubemap.res\", ResourceSaver.FLAG_COMPRESS)\n\n\t\t\t\t# Create and save a cubemap array. The array of images must have a multiple of 6 Images.\n\t\t\t\t# Each cubemap's images are specified in this order: X+, X-, Y+, Y-, Z+, Z-\n\t\t\t\t# (in Godot's coordinate system, so Y+ is \"up\" and Z- is \"forward\").\n\t\t\t\tvar cubemap_array = CubemapArray.new()\n\t\t\t\tcubemap_array.create_from_images(images)\n\t\t\t\tResourceSaver.save(cubemap_array, \"res://cubemap_array.res\", ResourceSaver.FLAG_COMPRESS)\n\t\t\t\t","returnType":"int"},{"name":"update_layer","signature":"update_layer(image: Image, layer: int) -> void","description":"Replaces the existing  data at the given [param layer] with this new image.\n\t\t\t\tThe given  must have the same width, height, image format, and mipmapping flag as the rest of the referenced images.\n\t\t\t\tIf the image format is unsupported, it will be decompressed and converted to a similar and supported [enum Image.Format].\n\t\t\t\tThe update is immediate: it's synchronized with drawing.","returnType":"void"}],"signals":[]},"ImmediateMesh":{"name":"ImmediateMesh","description":"Mesh optimized for creating geometry manually.","inherits":"Mesh","properties":[],"methods":[{"name":"clear_surfaces","signature":"clear_surfaces() -> void","description":"Clear all surfaces.","returnType":"void"},{"name":"surface_add_vertex","signature":"surface_add_vertex(vertex: Vector3) -> void","description":"Add a 3D vertex using the current attributes previously set.","returnType":"void"},{"name":"surface_add_vertex_2d","signature":"surface_add_vertex_2d(vertex: Vector2) -> void","description":"Add a 2D vertex using the current attributes previously set.","returnType":"void"},{"name":"surface_begin","signature":"surface_begin(primitive: int, material: Material) -> void","description":"Begin a new surface.","returnType":"void"},{"name":"surface_end","signature":"surface_end() -> void","description":"End and commit current surface. Note that surface being created will not be visible until this function is called.","returnType":"void"},{"name":"surface_set_color","signature":"surface_set_color(color: Color) -> void","description":"Set the color attribute that will be pushed with the next vertex.","returnType":"void"},{"name":"surface_set_normal","signature":"surface_set_normal(normal: Vector3) -> void","description":"Set the normal attribute that will be pushed with the next vertex.","returnType":"void"},{"name":"surface_set_tangent","signature":"surface_set_tangent(tangent: Plane) -> void","description":"Set the tangent attribute that will be pushed with the next vertex.","returnType":"void"},{"name":"surface_set_uv","signature":"surface_set_uv(uv: Vector2) -> void","description":"Set the UV attribute that will be pushed with the next vertex.","returnType":"void"},{"name":"surface_set_uv2","signature":"surface_set_uv2(uv2: Vector2) -> void","description":"Set the UV2 attribute that will be pushed with the next vertex.","returnType":"void"}],"signals":[]},"ImporterMesh":{"name":"ImporterMesh","description":"A  that contains vertex array-based geometry during the import process.","inherits":"Resource","properties":[],"methods":[{"name":"add_blend_shape","signature":"add_blend_shape(name: String) -> void","description":"Adds name for a blend shape that will be added with [method add_surface]. Must be called before surface is added.","returnType":"void"},{"name":"add_surface","signature":"add_surface(primitive: int, arrays: Array, blend_shapes: Array[], lods: Dictionary, material: Material, name: String, flags: int) -> void","description":"Creates a new surface. [method Mesh.get_surface_count] will become the surf_idx for this new surface.\n\t\t\t\tSurfaces are created to be rendered using a [param primitive], which may be any of the values defined in [enum Mesh.PrimitiveType].\n\t\t\t\tThe [param arrays] argument is an array of arrays. Each of the [constant Mesh.ARRAY_MAX] elements contains an array with some of the mesh data for this surface as described by the corresponding member of [enum Mesh.ArrayType] or null if it is not used by the surface. For example, arrays is the array of vertices. That first vertex sub-array is always required; the others are optional. Adding an index array puts this surface into \"index mode\" where the vertex and other arrays become the sources of data and the index array defines the vertex order. All sub-arrays must have the same length as the vertex array (or be an exact multiple of the vertex array's length, when multiple elements of a sub-array correspond to a single vertex) or be empty, except for [constant Mesh.ARRAY_INDEX] if it is used.\n\t\t\t\tThe [param blend_shapes] argument is an array of vertex data for each blend shape. Each element is an array of the same structure as [param arrays], but [constant Mesh.ARRAY_VERTEX], [constant Mesh.ARRAY_NORMAL], and [constant Mesh.ARRAY_TANGENT] are set if and only if they are set in [param arrays] and all other entries are null.\n\t\t\t\tThe [param lods] argument is a dictionary with  keys and  values. Each entry in the dictionary represents an LOD level of the surface, where the value is the [constant Mesh.ARRAY_INDEX] array to use for the LOD level and the key is roughly proportional to the distance at which the LOD stats being used. I.e., increasing the key of an LOD also increases the distance that the objects has to be from the camera before the LOD is used.\n\t\t\t\tThe [param flags] argument is the bitwise OR of, as required: One value of [enum Mesh.ArrayCustomFormat] left shifted by ARRAY_FORMAT_CUSTOMn_SHIFT for each custom channel in use, [constant Mesh.ARRAY_FLAG_USE_DYNAMIC_UPDATE], [constant Mesh.ARRAY_FLAG_USE_8_BONE_WEIGHTS], or [constant Mesh.ARRAY_FLAG_USES_EMPTY_VERTEX_ARRAY].\n\t\t\t\tNote: When using indices, it is recommended to only use points, lines, or triangles.","returnType":"void"},{"name":"clear","signature":"clear() -> void","description":"Removes all surfaces and blend shapes from this .","returnType":"void"},{"name":"generate_lods","signature":"generate_lods(normal_merge_angle: float, normal_split_angle: float, bone_transform_array: Array) -> void","description":"Generates all lods for this ImporterMesh.\n\t\t\t\t[param normal_merge_angle] is in degrees and used in the same way as the importer settings in lods.\n\t\t\t\t[param normal_split_angle] is not used and only remains for compatibility with older versions of the API.\n\t\t\t\tThe number of generated lods can be accessed using [method get_surface_lod_count], and each LOD is available in [method get_surface_lod_size] and [method get_surface_lod_indices].\n\t\t\t\t[param bone_transform_array] is an  which can be either empty or contain s which, for each of the mesh's bone IDs, will apply mesh skinning when generating the LOD mesh variations. This is usually used to account for discrepancies in scale between the mesh itself and its skinning data.","returnType":"void"},{"name":"get_blend_shape_count","signature":"get_blend_shape_count() -> int","description":"Returns the number of blend shapes that the mesh holds.","returnType":"int"},{"name":"get_blend_shape_mode","signature":"get_blend_shape_mode() -> int","description":"Returns the blend shape mode for this Mesh.","returnType":"int"},{"name":"get_blend_shape_name","signature":"get_blend_shape_name(blend_shape_idx: int) -> String","description":"Returns the name of the blend shape at this index.","returnType":"String"},{"name":"get_lightmap_size_hint","signature":"get_lightmap_size_hint() -> Vector2i","description":"Returns the size hint of this mesh for lightmap-unwrapping in UV-space.","returnType":"Vector2i"},{"name":"get_mesh","signature":"get_mesh(base_mesh: ArrayMesh) -> ArrayMesh","description":"Returns the mesh data represented by this  as a usable .\n\t\t\t\tThis method caches the returned mesh, and subsequent calls will return the cached data until [method clear] is called.\n\t\t\t\tIf not yet cached and [param base_mesh] is provided, [param base_mesh] will be used and mutated.","returnType":"ArrayMesh"},{"name":"get_surface_arrays","signature":"get_surface_arrays(surface_idx: int) -> Array","description":"Returns the arrays for the vertices, normals, UVs, etc. that make up the requested surface. See [method add_surface].","returnType":"Array"},{"name":"get_surface_blend_shape_arrays","signature":"get_surface_blend_shape_arrays(surface_idx: int, blend_shape_idx: int) -> Array","description":"Returns a single set of blend shape arrays for the requested blend shape index for a surface.","returnType":"Array"},{"name":"get_surface_count","signature":"get_surface_count() -> int","description":"Returns the number of surfaces that the mesh holds.","returnType":"int"},{"name":"get_surface_format","signature":"get_surface_format(surface_idx: int) -> int","description":"Returns the format of the surface that the mesh holds.","returnType":"int"},{"name":"get_surface_lod_count","signature":"get_surface_lod_count(surface_idx: int) -> int","description":"Returns the number of lods that the mesh holds on a given surface.","returnType":"int"},{"name":"get_surface_lod_indices","signature":"get_surface_lod_indices(surface_idx: int, lod_idx: int) -> PackedInt32Array","description":"Returns the index buffer of a lod for a surface.","returnType":"PackedInt32Array"},{"name":"get_surface_lod_size","signature":"get_surface_lod_size(surface_idx: int, lod_idx: int) -> float","description":"Returns the screen ratio which activates a lod for a surface.","returnType":"float"},{"name":"get_surface_material","signature":"get_surface_material(surface_idx: int) -> Material","description":"Returns a  in a given surface. Surface is rendered using this material.","returnType":"Material"},{"name":"get_surface_name","signature":"get_surface_name(surface_idx: int) -> String","description":"Gets the name assigned to this surface.","returnType":"String"},{"name":"get_surface_primitive_type","signature":"get_surface_primitive_type(surface_idx: int) -> int","description":"Returns the primitive type of the requested surface (see [method add_surface]).","returnType":"int"},{"name":"set_blend_shape_mode","signature":"set_blend_shape_mode(mode: int) -> void","description":"Sets the blend shape mode to one of [enum Mesh.BlendShapeMode].","returnType":"void"},{"name":"set_lightmap_size_hint","signature":"set_lightmap_size_hint(size: Vector2i) -> void","description":"Sets the size hint of this mesh for lightmap-unwrapping in UV-space.","returnType":"void"},{"name":"set_surface_material","signature":"set_surface_material(surface_idx: int, material: Material) -> void","description":"Sets a  for a given surface. Surface will be rendered using this material.","returnType":"void"},{"name":"set_surface_name","signature":"set_surface_name(surface_idx: int, name: String) -> void","description":"Sets a name for a given surface.","returnType":"void"}],"signals":[]},"ImporterMeshInstance3D":{"name":"ImporterMeshInstance3D","description":"","inherits":"Node3D","properties":[{"name":"cast_shadow","type":"int","description":""},{"name":"layer_mask","type":"int","description":""},{"name":"mesh","type":"ImporterMesh","description":""},{"name":"skeleton_path","type":"NodePath","description":""},{"name":"skin","type":"Skin","description":""},{"name":"visibility_range_begin","type":"float","description":""},{"name":"visibility_range_begin_margin","type":"float","description":""},{"name":"visibility_range_end","type":"float","description":""},{"name":"visibility_range_end_margin","type":"float","description":""},{"name":"visibility_range_fade_mode","type":"int","description":""}],"methods":[],"signals":[]},"Input":{"name":"Input","description":"A singleton for handling inputs.","inherits":"Object","properties":[{"name":"emulate_mouse_from_touch","type":"bool","description":"If [code]true[/code], sends mouse input events when tapping or swiping on the touchscreen. See also [member ProjectSettings.input_devices/pointing/emulate_mouse_from_touch]."},{"name":"emulate_touch_from_mouse","type":"bool","description":"If [code]true[/code], sends touch input events when clicking or dragging the mouse. See also [member ProjectSettings.input_devices/pointing/emulate_touch_from_mouse]."},{"name":"mouse_mode","type":"int","description":"Controls the mouse mode. See [enum MouseMode] for more information."},{"name":"use_accumulated_input","type":"bool","description":"If [code]true[/code], similar input events sent by the operating system are accumulated. When input accumulation is enabled, all input events generated during a frame will be merged and emitted when the frame is done rendering. Therefore, this limits the number of input method calls per second to the rendering FPS.\n\t\t\tInput accumulation can be disabled to get slightly more precise/reactive input at the cost of increased CPU usage. In applications where drawing freehand lines is required, input accumulation should generally be disabled while the user is drawing the line to get results that closely follow the actual input.\n\t\t\t[b]Note:[/b] Input accumulation is [i]enabled[/i] by default."}],"methods":[{"name":"action_press","signature":"action_press(action: StringName, strength: float) -> void","description":"This will simulate pressing the specified action.\n\t\t\t\tThe strength can be used for non-boolean actions, it's ranged between 0 and 1 representing the intensity of the given action.\n\t\t\t\tNote: This method will not cause any [method Node._input] calls. It is intended to be used with [method is_action_pressed] and [method is_action_just_pressed]. If you want to simulate _input, use [method parse_input_event] instead.","returnType":"void"},{"name":"action_release","signature":"action_release(action: StringName) -> void","description":"If the specified action is already pressed, this will release it.","returnType":"void"},{"name":"add_joy_mapping","signature":"add_joy_mapping(mapping: String, update_existing: bool) -> void","description":"Adds a new mapping entry (in SDL2 format) to the mapping database. Optionally update already connected devices.","returnType":"void"},{"name":"flush_buffered_events","signature":"flush_buffered_events() -> void","description":"Sends all input events which are in the current buffer to the game loop. These events may have been buffered as a result of accumulated input ([member use_accumulated_input]) or agile input flushing ([member ProjectSettings.input_devices/buffering/agile_event_flushing]).\n\t\t\t\tThe engine will already do this itself at key execution points (at least once per frame). However, this can be useful in advanced cases where you want precise control over the timing of event handling.","returnType":"void"},{"name":"get_accelerometer","signature":"get_accelerometer() -> Vector3","description":"Returns the acceleration in m/s² of the device's accelerometer sensor, if the device has one. Otherwise, the method returns [constant Vector3.ZERO].\n\t\t\t\tNote this method returns an empty  when running from the editor even when your device has an accelerometer. You must export your project to a supported device to read values from the accelerometer.\n\t\t\t\tNote: This method only works on Android and iOS. On other platforms, it always returns [constant Vector3.ZERO].\n\t\t\t\tNote: For Android, [member ProjectSettings.input_devices/sensors/enable_accelerometer] must be enabled.","returnType":"Vector3"},{"name":"get_action_raw_strength","signature":"get_action_raw_strength(action: StringName, exact_match: bool) -> float","description":"Returns a value between 0 and 1 representing the raw intensity of the given action, ignoring the action's deadzone. In most cases, you should use [method get_action_strength] instead.\n\t\t\t\tIf [param exact_match] is false, it ignores additional input modifiers for  and  events, and the direction for  events.","returnType":"float"},{"name":"get_action_strength","signature":"get_action_strength(action: StringName, exact_match: bool) -> float","description":"Returns a value between 0 and 1 representing the intensity of the given action. In a joypad, for example, the further away the axis (analog sticks or L2, R2 triggers) is from the dead zone, the closer the value will be to 1. If the action is mapped to a control that has no axis such as the keyboard, the value returned will be 0 or 1.\n\t\t\t\tIf [param exact_match] is false, it ignores additional input modifiers for  and  events, and the direction for  events.","returnType":"float"},{"name":"get_axis","signature":"get_axis(negative_action: StringName, positive_action: StringName) -> float","description":"Get axis input by specifying two actions, one negative and one positive.\n\t\t\t\tThis is a shorthand for writing Input.get_action_strength(\"positive_action\") - Input.get_action_strength(\"negative_action\").","returnType":"float"},{"name":"get_connected_joypads","signature":"get_connected_joypads() -> int[]","description":"Returns an  containing the device IDs of all currently connected joypads.","returnType":"int[]"},{"name":"get_current_cursor_shape","signature":"get_current_cursor_shape() -> int","description":"Returns the currently assigned cursor shape (see [enum CursorShape]).","returnType":"int"},{"name":"get_gravity","signature":"get_gravity() -> Vector3","description":"Returns the gravity in m/s² of the device's accelerometer sensor, if the device has one. Otherwise, the method returns [constant Vector3.ZERO].\n\t\t\t\tNote: This method only works on Android and iOS. On other platforms, it always returns [constant Vector3.ZERO].\n\t\t\t\tNote: For Android, [member ProjectSettings.input_devices/sensors/enable_gravity] must be enabled.","returnType":"Vector3"},{"name":"get_gyroscope","signature":"get_gyroscope() -> Vector3","description":"Returns the rotation rate in rad/s around a device's X, Y, and Z axes of the gyroscope sensor, if the device has one. Otherwise, the method returns [constant Vector3.ZERO].\n\t\t\t\tNote: This method only works on Android and iOS. On other platforms, it always returns [constant Vector3.ZERO].\n\t\t\t\tNote: For Android, [member ProjectSettings.input_devices/sensors/enable_gyroscope] must be enabled.","returnType":"Vector3"},{"name":"get_joy_axis","signature":"get_joy_axis(device: int, axis: int) -> float","description":"Returns the current value of the joypad axis at given index (see [enum JoyAxis]).","returnType":"float"},{"name":"get_joy_guid","signature":"get_joy_guid(device: int) -> String","description":"Returns an SDL2-compatible device GUID on platforms that use gamepad remapping, e.g. 030000004c050000c405000000010000. Returns an empty string if it cannot be found. Godot uses the [url=https://github.com/gabomdq/SDL_GameControllerDB]SDL2 game controller database to determine gamepad names and mappings based on this GUID.\n\t\t\t\tOn Windows, all XInput joypad GUIDs will be overridden by Godot to __XINPUT_DEVICE__, because their mappings are the same.","returnType":"String"},{"name":"get_joy_info","signature":"get_joy_info(device: int) -> Dictionary","description":"Returns a dictionary with extra platform-specific information about the device, e.g. the raw gamepad name from the OS or the Steam Input index.\n\t\t\t\tOn Windows, the dictionary contains the following fields:\n\t\t\t\txinput_index: The index of the controller in the XInput system. Undefined for DirectInput devices.\n\t\t\t\tvendor_id: The USB vendor ID of the device.\n\t\t\t\tproduct_id: The USB product ID of the device.\n\t\t\t\tOn Linux:\n\t\t\t\traw_name: The name of the controller as it came from the OS, before getting renamed by the godot controller database.\n\t\t\t\tvendor_id: The USB vendor ID of the device.\n\t\t\t\tproduct_id: The USB product ID of the device.\n\t\t\t\tsteam_input_index: The Steam Input gamepad index, if the device is not a Steam Input device this key won't be present.\n\t\t\t\tNote: The returned dictionary is always empty on Web, iOS, Android, and macOS.","returnType":"Dictionary"},{"name":"get_joy_name","signature":"get_joy_name(device: int) -> String","description":"Returns the name of the joypad at the specified device index, e.g. PS4 Controller. Godot uses the [url=https://github.com/gabomdq/SDL_GameControllerDB]SDL2 game controller database to determine gamepad names.","returnType":"String"},{"name":"get_joy_vibration_duration","signature":"get_joy_vibration_duration(device: int) -> float","description":"Returns the duration of the current vibration effect in seconds.","returnType":"float"},{"name":"get_joy_vibration_strength","signature":"get_joy_vibration_strength(device: int) -> Vector2","description":"Returns the strength of the joypad vibration: x is the strength of the weak motor, and y is the strength of the strong motor.","returnType":"Vector2"},{"name":"get_last_mouse_screen_velocity","signature":"get_last_mouse_screen_velocity() -> Vector2","description":"Returns the last mouse velocity in screen coordinates. To provide a precise and jitter-free velocity, mouse velocity is only calculated every 0.1s. Therefore, mouse velocity will lag mouse movements.","returnType":"Vector2"},{"name":"get_last_mouse_velocity","signature":"get_last_mouse_velocity() -> Vector2","description":"Returns the last mouse velocity. To provide a precise and jitter-free velocity, mouse velocity is only calculated every 0.1s. Therefore, mouse velocity will lag mouse movements.","returnType":"Vector2"},{"name":"get_magnetometer","signature":"get_magnetometer() -> Vector3","description":"Returns the magnetic field strength in micro-Tesla for all axes of the device's magnetometer sensor, if the device has one. Otherwise, the method returns [constant Vector3.ZERO].\n\t\t\t\tNote: This method only works on Android and iOS. On other platforms, it always returns [constant Vector3.ZERO].\n\t\t\t\tNote: For Android, [member ProjectSettings.input_devices/sensors/enable_magnetometer] must be enabled.","returnType":"Vector3"},{"name":"get_mouse_button_mask","signature":"get_mouse_button_mask() -> int","description":"Returns mouse buttons as a bitmask. If multiple mouse buttons are pressed at the same time, the bits are added together. Equivalent to [method DisplayServer.mouse_get_button_state].","returnType":"int"},{"name":"get_vector","signature":"get_vector(negative_x: StringName, positive_x: StringName, negative_y: StringName, positive_y: StringName, deadzone: float) -> Vector2","description":"Gets an input vector by specifying four actions for the positive and negative X and Y axes.\n\t\t\t\tThis method is useful when getting vector input, such as from a joystick, directional pad, arrows, or WASD. The vector has its length limited to 1 and has a circular deadzone, which is useful for using vector input as movement.\n\t\t\t\tBy default, the deadzone is automatically calculated from the average of the action deadzones. However, you can override the deadzone to be whatever you want (on the range of 0 to 1).","returnType":"Vector2"},{"name":"is_action_just_pressed","signature":"is_action_just_pressed(action: StringName, exact_match: bool) -> bool","description":"Returns true when the user has started pressing the action event in the current frame or physics tick. It will only return true on the frame or tick that the user pressed down the button.\n\t\t\t\tThis is useful for code that needs to run only once when an action is pressed, instead of every frame while it's pressed.\n\t\t\t\tIf [param exact_match] is false, it ignores additional input modifiers for  and  events, and the direction for  events.\n\t\t\t\tNote: Returning true does not imply that the action is still pressed. An action can be pressed and released again rapidly, and true will still be returned so as not to miss input.\n\t\t\t\tNote: Due to keyboard ghosting, [method is_action_just_pressed] may return false even if one of the action's keys is pressed. See [url=$DOCS_URL/tutorials/inputs/input_examples.html#keyboard-events]Input examples in the documentation for more information.\n\t\t\t\tNote: During input handling (e.g. [method Node._input]), use [method InputEvent.is_action_pressed] instead to query the action state of the current event.","returnType":"bool"},{"name":"is_action_just_released","signature":"is_action_just_released(action: StringName, exact_match: bool) -> bool","description":"Returns true when the user stops pressing the action event in the current frame or physics tick. It will only return true on the frame or tick that the user releases the button.\n\t\t\t\tNote: Returning true does not imply that the action is still not pressed. An action can be released and pressed again rapidly, and true will still be returned so as not to miss input.\n\t\t\t\tIf [param exact_match] is false, it ignores additional input modifiers for  and  events, and the direction for  events.\n\t\t\t\tNote: During input handling (e.g. [method Node._input]), use [method InputEvent.is_action_released] instead to query the action state of the current event.","returnType":"bool"},{"name":"is_action_pressed","signature":"is_action_pressed(action: StringName, exact_match: bool) -> bool","description":"Returns true if you are pressing the action event.\n\t\t\t\tIf [param exact_match] is false, it ignores additional input modifiers for  and  events, and the direction for  events.\n\t\t\t\tNote: Due to keyboard ghosting, [method is_action_pressed] may return false even if one of the action's keys is pressed. See [url=$DOCS_URL/tutorials/inputs/input_examples.html#keyboard-events]Input examples in the documentation for more information.","returnType":"bool"},{"name":"is_anything_pressed","signature":"is_anything_pressed() -> bool","description":"Returns true if any action, key, joypad button, or mouse button is being pressed. This will also return true if any action is simulated via code by calling [method action_press].","returnType":"bool"},{"name":"is_joy_button_pressed","signature":"is_joy_button_pressed(device: int, button: int) -> bool","description":"Returns true if you are pressing the joypad button (see [enum JoyButton]).","returnType":"bool"},{"name":"is_joy_known","signature":"is_joy_known(device: int) -> bool","description":"Returns true if the system knows the specified device. This means that it sets all button and axis indices. Unknown joypads are not expected to match these constants, but you can still retrieve events from them.","returnType":"bool"},{"name":"is_key_label_pressed","signature":"is_key_label_pressed(keycode: int) -> bool","description":"Returns true if you are pressing the key with the [param keycode] printed on it. You can pass a [enum Key] constant or any Unicode character code.","returnType":"bool"},{"name":"is_key_pressed","signature":"is_key_pressed(keycode: int) -> bool","description":"Returns true if you are pressing the Latin key in the current keyboard layout. You can pass a [enum Key] constant.\n\t\t\t\t[method is_key_pressed] is only recommended over [method is_physical_key_pressed] in non-game applications. This ensures that shortcut keys behave as expected depending on the user's keyboard layout, as keyboard shortcuts are generally dependent on the keyboard layout in non-game applications. If in doubt, use [method is_physical_key_pressed].\n\t\t\t\tNote: Due to keyboard ghosting, [method is_key_pressed] may return false even if one of the action's keys is pressed. See [url=$DOCS_URL/tutorials/inputs/input_examples.html#keyboard-events]Input examples in the documentation for more information.","returnType":"bool"},{"name":"is_mouse_button_pressed","signature":"is_mouse_button_pressed(button: int) -> bool","description":"Returns true if you are pressing the mouse button specified with [enum MouseButton].","returnType":"bool"},{"name":"is_physical_key_pressed","signature":"is_physical_key_pressed(keycode: int) -> bool","description":"Returns true if you are pressing the key in the physical location on the 101/102-key US QWERTY keyboard. You can pass a [enum Key] constant.\n\t\t\t\t[method is_physical_key_pressed] is recommended over [method is_key_pressed] for in-game actions, as it will make W/A/S/D layouts work regardless of the user's keyboard layout. [method is_physical_key_pressed] will also ensure that the top row number keys work on any keyboard layout. If in doubt, use [method is_physical_key_pressed].\n\t\t\t\tNote: Due to keyboard ghosting, [method is_physical_key_pressed] may return false even if one of the action's keys is pressed. See [url=$DOCS_URL/tutorials/inputs/input_examples.html#keyboard-events]Input examples in the documentation for more information.","returnType":"bool"},{"name":"parse_input_event","signature":"parse_input_event(event: InputEvent) -> void","description":"Feeds an  to the game. Can be used to artificially trigger input events from code. Also generates [method Node._input] calls.\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tvar cancel_event = InputEventAction.new()\n\t\t\t\tcancel_event.action = \"ui_cancel\"\n\t\t\t\tcancel_event.pressed = true\n\t\t\t\tInput.parse_input_event(cancel_event)\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tvar cancelEvent = new InputEventAction();\n\t\t\t\tcancelEvent.Action = \"ui_cancel\";\n\t\t\t\tcancelEvent.Pressed = true;\n\t\t\t\tInput.ParseInputEvent(cancelEvent);\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tNote: Calling this function has no influence on the operating system. So for example sending an  will not move the OS mouse cursor to the specified position (use [method warp_mouse] instead) and sending Alt/Cmd + Tab as  won't toggle between active windows.","returnType":"void"},{"name":"remove_joy_mapping","signature":"remove_joy_mapping(guid: String) -> void","description":"Removes all mappings from the internal database that match the given GUID. All currently connected joypads that use this GUID will become unmapped.\n\t\t\t\tOn Android, Godot will map to an internal fallback mapping.","returnType":"void"},{"name":"set_accelerometer","signature":"set_accelerometer(value: Vector3) -> void","description":"Sets the acceleration value of the accelerometer sensor. Can be used for debugging on devices without a hardware sensor, for example in an editor on a PC.\n\t\t\t\tNote: This value can be immediately overwritten by the hardware sensor value on Android and iOS.","returnType":"void"},{"name":"set_custom_mouse_cursor","signature":"set_custom_mouse_cursor(image: Resource, shape: int, hotspot: Vector2) -> void","description":"Sets a custom mouse cursor image, which is only visible inside the game window. The hotspot can also be specified. Passing null to the image parameter resets to the system cursor. See [enum CursorShape] for the list of shapes.\n\t\t\t\t[param image] can be either  or  and its size must be lower than or equal to 256×256. To avoid rendering issues, sizes lower than or equal to 128×128 are recommended.\n\t\t\t\t[param hotspot] must be within [param image]'s size.\n\t\t\t\tNote: s aren't supported as custom mouse cursors. If using an , only the first frame will be displayed.\n\t\t\t\tNote: The Lossless, Lossy or Uncompressed compression modes are recommended. The Video RAM compression mode can be used, but it will be decompressed on the CPU, which means loading times are slowed down and no memory is saved compared to lossless modes.\n\t\t\t\tNote: On the web platform, the maximum allowed cursor image size is 128×128. Cursor images larger than 32×32 will also only be displayed if the mouse cursor image is entirely located within the page for [url=https://chromestatus.com/feature/5825971391299584]security reasons.","returnType":"void"},{"name":"set_default_cursor_shape","signature":"set_default_cursor_shape(shape: int) -> void","description":"Sets the default cursor shape to be used in the viewport instead of [constant CURSOR_ARROW].\n\t\t\t\tNote: If you want to change the default cursor shape for 's nodes, use [member Control.mouse_default_cursor_shape] instead.\n\t\t\t\tNote: This method generates an  to update cursor immediately.","returnType":"void"},{"name":"set_gravity","signature":"set_gravity(value: Vector3) -> void","description":"Sets the gravity value of the accelerometer sensor. Can be used for debugging on devices without a hardware sensor, for example in an editor on a PC.\n\t\t\t\tNote: This value can be immediately overwritten by the hardware sensor value on Android and iOS.","returnType":"void"},{"name":"set_gyroscope","signature":"set_gyroscope(value: Vector3) -> void","description":"Sets the value of the rotation rate of the gyroscope sensor. Can be used for debugging on devices without a hardware sensor, for example in an editor on a PC.\n\t\t\t\tNote: This value can be immediately overwritten by the hardware sensor value on Android and iOS.","returnType":"void"},{"name":"set_magnetometer","signature":"set_magnetometer(value: Vector3) -> void","description":"Sets the value of the magnetic field of the magnetometer sensor. Can be used for debugging on devices without a hardware sensor, for example in an editor on a PC.\n\t\t\t\tNote: This value can be immediately overwritten by the hardware sensor value on Android and iOS.","returnType":"void"},{"name":"should_ignore_device","signature":"should_ignore_device(vendor_id: int, product_id: int) -> bool","description":"Queries whether an input device should be ignored or not. Devices can be ignored by setting the environment variable SDL_GAMECONTROLLER_IGNORE_DEVICES. Read the [url=https://wiki.libsdl.org/SDL2]SDL documentation for more information.\n\t\t\t\tNote: Some 3rd party tools can contribute to the list of ignored devices. For example, SteamInput creates virtual devices from physical devices for remapping purposes. To avoid handling the same input device twice, the original device is added to the ignore list.","returnType":"bool"},{"name":"start_joy_vibration","signature":"start_joy_vibration(device: int, weak_magnitude: float, strong_magnitude: float, duration: float) -> void","description":"Starts to vibrate the joypad. Joypads usually come with two rumble motors, a strong and a weak one. [param weak_magnitude] is the strength of the weak motor (between 0 and 1) and [param strong_magnitude] is the strength of the strong motor (between 0 and 1). [param duration] is the duration of the effect in seconds (a duration of 0 will try to play the vibration indefinitely). The vibration can be stopped early by calling [method stop_joy_vibration].\n\t\t\t\tNote: Not every hardware is compatible with long effect durations; it is recommended to restart an effect if it has to be played for more than a few seconds.\n\t\t\t\tNote: For macOS, vibration is only supported in macOS 11 and later.","returnType":"void"},{"name":"stop_joy_vibration","signature":"stop_joy_vibration(device: int) -> void","description":"Stops the vibration of the joypad started with [method start_joy_vibration].","returnType":"void"},{"name":"vibrate_handheld","signature":"vibrate_handheld(duration_ms: int, amplitude: float) -> void","description":"Vibrate the handheld device for the specified duration in milliseconds.\n\t\t\t\t[param amplitude] is the strength of the vibration, as a value between 0.0 and 1.0. If set to -1.0, the default vibration strength of the device is used.\n\t\t\t\tNote: This method is implemented on Android, iOS, and Web. It has no effect on other platforms.\n\t\t\t\tNote: For Android, [method vibrate_handheld] requires enabling the VIBRATE permission in the export preset. Otherwise, [method vibrate_handheld] will have no effect.\n\t\t\t\tNote: For iOS, specifying the duration is only supported in iOS 13 and later.\n\t\t\t\tNote: For Web, the amplitude cannot be changed.\n\t\t\t\tNote: Some web browsers such as Safari and Firefox for Android do not support [method vibrate_handheld].","returnType":"void"},{"name":"warp_mouse","signature":"warp_mouse(position: Vector2) -> void","description":"Sets the mouse position to the specified vector, provided in pixels and relative to an origin at the upper left corner of the currently focused Window Manager game window.\n\t\t\t\tMouse position is clipped to the limits of the screen resolution, or to the limits of the game window if [enum MouseMode] is set to [constant MOUSE_MODE_CONFINED] or [constant MOUSE_MODE_CONFINED_HIDDEN].\n\t\t\t\tNote: [method warp_mouse] is only supported on Windows, macOS and Linux. It has no effect on Android, iOS and Web.","returnType":"void"}],"signals":[{"name":"joy_connection_changed","description":"Emitted when a joypad device has been connected or disconnected."}]},"InputEvent":{"name":"InputEvent","description":"Abstract base class for input events.","inherits":"Resource","properties":[{"name":"device","type":"int","description":"The event's device ID.\n\t\t\t[b]Note:[/b] [member device] can be negative for special use cases that don't refer to devices physically present on the system. See [constant DEVICE_ID_EMULATION]."}],"methods":[{"name":"accumulate","signature":"accumulate(with_event: InputEvent) -> bool","description":"Returns true if the given input event and this input event can be added together (only for events of type ).\n\t\t\t\tThe given input event's position, global position and speed will be copied. The resulting relative is a sum of both events. Both events' modifiers have to be identical.","returnType":"bool"},{"name":"as_text","signature":"as_text() -> String","description":"Returns a  representation of the event.","returnType":"String"},{"name":"get_action_strength","signature":"get_action_strength(action: StringName, exact_match: bool) -> float","description":"Returns a value between 0.0 and 1.0 depending on the given actions' state. Useful for getting the value of events of type .\n\t\t\t\tIf [param exact_match] is false, it ignores additional input modifiers for  and  events, and the direction for  events.","returnType":"float"},{"name":"is_action","signature":"is_action(action: StringName, exact_match: bool) -> bool","description":"Returns true if this input event matches a pre-defined action of any type.\n\t\t\t\tIf [param exact_match] is false, it ignores additional input modifiers for  and  events, and the direction for  events.","returnType":"bool"},{"name":"is_action_pressed","signature":"is_action_pressed(action: StringName, allow_echo: bool, exact_match: bool) -> bool","description":"Returns true if the given action is being pressed (and is not an echo event for  events, unless [param allow_echo] is true). Not relevant for events of type  or .\n\t\t\t\tIf [param exact_match] is false, it ignores additional input modifiers for  and  events, and the direction for  events.\n\t\t\t\tNote: Due to keyboard ghosting, [method is_action_pressed] may return false even if one of the action's keys is pressed. See [url=$DOCS_URL/tutorials/inputs/input_examples.html#keyboard-events]Input examples in the documentation for more information.","returnType":"bool"},{"name":"is_action_released","signature":"is_action_released(action: StringName, exact_match: bool) -> bool","description":"Returns true if the given action is released (i.e. not pressed). Not relevant for events of type  or .\n\t\t\t\tIf [param exact_match] is false, it ignores additional input modifiers for  and  events, and the direction for  events.","returnType":"bool"},{"name":"is_action_type","signature":"is_action_type() -> bool","description":"Returns true if this input event's type is one that can be assigned to an input action.","returnType":"bool"},{"name":"is_canceled","signature":"is_canceled() -> bool","description":"Returns true if this input event has been canceled.","returnType":"bool"},{"name":"is_echo","signature":"is_echo() -> bool","description":"Returns true if this input event is an echo event (only for events of type ). An echo event is a repeated key event sent when the user is holding down the key. Any other event type returns false.\n\t\t\t\tNote: The rate at which echo events are sent is typically around 20 events per second (after holding down the key for roughly half a second). However, the key repeat delay/speed can be changed by the user or disabled entirely in the operating system settings. To ensure your project works correctly on all configurations, do not assume the user has a specific key repeat configuration in your project's behavior.","returnType":"bool"},{"name":"is_match","signature":"is_match(event: InputEvent, exact_match: bool) -> bool","description":"Returns true if the specified [param event] matches this event. Only valid for action events i.e key (), button ( or ), axis  or action () events.\n\t\t\t\tIf [param exact_match] is false, it ignores additional input modifiers for  and  events, and the direction for  events.\n\t\t\t\tNote: Only considers the event configuration (such as the keyboard key or joypad axis), not state information like [method is_pressed], [method is_released], [method is_echo], or [method is_canceled].","returnType":"bool"},{"name":"is_pressed","signature":"is_pressed() -> bool","description":"Returns true if this input event is pressed. Not relevant for events of type  or .\n\t\t\t\tNote: Due to keyboard ghosting, [method is_pressed] may return false even if one of the action's keys is pressed. See [url=$DOCS_URL/tutorials/inputs/input_examples.html#keyboard-events]Input examples in the documentation for more information.","returnType":"bool"},{"name":"is_released","signature":"is_released() -> bool","description":"Returns true if this input event is released. Not relevant for events of type  or .","returnType":"bool"},{"name":"xformed_by","signature":"xformed_by(xform: Transform2D, local_ofs: Vector2) -> InputEvent","description":"Returns a copy of the given input event which has been offset by [param local_ofs] and transformed by [param xform]. Relevant for events of type , , , ,  and .","returnType":"InputEvent"}],"signals":[]},"InputEventAction":{"name":"InputEventAction","description":"An input event type for actions.","inherits":"InputEvent","properties":[{"name":"action","type":"StringName","description":"The action's name. Actions are accessed via this [String]."},{"name":"event_index","type":"int","description":"The real event index in action this event corresponds to (from events defined for this action in the [InputMap]). If [code]-1[/code], a unique ID will be used and actions pressed with this ID will need to be released with another [InputEventAction]."},{"name":"pressed","type":"bool","description":"If [code]true[/code], the action's state is pressed. If [code]false[/code], the action's state is released."},{"name":"strength","type":"float","description":"The action's strength between 0 and 1. This value is considered as equal to 0 if pressed is [code]false[/code]. The event strength allows faking analog joypad motion events, by specifying how strongly the joypad axis is bent or pressed."}],"methods":[],"signals":[]},"InputEventFromWindow":{"name":"InputEventFromWindow","description":"Abstract base class for -based input events.","inherits":"InputEvent","properties":[{"name":"window_id","type":"int","description":"The ID of a [Window] that received this event."}],"methods":[],"signals":[]},"InputEventGesture":{"name":"InputEventGesture","description":"Abstract base class for touch gestures.","inherits":"InputEventWithModifiers","properties":[{"name":"position","type":"Vector2","description":"The local gesture position relative to the [Viewport]. If used in [method Control._gui_input], the position is relative to the current [Control] that received this gesture."}],"methods":[],"signals":[]},"InputEventJoypadButton":{"name":"InputEventJoypadButton","description":"Represents a gamepad button being pressed or released.","inherits":"InputEvent","properties":[{"name":"button_index","type":"int","description":"Button identifier. One of the [enum JoyButton] button constants."},{"name":"pressed","type":"bool","description":"If [code]true[/code], the button's state is pressed. If [code]false[/code], the button's state is released."},{"name":"pressure","type":"float","description":""}],"methods":[],"signals":[]},"InputEventJoypadMotion":{"name":"InputEventJoypadMotion","description":"Represents axis motions (such as joystick or analog triggers) from a gamepad.","inherits":"InputEvent","properties":[{"name":"axis","type":"int","description":"Axis identifier. Use one of the [enum JoyAxis] axis constants."},{"name":"axis_value","type":"float","description":"Current position of the joystick on the given axis. The value ranges from [code]-1.0[/code] to [code]1.0[/code]. A value of [code]0[/code] means the axis is in its resting position."}],"methods":[],"signals":[]},"InputEventKey":{"name":"InputEventKey","description":"Represents a key on a keyboard being pressed or released.","inherits":"InputEventWithModifiers","properties":[{"name":"echo","type":"bool","description":"If [code]true[/code], the key was already pressed before this event. An echo event is a repeated key event sent when the user is holding down the key.\n\t\t\t[b]Note:[/b] The rate at which echo events are sent is typically around 20 events per second (after holding down the key for roughly half a second). However, the key repeat delay/speed can be changed by the user or disabled entirely in the operating system settings. To ensure your project works correctly on all configurations, do not assume the user has a specific key repeat configuration in your project's behavior."},{"name":"key_label","type":"int","description":"Represents the localized label printed on the key in the current keyboard layout, which corresponds to one of the [enum Key] constants or any valid Unicode character.\n\t\t\tFor keyboard layouts with a single label on the key, it is equivalent to [member keycode].\n\t\t\tTo get a human-readable representation of the [InputEventKey], use [code]OS.get_keycode_string(event.key_label)[/code] where [code]event[/code] is the [InputEventKey].\n\t\t\t[codeblock lang=text]\n\t\t\t    +-----+ +-----+\n\t\t\t    | Q   | | Q   | - \"Q\" - keycode\n\t\t\t    |   Й | |  ض | - \"Й\" and \"ض\" - key_label\n\t\t\t    +-----+ +-----+\n\t\t\t[/codeblock]"},{"name":"keycode","type":"int","description":"Latin label printed on the key in the current keyboard layout, which corresponds to one of the [enum Key] constants.\n\t\t\tTo get a human-readable representation of the [InputEventKey], use [code]OS.get_keycode_string(event.keycode)[/code] where [code]event[/code] is the [InputEventKey].\n\t\t\t[codeblock lang=text]\n\t\t\t    +-----+ +-----+\n\t\t\t    | Q   | | Q   | - \"Q\" - keycode\n\t\t\t    |   Й | |  ض | - \"Й\" and \"ض\" - key_label\n\t\t\t    +-----+ +-----+\n\t\t\t[/codeblock]"},{"name":"location","type":"int","description":"Represents the location of a key which has both left and right versions, such as [kbd]Shift[/kbd] or [kbd]Alt[/kbd]."},{"name":"physical_keycode","type":"int","description":"Represents the physical location of a key on the 101/102-key US QWERTY keyboard, which corresponds to one of the [enum Key] constants.\n\t\t\tTo get a human-readable representation of the [InputEventKey], use [method OS.get_keycode_string] in combination with [method DisplayServer.keyboard_get_keycode_from_physical]:\n\t\t\t[codeblocks]\n\t\t\t[gdscript]\n\t\t\tfunc _input(event):\n\t\t\t    if event is InputEventKey:\n\t\t\t        var keycode = DisplayServer.keyboard_get_keycode_from_physical(event.physical_keycode)\n\t\t\t        print(OS.get_keycode_string(keycode))\n\t\t\t[/gdscript]\n\t\t\t[csharp]\n\t\t\tpublic override void _Input(InputEvent @event)\n\t\t\t{\n\t\t\t    if (@event is InputEventKey inputEventKey)\n\t\t\t    {\n\t\t\t        var keycode = DisplayServer.KeyboardGetKeycodeFromPhysical(inputEventKey.PhysicalKeycode);\n\t\t\t        GD.Print(OS.GetKeycodeString(keycode));\n\t\t\t    }\n\t\t\t}\n\t\t\t[/csharp]\n\t\t\t[/codeblocks]"},{"name":"pressed","type":"bool","description":"If [code]true[/code], the key's state is pressed. If [code]false[/code], the key's state is released."},{"name":"unicode","type":"int","description":"The key Unicode character code (when relevant), shifted by modifier keys. Unicode character codes for composite characters and complex scripts may not be available unless IME input mode is active. See [method Window.set_ime_active] for more information."}],"methods":[{"name":"as_text_key_label","signature":"as_text_key_label() -> String","description":"Returns a  representation of the event's [member key_label] and modifiers.","returnType":"String"},{"name":"as_text_keycode","signature":"as_text_keycode() -> String","description":"Returns a  representation of the event's [member keycode] and modifiers.","returnType":"String"},{"name":"as_text_location","signature":"as_text_location() -> String","description":"Returns a  representation of the event's [member location]. This will be a blank string if the event is not specific to a location.","returnType":"String"},{"name":"as_text_physical_keycode","signature":"as_text_physical_keycode() -> String","description":"Returns a  representation of the event's [member physical_keycode] and modifiers.","returnType":"String"},{"name":"get_key_label_with_modifiers","signature":"get_key_label_with_modifiers() -> int","description":"Returns the localized key label combined with modifier keys such as Shift or Alt. See also .\n\t\t\t\tTo get a human-readable representation of the  with modifiers, use OS.get_keycode_string(event.get_key_label_with_modifiers()) where event is the .","returnType":"int"},{"name":"get_keycode_with_modifiers","signature":"get_keycode_with_modifiers() -> int","description":"Returns the Latin keycode combined with modifier keys such as Shift or Alt. See also .\n\t\t\t\tTo get a human-readable representation of the  with modifiers, use OS.get_keycode_string(event.get_keycode_with_modifiers()) where event is the .","returnType":"int"},{"name":"get_physical_keycode_with_modifiers","signature":"get_physical_keycode_with_modifiers() -> int","description":"Returns the physical keycode combined with modifier keys such as Shift or Alt. See also .\n\t\t\t\tTo get a human-readable representation of the  with modifiers, use OS.get_keycode_string(event.get_physical_keycode_with_modifiers()) where event is the .","returnType":"int"}],"signals":[]},"InputEventMIDI":{"name":"InputEventMIDI","description":"Represents a MIDI message from a MIDI device, such as a musical keyboard.","inherits":"InputEvent","properties":[{"name":"channel","type":"int","description":"The MIDI channel of this message, ranging from [code]0[/code] to [code]15[/code]. MIDI channel [code]9[/code] is reserved for percussion instruments."},{"name":"controller_number","type":"int","description":"The unique number of the controller, if [member message] is [constant MIDI_MESSAGE_CONTROL_CHANGE], otherwise this is [code]0[/code]. This value can be used to identify sliders for volume, balance, and panning, as well as switches and pedals on the MIDI device. See the [url=https://en.wikipedia.org/wiki/General_MIDI#Controller_events]General MIDI specification[/url] for a small list."},{"name":"controller_value","type":"int","description":"The value applied to the controller. If [member message] is [constant MIDI_MESSAGE_CONTROL_CHANGE], this value ranges from [code]0[/code] to [code]127[/code], otherwise it is [code]0[/code]. See also [member controller_value]."},{"name":"instrument","type":"int","description":"The instrument (also called [i]program[/i] or [i]preset[/i]) used on this MIDI message. This value ranges from [code]0[/code] to [code]127[/code].\n\t\t\tTo see what each value means, refer to the [url=https://en.wikipedia.org/wiki/General_MIDI#Program_change_events]General MIDI's instrument list[/url]. Keep in mind that the list is off by 1 because it does not begin from 0. A value of [code]0[/code] corresponds to the acoustic grand piano."},{"name":"message","type":"int","description":"Represents the type of MIDI message (see the [enum MIDIMessage] enum).\n\t\t\tFor more information, see the [url=https://www.midi.org/specifications-old/item/table-2-expanded-messages-list-status-bytes]MIDI message status byte list chart[/url]."},{"name":"pitch","type":"int","description":"The pitch index number of this MIDI message. This value ranges from [code]0[/code] to [code]127[/code].\n\t\t\tOn a piano, the [b]middle C[/b] is [code]60[/code], followed by a [b]C-sharp[/b] ([code]61[/code]), then a [b]D[/b] ([code]62[/code]), and so on. Each octave is split in offsets of 12. See the \"MIDI note number\" column of the [url=https://en.wikipedia.org/wiki/Piano_key_frequencies]piano key frequency chart[/url] a full list."},{"name":"pressure","type":"int","description":"The strength of the key being pressed. This value ranges from [code]0[/code] to [code]127[/code].\n\t\t\t[b]Note:[/b] For many devices, this value is always [code]0[/code]. Other devices such as musical keyboards may simulate pressure by changing the [member velocity], instead."},{"name":"velocity","type":"int","description":"The velocity of the MIDI message. This value ranges from [code]0[/code] to [code]127[/code]. For a musical keyboard, this corresponds to how quickly the key was pressed, and is rarely above [code]110[/code] in practice.\n\t\t\t[b]Note:[/b] Some MIDI devices may send a [constant MIDI_MESSAGE_NOTE_ON] message with [code]0[/code] velocity and expect it to be treated the same as a [constant MIDI_MESSAGE_NOTE_OFF] message. If necessary, this can be handled with a few lines of code:\n\t\t\t[codeblock]\n\t\t\tfunc _input(event):\n\t\t\t    if event is InputEventMIDI:\n\t\t\t        if event.message == MIDI_MESSAGE_NOTE_ON and event.velocity &gt; 0:\n\t\t\t            print(\"Note pressed!\")\n\t\t\t[/codeblock]"}],"methods":[],"signals":[]},"InputEventMagnifyGesture":{"name":"InputEventMagnifyGesture","description":"Represents a magnifying touch gesture.","inherits":"InputEventGesture","properties":[{"name":"factor","type":"float","description":"The amount (or delta) of the event. This value is closer to [code]1.0[/code] the slower the gesture is performed."}],"methods":[],"signals":[]},"InputEventMouse":{"name":"InputEventMouse","description":"Base input event type for mouse events.","inherits":"InputEventWithModifiers","properties":[{"name":"button_mask","type":"int","description":"The mouse button mask identifier, one of or a bitwise combination of the [enum MouseButton] button masks."},{"name":"global_position","type":"Vector2","description":"When received in [method Node._input] or [method Node._unhandled_input], returns the mouse's position in the root [Viewport] using the coordinate system of the root [Viewport].\n\t\t\tWhen received in [method Control._gui_input], returns the mouse's position in the [CanvasLayer] that the [Control] is in using the coordinate system of the [CanvasLayer]."},{"name":"position","type":"Vector2","description":"When received in [method Node._input] or [method Node._unhandled_input], returns the mouse's position in the [Viewport] this [Node] is in using the coordinate system of this [Viewport].\n\t\t\tWhen received in [method Control._gui_input], returns the mouse's position in the [Control] using the local coordinate system of the [Control]."}],"methods":[],"signals":[]},"InputEventMouseButton":{"name":"InputEventMouseButton","description":"Represents a mouse button being pressed or released.","inherits":"InputEventMouse","properties":[{"name":"button_index","type":"int","description":"The mouse button identifier, one of the [enum MouseButton] button or button wheel constants."},{"name":"canceled","type":"bool","description":"If [code]true[/code], the mouse button event has been canceled."},{"name":"double_click","type":"bool","description":"If [code]true[/code], the mouse button's state is a double-click."},{"name":"factor","type":"float","description":"The amount (or delta) of the event. When used for high-precision scroll events, this indicates the scroll amount (vertical or horizontal). This is only supported on some platforms; the reported sensitivity varies depending on the platform. May be [code]0[/code] if not supported."},{"name":"pressed","type":"bool","description":"If [code]true[/code], the mouse button's state is pressed. If [code]false[/code], the mouse button's state is released."}],"methods":[],"signals":[]},"InputEventMouseMotion":{"name":"InputEventMouseMotion","description":"Represents a mouse or a pen movement.","inherits":"InputEventMouse","properties":[{"name":"pen_inverted","type":"bool","description":"Returns [code]true[/code] when using the eraser end of a stylus pen.\n\t\t\t[b]Note:[/b] This property is implemented on Linux, macOS and Windows."},{"name":"pressure","type":"float","description":"Represents the pressure the user puts on the pen. Ranges from [code]0.0[/code] to [code]1.0[/code]."},{"name":"relative","type":"Vector2","description":"The mouse position relative to the previous position (position at the last frame).\n\t\t\t[b]Note:[/b] Since [InputEventMouseMotion] may only be emitted when the mouse moves, it is not possible to reliably detect when the mouse has stopped moving by checking this property. A separate, short timer may be necessary.\n\t\t\t[b]Note:[/b] [member relative] is automatically scaled according to the content scale factor, which is defined by the project's stretch mode settings. This means mouse sensitivity will appear different depending on resolution when using [member relative] in a script that handles mouse aiming with the [constant Input.MOUSE_MODE_CAPTURED] mouse mode. To avoid this, use [member screen_relative] instead."},{"name":"screen_relative","type":"Vector2","description":"The unscaled mouse position relative to the previous position in the coordinate system of the screen (position at the last frame).\n\t\t\t[b]Note:[/b] Since [InputEventMouseMotion] may only be emitted when the mouse moves, it is not possible to reliably detect when the mouse has stopped moving by checking this property. A separate, short timer may be necessary.\n\t\t\t[b]Note:[/b] This coordinate is [i]not[/i] scaled according to the content scale factor or calls to [method InputEvent.xformed_by]. This should be preferred over [member relative] for mouse aiming when using the [constant Input.MOUSE_MODE_CAPTURED] mouse mode, regardless of the project's stretch mode."},{"name":"screen_velocity","type":"Vector2","description":"The unscaled mouse velocity in pixels per second in screen coordinates. This velocity is [i]not[/i] scaled according to the content scale factor or calls to [method InputEvent.xformed_by]. This should be preferred over [member velocity] for mouse aiming when using the [constant Input.MOUSE_MODE_CAPTURED] mouse mode, regardless of the project's stretch mode."},{"name":"tilt","type":"Vector2","description":"Represents the angles of tilt of the pen. Positive X-coordinate value indicates a tilt to the right. Positive Y-coordinate value indicates a tilt toward the user. Ranges from [code]-1.0[/code] to [code]1.0[/code] for both axes."},{"name":"velocity","type":"Vector2","description":"The mouse velocity in pixels per second.\n\t\t\t[b]Note:[/b] [member velocity] is automatically scaled according to the content scale factor, which is defined by the project's stretch mode settings. This means mouse sensitivity will appear different depending on resolution when using [member velocity] in a script that handles mouse aiming with the [constant Input.MOUSE_MODE_CAPTURED] mouse mode. To avoid this, use [member screen_velocity] instead."}],"methods":[],"signals":[]},"InputEventPanGesture":{"name":"InputEventPanGesture","description":"Represents a panning touch gesture.","inherits":"InputEventGesture","properties":[{"name":"delta","type":"Vector2","description":"Panning amount since last pan event."}],"methods":[],"signals":[]},"InputEventScreenDrag":{"name":"InputEventScreenDrag","description":"Represents a screen drag event.","inherits":"InputEventFromWindow","properties":[{"name":"index","type":"int","description":"The drag event index in the case of a multi-drag event."},{"name":"pen_inverted","type":"bool","description":"Returns [code]true[/code] when using the eraser end of a stylus pen."},{"name":"position","type":"Vector2","description":"The drag position in the viewport the node is in, using the coordinate system of this viewport."},{"name":"pressure","type":"float","description":"Represents the pressure the user puts on the pen. Ranges from [code]0.0[/code] to [code]1.0[/code]."},{"name":"relative","type":"Vector2","description":"The drag position relative to the previous position (position at the last frame).\n\t\t\t[b]Note:[/b] [member relative] is automatically scaled according to the content scale factor, which is defined by the project's stretch mode settings. This means touch sensitivity will appear different depending on resolution when using [member relative] in a script that handles touch aiming. To avoid this, use [member screen_relative] instead."},{"name":"screen_relative","type":"Vector2","description":"The unscaled drag position relative to the previous position in screen coordinates (position at the last frame). This position is [i]not[/i] scaled according to the content scale factor or calls to [method InputEvent.xformed_by]. This should be preferred over [member relative] for touch aiming regardless of the project's stretch mode."},{"name":"screen_velocity","type":"Vector2","description":"The unscaled drag velocity in pixels per second in screen coordinates. This velocity is [i]not[/i] scaled according to the content scale factor or calls to [method InputEvent.xformed_by]. This should be preferred over [member velocity] for touch aiming regardless of the project's stretch mode."},{"name":"tilt","type":"Vector2","description":"Represents the angles of tilt of the pen. Positive X-coordinate value indicates a tilt to the right. Positive Y-coordinate value indicates a tilt toward the user. Ranges from [code]-1.0[/code] to [code]1.0[/code] for both axes."},{"name":"velocity","type":"Vector2","description":"The drag velocity.\n\t\t\t[b]Note:[/b] [member velocity] is automatically scaled according to the content scale factor, which is defined by the project's stretch mode settings. This means touch sensitivity will appear different depending on resolution when using [member velocity] in a script that handles touch aiming. To avoid this, use [member screen_velocity] instead."}],"methods":[],"signals":[]},"InputEventScreenTouch":{"name":"InputEventScreenTouch","description":"Represents a screen touch event.","inherits":"InputEventFromWindow","properties":[{"name":"canceled","type":"bool","description":"If [code]true[/code], the touch event has been canceled."},{"name":"double_tap","type":"bool","description":"If [code]true[/code], the touch's state is a double tap."},{"name":"index","type":"int","description":"The touch index in the case of a multi-touch event. One index = one finger."},{"name":"position","type":"Vector2","description":"The touch position in the viewport the node is in, using the coordinate system of this viewport."},{"name":"pressed","type":"bool","description":"If [code]true[/code], the touch's state is pressed. If [code]false[/code], the touch's state is released."}],"methods":[],"signals":[]},"InputEventShortcut":{"name":"InputEventShortcut","description":"Represents a triggered keyboard .","inherits":"InputEvent","properties":[{"name":"shortcut","type":"Shortcut","description":"The [Shortcut] represented by this event. Its [method Shortcut.matches_event] method will always return [code]true[/code] for this event."}],"methods":[],"signals":[]},"InputEventWithModifiers":{"name":"InputEventWithModifiers","description":"Abstract base class for input events affected by modifier keys like Shift and Alt.","inherits":"InputEventFromWindow","properties":[{"name":"alt_pressed","type":"bool","description":"State of the [kbd]Alt[/kbd] modifier."},{"name":"command_or_control_autoremap","type":"bool","description":"Automatically use [kbd]Meta[/kbd] ([kbd]Cmd[/kbd]) on macOS and [kbd]Ctrl[/kbd] on other platforms. If [code]true[/code], [member ctrl_pressed] and [member meta_pressed] cannot be set."},{"name":"ctrl_pressed","type":"bool","description":"State of the [kbd]Ctrl[/kbd] modifier."},{"name":"meta_pressed","type":"bool","description":"State of the [kbd]Meta[/kbd] modifier. On Windows and Linux, this represents the Windows key (sometimes called \"meta\" or \"super\" on Linux). On macOS, this represents the Command key."},{"name":"shift_pressed","type":"bool","description":"State of the [kbd]Shift[/kbd] modifier."}],"methods":[{"name":"get_modifiers_mask","signature":"get_modifiers_mask() -> int","description":"Returns the keycode combination of modifier keys.","returnType":"int"},{"name":"is_command_or_control_pressed","signature":"is_command_or_control_pressed() -> bool","description":"On macOS, returns true if Meta (Cmd) is pressed.\n\t\t\t\tOn other platforms, returns true if Ctrl is pressed.","returnType":"bool"}],"signals":[]},"InputMap":{"name":"InputMap","description":"A singleton that manages all s.","inherits":"Object","properties":[],"methods":[{"name":"action_add_event","signature":"action_add_event(action: StringName, event: InputEvent) -> void","description":"Adds an  to an action. This  will trigger the action.","returnType":"void"},{"name":"action_erase_event","signature":"action_erase_event(action: StringName, event: InputEvent) -> void","description":"Removes an  from an action.","returnType":"void"},{"name":"action_erase_events","signature":"action_erase_events(action: StringName) -> void","description":"Removes all events from an action.","returnType":"void"},{"name":"action_get_deadzone","signature":"action_get_deadzone(action: StringName) -> float","description":"Returns a deadzone value for the action.","returnType":"float"},{"name":"action_get_events","signature":"action_get_events(action: StringName) -> InputEvent[]","description":"Returns an array of s associated with a given action.\n\t\t\t\tNote: When used in the editor (e.g. a tool script or ), this method will return events for the editor action. If you want to access your project's input binds from the editor, read the input/* settings from .","returnType":"InputEvent[]"},{"name":"action_has_event","signature":"action_has_event(action: StringName, event: InputEvent) -> bool","description":"Returns true if the action has the given  associated with it.","returnType":"bool"},{"name":"action_set_deadzone","signature":"action_set_deadzone(action: StringName, deadzone: float) -> void","description":"Sets a deadzone value for the action.","returnType":"void"},{"name":"add_action","signature":"add_action(action: StringName, deadzone: float) -> void","description":"Adds an empty action to the  with a configurable [param deadzone].\n\t\t\t\tAn  can then be added to this action with [method action_add_event].","returnType":"void"},{"name":"erase_action","signature":"erase_action(action: StringName) -> void","description":"Removes an action from the .","returnType":"void"},{"name":"event_is_action","signature":"event_is_action(event: InputEvent, action: StringName, exact_match: bool) -> bool","description":"Returns true if the given event is part of an existing action. This method ignores keyboard modifiers if the given  is not pressed (for proper release detection). See [method action_has_event] if you don't want this behavior.\n\t\t\t\tIf [param exact_match] is false, it ignores additional input modifiers for  and  events, and the direction for  events.","returnType":"bool"},{"name":"get_actions","signature":"get_actions() -> StringName[]","description":"Returns an array of all actions in the .","returnType":"StringName[]"},{"name":"has_action","signature":"has_action(action: StringName) -> bool","description":"Returns true if the  has a registered action with the given name.","returnType":"bool"},{"name":"load_from_project_settings","signature":"load_from_project_settings() -> void","description":"Clears all  in the  and load it anew from .","returnType":"void"}],"signals":[]},"InstancePlaceholder":{"name":"InstancePlaceholder","description":"Placeholder for the root  of a .","inherits":"Node","properties":[],"methods":[{"name":"create_instance","signature":"create_instance(replace: bool, custom_scene: PackedScene) -> Node","description":"Call this method to actually load in the node. The created node will be placed as a sibling above the  in the scene tree. The 's reference is also returned for convenience.\n\t\t\t\tNote: [method create_instance] is not thread-safe. Use [method Object.call_deferred] if calling from a thread.","returnType":"Node"},{"name":"get_instance_path","signature":"get_instance_path() -> String","description":"Gets the path to the  resource file that is loaded by default when calling [method create_instance]. Not thread-safe. Use [method Object.call_deferred] if calling from a thread.","returnType":"String"},{"name":"get_stored_values","signature":"get_stored_values(with_order: bool) -> Dictionary","description":"Returns the list of properties that will be applied to the node when [method create_instance] is called.\n\t\t\t\tIf [param with_order] is true, a key named .order (note the leading period) is added to the dictionary. This .order key is an  of  property names specifying the order in which properties will be applied (with index 0 being the first).","returnType":"Dictionary"}],"signals":[]},"IntervalTweener":{"name":"IntervalTweener","description":"Creates an idle interval in a  animation.","inherits":"Tweener","properties":[],"methods":[],"signals":[]},"ItemList":{"name":"ItemList","description":"A vertical list of selectable items with one or multiple columns.","inherits":"Control","properties":[{"name":"allow_reselect","type":"bool","description":"If [code]true[/code], the currently selected item can be selected again."},{"name":"allow_rmb_select","type":"bool","description":"If [code]true[/code], right mouse button click can select items."},{"name":"allow_search","type":"bool","description":"If [code]true[/code], allows navigating the [ItemList] with letter keys through incremental search."},{"name":"auto_height","type":"bool","description":"If [code]true[/code], the control will automatically resize the height to fit its content."},{"name":"auto_width","type":"bool","description":"If [code]true[/code], the control will automatically resize the width to fit its content."},{"name":"fixed_column_width","type":"int","description":"The width all columns will be adjusted to.\n\t\t\tA value of zero disables the adjustment, each item will have a width equal to the width of its content and the columns will have an uneven width."},{"name":"fixed_icon_size","type":"Vector2i","description":"The size all icons will be adjusted to.\n\t\t\tIf either X or Y component is not greater than zero, icon size won't be affected."},{"name":"icon_mode","type":"int","description":"The icon position, whether above or to the left of the text. See the [enum IconMode] constants."},{"name":"icon_scale","type":"float","description":"The scale of icon applied after [member fixed_icon_size] and transposing takes effect."},{"name":"item_count","type":"int","description":"The number of items currently in the list."},{"name":"max_columns","type":"int","description":"Maximum columns the list will have.\n\t\t\tIf greater than zero, the content will be split among the specified columns.\n\t\t\tA value of zero means unlimited columns, i.e. all items will be put in the same row."},{"name":"max_text_lines","type":"int","description":"Maximum lines of text allowed in each item. Space will be reserved even when there is not enough lines of text to display.\n\t\t\t[b]Note:[/b] This property takes effect only when [member icon_mode] is [constant ICON_MODE_TOP]. To make the text wrap, [member fixed_column_width] should be greater than zero."},{"name":"same_column_width","type":"bool","description":"Whether all columns will have the same width.\n\t\t\tIf [code]true[/code], the width is equal to the largest column width of all columns."},{"name":"select_mode","type":"int","description":"Allows single or multiple item selection. See the [enum SelectMode] constants."},{"name":"text_overrun_behavior","type":"int","description":"Sets the clipping behavior when the text exceeds an item's bounding rectangle. See [enum TextServer.OverrunBehavior] for a description of all modes."},{"name":"wraparound_items","type":"bool","description":"If [code]true[/code], the control will automatically move items into a new row to fit its content. See also [HFlowContainer] for this behavior.\n\t\t\tIf [code]false[/code], the control will add a horizontal scrollbar to make all items visible."}],"methods":[{"name":"add_icon_item","signature":"add_icon_item(icon: Texture2D, selectable: bool) -> int","description":"Adds an item to the item list with no text, only an icon. Returns the index of an added item.","returnType":"int"},{"name":"add_item","signature":"add_item(text: String, icon: Texture2D, selectable: bool) -> int","description":"Adds an item to the item list with specified text. Returns the index of an added item.\n\t\t\t\tSpecify an [param icon], or use null as the [param icon] for a list item with no icon.\n\t\t\t\tIf [param selectable] is true, the list item will be selectable.","returnType":"int"},{"name":"clear","signature":"clear() -> void","description":"Removes all items from the list.","returnType":"void"},{"name":"deselect","signature":"deselect(idx: int) -> void","description":"Ensures the item associated with the specified index is not selected.","returnType":"void"},{"name":"deselect_all","signature":"deselect_all() -> void","description":"Ensures there are no items selected.","returnType":"void"},{"name":"ensure_current_is_visible","signature":"ensure_current_is_visible() -> void","description":"Ensure current selection is visible, adjusting the scroll position as necessary.","returnType":"void"},{"name":"force_update_list_size","signature":"force_update_list_size() -> void","description":"Forces an update to the list size based on its items. This happens automatically whenever size of the items, or other relevant settings like [member auto_height], change. The method can be used to trigger the update ahead of next drawing pass.","returnType":"void"},{"name":"get_h_scroll_bar","signature":"get_h_scroll_bar() -> HScrollBar","description":"Returns the horizontal scrollbar.\n\t\t\t\tWarning: This is a required internal node, removing and freeing it may cause a crash. If you wish to hide it or any of its children, use their [member CanvasItem.visible] property.","returnType":"HScrollBar"},{"name":"get_item_at_position","signature":"get_item_at_position(position: Vector2, exact: bool) -> int","description":"Returns the item index at the given [param position].\n\t\t\t\tWhen there is no item at that point, -1 will be returned if [param exact] is true, and the closest item index will be returned otherwise.\n\t\t\t\tNote: The returned value is unreliable if called right after modifying the , before it redraws in the next frame.","returnType":"int"},{"name":"get_item_auto_translate_mode","signature":"get_item_auto_translate_mode(idx: int) -> int","description":"Returns item's auto translate mode.","returnType":"int"},{"name":"get_item_custom_bg_color","signature":"get_item_custom_bg_color(idx: int) -> Color","description":"Returns the custom background color of the item specified by [param idx] index.","returnType":"Color"},{"name":"get_item_custom_fg_color","signature":"get_item_custom_fg_color(idx: int) -> Color","description":"Returns the custom foreground color of the item specified by [param idx] index.","returnType":"Color"},{"name":"get_item_icon","signature":"get_item_icon(idx: int) -> Texture2D","description":"Returns the icon associated with the specified index.","returnType":"Texture2D"},{"name":"get_item_icon_modulate","signature":"get_item_icon_modulate(idx: int) -> Color","description":"Returns a  modulating item's icon at the specified index.","returnType":"Color"},{"name":"get_item_icon_region","signature":"get_item_icon_region(idx: int) -> Rect2","description":"Returns the region of item's icon used. The whole icon will be used if the region has no area.","returnType":"Rect2"},{"name":"get_item_language","signature":"get_item_language(idx: int) -> String","description":"Returns item's text language code.","returnType":"String"},{"name":"get_item_metadata","signature":"get_item_metadata(idx: int) -> Variant","description":"Returns the metadata value of the specified index.","returnType":"Variant"},{"name":"get_item_rect","signature":"get_item_rect(idx: int, expand: bool) -> Rect2","description":"Returns the position and size of the item with the specified index, in the coordinate system of the  node. If [param expand] is true the last column expands to fill the rest of the row.\n\t\t\t\tNote: The returned value is unreliable if called right after modifying the , before it redraws in the next frame.","returnType":"Rect2"},{"name":"get_item_text","signature":"get_item_text(idx: int) -> String","description":"Returns the text associated with the specified index.","returnType":"String"},{"name":"get_item_text_direction","signature":"get_item_text_direction(idx: int) -> int","description":"Returns item's text base writing direction.","returnType":"int"},{"name":"get_item_tooltip","signature":"get_item_tooltip(idx: int) -> String","description":"Returns the tooltip hint associated with the specified index.","returnType":"String"},{"name":"get_selected_items","signature":"get_selected_items() -> PackedInt32Array","description":"Returns an array with the indexes of the selected items.","returnType":"PackedInt32Array"},{"name":"get_v_scroll_bar","signature":"get_v_scroll_bar() -> VScrollBar","description":"Returns the vertical scrollbar.\n\t\t\t\tWarning: This is a required internal node, removing and freeing it may cause a crash. If you wish to hide it or any of its children, use their [member CanvasItem.visible] property.","returnType":"VScrollBar"},{"name":"is_anything_selected","signature":"is_anything_selected() -> bool","description":"Returns true if one or more items are selected.","returnType":"bool"},{"name":"is_item_disabled","signature":"is_item_disabled(idx: int) -> bool","description":"Returns true if the item at the specified index is disabled.","returnType":"bool"},{"name":"is_item_icon_transposed","signature":"is_item_icon_transposed(idx: int) -> bool","description":"Returns true if the item icon will be drawn transposed, i.e. the X and Y axes are swapped.","returnType":"bool"},{"name":"is_item_selectable","signature":"is_item_selectable(idx: int) -> bool","description":"Returns true if the item at the specified index is selectable.","returnType":"bool"},{"name":"is_item_tooltip_enabled","signature":"is_item_tooltip_enabled(idx: int) -> bool","description":"Returns true if the tooltip is enabled for specified item index.","returnType":"bool"},{"name":"is_selected","signature":"is_selected(idx: int) -> bool","description":"Returns true if the item at the specified index is currently selected.","returnType":"bool"},{"name":"move_item","signature":"move_item(from_idx: int, to_idx: int) -> void","description":"Moves item from index [param from_idx] to [param to_idx].","returnType":"void"},{"name":"remove_item","signature":"remove_item(idx: int) -> void","description":"Removes the item specified by [param idx] index from the list.","returnType":"void"},{"name":"select","signature":"select(idx: int, single: bool) -> void","description":"Select the item at the specified index.\n\t\t\t\tNote: This method does not trigger the item selection signal.","returnType":"void"},{"name":"set_item_auto_translate_mode","signature":"set_item_auto_translate_mode(idx: int, mode: int) -> void","description":"Sets the auto translate mode of the item associated with the specified index.\n\t\t\t\tItems use [constant Node.AUTO_TRANSLATE_MODE_INHERIT] by default, which uses the same auto translate mode as the  itself.","returnType":"void"},{"name":"set_item_custom_bg_color","signature":"set_item_custom_bg_color(idx: int, custom_bg_color: Color) -> void","description":"Sets the background color of the item specified by [param idx] index to the specified .","returnType":"void"},{"name":"set_item_custom_fg_color","signature":"set_item_custom_fg_color(idx: int, custom_fg_color: Color) -> void","description":"Sets the foreground color of the item specified by [param idx] index to the specified .","returnType":"void"},{"name":"set_item_disabled","signature":"set_item_disabled(idx: int, disabled: bool) -> void","description":"Disables (or enables) the item at the specified index.\n\t\t\t\tDisabled items cannot be selected and do not trigger activation signals (when double-clicking or pressing Enter).","returnType":"void"},{"name":"set_item_icon","signature":"set_item_icon(idx: int, icon: Texture2D) -> void","description":"Sets (or replaces) the icon's  associated with the specified index.","returnType":"void"},{"name":"set_item_icon_modulate","signature":"set_item_icon_modulate(idx: int, modulate: Color) -> void","description":"Sets a modulating  of the item associated with the specified index.","returnType":"void"},{"name":"set_item_icon_region","signature":"set_item_icon_region(idx: int, rect: Rect2) -> void","description":"Sets the region of item's icon used. The whole icon will be used if the region has no area.","returnType":"void"},{"name":"set_item_icon_transposed","signature":"set_item_icon_transposed(idx: int, transposed: bool) -> void","description":"Sets whether the item icon will be drawn transposed.","returnType":"void"},{"name":"set_item_language","signature":"set_item_language(idx: int, language: String) -> void","description":"Sets language code of item's text used for line-breaking and text shaping algorithms, if left empty current locale is used instead.","returnType":"void"},{"name":"set_item_metadata","signature":"set_item_metadata(idx: int, metadata: Variant) -> void","description":"Sets a value (of any type) to be stored with the item associated with the specified index.","returnType":"void"},{"name":"set_item_selectable","signature":"set_item_selectable(idx: int, selectable: bool) -> void","description":"Allows or disallows selection of the item associated with the specified index.","returnType":"void"},{"name":"set_item_text","signature":"set_item_text(idx: int, text: String) -> void","description":"Sets text of the item associated with the specified index.","returnType":"void"},{"name":"set_item_text_direction","signature":"set_item_text_direction(idx: int, direction: int) -> void","description":"Sets item's text base writing direction.","returnType":"void"},{"name":"set_item_tooltip","signature":"set_item_tooltip(idx: int, tooltip: String) -> void","description":"Sets the tooltip hint for the item associated with the specified index.","returnType":"void"},{"name":"set_item_tooltip_enabled","signature":"set_item_tooltip_enabled(idx: int, enable: bool) -> void","description":"Sets whether the tooltip hint is enabled for specified item index.","returnType":"void"},{"name":"sort_items_by_text","signature":"sort_items_by_text() -> void","description":"Sorts items in the list by their text.","returnType":"void"}],"signals":[{"name":"empty_clicked","description":"Emitted when any mouse click is issued within the rect of the list but on empty space.\n\t\t\t\t[param at_position] is the click position in this control's local coordinate system."},{"name":"item_activated","description":"Emitted when specified list item is activated via double-clicking or by pressing [kbd]Enter[/kbd]."},{"name":"item_clicked","description":"Emitted when specified list item has been clicked with any mouse button.\n\t\t\t\t[param at_position] is the click position in this control's local coordinate system."},{"name":"item_selected","description":"Emitted when specified item has been selected. Only applicable in single selection mode.\n\t\t\t\t[member allow_reselect] must be enabled to reselect an item."},{"name":"multi_selected","description":"Emitted when a multiple selection is altered on a list allowing multiple selection."}]},"JNISingleton":{"name":"JNISingleton","description":"Singleton that connects the engine with Android plugins to interface with native Android code.","inherits":"Object","properties":[],"methods":[],"signals":[]},"JSON":{"name":"JSON","description":"Helper class for creating and parsing JSON data.","inherits":"Resource","properties":[{"name":"data","type":"Variant","description":"Contains the parsed JSON data in [Variant] form."}],"methods":[{"name":"from_native","signature":"from_native(variant: Variant, full_objects: bool) -> Variant","description":"Converts a native engine type to a JSON-compliant value.\n\t\t\t\tBy default, objects are ignored for security reasons, unless [param full_objects] is true.\n\t\t\t\tYou can convert a native value to a JSON string like this:\n\t\t\t\t\n\t\t\t\tfunc encode_data(value, full_objects = false):\n\t\t\t\t    return JSON.stringify(JSON.from_native(value, full_objects))\n\t\t\t\t","returnType":"Variant"},{"name":"get_error_line","signature":"get_error_line() -> int","description":"Returns 0 if the last call to [method parse] was successful, or the line number where the parse failed.","returnType":"int"},{"name":"get_error_message","signature":"get_error_message() -> String","description":"Returns an empty string if the last call to [method parse] was successful, or the error message if it failed.","returnType":"String"},{"name":"get_parsed_text","signature":"get_parsed_text() -> String","description":"Return the text parsed by [method parse] (requires passing keep_text to [method parse]).","returnType":"String"},{"name":"parse","signature":"parse(json_text: String, keep_text: bool) -> int","description":"Attempts to parse the [param json_text] provided.\n\t\t\t\tReturns an [enum Error]. If the parse was successful, it returns [constant OK] and the result can be retrieved using [member data]. If unsuccessful, use [method get_error_line] and [method get_error_message] to identify the source of the failure.\n\t\t\t\tNon-static variant of [method parse_string], if you want custom error handling.\n\t\t\t\tThe optional [param keep_text] argument instructs the parser to keep a copy of the original text. This text can be obtained later by using the [method get_parsed_text] function and is used when saving the resource (instead of generating new text from [member data]).","returnType":"int"},{"name":"parse_string","signature":"parse_string(json_string: String) -> Variant","description":"Attempts to parse the [param json_string] provided and returns the parsed data. Returns null if parse failed.","returnType":"Variant"},{"name":"stringify","signature":"stringify(data: Variant, indent: String, sort_keys: bool, full_precision: bool) -> String","description":"Converts a  var to JSON text and returns the result. Useful for serializing data to store or send over the network.\n\t\t\t\tNote: The JSON specification does not define integer or float types, but only a number type. Therefore, converting a Variant to JSON text will convert all numerical values to  types.\n\t\t\t\tNote: If [param full_precision] is true, when stringifying floats, the unreliable digits are stringified in addition to the reliable digits to guarantee exact decoding.\n\t\t\t\tThe [param indent] parameter controls if and how something is indented; its contents will be used where there should be an indent in the output. Even spaces like \"   \" will work. \\t and \\n can also be used for a tab indent, or to make a newline for each indent respectively.\n\t\t\t\tExample output:\n\t\t\t\t\n\t\t\t\t## JSON.stringify(my_dictionary)\n\t\t\t\t{\"name\":\"my_dictionary\",\"version\":\"1.0.0\",\"entities\":[{\"name\":\"entity_0\",\"value\":\"value_0\"},{\"name\":\"entity_1\",\"value\":\"value_1\"}]}\n\n\t\t\t\t## JSON.stringify(my_dictionary, \"\\t\")\n\t\t\t\t{\n\t\t\t\t    \"name\": \"my_dictionary\",\n\t\t\t\t    \"version\": \"1.0.0\",\n\t\t\t\t    \"entities\": [\n\t\t\t\t        {\n\t\t\t\t            \"name\": \"entity_0\",\n\t\t\t\t            \"value\": \"value_0\"\n\t\t\t\t        },\n\t\t\t\t        {\n\t\t\t\t            \"name\": \"entity_1\",\n\t\t\t\t            \"value\": \"value_1\"\n\t\t\t\t        }\n\t\t\t\t    ]\n\t\t\t\t}\n\n\t\t\t\t## JSON.stringify(my_dictionary, \"...\")\n\t\t\t\t{\n\t\t\t\t...\"name\": \"my_dictionary\",\n\t\t\t\t...\"version\": \"1.0.0\",\n\t\t\t\t...\"entities\": [\n\t\t\t\t......{\n\t\t\t\t.........\"name\": \"entity_0\",\n\t\t\t\t.........\"value\": \"value_0\"\n\t\t\t\t......},\n\t\t\t\t......{\n\t\t\t\t.........\"name\": \"entity_1\",\n\t\t\t\t.........\"value\": \"value_1\"\n\t\t\t\t......}\n\t\t\t\t...]\n\t\t\t\t}\n\t\t\t\t","returnType":"String"},{"name":"to_native","signature":"to_native(json: Variant, allow_objects: bool) -> Variant","description":"Converts a JSON-compliant value that was created with [method from_native] back to native engine types.\n\t\t\t\tBy default, objects are ignored for security reasons, unless [param allow_objects] is true.\n\t\t\t\tYou can convert a JSON string back to a native value like this:\n\t\t\t\t\n\t\t\t\tfunc decode_data(string, allow_objects = false):\n\t\t\t\t    return JSON.to_native(JSON.parse_string(string), allow_objects)\n\t\t\t\t","returnType":"Variant"}],"signals":[]},"JSONRPC":{"name":"JSONRPC","description":"A helper to handle dictionaries which look like JSONRPC documents.","inherits":"Object","properties":[],"methods":[{"name":"make_notification","signature":"make_notification(method: String, params: Variant) -> Dictionary","description":"Returns a dictionary in the form of a JSON-RPC notification. Notifications are one-shot messages which do not expect a response.\n\t\t\t\t- [param method]: Name of the method being called.\n\t\t\t\t- [param params]: An array or dictionary of parameters being passed to the method.","returnType":"Dictionary"},{"name":"make_request","signature":"make_request(method: String, params: Variant, id: Variant) -> Dictionary","description":"Returns a dictionary in the form of a JSON-RPC request. Requests are sent to a server with the expectation of a response. The ID field is used for the server to specify which exact request it is responding to.\n\t\t\t\t- [param method]: Name of the method being called.\n\t\t\t\t- [param params]: An array or dictionary of parameters being passed to the method.\n\t\t\t\t- [param id]: Uniquely identifies this request. The server is expected to send a response with the same ID.","returnType":"Dictionary"},{"name":"make_response","signature":"make_response(result: Variant, id: Variant) -> Dictionary","description":"When a server has received and processed a request, it is expected to send a response. If you did not want a response then you need to have sent a Notification instead.\n\t\t\t\t- [param result]: The return value of the function which was called.\n\t\t\t\t- [param id]: The ID of the request this response is targeted to.","returnType":"Dictionary"},{"name":"make_response_error","signature":"make_response_error(code: int, message: String, id: Variant) -> Dictionary","description":"Creates a response which indicates a previous reply has failed in some way.\n\t\t\t\t- [param code]: The error code corresponding to what kind of error this is. See the [enum ErrorCode] constants.\n\t\t\t\t- [param message]: A custom message about this error.\n\t\t\t\t- [param id]: The request this error is a response to.","returnType":"Dictionary"},{"name":"process_action","signature":"process_action(action: Variant, recurse: bool) -> Variant","description":"Given a Dictionary which takes the form of a JSON-RPC request: unpack the request and run it. Methods are resolved by looking at the field called \"method\" and looking for an equivalently named function in the JSONRPC object. If one is found that method is called.\n\t\t\t\tTo add new supported methods extend the JSONRPC class and call [method process_action] on your subclass.\n\t\t\t\t[param action]: The action to be run, as a Dictionary in the form of a JSON-RPC request or notification.","returnType":"Variant"},{"name":"process_string","signature":"process_string(action: String) -> String","description":"","returnType":"String"},{"name":"set_scope","signature":"set_scope(scope: String, target: Object) -> void","description":"","returnType":"void"}],"signals":[]},"JavaClass":{"name":"JavaClass","description":"Represents a class from the Java Native Interface.","inherits":"RefCounted","properties":[],"methods":[{"name":"get_java_class_name","signature":"get_java_class_name() -> String","description":"Returns the Java class name.","returnType":"String"},{"name":"get_java_method_list","signature":"get_java_method_list() -> Dictionary[]","description":"Returns the object's Java methods and their signatures as an  of dictionaries, in the same format as [method Object.get_method_list].","returnType":"Dictionary[]"},{"name":"get_java_parent_class","signature":"get_java_parent_class() -> JavaClass","description":"Returns a  representing the Java parent class of this class.","returnType":"JavaClass"}],"signals":[]},"JavaClassWrapper":{"name":"JavaClassWrapper","description":"Provides access to the Java Native Interface.","inherits":"Object","properties":[],"methods":[{"name":"get_exception","signature":"get_exception() -> JavaObject","description":"Returns the Java exception from the last call into a Java class. If there was no exception, it will return null.\n\t\t\t\tNote: This method only works on Android. On every other platform, this method will always return null.","returnType":"JavaObject"},{"name":"wrap","signature":"wrap(name: String) -> JavaClass","description":"Wraps a class defined in Java, and returns it as a   type that Godot can interact with.\n\t\t\t\tNote: This method only works on Android. On every other platform, this method does nothing and returns an empty .","returnType":"JavaClass"}],"signals":[]},"JavaObject":{"name":"JavaObject","description":"Represents an object from the Java Native Interface.","inherits":"RefCounted","properties":[],"methods":[{"name":"get_java_class","signature":"get_java_class() -> JavaClass","description":"Returns the  that this object is an instance of.","returnType":"JavaClass"}],"signals":[]},"JavaScriptBridge":{"name":"JavaScriptBridge","description":"Singleton that connects the engine with the browser's JavaScript context in Web export.","inherits":"Object","properties":[],"methods":[{"name":"create_callback","signature":"create_callback(callable: Callable) -> JavaScriptObject","description":"Creates a reference to a  that can be used as a callback by JavaScript. The reference must be kept until the callback happens, or it won't be called at all. See  for usage.\n\t\t\t\tNote: The callback function must take exactly one  argument, which is going to be the JavaScript [url=https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/arguments]arguments object converted to an array.","returnType":"JavaScriptObject"},{"name":"create_object","signature":"create_object(object: String) -> Variant","description":"Creates a new JavaScript object using the new constructor. The [param object] must a valid property of the JavaScript window. See  for usage.","returnType":"Variant"},{"name":"download_buffer","signature":"download_buffer(buffer: PackedByteArray, name: String, mime: String) -> void","description":"Prompts the user to download a file containing the specified [param buffer]. The file will have the given [param name] and [param mime] type.\n\t\t\t\tNote: The browser may override the [url=https://en.wikipedia.org/wiki/Media_type]MIME type provided based on the file [param name]'s extension.\n\t\t\t\tNote: Browsers might block the download if [method download_buffer] is not being called from a user interaction (e.g. button click).\n\t\t\t\tNote: Browsers might ask the user for permission or block the download if multiple download requests are made in a quick succession.","returnType":"void"},{"name":"eval","signature":"eval(code: String, use_global_execution_context: bool) -> Variant","description":"Execute the string [param code] as JavaScript code within the browser window. This is a call to the actual global JavaScript function [code skip-lint]eval().\n\t\t\t\tIf [param use_global_execution_context] is true, the code will be evaluated in the global execution context. Otherwise, it is evaluated in the execution context of a function within the engine's runtime environment.","returnType":"Variant"},{"name":"force_fs_sync","signature":"force_fs_sync() -> void","description":"Force synchronization of the persistent file system (when enabled).\n\t\t\t\tNote: This is only useful for modules or extensions that can't use  to write files.","returnType":"void"},{"name":"get_interface","signature":"get_interface(interface: String) -> JavaScriptObject","description":"Returns an interface to a JavaScript object that can be used by scripts. The [param interface] must be a valid property of the JavaScript window. The callback must accept a single  argument, which will contain the JavaScript arguments. See  for usage.","returnType":"JavaScriptObject"},{"name":"is_js_buffer","signature":"is_js_buffer(javascript_object: JavaScriptObject) -> bool","description":"Returns true if the given [param javascript_object] is of type [url=https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/ArrayBuffer]ArrayBuffer, [url=https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DataView]DataView, or one of the many [url=https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypedArray]typed array objects.","returnType":"bool"},{"name":"js_buffer_to_packed_byte_array","signature":"js_buffer_to_packed_byte_array(javascript_buffer: JavaScriptObject) -> PackedByteArray","description":"Returns a copy of [param javascript_buffer]'s contents as a . See also [method is_js_buffer].","returnType":"PackedByteArray"},{"name":"pwa_needs_update","signature":"pwa_needs_update() -> bool","description":"Returns true if a new version of the progressive web app is waiting to be activated.\n\t\t\t\tNote: Only relevant when exported as a Progressive Web App.","returnType":"bool"},{"name":"pwa_update","signature":"pwa_update() -> int","description":"Performs the live update of the progressive web app. Forcing the new version to be installed and the page to be reloaded.\n\t\t\t\tNote: Your application will be reloaded in all browser tabs.\n\t\t\t\tNote: Only relevant when exported as a Progressive Web App and [method pwa_needs_update] returns true.","returnType":"int"}],"signals":[{"name":"pwa_update_available","description":"Emitted when an update for this progressive web app has been detected but is waiting to be activated because a previous version is active. See [method pwa_update] to force the update to take place immediately."}]},"JavaScriptObject":{"name":"JavaScriptObject","description":"A wrapper class for web native JavaScript objects.","inherits":"RefCounted","properties":[],"methods":[],"signals":[]},"Joint2D":{"name":"Joint2D","description":"Abstract base class for all 2D physics joints.","inherits":"Node2D","properties":[{"name":"bias","type":"float","description":"When [member node_a] and [member node_b] move in different directions the [member bias] controls how fast the joint pulls them back to their original position. The lower the [member bias] the more the two bodies can pull on the joint.\n\t\t\tWhen set to [code]0[/code], the default value from [member ProjectSettings.physics/2d/solver/default_constraint_bias] is used."},{"name":"disable_collision","type":"bool","description":"If [code]true[/code], the two bodies bound together do not collide with each other."},{"name":"node_a","type":"NodePath","description":"Path to the first body (A) attached to the joint. The node must inherit [PhysicsBody2D]."},{"name":"node_b","type":"NodePath","description":"Path to the second body (B) attached to the joint. The node must inherit [PhysicsBody2D]."}],"methods":[{"name":"get_rid","signature":"get_rid() -> RID","description":"Returns the joint's internal  from the .","returnType":"RID"}],"signals":[]},"Joint3D":{"name":"Joint3D","description":"Abstract base class for all 3D physics joints.","inherits":"Node3D","properties":[{"name":"exclude_nodes_from_collision","type":"bool","description":"If [code]true[/code], the two bodies bound together do not collide with each other."},{"name":"node_a","type":"NodePath","description":"Path to the first node (A) attached to the joint. The node must inherit [PhysicsBody3D].\n\t\t\tIf left empty and [member node_b] is set, the body is attached to a fixed [StaticBody3D] without collision shapes."},{"name":"node_b","type":"NodePath","description":"Path to the second node (B) attached to the joint. The node must inherit [PhysicsBody3D].\n\t\t\tIf left empty and [member node_a] is set, the body is attached to a fixed [StaticBody3D] without collision shapes."},{"name":"solver_priority","type":"int","description":"The priority used to define which solver is executed first for multiple joints. The lower the value, the higher the priority."}],"methods":[{"name":"get_rid","signature":"get_rid() -> RID","description":"Returns the joint's internal  from the .","returnType":"RID"}],"signals":[]},"KinematicCollision2D":{"name":"KinematicCollision2D","description":"Holds collision data from the movement of a .","inherits":"RefCounted","properties":[],"methods":[{"name":"get_angle","signature":"get_angle(up_direction: Vector2) -> float","description":"Returns the collision angle according to [param up_direction], which is [constant Vector2.UP] by default. This value is always positive.","returnType":"float"},{"name":"get_collider","signature":"get_collider() -> Object","description":"Returns the colliding body's attached .","returnType":"Object"},{"name":"get_collider_id","signature":"get_collider_id() -> int","description":"Returns the unique instance ID of the colliding body's attached . See [method Object.get_instance_id].","returnType":"int"},{"name":"get_collider_rid","signature":"get_collider_rid() -> RID","description":"Returns the colliding body's  used by the .","returnType":"RID"},{"name":"get_collider_shape","signature":"get_collider_shape() -> Object","description":"Returns the colliding body's shape.","returnType":"Object"},{"name":"get_collider_shape_index","signature":"get_collider_shape_index() -> int","description":"Returns the colliding body's shape index. See .","returnType":"int"},{"name":"get_collider_velocity","signature":"get_collider_velocity() -> Vector2","description":"Returns the colliding body's velocity.","returnType":"Vector2"},{"name":"get_depth","signature":"get_depth() -> float","description":"Returns the colliding body's length of overlap along the collision normal.","returnType":"float"},{"name":"get_local_shape","signature":"get_local_shape() -> Object","description":"Returns the moving object's colliding shape.","returnType":"Object"},{"name":"get_normal","signature":"get_normal() -> Vector2","description":"Returns the colliding body's shape's normal at the point of collision.","returnType":"Vector2"},{"name":"get_position","signature":"get_position() -> Vector2","description":"Returns the point of collision in global coordinates.","returnType":"Vector2"},{"name":"get_remainder","signature":"get_remainder() -> Vector2","description":"Returns the moving object's remaining movement vector.","returnType":"Vector2"},{"name":"get_travel","signature":"get_travel() -> Vector2","description":"Returns the moving object's travel before collision.","returnType":"Vector2"}],"signals":[]},"KinematicCollision3D":{"name":"KinematicCollision3D","description":"Holds collision data from the movement of a .","inherits":"RefCounted","properties":[],"methods":[{"name":"get_angle","signature":"get_angle(collision_index: int, up_direction: Vector3) -> float","description":"Returns the collision angle according to [param up_direction], which is [constant Vector3.UP] by default. This value is always positive.","returnType":"float"},{"name":"get_collider","signature":"get_collider(collision_index: int) -> Object","description":"Returns the colliding body's attached  given a collision index (the deepest collision by default).","returnType":"Object"},{"name":"get_collider_id","signature":"get_collider_id(collision_index: int) -> int","description":"Returns the unique instance ID of the colliding body's attached  given a collision index (the deepest collision by default). See [method Object.get_instance_id].","returnType":"int"},{"name":"get_collider_rid","signature":"get_collider_rid(collision_index: int) -> RID","description":"Returns the colliding body's  used by the  given a collision index (the deepest collision by default).","returnType":"RID"},{"name":"get_collider_shape","signature":"get_collider_shape(collision_index: int) -> Object","description":"Returns the colliding body's shape given a collision index (the deepest collision by default).","returnType":"Object"},{"name":"get_collider_shape_index","signature":"get_collider_shape_index(collision_index: int) -> int","description":"Returns the colliding body's shape index given a collision index (the deepest collision by default). See .","returnType":"int"},{"name":"get_collider_velocity","signature":"get_collider_velocity(collision_index: int) -> Vector3","description":"Returns the colliding body's velocity given a collision index (the deepest collision by default).","returnType":"Vector3"},{"name":"get_collision_count","signature":"get_collision_count() -> int","description":"Returns the number of detected collisions.","returnType":"int"},{"name":"get_depth","signature":"get_depth() -> float","description":"Returns the colliding body's length of overlap along the collision normal.","returnType":"float"},{"name":"get_local_shape","signature":"get_local_shape(collision_index: int) -> Object","description":"Returns the moving object's colliding shape given a collision index (the deepest collision by default).","returnType":"Object"},{"name":"get_normal","signature":"get_normal(collision_index: int) -> Vector3","description":"Returns the colliding body's shape's normal at the point of collision given a collision index (the deepest collision by default).","returnType":"Vector3"},{"name":"get_position","signature":"get_position(collision_index: int) -> Vector3","description":"Returns the point of collision in global coordinates given a collision index (the deepest collision by default).","returnType":"Vector3"},{"name":"get_remainder","signature":"get_remainder() -> Vector3","description":"Returns the moving object's remaining movement vector.","returnType":"Vector3"},{"name":"get_travel","signature":"get_travel() -> Vector3","description":"Returns the moving object's travel before collision.","returnType":"Vector3"}],"signals":[]},"Label":{"name":"Label","description":"A control for displaying plain text.","inherits":"Control","properties":[{"name":"autowrap_mode","type":"int","description":"If set to something other than [constant TextServer.AUTOWRAP_OFF], the text gets wrapped inside the node's bounding rectangle. If you resize the node, it will change its height automatically to show all the text. To see how each mode behaves, see [enum TextServer.AutowrapMode]."},{"name":"clip_text","type":"bool","description":"If [code]true[/code], the Label only shows the text that fits inside its bounding rectangle and will clip text horizontally."},{"name":"ellipsis_char","type":"String","description":"Ellipsis character used for text clipping."},{"name":"horizontal_alignment","type":"int","description":"Controls the text's horizontal alignment. Supports left, center, right, and fill, or justify. Set it to one of the [enum HorizontalAlignment] constants."},{"name":"justification_flags","type":"int","description":"Line fill alignment rules. See [enum TextServer.JustificationFlag] for more information."},{"name":"label_settings","type":"LabelSettings","description":"A [LabelSettings] resource that can be shared between multiple [Label] nodes. Takes priority over theme properties."},{"name":"language","type":"String","description":"Language code used for line-breaking and text shaping algorithms, if left empty current locale is used instead."},{"name":"lines_skipped","type":"int","description":"The number of the lines ignored and not displayed from the start of the [member text] value."},{"name":"max_lines_visible","type":"int","description":"Limits the lines of text the node shows on screen."},{"name":"paragraph_separator","type":"String","description":"String used as a paragraph separator. Each paragraph is processed independently, in its own BiDi context."},{"name":"structured_text_bidi_override","type":"int","description":"Set BiDi algorithm override for the structured text."},{"name":"structured_text_bidi_override_options","type":"Array","description":"Set additional options for BiDi override."},{"name":"tab_stops","type":"PackedFloat32Array","description":"Aligns text to the given tab-stops."},{"name":"text","type":"String","description":"The text to display on screen."},{"name":"text_direction","type":"int","description":"Base text writing direction."},{"name":"text_overrun_behavior","type":"int","description":"Sets the clipping behavior when the text exceeds the node's bounding rectangle. See [enum TextServer.OverrunBehavior] for a description of all modes."},{"name":"uppercase","type":"bool","description":"If [code]true[/code], all the text displays as UPPERCASE."},{"name":"vertical_alignment","type":"int","description":"Controls the text's vertical alignment. Supports top, center, bottom, and fill. Set it to one of the [enum VerticalAlignment] constants."},{"name":"visible_characters","type":"int","description":"The number of characters to display. If set to [code]-1[/code], all characters are displayed. This can be useful when animating the text appearing in a dialog box.\n\t\t\t[b]Note:[/b] Setting this property updates [member visible_ratio] accordingly."},{"name":"visible_characters_behavior","type":"int","description":"Sets the clipping behavior when [member visible_characters] or [member visible_ratio] is set. See [enum TextServer.VisibleCharactersBehavior] for more info."},{"name":"visible_ratio","type":"float","description":"The fraction of characters to display, relative to the total number of characters (see [method get_total_character_count]). If set to [code]1.0[/code], all characters are displayed. If set to [code]0.5[/code], only half of the characters will be displayed. This can be useful when animating the text appearing in a dialog box.\n\t\t\t[b]Note:[/b] Setting this property updates [member visible_characters] accordingly."}],"methods":[{"name":"get_character_bounds","signature":"get_character_bounds(pos: int) -> Rect2","description":"Returns the bounding rectangle of the character at position [param pos] in the label's local coordinate system. If the character is a non-visual character or [param pos] is outside the valid range, an empty  is returned. If the character is a part of a composite grapheme, the bounding rectangle of the whole grapheme is returned.","returnType":"Rect2"},{"name":"get_line_count","signature":"get_line_count() -> int","description":"Returns the number of lines of text the Label has.","returnType":"int"},{"name":"get_line_height","signature":"get_line_height(line: int) -> int","description":"Returns the height of the line [param line].\n\t\t\t\tIf [param line] is set to -1, returns the biggest line height.\n\t\t\t\tIf there are no lines, returns font size in pixels.","returnType":"int"},{"name":"get_total_character_count","signature":"get_total_character_count() -> int","description":"Returns the total number of printable characters in the text (excluding spaces and newlines).","returnType":"int"},{"name":"get_visible_line_count","signature":"get_visible_line_count() -> int","description":"Returns the number of lines shown. Useful if the 's height cannot currently display all lines.","returnType":"int"}],"signals":[]},"Label3D":{"name":"Label3D","description":"A node for displaying plain text in 3D space.","inherits":"GeometryInstance3D","properties":[{"name":"alpha_antialiasing_edge","type":"float","description":"Threshold at which antialiasing will be applied on the alpha channel."},{"name":"alpha_antialiasing_mode","type":"int","description":"The type of alpha antialiasing to apply. See [enum BaseMaterial3D.AlphaAntiAliasing]."},{"name":"alpha_cut","type":"int","description":"The alpha cutting mode to use for the sprite. See [enum AlphaCutMode] for possible values."},{"name":"alpha_hash_scale","type":"float","description":"The hashing scale for Alpha Hash. Recommended values between [code]0[/code] and [code]2[/code]."},{"name":"alpha_scissor_threshold","type":"float","description":"Threshold at which the alpha scissor will discard values."},{"name":"autowrap_mode","type":"int","description":"If set to something other than [constant TextServer.AUTOWRAP_OFF], the text gets wrapped inside the node's bounding rectangle. If you resize the node, it will change its height automatically to show all the text. To see how each mode behaves, see [enum TextServer.AutowrapMode]."},{"name":"billboard","type":"int","description":"The billboard mode to use for the label. See [enum BaseMaterial3D.BillboardMode] for possible values."},{"name":"double_sided","type":"bool","description":"If [code]true[/code], text can be seen from the back as well, if [code]false[/code], it is invisible when looking at it from behind."},{"name":"fixed_size","type":"bool","description":"If [code]true[/code], the label is rendered at the same size regardless of distance."},{"name":"font","type":"Font","description":"Font configuration used to display text."},{"name":"font_size","type":"int","description":"Font size of the [Label3D]'s text. To make the font look more detailed when up close, increase [member font_size] while decreasing [member pixel_size] at the same time.\n\t\t\tHigher font sizes require more time to render new characters, which can cause stuttering during gameplay."},{"name":"horizontal_alignment","type":"int","description":"Controls the text's horizontal alignment. Supports left, center, right, and fill, or justify. Set it to one of the [enum HorizontalAlignment] constants."},{"name":"justification_flags","type":"int","description":"Line fill alignment rules. See [enum TextServer.JustificationFlag] for more information."},{"name":"language","type":"String","description":"Language code used for line-breaking and text shaping algorithms, if left empty current locale is used instead."},{"name":"line_spacing","type":"float","description":"Additional vertical spacing between lines (in pixels), spacing is added to line descent. This value can be negative."},{"name":"modulate","type":"Color","description":"Text [Color] of the [Label3D]."},{"name":"no_depth_test","type":"bool","description":"If [code]true[/code], depth testing is disabled and the object will be drawn in render order."},{"name":"offset","type":"Vector2","description":"The text drawing offset (in pixels)."},{"name":"outline_modulate","type":"Color","description":"The tint of text outline."},{"name":"outline_render_priority","type":"int","description":"Sets the render priority for the text outline. Higher priority objects will be sorted in front of lower priority objects.\n\t\t\t[b]Note:[/b] This only applies if [member alpha_cut] is set to [constant ALPHA_CUT_DISABLED] (default value).\n\t\t\t[b]Note:[/b] This only applies to sorting of transparent objects. This will not impact how transparent objects are sorted relative to opaque objects. This is because opaque objects are not sorted, while transparent objects are sorted from back to front (subject to priority)."},{"name":"outline_size","type":"int","description":"Text outline size."},{"name":"pixel_size","type":"float","description":"The size of one pixel's width on the label to scale it in 3D. To make the font look more detailed when up close, increase [member font_size] while decreasing [member pixel_size] at the same time."},{"name":"render_priority","type":"int","description":"Sets the render priority for the text. Higher priority objects will be sorted in front of lower priority objects.\n\t\t\t[b]Note:[/b] This only applies if [member alpha_cut] is set to [constant ALPHA_CUT_DISABLED] (default value).\n\t\t\t[b]Note:[/b] This only applies to sorting of transparent objects. This will not impact how transparent objects are sorted relative to opaque objects. This is because opaque objects are not sorted, while transparent objects are sorted from back to front (subject to priority)."},{"name":"shaded","type":"bool","description":"If [code]true[/code], the [Light3D] in the [Environment] has effects on the label."},{"name":"structured_text_bidi_override","type":"int","description":"Set BiDi algorithm override for the structured text."},{"name":"structured_text_bidi_override_options","type":"Array","description":"Set additional options for BiDi override."},{"name":"text","type":"String","description":"The text to display on screen."},{"name":"text_direction","type":"int","description":"Base text writing direction."},{"name":"texture_filter","type":"int","description":"Filter flags for the texture. See [enum BaseMaterial3D.TextureFilter] for options."},{"name":"uppercase","type":"bool","description":"If [code]true[/code], all the text displays as UPPERCASE."},{"name":"vertical_alignment","type":"int","description":"Controls the text's vertical alignment. Supports top, center, bottom. Set it to one of the [enum VerticalAlignment] constants."},{"name":"width","type":"float","description":"Text width (in pixels), used for autowrap and fill alignment."}],"methods":[{"name":"generate_triangle_mesh","signature":"generate_triangle_mesh() -> TriangleMesh","description":"Returns a  with the label's vertices following its current configuration (such as its [member pixel_size]).","returnType":"TriangleMesh"},{"name":"get_draw_flag","signature":"get_draw_flag(flag: int) -> bool","description":"Returns the value of the specified flag.","returnType":"bool"},{"name":"set_draw_flag","signature":"set_draw_flag(flag: int, enabled: bool) -> void","description":"If true, the specified flag will be enabled. See [enum Label3D.DrawFlags] for a list of flags.","returnType":"void"}],"signals":[]},"LabelSettings":{"name":"LabelSettings","description":"Provides common settings to customize the text in a .","inherits":"Resource","properties":[{"name":"font","type":"Font","description":"[Font] used for the text."},{"name":"font_color","type":"Color","description":"Color of the text."},{"name":"font_size","type":"int","description":"Size of the text."},{"name":"line_spacing","type":"float","description":"Additional vertical spacing between lines (in pixels), spacing is added to line descent. This value can be negative."},{"name":"outline_color","type":"Color","description":"The color of the outline."},{"name":"outline_size","type":"int","description":"Text outline size."},{"name":"paragraph_spacing","type":"float","description":"Vertical space between paragraphs. Added on top of [member line_spacing]."},{"name":"shadow_color","type":"Color","description":"Color of the shadow effect. If alpha is [code]0[/code], no shadow will be drawn."},{"name":"shadow_offset","type":"Vector2","description":"Offset of the shadow effect, in pixels."},{"name":"shadow_size","type":"int","description":"Size of the shadow effect."}],"methods":[],"signals":[]},"Light2D":{"name":"Light2D","description":"Casts light in a 2D environment.","inherits":"Node2D","properties":[{"name":"blend_mode","type":"int","description":"The Light2D's blend mode. See [enum BlendMode] constants for values."},{"name":"color","type":"Color","description":"The Light2D's [Color]."},{"name":"editor_only","type":"bool","description":"If [code]true[/code], Light2D will only appear when editing the scene."},{"name":"enabled","type":"bool","description":"If [code]true[/code], Light2D will emit light."},{"name":"energy","type":"float","description":"The Light2D's energy value. The larger the value, the stronger the light."},{"name":"range_item_cull_mask","type":"int","description":"The layer mask. Only objects with a matching [member CanvasItem.light_mask] will be affected by the Light2D. See also [member shadow_item_cull_mask], which affects which objects can cast shadows.\n\t\t\t[b]Note:[/b] [member range_item_cull_mask] is ignored by [DirectionalLight2D], which will always light a 2D node regardless of the 2D node's [member CanvasItem.light_mask]."},{"name":"range_layer_max","type":"int","description":"Maximum layer value of objects that are affected by the Light2D."},{"name":"range_layer_min","type":"int","description":"Minimum layer value of objects that are affected by the Light2D."},{"name":"range_z_max","type":"int","description":"Maximum [code]z[/code] value of objects that are affected by the Light2D."},{"name":"range_z_min","type":"int","description":"Minimum [code]z[/code] value of objects that are affected by the Light2D."},{"name":"shadow_color","type":"Color","description":"[Color] of shadows cast by the Light2D."},{"name":"shadow_enabled","type":"bool","description":"If [code]true[/code], the Light2D will cast shadows."},{"name":"shadow_filter","type":"int","description":"Shadow filter type. See [enum ShadowFilter] for possible values."},{"name":"shadow_filter_smooth","type":"float","description":"Smoothing value for shadows. Higher values will result in softer shadows, at the cost of visible streaks that can appear in shadow rendering. [member shadow_filter_smooth] only has an effect if [member shadow_filter] is [constant SHADOW_FILTER_PCF5] or [constant SHADOW_FILTER_PCF13]."},{"name":"shadow_item_cull_mask","type":"int","description":"The shadow mask. Used with [LightOccluder2D] to cast shadows. Only occluders with a matching [member CanvasItem.light_mask] will cast shadows. See also [member range_item_cull_mask], which affects which objects can [i]receive[/i] the light."}],"methods":[{"name":"get_height","signature":"get_height() -> float","description":"Returns the light's height, which is used in 2D normal mapping. See [member PointLight2D.height] and [member DirectionalLight2D.height].","returnType":"float"},{"name":"set_height","signature":"set_height(height: float) -> void","description":"Sets the light's height, which is used in 2D normal mapping. See [member PointLight2D.height] and [member DirectionalLight2D.height].","returnType":"void"}],"signals":[]},"Light3D":{"name":"Light3D","description":"Provides a base class for different kinds of light nodes.","inherits":"VisualInstance3D","properties":[{"name":"distance_fade_begin","type":"float","description":"The distance from the camera at which the light begins to fade away (in 3D units).\n\t\t\t[b]Note:[/b] Only effective for [OmniLight3D] and [SpotLight3D]."},{"name":"distance_fade_enabled","type":"bool","description":"If [code]true[/code], the light will smoothly fade away when far from the active [Camera3D] starting at [member distance_fade_begin]. This acts as a form of level of detail (LOD). The light will fade out over [member distance_fade_begin] + [member distance_fade_length], after which it will be culled and not sent to the shader at all. Use this to reduce the number of active lights in a scene and thus improve performance.\n\t\t\t[b]Note:[/b] Only effective for [OmniLight3D] and [SpotLight3D]."},{"name":"distance_fade_length","type":"float","description":"Distance over which the light and its shadow fades. The light's energy and shadow's opacity is progressively reduced over this distance and is completely invisible at the end.\n\t\t\t[b]Note:[/b] Only effective for [OmniLight3D] and [SpotLight3D]."},{"name":"distance_fade_shadow","type":"float","description":"The distance from the camera at which the light's shadow cuts off (in 3D units). Set this to a value lower than [member distance_fade_begin] + [member distance_fade_length] to further improve performance, as shadow rendering is often more expensive than light rendering itself.\n\t\t\t[b]Note:[/b] Only effective for [OmniLight3D] and [SpotLight3D], and only when [member shadow_enabled] is [code]true[/code]."},{"name":"editor_only","type":"bool","description":"If [code]true[/code], the light only appears in the editor and will not be visible at runtime. If [code]true[/code], the light will never be baked in [LightmapGI] regardless of its [member light_bake_mode]."},{"name":"light_angular_distance","type":"float","description":"The light's angular size in degrees. Increasing this will make shadows softer at greater distances (also called percentage-closer soft shadows, or PCSS). Only available for [DirectionalLight3D]s. For reference, the Sun from the Earth is approximately [code]0.5[/code]. Increasing this value above [code]0.0[/code] for lights with shadows enabled will have a noticeable performance cost due to PCSS.\n\t\t\t[b]Note:[/b] [member light_angular_distance] is not affected by [member Node3D.scale] (the light's scale or its parent's scale).\n\t\t\t[b]Note:[/b] PCSS for directional lights is only supported in the Forward+ rendering method, not Mobile or Compatibility."},{"name":"light_bake_mode","type":"int","description":"The light's bake mode. This will affect the global illumination techniques that have an effect on the light's rendering. See [enum BakeMode].\n\t\t\t[b]Note:[/b] Meshes' global illumination mode will also affect the global illumination rendering. See [member GeometryInstance3D.gi_mode]."},{"name":"light_color","type":"Color","description":"The light's color. An [i]overbright[/i] color can be used to achieve a result equivalent to increasing the light's [member light_energy]."},{"name":"light_cull_mask","type":"int","description":"The light will affect objects in the selected layers."},{"name":"light_energy","type":"float","description":"The light's strength multiplier (this is not a physical unit). For [OmniLight3D] and [SpotLight3D], changing this value will only change the light color's intensity, not the light's radius."},{"name":"light_indirect_energy","type":"float","description":"Secondary multiplier used with indirect light (light bounces). Used with [VoxelGI] and SDFGI (see [member Environment.sdfgi_enabled]).\n\t\t\t[b]Note:[/b] This property is ignored if [member light_energy] is equal to [code]0.0[/code], as the light won't be present at all in the GI shader."},{"name":"light_intensity_lumens","type":"float","description":"Used by positional lights ([OmniLight3D] and [SpotLight3D]) when [member ProjectSettings.rendering/lights_and_shadows/use_physical_light_units] is [code]true[/code]. Sets the intensity of the light source measured in Lumens. Lumens are a measure of luminous flux, which is the total amount of visible light emitted by a light source per unit of time.\n\t\t\tFor [SpotLight3D]s, we assume that the area outside the visible cone is surrounded by a perfect light absorbing material. Accordingly, the apparent brightness of the cone area does not change as the cone increases and decreases in size.\n\t\t\tA typical household lightbulb can range from around 600 lumens to 1,200 lumens, a candle is about 13 lumens, while a streetlight can be approximately 60,000 lumens."},{"name":"light_intensity_lux","type":"float","description":"Used by [DirectionalLight3D]s when [member ProjectSettings.rendering/lights_and_shadows/use_physical_light_units] is [code]true[/code]. Sets the intensity of the light source measured in Lux. Lux is a measure of luminous flux per unit area, it is equal to one lumen per square meter. Lux is the measure of how much light hits a surface at a given time.\n\t\t\tOn a clear sunny day a surface in direct sunlight may be approximately 100,000 lux, a typical room in a home may be approximately 50 lux, while the moonlit ground may be approximately 0.1 lux."},{"name":"light_negative","type":"bool","description":"If [code]true[/code], the light's effect is reversed, darkening areas and casting bright shadows."},{"name":"light_projector","type":"Texture2D","description":"[Texture2D] projected by light. [member shadow_enabled] must be on for the projector to work. Light projectors make the light appear as if it is shining through a colored but transparent object, almost like light shining through stained-glass.\n\t\t\t[b]Note:[/b] Unlike [BaseMaterial3D] whose filter mode can be adjusted on a per-material basis, the filter mode for light projector textures is set globally with [member ProjectSettings.rendering/textures/light_projectors/filter].\n\t\t\t[b]Note:[/b] Light projector textures are only supported in the Forward+ and Mobile rendering methods, not Compatibility."},{"name":"light_size","type":"float","description":"The size of the light in Godot units. Only available for [OmniLight3D]s and [SpotLight3D]s. Increasing this value will make the light fade out slower and shadows appear blurrier (also called percentage-closer soft shadows, or PCSS). This can be used to simulate area lights to an extent. Increasing this value above [code]0.0[/code] for lights with shadows enabled will have a noticeable performance cost due to PCSS.\n\t\t\t[b]Note:[/b] [member light_size] is not affected by [member Node3D.scale] (the light's scale or its parent's scale).\n\t\t\t[b]Note:[/b] PCSS for positional lights is only supported in the Forward+ and Mobile rendering methods, not Compatibility."},{"name":"light_specular","type":"float","description":"The intensity of the specular blob in objects affected by the light. At [code]0[/code], the light becomes a pure diffuse light. When not baking emission, this can be used to avoid unrealistic reflections when placing lights above an emissive surface."},{"name":"light_temperature","type":"float","description":"Sets the color temperature of the light source, measured in Kelvin. This is used to calculate a correlated color temperature which tints the [member light_color].\n\t\t\tThe sun on a cloudy day is approximately 6500 Kelvin, on a clear day it is between 5500 to 6000 Kelvin, and on a clear day at sunrise or sunset it ranges to around 1850 Kelvin."},{"name":"light_volumetric_fog_energy","type":"float","description":"Secondary multiplier multiplied with [member light_energy] then used with the [Environment]'s volumetric fog (if enabled). If set to [code]0.0[/code], computing volumetric fog will be skipped for this light, which can improve performance for large amounts of lights when volumetric fog is enabled.\n\t\t\t[b]Note:[/b] To prevent short-lived dynamic light effects from poorly interacting with volumetric fog, lights used in those effects should have [member light_volumetric_fog_energy] set to [code]0.0[/code] unless [member Environment.volumetric_fog_temporal_reprojection_enabled] is disabled (or unless the reprojection amount is significantly lowered)."},{"name":"shadow_bias","type":"float","description":"Used to adjust shadow appearance. Too small a value results in self-shadowing (\"shadow acne\"), while too large a value causes shadows to separate from casters (\"peter-panning\"). Adjust as needed."},{"name":"shadow_blur","type":"float","description":"Blurs the edges of the shadow. Can be used to hide pixel artifacts in low-resolution shadow maps. A high value can impact performance, make shadows appear grainy and can cause other unwanted artifacts. Try to keep as near default as possible."},{"name":"shadow_caster_mask","type":"int","description":"The light will only cast shadows using objects in the selected layers."},{"name":"shadow_enabled","type":"bool","description":"If [code]true[/code], the light will cast real-time shadows. This has a significant performance cost. Only enable shadow rendering when it makes a noticeable difference in the scene's appearance, and consider using [member distance_fade_enabled] to hide the light when far away from the [Camera3D]."},{"name":"shadow_normal_bias","type":"float","description":"Offsets the lookup into the shadow map by the object's normal. This can be used to reduce self-shadowing artifacts without using [member shadow_bias]. In practice, this value should be tweaked along with [member shadow_bias] to reduce artifacts as much as possible."},{"name":"shadow_opacity","type":"float","description":"The opacity to use when rendering the light's shadow map. Values lower than [code]1.0[/code] make the light appear through shadows. This can be used to fake global illumination at a low performance cost."},{"name":"shadow_reverse_cull_face","type":"bool","description":"If [code]true[/code], reverses the backface culling of the mesh. This can be useful when you have a flat mesh that has a light behind it. If you need to cast a shadow on both sides of the mesh, set the mesh to use double-sided shadows with [constant GeometryInstance3D.SHADOW_CASTING_SETTING_DOUBLE_SIDED]."},{"name":"shadow_transmittance_bias","type":"float","description":""}],"methods":[{"name":"get_correlated_color","signature":"get_correlated_color() -> Color","description":"Returns the  of an idealized blackbody at the given [member light_temperature]. This value is calculated internally based on the [member light_temperature]. This  is multiplied by [member light_color] before being sent to the .","returnType":"Color"},{"name":"get_param","signature":"get_param(param: int) -> float","description":"Returns the value of the specified [enum Light3D.Param] parameter.","returnType":"float"},{"name":"set_param","signature":"set_param(param: int, value: float) -> void","description":"Sets the value of the specified [enum Light3D.Param] parameter.","returnType":"void"}],"signals":[]},"LightOccluder2D":{"name":"LightOccluder2D","description":"Occludes light cast by a Light2D, casting shadows.","inherits":"Node2D","properties":[{"name":"occluder","type":"OccluderPolygon2D","description":"The [OccluderPolygon2D] used to compute the shadow."},{"name":"occluder_light_mask","type":"int","description":"The LightOccluder2D's occluder light mask. The LightOccluder2D will cast shadows only from Light2D(s) that have the same light mask(s)."},{"name":"sdf_collision","type":"bool","description":"If enabled, the occluder will be part of a real-time generated signed distance field that can be used in custom shaders."}],"methods":[],"signals":[]},"LightmapGI":{"name":"LightmapGI","description":"Computes and stores baked lightmaps for fast global illumination.","inherits":"VisualInstance3D","properties":[{"name":"bias","type":"float","description":"The bias to use when computing shadows. Increasing [member bias] can fix shadow acne on the resulting baked lightmap, but can introduce peter-panning (shadows not connecting to their casters). Real-time [Light3D] shadows are not affected by this [member bias] property."},{"name":"bounce_indirect_energy","type":"float","description":"The energy multiplier for each bounce. Higher values will make indirect lighting brighter. A value of [code]1.0[/code] represents physically accurate behavior, but higher values can be used to make indirect lighting propagate more visibly when using a low number of bounces. This can be used to speed up bake times by lowering the number of [member bounces] then increasing [member bounce_indirect_energy].\n\t\t\t[b]Note:[/b] [member bounce_indirect_energy] only has an effect if [member bounces] is set to a value greater than or equal to [code]1[/code]."},{"name":"bounces","type":"int","description":"Number of light bounces that are taken into account during baking. Higher values result in brighter, more realistic lighting, at the cost of longer bake times. If set to [code]0[/code], only environment lighting, direct light and emissive lighting is baked."},{"name":"camera_attributes","type":"CameraAttributes","description":"The [CameraAttributes] resource that specifies exposure levels to bake at. Auto-exposure and non exposure properties will be ignored. Exposure settings should be used to reduce the dynamic range present when baking. If exposure is too high, the [LightmapGI] will have banding artifacts or may have over-exposure artifacts."},{"name":"denoiser_range","type":"int","description":"The distance in pixels from which the denoiser samples. Lower values preserve more details, but may give blotchy results if the lightmap quality is not high enough. Only effective if [member use_denoiser] is [code]true[/code] and [member ProjectSettings.rendering/lightmapping/denoising/denoiser] is set to JNLM."},{"name":"denoiser_strength","type":"float","description":"The strength of denoising step applied to the generated lightmaps. Only effective if [member use_denoiser] is [code]true[/code] and [member ProjectSettings.rendering/lightmapping/denoising/denoiser] is set to JNLM."},{"name":"directional","type":"bool","description":"If [code]true[/code], bakes lightmaps to contain directional information as spherical harmonics. This results in more realistic lighting appearance, especially with normal mapped materials and for lights that have their direct light baked ([member Light3D.light_bake_mode] set to [constant Light3D.BAKE_STATIC] and with [member Light3D.editor_only] set to [code]false[/code]). The directional information is also used to provide rough reflections for static and dynamic objects. This has a small run-time performance cost as the shader has to perform more work to interpret the direction information from the lightmap. Directional lightmaps also take longer to bake and result in larger file sizes.\n\t\t\t[b]Note:[/b] The property's name has no relationship with [DirectionalLight3D]. [member directional] works with all light types."},{"name":"environment_custom_color","type":"Color","description":"The color to use for environment lighting. Only effective if [member environment_mode] is [constant ENVIRONMENT_MODE_CUSTOM_COLOR]."},{"name":"environment_custom_energy","type":"float","description":"The color multiplier to use for environment lighting. Only effective if [member environment_mode] is [constant ENVIRONMENT_MODE_CUSTOM_COLOR]."},{"name":"environment_custom_sky","type":"Sky","description":"The sky to use as a source of environment lighting. Only effective if [member environment_mode] is [constant ENVIRONMENT_MODE_CUSTOM_SKY]."},{"name":"environment_mode","type":"int","description":"The environment mode to use when baking lightmaps."},{"name":"generate_probes_subdiv","type":"int","description":"The level of subdivision to use when automatically generating [LightmapProbe]s for dynamic object lighting. Higher values result in more accurate indirect lighting on dynamic objects, at the cost of longer bake times and larger file sizes.\n\t\t\t[b]Note:[/b] Automatically generated [LightmapProbe]s are not visible as nodes in the Scene tree dock, and cannot be modified this way after they are generated.\n\t\t\t[b]Note:[/b] Regardless of [member generate_probes_subdiv], direct lighting on dynamic objects is always applied using [Light3D] nodes in real-time."},{"name":"interior","type":"bool","description":"If [code]true[/code], ignore environment lighting when baking lightmaps."},{"name":"light_data","type":"LightmapGIData","description":"The [LightmapGIData] associated to this [LightmapGI] node. This resource is automatically created after baking, and is not meant to be created manually."},{"name":"max_texture_size","type":"int","description":"The maximum texture size for the generated texture atlas. Higher values will result in fewer slices being generated, but may not work on all hardware as a result of hardware limitations on texture sizes. Leave [member max_texture_size] at its default value of [code]16384[/code] if unsure."},{"name":"quality","type":"int","description":"The quality preset to use when baking lightmaps. This affects bake times, but output file sizes remain mostly identical across quality levels.\n\t\t\tTo further speed up bake times, decrease [member bounces], disable [member use_denoiser] and/or decrease [member texel_scale].\n\t\t\tTo further increase quality, enable [member supersampling] and/or increase [member texel_scale]."},{"name":"shadowmask_mode","type":"int","description":"The shadowmasking policy to use for directional shadows on static objects that are baked with this [LightmapGI] instance.\n\t\t\tShadowmasking allows [DirectionalLight3D] nodes to cast shadows even outside the range defined by their [member DirectionalLight3D.directional_shadow_max_distance] property. This is done by baking a texture that contains a shadowmap for the directional light, then using this texture according to the current shadowmask mode.\n\t\t\t[b]Note:[/b] The shadowmask texture is only created if [member shadowmask_mode] is not [constant LightmapGIData.SHADOWMASK_MODE_NONE]. To see a difference, you need to bake lightmaps again after switching from [constant LightmapGIData.SHADOWMASK_MODE_NONE] to any other mode."},{"name":"supersampling","type":"bool","description":"If [code]true[/code], lightmaps are baked with the texel scale multiplied with [member supersampling_factor] and downsampled before saving the lightmap (so the effective texel density is identical to having supersampling disabled).\n\t\t\tSupersampling provides increased lightmap quality with less noise, smoother shadows and better shadowing of small-scale features in objects. However, it may result in significantly increased bake times and memory usage while baking lightmaps. Padding is automatically adjusted to avoid increasing light leaking."},{"name":"supersampling_factor","type":"float","description":"The factor by which the texel density is multiplied for supersampling. For best results, use an integer value. While fractional values are allowed, they can result in increased light leaking and a blurry lightmap.\n\t\t\tHigher values may result in better quality, but also increase bake times and memory usage while baking.\n\t\t\tSee [member supersampling] for more information."},{"name":"texel_scale","type":"float","description":"Scales the lightmap texel density of all meshes for the current bake. This is a multiplier that builds upon the existing lightmap texel size defined in each imported 3D scene, along with the per-mesh density multiplier (which is designed to be used when the same mesh is used at different scales). Lower values will result in faster bake times.\n\t\t\tFor example, doubling [member texel_scale] doubles the lightmap texture resolution for all objects [i]on each axis[/i], so it will [i]quadruple[/i] the texel count."},{"name":"use_denoiser","type":"bool","description":"If [code]true[/code], uses a GPU-based denoising algorithm on the generated lightmap. This eliminates most noise within the generated lightmap at the cost of longer bake times. File sizes are generally not impacted significantly by the use of a denoiser, although lossless compression may do a better job at compressing a denoised image."},{"name":"use_texture_for_bounces","type":"bool","description":"If [code]true[/code], a texture with the lighting information will be generated to speed up the generation of indirect lighting at the cost of some accuracy. The geometry might exhibit extra light leak artifacts when using low resolution lightmaps or UVs that stretch the lightmap significantly across surfaces. Leave [member use_texture_for_bounces] at its default value of [code]true[/code] if unsure.\n\t\t\t[b]Note:[/b] [member use_texture_for_bounces] only has an effect if [member bounces] is set to a value greater than or equal to [code]1[/code]."}],"methods":[],"signals":[]},"LightmapGIData":{"name":"LightmapGIData","description":"Contains baked lightmap and dynamic object probe data for .","inherits":"Resource","properties":[{"name":"light_texture","type":"TextureLayered","description":"The lightmap atlas texture generated by the lightmapper."},{"name":"lightmap_textures","type":"TextureLayered[]","description":"The lightmap atlas textures generated by the lightmapper."},{"name":"shadowmask_textures","type":"TextureLayered[]","description":"The shadowmask atlas textures generated by the lightmapper."}],"methods":[{"name":"add_user","signature":"add_user(path: NodePath, uv_scale: Rect2, slice_index: int, sub_instance: int) -> void","description":"Adds an object that is considered baked within this .","returnType":"void"},{"name":"clear_users","signature":"clear_users() -> void","description":"Clear all objects that are considered baked within this .","returnType":"void"},{"name":"get_user_count","signature":"get_user_count() -> int","description":"Returns the number of objects that are considered baked within this .","returnType":"int"},{"name":"get_user_path","signature":"get_user_path(user_idx: int) -> NodePath","description":"Returns the  of the baked object at index [param user_idx].","returnType":"NodePath"},{"name":"is_using_spherical_harmonics","signature":"is_using_spherical_harmonics() -> bool","description":"If true, lightmaps were baked with directional information. See also [member LightmapGI.directional].","returnType":"bool"},{"name":"set_uses_spherical_harmonics","signature":"set_uses_spherical_harmonics(uses_spherical_harmonics: bool) -> void","description":"If [param uses_spherical_harmonics] is true, tells the engine to treat the lightmap data as if it was baked with directional information.\n\t\t\t\tNote: Changing this value on already baked lightmaps will not cause them to be baked again. This means the material appearance will look incorrect until lightmaps are baked again, in which case the value set here is discarded as the entire  resource is replaced by the lightmapper.","returnType":"void"}],"signals":[]},"LightmapProbe":{"name":"LightmapProbe","description":"Represents a single manually placed probe for dynamic object lighting with .","inherits":"Node3D","properties":[],"methods":[],"signals":[]},"Lightmapper":{"name":"Lightmapper","description":"Abstract class extended by lightmappers, for use in .","inherits":"RefCounted","properties":[],"methods":[],"signals":[]},"LightmapperRD":{"name":"LightmapperRD","description":"The built-in GPU-based lightmapper for use with .","inherits":"Lightmapper","properties":[],"methods":[],"signals":[]},"Line2D":{"name":"Line2D","description":"A 2D polyline that can optionally be textured.","inherits":"Node2D","properties":[{"name":"antialiased","type":"bool","description":"If [code]true[/code], the polyline's border will be anti-aliased.\n\t\t\t[b]Note:[/b] [Line2D] is not accelerated by batching when being anti-aliased."},{"name":"begin_cap_mode","type":"int","description":"The style of the beginning of the polyline, if [member closed] is [code]false[/code]. Use [enum LineCapMode] constants."},{"name":"closed","type":"bool","description":"If [code]true[/code] and the polyline has more than 2 points, the last point and the first one will be connected by a segment.\n\t\t\t[b]Note:[/b] The shape of the closing segment is not guaranteed to be seamless if a [member width_curve] is provided.\n\t\t\t[b]Note:[/b] The joint between the closing segment and the first segment is drawn first and it samples the [member gradient] and the [member width_curve] at the beginning. This is an implementation detail that might change in a future version."},{"name":"default_color","type":"Color","description":"The color of the polyline. Will not be used if a gradient is set."},{"name":"end_cap_mode","type":"int","description":"The style of the end of the polyline, if [member closed] is [code]false[/code]. Use [enum LineCapMode] constants."},{"name":"gradient","type":"Gradient","description":"The gradient is drawn through the whole line from start to finish. The [member default_color] will not be used if this property is set."},{"name":"joint_mode","type":"int","description":"The style of the connections between segments of the polyline. Use [enum LineJointMode] constants."},{"name":"points","type":"PackedVector2Array","description":"The points of the polyline, interpreted in local 2D coordinates. Segments are drawn between the adjacent points in this array."},{"name":"round_precision","type":"int","description":"The smoothness used for rounded joints and caps. Higher values result in smoother corners, but are more demanding to render and update."},{"name":"sharp_limit","type":"float","description":"Determines the miter limit of the polyline. Normally, when [member joint_mode] is set to [constant LINE_JOINT_SHARP], sharp angles fall back to using the logic of [constant LINE_JOINT_BEVEL] joints to prevent very long miters. Higher values of this property mean that the fallback to a bevel joint will happen at sharper angles."},{"name":"texture","type":"Texture2D","description":"The texture used for the polyline. Uses [member texture_mode] for drawing style."},{"name":"texture_mode","type":"int","description":"The style to render the [member texture] of the polyline. Use [enum LineTextureMode] constants."},{"name":"width","type":"float","description":"The polyline's width."},{"name":"width_curve","type":"Curve","description":"The polyline's width curve. The width of the polyline over its length will be equivalent to the value of the width curve over its domain. The width curve should be a unit [Curve]."}],"methods":[{"name":"add_point","signature":"add_point(position: Vector2, index: int) -> void","description":"Adds a point with the specified [param position] relative to the polyline's own position. If no [param index] is provided, the new point will be added to the end of the points array.\n\t\t\t\tIf [param index] is given, the new point is inserted before the existing point identified by index [param index]. The indices of the points after the new point get increased by 1. The provided [param index] must not exceed the number of existing points in the polyline. See [method get_point_count].","returnType":"void"},{"name":"clear_points","signature":"clear_points() -> void","description":"Removes all points from the polyline, making it empty.","returnType":"void"},{"name":"get_point_count","signature":"get_point_count() -> int","description":"Returns the number of points in the polyline.","returnType":"int"},{"name":"get_point_position","signature":"get_point_position(index: int) -> Vector2","description":"Returns the position of the point at index [param index].","returnType":"Vector2"},{"name":"remove_point","signature":"remove_point(index: int) -> void","description":"Removes the point at index [param index] from the polyline.","returnType":"void"},{"name":"set_point_position","signature":"set_point_position(index: int, position: Vector2) -> void","description":"Overwrites the position of the point at the given [param index] with the supplied [param position].","returnType":"void"}],"signals":[]},"LineEdit":{"name":"LineEdit","description":"An input field for single-line text.","inherits":"Control","properties":[{"name":"alignment","type":"int","description":"Text alignment as defined in the [enum HorizontalAlignment] enum."},{"name":"caret_blink","type":"bool","description":"If [code]true[/code], makes the caret blink."},{"name":"caret_blink_interval","type":"float","description":"The interval at which the caret blinks (in seconds)."},{"name":"caret_column","type":"int","description":"The caret's column position inside the [LineEdit]. When set, the text may scroll to accommodate it."},{"name":"caret_force_displayed","type":"bool","description":"If [code]true[/code], the [LineEdit] will always show the caret, even if focus is lost."},{"name":"caret_mid_grapheme","type":"bool","description":"Allow moving caret, selecting and removing the individual composite character components.\n\t\t\t[b]Note:[/b] [kbd]Backspace[/kbd] is always removing individual composite character components."},{"name":"clear_button_enabled","type":"bool","description":"If [code]true[/code], the [LineEdit] will show a clear button if [member text] is not empty, which can be used to clear the text quickly."},{"name":"context_menu_enabled","type":"bool","description":"If [code]true[/code], the context menu will appear when right-clicked."},{"name":"deselect_on_focus_loss_enabled","type":"bool","description":"If [code]true[/code], the selected text will be deselected when focus is lost."},{"name":"drag_and_drop_selection_enabled","type":"bool","description":"If [code]true[/code], allow drag and drop of selected text."},{"name":"draw_control_chars","type":"bool","description":"If [code]true[/code], control characters are displayed."},{"name":"editable","type":"bool","description":"If [code]false[/code], existing text cannot be modified and new text cannot be added."},{"name":"emoji_menu_enabled","type":"bool","description":"If [code]true[/code], \"Emoji and Symbols\" menu is enabled."},{"name":"expand_to_text_length","type":"bool","description":"If [code]true[/code], the [LineEdit] width will increase to stay longer than the [member text]. It will [b]not[/b] compress if the [member text] is shortened."},{"name":"flat","type":"bool","description":"If [code]true[/code], the [LineEdit] doesn't display decoration."},{"name":"keep_editing_on_text_submit","type":"bool","description":"If [code]true[/code], the [LineEdit] will not exit edit mode when text is submitted by pressing [code]ui_text_submit[/code] action (by default: [kbd]Enter[/kbd] or [kbd]Kp Enter[/kbd])."},{"name":"language","type":"String","description":"Language code used for line-breaking and text shaping algorithms. If left empty, current locale is used instead."},{"name":"max_length","type":"int","description":"Maximum number of characters that can be entered inside the [LineEdit]. If [code]0[/code], there is no limit.\n\t\t\tWhen a limit is defined, characters that would exceed [member max_length] are truncated. This happens both for existing [member text] contents when setting the max length, or for new text inserted in the [LineEdit], including pasting.\n\t\t\tIf any input text is truncated, the [signal text_change_rejected] signal is emitted with the truncated substring as parameter:\n\t\t\t[codeblocks]\n\t\t\t[gdscript]\n\t\t\ttext = \"Hello world\"\n\t\t\tmax_length = 5\n\t\t\t# `text` becomes \"Hello\".\n\t\t\tmax_length = 10\n\t\t\ttext += \" goodbye\"\n\t\t\t# `text` becomes \"Hello good\".\n\t\t\t# `text_change_rejected` is emitted with \"bye\" as parameter.\n\t\t\t[/gdscript]\n\t\t\t[csharp]\n\t\t\tText = \"Hello world\";\n\t\t\tMaxLength = 5;\n\t\t\t// `Text` becomes \"Hello\".\n\t\t\tMaxLength = 10;\n\t\t\tText += \" goodbye\";\n\t\t\t// `Text` becomes \"Hello good\".\n\t\t\t// `text_change_rejected` is emitted with \"bye\" as parameter.\n\t\t\t[/csharp]\n\t\t\t[/codeblocks]"},{"name":"middle_mouse_paste_enabled","type":"bool","description":"If [code]false[/code], using middle mouse button to paste clipboard will be disabled.\n\t\t\t[b]Note:[/b] This method is only implemented on Linux."},{"name":"placeholder_text","type":"String","description":"Text shown when the [LineEdit] is empty. It is [b]not[/b] the [LineEdit]'s default value (see [member text])."},{"name":"right_icon","type":"Texture2D","description":"Sets the icon that will appear in the right end of the [LineEdit] if there's no [member text], or always, if [member clear_button_enabled] is set to [code]false[/code]."},{"name":"secret","type":"bool","description":"If [code]true[/code], every character is replaced with the secret character (see [member secret_character])."},{"name":"secret_character","type":"String","description":"The character to use to mask secret input. Only a single character can be used as the secret character. If it is longer than one character, only the first one will be used. If it is empty, a space will be used instead."},{"name":"select_all_on_focus","type":"bool","description":"If [code]true[/code], the [LineEdit] will select the whole text when it gains focus."},{"name":"selecting_enabled","type":"bool","description":"If [code]false[/code], it's impossible to select the text using mouse nor keyboard."},{"name":"shortcut_keys_enabled","type":"bool","description":"If [code]true[/code], shortcut keys for context menu items are enabled, even if the context menu is disabled."},{"name":"structured_text_bidi_override","type":"int","description":"Set BiDi algorithm override for the structured text."},{"name":"structured_text_bidi_override_options","type":"Array","description":"Set additional options for BiDi override."},{"name":"text","type":"String","description":"String value of the [LineEdit].\n\t\t\t[b]Note:[/b] Changing text using this property won't emit the [signal text_changed] signal."},{"name":"text_direction","type":"int","description":"Base text writing direction."},{"name":"virtual_keyboard_enabled","type":"bool","description":"If [code]true[/code], the native virtual keyboard is shown when focused on platforms that support it."},{"name":"virtual_keyboard_type","type":"int","description":"Specifies the type of virtual keyboard to show."}],"methods":[{"name":"apply_ime","signature":"apply_ime() -> void","description":"Applies text from the [url=https://en.wikipedia.org/wiki/Input_method]Input Method Editor (IME) and closes the IME if it is open.","returnType":"void"},{"name":"cancel_ime","signature":"cancel_ime() -> void","description":"Closes the [url=https://en.wikipedia.org/wiki/Input_method]Input Method Editor (IME) if it is open. Any text in the IME will be lost.","returnType":"void"},{"name":"clear","signature":"clear() -> void","description":"Erases the 's [member text].","returnType":"void"},{"name":"delete_char_at_caret","signature":"delete_char_at_caret() -> void","description":"Deletes one character at the caret's current position (equivalent to pressing Delete).","returnType":"void"},{"name":"delete_text","signature":"delete_text(from_column: int, to_column: int) -> void","description":"Deletes a section of the [member text] going from position [param from_column] to [param to_column]. Both parameters should be within the text's length.","returnType":"void"},{"name":"deselect","signature":"deselect() -> void","description":"Clears the current selection.","returnType":"void"},{"name":"edit","signature":"edit() -> void","description":"Allows entering edit mode whether the  is focused or not.\n\t\t\t\tSee also [member keep_editing_on_text_submit].","returnType":"void"},{"name":"get_menu","signature":"get_menu() -> PopupMenu","description":"Returns the  of this . By default, this menu is displayed when right-clicking on the .\n\t\t\t\tYou can add custom menu items or remove standard ones. Make sure your IDs don't conflict with the standard ones (see [enum MenuItems]). For example:\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tfunc _ready():\n\t\t\t\t    var menu = get_menu()\n\t\t\t\t    # Remove all items after \"Redo\".\n\t\t\t\t    menu.item_count = menu.get_item_index(MENU_REDO) + 1\n\t\t\t\t    # Add custom items.\n\t\t\t\t    menu.add_separator()\n\t\t\t\t    menu.add_item(\"Insert Date\", MENU_MAX + 1)\n\t\t\t\t    # Connect callback.\n\t\t\t\t    menu.id_pressed.connect(_on_item_pressed)\n\n\t\t\t\tfunc _on_item_pressed(id):\n\t\t\t\t    if id == MENU_MAX + 1:\n\t\t\t\t        insert_text_at_caret(Time.get_date_string_from_system())\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tpublic override void _Ready()\n\t\t\t\t{\n\t\t\t\t    var menu = GetMenu();\n\t\t\t\t    // Remove all items after \"Redo\".\n\t\t\t\t    menu.ItemCount = menu.GetItemIndex(LineEdit.MenuItems.Redo) + 1;\n\t\t\t\t    // Add custom items.\n\t\t\t\t    menu.AddSeparator();\n\t\t\t\t    menu.AddItem(\"Insert Date\", LineEdit.MenuItems.Max + 1);\n\t\t\t\t    // Add event handler.\n\t\t\t\t    menu.IdPressed += OnItemPressed;\n\t\t\t\t}\n\n\t\t\t\tpublic void OnItemPressed(int id)\n\t\t\t\t{\n\t\t\t\t    if (id == LineEdit.MenuItems.Max + 1)\n\t\t\t\t    {\n\t\t\t\t        InsertTextAtCaret(Time.GetDateStringFromSystem());\n\t\t\t\t    }\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tWarning: This is a required internal node, removing and freeing it may cause a crash. If you wish to hide it or any of its children, use their [member Window.visible] property.","returnType":"PopupMenu"},{"name":"get_scroll_offset","signature":"get_scroll_offset() -> float","description":"Returns the scroll offset due to [member caret_column], as a number of characters.","returnType":"float"},{"name":"get_selected_text","signature":"get_selected_text() -> String","description":"Returns the text inside the selection.","returnType":"String"},{"name":"get_selection_from_column","signature":"get_selection_from_column() -> int","description":"Returns the selection begin column.","returnType":"int"},{"name":"get_selection_to_column","signature":"get_selection_to_column() -> int","description":"Returns the selection end column.","returnType":"int"},{"name":"has_ime_text","signature":"has_ime_text() -> bool","description":"Returns true if the user has text in the [url=https://en.wikipedia.org/wiki/Input_method]Input Method Editor (IME).","returnType":"bool"},{"name":"has_redo","signature":"has_redo() -> bool","description":"Returns true if a \"redo\" action is available.","returnType":"bool"},{"name":"has_selection","signature":"has_selection() -> bool","description":"Returns true if the user has selected text.","returnType":"bool"},{"name":"has_undo","signature":"has_undo() -> bool","description":"Returns true if an \"undo\" action is available.","returnType":"bool"},{"name":"insert_text_at_caret","signature":"insert_text_at_caret(text: String) -> void","description":"Inserts [param text] at the caret. If the resulting value is longer than [member max_length], nothing happens.","returnType":"void"},{"name":"is_editing","signature":"is_editing() -> bool","description":"Returns whether the  is being edited.","returnType":"bool"},{"name":"is_menu_visible","signature":"is_menu_visible() -> bool","description":"Returns whether the menu is visible. Use this instead of get_menu().visible to improve performance (so the creation of the menu is avoided).","returnType":"bool"},{"name":"menu_option","signature":"menu_option(option: int) -> void","description":"Executes a given action as defined in the [enum MenuItems] enum.","returnType":"void"},{"name":"select","signature":"select(from: int, to: int) -> void","description":"Selects characters inside  between [param from] and [param to]. By default, [param from] is at the beginning and [param to] at the end.\n\t\t\t\t\n\t\t\t\t\n\t\t\t\ttext = \"Welcome\"\n\t\t\t\tselect() # Will select \"Welcome\".\n\t\t\t\tselect(4) # Will select \"ome\".\n\t\t\t\tselect(2, 5) # Will select \"lco\".\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tText = \"Welcome\";\n\t\t\t\tSelect(); // Will select \"Welcome\".\n\t\t\t\tSelect(4); // Will select \"ome\".\n\t\t\t\tSelect(2, 5); // Will select \"lco\".\n\t\t\t\t\n\t\t\t\t","returnType":"void"},{"name":"select_all","signature":"select_all() -> void","description":"Selects the whole .","returnType":"void"},{"name":"unedit","signature":"unedit() -> void","description":"Allows exiting edit mode while preserving focus.","returnType":"void"}],"signals":[{"name":"editing_toggled","description":"Emitted when the [LineEdit] switches in or out of edit mode."},{"name":"text_change_rejected","description":"Emitted when appending text that overflows the [member max_length]. The appended text is truncated to fit [member max_length], and the part that couldn't fit is passed as the [param rejected_substring] argument."},{"name":"text_changed","description":"Emitted when the text changes."},{"name":"text_submitted","description":"Emitted when the user presses the [code]ui_text_submit[/code] action (by default: [kbd]Enter[/kbd] or [kbd]Kp Enter[/kbd]) while the [LineEdit] has focus."}]},"LinkButton":{"name":"LinkButton","description":"A button that represents a link.","inherits":"BaseButton","properties":[{"name":"language","type":"String","description":"Language code used for line-breaking and text shaping algorithms, if left empty current locale is used instead."},{"name":"structured_text_bidi_override","type":"int","description":"Set BiDi algorithm override for the structured text."},{"name":"structured_text_bidi_override_options","type":"Array","description":"Set additional options for BiDi override."},{"name":"text","type":"String","description":"The button's text that will be displayed inside the button's area."},{"name":"text_direction","type":"int","description":"Base text writing direction."},{"name":"underline","type":"int","description":"The underline mode to use for the text. See [enum LinkButton.UnderlineMode] for the available modes."},{"name":"uri","type":"String","description":"The [url=https://en.wikipedia.org/wiki/Uniform_Resource_Identifier]URI[/url] for this [LinkButton]. If set to a valid URI, pressing the button opens the URI using the operating system's default program for the protocol (via [method OS.shell_open]). HTTP and HTTPS URLs open the default web browser.\n\t\t\t[codeblocks]\n\t\t\t[gdscript]\n\t\t\turi = \"https://godotengine.org\"  # Opens the URL in the default web browser.\n\t\t\turi = \"C:\\SomeFolder\"  # Opens the file explorer at the given path.\n\t\t\turi = \"C:\\SomeImage.png\"  # Opens the given image in the default viewing app.\n\t\t\t[/gdscript]\n\t\t\t[csharp]\n\t\t\tUri = \"https://godotengine.org\"; // Opens the URL in the default web browser.\n\t\t\tUri = \"C:\\SomeFolder\"; // Opens the file explorer at the given path.\n\t\t\tUri = \"C:\\SomeImage.png\"; // Opens the given image in the default viewing app.\n\t\t\t[/csharp]\n\t\t\t[/codeblocks]"}],"methods":[],"signals":[]},"LookAtModifier3D":{"name":"LookAtModifier3D","description":"The  rotates a bone to look at a target.","inherits":"SkeletonModifier3D","properties":[{"name":"bone","type":"int","description":"Index of the [member bone_name] in the parent [Skeleton3D]."},{"name":"bone_name","type":"String","description":"The bone name of the [Skeleton3D] that the modification will operate on."},{"name":"duration","type":"float","description":"The duration of the time-based interpolation. Interpolation is triggered at the following cases:\n\t\t\t- When the target node is changed\n\t\t\t- When an axis is flipped due to angle limitation\n\t\t\t[b]Note:[/b] The flipping occurs when the target is outside the angle limitation and the internally computed secondary rotation axis of the forward vector is flipped. Visually, it occurs when the target is outside the angle limitation and crosses the plane of the [member forward_axis] and [member primary_rotation_axis]."},{"name":"ease_type","type":"int","description":"The ease type of the time-based interpolation. See also [enum Tween.EaseType]."},{"name":"forward_axis","type":"int","description":"The forward axis of the bone. This [SkeletonModifier3D] modifies the bone so that this axis points toward the [member target_node]."},{"name":"origin_bone","type":"int","description":"Index of the [member origin_bone_name] in the parent [Skeleton3D]."},{"name":"origin_bone_name","type":"String","description":"If [member origin_from] is [constant ORIGIN_FROM_SPECIFIC_BONE], the bone global pose position specified for this is used as origin."},{"name":"origin_external_node","type":"NodePath","description":"If [member origin_from] is [constant ORIGIN_FROM_EXTERNAL_NODE], the global position of the [Node3D] specified for this is used as origin."},{"name":"origin_from","type":"int","description":"This value determines from what origin is retrieved for use in the calculation of the forward vector."},{"name":"origin_offset","type":"Vector3","description":"The offset of the bone pose origin. Matching the origins by offset is useful for cases where multiple bones must always face the same direction, such as the eyes.\n\t\t\t[b]Note:[/b] This value indicates the local position of the object set in [member origin_from]."},{"name":"origin_safe_margin","type":"float","description":"If the target passes through too close to the origin than this value, time-based interpolation is used even if the target is within the angular limitations, to prevent the angular velocity from becoming too high."},{"name":"primary_damp_threshold","type":"float","description":"The threshold to start damping for [member primary_limit_angle]. It provides non-linear (b-spline) interpolation, let it feel more resistance the more it rotate to the edge limit. This is useful for simulating the limits of human motion.\n\t\t\tIf [code]1.0[/code], no damping is performed. If [code]0.0[/code], damping is always performed."},{"name":"primary_limit_angle","type":"float","description":"The limit angle of the primary rotation when [member symmetry_limitation] is [code]true[/code]."},{"name":"primary_negative_damp_threshold","type":"float","description":"The threshold to start damping for [member primary_negative_limit_angle]."},{"name":"primary_negative_limit_angle","type":"float","description":"The limit angle of negative side of the primary rotation when [member symmetry_limitation] is [code]false[/code]."},{"name":"primary_positive_damp_threshold","type":"float","description":"The threshold to start damping for [member primary_positive_limit_angle]."},{"name":"primary_positive_limit_angle","type":"float","description":"The limit angle of positive side of the primary rotation when [member symmetry_limitation] is [code]false[/code]."},{"name":"primary_rotation_axis","type":"int","description":"The axis of the first rotation. This [SkeletonModifier3D] works by compositing the rotation by Euler angles to prevent to rotate the [member forward_axis]."},{"name":"secondary_damp_threshold","type":"float","description":"The threshold to start damping for [member secondary_limit_angle]."},{"name":"secondary_limit_angle","type":"float","description":"The limit angle of the secondary rotation when [member symmetry_limitation] is [code]true[/code]."},{"name":"secondary_negative_damp_threshold","type":"float","description":"The threshold to start damping for [member secondary_negative_limit_angle]."},{"name":"secondary_negative_limit_angle","type":"float","description":"The limit angle of negative side of the secondary rotation when [member symmetry_limitation] is [code]false[/code]."},{"name":"secondary_positive_damp_threshold","type":"float","description":"The threshold to start damping for [member secondary_positive_limit_angle]."},{"name":"secondary_positive_limit_angle","type":"float","description":"The limit angle of positive side of the secondary rotation when [member symmetry_limitation] is [code]false[/code]."},{"name":"symmetry_limitation","type":"bool","description":"If [code]true[/code], the limitations are spread from the bone symmetrically.\n\t\t\tIf [code]false[/code], the limitation can be specified separately for each side of the bone rest."},{"name":"target_node","type":"NodePath","description":"The [NodePath] to the node that is the target for the look at modification. This node is what the modification will rotate the bone to."},{"name":"transition_type","type":"int","description":"The transition type of the time-based interpolation. See also [enum Tween.TransitionType]."},{"name":"use_angle_limitation","type":"bool","description":"If [code]true[/code], limits the degree of rotation. This helps prevent the character's neck from rotating 360 degrees.\n\t\t\t[b]Note:[/b] As with [AnimationTree] blending, interpolation is provided that favors [method Skeleton3D.get_bone_rest]. This means that interpolation does not select the shortest path in some cases.\n\t\t\t[b]Note:[/b] Some [member transition_type] may exceed the limitations (e.g. `Back`, `Elastic`, and `Spring`). If interpolation occurs while overshooting the limitations, the result might possibly not respect the bone rest."},{"name":"use_secondary_rotation","type":"bool","description":"If [code]true[/code], provides rotation by two axes."}],"methods":[{"name":"get_interpolation_remaining","signature":"get_interpolation_remaining() -> float","description":"Returns the remaining seconds of the time-based interpolation.","returnType":"float"},{"name":"is_interpolating","signature":"is_interpolating() -> bool","description":"Returns whether the time-based interpolation is running or not. If true, it is equivalent to [method get_interpolation_remaining] being 0.\n\t\t\t\tThis is useful to determine whether a  can be removed safely.","returnType":"bool"},{"name":"is_target_within_limitation","signature":"is_target_within_limitation() -> bool","description":"Returns whether the target is within the angle limitations. It is useful for unsetting the [member target_node] when the target is outside of the angle limitations.\n\t\t\t\tNote: The value is updated after [method SkeletonModifier3D._process_modification]. To retrieve this value correctly, we recommend using the signal [signal SkeletonModifier3D.modification_processed].","returnType":"bool"}],"signals":[]},"MainLoop":{"name":"MainLoop","description":"Abstract base class for the game's main loop.","inherits":"Object","properties":[],"methods":[{"name":"_finalize","signature":"_finalize() -> void","description":"Called before the program exits.","returnType":"void"},{"name":"_initialize","signature":"_initialize() -> void","description":"Called once during initialization.","returnType":"void"},{"name":"_physics_process","signature":"_physics_process(delta: float) -> bool","description":"Called each physics frame with the time since the last physics frame as argument ([param delta], in seconds). Equivalent to [method Node._physics_process].\n\t\t\t\tIf implemented, the method must return a boolean value. true ends the main loop, while false lets it proceed to the next frame.\n\t\t\t\tNote: [param delta] will be larger than expected if running at a framerate lower than [member Engine.physics_ticks_per_second] / [member Engine.max_physics_steps_per_frame] FPS. This is done to avoid \"spiral of death\" scenarios where performance would plummet due to an ever-increasing number of physics steps per frame. This behavior affects both [method _process] and [method _physics_process]. As a result, avoid using [param delta] for time measurements in real-world seconds. Use the  singleton's methods for this purpose instead, such as [method Time.get_ticks_usec].","returnType":"bool"},{"name":"_process","signature":"_process(delta: float) -> bool","description":"Called each process (idle) frame with the time since the last process frame as argument (in seconds). Equivalent to [method Node._process].\n\t\t\t\tIf implemented, the method must return a boolean value. true ends the main loop, while false lets it proceed to the next frame.\n\t\t\t\tNote: [param delta] will be larger than expected if running at a framerate lower than [member Engine.physics_ticks_per_second] / [member Engine.max_physics_steps_per_frame] FPS. This is done to avoid \"spiral of death\" scenarios where performance would plummet due to an ever-increasing number of physics steps per frame. This behavior affects both [method _process] and [method _physics_process]. As a result, avoid using [param delta] for time measurements in real-world seconds. Use the  singleton's methods for this purpose instead, such as [method Time.get_ticks_usec].","returnType":"bool"}],"signals":[{"name":"on_request_permissions_result","description":"Emitted when a user responds to a permission request."}]},"MarginContainer":{"name":"MarginContainer","description":"A container that keeps a margin around its child controls.","inherits":"Container","properties":[],"methods":[],"signals":[]},"Marker2D":{"name":"Marker2D","description":"Generic 2D position hint for editing.","inherits":"Node2D","properties":[{"name":"gizmo_extents","type":"float","description":"Size of the gizmo cross that appears in the editor."}],"methods":[],"signals":[]},"Marker3D":{"name":"Marker3D","description":"Generic 3D position hint for editing.","inherits":"Node3D","properties":[{"name":"gizmo_extents","type":"float","description":"Size of the gizmo cross that appears in the editor."}],"methods":[],"signals":[]},"Marshalls":{"name":"Marshalls","description":"Data transformation (marshaling) and encoding helpers.","inherits":"Object","properties":[],"methods":[{"name":"base64_to_raw","signature":"base64_to_raw(base64_str: String) -> PackedByteArray","description":"Returns a decoded  corresponding to the Base64-encoded string [param base64_str].","returnType":"PackedByteArray"},{"name":"base64_to_utf8","signature":"base64_to_utf8(base64_str: String) -> String","description":"Returns a decoded string corresponding to the Base64-encoded string [param base64_str].","returnType":"String"},{"name":"base64_to_variant","signature":"base64_to_variant(base64_str: String, allow_objects: bool) -> Variant","description":"Returns a decoded  corresponding to the Base64-encoded string [param base64_str]. If [param allow_objects] is true, decoding objects is allowed.\n\t\t\t\tInternally, this uses the same decoding mechanism as the [method @GlobalScope.bytes_to_var] method.\n\t\t\t\tWarning: Deserialized objects can contain code which gets executed. Do not use this option if the serialized object comes from untrusted sources to avoid potential security threats such as remote code execution.","returnType":"Variant"},{"name":"raw_to_base64","signature":"raw_to_base64(array: PackedByteArray) -> String","description":"Returns a Base64-encoded string of a given .","returnType":"String"},{"name":"utf8_to_base64","signature":"utf8_to_base64(utf8_str: String) -> String","description":"Returns a Base64-encoded string of the UTF-8 string [param utf8_str].","returnType":"String"},{"name":"variant_to_base64","signature":"variant_to_base64(variant: Variant, full_objects: bool) -> String","description":"Returns a Base64-encoded string of the  [param variant]. If [param full_objects] is true, encoding objects is allowed (and can potentially include code).\n\t\t\t\tInternally, this uses the same encoding mechanism as the [method @GlobalScope.var_to_bytes] method.","returnType":"String"}],"signals":[]},"Material":{"name":"Material","description":"Virtual base class for applying visual properties to an object, such as color and roughness.","inherits":"Resource","properties":[{"name":"next_pass","type":"Material","description":"Sets the [Material] to be used for the next pass. This renders the object again using a different material.\n\t\t\t[b]Note:[/b] [member next_pass] materials are not necessarily drawn immediately after the source [Material]. Draw order is determined by material properties, [member render_priority], and distance to camera.\n\t\t\t[b]Note:[/b] This only applies to [StandardMaterial3D]s and [ShaderMaterial]s with type \"Spatial\"."},{"name":"render_priority","type":"int","description":"Sets the render priority for objects in 3D scenes. Higher priority objects will be sorted in front of lower priority objects. In other words, all objects with [member render_priority] [code]1[/code] will render before all objects with [member render_priority] [code]0[/code].\n\t\t\t[b]Note:[/b] This only applies to [StandardMaterial3D]s and [ShaderMaterial]s with type \"Spatial\".\n\t\t\t[b]Note:[/b] This will not impact how transparent objects are sorted relative to opaque objects or how dynamic meshes will be sorted relative to other opaque meshes. This is because all transparent objects are drawn after all opaque objects and all dynamic opaque meshes are drawn before other opaque meshes."}],"methods":[{"name":"_can_do_next_pass","signature":"_can_do_next_pass() -> bool","description":"Only exposed for the purpose of overriding. You cannot call this function directly. Used internally to determine if [member next_pass] should be shown in the editor or not.","returnType":"bool"},{"name":"_can_use_render_priority","signature":"_can_use_render_priority() -> bool","description":"Only exposed for the purpose of overriding. You cannot call this function directly. Used internally to determine if [member render_priority] should be shown in the editor or not.","returnType":"bool"},{"name":"_get_shader_mode","signature":"_get_shader_mode() -> int","description":"Only exposed for the purpose of overriding. You cannot call this function directly. Used internally by various editor tools.","returnType":"int"},{"name":"_get_shader_rid","signature":"_get_shader_rid() -> RID","description":"Only exposed for the purpose of overriding. You cannot call this function directly. Used internally by various editor tools. Used to access the RID of the 's .","returnType":"RID"},{"name":"create_placeholder","signature":"create_placeholder() -> Resource","description":"Creates a placeholder version of this resource ().","returnType":"Resource"},{"name":"inspect_native_shader_code","signature":"inspect_native_shader_code() -> void","description":"Only available when running in the editor. Opens a popup that visualizes the generated shader code, including all variants and internal shader code. See also [method Shader.inspect_native_shader_code].","returnType":"void"}],"signals":[]},"MenuBar":{"name":"MenuBar","description":"A horizontal menu bar that creates a menu for each  child.","inherits":"Control","properties":[{"name":"flat","type":"bool","description":"Flat [MenuBar] don't display item decoration."},{"name":"language","type":"String","description":"Language code used for line-breaking and text shaping algorithms, if left empty current locale is used instead."},{"name":"prefer_global_menu","type":"bool","description":"If [code]true[/code], [MenuBar] will use system global menu when supported.\n\t\t\t[b]Note:[/b] If [code]true[/code] and global menu is supported, this node is not displayed, has zero size, and all its child nodes except [PopupMenu]s are inaccessible.\n\t\t\t[b]Note:[/b] This property overrides the value of the [member PopupMenu.prefer_native_menu] property of the child nodes."},{"name":"start_index","type":"int","description":"Position order in the global menu to insert [MenuBar] items at. All menu items in the [MenuBar] are always inserted as a continuous range. Menus with lower [member start_index] are inserted first. Menus with [member start_index] equal to [code]-1[/code] are inserted last."},{"name":"switch_on_hover","type":"bool","description":"If [code]true[/code], when the cursor hovers above menu item, it will close the current [PopupMenu] and open the other one."},{"name":"text_direction","type":"int","description":"Base text writing direction."}],"methods":[{"name":"get_menu_count","signature":"get_menu_count() -> int","description":"Returns number of menu items.","returnType":"int"},{"name":"get_menu_popup","signature":"get_menu_popup(menu: int) -> PopupMenu","description":"Returns  associated with menu item.","returnType":"PopupMenu"},{"name":"get_menu_title","signature":"get_menu_title(menu: int) -> String","description":"Returns menu item title.","returnType":"String"},{"name":"get_menu_tooltip","signature":"get_menu_tooltip(menu: int) -> String","description":"Returns menu item tooltip.","returnType":"String"},{"name":"is_menu_disabled","signature":"is_menu_disabled(menu: int) -> bool","description":"Returns true, if menu item is disabled.","returnType":"bool"},{"name":"is_menu_hidden","signature":"is_menu_hidden(menu: int) -> bool","description":"Returns true, if menu item is hidden.","returnType":"bool"},{"name":"is_native_menu","signature":"is_native_menu() -> bool","description":"Returns true, if system global menu is supported and used by this .","returnType":"bool"},{"name":"set_disable_shortcuts","signature":"set_disable_shortcuts(disabled: bool) -> void","description":"If true, shortcuts are disabled and cannot be used to trigger the button.","returnType":"void"},{"name":"set_menu_disabled","signature":"set_menu_disabled(menu: int, disabled: bool) -> void","description":"If true, menu item is disabled.","returnType":"void"},{"name":"set_menu_hidden","signature":"set_menu_hidden(menu: int, hidden: bool) -> void","description":"If true, menu item is hidden.","returnType":"void"},{"name":"set_menu_title","signature":"set_menu_title(menu: int, title: String) -> void","description":"Sets menu item title.","returnType":"void"},{"name":"set_menu_tooltip","signature":"set_menu_tooltip(menu: int, tooltip: String) -> void","description":"Sets menu item tooltip.","returnType":"void"}],"signals":[]},"MenuButton":{"name":"MenuButton","description":"A button that brings up a  when clicked.","inherits":"Button","properties":[{"name":"item_count","type":"int","description":"The number of items currently in the list."},{"name":"switch_on_hover","type":"bool","description":"If [code]true[/code], when the cursor hovers above another [MenuButton] within the same parent which also has [member switch_on_hover] enabled, it will close the current [MenuButton] and open the other one."}],"methods":[{"name":"get_popup","signature":"get_popup() -> PopupMenu","description":"Returns the  contained in this button.\n\t\t\t\tWarning: This is a required internal node, removing and freeing it may cause a crash. If you wish to hide it or any of its children, use their [member Window.visible] property.","returnType":"PopupMenu"},{"name":"set_disable_shortcuts","signature":"set_disable_shortcuts(disabled: bool) -> void","description":"If true, shortcuts are disabled and cannot be used to trigger the button.","returnType":"void"},{"name":"show_popup","signature":"show_popup() -> void","description":"Adjusts popup position and sizing for the , then shows the . Prefer this over using get_popup().popup().","returnType":"void"}],"signals":[{"name":"about_to_popup","description":"Emitted when the [PopupMenu] of this MenuButton is about to show."}]},"Mesh":{"name":"Mesh","description":"A  that contains vertex array-based geometry.","inherits":"Resource","properties":[{"name":"lightmap_size_hint","type":"Vector2i","description":"Sets a hint to be used for lightmap resolution."}],"methods":[{"name":"_get_aabb","signature":"_get_aabb() -> AABB","description":"Virtual method to override the  for a custom class extending .","returnType":"AABB"},{"name":"_get_blend_shape_count","signature":"_get_blend_shape_count() -> int","description":"Virtual method to override the number of blend shapes for a custom class extending .","returnType":"int"},{"name":"_get_blend_shape_name","signature":"_get_blend_shape_name(index: int) -> StringName","description":"Virtual method to override the retrieval of blend shape names for a custom class extending .","returnType":"StringName"},{"name":"_get_surface_count","signature":"_get_surface_count() -> int","description":"Virtual method to override the surface count for a custom class extending .","returnType":"int"},{"name":"_set_blend_shape_name","signature":"_set_blend_shape_name(index: int, name: StringName) -> void","description":"Virtual method to override the names of blend shapes for a custom class extending .","returnType":"void"},{"name":"_surface_get_array_index_len","signature":"_surface_get_array_index_len(index: int) -> int","description":"Virtual method to override the surface array index length for a custom class extending .","returnType":"int"},{"name":"_surface_get_array_len","signature":"_surface_get_array_len(index: int) -> int","description":"Virtual method to override the surface array length for a custom class extending .","returnType":"int"},{"name":"_surface_get_arrays","signature":"_surface_get_arrays(index: int) -> Array","description":"Virtual method to override the surface arrays for a custom class extending .","returnType":"Array"},{"name":"_surface_get_blend_shape_arrays","signature":"_surface_get_blend_shape_arrays(index: int) -> Array[]","description":"Virtual method to override the blend shape arrays for a custom class extending .","returnType":"Array[]"},{"name":"_surface_get_format","signature":"_surface_get_format(index: int) -> int","description":"Virtual method to override the surface format for a custom class extending .","returnType":"int"},{"name":"_surface_get_lods","signature":"_surface_get_lods(index: int) -> Dictionary","description":"Virtual method to override the surface LODs for a custom class extending .","returnType":"Dictionary"},{"name":"_surface_get_material","signature":"_surface_get_material(index: int) -> Material","description":"Virtual method to override the surface material for a custom class extending .","returnType":"Material"},{"name":"_surface_get_primitive_type","signature":"_surface_get_primitive_type(index: int) -> int","description":"Virtual method to override the surface primitive type for a custom class extending .","returnType":"int"},{"name":"_surface_set_material","signature":"_surface_set_material(index: int, material: Material) -> void","description":"Virtual method to override the setting of a [param material] at the given [param index] for a custom class extending .","returnType":"void"},{"name":"create_convex_shape","signature":"create_convex_shape(clean: bool, simplify: bool) -> ConvexPolygonShape3D","description":"Calculate a  from the mesh.\n\t\t\t\tIf [param clean] is true (default), duplicate and interior vertices are removed automatically. You can set it to false to make the process faster if not needed.\n\t\t\t\tIf [param simplify] is true, the geometry can be further simplified to reduce the number of vertices. Disabled by default.","returnType":"ConvexPolygonShape3D"},{"name":"create_outline","signature":"create_outline(margin: float) -> Mesh","description":"Calculate an outline mesh at a defined offset (margin) from the original mesh.\n\t\t\t\tNote: This method typically returns the vertices in reverse order (e.g. clockwise to counterclockwise).","returnType":"Mesh"},{"name":"create_placeholder","signature":"create_placeholder() -> Resource","description":"Creates a placeholder version of this resource ().","returnType":"Resource"},{"name":"create_trimesh_shape","signature":"create_trimesh_shape() -> ConcavePolygonShape3D","description":"Calculate a  from the mesh.","returnType":"ConcavePolygonShape3D"},{"name":"generate_triangle_mesh","signature":"generate_triangle_mesh() -> TriangleMesh","description":"Generate a  from the mesh. Considers only surfaces using one of these primitive types: [constant PRIMITIVE_TRIANGLES], [constant PRIMITIVE_TRIANGLE_STRIP].","returnType":"TriangleMesh"},{"name":"get_aabb","signature":"get_aabb() -> AABB","description":"Returns the smallest  enclosing this mesh in local space. Not affected by custom_aabb.\n\t\t\t\tNote: This is only implemented for  and .","returnType":"AABB"},{"name":"get_faces","signature":"get_faces() -> PackedVector3Array","description":"Returns all the vertices that make up the faces of the mesh. Each three vertices represent one triangle.","returnType":"PackedVector3Array"},{"name":"get_surface_count","signature":"get_surface_count() -> int","description":"Returns the number of surfaces that the  holds. This is equivalent to [method MeshInstance3D.get_surface_override_material_count].","returnType":"int"},{"name":"surface_get_arrays","signature":"surface_get_arrays(surf_idx: int) -> Array","description":"Returns the arrays for the vertices, normals, UVs, etc. that make up the requested surface (see [method ArrayMesh.add_surface_from_arrays]).","returnType":"Array"},{"name":"surface_get_blend_shape_arrays","signature":"surface_get_blend_shape_arrays(surf_idx: int) -> Array[]","description":"Returns the blend shape arrays for the requested surface.","returnType":"Array[]"},{"name":"surface_get_material","signature":"surface_get_material(surf_idx: int) -> Material","description":"Returns a  in a given surface. Surface is rendered using this material.\n\t\t\t\tNote: This returns the material within the  resource, not the  associated to the 's Surface Material Override properties. To get the  associated to the 's Surface Material Override properties, use [method MeshInstance3D.get_surface_override_material] instead.","returnType":"Material"},{"name":"surface_set_material","signature":"surface_set_material(surf_idx: int, material: Material) -> void","description":"Sets a  for a given surface. Surface will be rendered using this material.\n\t\t\t\tNote: This assigns the material within the  resource, not the  associated to the 's Surface Material Override properties. To set the  associated to the 's Surface Material Override properties, use [method MeshInstance3D.set_surface_override_material] instead.","returnType":"void"}],"signals":[]},"MeshConvexDecompositionSettings":{"name":"MeshConvexDecompositionSettings","description":"Parameters to be used with a  convex decomposition operation.","inherits":"RefCounted","properties":[{"name":"convex_hull_approximation","type":"bool","description":"If [code]true[/code], uses approximation for computing convex hulls."},{"name":"convex_hull_downsampling","type":"int","description":"Controls the precision of the convex-hull generation process during the clipping plane selection stage. Ranges from [code]1[/code] to [code]16[/code]."},{"name":"max_concavity","type":"float","description":"Maximum concavity. Ranges from [code]0.0[/code] to [code]1.0[/code]."},{"name":"max_convex_hulls","type":"int","description":"The maximum number of convex hulls to produce from the merge operation."},{"name":"max_num_vertices_per_convex_hull","type":"int","description":"Controls the maximum number of triangles per convex-hull. Ranges from [code]4[/code] to [code]1024[/code]."},{"name":"min_volume_per_convex_hull","type":"float","description":"Controls the adaptive sampling of the generated convex-hulls. Ranges from [code]0.0[/code] to [code]0.01[/code]."},{"name":"mode","type":"int","description":"Mode for the approximate convex decomposition."},{"name":"normalize_mesh","type":"bool","description":"If [code]true[/code], normalizes the mesh before applying the convex decomposition."},{"name":"plane_downsampling","type":"int","description":"Controls the granularity of the search for the \"best\" clipping plane. Ranges from [code]1[/code] to [code]16[/code]."},{"name":"project_hull_vertices","type":"bool","description":"If [code]true[/code], projects output convex hull vertices onto the original source mesh to increase floating-point accuracy of the results."},{"name":"resolution","type":"int","description":"Maximum number of voxels generated during the voxelization stage."},{"name":"revolution_axes_clipping_bias","type":"float","description":"Controls the bias toward clipping along revolution axes. Ranges from [code]0.0[/code] to [code]1.0[/code]."},{"name":"symmetry_planes_clipping_bias","type":"float","description":"Controls the bias toward clipping along symmetry planes. Ranges from [code]0.0[/code] to [code]1.0[/code]."}],"methods":[],"signals":[]},"MeshDataTool":{"name":"MeshDataTool","description":"Helper tool to access and edit  data.","inherits":"RefCounted","properties":[],"methods":[{"name":"clear","signature":"clear() -> void","description":"Clears all data currently in MeshDataTool.","returnType":"void"},{"name":"commit_to_surface","signature":"commit_to_surface(mesh: ArrayMesh, compression_flags: int) -> int","description":"Adds a new surface to specified  with edited data.","returnType":"int"},{"name":"create_from_surface","signature":"create_from_surface(mesh: ArrayMesh, surface: int) -> int","description":"Uses specified surface of given  to populate data for MeshDataTool.\n\t\t\t\tRequires  with primitive type [constant Mesh.PRIMITIVE_TRIANGLES].","returnType":"int"},{"name":"get_edge_count","signature":"get_edge_count() -> int","description":"Returns the number of edges in this .","returnType":"int"},{"name":"get_edge_faces","signature":"get_edge_faces(idx: int) -> PackedInt32Array","description":"Returns array of faces that touch given edge.","returnType":"PackedInt32Array"},{"name":"get_edge_meta","signature":"get_edge_meta(idx: int) -> Variant","description":"Returns meta information assigned to given edge.","returnType":"Variant"},{"name":"get_edge_vertex","signature":"get_edge_vertex(idx: int, vertex: int) -> int","description":"Returns index of specified vertex connected to given edge.\n\t\t\t\tVertex argument can only be 0 or 1 because edges are comprised of two vertices.","returnType":"int"},{"name":"get_face_count","signature":"get_face_count() -> int","description":"Returns the number of faces in this .","returnType":"int"},{"name":"get_face_edge","signature":"get_face_edge(idx: int, edge: int) -> int","description":"Returns specified edge associated with given face.\n\t\t\t\tEdge argument must be either 0, 1, or 2 because a face only has three edges.","returnType":"int"},{"name":"get_face_meta","signature":"get_face_meta(idx: int) -> Variant","description":"Returns the metadata associated with the given face.","returnType":"Variant"},{"name":"get_face_normal","signature":"get_face_normal(idx: int) -> Vector3","description":"Calculates and returns the face normal of the given face.","returnType":"Vector3"},{"name":"get_face_vertex","signature":"get_face_vertex(idx: int, vertex: int) -> int","description":"Returns the specified vertex index of the given face.\n\t\t\t\t[param vertex] must be either 0, 1, or 2 because faces contain three vertices.\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tvar index = mesh_data_tool.get_face_vertex(0, 1) # Gets the index of the second vertex of the first face.\n\t\t\t\tvar position = mesh_data_tool.get_vertex(index)\n\t\t\t\tvar normal = mesh_data_tool.get_vertex_normal(index)\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tint index = meshDataTool.GetFaceVertex(0, 1); // Gets the index of the second vertex of the first face.\n\t\t\t\tVector3 position = meshDataTool.GetVertex(index);\n\t\t\t\tVector3 normal = meshDataTool.GetVertexNormal(index);\n\t\t\t\t\n\t\t\t\t","returnType":"int"},{"name":"get_format","signature":"get_format() -> int","description":"Returns the 's format as a combination of the [enum Mesh.ArrayFormat] flags. For example, a mesh containing both vertices and normals would return a format of 3 because [constant Mesh.ARRAY_FORMAT_VERTEX] is 1 and [constant Mesh.ARRAY_FORMAT_NORMAL] is 2.","returnType":"int"},{"name":"get_material","signature":"get_material() -> Material","description":"Returns the material assigned to the .","returnType":"Material"},{"name":"get_vertex","signature":"get_vertex(idx: int) -> Vector3","description":"Returns the position of the given vertex.","returnType":"Vector3"},{"name":"get_vertex_bones","signature":"get_vertex_bones(idx: int) -> PackedInt32Array","description":"Returns the bones of the given vertex.","returnType":"PackedInt32Array"},{"name":"get_vertex_color","signature":"get_vertex_color(idx: int) -> Color","description":"Returns the color of the given vertex.","returnType":"Color"},{"name":"get_vertex_count","signature":"get_vertex_count() -> int","description":"Returns the total number of vertices in .","returnType":"int"},{"name":"get_vertex_edges","signature":"get_vertex_edges(idx: int) -> PackedInt32Array","description":"Returns an array of edges that share the given vertex.","returnType":"PackedInt32Array"},{"name":"get_vertex_faces","signature":"get_vertex_faces(idx: int) -> PackedInt32Array","description":"Returns an array of faces that share the given vertex.","returnType":"PackedInt32Array"},{"name":"get_vertex_meta","signature":"get_vertex_meta(idx: int) -> Variant","description":"Returns the metadata associated with the given vertex.","returnType":"Variant"},{"name":"get_vertex_normal","signature":"get_vertex_normal(idx: int) -> Vector3","description":"Returns the normal of the given vertex.","returnType":"Vector3"},{"name":"get_vertex_tangent","signature":"get_vertex_tangent(idx: int) -> Plane","description":"Returns the tangent of the given vertex.","returnType":"Plane"},{"name":"get_vertex_uv","signature":"get_vertex_uv(idx: int) -> Vector2","description":"Returns the UV of the given vertex.","returnType":"Vector2"},{"name":"get_vertex_uv2","signature":"get_vertex_uv2(idx: int) -> Vector2","description":"Returns the UV2 of the given vertex.","returnType":"Vector2"},{"name":"get_vertex_weights","signature":"get_vertex_weights(idx: int) -> PackedFloat32Array","description":"Returns bone weights of the given vertex.","returnType":"PackedFloat32Array"},{"name":"set_edge_meta","signature":"set_edge_meta(idx: int, meta: Variant) -> void","description":"Sets the metadata of the given edge.","returnType":"void"},{"name":"set_face_meta","signature":"set_face_meta(idx: int, meta: Variant) -> void","description":"Sets the metadata of the given face.","returnType":"void"},{"name":"set_material","signature":"set_material(material: Material) -> void","description":"Sets the material to be used by newly-constructed .","returnType":"void"},{"name":"set_vertex","signature":"set_vertex(idx: int, vertex: Vector3) -> void","description":"Sets the position of the given vertex.","returnType":"void"},{"name":"set_vertex_bones","signature":"set_vertex_bones(idx: int, bones: PackedInt32Array) -> void","description":"Sets the bones of the given vertex.","returnType":"void"},{"name":"set_vertex_color","signature":"set_vertex_color(idx: int, color: Color) -> void","description":"Sets the color of the given vertex.","returnType":"void"},{"name":"set_vertex_meta","signature":"set_vertex_meta(idx: int, meta: Variant) -> void","description":"Sets the metadata associated with the given vertex.","returnType":"void"},{"name":"set_vertex_normal","signature":"set_vertex_normal(idx: int, normal: Vector3) -> void","description":"Sets the normal of the given vertex.","returnType":"void"},{"name":"set_vertex_tangent","signature":"set_vertex_tangent(idx: int, tangent: Plane) -> void","description":"Sets the tangent of the given vertex.","returnType":"void"},{"name":"set_vertex_uv","signature":"set_vertex_uv(idx: int, uv: Vector2) -> void","description":"Sets the UV of the given vertex.","returnType":"void"},{"name":"set_vertex_uv2","signature":"set_vertex_uv2(idx: int, uv2: Vector2) -> void","description":"Sets the UV2 of the given vertex.","returnType":"void"},{"name":"set_vertex_weights","signature":"set_vertex_weights(idx: int, weights: PackedFloat32Array) -> void","description":"Sets the bone weights of the given vertex.","returnType":"void"}],"signals":[]},"MeshInstance2D":{"name":"MeshInstance2D","description":"Node used for displaying a  in 2D.","inherits":"Node2D","properties":[{"name":"mesh","type":"Mesh","description":"The [Mesh] that will be drawn by the [MeshInstance2D]."},{"name":"texture","type":"Texture2D","description":"The [Texture2D] that will be used if using the default [CanvasItemMaterial]. Can be accessed as [code]TEXTURE[/code] in CanvasItem shader."}],"methods":[],"signals":[{"name":"texture_changed","description":"Emitted when the [member texture] is changed."}]},"MeshInstance3D":{"name":"MeshInstance3D","description":"Node that instances meshes into a scenario.","inherits":"GeometryInstance3D","properties":[{"name":"mesh","type":"Mesh","description":"The [Mesh] resource for the instance."},{"name":"skeleton","type":"NodePath","description":"[NodePath] to the [Skeleton3D] associated with the instance."},{"name":"skin","type":"Skin","description":"The [Skin] to be used by this instance."}],"methods":[{"name":"bake_mesh_from_current_blend_shape_mix","signature":"bake_mesh_from_current_blend_shape_mix(existing: ArrayMesh) -> ArrayMesh","description":"Takes a snapshot from the current  with all blend shapes applied according to their current weights and bakes it to the provided [param existing] mesh. If no [param existing] mesh is provided a new  is created, baked and returned. Mesh surface materials are not copied.\n\t\t\t\tPerformance:  data needs to be received from the GPU, stalling the  in the process.","returnType":"ArrayMesh"},{"name":"bake_mesh_from_current_skeleton_pose","signature":"bake_mesh_from_current_skeleton_pose(existing: ArrayMesh) -> ArrayMesh","description":"Takes a snapshot of the current animated skeleton pose of the skinned mesh and bakes it to the provided [param existing] mesh. If no [param existing] mesh is provided a new  is created, baked, and returned. Requires a skeleton with a registered skin to work. Blendshapes are ignored. Mesh surface materials are not copied.\n\t\t\t\tPerformance:  data needs to be retrieved from the GPU, stalling the  in the process.","returnType":"ArrayMesh"},{"name":"create_convex_collision","signature":"create_convex_collision(clean: bool, simplify: bool) -> void","description":"This helper creates a  child node with a  collision shape calculated from the mesh geometry. It's mainly used for testing.\n\t\t\t\tIf [param clean] is true (default), duplicate and interior vertices are removed automatically. You can set it to false to make the process faster if not needed.\n\t\t\t\tIf [param simplify] is true, the geometry can be further simplified to reduce the number of vertices. Disabled by default.","returnType":"void"},{"name":"create_debug_tangents","signature":"create_debug_tangents() -> void","description":"This helper creates a  child node with gizmos at every vertex calculated from the mesh geometry. It's mainly used for testing.","returnType":"void"},{"name":"create_multiple_convex_collisions","signature":"create_multiple_convex_collisions(settings: MeshConvexDecompositionSettings) -> void","description":"This helper creates a  child node with multiple  collision shapes calculated from the mesh geometry via convex decomposition. The convex decomposition operation can be controlled with parameters from the optional [param settings].","returnType":"void"},{"name":"create_trimesh_collision","signature":"create_trimesh_collision() -> void","description":"This helper creates a  child node with a  collision shape calculated from the mesh geometry. It's mainly used for testing.","returnType":"void"},{"name":"find_blend_shape_by_name","signature":"find_blend_shape_by_name(name: StringName) -> int","description":"Returns the index of the blend shape with the given [param name]. Returns -1 if no blend shape with this name exists, including when [member mesh] is null.","returnType":"int"},{"name":"get_active_material","signature":"get_active_material(surface: int) -> Material","description":"Returns the  that will be used by the  when drawing. This can return the [member GeometryInstance3D.material_override], the surface override  defined in this , or the surface  defined in the [member mesh]. For example, if [member GeometryInstance3D.material_override] is used, all surfaces will return the override material.\n\t\t\t\tReturns null if no material is active, including when [member mesh] is null.","returnType":"Material"},{"name":"get_blend_shape_count","signature":"get_blend_shape_count() -> int","description":"Returns the number of blend shapes available. Produces an error if [member mesh] is null.","returnType":"int"},{"name":"get_blend_shape_value","signature":"get_blend_shape_value(blend_shape_idx: int) -> float","description":"Returns the value of the blend shape at the given [param blend_shape_idx]. Returns 0.0 and produces an error if [member mesh] is null or doesn't have a blend shape at that index.","returnType":"float"},{"name":"get_skin_reference","signature":"get_skin_reference() -> SkinReference","description":"Returns the internal  containing the skeleton's  attached to this RID. See also [method Resource.get_rid], [method SkinReference.get_skeleton], and [method RenderingServer.instance_attach_skeleton].","returnType":"SkinReference"},{"name":"get_surface_override_material","signature":"get_surface_override_material(surface: int) -> Material","description":"Returns the override  for the specified [param surface] of the  resource. See also [method get_surface_override_material_count].\n\t\t\t\tNote: This returns the  associated to the 's Surface Material Override properties, not the material within the  resource. To get the material within the  resource, use [method Mesh.surface_get_material] instead.","returnType":"Material"},{"name":"get_surface_override_material_count","signature":"get_surface_override_material_count() -> int","description":"Returns the number of surface override materials. This is equivalent to [method Mesh.get_surface_count]. See also [method get_surface_override_material].","returnType":"int"},{"name":"set_blend_shape_value","signature":"set_blend_shape_value(blend_shape_idx: int, value: float) -> void","description":"Sets the value of the blend shape at [param blend_shape_idx] to [param value]. Produces an error if [member mesh] is null or doesn't have a blend shape at that index.","returnType":"void"},{"name":"set_surface_override_material","signature":"set_surface_override_material(surface: int, material: Material) -> void","description":"Sets the override [param material] for the specified [param surface] of the  resource. This material is associated with this  rather than with [member mesh].\n\t\t\t\tNote: This assigns the  associated to the 's Surface Material Override properties, not the material within the  resource. To set the material within the  resource, use [method Mesh.surface_set_material] instead.","returnType":"void"}],"signals":[]},"MeshLibrary":{"name":"MeshLibrary","description":"Library of meshes.","inherits":"Resource","properties":[],"methods":[{"name":"clear","signature":"clear() -> void","description":"Clears the library.","returnType":"void"},{"name":"create_item","signature":"create_item(id: int) -> void","description":"Creates a new item in the library with the given ID.\n\t\t\t\tYou can get an unused ID from [method get_last_unused_item_id].","returnType":"void"},{"name":"find_item_by_name","signature":"find_item_by_name(name: String) -> int","description":"Returns the first item with the given name, or -1 if no item is found.","returnType":"int"},{"name":"get_item_list","signature":"get_item_list() -> PackedInt32Array","description":"Returns the list of item IDs in use.","returnType":"PackedInt32Array"},{"name":"get_item_mesh","signature":"get_item_mesh(id: int) -> Mesh","description":"Returns the item's mesh.","returnType":"Mesh"},{"name":"get_item_mesh_cast_shadow","signature":"get_item_mesh_cast_shadow(id: int) -> int","description":"Returns the item's shadow casting mode. See [enum RenderingServer.ShadowCastingSetting] for possible values.","returnType":"int"},{"name":"get_item_mesh_transform","signature":"get_item_mesh_transform(id: int) -> Transform3D","description":"Returns the transform applied to the item's mesh.","returnType":"Transform3D"},{"name":"get_item_name","signature":"get_item_name(id: int) -> String","description":"Returns the item's name.","returnType":"String"},{"name":"get_item_navigation_layers","signature":"get_item_navigation_layers(id: int) -> int","description":"Returns the item's navigation layers bitmask.","returnType":"int"},{"name":"get_item_navigation_mesh","signature":"get_item_navigation_mesh(id: int) -> NavigationMesh","description":"Returns the item's navigation mesh.","returnType":"NavigationMesh"},{"name":"get_item_navigation_mesh_transform","signature":"get_item_navigation_mesh_transform(id: int) -> Transform3D","description":"Returns the transform applied to the item's navigation mesh.","returnType":"Transform3D"},{"name":"get_item_preview","signature":"get_item_preview(id: int) -> Texture2D","description":"When running in the editor, returns a generated item preview (a 3D rendering in isometric perspective). When used in a running project, returns the manually-defined item preview which can be set using [method set_item_preview]. Returns an empty  if no preview was manually set in a running project.","returnType":"Texture2D"},{"name":"get_item_shapes","signature":"get_item_shapes(id: int) -> Array","description":"Returns an item's collision shapes.\n\t\t\t\tThe array consists of each  followed by its .","returnType":"Array"},{"name":"get_last_unused_item_id","signature":"get_last_unused_item_id() -> int","description":"Gets an unused ID for a new item.","returnType":"int"},{"name":"remove_item","signature":"remove_item(id: int) -> void","description":"Removes the item.","returnType":"void"},{"name":"set_item_mesh","signature":"set_item_mesh(id: int, mesh: Mesh) -> void","description":"Sets the item's mesh.","returnType":"void"},{"name":"set_item_mesh_cast_shadow","signature":"set_item_mesh_cast_shadow(id: int, shadow_casting_setting: int) -> void","description":"Sets the item's shadow casting mode. See [enum RenderingServer.ShadowCastingSetting] for possible values.","returnType":"void"},{"name":"set_item_mesh_transform","signature":"set_item_mesh_transform(id: int, mesh_transform: Transform3D) -> void","description":"Sets the transform to apply to the item's mesh.","returnType":"void"},{"name":"set_item_name","signature":"set_item_name(id: int, name: String) -> void","description":"Sets the item's name.\n\t\t\t\tThis name is shown in the editor. It can also be used to look up the item later using [method find_item_by_name].","returnType":"void"},{"name":"set_item_navigation_layers","signature":"set_item_navigation_layers(id: int, navigation_layers: int) -> void","description":"Sets the item's navigation layers bitmask.","returnType":"void"},{"name":"set_item_navigation_mesh","signature":"set_item_navigation_mesh(id: int, navigation_mesh: NavigationMesh) -> void","description":"Sets the item's navigation mesh.","returnType":"void"},{"name":"set_item_navigation_mesh_transform","signature":"set_item_navigation_mesh_transform(id: int, navigation_mesh: Transform3D) -> void","description":"Sets the transform to apply to the item's navigation mesh.","returnType":"void"},{"name":"set_item_preview","signature":"set_item_preview(id: int, texture: Texture2D) -> void","description":"Sets a texture to use as the item's preview icon in the editor.","returnType":"void"},{"name":"set_item_shapes","signature":"set_item_shapes(id: int, shapes: Array) -> void","description":"Sets an item's collision shapes.\n\t\t\t\tThe array should consist of  objects, each followed by a  that will be applied to it. For shapes that should not have a transform, use [constant Transform3D.IDENTITY].","returnType":"void"}],"signals":[]},"MeshTexture":{"name":"MeshTexture","description":"Simple texture that uses a mesh to draw itself.","inherits":"Texture2D","properties":[{"name":"base_texture","type":"Texture2D","description":"Sets the base texture that the Mesh will use to draw."},{"name":"image_size","type":"Vector2","description":"Sets the size of the image, needed for reference."},{"name":"mesh","type":"Mesh","description":"Sets the mesh used to draw. It must be a mesh using 2D vertices."}],"methods":[],"signals":[]},"MethodTweener":{"name":"MethodTweener","description":"Interpolates an abstract value and supplies it to a method called over time.","inherits":"Tweener","properties":[],"methods":[{"name":"set_delay","signature":"set_delay(delay: float) -> MethodTweener","description":"Sets the time in seconds after which the  will start interpolating. By default there's no delay.","returnType":"MethodTweener"},{"name":"set_ease","signature":"set_ease(ease: int) -> MethodTweener","description":"Sets the type of used easing from [enum Tween.EaseType]. If not set, the default easing is used from the  that contains this Tweener.","returnType":"MethodTweener"},{"name":"set_trans","signature":"set_trans(trans: int) -> MethodTweener","description":"Sets the type of used transition from [enum Tween.TransitionType]. If not set, the default transition is used from the  that contains this Tweener.","returnType":"MethodTweener"}],"signals":[]},"MissingNode":{"name":"MissingNode","description":"An internal editor class intended for keeping the data of unrecognized nodes.","inherits":"Node","properties":[{"name":"original_class","type":"String","description":"The name of the class this node was supposed to be (see [method Object.get_class])."},{"name":"original_scene","type":"String","description":"Returns the path of the scene this node was instance of originally."},{"name":"recording_properties","type":"bool","description":"If [code]true[/code], allows new properties to be set along with existing ones. If [code]false[/code], only existing properties' values can be set, and new properties cannot be added."}],"methods":[],"signals":[]},"MissingResource":{"name":"MissingResource","description":"An internal editor class intended for keeping the data of unrecognized resources.","inherits":"Resource","properties":[{"name":"original_class","type":"String","description":"The name of the class this resource was supposed to be (see [method Object.get_class])."},{"name":"recording_properties","type":"bool","description":"If set to [code]true[/code], allows new properties to be added on top of the existing ones with [method Object.set]."}],"methods":[],"signals":[]},"MovieWriter":{"name":"MovieWriter","description":"Abstract class for non-real-time video recording encoders.","inherits":"Object","properties":[],"methods":[{"name":"_get_audio_mix_rate","signature":"_get_audio_mix_rate() -> int","description":"Called when the audio sample rate used for recording the audio is requested by the engine. The value returned must be specified in Hz. Defaults to 48000 Hz if [method _get_audio_mix_rate] is not overridden.","returnType":"int"},{"name":"_get_audio_speaker_mode","signature":"_get_audio_speaker_mode() -> int","description":"Called when the audio speaker mode used for recording the audio is requested by the engine. This can affect the number of output channels in the resulting audio file/stream. Defaults to [constant AudioServer.SPEAKER_MODE_STEREO] if [method _get_audio_speaker_mode] is not overridden.","returnType":"int"},{"name":"_handles_file","signature":"_handles_file(path: String) -> bool","description":"Called when the engine determines whether this  is able to handle the file at [param path]. Must return true if this  is able to handle the given file path, false otherwise. Typically, [method _handles_file] is overridden as follows to allow the user to record a file at any path with a given file extension:\n\t\t\t\t\n\t\t\t\tfunc _handles_file(path):\n\t\t\t\t    # Allows specifying an output file with a `.mkv` file extension (case-insensitive),\n\t\t\t\t    # either in the Project Settings or with the `--write-movie &lt;path&gt;` command line argument.\n\t\t\t\t    return path.get_extension().to_lower() == \"mkv\"\n\t\t\t\t","returnType":"bool"},{"name":"_write_begin","signature":"_write_begin(movie_size: Vector2i, fps: int, base_path: String) -> int","description":"Called once before the engine starts writing video and audio data. [param movie_size] is the width and height of the video to save. [param fps] is the number of frames per second specified in the project settings or using the --fixed-fps &lt;fps&gt; [url=$DOCS_URL/tutorials/editor/command_line_tutorial.html]command line argument.","returnType":"int"},{"name":"_write_end","signature":"_write_end() -> void","description":"Called when the engine finishes writing. This occurs when the engine quits by pressing the window manager's close button, or when [method SceneTree.quit] is called.\n\t\t\t\tNote: Pressing Ctrl + C on the terminal running the editor/project does not result in [method _write_end] being called.","returnType":"void"},{"name":"_write_frame","signature":"_write_frame(frame_image: Image, audio_frame_block: const void*) -> int","description":"Called at the end of every rendered frame. The [param frame_image] and [param audio_frame_block] function arguments should be written to.","returnType":"int"},{"name":"add_writer","signature":"add_writer(writer: MovieWriter) -> void","description":"Adds a writer to be usable by the engine. The supported file extensions can be set by overriding [method _handles_file].\n\t\t\t\tNote: [method add_writer] must be called early enough in the engine initialization to work, as movie writing is designed to start at the same time as the rest of the engine.","returnType":"void"}],"signals":[]},"MultiMesh":{"name":"MultiMesh","description":"Provides high-performance drawing of a mesh multiple times using GPU instancing.","inherits":"Resource","properties":[{"name":"buffer","type":"PackedFloat32Array","description":""},{"name":"color_array","type":"PackedColorArray","description":"Array containing each [Color] used by all instances of this mesh."},{"name":"custom_aabb","type":"AABB","description":"Custom AABB for this MultiMesh resource. Setting this manually prevents costly runtime AABB recalculations."},{"name":"custom_data_array","type":"PackedColorArray","description":"Array containing each custom data value used by all instances of this mesh, as a [PackedColorArray]."},{"name":"instance_count","type":"int","description":"Number of instances that will get drawn. This clears and (re)sizes the buffers. Setting data format or flags afterwards will have no effect.\n\t\t\tBy default, all instances are drawn but you can limit this with [member visible_instance_count]."},{"name":"mesh","type":"Mesh","description":"[Mesh] resource to be instanced.\n\t\t\tThe looks of the individual instances can be modified using [method set_instance_color] and [method set_instance_custom_data]."},{"name":"physics_interpolation_quality","type":"int","description":"Choose whether to use an interpolation method that favors speed or quality.\n\t\t\tWhen using low physics tick rates (typically below 20) or high rates of object rotation, you may get better results from the high quality setting.\n\t\t\t[b]Note:[/b] Fast quality does not equate to low quality. Except in the special cases mentioned above, the quality should be comparable to high quality."},{"name":"transform_2d_array","type":"PackedVector2Array","description":"Array containing each [Transform2D] value used by all instances of this mesh, as a [PackedVector2Array]. Each transform is divided into 3 [Vector2] values corresponding to the transforms' [code]x[/code], [code]y[/code], and [code]origin[/code]."},{"name":"transform_array","type":"PackedVector3Array","description":"Array containing each [Transform3D] value used by all instances of this mesh, as a [PackedVector3Array]. Each transform is divided into 4 [Vector3] values corresponding to the transforms' [code]x[/code], [code]y[/code], [code]z[/code], and [code]origin[/code]."},{"name":"transform_format","type":"int","description":"Format of transform used to transform mesh, either 2D or 3D."},{"name":"use_colors","type":"bool","description":"If [code]true[/code], the [MultiMesh] will use color data (see [method set_instance_color]). Can only be set when [member instance_count] is [code]0[/code] or less. This means that you need to call this method before setting the instance count, or temporarily reset it to [code]0[/code]."},{"name":"use_custom_data","type":"bool","description":"If [code]true[/code], the [MultiMesh] will use custom data (see [method set_instance_custom_data]). Can only be set when [member instance_count] is [code]0[/code] or less. This means that you need to call this method before setting the instance count, or temporarily reset it to [code]0[/code]."},{"name":"visible_instance_count","type":"int","description":"Limits the number of instances drawn, -1 draws all instances. Changing this does not change the sizes of the buffers."}],"methods":[{"name":"get_aabb","signature":"get_aabb() -> AABB","description":"Returns the visibility axis-aligned bounding box in local space.","returnType":"AABB"},{"name":"get_instance_color","signature":"get_instance_color(instance: int) -> Color","description":"Gets a specific instance's color multiplier.","returnType":"Color"},{"name":"get_instance_custom_data","signature":"get_instance_custom_data(instance: int) -> Color","description":"Returns the custom data that has been set for a specific instance.","returnType":"Color"},{"name":"get_instance_transform","signature":"get_instance_transform(instance: int) -> Transform3D","description":"Returns the  of a specific instance.","returnType":"Transform3D"},{"name":"get_instance_transform_2d","signature":"get_instance_transform_2d(instance: int) -> Transform2D","description":"Returns the  of a specific instance.","returnType":"Transform2D"},{"name":"reset_instance_physics_interpolation","signature":"reset_instance_physics_interpolation(instance: int) -> void","description":"When using physics interpolation, this function allows you to prevent interpolation on an instance in the current physics tick.\n\t\t\t\tThis allows you to move instances instantaneously, and should usually be used when initially placing an instance such as a bullet to prevent graphical glitches.","returnType":"void"},{"name":"set_buffer_interpolated","signature":"set_buffer_interpolated(buffer_curr: PackedFloat32Array, buffer_prev: PackedFloat32Array) -> void","description":"An alternative to setting the [member buffer] property, which can be used with physics interpolation. This method takes two arrays, and can set the data for the current and previous tick in one go. The renderer will automatically interpolate the data at each frame.\n\t\t\t\tThis is useful for situations where the order of instances may change from physics tick to tick, such as particle systems.\n\t\t\t\tWhen the order of instances is coherent, the simpler alternative of setting [member buffer] can still be used with interpolation.","returnType":"void"},{"name":"set_instance_color","signature":"set_instance_color(instance: int, color: Color) -> void","description":"Sets the color of a specific instance by multiplying the mesh's existing vertex colors. This allows for different color tinting per instance.\n\t\t\t\tNote: Each component is stored in 32 bits in the Forward+ and Mobile rendering methods, but is packed into 16 bits in the Compatibility rendering method.\n\t\t\t\tFor the color to take effect, ensure that [member use_colors] is true on the  and [member BaseMaterial3D.vertex_color_use_as_albedo] is true on the material. If you intend to set an absolute color instead of tinting, make sure the material's albedo color is set to pure white (Color(1, 1, 1)).","returnType":"void"},{"name":"set_instance_custom_data","signature":"set_instance_custom_data(instance: int, custom_data: Color) -> void","description":"Sets custom data for a specific instance. [param custom_data] is a  type only to contain 4 floating-point numbers.\n\t\t\t\tNote: Each number is stored in 32 bits in the Forward+ and Mobile rendering methods, but is packed into 16 bits in the Compatibility rendering method.\n\t\t\t\tFor the custom data to be used, ensure that [member use_custom_data] is true.\n\t\t\t\tThis custom instance data has to be manually accessed in your custom shader using INSTANCE_CUSTOM.","returnType":"void"},{"name":"set_instance_transform","signature":"set_instance_transform(instance: int, transform: Transform3D) -> void","description":"Sets the  for a specific instance.","returnType":"void"},{"name":"set_instance_transform_2d","signature":"set_instance_transform_2d(instance: int, transform: Transform2D) -> void","description":"Sets the  for a specific instance.","returnType":"void"}],"signals":[]},"MultiMeshInstance2D":{"name":"MultiMeshInstance2D","description":"Node that instances a  in 2D.","inherits":"Node2D","properties":[{"name":"multimesh","type":"MultiMesh","description":"The [MultiMesh] that will be drawn by the [MultiMeshInstance2D]."},{"name":"texture","type":"Texture2D","description":"The [Texture2D] that will be used if using the default [CanvasItemMaterial]. Can be accessed as [code]TEXTURE[/code] in CanvasItem shader."}],"methods":[],"signals":[{"name":"texture_changed","description":"Emitted when the [member texture] is changed."}]},"MultiMeshInstance3D":{"name":"MultiMeshInstance3D","description":"Node that instances a .","inherits":"GeometryInstance3D","properties":[{"name":"multimesh","type":"MultiMesh","description":"The [MultiMesh] resource that will be used and shared among all instances of the [MultiMeshInstance3D]."}],"methods":[],"signals":[]},"MultiplayerAPI":{"name":"MultiplayerAPI","description":"High-level multiplayer API interface.","inherits":"RefCounted","properties":[{"name":"multiplayer_peer","type":"MultiplayerPeer","description":"The peer object to handle the RPC system (effectively enabling networking when set). Depending on the peer itself, the MultiplayerAPI will become a network server (check with [method is_server]) and will set root node's network mode to authority, or it will become a regular client peer. All child nodes are set to inherit the network mode by default. Handling of networking-related events (connection, disconnection, new clients) is done by connecting to MultiplayerAPI's signals."}],"methods":[{"name":"create_default_interface","signature":"create_default_interface() -> MultiplayerAPI","description":"Returns a new instance of the default MultiplayerAPI.","returnType":"MultiplayerAPI"},{"name":"get_default_interface","signature":"get_default_interface() -> StringName","description":"Returns the default MultiplayerAPI implementation class name. This is usually \"SceneMultiplayer\" when  is available. See [method set_default_interface].","returnType":"StringName"},{"name":"get_peers","signature":"get_peers() -> PackedInt32Array","description":"Returns the peer IDs of all connected peers of this MultiplayerAPI's [member multiplayer_peer].","returnType":"PackedInt32Array"},{"name":"get_remote_sender_id","signature":"get_remote_sender_id() -> int","description":"Returns the sender's peer ID for the RPC currently being executed.\n\t\t\t\tNote: This method returns 0 when called outside of an RPC. As such, the original peer ID may be lost when code execution is delayed (such as with GDScript's await keyword).","returnType":"int"},{"name":"get_unique_id","signature":"get_unique_id() -> int","description":"Returns the unique peer ID of this MultiplayerAPI's [member multiplayer_peer].","returnType":"int"},{"name":"has_multiplayer_peer","signature":"has_multiplayer_peer() -> bool","description":"Returns true if there is a [member multiplayer_peer] set.","returnType":"bool"},{"name":"is_server","signature":"is_server() -> bool","description":"Returns true if this MultiplayerAPI's [member multiplayer_peer] is valid and in server mode (listening for connections).","returnType":"bool"},{"name":"object_configuration_add","signature":"object_configuration_add(object: Object, configuration: Variant) -> int","description":"Notifies the MultiplayerAPI of a new [param configuration] for the given [param object]. This method is used internally by  to configure the root path for this MultiplayerAPI (passing null and a valid  as [param configuration]). This method can be further used by MultiplayerAPI implementations to provide additional features, refer to specific implementation (e.g. ) for details on how they use it.\n\t\t\t\tNote: This method is mostly relevant when extending or overriding the MultiplayerAPI behavior via .","returnType":"int"},{"name":"object_configuration_remove","signature":"object_configuration_remove(object: Object, configuration: Variant) -> int","description":"Notifies the MultiplayerAPI to remove a [param configuration] for the given [param object]. This method is used internally by  to configure the root path for this MultiplayerAPI (passing null and an empty  as [param configuration]). This method can be further used by MultiplayerAPI implementations to provide additional features, refer to specific implementation (e.g. ) for details on how they use it.\n\t\t\t\tNote: This method is mostly relevant when extending or overriding the MultiplayerAPI behavior via .","returnType":"int"},{"name":"poll","signature":"poll() -> int","description":"Method used for polling the MultiplayerAPI. You only need to worry about this if you set [member SceneTree.multiplayer_poll] to false. By default,  will poll its MultiplayerAPI(s) for you.\n\t\t\t\tNote: This method results in RPCs being called, so they will be executed in the same context of this function (e.g. _process, physics, ).","returnType":"int"},{"name":"rpc","signature":"rpc(peer: int, object: Object, method: StringName, arguments: Array) -> int","description":"Sends an RPC to the target [param peer]. The given [param method] will be called on the remote [param object] with the provided [param arguments]. The RPC may also be called locally depending on the implementation and RPC configuration. See [method Node.rpc] and [method Node.rpc_config].\n\t\t\t\tNote: Prefer using [method Node.rpc], [method Node.rpc_id], or my_method.rpc(peer, arg1, arg2, ...) (in GDScript), since they are faster. This method is mostly useful in conjunction with  when extending or replacing the multiplayer capabilities.","returnType":"int"},{"name":"set_default_interface","signature":"set_default_interface(interface_name: StringName) -> void","description":"Sets the default MultiplayerAPI implementation class. This method can be used by modules and extensions to configure which implementation will be used by  when the engine starts.","returnType":"void"}],"signals":[{"name":"connected_to_server","description":"Emitted when this MultiplayerAPI's [member multiplayer_peer] successfully connected to a server. Only emitted on clients."},{"name":"connection_failed","description":"Emitted when this MultiplayerAPI's [member multiplayer_peer] fails to establish a connection to a server. Only emitted on clients."},{"name":"peer_connected","description":"Emitted when this MultiplayerAPI's [member multiplayer_peer] connects with a new peer. ID is the peer ID of the new peer. Clients get notified when other clients connect to the same server. Upon connecting to a server, a client also receives this signal for the server (with ID being 1)."},{"name":"peer_disconnected","description":"Emitted when this MultiplayerAPI's [member multiplayer_peer] disconnects from a peer. Clients get notified when other clients disconnect from the same server."},{"name":"server_disconnected","description":"Emitted when this MultiplayerAPI's [member multiplayer_peer] disconnects from server. Only emitted on clients."}]},"MultiplayerAPIExtension":{"name":"MultiplayerAPIExtension","description":"Base class used for extending the .","inherits":"MultiplayerAPI","properties":[],"methods":[{"name":"_get_multiplayer_peer","signature":"_get_multiplayer_peer() -> MultiplayerPeer","description":"Called when the [member MultiplayerAPI.multiplayer_peer] is retrieved.","returnType":"MultiplayerPeer"},{"name":"_get_peer_ids","signature":"_get_peer_ids() -> PackedInt32Array","description":"Callback for [method MultiplayerAPI.get_peers].","returnType":"PackedInt32Array"},{"name":"_get_remote_sender_id","signature":"_get_remote_sender_id() -> int","description":"Callback for [method MultiplayerAPI.get_remote_sender_id].","returnType":"int"},{"name":"_get_unique_id","signature":"_get_unique_id() -> int","description":"Callback for [method MultiplayerAPI.get_unique_id].","returnType":"int"},{"name":"_object_configuration_add","signature":"_object_configuration_add(object: Object, configuration: Variant) -> int","description":"Callback for [method MultiplayerAPI.object_configuration_add].","returnType":"int"},{"name":"_object_configuration_remove","signature":"_object_configuration_remove(object: Object, configuration: Variant) -> int","description":"Callback for [method MultiplayerAPI.object_configuration_remove].","returnType":"int"},{"name":"_poll","signature":"_poll() -> int","description":"Callback for [method MultiplayerAPI.poll].","returnType":"int"},{"name":"_rpc","signature":"_rpc(peer: int, object: Object, method: StringName, args: Array) -> int","description":"Callback for [method MultiplayerAPI.rpc].","returnType":"int"},{"name":"_set_multiplayer_peer","signature":"_set_multiplayer_peer(multiplayer_peer: MultiplayerPeer) -> void","description":"Called when the [member MultiplayerAPI.multiplayer_peer] is set.","returnType":"void"}],"signals":[]},"MultiplayerPeer":{"name":"MultiplayerPeer","description":"Abstract class for specialized s used by the .","inherits":"PacketPeer","properties":[{"name":"refuse_new_connections","type":"bool","description":"If [code]true[/code], this [MultiplayerPeer] refuses new connections."},{"name":"transfer_channel","type":"int","description":"The channel to use to send packets. Many network APIs such as ENet and WebRTC allow the creation of multiple independent channels which behaves, in a way, like separate connections. This means that reliable data will only block delivery of other packets on that channel, and ordering will only be in respect to the channel the packet is being sent on. Using different channels to send [b]different and independent[/b] state updates is a common way to optimize network usage and decrease latency in fast-paced games.\n\t\t\t[b]Note:[/b] The default channel ([code]0[/code]) actually works as 3 separate channels (one for each [enum TransferMode]) so that [constant TRANSFER_MODE_RELIABLE] and [constant TRANSFER_MODE_UNRELIABLE_ORDERED] does not interact with each other by default. Refer to the specific network API documentation (e.g. ENet or WebRTC) to learn how to set up channels correctly."},{"name":"transfer_mode","type":"int","description":"The manner in which to send packets to the target peer. See [enum TransferMode], and the [method set_target_peer] method."}],"methods":[{"name":"close","signature":"close() -> void","description":"Immediately close the multiplayer peer returning to the state [constant CONNECTION_DISCONNECTED]. Connected peers will be dropped without emitting [signal peer_disconnected].","returnType":"void"},{"name":"disconnect_peer","signature":"disconnect_peer(peer: int, force: bool) -> void","description":"Disconnects the given [param peer] from this host. If [param force] is true the [signal peer_disconnected] signal will not be emitted for this peer.","returnType":"void"},{"name":"generate_unique_id","signature":"generate_unique_id() -> int","description":"Returns a randomly generated integer that can be used as a network unique ID.","returnType":"int"},{"name":"get_connection_status","signature":"get_connection_status() -> int","description":"Returns the current state of the connection. See [enum ConnectionStatus].","returnType":"int"},{"name":"get_packet_channel","signature":"get_packet_channel() -> int","description":"Returns the channel over which the next available packet was received. See [method PacketPeer.get_available_packet_count].","returnType":"int"},{"name":"get_packet_mode","signature":"get_packet_mode() -> int","description":"Returns the transfer mode the remote peer used to send the next available packet. See [method PacketPeer.get_available_packet_count].","returnType":"int"},{"name":"get_packet_peer","signature":"get_packet_peer() -> int","description":"Returns the ID of the  who sent the next available packet. See [method PacketPeer.get_available_packet_count].","returnType":"int"},{"name":"get_unique_id","signature":"get_unique_id() -> int","description":"Returns the ID of this .","returnType":"int"},{"name":"is_server_relay_supported","signature":"is_server_relay_supported() -> bool","description":"Returns true if the server can act as a relay in the current configuration. That is, if the higher level  should notify connected clients of other peers, and implement a relay protocol to allow communication between them.","returnType":"bool"},{"name":"poll","signature":"poll() -> void","description":"Waits up to 1 second to receive a new network event.","returnType":"void"},{"name":"set_target_peer","signature":"set_target_peer(id: int) -> void","description":"Sets the peer to which packets will be sent.\n\t\t\t\tThe [param id] can be one of: [constant TARGET_PEER_BROADCAST] to send to all connected peers, [constant TARGET_PEER_SERVER] to send to the peer acting as server, a valid peer ID to send to that specific peer, a negative peer ID to send to all peers except that one. By default, the target peer is [constant TARGET_PEER_BROADCAST].","returnType":"void"}],"signals":[{"name":"peer_connected","description":"Emitted when a remote peer connects."},{"name":"peer_disconnected","description":"Emitted when a remote peer has disconnected."}]},"MultiplayerPeerExtension":{"name":"MultiplayerPeerExtension","description":"Class that can be inherited to implement custom multiplayer API networking layers via GDExtension.","inherits":"MultiplayerPeer","properties":[],"methods":[{"name":"_close","signature":"_close() -> void","description":"Called when the multiplayer peer should be immediately closed (see [method MultiplayerPeer.close]).","returnType":"void"},{"name":"_disconnect_peer","signature":"_disconnect_peer(p_peer: int, p_force: bool) -> void","description":"Called when the connected [param p_peer] should be forcibly disconnected (see [method MultiplayerPeer.disconnect_peer]).","returnType":"void"},{"name":"_get_available_packet_count","signature":"_get_available_packet_count() -> int","description":"Called when the available packet count is internally requested by the .","returnType":"int"},{"name":"_get_connection_status","signature":"_get_connection_status() -> int","description":"Called when the connection status is requested on the  (see [method MultiplayerPeer.get_connection_status]).","returnType":"int"},{"name":"_get_max_packet_size","signature":"_get_max_packet_size() -> int","description":"Called when the maximum allowed packet size (in bytes) is requested by the .","returnType":"int"},{"name":"_get_packet","signature":"_get_packet(r_buffer: const uint8_t **, r_buffer_size: int32_t*) -> int","description":"Called when a packet needs to be received by the , with [param r_buffer_size] being the size of the binary [param r_buffer] in bytes.","returnType":"int"},{"name":"_get_packet_channel","signature":"_get_packet_channel() -> int","description":"Called to get the channel over which the next available packet was received. See [method MultiplayerPeer.get_packet_channel].","returnType":"int"},{"name":"_get_packet_mode","signature":"_get_packet_mode() -> int","description":"Called to get the transfer mode the remote peer used to send the next available packet. See [method MultiplayerPeer.get_packet_mode].","returnType":"int"},{"name":"_get_packet_peer","signature":"_get_packet_peer() -> int","description":"Called when the ID of the  who sent the most recent packet is requested (see [method MultiplayerPeer.get_packet_peer]).","returnType":"int"},{"name":"_get_packet_script","signature":"_get_packet_script() -> PackedByteArray","description":"Called when a packet needs to be received by the , if [method _get_packet] isn't implemented. Use this when extending this class via GDScript.","returnType":"PackedByteArray"},{"name":"_get_transfer_channel","signature":"_get_transfer_channel() -> int","description":"Called when the transfer channel to use is read on this  (see [member MultiplayerPeer.transfer_channel]).","returnType":"int"},{"name":"_get_transfer_mode","signature":"_get_transfer_mode() -> int","description":"Called when the transfer mode to use is read on this  (see [member MultiplayerPeer.transfer_mode]).","returnType":"int"},{"name":"_get_unique_id","signature":"_get_unique_id() -> int","description":"Called when the unique ID of this  is requested (see [method MultiplayerPeer.get_unique_id]). The value must be between 1 and 2147483647.","returnType":"int"},{"name":"_is_refusing_new_connections","signature":"_is_refusing_new_connections() -> bool","description":"Called when the \"refuse new connections\" status is requested on this  (see [member MultiplayerPeer.refuse_new_connections]).","returnType":"bool"},{"name":"_is_server","signature":"_is_server() -> bool","description":"Called when the \"is server\" status is requested on the . See [method MultiplayerAPI.is_server].","returnType":"bool"},{"name":"_is_server_relay_supported","signature":"_is_server_relay_supported() -> bool","description":"Called to check if the server can act as a relay in the current configuration. See [method MultiplayerPeer.is_server_relay_supported].","returnType":"bool"},{"name":"_poll","signature":"_poll() -> void","description":"Called when the  is polled. See [method MultiplayerAPI.poll].","returnType":"void"},{"name":"_put_packet","signature":"_put_packet(p_buffer: const uint8_t*, p_buffer_size: int) -> int","description":"Called when a packet needs to be sent by the , with [param p_buffer_size] being the size of the binary [param p_buffer] in bytes.","returnType":"int"},{"name":"_put_packet_script","signature":"_put_packet_script(p_buffer: PackedByteArray) -> int","description":"Called when a packet needs to be sent by the , if [method _put_packet] isn't implemented. Use this when extending this class via GDScript.","returnType":"int"},{"name":"_set_refuse_new_connections","signature":"_set_refuse_new_connections(p_enable: bool) -> void","description":"Called when the \"refuse new connections\" status is set on this  (see [member MultiplayerPeer.refuse_new_connections]).","returnType":"void"},{"name":"_set_target_peer","signature":"_set_target_peer(p_peer: int) -> void","description":"Called when the target peer to use is set for this  (see [method MultiplayerPeer.set_target_peer]).","returnType":"void"},{"name":"_set_transfer_channel","signature":"_set_transfer_channel(p_channel: int) -> void","description":"Called when the channel to use is set for this  (see [member MultiplayerPeer.transfer_channel]).","returnType":"void"},{"name":"_set_transfer_mode","signature":"_set_transfer_mode(p_mode: int) -> void","description":"Called when the transfer mode is set on this  (see [member MultiplayerPeer.transfer_mode]).","returnType":"void"}],"signals":[]},"Mutex":{"name":"Mutex","description":"A binary  for synchronization of multiple s.","inherits":"RefCounted","properties":[],"methods":[{"name":"lock","signature":"lock() -> void","description":"Locks this , blocks until it is unlocked by the current owner.\n\t\t\t\tNote: This function returns without blocking if the thread already has ownership of the mutex.","returnType":"void"},{"name":"try_lock","signature":"try_lock() -> bool","description":"Tries locking this , but does not block. Returns true on success, false otherwise.\n\t\t\t\tNote: This function returns true if the thread already has ownership of the mutex.","returnType":"bool"},{"name":"unlock","signature":"unlock() -> void","description":"Unlocks this , leaving it to other threads.\n\t\t\t\tNote: If a thread called [method lock] or [method try_lock] multiple times while already having ownership of the mutex, it must also call [method unlock] the same number of times in order to unlock it correctly.\n\t\t\t\tWarning: Calling [method unlock] more times that [method lock] on a given thread, thus ending up trying to unlock a non-locked mutex, is wrong and may causes crashes or deadlocks.","returnType":"void"}],"signals":[]},"NativeMenu":{"name":"NativeMenu","description":"A server interface for OS native menus.","inherits":"Object","properties":[],"methods":[{"name":"add_check_item","signature":"add_check_item(rid: RID, label: String, callback: Callable, key_callback: Callable, tag: Variant, accelerator: int, index: int) -> int","description":"Adds a new checkable item with text [param label] to the global menu [param rid].\n\t\t\t\tReturns index of the inserted item, it's not guaranteed to be the same as [param index] value.\n\t\t\t\tAn [param accelerator] can optionally be defined, which is a keyboard shortcut that can be pressed to trigger the menu button even if it's not currently open. The [param accelerator] is generally a combination of [enum KeyModifierMask]s and [enum Key]s using bitwise OR such as KEY_MASK_CTRL | KEY_A (Ctrl + A).\n\t\t\t\tNote: The [param callback] and [param key_callback] Callables need to accept exactly one Variant parameter, the parameter passed to the Callables will be the value passed to [param tag].\n\t\t\t\tNote: This method is implemented on macOS and Windows.\n\t\t\t\tNote: On Windows, [param accelerator] and [param key_callback] are ignored.","returnType":"int"},{"name":"add_icon_check_item","signature":"add_icon_check_item(rid: RID, icon: Texture2D, label: String, callback: Callable, key_callback: Callable, tag: Variant, accelerator: int, index: int) -> int","description":"Adds a new checkable item with text [param label] and icon [param icon] to the global menu [param rid].\n\t\t\t\tReturns index of the inserted item, it's not guaranteed to be the same as [param index] value.\n\t\t\t\tAn [param accelerator] can optionally be defined, which is a keyboard shortcut that can be pressed to trigger the menu button even if it's not currently open. The [param accelerator] is generally a combination of [enum KeyModifierMask]s and [enum Key]s using bitwise OR such as KEY_MASK_CTRL | KEY_A (Ctrl + A).\n\t\t\t\tNote: The [param callback] and [param key_callback] Callables need to accept exactly one Variant parameter, the parameter passed to the Callables will be the value passed to [param tag].\n\t\t\t\tNote: This method is implemented on macOS and Windows.\n\t\t\t\tNote: On Windows, [param accelerator] and [param key_callback] are ignored.","returnType":"int"},{"name":"add_icon_item","signature":"add_icon_item(rid: RID, icon: Texture2D, label: String, callback: Callable, key_callback: Callable, tag: Variant, accelerator: int, index: int) -> int","description":"Adds a new item with text [param label] and icon [param icon] to the global menu [param rid].\n\t\t\t\tReturns index of the inserted item, it's not guaranteed to be the same as [param index] value.\n\t\t\t\tAn [param accelerator] can optionally be defined, which is a keyboard shortcut that can be pressed to trigger the menu button even if it's not currently open. The [param accelerator] is generally a combination of [enum KeyModifierMask]s and [enum Key]s using bitwise OR such as KEY_MASK_CTRL | KEY_A (Ctrl + A).\n\t\t\t\tNote: The [param callback] and [param key_callback] Callables need to accept exactly one Variant parameter, the parameter passed to the Callables will be the value passed to [param tag].\n\t\t\t\tNote: This method is implemented on macOS and Windows.\n\t\t\t\tNote: On Windows, [param accelerator] and [param key_callback] are ignored.","returnType":"int"},{"name":"add_icon_radio_check_item","signature":"add_icon_radio_check_item(rid: RID, icon: Texture2D, label: String, callback: Callable, key_callback: Callable, tag: Variant, accelerator: int, index: int) -> int","description":"Adds a new radio-checkable item with text [param label] and icon [param icon] to the global menu [param rid].\n\t\t\t\tReturns index of the inserted item, it's not guaranteed to be the same as [param index] value.\n\t\t\t\tAn [param accelerator] can optionally be defined, which is a keyboard shortcut that can be pressed to trigger the menu button even if it's not currently open. The [param accelerator] is generally a combination of [enum KeyModifierMask]s and [enum Key]s using bitwise OR such as KEY_MASK_CTRL | KEY_A (Ctrl + A).\n\t\t\t\tNote: Radio-checkable items just display a checkmark, but don't have any built-in checking behavior and must be checked/unchecked manually. See [method set_item_checked] for more info on how to control it.\n\t\t\t\tNote: The [param callback] and [param key_callback] Callables need to accept exactly one Variant parameter, the parameter passed to the Callables will be the value passed to [param tag].\n\t\t\t\tNote: This method is implemented on macOS and Windows.\n\t\t\t\tNote: On Windows, [param accelerator] and [param key_callback] are ignored.","returnType":"int"},{"name":"add_item","signature":"add_item(rid: RID, label: String, callback: Callable, key_callback: Callable, tag: Variant, accelerator: int, index: int) -> int","description":"Adds a new item with text [param label] to the global menu [param rid].\n\t\t\t\tReturns index of the inserted item, it's not guaranteed to be the same as [param index] value.\n\t\t\t\tAn [param accelerator] can optionally be defined, which is a keyboard shortcut that can be pressed to trigger the menu button even if it's not currently open. The [param accelerator] is generally a combination of [enum KeyModifierMask]s and [enum Key]s using bitwise OR such as KEY_MASK_CTRL | KEY_A (Ctrl + A).\n\t\t\t\tNote: The [param callback] and [param key_callback] Callables need to accept exactly one Variant parameter, the parameter passed to the Callables will be the value passed to [param tag].\n\t\t\t\tNote: This method is implemented on macOS and Windows.\n\t\t\t\tNote: On Windows, [param accelerator] and [param key_callback] are ignored.","returnType":"int"},{"name":"add_multistate_item","signature":"add_multistate_item(rid: RID, label: String, max_states: int, default_state: int, callback: Callable, key_callback: Callable, tag: Variant, accelerator: int, index: int) -> int","description":"Adds a new item with text [param label] to the global menu [param rid].\n\t\t\t\tContrarily to normal binary items, multistate items can have more than two states, as defined by [param max_states]. Each press or activate of the item will increase the state by one. The default value is defined by [param default_state].\n\t\t\t\tReturns index of the inserted item, it's not guaranteed to be the same as [param index] value.\n\t\t\t\tAn [param accelerator] can optionally be defined, which is a keyboard shortcut that can be pressed to trigger the menu button even if it's not currently open. The [param accelerator] is generally a combination of [enum KeyModifierMask]s and [enum Key]s using bitwise OR such as KEY_MASK_CTRL | KEY_A (Ctrl + A).\n\t\t\t\tNote: By default, there's no indication of the current item state, it should be changed manually.\n\t\t\t\tNote: The [param callback] and [param key_callback] Callables need to accept exactly one Variant parameter, the parameter passed to the Callables will be the value passed to [param tag].\n\t\t\t\tNote: This method is implemented on macOS and Windows.\n\t\t\t\tNote: On Windows, [param accelerator] and [param key_callback] are ignored.","returnType":"int"},{"name":"add_radio_check_item","signature":"add_radio_check_item(rid: RID, label: String, callback: Callable, key_callback: Callable, tag: Variant, accelerator: int, index: int) -> int","description":"Adds a new radio-checkable item with text [param label] to the global menu [param rid].\n\t\t\t\tReturns index of the inserted item, it's not guaranteed to be the same as [param index] value.\n\t\t\t\tAn [param accelerator] can optionally be defined, which is a keyboard shortcut that can be pressed to trigger the menu button even if it's not currently open. The [param accelerator] is generally a combination of [enum KeyModifierMask]s and [enum Key]s using bitwise OR such as KEY_MASK_CTRL | KEY_A (Ctrl + A).\n\t\t\t\tNote: Radio-checkable items just display a checkmark, but don't have any built-in checking behavior and must be checked/unchecked manually. See [method set_item_checked] for more info on how to control it.\n\t\t\t\tNote: The [param callback] and [param key_callback] Callables need to accept exactly one Variant parameter, the parameter passed to the Callables will be the value passed to [param tag].\n\t\t\t\tNote: This method is implemented on macOS and Windows.\n\t\t\t\tNote: On Windows, [param accelerator] and [param key_callback] are ignored.","returnType":"int"},{"name":"add_separator","signature":"add_separator(rid: RID, index: int) -> int","description":"Adds a separator between items to the global menu [param rid]. Separators also occupy an index.\n\t\t\t\tReturns index of the inserted item, it's not guaranteed to be the same as [param index] value.\n\t\t\t\tNote: This method is implemented on macOS and Windows.","returnType":"int"},{"name":"add_submenu_item","signature":"add_submenu_item(rid: RID, label: String, submenu_rid: RID, tag: Variant, index: int) -> int","description":"Adds an item that will act as a submenu of the global menu [param rid]. The [param submenu_rid] argument is the RID of the global menu that will be shown when the item is clicked.\n\t\t\t\tReturns index of the inserted item, it's not guaranteed to be the same as [param index] value.\n\t\t\t\tNote: This method is implemented on macOS and Windows.","returnType":"int"},{"name":"clear","signature":"clear(rid: RID) -> void","description":"Removes all items from the global menu [param rid].\n\t\t\t\tNote: This method is implemented on macOS and Windows.","returnType":"void"},{"name":"create_menu","signature":"create_menu() -> RID","description":"Creates a new global menu object.\n\t\t\t\tNote: This method is implemented on macOS and Windows.","returnType":"RID"},{"name":"find_item_index_with_submenu","signature":"find_item_index_with_submenu(rid: RID, submenu_rid: RID) -> int","description":"Returns the index of the item with the submenu specified by [param submenu_rid]. Indices are automatically assigned to each item by the engine, and cannot be set manually.\n\t\t\t\tNote: This method is implemented on macOS and Windows.","returnType":"int"},{"name":"find_item_index_with_tag","signature":"find_item_index_with_tag(rid: RID, tag: Variant) -> int","description":"Returns the index of the item with the specified [param tag]. Indices are automatically assigned to each item by the engine, and cannot be set manually.\n\t\t\t\tNote: This method is implemented on macOS and Windows.","returnType":"int"},{"name":"find_item_index_with_text","signature":"find_item_index_with_text(rid: RID, text: String) -> int","description":"Returns the index of the item with the specified [param text]. Indices are automatically assigned to each item by the engine, and cannot be set manually.\n\t\t\t\tNote: This method is implemented on macOS and Windows.","returnType":"int"},{"name":"free_menu","signature":"free_menu(rid: RID) -> void","description":"Frees a global menu object created by this .\n\t\t\t\tNote: This method is implemented on macOS and Windows.","returnType":"void"},{"name":"get_item_accelerator","signature":"get_item_accelerator(rid: RID, idx: int) -> int","description":"Returns the accelerator of the item at index [param idx]. Accelerators are special combinations of keys that activate the item, no matter which control is focused.\n\t\t\t\tNote: This method is implemented only on macOS.","returnType":"int"},{"name":"get_item_callback","signature":"get_item_callback(rid: RID, idx: int) -> Callable","description":"Returns the callback of the item at index [param idx].\n\t\t\t\tNote: This method is implemented on macOS and Windows.","returnType":"Callable"},{"name":"get_item_count","signature":"get_item_count(rid: RID) -> int","description":"Returns number of items in the global menu [param rid].\n\t\t\t\tNote: This method is implemented on macOS and Windows.","returnType":"int"},{"name":"get_item_icon","signature":"get_item_icon(rid: RID, idx: int) -> Texture2D","description":"Returns the icon of the item at index [param idx].\n\t\t\t\tNote: This method is implemented on macOS and Windows.","returnType":"Texture2D"},{"name":"get_item_indentation_level","signature":"get_item_indentation_level(rid: RID, idx: int) -> int","description":"Returns the horizontal offset of the item at the given [param idx].\n\t\t\t\tNote: This method is implemented only on macOS.","returnType":"int"},{"name":"get_item_key_callback","signature":"get_item_key_callback(rid: RID, idx: int) -> Callable","description":"Returns the callback of the item accelerator at index [param idx].\n\t\t\t\tNote: This method is implemented only on macOS.","returnType":"Callable"},{"name":"get_item_max_states","signature":"get_item_max_states(rid: RID, idx: int) -> int","description":"Returns number of states of a multistate item. See [method add_multistate_item] for details.\n\t\t\t\tNote: This method is implemented on macOS and Windows.","returnType":"int"},{"name":"get_item_state","signature":"get_item_state(rid: RID, idx: int) -> int","description":"Returns the state of a multistate item. See [method add_multistate_item] for details.\n\t\t\t\tNote: This method is implemented on macOS and Windows.","returnType":"int"},{"name":"get_item_submenu","signature":"get_item_submenu(rid: RID, idx: int) -> RID","description":"Returns the submenu ID of the item at index [param idx]. See [method add_submenu_item] for more info on how to add a submenu.\n\t\t\t\tNote: This method is implemented on macOS and Windows.","returnType":"RID"},{"name":"get_item_tag","signature":"get_item_tag(rid: RID, idx: int) -> Variant","description":"Returns the metadata of the specified item, which might be of any type. You can set it with [method set_item_tag], which provides a simple way of assigning context data to items.\n\t\t\t\tNote: This method is implemented on macOS and Windows.","returnType":"Variant"},{"name":"get_item_text","signature":"get_item_text(rid: RID, idx: int) -> String","description":"Returns the text of the item at index [param idx].\n\t\t\t\tNote: This method is implemented on macOS and Windows.","returnType":"String"},{"name":"get_item_tooltip","signature":"get_item_tooltip(rid: RID, idx: int) -> String","description":"Returns the tooltip associated with the specified index [param idx].\n\t\t\t\tNote: This method is implemented only on macOS.","returnType":"String"},{"name":"get_minimum_width","signature":"get_minimum_width(rid: RID) -> float","description":"Returns global menu minimum width.\n\t\t\t\tNote: This method is implemented only on macOS.","returnType":"float"},{"name":"get_popup_close_callback","signature":"get_popup_close_callback(rid: RID) -> Callable","description":"Returns global menu close callback.\n\t\t\t\tNote: This method is implemented on macOS and Windows.","returnType":"Callable"},{"name":"get_popup_open_callback","signature":"get_popup_open_callback(rid: RID) -> Callable","description":"Returns global menu open callback.\n\t\t\t\tb]Note: This method is implemented only on macOS.","returnType":"Callable"},{"name":"get_size","signature":"get_size(rid: RID) -> Vector2","description":"Returns global menu size.\n\t\t\t\tNote: This method is implemented on macOS and Windows.","returnType":"Vector2"},{"name":"get_system_menu","signature":"get_system_menu(menu_id: int) -> RID","description":"Returns RID of a special system menu.\n\t\t\t\tNote: This method is implemented only on macOS.","returnType":"RID"},{"name":"get_system_menu_name","signature":"get_system_menu_name(menu_id: int) -> String","description":"Returns readable name of a special system menu.\n\t\t\t\tNote: This method is implemented only on macOS.","returnType":"String"},{"name":"has_feature","signature":"has_feature(feature: int) -> bool","description":"Returns true if the specified [param feature] is supported by the current , false otherwise.\n\t\t\t\tNote: This method is implemented on macOS and Windows.","returnType":"bool"},{"name":"has_menu","signature":"has_menu(rid: RID) -> bool","description":"Returns true if [param rid] is valid global menu.\n\t\t\t\tNote: This method is implemented on macOS and Windows.","returnType":"bool"},{"name":"has_system_menu","signature":"has_system_menu(menu_id: int) -> bool","description":"Returns true if a special system menu is supported.\n\t\t\t\tNote: This method is implemented only on macOS.","returnType":"bool"},{"name":"is_item_checkable","signature":"is_item_checkable(rid: RID, idx: int) -> bool","description":"Returns true if the item at index [param idx] is checkable in some way, i.e. if it has a checkbox or radio button.\n\t\t\t\tNote: This method is implemented on macOS and Windows.","returnType":"bool"},{"name":"is_item_checked","signature":"is_item_checked(rid: RID, idx: int) -> bool","description":"Returns true if the item at index [param idx] is checked.\n\t\t\t\tNote: This method is implemented on macOS and Windows.","returnType":"bool"},{"name":"is_item_disabled","signature":"is_item_disabled(rid: RID, idx: int) -> bool","description":"Returns true if the item at index [param idx] is disabled. When it is disabled it can't be selected, or its action invoked.\n\t\t\t\tSee [method set_item_disabled] for more info on how to disable an item.\n\t\t\t\tNote: This method is implemented on macOS and Windows.","returnType":"bool"},{"name":"is_item_hidden","signature":"is_item_hidden(rid: RID, idx: int) -> bool","description":"Returns true if the item at index [param idx] is hidden.\n\t\t\t\tSee [method set_item_hidden] for more info on how to hide an item.\n\t\t\t\tNote: This method is implemented only on macOS.","returnType":"bool"},{"name":"is_item_radio_checkable","signature":"is_item_radio_checkable(rid: RID, idx: int) -> bool","description":"Returns true if the item at index [param idx] has radio button-style checkability.\n\t\t\t\tNote: This is purely cosmetic; you must add the logic for checking/unchecking items in radio groups.\n\t\t\t\tNote: This method is implemented on macOS and Windows.","returnType":"bool"},{"name":"is_opened","signature":"is_opened(rid: RID) -> bool","description":"Returns true if the menu is currently opened.\n\t\t\t\tNote: This method is implemented only on macOS.","returnType":"bool"},{"name":"is_system_menu","signature":"is_system_menu(rid: RID) -> bool","description":"Return true is global menu is a special system menu.\n\t\t\t\tNote: This method is implemented only on macOS.","returnType":"bool"},{"name":"popup","signature":"popup(rid: RID, position: Vector2i) -> void","description":"Shows the global menu at [param position] in the screen coordinates.\n\t\t\t\tNote: This method is implemented on macOS and Windows.","returnType":"void"},{"name":"remove_item","signature":"remove_item(rid: RID, idx: int) -> void","description":"Removes the item at index [param idx] from the global menu [param rid].\n\t\t\t\tNote: The indices of items after the removed item will be shifted by one.\n\t\t\t\tNote: This method is implemented on macOS and Windows.","returnType":"void"},{"name":"set_interface_direction","signature":"set_interface_direction(rid: RID, is_rtl: bool) -> void","description":"Sets the menu text layout direction from right-to-left if [param is_rtl] is true.\n\t\t\t\tNote: This method is implemented on macOS and Windows.","returnType":"void"},{"name":"set_item_accelerator","signature":"set_item_accelerator(rid: RID, idx: int, keycode: int) -> void","description":"Sets the accelerator of the item at index [param idx]. [param keycode] can be a single [enum Key], or a combination of [enum KeyModifierMask]s and [enum Key]s using bitwise OR such as KEY_MASK_CTRL | KEY_A (Ctrl + A).\n\t\t\t\tNote: This method is implemented only on macOS.","returnType":"void"},{"name":"set_item_callback","signature":"set_item_callback(rid: RID, idx: int, callback: Callable) -> void","description":"Sets the callback of the item at index [param idx]. Callback is emitted when an item is pressed.\n\t\t\t\tNote: The [param callback] Callable needs to accept exactly one Variant parameter, the parameter passed to the Callable will be the value passed to the tag parameter when the menu item was created.\n\t\t\t\tNote: This method is implemented on macOS and Windows.","returnType":"void"},{"name":"set_item_checkable","signature":"set_item_checkable(rid: RID, idx: int, checkable: bool) -> void","description":"Sets whether the item at index [param idx] has a checkbox. If false, sets the type of the item to plain text.\n\t\t\t\tNote: This method is implemented on macOS and Windows.","returnType":"void"},{"name":"set_item_checked","signature":"set_item_checked(rid: RID, idx: int, checked: bool) -> void","description":"Sets the checkstate status of the item at index [param idx].\n\t\t\t\tNote: This method is implemented on macOS and Windows.","returnType":"void"},{"name":"set_item_disabled","signature":"set_item_disabled(rid: RID, idx: int, disabled: bool) -> void","description":"Enables/disables the item at index [param idx]. When it is disabled, it can't be selected and its action can't be invoked.\n\t\t\t\tNote: This method is implemented on macOS and Windows.","returnType":"void"},{"name":"set_item_hidden","signature":"set_item_hidden(rid: RID, idx: int, hidden: bool) -> void","description":"Hides/shows the item at index [param idx]. When it is hidden, an item does not appear in a menu and its action cannot be invoked.\n\t\t\t\tNote: This method is implemented only on macOS.","returnType":"void"},{"name":"set_item_hover_callbacks","signature":"set_item_hover_callbacks(rid: RID, idx: int, callback: Callable) -> void","description":"Sets the callback of the item at index [param idx]. The callback is emitted when an item is hovered.\n\t\t\t\tNote: The [param callback] Callable needs to accept exactly one Variant parameter, the parameter passed to the Callable will be the value passed to the tag parameter when the menu item was created.\n\t\t\t\tNote: This method is implemented only on macOS.","returnType":"void"},{"name":"set_item_icon","signature":"set_item_icon(rid: RID, idx: int, icon: Texture2D) -> void","description":"Replaces the  icon of the specified [param idx].\n\t\t\t\tNote: This method is implemented on macOS and Windows.\n\t\t\t\tNote: This method is not supported by macOS Dock menu items.","returnType":"void"},{"name":"set_item_indentation_level","signature":"set_item_indentation_level(rid: RID, idx: int, level: int) -> void","description":"Sets the horizontal offset of the item at the given [param idx].\n\t\t\t\tNote: This method is implemented only on macOS.","returnType":"void"},{"name":"set_item_key_callback","signature":"set_item_key_callback(rid: RID, idx: int, key_callback: Callable) -> void","description":"Sets the callback of the item at index [param idx]. Callback is emitted when its accelerator is activated.\n\t\t\t\tNote: The [param key_callback] Callable needs to accept exactly one Variant parameter, the parameter passed to the Callable will be the value passed to the tag parameter when the menu item was created.\n\t\t\t\tNote: This method is implemented only on macOS.","returnType":"void"},{"name":"set_item_max_states","signature":"set_item_max_states(rid: RID, idx: int, max_states: int) -> void","description":"Sets number of state of a multistate item. See [method add_multistate_item] for details.\n\t\t\t\tNote: This method is implemented on macOS and Windows.","returnType":"void"},{"name":"set_item_radio_checkable","signature":"set_item_radio_checkable(rid: RID, idx: int, checkable: bool) -> void","description":"Sets the type of the item at the specified index [param idx] to radio button. If false, sets the type of the item to plain text.\n\t\t\t\tNote: This is purely cosmetic; you must add the logic for checking/unchecking items in radio groups.\n\t\t\t\tNote: This method is implemented on macOS and Windows.","returnType":"void"},{"name":"set_item_state","signature":"set_item_state(rid: RID, idx: int, state: int) -> void","description":"Sets the state of a multistate item. See [method add_multistate_item] for details.\n\t\t\t\tNote: This method is implemented on macOS and Windows.","returnType":"void"},{"name":"set_item_submenu","signature":"set_item_submenu(rid: RID, idx: int, submenu_rid: RID) -> void","description":"Sets the submenu RID of the item at index [param idx]. The submenu is a global menu that would be shown when the item is clicked.\n\t\t\t\tNote: This method is implemented on macOS and Windows.","returnType":"void"},{"name":"set_item_tag","signature":"set_item_tag(rid: RID, idx: int, tag: Variant) -> void","description":"Sets the metadata of an item, which may be of any type. You can later get it with [method get_item_tag], which provides a simple way of assigning context data to items.\n\t\t\t\tNote: This method is implemented on macOS and Windows.","returnType":"void"},{"name":"set_item_text","signature":"set_item_text(rid: RID, idx: int, text: String) -> void","description":"Sets the text of the item at index [param idx].\n\t\t\t\tNote: This method is implemented on macOS and Windows.","returnType":"void"},{"name":"set_item_tooltip","signature":"set_item_tooltip(rid: RID, idx: int, tooltip: String) -> void","description":"Sets the  tooltip of the item at the specified index [param idx].\n\t\t\t\tNote: This method is implemented only on macOS.","returnType":"void"},{"name":"set_minimum_width","signature":"set_minimum_width(rid: RID, width: float) -> void","description":"Sets the minimum width of the global menu.\n\t\t\t\tNote: This method is implemented only on macOS.","returnType":"void"},{"name":"set_popup_close_callback","signature":"set_popup_close_callback(rid: RID, callback: Callable) -> void","description":"Registers callable to emit when the menu is about to show.\n\t\t\t\tNote: The OS can simulate menu opening to track menu item changes and global shortcuts, in which case the corresponding close callback is not triggered. Use [method is_opened] to check if the menu is currently opened.\n\t\t\t\tNote: This method is implemented on macOS and Windows.","returnType":"void"},{"name":"set_popup_open_callback","signature":"set_popup_open_callback(rid: RID, callback: Callable) -> void","description":"Registers callable to emit after the menu is closed.\n\t\t\t\tNote: This method is implemented only on macOS.","returnType":"void"}],"signals":[]},"NavigationAgent2D":{"name":"NavigationAgent2D","description":"A 2D agent used to pathfind to a position while avoiding obstacles.","inherits":"Node","properties":[{"name":"avoidance_enabled","type":"bool","description":"If [code]true[/code] the agent is registered for an RVO avoidance callback on the [NavigationServer2D]. When [member velocity] is used and the processing is completed a [code]safe_velocity[/code] Vector2 is received with a signal connection to [signal velocity_computed]. Avoidance processing with many registered agents has a significant performance cost and should only be enabled on agents that currently require it."},{"name":"avoidance_layers","type":"int","description":"A bitfield determining the avoidance layers for this NavigationAgent. Other agents with a matching bit on the [member avoidance_mask] will avoid this agent."},{"name":"avoidance_mask","type":"int","description":"A bitfield determining what other avoidance agents and obstacles this NavigationAgent will avoid when a bit matches at least one of their [member avoidance_layers]."},{"name":"avoidance_priority","type":"float","description":"The agent does not adjust the velocity for other agents that would match the [member avoidance_mask] but have a lower [member avoidance_priority]. This in turn makes the other agents with lower priority adjust their velocities even more to avoid collision with this agent."},{"name":"debug_enabled","type":"bool","description":"If [code]true[/code] shows debug visuals for this agent."},{"name":"debug_path_custom_color","type":"Color","description":"If [member debug_use_custom] is [code]true[/code] uses this color for this agent instead of global color."},{"name":"debug_path_custom_line_width","type":"float","description":"If [member debug_use_custom] is [code]true[/code] uses this line width for rendering paths for this agent instead of global line width."},{"name":"debug_path_custom_point_size","type":"float","description":"If [member debug_use_custom] is [code]true[/code] uses this rasterized point size for rendering path points for this agent instead of global point size."},{"name":"debug_use_custom","type":"bool","description":"If [code]true[/code] uses the defined [member debug_path_custom_color] for this agent instead of global color."},{"name":"max_neighbors","type":"int","description":"The maximum number of neighbors for the agent to consider."},{"name":"max_speed","type":"float","description":"The maximum speed that an agent can move."},{"name":"navigation_layers","type":"int","description":"A bitfield determining which navigation layers of navigation regions this agent will use to calculate a path. Changing it during runtime will clear the current navigation path and generate a new one, according to the new navigation layers."},{"name":"neighbor_distance","type":"float","description":"The distance to search for other agents."},{"name":"path_desired_distance","type":"float","description":"The distance threshold before a path point is considered to be reached. This allows agents to not have to hit a path point on the path exactly, but only to reach its general area. If this value is set too high, the NavigationAgent will skip points on the path, which can lead to it leaving the navigation mesh. If this value is set too low, the NavigationAgent will be stuck in a repath loop because it will constantly overshoot the distance to the next point on each physics frame update."},{"name":"path_max_distance","type":"float","description":"The maximum distance the agent is allowed away from the ideal path to the final position. This can happen due to trying to avoid collisions. When the maximum distance is exceeded, it recalculates the ideal path."},{"name":"path_metadata_flags","type":"int","description":"Additional information to return with the navigation path."},{"name":"path_postprocessing","type":"int","description":"The path postprocessing applied to the raw path corridor found by the [member pathfinding_algorithm]."},{"name":"pathfinding_algorithm","type":"int","description":"The pathfinding algorithm used in the path query."},{"name":"radius","type":"float","description":"The radius of the avoidance agent. This is the \"body\" of the avoidance agent and not the avoidance maneuver starting radius (which is controlled by [member neighbor_distance]).\n\t\t\tDoes not affect normal pathfinding. To change an actor's pathfinding radius bake [NavigationMesh] resources with a different [member NavigationMesh.agent_radius] property and use different navigation maps for each actor size."},{"name":"simplify_epsilon","type":"float","description":"The path simplification amount in worlds units."},{"name":"simplify_path","type":"bool","description":"If [code]true[/code] a simplified version of the path will be returned with less critical path points removed. The simplification amount is controlled by [member simplify_epsilon]. The simplification uses a variant of Ramer-Douglas-Peucker algorithm for curve point decimation.\n\t\t\tPath simplification can be helpful to mitigate various path following issues that can arise with certain agent types and script behaviors. E.g. \"steering\" agents or avoidance in \"open fields\"."},{"name":"target_desired_distance","type":"float","description":"The distance threshold before the target is considered to be reached. On reaching the target, [signal target_reached] is emitted and navigation ends (see [method is_navigation_finished] and [signal navigation_finished]).\n\t\t\tYou can make navigation end early by setting this property to a value greater than [member path_desired_distance] (navigation will end before reaching the last waypoint).\n\t\t\tYou can also make navigation end closer to the target than each individual path position by setting this property to a value lower than [member path_desired_distance] (navigation won't immediately end when reaching the last waypoint). However, if the value set is too low, the agent will be stuck in a repath loop because it will constantly overshoot the distance to the target on each physics frame update."},{"name":"target_position","type":"Vector2","description":"If set, a new navigation path from the current agent position to the [member target_position] is requested from the NavigationServer."},{"name":"time_horizon_agents","type":"float","description":"The minimal amount of time for which this agent's velocities, that are computed with the collision avoidance algorithm, are safe with respect to other agents. The larger the number, the sooner the agent will respond to other agents, but less freedom in choosing its velocities. A too high value will slow down agents movement considerably. Must be positive."},{"name":"time_horizon_obstacles","type":"float","description":"The minimal amount of time for which this agent's velocities, that are computed with the collision avoidance algorithm, are safe with respect to static avoidance obstacles. The larger the number, the sooner the agent will respond to static avoidance obstacles, but less freedom in choosing its velocities. A too high value will slow down agents movement considerably. Must be positive."},{"name":"velocity","type":"Vector2","description":"Sets the new wanted velocity for the agent. The avoidance simulation will try to fulfill this velocity if possible but will modify it to avoid collision with other agents and obstacles. When an agent is teleported to a new position, use [method set_velocity_forced] as well to reset the internal simulation velocity."}],"methods":[{"name":"distance_to_target","signature":"distance_to_target() -> float","description":"Returns the distance to the target position, using the agent's global position. The user must set [member target_position] in order for this to be accurate.","returnType":"float"},{"name":"get_avoidance_layer_value","signature":"get_avoidance_layer_value(layer_number: int) -> bool","description":"Returns whether or not the specified layer of the [member avoidance_layers] bitmask is enabled, given a [param layer_number] between 1 and 32.","returnType":"bool"},{"name":"get_avoidance_mask_value","signature":"get_avoidance_mask_value(mask_number: int) -> bool","description":"Returns whether or not the specified mask of the [member avoidance_mask] bitmask is enabled, given a [param mask_number] between 1 and 32.","returnType":"bool"},{"name":"get_current_navigation_path","signature":"get_current_navigation_path() -> PackedVector2Array","description":"Returns this agent's current path from start to finish in global coordinates. The path only updates when the target position is changed or the agent requires a repath. The path array is not intended to be used in direct path movement as the agent has its own internal path logic that would get corrupted by changing the path array manually. Use the intended [method get_next_path_position] once every physics frame to receive the next path point for the agents movement as this function also updates the internal path logic.","returnType":"PackedVector2Array"},{"name":"get_current_navigation_path_index","signature":"get_current_navigation_path_index() -> int","description":"Returns which index the agent is currently on in the navigation path's .","returnType":"int"},{"name":"get_current_navigation_result","signature":"get_current_navigation_result() -> NavigationPathQueryResult2D","description":"Returns the path query result for the path the agent is currently following.","returnType":"NavigationPathQueryResult2D"},{"name":"get_final_position","signature":"get_final_position() -> Vector2","description":"Returns the reachable final position of the current navigation path in global coordinates. This position can change if the agent needs to update the navigation path which makes the agent emit the [signal path_changed] signal.","returnType":"Vector2"},{"name":"get_navigation_layer_value","signature":"get_navigation_layer_value(layer_number: int) -> bool","description":"Returns whether or not the specified layer of the [member navigation_layers] bitmask is enabled, given a [param layer_number] between 1 and 32.","returnType":"bool"},{"name":"get_navigation_map","signature":"get_navigation_map() -> RID","description":"Returns the  of the navigation map for this NavigationAgent node. This function returns always the map set on the NavigationAgent node and not the map of the abstract agent on the NavigationServer. If the agent map is changed directly with the NavigationServer API the NavigationAgent node will not be aware of the map change. Use [method set_navigation_map] to change the navigation map for the NavigationAgent and also update the agent on the NavigationServer.","returnType":"RID"},{"name":"get_next_path_position","signature":"get_next_path_position() -> Vector2","description":"Returns the next position in global coordinates that can be moved to, making sure that there are no static objects in the way. If the agent does not have a navigation path, it will return the position of the agent's parent. The use of this function once every physics frame is required to update the internal path logic of the NavigationAgent.","returnType":"Vector2"},{"name":"get_rid","signature":"get_rid() -> RID","description":"Returns the  of this agent on the .","returnType":"RID"},{"name":"is_navigation_finished","signature":"is_navigation_finished() -> bool","description":"Returns true if the agent's navigation has finished. If the target is reachable, navigation ends when the target is reached. If the target is unreachable, navigation ends when the last waypoint of the path is reached.\n\t\t\t\tNote: While true prefer to stop calling update functions like [method get_next_path_position]. This avoids jittering the standing agent due to calling repeated path updates.","returnType":"bool"},{"name":"is_target_reachable","signature":"is_target_reachable() -> bool","description":"Returns true if [method get_final_position] is within [member target_desired_distance] of the [member target_position].","returnType":"bool"},{"name":"is_target_reached","signature":"is_target_reached() -> bool","description":"Returns true if the agent reached the target, i.e. the agent moved within [member target_desired_distance] of the [member target_position]. It may not always be possible to reach the target but it should always be possible to reach the final position. See [method get_final_position].","returnType":"bool"},{"name":"set_avoidance_layer_value","signature":"set_avoidance_layer_value(layer_number: int, value: bool) -> void","description":"Based on [param value], enables or disables the specified layer in the [member avoidance_layers] bitmask, given a [param layer_number] between 1 and 32.","returnType":"void"},{"name":"set_avoidance_mask_value","signature":"set_avoidance_mask_value(mask_number: int, value: bool) -> void","description":"Based on [param value], enables or disables the specified mask in the [member avoidance_mask] bitmask, given a [param mask_number] between 1 and 32.","returnType":"void"},{"name":"set_navigation_layer_value","signature":"set_navigation_layer_value(layer_number: int, value: bool) -> void","description":"Based on [param value], enables or disables the specified layer in the [member navigation_layers] bitmask, given a [param layer_number] between 1 and 32.","returnType":"void"},{"name":"set_navigation_map","signature":"set_navigation_map(navigation_map: RID) -> void","description":"Sets the  of the navigation map this NavigationAgent node should use and also updates the agent on the NavigationServer.","returnType":"void"},{"name":"set_velocity_forced","signature":"set_velocity_forced(velocity: Vector2) -> void","description":"Replaces the internal velocity in the collision avoidance simulation with [param velocity]. When an agent is teleported to a new position this function should be used in the same frame. If called frequently this function can get agents stuck.","returnType":"void"}],"signals":[{"name":"link_reached","description":"Signals that the agent reached a navigation link. Emitted when the agent moves within [member path_desired_distance] of the next position of the path when that position is a navigation link.\n\t\t\t\tThe details dictionary may contain the following keys depending on the value of [member path_metadata_flags]:\n\t\t\t\t- [code]position[/code]: The start position of the link that was reached.\n\t\t\t\t- [code]type[/code]: Always [constant NavigationPathQueryResult2D.PATH_SEGMENT_TYPE_LINK].\n\t\t\t\t- [code]rid[/code]: The [RID] of the link.\n\t\t\t\t- [code]owner[/code]: The object which manages the link (usually [NavigationLink2D]).\n\t\t\t\t- [code]link_entry_position[/code]: If [code]owner[/code] is available and the owner is a [NavigationLink2D], it will contain the global position of the link's point the agent is entering.\n\t\t\t\t- [code]link_exit_position[/code]: If [code]owner[/code] is available and the owner is a [NavigationLink2D], it will contain the global position of the link's point which the agent is exiting."},{"name":"navigation_finished","description":"Signals that the agent's navigation has finished. If the target is reachable, navigation ends when the target is reached. If the target is unreachable, navigation ends when the last waypoint of the path is reached. This signal is emitted only once per loaded path.\n\t\t\t\tThis signal will be emitted just after [signal target_reached] when the target is reachable."},{"name":"path_changed","description":"Emitted when the agent had to update the loaded path:\n\t\t\t\t- because path was previously empty.\n\t\t\t\t- because navigation map has changed.\n\t\t\t\t- because agent pushed further away from the current path segment than the [member path_max_distance]."},{"name":"target_reached","description":"Signals that the agent reached the target, i.e. the agent moved within [member target_desired_distance] of the [member target_position]. This signal is emitted only once per loaded path.\n\t\t\t\tThis signal will be emitted just before [signal navigation_finished] when the target is reachable.\n\t\t\t\tIt may not always be possible to reach the target but it should always be possible to reach the final position. See [method get_final_position]."},{"name":"velocity_computed","description":"Notifies when the collision avoidance velocity is calculated. Emitted every update as long as [member avoidance_enabled] is [code]true[/code] and the agent has a navigation map."},{"name":"waypoint_reached","description":"Signals that the agent reached a waypoint. Emitted when the agent moves within [member path_desired_distance] of the next position of the path.\n\t\t\t\tThe details dictionary may contain the following keys depending on the value of [member path_metadata_flags]:\n\t\t\t\t- [code]position[/code]: The position of the waypoint that was reached.\n\t\t\t\t- [code]type[/code]: The type of navigation primitive (region or link) that contains this waypoint.\n\t\t\t\t- [code]rid[/code]: The [RID] of the containing navigation primitive (region or link).\n\t\t\t\t- [code]owner[/code]: The object which manages the containing navigation primitive (region or link)."}]},"NavigationAgent3D":{"name":"NavigationAgent3D","description":"A 3D agent used to pathfind to a position while avoiding obstacles.","inherits":"Node","properties":[{"name":"avoidance_enabled","type":"bool","description":"If [code]true[/code] the agent is registered for an RVO avoidance callback on the [NavigationServer3D]. When [member velocity] is set and the processing is completed a [code]safe_velocity[/code] Vector3 is received with a signal connection to [signal velocity_computed]. Avoidance processing with many registered agents has a significant performance cost and should only be enabled on agents that currently require it."},{"name":"avoidance_layers","type":"int","description":"A bitfield determining the avoidance layers for this NavigationAgent. Other agents with a matching bit on the [member avoidance_mask] will avoid this agent."},{"name":"avoidance_mask","type":"int","description":"A bitfield determining what other avoidance agents and obstacles this NavigationAgent will avoid when a bit matches at least one of their [member avoidance_layers]."},{"name":"avoidance_priority","type":"float","description":"The agent does not adjust the velocity for other agents that would match the [member avoidance_mask] but have a lower [member avoidance_priority]. This in turn makes the other agents with lower priority adjust their velocities even more to avoid collision with this agent."},{"name":"debug_enabled","type":"bool","description":"If [code]true[/code] shows debug visuals for this agent."},{"name":"debug_path_custom_color","type":"Color","description":"If [member debug_use_custom] is [code]true[/code] uses this color for this agent instead of global color."},{"name":"debug_path_custom_point_size","type":"float","description":"If [member debug_use_custom] is [code]true[/code] uses this rasterized point size for rendering path points for this agent instead of global point size."},{"name":"debug_use_custom","type":"bool","description":"If [code]true[/code] uses the defined [member debug_path_custom_color] for this agent instead of global color."},{"name":"height","type":"float","description":"The height of the avoidance agent. Agents will ignore other agents or obstacles that are above or below their current position + height in 2D avoidance. Does nothing in 3D avoidance which uses radius spheres alone."},{"name":"keep_y_velocity","type":"bool","description":"If [code]true[/code], and the agent uses 2D avoidance, it will remember the set y-axis velocity and reapply it after the avoidance step. While 2D avoidance has no y-axis and simulates on a flat plane this setting can help to soften the most obvious clipping on uneven 3D geometry."},{"name":"max_neighbors","type":"int","description":"The maximum number of neighbors for the agent to consider."},{"name":"max_speed","type":"float","description":"The maximum speed that an agent can move."},{"name":"navigation_layers","type":"int","description":"A bitfield determining which navigation layers of navigation regions this agent will use to calculate a path. Changing it during runtime will clear the current navigation path and generate a new one, according to the new navigation layers."},{"name":"neighbor_distance","type":"float","description":"The distance to search for other agents."},{"name":"path_desired_distance","type":"float","description":"The distance threshold before a path point is considered to be reached. This allows agents to not have to hit a path point on the path exactly, but only to reach its general area. If this value is set too high, the NavigationAgent will skip points on the path, which can lead to it leaving the navigation mesh. If this value is set too low, the NavigationAgent will be stuck in a repath loop because it will constantly overshoot the distance to the next point on each physics frame update."},{"name":"path_height_offset","type":"float","description":"The height offset is subtracted from the y-axis value of any vector path position for this NavigationAgent. The NavigationAgent height offset does not change or influence the navigation mesh or pathfinding query result. Additional navigation maps that use regions with navigation meshes that the developer baked with appropriate agent radius or height values are required to support different-sized agents."},{"name":"path_max_distance","type":"float","description":"The maximum distance the agent is allowed away from the ideal path to the final position. This can happen due to trying to avoid collisions. When the maximum distance is exceeded, it recalculates the ideal path."},{"name":"path_metadata_flags","type":"int","description":"Additional information to return with the navigation path."},{"name":"path_postprocessing","type":"int","description":"The path postprocessing applied to the raw path corridor found by the [member pathfinding_algorithm]."},{"name":"pathfinding_algorithm","type":"int","description":"The pathfinding algorithm used in the path query."},{"name":"radius","type":"float","description":"The radius of the avoidance agent. This is the \"body\" of the avoidance agent and not the avoidance maneuver starting radius (which is controlled by [member neighbor_distance]).\n\t\t\tDoes not affect normal pathfinding. To change an actor's pathfinding radius bake [NavigationMesh] resources with a different [member NavigationMesh.agent_radius] property and use different navigation maps for each actor size."},{"name":"simplify_epsilon","type":"float","description":"The path simplification amount in worlds units."},{"name":"simplify_path","type":"bool","description":"If [code]true[/code] a simplified version of the path will be returned with less critical path points removed. The simplification amount is controlled by [member simplify_epsilon]. The simplification uses a variant of Ramer-Douglas-Peucker algorithm for curve point decimation.\n\t\t\tPath simplification can be helpful to mitigate various path following issues that can arise with certain agent types and script behaviors. E.g. \"steering\" agents or avoidance in \"open fields\"."},{"name":"target_desired_distance","type":"float","description":"The distance threshold before the target is considered to be reached. On reaching the target, [signal target_reached] is emitted and navigation ends (see [method is_navigation_finished] and [signal navigation_finished]).\n\t\t\tYou can make navigation end early by setting this property to a value greater than [member path_desired_distance] (navigation will end before reaching the last waypoint).\n\t\t\tYou can also make navigation end closer to the target than each individual path position by setting this property to a value lower than [member path_desired_distance] (navigation won't immediately end when reaching the last waypoint). However, if the value set is too low, the agent will be stuck in a repath loop because it will constantly overshoot the distance to the target on each physics frame update."},{"name":"target_position","type":"Vector3","description":"If set, a new navigation path from the current agent position to the [member target_position] is requested from the NavigationServer."},{"name":"time_horizon_agents","type":"float","description":"The minimal amount of time for which this agent's velocities, that are computed with the collision avoidance algorithm, are safe with respect to other agents. The larger the number, the sooner the agent will respond to other agents, but less freedom in choosing its velocities. A too high value will slow down agents movement considerably. Must be positive."},{"name":"time_horizon_obstacles","type":"float","description":"The minimal amount of time for which this agent's velocities, that are computed with the collision avoidance algorithm, are safe with respect to static avoidance obstacles. The larger the number, the sooner the agent will respond to static avoidance obstacles, but less freedom in choosing its velocities. A too high value will slow down agents movement considerably. Must be positive."},{"name":"use_3d_avoidance","type":"bool","description":"If [code]true[/code], the agent calculates avoidance velocities in 3D omnidirectionally, e.g. for games that take place in air, underwater or space. Agents using 3D avoidance only avoid other agents using 3D avoidance, and react to radius-based avoidance obstacles. They ignore any vertex-based obstacles.\n\t\t\tIf [code]false[/code], the agent calculates avoidance velocities in 2D along the x and z-axes, ignoring the y-axis. Agents using 2D avoidance only avoid other agents using 2D avoidance, and react to radius-based avoidance obstacles or vertex-based avoidance obstacles. Other agents using 2D avoidance that are below or above their current position including [member height] are ignored."},{"name":"velocity","type":"Vector3","description":"Sets the new wanted velocity for the agent. The avoidance simulation will try to fulfill this velocity if possible but will modify it to avoid collision with other agents and obstacles. When an agent is teleported to a new position, use [method set_velocity_forced] as well to reset the internal simulation velocity."}],"methods":[{"name":"distance_to_target","signature":"distance_to_target() -> float","description":"Returns the distance to the target position, using the agent's global position. The user must set [member target_position] in order for this to be accurate.","returnType":"float"},{"name":"get_avoidance_layer_value","signature":"get_avoidance_layer_value(layer_number: int) -> bool","description":"Returns whether or not the specified layer of the [member avoidance_layers] bitmask is enabled, given a [param layer_number] between 1 and 32.","returnType":"bool"},{"name":"get_avoidance_mask_value","signature":"get_avoidance_mask_value(mask_number: int) -> bool","description":"Returns whether or not the specified mask of the [member avoidance_mask] bitmask is enabled, given a [param mask_number] between 1 and 32.","returnType":"bool"},{"name":"get_current_navigation_path","signature":"get_current_navigation_path() -> PackedVector3Array","description":"Returns this agent's current path from start to finish in global coordinates. The path only updates when the target position is changed or the agent requires a repath. The path array is not intended to be used in direct path movement as the agent has its own internal path logic that would get corrupted by changing the path array manually. Use the intended [method get_next_path_position] once every physics frame to receive the next path point for the agents movement as this function also updates the internal path logic.","returnType":"PackedVector3Array"},{"name":"get_current_navigation_path_index","signature":"get_current_navigation_path_index() -> int","description":"Returns which index the agent is currently on in the navigation path's .","returnType":"int"},{"name":"get_current_navigation_result","signature":"get_current_navigation_result() -> NavigationPathQueryResult3D","description":"Returns the path query result for the path the agent is currently following.","returnType":"NavigationPathQueryResult3D"},{"name":"get_final_position","signature":"get_final_position() -> Vector3","description":"Returns the reachable final position of the current navigation path in global coordinates. This position can change if the agent needs to update the navigation path which makes the agent emit the [signal path_changed] signal.","returnType":"Vector3"},{"name":"get_navigation_layer_value","signature":"get_navigation_layer_value(layer_number: int) -> bool","description":"Returns whether or not the specified layer of the [member navigation_layers] bitmask is enabled, given a [param layer_number] between 1 and 32.","returnType":"bool"},{"name":"get_navigation_map","signature":"get_navigation_map() -> RID","description":"Returns the  of the navigation map for this NavigationAgent node. This function returns always the map set on the NavigationAgent node and not the map of the abstract agent on the NavigationServer. If the agent map is changed directly with the NavigationServer API the NavigationAgent node will not be aware of the map change. Use [method set_navigation_map] to change the navigation map for the NavigationAgent and also update the agent on the NavigationServer.","returnType":"RID"},{"name":"get_next_path_position","signature":"get_next_path_position() -> Vector3","description":"Returns the next position in global coordinates that can be moved to, making sure that there are no static objects in the way. If the agent does not have a navigation path, it will return the position of the agent's parent. The use of this function once every physics frame is required to update the internal path logic of the NavigationAgent.","returnType":"Vector3"},{"name":"get_rid","signature":"get_rid() -> RID","description":"Returns the  of this agent on the .","returnType":"RID"},{"name":"is_navigation_finished","signature":"is_navigation_finished() -> bool","description":"Returns true if the agent's navigation has finished. If the target is reachable, navigation ends when the target is reached. If the target is unreachable, navigation ends when the last waypoint of the path is reached.\n\t\t\t\tNote: While true prefer to stop calling update functions like [method get_next_path_position]. This avoids jittering the standing agent due to calling repeated path updates.","returnType":"bool"},{"name":"is_target_reachable","signature":"is_target_reachable() -> bool","description":"Returns true if [method get_final_position] is within [member target_desired_distance] of the [member target_position].","returnType":"bool"},{"name":"is_target_reached","signature":"is_target_reached() -> bool","description":"Returns true if the agent reached the target, i.e. the agent moved within [member target_desired_distance] of the [member target_position]. It may not always be possible to reach the target but it should always be possible to reach the final position. See [method get_final_position].","returnType":"bool"},{"name":"set_avoidance_layer_value","signature":"set_avoidance_layer_value(layer_number: int, value: bool) -> void","description":"Based on [param value], enables or disables the specified layer in the [member avoidance_layers] bitmask, given a [param layer_number] between 1 and 32.","returnType":"void"},{"name":"set_avoidance_mask_value","signature":"set_avoidance_mask_value(mask_number: int, value: bool) -> void","description":"Based on [param value], enables or disables the specified mask in the [member avoidance_mask] bitmask, given a [param mask_number] between 1 and 32.","returnType":"void"},{"name":"set_navigation_layer_value","signature":"set_navigation_layer_value(layer_number: int, value: bool) -> void","description":"Based on [param value], enables or disables the specified layer in the [member navigation_layers] bitmask, given a [param layer_number] between 1 and 32.","returnType":"void"},{"name":"set_navigation_map","signature":"set_navigation_map(navigation_map: RID) -> void","description":"Sets the  of the navigation map this NavigationAgent node should use and also updates the agent on the NavigationServer.","returnType":"void"},{"name":"set_velocity_forced","signature":"set_velocity_forced(velocity: Vector3) -> void","description":"Replaces the internal velocity in the collision avoidance simulation with [param velocity]. When an agent is teleported to a new position this function should be used in the same frame. If called frequently this function can get agents stuck.","returnType":"void"}],"signals":[{"name":"link_reached","description":"Signals that the agent reached a navigation link. Emitted when the agent moves within [member path_desired_distance] of the next position of the path when that position is a navigation link.\n\t\t\t\tThe details dictionary may contain the following keys depending on the value of [member path_metadata_flags]:\n\t\t\t\t- [code]position[/code]: The start position of the link that was reached.\n\t\t\t\t- [code]type[/code]: Always [constant NavigationPathQueryResult3D.PATH_SEGMENT_TYPE_LINK].\n\t\t\t\t- [code]rid[/code]: The [RID] of the link.\n\t\t\t\t- [code]owner[/code]: The object which manages the link (usually [NavigationLink3D]).\n\t\t\t\t- [code]link_entry_position[/code]: If [code]owner[/code] is available and the owner is a [NavigationLink3D], it will contain the global position of the link's point the agent is entering.\n\t\t\t\t- [code]link_exit_position[/code]: If [code]owner[/code] is available and the owner is a [NavigationLink3D], it will contain the global position of the link's point which the agent is exiting."},{"name":"navigation_finished","description":"Signals that the agent's navigation has finished. If the target is reachable, navigation ends when the target is reached. If the target is unreachable, navigation ends when the last waypoint of the path is reached. This signal is emitted only once per loaded path.\n\t\t\t\tThis signal will be emitted just after [signal target_reached] when the target is reachable."},{"name":"path_changed","description":"Emitted when the agent had to update the loaded path:\n\t\t\t\t- because path was previously empty.\n\t\t\t\t- because navigation map has changed.\n\t\t\t\t- because agent pushed further away from the current path segment than the [member path_max_distance]."},{"name":"target_reached","description":"Signals that the agent reached the target, i.e. the agent moved within [member target_desired_distance] of the [member target_position]. This signal is emitted only once per loaded path.\n\t\t\t\tThis signal will be emitted just before [signal navigation_finished] when the target is reachable.\n\t\t\t\tIt may not always be possible to reach the target but it should always be possible to reach the final position. See [method get_final_position]."},{"name":"velocity_computed","description":"Notifies when the collision avoidance velocity is calculated. Emitted every update as long as [member avoidance_enabled] is [code]true[/code] and the agent has a navigation map."},{"name":"waypoint_reached","description":"Signals that the agent reached a waypoint. Emitted when the agent moves within [member path_desired_distance] of the next position of the path.\n\t\t\t\tThe details dictionary may contain the following keys depending on the value of [member path_metadata_flags]:\n\t\t\t\t- [code]position[/code]: The position of the waypoint that was reached.\n\t\t\t\t- [code]type[/code]: The type of navigation primitive (region or link) that contains this waypoint.\n\t\t\t\t- [code]rid[/code]: The [RID] of the containing navigation primitive (region or link).\n\t\t\t\t- [code]owner[/code]: The object which manages the containing navigation primitive (region or link)."}]},"NavigationLink2D":{"name":"NavigationLink2D","description":"A link between two positions on s that agents can be routed through.","inherits":"Node2D","properties":[{"name":"bidirectional","type":"bool","description":"Whether this link can be traveled in both directions or only from [member start_position] to [member end_position]."},{"name":"enabled","type":"bool","description":"Whether this link is currently active. If [code]false[/code], [method NavigationServer2D.map_get_path] will ignore this link."},{"name":"end_position","type":"Vector2","description":"Ending position of the link.\n\t\t\tThis position will search out the nearest polygon in the navigation mesh to attach to.\n\t\t\tThe distance the link will search is controlled by [method NavigationServer2D.map_set_link_connection_radius]."},{"name":"enter_cost","type":"float","description":"When pathfinding enters this link from another regions navigation mesh the [member enter_cost] value is added to the path distance for determining the shortest path."},{"name":"navigation_layers","type":"int","description":"A bitfield determining all navigation layers the link belongs to. These navigation layers will be checked when requesting a path with [method NavigationServer2D.map_get_path]."},{"name":"start_position","type":"Vector2","description":"Starting position of the link.\n\t\t\tThis position will search out the nearest polygon in the navigation mesh to attach to.\n\t\t\tThe distance the link will search is controlled by [method NavigationServer2D.map_set_link_connection_radius]."},{"name":"travel_cost","type":"float","description":"When pathfinding moves along the link the traveled distance is multiplied with [member travel_cost] for determining the shortest path."}],"methods":[{"name":"get_global_end_position","signature":"get_global_end_position() -> Vector2","description":"Returns the [member end_position] that is relative to the link as a global position.","returnType":"Vector2"},{"name":"get_global_start_position","signature":"get_global_start_position() -> Vector2","description":"Returns the [member start_position] that is relative to the link as a global position.","returnType":"Vector2"},{"name":"get_navigation_layer_value","signature":"get_navigation_layer_value(layer_number: int) -> bool","description":"Returns whether or not the specified layer of the [member navigation_layers] bitmask is enabled, given a [param layer_number] between 1 and 32.","returnType":"bool"},{"name":"get_navigation_map","signature":"get_navigation_map() -> RID","description":"Returns the current navigation map  used by this link.","returnType":"RID"},{"name":"get_rid","signature":"get_rid() -> RID","description":"Returns the  of this link on the .","returnType":"RID"},{"name":"set_global_end_position","signature":"set_global_end_position(position: Vector2) -> void","description":"Sets the [member end_position] that is relative to the link from a global [param position].","returnType":"void"},{"name":"set_global_start_position","signature":"set_global_start_position(position: Vector2) -> void","description":"Sets the [member start_position] that is relative to the link from a global [param position].","returnType":"void"},{"name":"set_navigation_layer_value","signature":"set_navigation_layer_value(layer_number: int, value: bool) -> void","description":"Based on [param value], enables or disables the specified layer in the [member navigation_layers] bitmask, given a [param layer_number] between 1 and 32.","returnType":"void"},{"name":"set_navigation_map","signature":"set_navigation_map(navigation_map: RID) -> void","description":"Sets the  of the navigation map this link should use. By default the link will automatically join the  default navigation map so this function is only required to override the default map.","returnType":"void"}],"signals":[]},"NavigationLink3D":{"name":"NavigationLink3D","description":"A link between two positions on s that agents can be routed through.","inherits":"Node3D","properties":[{"name":"bidirectional","type":"bool","description":"Whether this link can be traveled in both directions or only from [member start_position] to [member end_position]."},{"name":"enabled","type":"bool","description":"Whether this link is currently active. If [code]false[/code], [method NavigationServer3D.map_get_path] will ignore this link."},{"name":"end_position","type":"Vector3","description":"Ending position of the link.\n\t\t\tThis position will search out the nearest polygon in the navigation mesh to attach to.\n\t\t\tThe distance the link will search is controlled by [method NavigationServer3D.map_set_link_connection_radius]."},{"name":"enter_cost","type":"float","description":"When pathfinding enters this link from another regions navigation mesh the [member enter_cost] value is added to the path distance for determining the shortest path."},{"name":"navigation_layers","type":"int","description":"A bitfield determining all navigation layers the link belongs to. These navigation layers will be checked when requesting a path with [method NavigationServer3D.map_get_path]."},{"name":"start_position","type":"Vector3","description":"Starting position of the link.\n\t\t\tThis position will search out the nearest polygon in the navigation mesh to attach to.\n\t\t\tThe distance the link will search is controlled by [method NavigationServer3D.map_set_link_connection_radius]."},{"name":"travel_cost","type":"float","description":"When pathfinding moves along the link the traveled distance is multiplied with [member travel_cost] for determining the shortest path."}],"methods":[{"name":"get_global_end_position","signature":"get_global_end_position() -> Vector3","description":"Returns the [member end_position] that is relative to the link as a global position.","returnType":"Vector3"},{"name":"get_global_start_position","signature":"get_global_start_position() -> Vector3","description":"Returns the [member start_position] that is relative to the link as a global position.","returnType":"Vector3"},{"name":"get_navigation_layer_value","signature":"get_navigation_layer_value(layer_number: int) -> bool","description":"Returns whether or not the specified layer of the [member navigation_layers] bitmask is enabled, given a [param layer_number] between 1 and 32.","returnType":"bool"},{"name":"get_navigation_map","signature":"get_navigation_map() -> RID","description":"Returns the current navigation map  used by this link.","returnType":"RID"},{"name":"get_rid","signature":"get_rid() -> RID","description":"Returns the  of this link on the .","returnType":"RID"},{"name":"set_global_end_position","signature":"set_global_end_position(position: Vector3) -> void","description":"Sets the [member end_position] that is relative to the link from a global [param position].","returnType":"void"},{"name":"set_global_start_position","signature":"set_global_start_position(position: Vector3) -> void","description":"Sets the [member start_position] that is relative to the link from a global [param position].","returnType":"void"},{"name":"set_navigation_layer_value","signature":"set_navigation_layer_value(layer_number: int, value: bool) -> void","description":"Based on [param value], enables or disables the specified layer in the [member navigation_layers] bitmask, given a [param layer_number] between 1 and 32.","returnType":"void"},{"name":"set_navigation_map","signature":"set_navigation_map(navigation_map: RID) -> void","description":"Sets the  of the navigation map this link should use. By default the link will automatically join the  default navigation map so this function is only required to override the default map.","returnType":"void"}],"signals":[]},"NavigationMesh":{"name":"NavigationMesh","description":"A navigation mesh that defines traversable areas and obstacles.","inherits":"Resource","properties":[{"name":"agent_height","type":"float","description":"The minimum floor to ceiling height that will still allow the floor area to be considered walkable.\n\t\t\t[b]Note:[/b] While baking, this value will be rounded up to the nearest multiple of [member cell_height]."},{"name":"agent_max_climb","type":"float","description":"The minimum ledge height that is considered to still be traversable.\n\t\t\t[b]Note:[/b] While baking, this value will be rounded down to the nearest multiple of [member cell_height]."},{"name":"agent_max_slope","type":"float","description":"The maximum slope that is considered walkable, in degrees."},{"name":"agent_radius","type":"float","description":"The distance to erode/shrink the walkable area of the heightfield away from obstructions.\n\t\t\t[b]Note:[/b] While baking, this value will be rounded up to the nearest multiple of [member cell_size]."},{"name":"border_size","type":"float","description":"The size of the non-navigable border around the bake bounding area.\n\t\t\tIn conjunction with the [member filter_baking_aabb] and a [member edge_max_error] value at [code]1.0[/code] or below the border size can be used to bake tile aligned navigation meshes without the tile edges being shrunk by [member agent_radius].\n\t\t\t[b]Note:[/b] While baking and not zero, this value will be rounded up to the nearest multiple of [member cell_size]."},{"name":"cell_height","type":"float","description":"The cell height used to rasterize the navigation mesh vertices on the Y axis. Must match with the cell height on the navigation map."},{"name":"cell_size","type":"float","description":"The cell size used to rasterize the navigation mesh vertices on the XZ plane. Must match with the cell size on the navigation map."},{"name":"detail_sample_distance","type":"float","description":"The sampling distance to use when generating the detail mesh, in cell unit."},{"name":"detail_sample_max_error","type":"float","description":"The maximum distance the detail mesh surface should deviate from heightfield, in cell unit."},{"name":"edge_max_error","type":"float","description":"The maximum distance a simplified contour's border edges should deviate the original raw contour."},{"name":"edge_max_length","type":"float","description":"The maximum allowed length for contour edges along the border of the mesh. A value of [code]0.0[/code] disables this feature.\n\t\t\t[b]Note:[/b] While baking, this value will be rounded up to the nearest multiple of [member cell_size]."},{"name":"filter_baking_aabb","type":"AABB","description":"If the baking [AABB] has a volume the navigation mesh baking will be restricted to its enclosing area."},{"name":"filter_baking_aabb_offset","type":"Vector3","description":"The position offset applied to the [member filter_baking_aabb] [AABB]."},{"name":"filter_ledge_spans","type":"bool","description":"If [code]true[/code], marks spans that are ledges as non-walkable."},{"name":"filter_low_hanging_obstacles","type":"bool","description":"If [code]true[/code], marks non-walkable spans as walkable if their maximum is within [member agent_max_climb] of a walkable neighbor."},{"name":"filter_walkable_low_height_spans","type":"bool","description":"If [code]true[/code], marks walkable spans as not walkable if the clearance above the span is less than [member agent_height]."},{"name":"geometry_collision_mask","type":"int","description":"The physics layers to scan for static colliders.\n\t\t\tOnly used when [member geometry_parsed_geometry_type] is [constant PARSED_GEOMETRY_STATIC_COLLIDERS] or [constant PARSED_GEOMETRY_BOTH]."},{"name":"geometry_parsed_geometry_type","type":"int","description":"Determines which type of nodes will be parsed as geometry. See [enum ParsedGeometryType] for possible values."},{"name":"geometry_source_geometry_mode","type":"int","description":"The source of the geometry used when baking. See [enum SourceGeometryMode] for possible values."},{"name":"geometry_source_group_name","type":"StringName","description":"The name of the group to scan for geometry.\n\t\t\tOnly used when [member geometry_source_geometry_mode] is [constant SOURCE_GEOMETRY_GROUPS_WITH_CHILDREN] or [constant SOURCE_GEOMETRY_GROUPS_EXPLICIT]."},{"name":"region_merge_size","type":"float","description":"Any regions with a size smaller than this will be merged with larger regions if possible.\n\t\t\t[b]Note:[/b] This value will be squared to calculate the number of cells. For example, a value of 20 will set the number of cells to 400."},{"name":"region_min_size","type":"float","description":"The minimum size of a region for it to be created.\n\t\t\t[b]Note:[/b] This value will be squared to calculate the minimum number of cells allowed to form isolated island areas. For example, a value of 8 will set the number of cells to 64."},{"name":"sample_partition_type","type":"int","description":"Partitioning algorithm for creating the navigation mesh polys. See [enum SamplePartitionType] for possible values."},{"name":"vertices_per_polygon","type":"float","description":"The maximum number of vertices allowed for polygons generated during the contour to polygon conversion process."}],"methods":[{"name":"add_polygon","signature":"add_polygon(polygon: PackedInt32Array) -> void","description":"Adds a polygon using the indices of the vertices you get when calling [method get_vertices].","returnType":"void"},{"name":"clear","signature":"clear() -> void","description":"Clears the internal arrays for vertices and polygon indices.","returnType":"void"},{"name":"clear_polygons","signature":"clear_polygons() -> void","description":"Clears the array of polygons, but it doesn't clear the array of vertices.","returnType":"void"},{"name":"create_from_mesh","signature":"create_from_mesh(mesh: Mesh) -> void","description":"Initializes the navigation mesh by setting the vertices and indices according to a .\n\t\t\t\tNote: The given [param mesh] must be of type [constant Mesh.PRIMITIVE_TRIANGLES] and have an index array.","returnType":"void"},{"name":"get_collision_mask_value","signature":"get_collision_mask_value(layer_number: int) -> bool","description":"Returns whether or not the specified layer of the [member geometry_collision_mask] is enabled, given a [param layer_number] between 1 and 32.","returnType":"bool"},{"name":"get_polygon","signature":"get_polygon(idx: int) -> PackedInt32Array","description":"Returns a  containing the indices of the vertices of a created polygon.","returnType":"PackedInt32Array"},{"name":"get_polygon_count","signature":"get_polygon_count() -> int","description":"Returns the number of polygons in the navigation mesh.","returnType":"int"},{"name":"get_vertices","signature":"get_vertices() -> PackedVector3Array","description":"Returns a  containing all the vertices being used to create the polygons.","returnType":"PackedVector3Array"},{"name":"set_collision_mask_value","signature":"set_collision_mask_value(layer_number: int, value: bool) -> void","description":"Based on [param value], enables or disables the specified layer in the [member geometry_collision_mask], given a [param layer_number] between 1 and 32.","returnType":"void"},{"name":"set_vertices","signature":"set_vertices(vertices: PackedVector3Array) -> void","description":"Sets the vertices that can be then indexed to create polygons with the [method add_polygon] method.","returnType":"void"}],"signals":[]},"NavigationMeshGenerator":{"name":"NavigationMeshGenerator","description":"Helper class for creating and clearing navigation meshes.","inherits":"Object","properties":[],"methods":[{"name":"bake","signature":"bake(navigation_mesh: NavigationMesh, root_node: Node) -> void","description":"Bakes the [param navigation_mesh] with source geometry collected starting from the [param root_node].","returnType":"void"},{"name":"bake_from_source_geometry_data","signature":"bake_from_source_geometry_data(navigation_mesh: NavigationMesh, source_geometry_data: NavigationMeshSourceGeometryData3D, callback: Callable) -> void","description":"Bakes the provided [param navigation_mesh] with the data from the provided [param source_geometry_data]. After the process is finished the optional [param callback] will be called.","returnType":"void"},{"name":"clear","signature":"clear(navigation_mesh: NavigationMesh) -> void","description":"Removes all polygons and vertices from the provided [param navigation_mesh] resource.","returnType":"void"},{"name":"parse_source_geometry_data","signature":"parse_source_geometry_data(navigation_mesh: NavigationMesh, source_geometry_data: NavigationMeshSourceGeometryData3D, root_node: Node, callback: Callable) -> void","description":"Parses the  for source geometry according to the properties of [param navigation_mesh]. Updates the provided [param source_geometry_data] resource with the resulting data. The resource can then be used to bake a navigation mesh with [method bake_from_source_geometry_data]. After the process is finished the optional [param callback] will be called.\n\t\t\t\tNote: This function needs to run on the main thread or with a deferred call as the SceneTree is not thread-safe.\n\t\t\t\tPerformance: While convenient, reading data arrays from  resources can affect the frame rate negatively. The data needs to be received from the GPU, stalling the  in the process. For performance prefer the use of e.g. collision shapes or creating the data arrays entirely in code.","returnType":"void"}],"signals":[]},"NavigationMeshSourceGeometryData2D":{"name":"NavigationMeshSourceGeometryData2D","description":"Container for parsed source geometry data used in navigation mesh baking.","inherits":"Resource","properties":[],"methods":[{"name":"add_obstruction_outline","signature":"add_obstruction_outline(shape_outline: PackedVector2Array) -> void","description":"Adds the outline points of a shape as obstructed area.","returnType":"void"},{"name":"add_projected_obstruction","signature":"add_projected_obstruction(vertices: PackedVector2Array, carve: bool) -> void","description":"Adds a projected obstruction shape to the source geometry. If [param carve] is true the carved shape will not be affected by additional offsets (e.g. agent radius) of the navigation mesh baking process.","returnType":"void"},{"name":"add_traversable_outline","signature":"add_traversable_outline(shape_outline: PackedVector2Array) -> void","description":"Adds the outline points of a shape as traversable area.","returnType":"void"},{"name":"append_obstruction_outlines","signature":"append_obstruction_outlines(obstruction_outlines: PackedVector2Array[]) -> void","description":"Appends another array of [param obstruction_outlines] at the end of the existing obstruction outlines array.","returnType":"void"},{"name":"append_traversable_outlines","signature":"append_traversable_outlines(traversable_outlines: PackedVector2Array[]) -> void","description":"Appends another array of [param traversable_outlines] at the end of the existing traversable outlines array.","returnType":"void"},{"name":"clear","signature":"clear() -> void","description":"Clears the internal data.","returnType":"void"},{"name":"clear_projected_obstructions","signature":"clear_projected_obstructions() -> void","description":"Clears all projected obstructions.","returnType":"void"},{"name":"get_bounds","signature":"get_bounds() -> Rect2","description":"Returns an axis-aligned bounding box that covers all the stored geometry data. The bounds are calculated when calling this function with the result cached until further geometry changes are made.","returnType":"Rect2"},{"name":"get_obstruction_outlines","signature":"get_obstruction_outlines() -> PackedVector2Array[]","description":"Returns all the obstructed area outlines arrays.","returnType":"PackedVector2Array[]"},{"name":"get_projected_obstructions","signature":"get_projected_obstructions() -> Array","description":"Returns the projected obstructions as an  of dictionaries. Each  contains the following entries:\n\t\t\t\t- vertices - A  that defines the outline points of the projected shape.\n\t\t\t\t- carve - A  that defines how the projected shape affects the navigation mesh baking. If true the projected shape will not be affected by addition offsets, e.g. agent radius.","returnType":"Array"},{"name":"get_traversable_outlines","signature":"get_traversable_outlines() -> PackedVector2Array[]","description":"Returns all the traversable area outlines arrays.","returnType":"PackedVector2Array[]"},{"name":"has_data","signature":"has_data() -> bool","description":"Returns true when parsed source geometry data exists.","returnType":"bool"},{"name":"merge","signature":"merge(other_geometry: NavigationMeshSourceGeometryData2D) -> void","description":"Adds the geometry data of another  to the navigation mesh baking data.","returnType":"void"},{"name":"set_obstruction_outlines","signature":"set_obstruction_outlines(obstruction_outlines: PackedVector2Array[]) -> void","description":"Sets all the obstructed area outlines arrays.","returnType":"void"},{"name":"set_projected_obstructions","signature":"set_projected_obstructions(projected_obstructions: Array) -> void","description":"Sets the projected obstructions with an Array of Dictionaries with the following key value pairs:\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\"vertices\" : PackedFloat32Array\n\t\t\t\t\"carve\" : bool\n\t\t\t\t\n\t\t\t\t","returnType":"void"},{"name":"set_traversable_outlines","signature":"set_traversable_outlines(traversable_outlines: PackedVector2Array[]) -> void","description":"Sets all the traversable area outlines arrays.","returnType":"void"}],"signals":[]},"NavigationMeshSourceGeometryData3D":{"name":"NavigationMeshSourceGeometryData3D","description":"Container for parsed source geometry data used in navigation mesh baking.","inherits":"Resource","properties":[],"methods":[{"name":"add_faces","signature":"add_faces(faces: PackedVector3Array, xform: Transform3D) -> void","description":"Adds an array of vertex positions to the geometry data for navigation mesh baking to form triangulated faces. For each face the array must have three vertex positions in clockwise winding order. Since  resources have no transform, all vertex positions need to be offset by the node's transform using [param xform].","returnType":"void"},{"name":"add_mesh","signature":"add_mesh(mesh: Mesh, xform: Transform3D) -> void","description":"Adds the geometry data of a  resource to the navigation mesh baking data. The mesh must have valid triangulated mesh data to be considered. Since  resources have no transform, all vertex positions need to be offset by the node's transform using [param xform].","returnType":"void"},{"name":"add_mesh_array","signature":"add_mesh_array(mesh_array: Array, xform: Transform3D) -> void","description":"Adds an  the size of [constant Mesh.ARRAY_MAX] and with vertices at index [constant Mesh.ARRAY_VERTEX] and indices at index [constant Mesh.ARRAY_INDEX] to the navigation mesh baking data. The array must have valid triangulated mesh data to be considered. Since  resources have no transform, all vertex positions need to be offset by the node's transform using [param xform].","returnType":"void"},{"name":"add_projected_obstruction","signature":"add_projected_obstruction(vertices: PackedVector3Array, elevation: float, height: float, carve: bool) -> void","description":"Adds a projected obstruction shape to the source geometry. The [param vertices] are considered projected on a xz-axes plane, placed at the global y-axis [param elevation] and extruded by [param height]. If [param carve] is true the carved shape will not be affected by additional offsets (e.g. agent radius) of the navigation mesh baking process.","returnType":"void"},{"name":"append_arrays","signature":"append_arrays(vertices: PackedFloat32Array, indices: PackedInt32Array) -> void","description":"Appends arrays of [param vertices] and [param indices] at the end of the existing arrays. Adds the existing index as an offset to the appended indices.","returnType":"void"},{"name":"clear","signature":"clear() -> void","description":"Clears the internal data.","returnType":"void"},{"name":"clear_projected_obstructions","signature":"clear_projected_obstructions() -> void","description":"Clears all projected obstructions.","returnType":"void"},{"name":"get_bounds","signature":"get_bounds() -> AABB","description":"Returns an axis-aligned bounding box that covers all the stored geometry data. The bounds are calculated when calling this function with the result cached until further geometry changes are made.","returnType":"AABB"},{"name":"get_indices","signature":"get_indices() -> PackedInt32Array","description":"Returns the parsed source geometry data indices array.","returnType":"PackedInt32Array"},{"name":"get_projected_obstructions","signature":"get_projected_obstructions() -> Array","description":"Returns the projected obstructions as an  of dictionaries. Each  contains the following entries:\n\t\t\t\t- vertices - A  that defines the outline points of the projected shape.\n\t\t\t\t- elevation - A  that defines the projected shape placement on the y-axis.\n\t\t\t\t- height - A  that defines how much the projected shape is extruded along the y-axis.\n\t\t\t\t- carve - A  that defines how the obstacle affects the navigation mesh baking. If true the projected shape will not be affected by addition offsets, e.g. agent radius.","returnType":"Array"},{"name":"get_vertices","signature":"get_vertices() -> PackedFloat32Array","description":"Returns the parsed source geometry data vertices array.","returnType":"PackedFloat32Array"},{"name":"has_data","signature":"has_data() -> bool","description":"Returns true when parsed source geometry data exists.","returnType":"bool"},{"name":"merge","signature":"merge(other_geometry: NavigationMeshSourceGeometryData3D) -> void","description":"Adds the geometry data of another  to the navigation mesh baking data.","returnType":"void"},{"name":"set_indices","signature":"set_indices(indices: PackedInt32Array) -> void","description":"Sets the parsed source geometry data indices. The indices need to be matched with appropriated vertices.\n\t\t\t\tWarning: Inappropriate data can crash the baking process of the involved third-party libraries.","returnType":"void"},{"name":"set_projected_obstructions","signature":"set_projected_obstructions(projected_obstructions: Array) -> void","description":"Sets the projected obstructions with an Array of Dictionaries with the following key value pairs:\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\"vertices\" : PackedFloat32Array\n\t\t\t\t\"elevation\" : float\n\t\t\t\t\"height\" : float\n\t\t\t\t\"carve\" : bool\n\t\t\t\t\n\t\t\t\t","returnType":"void"},{"name":"set_vertices","signature":"set_vertices(vertices: PackedFloat32Array) -> void","description":"Sets the parsed source geometry data vertices. The vertices need to be matched with appropriated indices.\n\t\t\t\tWarning: Inappropriate data can crash the baking process of the involved third-party libraries.","returnType":"void"}],"signals":[]},"NavigationObstacle2D":{"name":"NavigationObstacle2D","description":"2D obstacle used to affect navigation mesh baking or constrain velocities of avoidance controlled agents.","inherits":"Node2D","properties":[{"name":"affect_navigation_mesh","type":"bool","description":"If enabled and parsed in a navigation mesh baking process the obstacle will discard source geometry inside its [member vertices] defined shape."},{"name":"avoidance_enabled","type":"bool","description":"If [code]true[/code] the obstacle affects avoidance using agents."},{"name":"avoidance_layers","type":"int","description":"A bitfield determining the avoidance layers for this obstacle. Agents with a matching bit on the their avoidance mask will avoid this obstacle."},{"name":"carve_navigation_mesh","type":"bool","description":"If enabled the obstacle vertices will carve into the baked navigation mesh with the shape unaffected by additional offsets (e.g. agent radius).\n\t\t\tIt will still be affected by further postprocessing of the baking process, like edge and polygon simplification.\n\t\t\tRequires [member affect_navigation_mesh] to be enabled."},{"name":"radius","type":"float","description":"Sets the avoidance radius for the obstacle."},{"name":"velocity","type":"Vector2","description":"Sets the wanted velocity for the obstacle so other agent's can better predict the obstacle if it is moved with a velocity regularly (every frame) instead of warped to a new position. Does only affect avoidance for the obstacles [member radius]. Does nothing for the obstacles static vertices."},{"name":"vertices","type":"PackedVector2Array","description":"The outline vertices of the obstacle. If the vertices are winded in clockwise order agents will be pushed in by the obstacle, else they will be pushed out. Outlines can not be crossed or overlap. Should the vertices using obstacle be warped to a new position agent's can not predict this movement and may get trapped inside the obstacle."}],"methods":[{"name":"get_avoidance_layer_value","signature":"get_avoidance_layer_value(layer_number: int) -> bool","description":"Returns whether or not the specified layer of the [member avoidance_layers] bitmask is enabled, given a [param layer_number] between 1 and 32.","returnType":"bool"},{"name":"get_navigation_map","signature":"get_navigation_map() -> RID","description":"Returns the  of the navigation map for this NavigationObstacle node. This function returns always the map set on the NavigationObstacle node and not the map of the abstract obstacle on the NavigationServer. If the obstacle map is changed directly with the NavigationServer API the NavigationObstacle node will not be aware of the map change. Use [method set_navigation_map] to change the navigation map for the NavigationObstacle and also update the obstacle on the NavigationServer.","returnType":"RID"},{"name":"get_rid","signature":"get_rid() -> RID","description":"Returns the  of this obstacle on the .","returnType":"RID"},{"name":"set_avoidance_layer_value","signature":"set_avoidance_layer_value(layer_number: int, value: bool) -> void","description":"Based on [param value], enables or disables the specified layer in the [member avoidance_layers] bitmask, given a [param layer_number] between 1 and 32.","returnType":"void"},{"name":"set_navigation_map","signature":"set_navigation_map(navigation_map: RID) -> void","description":"Sets the  of the navigation map this NavigationObstacle node should use and also updates the obstacle on the NavigationServer.","returnType":"void"}],"signals":[]},"NavigationObstacle3D":{"name":"NavigationObstacle3D","description":"3D obstacle used to affect navigation mesh baking or constrain velocities of avoidance controlled agents.","inherits":"Node3D","properties":[{"name":"affect_navigation_mesh","type":"bool","description":"If enabled and parsed in a navigation mesh baking process the obstacle will discard source geometry inside its [member vertices] and [member height] defined shape."},{"name":"avoidance_enabled","type":"bool","description":"If [code]true[/code] the obstacle affects avoidance using agents."},{"name":"avoidance_layers","type":"int","description":"A bitfield determining the avoidance layers for this obstacle. Agents with a matching bit on the their avoidance mask will avoid this obstacle."},{"name":"carve_navigation_mesh","type":"bool","description":"If enabled the obstacle vertices will carve into the baked navigation mesh with the shape unaffected by additional offsets (e.g. agent radius).\n\t\t\tIt will still be affected by further postprocessing of the baking process, like edge and polygon simplification.\n\t\t\tRequires [member affect_navigation_mesh] to be enabled."},{"name":"height","type":"float","description":"Sets the obstacle height used in 2D avoidance. 2D avoidance using agent's ignore obstacles that are below or above them."},{"name":"radius","type":"float","description":"Sets the avoidance radius for the obstacle."},{"name":"use_3d_avoidance","type":"bool","description":"If [code]true[/code] the obstacle affects 3D avoidance using agent's with obstacle [member radius].\n\t\t\tIf [code]false[/code] the obstacle affects 2D avoidance using agent's with both obstacle [member vertices] as well as obstacle [member radius]."},{"name":"velocity","type":"Vector3","description":"Sets the wanted velocity for the obstacle so other agent's can better predict the obstacle if it is moved with a velocity regularly (every frame) instead of warped to a new position. Does only affect avoidance for the obstacles [member radius]. Does nothing for the obstacles static vertices."},{"name":"vertices","type":"PackedVector3Array","description":"The outline vertices of the obstacle. If the vertices are winded in clockwise order agents will be pushed in by the obstacle, else they will be pushed out. Outlines can not be crossed or overlap. Should the vertices using obstacle be warped to a new position agent's can not predict this movement and may get trapped inside the obstacle."}],"methods":[{"name":"get_avoidance_layer_value","signature":"get_avoidance_layer_value(layer_number: int) -> bool","description":"Returns whether or not the specified layer of the [member avoidance_layers] bitmask is enabled, given a [param layer_number] between 1 and 32.","returnType":"bool"},{"name":"get_navigation_map","signature":"get_navigation_map() -> RID","description":"Returns the  of the navigation map for this NavigationObstacle node. This function returns always the map set on the NavigationObstacle node and not the map of the abstract obstacle on the NavigationServer. If the obstacle map is changed directly with the NavigationServer API the NavigationObstacle node will not be aware of the map change. Use [method set_navigation_map] to change the navigation map for the NavigationObstacle and also update the obstacle on the NavigationServer.","returnType":"RID"},{"name":"get_rid","signature":"get_rid() -> RID","description":"Returns the  of this obstacle on the .","returnType":"RID"},{"name":"set_avoidance_layer_value","signature":"set_avoidance_layer_value(layer_number: int, value: bool) -> void","description":"Based on [param value], enables or disables the specified layer in the [member avoidance_layers] bitmask, given a [param layer_number] between 1 and 32.","returnType":"void"},{"name":"set_navigation_map","signature":"set_navigation_map(navigation_map: RID) -> void","description":"Sets the  of the navigation map this NavigationObstacle node should use and also updates the obstacle on the NavigationServer.","returnType":"void"}],"signals":[]},"NavigationPathQueryParameters2D":{"name":"NavigationPathQueryParameters2D","description":"Provides parameters for 2D navigation path queries.","inherits":"RefCounted","properties":[{"name":"map","type":"RID","description":"The navigation map [RID] used in the path query."},{"name":"metadata_flags","type":"int","description":"Additional information to include with the navigation path."},{"name":"navigation_layers","type":"int","description":"The navigation layers the query will use (as a bitmask)."},{"name":"path_postprocessing","type":"int","description":"The path postprocessing applied to the raw path corridor found by the [member pathfinding_algorithm]."},{"name":"pathfinding_algorithm","type":"int","description":"The pathfinding algorithm used in the path query."},{"name":"simplify_epsilon","type":"float","description":"The path simplification amount in worlds units."},{"name":"simplify_path","type":"bool","description":"If [code]true[/code] a simplified version of the path will be returned with less critical path points removed. The simplification amount is controlled by [member simplify_epsilon]. The simplification uses a variant of Ramer-Douglas-Peucker algorithm for curve point decimation.\n\t\t\tPath simplification can be helpful to mitigate various path following issues that can arise with certain agent types and script behaviors. E.g. \"steering\" agents or avoidance in \"open fields\"."},{"name":"start_position","type":"Vector2","description":"The pathfinding start position in global coordinates."},{"name":"target_position","type":"Vector2","description":"The pathfinding target position in global coordinates."}],"methods":[],"signals":[]},"NavigationPathQueryParameters3D":{"name":"NavigationPathQueryParameters3D","description":"Provides parameters for 3D navigation path queries.","inherits":"RefCounted","properties":[{"name":"map","type":"RID","description":"The navigation map [RID] used in the path query."},{"name":"metadata_flags","type":"int","description":"Additional information to include with the navigation path."},{"name":"navigation_layers","type":"int","description":"The navigation layers the query will use (as a bitmask)."},{"name":"path_postprocessing","type":"int","description":"The path postprocessing applied to the raw path corridor found by the [member pathfinding_algorithm]."},{"name":"pathfinding_algorithm","type":"int","description":"The pathfinding algorithm used in the path query."},{"name":"simplify_epsilon","type":"float","description":"The path simplification amount in worlds units."},{"name":"simplify_path","type":"bool","description":"If [code]true[/code] a simplified version of the path will be returned with less critical path points removed. The simplification amount is controlled by [member simplify_epsilon]. The simplification uses a variant of Ramer-Douglas-Peucker algorithm for curve point decimation.\n\t\t\tPath simplification can be helpful to mitigate various path following issues that can arise with certain agent types and script behaviors. E.g. \"steering\" agents or avoidance in \"open fields\"."},{"name":"start_position","type":"Vector3","description":"The pathfinding start position in global coordinates."},{"name":"target_position","type":"Vector3","description":"The pathfinding target position in global coordinates."}],"methods":[],"signals":[]},"NavigationPathQueryResult2D":{"name":"NavigationPathQueryResult2D","description":"Represents the result of a 2D pathfinding query.","inherits":"RefCounted","properties":[{"name":"path","type":"PackedVector2Array","description":"The resulting path array from the navigation query. All path array positions are in global coordinates. Without customized query parameters this is the same path as returned by [method NavigationServer2D.map_get_path]."},{"name":"path_owner_ids","type":"PackedInt64Array","description":"The [code]ObjectID[/code]s of the [Object]s which manage the regions and links each point of the path goes through."},{"name":"path_rids","type":"RID[]","description":"The [RID]s of the regions and links that each point of the path goes through."},{"name":"path_types","type":"PackedInt32Array","description":"The type of navigation primitive (region or link) that each point of the path goes through."}],"methods":[{"name":"reset","signature":"reset() -> void","description":"Reset the result object to its initial state. This is useful to reuse the object across multiple queries.","returnType":"void"}],"signals":[]},"NavigationPathQueryResult3D":{"name":"NavigationPathQueryResult3D","description":"Represents the result of a 3D pathfinding query.","inherits":"RefCounted","properties":[{"name":"path","type":"PackedVector3Array","description":"The resulting path array from the navigation query. All path array positions are in global coordinates. Without customized query parameters this is the same path as returned by [method NavigationServer3D.map_get_path]."},{"name":"path_owner_ids","type":"PackedInt64Array","description":"The [code]ObjectID[/code]s of the [Object]s which manage the regions and links each point of the path goes through."},{"name":"path_rids","type":"RID[]","description":"The [RID]s of the regions and links that each point of the path goes through."},{"name":"path_types","type":"PackedInt32Array","description":"The type of navigation primitive (region or link) that each point of the path goes through."}],"methods":[{"name":"reset","signature":"reset() -> void","description":"Reset the result object to its initial state. This is useful to reuse the object across multiple queries.","returnType":"void"}],"signals":[]},"NavigationPolygon":{"name":"NavigationPolygon","description":"A 2D navigation mesh that describes a traversable surface for pathfinding.","inherits":"Resource","properties":[{"name":"agent_radius","type":"float","description":"The distance to erode/shrink the walkable surface when baking the navigation mesh."},{"name":"baking_rect","type":"Rect2","description":"If the baking [Rect2] has an area the navigation mesh baking will be restricted to its enclosing area."},{"name":"baking_rect_offset","type":"Vector2","description":"The position offset applied to the [member baking_rect] [Rect2]."},{"name":"border_size","type":"float","description":"The size of the non-navigable border around the bake bounding area defined by the [member baking_rect] [Rect2].\n\t\t\tIn conjunction with the [member baking_rect] the border size can be used to bake tile aligned navigation meshes without the tile edges being shrunk by [member agent_radius]."},{"name":"cell_size","type":"float","description":"The cell size used to rasterize the navigation mesh vertices. Must match with the cell size on the navigation map."},{"name":"parsed_collision_mask","type":"int","description":"The physics layers to scan for static colliders.\n\t\t\tOnly used when [member parsed_geometry_type] is [constant PARSED_GEOMETRY_STATIC_COLLIDERS] or [constant PARSED_GEOMETRY_BOTH]."},{"name":"parsed_geometry_type","type":"int","description":"Determines which type of nodes will be parsed as geometry. See [enum ParsedGeometryType] for possible values."},{"name":"sample_partition_type","type":"int","description":"Partitioning algorithm for creating the navigation mesh polys. See [enum SamplePartitionType] for possible values."},{"name":"source_geometry_group_name","type":"StringName","description":"The group name of nodes that should be parsed for baking source geometry.\n\t\t\tOnly used when [member source_geometry_mode] is [constant SOURCE_GEOMETRY_GROUPS_WITH_CHILDREN] or [constant SOURCE_GEOMETRY_GROUPS_EXPLICIT]."},{"name":"source_geometry_mode","type":"int","description":"The source of the geometry used when baking. See [enum SourceGeometryMode] for possible values."}],"methods":[{"name":"add_outline","signature":"add_outline(outline: PackedVector2Array) -> void","description":"Appends a  that contains the vertices of an outline to the internal array that contains all the outlines.","returnType":"void"},{"name":"add_outline_at_index","signature":"add_outline_at_index(outline: PackedVector2Array, index: int) -> void","description":"Adds a  that contains the vertices of an outline to the internal array that contains all the outlines at a fixed position.","returnType":"void"},{"name":"add_polygon","signature":"add_polygon(polygon: PackedInt32Array) -> void","description":"Adds a polygon using the indices of the vertices you get when calling [method get_vertices].","returnType":"void"},{"name":"clear","signature":"clear() -> void","description":"Clears the internal arrays for vertices and polygon indices.","returnType":"void"},{"name":"clear_outlines","signature":"clear_outlines() -> void","description":"Clears the array of the outlines, but it doesn't clear the vertices and the polygons that were created by them.","returnType":"void"},{"name":"clear_polygons","signature":"clear_polygons() -> void","description":"Clears the array of polygons, but it doesn't clear the array of outlines and vertices.","returnType":"void"},{"name":"get_navigation_mesh","signature":"get_navigation_mesh() -> NavigationMesh","description":"Returns the  resulting from this navigation polygon. This navigation mesh can be used to update the navigation mesh of a region with the [method NavigationServer3D.region_set_navigation_mesh] API directly (as 2D uses the 3D server behind the scene).","returnType":"NavigationMesh"},{"name":"get_outline","signature":"get_outline(idx: int) -> PackedVector2Array","description":"Returns a  containing the vertices of an outline that was created in the editor or by script.","returnType":"PackedVector2Array"},{"name":"get_outline_count","signature":"get_outline_count() -> int","description":"Returns the number of outlines that were created in the editor or by script.","returnType":"int"},{"name":"get_parsed_collision_mask_value","signature":"get_parsed_collision_mask_value(layer_number: int) -> bool","description":"Returns whether or not the specified layer of the [member parsed_collision_mask] is enabled, given a [param layer_number] between 1 and 32.","returnType":"bool"},{"name":"get_polygon","signature":"get_polygon(idx: int) -> PackedInt32Array","description":"Returns a  containing the indices of the vertices of a created polygon.","returnType":"PackedInt32Array"},{"name":"get_polygon_count","signature":"get_polygon_count() -> int","description":"Returns the count of all polygons.","returnType":"int"},{"name":"get_vertices","signature":"get_vertices() -> PackedVector2Array","description":"Returns a  containing all the vertices being used to create the polygons.","returnType":"PackedVector2Array"},{"name":"make_polygons_from_outlines","signature":"make_polygons_from_outlines() -> void","description":"Creates polygons from the outlines added in the editor or by script.","returnType":"void"},{"name":"remove_outline","signature":"remove_outline(idx: int) -> void","description":"Removes an outline created in the editor or by script. You have to call [method make_polygons_from_outlines] for the polygons to update.","returnType":"void"},{"name":"set_outline","signature":"set_outline(idx: int, outline: PackedVector2Array) -> void","description":"Changes an outline created in the editor or by script. You have to call [method make_polygons_from_outlines] for the polygons to update.","returnType":"void"},{"name":"set_parsed_collision_mask_value","signature":"set_parsed_collision_mask_value(layer_number: int, value: bool) -> void","description":"Based on [param value], enables or disables the specified layer in the [member parsed_collision_mask], given a [param layer_number] between 1 and 32.","returnType":"void"},{"name":"set_vertices","signature":"set_vertices(vertices: PackedVector2Array) -> void","description":"Sets the vertices that can be then indexed to create polygons with the [method add_polygon] method.","returnType":"void"}],"signals":[]},"NavigationRegion2D":{"name":"NavigationRegion2D","description":"A traversable 2D region that s can use for pathfinding.","inherits":"Node2D","properties":[{"name":"enabled","type":"bool","description":"Determines if the [NavigationRegion2D] is enabled or disabled."},{"name":"enter_cost","type":"float","description":"When pathfinding enters this region's navigation mesh from another regions navigation mesh the [member enter_cost] value is added to the path distance for determining the shortest path."},{"name":"navigation_layers","type":"int","description":"A bitfield determining all navigation layers the region belongs to. These navigation layers can be checked upon when requesting a path with [method NavigationServer2D.map_get_path]."},{"name":"navigation_polygon","type":"NavigationPolygon","description":"The [NavigationPolygon] resource to use."},{"name":"travel_cost","type":"float","description":"When pathfinding moves inside this region's navigation mesh the traveled distances are multiplied with [member travel_cost] for determining the shortest path."},{"name":"use_edge_connections","type":"bool","description":"If enabled the navigation region will use edge connections to connect with other navigation regions within proximity of the navigation map edge connection margin."}],"methods":[{"name":"bake_navigation_polygon","signature":"bake_navigation_polygon(on_thread: bool) -> void","description":"Bakes the . If [param on_thread] is set to true (default), the baking is done on a separate thread.","returnType":"void"},{"name":"get_bounds","signature":"get_bounds() -> Rect2","description":"Returns the axis-aligned rectangle for the region's transformed navigation mesh.","returnType":"Rect2"},{"name":"get_navigation_layer_value","signature":"get_navigation_layer_value(layer_number: int) -> bool","description":"Returns whether or not the specified layer of the [member navigation_layers] bitmask is enabled, given a [param layer_number] between 1 and 32.","returnType":"bool"},{"name":"get_navigation_map","signature":"get_navigation_map() -> RID","description":"Returns the current navigation map  used by this region.","returnType":"RID"},{"name":"get_region_rid","signature":"get_region_rid() -> RID","description":"Returns the  of this region on the .","returnType":"RID"},{"name":"get_rid","signature":"get_rid() -> RID","description":"Returns the  of this region on the . Combined with [method NavigationServer2D.map_get_closest_point_owner] can be used to identify the  closest to a point on the merged navigation map.","returnType":"RID"},{"name":"is_baking","signature":"is_baking() -> bool","description":"Returns true when the  is being baked on a background thread.","returnType":"bool"},{"name":"set_navigation_layer_value","signature":"set_navigation_layer_value(layer_number: int, value: bool) -> void","description":"Based on [param value], enables or disables the specified layer in the [member navigation_layers] bitmask, given a [param layer_number] between 1 and 32.","returnType":"void"},{"name":"set_navigation_map","signature":"set_navigation_map(navigation_map: RID) -> void","description":"Sets the  of the navigation map this region should use. By default the region will automatically join the  default navigation map so this function is only required to override the default map.","returnType":"void"}],"signals":[{"name":"bake_finished","description":"Emitted when a navigation polygon bake operation is completed."},{"name":"navigation_polygon_changed","description":"Emitted when the used navigation polygon is replaced or changes to the internals of the current navigation polygon are committed."}]},"NavigationRegion3D":{"name":"NavigationRegion3D","description":"A traversable 3D region that s can use for pathfinding.","inherits":"Node3D","properties":[{"name":"enabled","type":"bool","description":"Determines if the [NavigationRegion3D] is enabled or disabled."},{"name":"enter_cost","type":"float","description":"When pathfinding enters this region's navigation mesh from another regions navigation mesh the [member enter_cost] value is added to the path distance for determining the shortest path."},{"name":"navigation_layers","type":"int","description":"A bitfield determining all navigation layers the region belongs to. These navigation layers can be checked upon when requesting a path with [method NavigationServer3D.map_get_path]."},{"name":"navigation_mesh","type":"NavigationMesh","description":"The [NavigationMesh] resource to use."},{"name":"travel_cost","type":"float","description":"When pathfinding moves inside this region's navigation mesh the traveled distances are multiplied with [member travel_cost] for determining the shortest path."},{"name":"use_edge_connections","type":"bool","description":"If enabled the navigation region will use edge connections to connect with other navigation regions within proximity of the navigation map edge connection margin."}],"methods":[{"name":"bake_navigation_mesh","signature":"bake_navigation_mesh(on_thread: bool) -> void","description":"Bakes the . If [param on_thread] is set to true (default), the baking is done on a separate thread. Baking on separate thread is useful because navigation baking is not a cheap operation. When it is completed, it automatically sets the new . Please note that baking on separate thread may be very slow if geometry is parsed from meshes as async access to each mesh involves heavy synchronization. Also, please note that baking on a separate thread is automatically disabled on operating systems that cannot use threads (such as Web with threads disabled).","returnType":"void"},{"name":"get_bounds","signature":"get_bounds() -> AABB","description":"Returns the axis-aligned bounding box for the region's transformed navigation mesh.","returnType":"AABB"},{"name":"get_navigation_layer_value","signature":"get_navigation_layer_value(layer_number: int) -> bool","description":"Returns whether or not the specified layer of the [member navigation_layers] bitmask is enabled, given a [param layer_number] between 1 and 32.","returnType":"bool"},{"name":"get_navigation_map","signature":"get_navigation_map() -> RID","description":"Returns the current navigation map  used by this region.","returnType":"RID"},{"name":"get_region_rid","signature":"get_region_rid() -> RID","description":"Returns the  of this region on the .","returnType":"RID"},{"name":"get_rid","signature":"get_rid() -> RID","description":"Returns the  of this region on the . Combined with [method NavigationServer3D.map_get_closest_point_owner] can be used to identify the  closest to a point on the merged navigation map.","returnType":"RID"},{"name":"is_baking","signature":"is_baking() -> bool","description":"Returns true when the  is being baked on a background thread.","returnType":"bool"},{"name":"set_navigation_layer_value","signature":"set_navigation_layer_value(layer_number: int, value: bool) -> void","description":"Based on [param value], enables or disables the specified layer in the [member navigation_layers] bitmask, given a [param layer_number] between 1 and 32.","returnType":"void"},{"name":"set_navigation_map","signature":"set_navigation_map(navigation_map: RID) -> void","description":"Sets the  of the navigation map this region should use. By default the region will automatically join the  default navigation map so this function is only required to override the default map.","returnType":"void"}],"signals":[{"name":"bake_finished","description":"Notifies when the navigation mesh bake operation is completed."},{"name":"navigation_mesh_changed","description":"Notifies when the [NavigationMesh] has changed."}]},"NavigationServer2D":{"name":"NavigationServer2D","description":"A server interface for low-level 2D navigation access.","inherits":"Object","properties":[],"methods":[{"name":"agent_create","signature":"agent_create() -> RID","description":"Creates the agent.","returnType":"RID"},{"name":"agent_get_avoidance_enabled","signature":"agent_get_avoidance_enabled(agent: RID) -> bool","description":"Return true if the specified [param agent] uses avoidance.","returnType":"bool"},{"name":"agent_get_avoidance_layers","signature":"agent_get_avoidance_layers(agent: RID) -> int","description":"Returns the avoidance_layers bitmask of the specified [param agent].","returnType":"int"},{"name":"agent_get_avoidance_mask","signature":"agent_get_avoidance_mask(agent: RID) -> int","description":"Returns the avoidance_mask bitmask of the specified [param agent].","returnType":"int"},{"name":"agent_get_avoidance_priority","signature":"agent_get_avoidance_priority(agent: RID) -> float","description":"Returns the avoidance_priority of the specified [param agent].","returnType":"float"},{"name":"agent_get_map","signature":"agent_get_map(agent: RID) -> RID","description":"Returns the navigation map  the requested [param agent] is currently assigned to.","returnType":"RID"},{"name":"agent_get_max_neighbors","signature":"agent_get_max_neighbors(agent: RID) -> int","description":"Returns the maximum number of other agents the specified [param agent] takes into account in the navigation.","returnType":"int"},{"name":"agent_get_max_speed","signature":"agent_get_max_speed(agent: RID) -> float","description":"Returns the maximum speed of the specified [param agent].","returnType":"float"},{"name":"agent_get_neighbor_distance","signature":"agent_get_neighbor_distance(agent: RID) -> float","description":"Returns the maximum distance to other agents the specified [param agent] takes into account in the navigation.","returnType":"float"},{"name":"agent_get_paused","signature":"agent_get_paused(agent: RID) -> bool","description":"Returns true if the specified [param agent] is paused.","returnType":"bool"},{"name":"agent_get_position","signature":"agent_get_position(agent: RID) -> Vector2","description":"Returns the position of the specified [param agent] in world space.","returnType":"Vector2"},{"name":"agent_get_radius","signature":"agent_get_radius(agent: RID) -> float","description":"Returns the radius of the specified [param agent].","returnType":"float"},{"name":"agent_get_time_horizon_agents","signature":"agent_get_time_horizon_agents(agent: RID) -> float","description":"Returns the minimal amount of time for which the specified [param agent]'s velocities that are computed by the simulation are safe with respect to other agents.","returnType":"float"},{"name":"agent_get_time_horizon_obstacles","signature":"agent_get_time_horizon_obstacles(agent: RID) -> float","description":"Returns the minimal amount of time for which the specified [param agent]'s velocities that are computed by the simulation are safe with respect to static avoidance obstacles.","returnType":"float"},{"name":"agent_get_velocity","signature":"agent_get_velocity(agent: RID) -> Vector2","description":"Returns the velocity of the specified [param agent].","returnType":"Vector2"},{"name":"agent_has_avoidance_callback","signature":"agent_has_avoidance_callback(agent: RID) -> bool","description":"Return true if the specified [param agent] has an avoidance callback.","returnType":"bool"},{"name":"agent_is_map_changed","signature":"agent_is_map_changed(agent: RID) -> bool","description":"Returns true if the map got changed the previous frame.","returnType":"bool"},{"name":"agent_set_avoidance_callback","signature":"agent_set_avoidance_callback(agent: RID, callback: Callable) -> void","description":"Sets the callback  that gets called after each avoidance processing step for the [param agent]. The calculated safe_velocity will be dispatched with a signal to the object just before the physics calculations.\n\t\t\t\tNote: Created callbacks are always processed independently of the SceneTree state as long as the agent is on a navigation map and not freed. To disable the dispatch of a callback from an agent use [method agent_set_avoidance_callback] again with an empty .","returnType":"void"},{"name":"agent_set_avoidance_enabled","signature":"agent_set_avoidance_enabled(agent: RID, enabled: bool) -> void","description":"If [param enabled] is true, the specified [param agent] uses avoidance.","returnType":"void"},{"name":"agent_set_avoidance_layers","signature":"agent_set_avoidance_layers(agent: RID, layers: int) -> void","description":"Set the agent's avoidance_layers bitmask.","returnType":"void"},{"name":"agent_set_avoidance_mask","signature":"agent_set_avoidance_mask(agent: RID, mask: int) -> void","description":"Set the agent's avoidance_mask bitmask.","returnType":"void"},{"name":"agent_set_avoidance_priority","signature":"agent_set_avoidance_priority(agent: RID, priority: float) -> void","description":"Set the agent's avoidance_priority with a [param priority] between 0.0 (lowest priority) to 1.0 (highest priority).\n\t\t\t\tThe specified [param agent] does not adjust the velocity for other agents that would match the avoidance_mask but have a lower avoidance_priority. This in turn makes the other agents with lower priority adjust their velocities even more to avoid collision with this agent.","returnType":"void"},{"name":"agent_set_map","signature":"agent_set_map(agent: RID, map: RID) -> void","description":"Puts the agent in the map.","returnType":"void"},{"name":"agent_set_max_neighbors","signature":"agent_set_max_neighbors(agent: RID, count: int) -> void","description":"Sets the maximum number of other agents the agent takes into account in the navigation. The larger this number, the longer the running time of the simulation. If the number is too low, the simulation will not be safe.","returnType":"void"},{"name":"agent_set_max_speed","signature":"agent_set_max_speed(agent: RID, max_speed: float) -> void","description":"Sets the maximum speed of the agent. Must be positive.","returnType":"void"},{"name":"agent_set_neighbor_distance","signature":"agent_set_neighbor_distance(agent: RID, distance: float) -> void","description":"Sets the maximum distance to other agents this agent takes into account in the navigation. The larger this number, the longer the running time of the simulation. If the number is too low, the simulation will not be safe.","returnType":"void"},{"name":"agent_set_paused","signature":"agent_set_paused(agent: RID, paused: bool) -> void","description":"If [param paused] is true the specified [param agent] will not be processed, e.g. calculate avoidance velocities or receive avoidance callbacks.","returnType":"void"},{"name":"agent_set_position","signature":"agent_set_position(agent: RID, position: Vector2) -> void","description":"Sets the position of the agent in world space.","returnType":"void"},{"name":"agent_set_radius","signature":"agent_set_radius(agent: RID, radius: float) -> void","description":"Sets the radius of the agent.","returnType":"void"},{"name":"agent_set_time_horizon_agents","signature":"agent_set_time_horizon_agents(agent: RID, time_horizon: float) -> void","description":"The minimal amount of time for which the agent's velocities that are computed by the simulation are safe with respect to other agents. The larger this number, the sooner this agent will respond to the presence of other agents, but the less freedom this agent has in choosing its velocities. A too high value will slow down agents movement considerably. Must be positive.","returnType":"void"},{"name":"agent_set_time_horizon_obstacles","signature":"agent_set_time_horizon_obstacles(agent: RID, time_horizon: float) -> void","description":"The minimal amount of time for which the agent's velocities that are computed by the simulation are safe with respect to static avoidance obstacles. The larger this number, the sooner this agent will respond to the presence of static avoidance obstacles, but the less freedom this agent has in choosing its velocities. A too high value will slow down agents movement considerably. Must be positive.","returnType":"void"},{"name":"agent_set_velocity","signature":"agent_set_velocity(agent: RID, velocity: Vector2) -> void","description":"Sets [param velocity] as the new wanted velocity for the specified [param agent]. The avoidance simulation will try to fulfill this velocity if possible but will modify it to avoid collision with other agent's and obstacles. When an agent is teleported to a new position far away use [method agent_set_velocity_forced] instead to reset the internal velocity state.","returnType":"void"},{"name":"agent_set_velocity_forced","signature":"agent_set_velocity_forced(agent: RID, velocity: Vector2) -> void","description":"Replaces the internal velocity in the collision avoidance simulation with [param velocity] for the specified [param agent]. When an agent is teleported to a new position far away this function should be used in the same frame. If called frequently this function can get agents stuck.","returnType":"void"},{"name":"bake_from_source_geometry_data","signature":"bake_from_source_geometry_data(navigation_polygon: NavigationPolygon, source_geometry_data: NavigationMeshSourceGeometryData2D, callback: Callable) -> void","description":"Bakes the provided [param navigation_polygon] with the data from the provided [param source_geometry_data]. After the process is finished the optional [param callback] will be called.","returnType":"void"},{"name":"bake_from_source_geometry_data_async","signature":"bake_from_source_geometry_data_async(navigation_polygon: NavigationPolygon, source_geometry_data: NavigationMeshSourceGeometryData2D, callback: Callable) -> void","description":"Bakes the provided [param navigation_polygon] with the data from the provided [param source_geometry_data] as an async task running on a background thread. After the process is finished the optional [param callback] will be called.","returnType":"void"},{"name":"free_rid","signature":"free_rid(rid: RID) -> void","description":"Destroys the given RID.","returnType":"void"},{"name":"get_debug_enabled","signature":"get_debug_enabled() -> bool","description":"Returns true when the NavigationServer has debug enabled.","returnType":"bool"},{"name":"get_maps","signature":"get_maps() -> RID[]","description":"Returns all created navigation map s on the NavigationServer. This returns both 2D and 3D created navigation maps as there is technically no distinction between them.","returnType":"RID[]"},{"name":"is_baking_navigation_polygon","signature":"is_baking_navigation_polygon(navigation_polygon: NavigationPolygon) -> bool","description":"Returns true when the provided navigation polygon is being baked on a background thread.","returnType":"bool"},{"name":"link_create","signature":"link_create() -> RID","description":"Create a new link between two positions on a map.","returnType":"RID"},{"name":"link_get_enabled","signature":"link_get_enabled(link: RID) -> bool","description":"Returns true if the specified [param link] is enabled.","returnType":"bool"},{"name":"link_get_end_position","signature":"link_get_end_position(link: RID) -> Vector2","description":"Returns the ending position of this [param link].","returnType":"Vector2"},{"name":"link_get_enter_cost","signature":"link_get_enter_cost(link: RID) -> float","description":"Returns the enter cost of this [param link].","returnType":"float"},{"name":"link_get_map","signature":"link_get_map(link: RID) -> RID","description":"Returns the navigation map  the requested [param link] is currently assigned to.","returnType":"RID"},{"name":"link_get_navigation_layers","signature":"link_get_navigation_layers(link: RID) -> int","description":"Returns the navigation layers for this [param link].","returnType":"int"},{"name":"link_get_owner_id","signature":"link_get_owner_id(link: RID) -> int","description":"Returns the ObjectID of the object which manages this link.","returnType":"int"},{"name":"link_get_start_position","signature":"link_get_start_position(link: RID) -> Vector2","description":"Returns the starting position of this [param link].","returnType":"Vector2"},{"name":"link_get_travel_cost","signature":"link_get_travel_cost(link: RID) -> float","description":"Returns the travel cost of this [param link].","returnType":"float"},{"name":"link_is_bidirectional","signature":"link_is_bidirectional(link: RID) -> bool","description":"Returns whether this [param link] can be travelled in both directions.","returnType":"bool"},{"name":"link_set_bidirectional","signature":"link_set_bidirectional(link: RID, bidirectional: bool) -> void","description":"Sets whether this [param link] can be travelled in both directions.","returnType":"void"},{"name":"link_set_enabled","signature":"link_set_enabled(link: RID, enabled: bool) -> void","description":"If [param enabled] is true, the specified [param link] will contribute to its current navigation map.","returnType":"void"},{"name":"link_set_end_position","signature":"link_set_end_position(link: RID, position: Vector2) -> void","description":"Sets the exit position for the [param link].","returnType":"void"},{"name":"link_set_enter_cost","signature":"link_set_enter_cost(link: RID, enter_cost: float) -> void","description":"Sets the [param enter_cost] for this [param link].","returnType":"void"},{"name":"link_set_map","signature":"link_set_map(link: RID, map: RID) -> void","description":"Sets the navigation map  for the link.","returnType":"void"},{"name":"link_set_navigation_layers","signature":"link_set_navigation_layers(link: RID, navigation_layers: int) -> void","description":"Set the links's navigation layers. This allows selecting links from a path request (when using [method NavigationServer2D.map_get_path]).","returnType":"void"},{"name":"link_set_owner_id","signature":"link_set_owner_id(link: RID, owner_id: int) -> void","description":"Set the ObjectID of the object which manages this link.","returnType":"void"},{"name":"link_set_start_position","signature":"link_set_start_position(link: RID, position: Vector2) -> void","description":"Sets the entry position for this [param link].","returnType":"void"},{"name":"link_set_travel_cost","signature":"link_set_travel_cost(link: RID, travel_cost: float) -> void","description":"Sets the [param travel_cost] for this [param link].","returnType":"void"},{"name":"map_create","signature":"map_create() -> RID","description":"Create a new map.","returnType":"RID"},{"name":"map_force_update","signature":"map_force_update(map: RID) -> void","description":"This function immediately forces synchronization of the specified navigation [param map] . By default navigation maps are only synchronized at the end of each physics frame. This function can be used to immediately (re)calculate all the navigation meshes and region connections of the navigation map. This makes it possible to query a navigation path for a changed map immediately and in the same frame (multiple times if needed).\n\t\t\t\tDue to technical restrictions the current NavigationServer command queue will be flushed. This means all already queued update commands for this physics frame will be executed, even those intended for other maps, regions and agents not part of the specified map. The expensive computation of the navigation meshes and region connections of a map will only be done for the specified map. Other maps will receive the normal synchronization at the end of the physics frame. Should the specified map receive changes after the forced update it will update again as well when the other maps receive their update.\n\t\t\t\tAvoidance processing and dispatch of the safe_velocity signals is unaffected by this function and continues to happen for all maps and agents at the end of the physics frame.\n\t\t\t\tNote: With great power comes great responsibility. This function should only be used by users that really know what they are doing and have a good reason for it. Forcing an immediate update of a navigation map requires locking the NavigationServer and flushing the entire NavigationServer command queue. Not only can this severely impact the performance of a game but it can also introduce bugs if used inappropriately without much foresight.","returnType":"void"},{"name":"map_get_agents","signature":"map_get_agents(map: RID) -> RID[]","description":"Returns all navigation agents s that are currently assigned to the requested navigation [param map].","returnType":"RID[]"},{"name":"map_get_cell_size","signature":"map_get_cell_size(map: RID) -> float","description":"Returns the map cell size used to rasterize the navigation mesh vertices.","returnType":"float"},{"name":"map_get_closest_point","signature":"map_get_closest_point(map: RID, to_point: Vector2) -> Vector2","description":"Returns the navigation mesh surface point closest to the provided [param to_point] on the navigation [param map].","returnType":"Vector2"},{"name":"map_get_closest_point_owner","signature":"map_get_closest_point_owner(map: RID, to_point: Vector2) -> RID","description":"Returns the owner region RID for the navigation mesh surface point closest to the provided [param to_point] on the navigation [param map].","returnType":"RID"},{"name":"map_get_edge_connection_margin","signature":"map_get_edge_connection_margin(map: RID) -> float","description":"Returns the edge connection margin of the map. The edge connection margin is a distance used to connect two regions.","returnType":"float"},{"name":"map_get_iteration_id","signature":"map_get_iteration_id(map: RID) -> int","description":"Returns the current iteration id of the navigation map. Every time the navigation map changes and synchronizes the iteration id increases. An iteration id of 0 means the navigation map has never synchronized.\n\t\t\t\tNote: The iteration id will wrap back to 1 after reaching its range limit.","returnType":"int"},{"name":"map_get_link_connection_radius","signature":"map_get_link_connection_radius(map: RID) -> float","description":"Returns the link connection radius of the map. This distance is the maximum range any link will search for navigation mesh polygons to connect to.","returnType":"float"},{"name":"map_get_links","signature":"map_get_links(map: RID) -> RID[]","description":"Returns all navigation link s that are currently assigned to the requested navigation [param map].","returnType":"RID[]"},{"name":"map_get_obstacles","signature":"map_get_obstacles(map: RID) -> RID[]","description":"Returns all navigation obstacle s that are currently assigned to the requested navigation [param map].","returnType":"RID[]"},{"name":"map_get_path","signature":"map_get_path(map: RID, origin: Vector2, destination: Vector2, optimize: bool, navigation_layers: int) -> PackedVector2Array","description":"Returns the navigation path to reach the destination from the origin. [param navigation_layers] is a bitmask of all region navigation layers that are allowed to be in the path.","returnType":"PackedVector2Array"},{"name":"map_get_random_point","signature":"map_get_random_point(map: RID, navigation_layers: int, uniformly: bool) -> Vector2","description":"Returns a random position picked from all map region polygons with matching [param navigation_layers].\n\t\t\t\tIf [param uniformly] is true, all map regions, polygons, and faces are weighted by their surface area (slower).\n\t\t\t\tIf [param uniformly] is false, just a random region and a random polygon are picked (faster).","returnType":"Vector2"},{"name":"map_get_regions","signature":"map_get_regions(map: RID) -> RID[]","description":"Returns all navigation regions s that are currently assigned to the requested navigation [param map].","returnType":"RID[]"},{"name":"map_get_use_async_iterations","signature":"map_get_use_async_iterations(map: RID) -> bool","description":"Returns true if the [param map] synchronization uses an async process that runs on a background thread.","returnType":"bool"},{"name":"map_get_use_edge_connections","signature":"map_get_use_edge_connections(map: RID) -> bool","description":"Returns whether the navigation [param map] allows navigation regions to use edge connections to connect with other navigation regions within proximity of the navigation map edge connection margin.","returnType":"bool"},{"name":"map_is_active","signature":"map_is_active(map: RID) -> bool","description":"Returns true if the map is active.","returnType":"bool"},{"name":"map_set_active","signature":"map_set_active(map: RID, active: bool) -> void","description":"Sets the map active.","returnType":"void"},{"name":"map_set_cell_size","signature":"map_set_cell_size(map: RID, cell_size: float) -> void","description":"Sets the map cell size used to rasterize the navigation mesh vertices. Must match with the cell size of the used navigation meshes.","returnType":"void"},{"name":"map_set_edge_connection_margin","signature":"map_set_edge_connection_margin(map: RID, margin: float) -> void","description":"Set the map edge connection margin used to weld the compatible region edges.","returnType":"void"},{"name":"map_set_link_connection_radius","signature":"map_set_link_connection_radius(map: RID, radius: float) -> void","description":"Set the map's link connection radius used to connect links to navigation polygons.","returnType":"void"},{"name":"map_set_use_async_iterations","signature":"map_set_use_async_iterations(map: RID, enabled: bool) -> void","description":"If [param enabled] is true the [param map] synchronization uses an async process that runs on a background thread.","returnType":"void"},{"name":"map_set_use_edge_connections","signature":"map_set_use_edge_connections(map: RID, enabled: bool) -> void","description":"Set the navigation [param map] edge connection use. If [param enabled] is true, the navigation map allows navigation regions to use edge connections to connect with other navigation regions within proximity of the navigation map edge connection margin.","returnType":"void"},{"name":"obstacle_create","signature":"obstacle_create() -> RID","description":"Creates a new navigation obstacle.","returnType":"RID"},{"name":"obstacle_get_avoidance_enabled","signature":"obstacle_get_avoidance_enabled(obstacle: RID) -> bool","description":"Returns true if the provided [param obstacle] has avoidance enabled.","returnType":"bool"},{"name":"obstacle_get_avoidance_layers","signature":"obstacle_get_avoidance_layers(obstacle: RID) -> int","description":"Returns the avoidance_layers bitmask of the specified [param obstacle].","returnType":"int"},{"name":"obstacle_get_map","signature":"obstacle_get_map(obstacle: RID) -> RID","description":"Returns the navigation map  the requested [param obstacle] is currently assigned to.","returnType":"RID"},{"name":"obstacle_get_paused","signature":"obstacle_get_paused(obstacle: RID) -> bool","description":"Returns true if the specified [param obstacle] is paused.","returnType":"bool"},{"name":"obstacle_get_position","signature":"obstacle_get_position(obstacle: RID) -> Vector2","description":"Returns the position of the specified [param obstacle] in world space.","returnType":"Vector2"},{"name":"obstacle_get_radius","signature":"obstacle_get_radius(obstacle: RID) -> float","description":"Returns the radius of the specified dynamic [param obstacle].","returnType":"float"},{"name":"obstacle_get_velocity","signature":"obstacle_get_velocity(obstacle: RID) -> Vector2","description":"Returns the velocity of the specified dynamic [param obstacle].","returnType":"Vector2"},{"name":"obstacle_get_vertices","signature":"obstacle_get_vertices(obstacle: RID) -> PackedVector2Array","description":"Returns the outline vertices for the specified [param obstacle].","returnType":"PackedVector2Array"},{"name":"obstacle_set_avoidance_enabled","signature":"obstacle_set_avoidance_enabled(obstacle: RID, enabled: bool) -> void","description":"If [param enabled] is true, the provided [param obstacle] affects avoidance using agents.","returnType":"void"},{"name":"obstacle_set_avoidance_layers","signature":"obstacle_set_avoidance_layers(obstacle: RID, layers: int) -> void","description":"Set the obstacles's avoidance_layers bitmask.","returnType":"void"},{"name":"obstacle_set_map","signature":"obstacle_set_map(obstacle: RID, map: RID) -> void","description":"Sets the navigation map  for the obstacle.","returnType":"void"},{"name":"obstacle_set_paused","signature":"obstacle_set_paused(obstacle: RID, paused: bool) -> void","description":"If [param paused] is true the specified [param obstacle] will not be processed, e.g. affect avoidance velocities.","returnType":"void"},{"name":"obstacle_set_position","signature":"obstacle_set_position(obstacle: RID, position: Vector2) -> void","description":"Sets the position of the obstacle in world space.","returnType":"void"},{"name":"obstacle_set_radius","signature":"obstacle_set_radius(obstacle: RID, radius: float) -> void","description":"Sets the radius of the dynamic obstacle.","returnType":"void"},{"name":"obstacle_set_velocity","signature":"obstacle_set_velocity(obstacle: RID, velocity: Vector2) -> void","description":"Sets [param velocity] of the dynamic [param obstacle]. Allows other agents to better predict the movement of the dynamic obstacle. Only works in combination with the radius of the obstacle.","returnType":"void"},{"name":"obstacle_set_vertices","signature":"obstacle_set_vertices(obstacle: RID, vertices: PackedVector2Array) -> void","description":"Sets the outline vertices for the obstacle. If the vertices are winded in clockwise order agents will be pushed in by the obstacle, else they will be pushed out.","returnType":"void"},{"name":"parse_source_geometry_data","signature":"parse_source_geometry_data(navigation_polygon: NavigationPolygon, source_geometry_data: NavigationMeshSourceGeometryData2D, root_node: Node, callback: Callable) -> void","description":"Parses the  for source geometry according to the properties of [param navigation_polygon]. Updates the provided [param source_geometry_data] resource with the resulting data. The resource can then be used to bake a navigation mesh with [method bake_from_source_geometry_data]. After the process is finished the optional [param callback] will be called.\n\t\t\t\tNote: This function needs to run on the main thread or with a deferred call as the SceneTree is not thread-safe.\n\t\t\t\tPerformance: While convenient, reading data arrays from  resources can affect the frame rate negatively. The data needs to be received from the GPU, stalling the  in the process. For performance prefer the use of e.g. collision shapes or creating the data arrays entirely in code.","returnType":"void"},{"name":"query_path","signature":"query_path(parameters: NavigationPathQueryParameters2D, result: NavigationPathQueryResult2D, callback: Callable) -> void","description":"Queries a path in a given navigation map. Start and target position and other parameters are defined through . Updates the provided  result object with the path among other results requested by the query. After the process is finished the optional [param callback] will be called.","returnType":"void"},{"name":"region_create","signature":"region_create() -> RID","description":"Creates a new region.","returnType":"RID"},{"name":"region_get_bounds","signature":"region_get_bounds(region: RID) -> Rect2","description":"Returns the axis-aligned rectangle for the [param region]'s transformed navigation mesh.","returnType":"Rect2"},{"name":"region_get_closest_point","signature":"region_get_closest_point(region: RID, to_point: Vector2) -> Vector2","description":"Returns the navigation mesh surface point closest to the provided [param to_point] on the navigation [param region].","returnType":"Vector2"},{"name":"region_get_connection_pathway_end","signature":"region_get_connection_pathway_end(region: RID, connection: int) -> Vector2","description":"Returns the ending point of a connection door. [param connection] is an index between 0 and the return value of [method region_get_connections_count].","returnType":"Vector2"},{"name":"region_get_connection_pathway_start","signature":"region_get_connection_pathway_start(region: RID, connection: int) -> Vector2","description":"Returns the starting point of a connection door. [param connection] is an index between 0 and the return value of [method region_get_connections_count].","returnType":"Vector2"},{"name":"region_get_connections_count","signature":"region_get_connections_count(region: RID) -> int","description":"Returns how many connections this [param region] has with other regions in the map.","returnType":"int"},{"name":"region_get_enabled","signature":"region_get_enabled(region: RID) -> bool","description":"Returns true if the specified [param region] is enabled.","returnType":"bool"},{"name":"region_get_enter_cost","signature":"region_get_enter_cost(region: RID) -> float","description":"Returns the enter cost of this [param region].","returnType":"float"},{"name":"region_get_map","signature":"region_get_map(region: RID) -> RID","description":"Returns the navigation map  the requested [param region] is currently assigned to.","returnType":"RID"},{"name":"region_get_navigation_layers","signature":"region_get_navigation_layers(region: RID) -> int","description":"Returns the region's navigation layers.","returnType":"int"},{"name":"region_get_owner_id","signature":"region_get_owner_id(region: RID) -> int","description":"Returns the ObjectID of the object which manages this region.","returnType":"int"},{"name":"region_get_random_point","signature":"region_get_random_point(region: RID, navigation_layers: int, uniformly: bool) -> Vector2","description":"Returns a random position picked from all region polygons with matching [param navigation_layers].\n\t\t\t\tIf [param uniformly] is true, all region polygons and faces are weighted by their surface area (slower).\n\t\t\t\tIf [param uniformly] is false, just a random polygon and face is picked (faster).","returnType":"Vector2"},{"name":"region_get_transform","signature":"region_get_transform(region: RID) -> Transform2D","description":"Returns the global transformation of this [param region].","returnType":"Transform2D"},{"name":"region_get_travel_cost","signature":"region_get_travel_cost(region: RID) -> float","description":"Returns the travel cost of this [param region].","returnType":"float"},{"name":"region_get_use_edge_connections","signature":"region_get_use_edge_connections(region: RID) -> bool","description":"Returns whether the navigation [param region] is set to use edge connections to connect with other navigation regions within proximity of the navigation map edge connection margin.","returnType":"bool"},{"name":"region_owns_point","signature":"region_owns_point(region: RID, point: Vector2) -> bool","description":"Returns true if the provided [param point] in world space is currently owned by the provided navigation [param region]. Owned in this context means that one of the region's navigation mesh polygon faces has a possible position at the closest distance to this point compared to all other navigation meshes from other navigation regions that are also registered on the navigation map of the provided region.\n\t\t\t\tIf multiple navigation meshes have positions at equal distance the navigation region whose polygons are processed first wins the ownership. Polygons are processed in the same order that navigation regions were registered on the NavigationServer.\n\t\t\t\tNote: If navigation meshes from different navigation regions overlap (which should be avoided in general) the result might not be what is expected.","returnType":"bool"},{"name":"region_set_enabled","signature":"region_set_enabled(region: RID, enabled: bool) -> void","description":"If [param enabled] is true the specified [param region] will contribute to its current navigation map.","returnType":"void"},{"name":"region_set_enter_cost","signature":"region_set_enter_cost(region: RID, enter_cost: float) -> void","description":"Sets the [param enter_cost] for this [param region].","returnType":"void"},{"name":"region_set_map","signature":"region_set_map(region: RID, map: RID) -> void","description":"Sets the map for the region.","returnType":"void"},{"name":"region_set_navigation_layers","signature":"region_set_navigation_layers(region: RID, navigation_layers: int) -> void","description":"Set the region's navigation layers. This allows selecting regions from a path request (when using [method NavigationServer2D.map_get_path]).","returnType":"void"},{"name":"region_set_navigation_polygon","signature":"region_set_navigation_polygon(region: RID, navigation_polygon: NavigationPolygon) -> void","description":"Sets the [param navigation_polygon] for the region.","returnType":"void"},{"name":"region_set_owner_id","signature":"region_set_owner_id(region: RID, owner_id: int) -> void","description":"Set the ObjectID of the object which manages this region.","returnType":"void"},{"name":"region_set_transform","signature":"region_set_transform(region: RID, transform: Transform2D) -> void","description":"Sets the global transformation for the region.","returnType":"void"},{"name":"region_set_travel_cost","signature":"region_set_travel_cost(region: RID, travel_cost: float) -> void","description":"Sets the [param travel_cost] for this [param region].","returnType":"void"},{"name":"region_set_use_edge_connections","signature":"region_set_use_edge_connections(region: RID, enabled: bool) -> void","description":"If [param enabled] is true, the navigation [param region] will use edge connections to connect with other navigation regions within proximity of the navigation map edge connection margin.","returnType":"void"},{"name":"set_debug_enabled","signature":"set_debug_enabled(enabled: bool) -> void","description":"If true enables debug mode on the NavigationServer.","returnType":"void"},{"name":"simplify_path","signature":"simplify_path(path: PackedVector2Array, epsilon: float) -> PackedVector2Array","description":"Returns a simplified version of [param path] with less critical path points removed. The simplification amount is in worlds units and controlled by [param epsilon]. The simplification uses a variant of Ramer-Douglas-Peucker algorithm for curve point decimation.\n\t\t\t\tPath simplification can be helpful to mitigate various path following issues that can arise with certain agent types and script behaviors. E.g. \"steering\" agents or avoidance in \"open fields\".","returnType":"PackedVector2Array"},{"name":"source_geometry_parser_create","signature":"source_geometry_parser_create() -> RID","description":"Creates a new source geometry parser. If a  is set for the parser with [method source_geometry_parser_set_callback] the callback will be called for every single node that gets parsed whenever [method parse_source_geometry_data] is used.","returnType":"RID"},{"name":"source_geometry_parser_set_callback","signature":"source_geometry_parser_set_callback(parser: RID, callback: Callable) -> void","description":"Sets the [param callback]  for the specific source geometry [param parser]. The  will receive a call with the following parameters:\n\t\t\t\t- navigation_mesh - The  reference used to define the parse settings. Do NOT edit or add directly to the navigation mesh.\n\t\t\t\t- source_geometry_data - The  reference. Add custom source geometry for navigation mesh baking to this object.\n\t\t\t\t- node - The  that is parsed.","returnType":"void"}],"signals":[{"name":"map_changed","description":"Emitted when a navigation map is updated, when a region moves or is modified."},{"name":"navigation_debug_changed","description":"Emitted when navigation debug settings are changed. Only available in debug builds."}]},"NavigationServer3D":{"name":"NavigationServer3D","description":"A server interface for low-level 3D navigation access.","inherits":"Object","properties":[],"methods":[{"name":"agent_create","signature":"agent_create() -> RID","description":"Creates the agent.","returnType":"RID"},{"name":"agent_get_avoidance_enabled","signature":"agent_get_avoidance_enabled(agent: RID) -> bool","description":"Returns true if the provided [param agent] has avoidance enabled.","returnType":"bool"},{"name":"agent_get_avoidance_layers","signature":"agent_get_avoidance_layers(agent: RID) -> int","description":"Returns the avoidance_layers bitmask of the specified [param agent].","returnType":"int"},{"name":"agent_get_avoidance_mask","signature":"agent_get_avoidance_mask(agent: RID) -> int","description":"Returns the avoidance_mask bitmask of the specified [param agent].","returnType":"int"},{"name":"agent_get_avoidance_priority","signature":"agent_get_avoidance_priority(agent: RID) -> float","description":"Returns the avoidance_priority of the specified [param agent].","returnType":"float"},{"name":"agent_get_height","signature":"agent_get_height(agent: RID) -> float","description":"Returns the height of the specified [param agent].","returnType":"float"},{"name":"agent_get_map","signature":"agent_get_map(agent: RID) -> RID","description":"Returns the navigation map  the requested [param agent] is currently assigned to.","returnType":"RID"},{"name":"agent_get_max_neighbors","signature":"agent_get_max_neighbors(agent: RID) -> int","description":"Returns the maximum number of other agents the specified [param agent] takes into account in the navigation.","returnType":"int"},{"name":"agent_get_max_speed","signature":"agent_get_max_speed(agent: RID) -> float","description":"Returns the maximum speed of the specified [param agent].","returnType":"float"},{"name":"agent_get_neighbor_distance","signature":"agent_get_neighbor_distance(agent: RID) -> float","description":"Returns the maximum distance to other agents the specified [param agent] takes into account in the navigation.","returnType":"float"},{"name":"agent_get_paused","signature":"agent_get_paused(agent: RID) -> bool","description":"Returns true if the specified [param agent] is paused.","returnType":"bool"},{"name":"agent_get_position","signature":"agent_get_position(agent: RID) -> Vector3","description":"Returns the position of the specified [param agent] in world space.","returnType":"Vector3"},{"name":"agent_get_radius","signature":"agent_get_radius(agent: RID) -> float","description":"Returns the radius of the specified [param agent].","returnType":"float"},{"name":"agent_get_time_horizon_agents","signature":"agent_get_time_horizon_agents(agent: RID) -> float","description":"Returns the minimal amount of time for which the specified [param agent]'s velocities that are computed by the simulation are safe with respect to other agents.","returnType":"float"},{"name":"agent_get_time_horizon_obstacles","signature":"agent_get_time_horizon_obstacles(agent: RID) -> float","description":"Returns the minimal amount of time for which the specified [param agent]'s velocities that are computed by the simulation are safe with respect to static avoidance obstacles.","returnType":"float"},{"name":"agent_get_use_3d_avoidance","signature":"agent_get_use_3d_avoidance(agent: RID) -> bool","description":"Returns true if the provided [param agent] uses avoidance in 3D space Vector3(x,y,z) instead of horizontal 2D Vector2(x,y) / Vector3(x,0.0,z).","returnType":"bool"},{"name":"agent_get_velocity","signature":"agent_get_velocity(agent: RID) -> Vector3","description":"Returns the velocity of the specified [param agent].","returnType":"Vector3"},{"name":"agent_has_avoidance_callback","signature":"agent_has_avoidance_callback(agent: RID) -> bool","description":"Return true if the specified [param agent] has an avoidance callback.","returnType":"bool"},{"name":"agent_is_map_changed","signature":"agent_is_map_changed(agent: RID) -> bool","description":"Returns true if the map got changed the previous frame.","returnType":"bool"},{"name":"agent_set_avoidance_callback","signature":"agent_set_avoidance_callback(agent: RID, callback: Callable) -> void","description":"Sets the callback  that gets called after each avoidance processing step for the [param agent]. The calculated safe_velocity will be dispatched with a signal to the object just before the physics calculations.\n\t\t\t\tNote: Created callbacks are always processed independently of the SceneTree state as long as the agent is on a navigation map and not freed. To disable the dispatch of a callback from an agent use [method agent_set_avoidance_callback] again with an empty .","returnType":"void"},{"name":"agent_set_avoidance_enabled","signature":"agent_set_avoidance_enabled(agent: RID, enabled: bool) -> void","description":"If [param enabled] is true, the provided [param agent] calculates avoidance.","returnType":"void"},{"name":"agent_set_avoidance_layers","signature":"agent_set_avoidance_layers(agent: RID, layers: int) -> void","description":"Set the agent's avoidance_layers bitmask.","returnType":"void"},{"name":"agent_set_avoidance_mask","signature":"agent_set_avoidance_mask(agent: RID, mask: int) -> void","description":"Set the agent's avoidance_mask bitmask.","returnType":"void"},{"name":"agent_set_avoidance_priority","signature":"agent_set_avoidance_priority(agent: RID, priority: float) -> void","description":"Set the agent's avoidance_priority with a [param priority] between 0.0 (lowest priority) to 1.0 (highest priority).\n\t\t\t\tThe specified [param agent] does not adjust the velocity for other agents that would match the avoidance_mask but have a lower avoidance_priority. This in turn makes the other agents with lower priority adjust their velocities even more to avoid collision with this agent.","returnType":"void"},{"name":"agent_set_height","signature":"agent_set_height(agent: RID, height: float) -> void","description":"Updates the provided [param agent] [param height].","returnType":"void"},{"name":"agent_set_map","signature":"agent_set_map(agent: RID, map: RID) -> void","description":"Puts the agent in the map.","returnType":"void"},{"name":"agent_set_max_neighbors","signature":"agent_set_max_neighbors(agent: RID, count: int) -> void","description":"Sets the maximum number of other agents the agent takes into account in the navigation. The larger this number, the longer the running time of the simulation. If the number is too low, the simulation will not be safe.","returnType":"void"},{"name":"agent_set_max_speed","signature":"agent_set_max_speed(agent: RID, max_speed: float) -> void","description":"Sets the maximum speed of the agent. Must be positive.","returnType":"void"},{"name":"agent_set_neighbor_distance","signature":"agent_set_neighbor_distance(agent: RID, distance: float) -> void","description":"Sets the maximum distance to other agents this agent takes into account in the navigation. The larger this number, the longer the running time of the simulation. If the number is too low, the simulation will not be safe.","returnType":"void"},{"name":"agent_set_paused","signature":"agent_set_paused(agent: RID, paused: bool) -> void","description":"If [param paused] is true the specified [param agent] will not be processed, e.g. calculate avoidance velocities or receive avoidance callbacks.","returnType":"void"},{"name":"agent_set_position","signature":"agent_set_position(agent: RID, position: Vector3) -> void","description":"Sets the position of the agent in world space.","returnType":"void"},{"name":"agent_set_radius","signature":"agent_set_radius(agent: RID, radius: float) -> void","description":"Sets the radius of the agent.","returnType":"void"},{"name":"agent_set_time_horizon_agents","signature":"agent_set_time_horizon_agents(agent: RID, time_horizon: float) -> void","description":"The minimal amount of time for which the agent's velocities that are computed by the simulation are safe with respect to other agents. The larger this number, the sooner this agent will respond to the presence of other agents, but the less freedom this agent has in choosing its velocities. A too high value will slow down agents movement considerably. Must be positive.","returnType":"void"},{"name":"agent_set_time_horizon_obstacles","signature":"agent_set_time_horizon_obstacles(agent: RID, time_horizon: float) -> void","description":"The minimal amount of time for which the agent's velocities that are computed by the simulation are safe with respect to static avoidance obstacles. The larger this number, the sooner this agent will respond to the presence of static avoidance obstacles, but the less freedom this agent has in choosing its velocities. A too high value will slow down agents movement considerably. Must be positive.","returnType":"void"},{"name":"agent_set_use_3d_avoidance","signature":"agent_set_use_3d_avoidance(agent: RID, enabled: bool) -> void","description":"Sets if the agent uses the 2D avoidance or the 3D avoidance while avoidance is enabled.\n\t\t\t\tIf true the agent calculates avoidance velocities in 3D for the xyz-axis, e.g. for games that take place in air, underwater or space. The 3D using agent only avoids other 3D avoidance using agent's. The 3D using agent only reacts to radius based avoidance obstacles. The 3D using agent ignores any vertices based obstacles. The 3D using agent only avoids other 3D using agent's.\n\t\t\t\tIf false the agent calculates avoidance velocities in 2D along the xz-axis ignoring the y-axis. The 2D using agent only avoids other 2D avoidance using agent's. The 2D using agent reacts to radius avoidance obstacles. The 2D using agent reacts to vertices based avoidance obstacles. The 2D using agent only avoids other 2D using agent's. 2D using agents will ignore other 2D using agents or obstacles that are below their current position or above their current position including the agents height in 2D avoidance.","returnType":"void"},{"name":"agent_set_velocity","signature":"agent_set_velocity(agent: RID, velocity: Vector3) -> void","description":"Sets [param velocity] as the new wanted velocity for the specified [param agent]. The avoidance simulation will try to fulfill this velocity if possible but will modify it to avoid collision with other agent's and obstacles. When an agent is teleported to a new position use [method agent_set_velocity_forced] as well to reset the internal simulation velocity.","returnType":"void"},{"name":"agent_set_velocity_forced","signature":"agent_set_velocity_forced(agent: RID, velocity: Vector3) -> void","description":"Replaces the internal velocity in the collision avoidance simulation with [param velocity] for the specified [param agent]. When an agent is teleported to a new position this function should be used in the same frame. If called frequently this function can get agents stuck.","returnType":"void"},{"name":"bake_from_source_geometry_data","signature":"bake_from_source_geometry_data(navigation_mesh: NavigationMesh, source_geometry_data: NavigationMeshSourceGeometryData3D, callback: Callable) -> void","description":"Bakes the provided [param navigation_mesh] with the data from the provided [param source_geometry_data]. After the process is finished the optional [param callback] will be called.","returnType":"void"},{"name":"bake_from_source_geometry_data_async","signature":"bake_from_source_geometry_data_async(navigation_mesh: NavigationMesh, source_geometry_data: NavigationMeshSourceGeometryData3D, callback: Callable) -> void","description":"Bakes the provided [param navigation_mesh] with the data from the provided [param source_geometry_data] as an async task running on a background thread. After the process is finished the optional [param callback] will be called.","returnType":"void"},{"name":"free_rid","signature":"free_rid(rid: RID) -> void","description":"Destroys the given RID.","returnType":"void"},{"name":"get_debug_enabled","signature":"get_debug_enabled() -> bool","description":"Returns true when the NavigationServer has debug enabled.","returnType":"bool"},{"name":"get_maps","signature":"get_maps() -> RID[]","description":"Returns all created navigation map s on the NavigationServer. This returns both 2D and 3D created navigation maps as there is technically no distinction between them.","returnType":"RID[]"},{"name":"get_process_info","signature":"get_process_info(process_info: int) -> int","description":"Returns information about the current state of the NavigationServer. See [enum ProcessInfo] for a list of available states.","returnType":"int"},{"name":"is_baking_navigation_mesh","signature":"is_baking_navigation_mesh(navigation_mesh: NavigationMesh) -> bool","description":"Returns true when the provided navigation mesh is being baked on a background thread.","returnType":"bool"},{"name":"link_create","signature":"link_create() -> RID","description":"Create a new link between two positions on a map.","returnType":"RID"},{"name":"link_get_enabled","signature":"link_get_enabled(link: RID) -> bool","description":"Returns true if the specified [param link] is enabled.","returnType":"bool"},{"name":"link_get_end_position","signature":"link_get_end_position(link: RID) -> Vector3","description":"Returns the ending position of this [param link].","returnType":"Vector3"},{"name":"link_get_enter_cost","signature":"link_get_enter_cost(link: RID) -> float","description":"Returns the enter cost of this [param link].","returnType":"float"},{"name":"link_get_map","signature":"link_get_map(link: RID) -> RID","description":"Returns the navigation map  the requested [param link] is currently assigned to.","returnType":"RID"},{"name":"link_get_navigation_layers","signature":"link_get_navigation_layers(link: RID) -> int","description":"Returns the navigation layers for this [param link].","returnType":"int"},{"name":"link_get_owner_id","signature":"link_get_owner_id(link: RID) -> int","description":"Returns the ObjectID of the object which manages this link.","returnType":"int"},{"name":"link_get_start_position","signature":"link_get_start_position(link: RID) -> Vector3","description":"Returns the starting position of this [param link].","returnType":"Vector3"},{"name":"link_get_travel_cost","signature":"link_get_travel_cost(link: RID) -> float","description":"Returns the travel cost of this [param link].","returnType":"float"},{"name":"link_is_bidirectional","signature":"link_is_bidirectional(link: RID) -> bool","description":"Returns whether this [param link] can be travelled in both directions.","returnType":"bool"},{"name":"link_set_bidirectional","signature":"link_set_bidirectional(link: RID, bidirectional: bool) -> void","description":"Sets whether this [param link] can be travelled in both directions.","returnType":"void"},{"name":"link_set_enabled","signature":"link_set_enabled(link: RID, enabled: bool) -> void","description":"If [param enabled] is true, the specified [param link] will contribute to its current navigation map.","returnType":"void"},{"name":"link_set_end_position","signature":"link_set_end_position(link: RID, position: Vector3) -> void","description":"Sets the exit position for the [param link].","returnType":"void"},{"name":"link_set_enter_cost","signature":"link_set_enter_cost(link: RID, enter_cost: float) -> void","description":"Sets the [param enter_cost] for this [param link].","returnType":"void"},{"name":"link_set_map","signature":"link_set_map(link: RID, map: RID) -> void","description":"Sets the navigation map  for the link.","returnType":"void"},{"name":"link_set_navigation_layers","signature":"link_set_navigation_layers(link: RID, navigation_layers: int) -> void","description":"Set the links's navigation layers. This allows selecting links from a path request (when using [method NavigationServer3D.map_get_path]).","returnType":"void"},{"name":"link_set_owner_id","signature":"link_set_owner_id(link: RID, owner_id: int) -> void","description":"Set the ObjectID of the object which manages this link.","returnType":"void"},{"name":"link_set_start_position","signature":"link_set_start_position(link: RID, position: Vector3) -> void","description":"Sets the entry position for this [param link].","returnType":"void"},{"name":"link_set_travel_cost","signature":"link_set_travel_cost(link: RID, travel_cost: float) -> void","description":"Sets the [param travel_cost] for this [param link].","returnType":"void"},{"name":"map_create","signature":"map_create() -> RID","description":"Create a new map.","returnType":"RID"},{"name":"map_force_update","signature":"map_force_update(map: RID) -> void","description":"This function immediately forces synchronization of the specified navigation [param map] . By default navigation maps are only synchronized at the end of each physics frame. This function can be used to immediately (re)calculate all the navigation meshes and region connections of the navigation map. This makes it possible to query a navigation path for a changed map immediately and in the same frame (multiple times if needed).\n\t\t\t\tDue to technical restrictions the current NavigationServer command queue will be flushed. This means all already queued update commands for this physics frame will be executed, even those intended for other maps, regions and agents not part of the specified map. The expensive computation of the navigation meshes and region connections of a map will only be done for the specified map. Other maps will receive the normal synchronization at the end of the physics frame. Should the specified map receive changes after the forced update it will update again as well when the other maps receive their update.\n\t\t\t\tAvoidance processing and dispatch of the safe_velocity signals is unaffected by this function and continues to happen for all maps and agents at the end of the physics frame.\n\t\t\t\tNote: With great power comes great responsibility. This function should only be used by users that really know what they are doing and have a good reason for it. Forcing an immediate update of a navigation map requires locking the NavigationServer and flushing the entire NavigationServer command queue. Not only can this severely impact the performance of a game but it can also introduce bugs if used inappropriately without much foresight.","returnType":"void"},{"name":"map_get_agents","signature":"map_get_agents(map: RID) -> RID[]","description":"Returns all navigation agents s that are currently assigned to the requested navigation [param map].","returnType":"RID[]"},{"name":"map_get_cell_height","signature":"map_get_cell_height(map: RID) -> float","description":"Returns the map cell height used to rasterize the navigation mesh vertices on the Y axis.","returnType":"float"},{"name":"map_get_cell_size","signature":"map_get_cell_size(map: RID) -> float","description":"Returns the map cell size used to rasterize the navigation mesh vertices on the XZ plane.","returnType":"float"},{"name":"map_get_closest_point","signature":"map_get_closest_point(map: RID, to_point: Vector3) -> Vector3","description":"Returns the navigation mesh surface point closest to the provided [param to_point] on the navigation [param map].","returnType":"Vector3"},{"name":"map_get_closest_point_normal","signature":"map_get_closest_point_normal(map: RID, to_point: Vector3) -> Vector3","description":"Returns the navigation mesh surface normal closest to the provided [param to_point] on the navigation [param map].","returnType":"Vector3"},{"name":"map_get_closest_point_owner","signature":"map_get_closest_point_owner(map: RID, to_point: Vector3) -> RID","description":"Returns the owner region RID for the navigation mesh surface point closest to the provided [param to_point] on the navigation [param map].","returnType":"RID"},{"name":"map_get_closest_point_to_segment","signature":"map_get_closest_point_to_segment(map: RID, start: Vector3, end: Vector3, use_collision: bool) -> Vector3","description":"Returns the navigation mesh surface point closest to the provided [param start] and [param end] segment on the navigation [param map].\n\t\t\t\tIf [param use_collision] is true, a closest point test is only done when the segment intersects with the navigation mesh surface.","returnType":"Vector3"},{"name":"map_get_edge_connection_margin","signature":"map_get_edge_connection_margin(map: RID) -> float","description":"Returns the edge connection margin of the map. This distance is the minimum vertex distance needed to connect two edges from different regions.","returnType":"float"},{"name":"map_get_iteration_id","signature":"map_get_iteration_id(map: RID) -> int","description":"Returns the current iteration id of the navigation map. Every time the navigation map changes and synchronizes the iteration id increases. An iteration id of 0 means the navigation map has never synchronized.\n\t\t\t\tNote: The iteration id will wrap back to 1 after reaching its range limit.","returnType":"int"},{"name":"map_get_link_connection_radius","signature":"map_get_link_connection_radius(map: RID) -> float","description":"Returns the link connection radius of the map. This distance is the maximum range any link will search for navigation mesh polygons to connect to.","returnType":"float"},{"name":"map_get_links","signature":"map_get_links(map: RID) -> RID[]","description":"Returns all navigation link s that are currently assigned to the requested navigation [param map].","returnType":"RID[]"},{"name":"map_get_merge_rasterizer_cell_scale","signature":"map_get_merge_rasterizer_cell_scale(map: RID) -> float","description":"Returns map's internal merge rasterizer cell scale.","returnType":"float"},{"name":"map_get_obstacles","signature":"map_get_obstacles(map: RID) -> RID[]","description":"Returns all navigation obstacle s that are currently assigned to the requested navigation [param map].","returnType":"RID[]"},{"name":"map_get_path","signature":"map_get_path(map: RID, origin: Vector3, destination: Vector3, optimize: bool, navigation_layers: int) -> PackedVector3Array","description":"Returns the navigation path to reach the destination from the origin. [param navigation_layers] is a bitmask of all region navigation layers that are allowed to be in the path.","returnType":"PackedVector3Array"},{"name":"map_get_random_point","signature":"map_get_random_point(map: RID, navigation_layers: int, uniformly: bool) -> Vector3","description":"Returns a random position picked from all map region polygons with matching [param navigation_layers].\n\t\t\t\tIf [param uniformly] is true, all map regions, polygons, and faces are weighted by their surface area (slower).\n\t\t\t\tIf [param uniformly] is false, just a random region and a random polygon are picked (faster).","returnType":"Vector3"},{"name":"map_get_regions","signature":"map_get_regions(map: RID) -> RID[]","description":"Returns all navigation regions s that are currently assigned to the requested navigation [param map].","returnType":"RID[]"},{"name":"map_get_up","signature":"map_get_up(map: RID) -> Vector3","description":"Returns the map's up direction.","returnType":"Vector3"},{"name":"map_get_use_async_iterations","signature":"map_get_use_async_iterations(map: RID) -> bool","description":"Returns true if the [param map] synchronization uses an async process that runs on a background thread.","returnType":"bool"},{"name":"map_get_use_edge_connections","signature":"map_get_use_edge_connections(map: RID) -> bool","description":"Returns true if the navigation [param map] allows navigation regions to use edge connections to connect with other navigation regions within proximity of the navigation map edge connection margin.","returnType":"bool"},{"name":"map_is_active","signature":"map_is_active(map: RID) -> bool","description":"Returns true if the map is active.","returnType":"bool"},{"name":"map_set_active","signature":"map_set_active(map: RID, active: bool) -> void","description":"Sets the map active.","returnType":"void"},{"name":"map_set_cell_height","signature":"map_set_cell_height(map: RID, cell_height: float) -> void","description":"Sets the map cell height used to rasterize the navigation mesh vertices on the Y axis. Must match with the cell height of the used navigation meshes.","returnType":"void"},{"name":"map_set_cell_size","signature":"map_set_cell_size(map: RID, cell_size: float) -> void","description":"Sets the map cell size used to rasterize the navigation mesh vertices on the XZ plane. Must match with the cell size of the used navigation meshes.","returnType":"void"},{"name":"map_set_edge_connection_margin","signature":"map_set_edge_connection_margin(map: RID, margin: float) -> void","description":"Set the map edge connection margin used to weld the compatible region edges.","returnType":"void"},{"name":"map_set_link_connection_radius","signature":"map_set_link_connection_radius(map: RID, radius: float) -> void","description":"Set the map's link connection radius used to connect links to navigation polygons.","returnType":"void"},{"name":"map_set_merge_rasterizer_cell_scale","signature":"map_set_merge_rasterizer_cell_scale(map: RID, scale: float) -> void","description":"Set the map's internal merge rasterizer cell scale used to control merging sensitivity.","returnType":"void"},{"name":"map_set_up","signature":"map_set_up(map: RID, up: Vector3) -> void","description":"Sets the map up direction.","returnType":"void"},{"name":"map_set_use_async_iterations","signature":"map_set_use_async_iterations(map: RID, enabled: bool) -> void","description":"If [param enabled] is true the [param map] synchronization uses an async process that runs on a background thread.","returnType":"void"},{"name":"map_set_use_edge_connections","signature":"map_set_use_edge_connections(map: RID, enabled: bool) -> void","description":"Set the navigation [param map] edge connection use. If [param enabled] is true, the navigation map allows navigation regions to use edge connections to connect with other navigation regions within proximity of the navigation map edge connection margin.","returnType":"void"},{"name":"obstacle_create","signature":"obstacle_create() -> RID","description":"Creates a new obstacle.","returnType":"RID"},{"name":"obstacle_get_avoidance_enabled","signature":"obstacle_get_avoidance_enabled(obstacle: RID) -> bool","description":"Returns true if the provided [param obstacle] has avoidance enabled.","returnType":"bool"},{"name":"obstacle_get_avoidance_layers","signature":"obstacle_get_avoidance_layers(obstacle: RID) -> int","description":"Returns the avoidance_layers bitmask of the specified [param obstacle].","returnType":"int"},{"name":"obstacle_get_height","signature":"obstacle_get_height(obstacle: RID) -> float","description":"Returns the height of the specified [param obstacle].","returnType":"float"},{"name":"obstacle_get_map","signature":"obstacle_get_map(obstacle: RID) -> RID","description":"Returns the navigation map  the requested [param obstacle] is currently assigned to.","returnType":"RID"},{"name":"obstacle_get_paused","signature":"obstacle_get_paused(obstacle: RID) -> bool","description":"Returns true if the specified [param obstacle] is paused.","returnType":"bool"},{"name":"obstacle_get_position","signature":"obstacle_get_position(obstacle: RID) -> Vector3","description":"Returns the position of the specified [param obstacle] in world space.","returnType":"Vector3"},{"name":"obstacle_get_radius","signature":"obstacle_get_radius(obstacle: RID) -> float","description":"Returns the radius of the specified dynamic [param obstacle].","returnType":"float"},{"name":"obstacle_get_use_3d_avoidance","signature":"obstacle_get_use_3d_avoidance(obstacle: RID) -> bool","description":"Returns true if the provided [param obstacle] uses avoidance in 3D space Vector3(x,y,z) instead of horizontal 2D Vector2(x,y) / Vector3(x,0.0,z).","returnType":"bool"},{"name":"obstacle_get_velocity","signature":"obstacle_get_velocity(obstacle: RID) -> Vector3","description":"Returns the velocity of the specified dynamic [param obstacle].","returnType":"Vector3"},{"name":"obstacle_get_vertices","signature":"obstacle_get_vertices(obstacle: RID) -> PackedVector3Array","description":"Returns the outline vertices for the specified [param obstacle].","returnType":"PackedVector3Array"},{"name":"obstacle_set_avoidance_enabled","signature":"obstacle_set_avoidance_enabled(obstacle: RID, enabled: bool) -> void","description":"If [param enabled] is true, the provided [param obstacle] affects avoidance using agents.","returnType":"void"},{"name":"obstacle_set_avoidance_layers","signature":"obstacle_set_avoidance_layers(obstacle: RID, layers: int) -> void","description":"Set the obstacles's avoidance_layers bitmask.","returnType":"void"},{"name":"obstacle_set_height","signature":"obstacle_set_height(obstacle: RID, height: float) -> void","description":"Sets the [param height] for the [param obstacle]. In 3D agents will ignore obstacles that are above or below them while using 2D avoidance.","returnType":"void"},{"name":"obstacle_set_map","signature":"obstacle_set_map(obstacle: RID, map: RID) -> void","description":"Assigns the [param obstacle] to a navigation map.","returnType":"void"},{"name":"obstacle_set_paused","signature":"obstacle_set_paused(obstacle: RID, paused: bool) -> void","description":"If [param paused] is true the specified [param obstacle] will not be processed, e.g. affect avoidance velocities.","returnType":"void"},{"name":"obstacle_set_position","signature":"obstacle_set_position(obstacle: RID, position: Vector3) -> void","description":"Updates the [param position] in world space for the [param obstacle].","returnType":"void"},{"name":"obstacle_set_radius","signature":"obstacle_set_radius(obstacle: RID, radius: float) -> void","description":"Sets the radius of the dynamic obstacle.","returnType":"void"},{"name":"obstacle_set_use_3d_avoidance","signature":"obstacle_set_use_3d_avoidance(obstacle: RID, enabled: bool) -> void","description":"Sets if the [param obstacle] uses the 2D avoidance or the 3D avoidance while avoidance is enabled.","returnType":"void"},{"name":"obstacle_set_velocity","signature":"obstacle_set_velocity(obstacle: RID, velocity: Vector3) -> void","description":"Sets [param velocity] of the dynamic [param obstacle]. Allows other agents to better predict the movement of the dynamic obstacle. Only works in combination with the radius of the obstacle.","returnType":"void"},{"name":"obstacle_set_vertices","signature":"obstacle_set_vertices(obstacle: RID, vertices: PackedVector3Array) -> void","description":"Sets the outline vertices for the obstacle. If the vertices are winded in clockwise order agents will be pushed in by the obstacle, else they will be pushed out.","returnType":"void"},{"name":"parse_source_geometry_data","signature":"parse_source_geometry_data(navigation_mesh: NavigationMesh, source_geometry_data: NavigationMeshSourceGeometryData3D, root_node: Node, callback: Callable) -> void","description":"Parses the  for source geometry according to the properties of [param navigation_mesh]. Updates the provided [param source_geometry_data] resource with the resulting data. The resource can then be used to bake a navigation mesh with [method bake_from_source_geometry_data]. After the process is finished the optional [param callback] will be called.\n\t\t\t\tNote: This function needs to run on the main thread or with a deferred call as the SceneTree is not thread-safe.\n\t\t\t\tPerformance: While convenient, reading data arrays from  resources can affect the frame rate negatively. The data needs to be received from the GPU, stalling the  in the process. For performance prefer the use of e.g. collision shapes or creating the data arrays entirely in code.","returnType":"void"},{"name":"query_path","signature":"query_path(parameters: NavigationPathQueryParameters3D, result: NavigationPathQueryResult3D, callback: Callable) -> void","description":"Queries a path in a given navigation map. Start and target position and other parameters are defined through . Updates the provided  result object with the path among other results requested by the query. After the process is finished the optional [param callback] will be called.","returnType":"void"},{"name":"region_bake_navigation_mesh","signature":"region_bake_navigation_mesh(navigation_mesh: NavigationMesh, root_node: Node) -> void","description":"Bakes the [param navigation_mesh] with bake source geometry collected starting from the [param root_node].","returnType":"void"},{"name":"region_create","signature":"region_create() -> RID","description":"Creates a new region.","returnType":"RID"},{"name":"region_get_bounds","signature":"region_get_bounds(region: RID) -> AABB","description":"Returns the axis-aligned bounding box for the [param region]'s transformed navigation mesh.","returnType":"AABB"},{"name":"region_get_closest_point","signature":"region_get_closest_point(region: RID, to_point: Vector3) -> Vector3","description":"Returns the navigation mesh surface point closest to the provided [param to_point] on the navigation [param region].","returnType":"Vector3"},{"name":"region_get_closest_point_normal","signature":"region_get_closest_point_normal(region: RID, to_point: Vector3) -> Vector3","description":"Returns the navigation mesh surface normal closest to the provided [param to_point] on the navigation [param region].","returnType":"Vector3"},{"name":"region_get_closest_point_to_segment","signature":"region_get_closest_point_to_segment(region: RID, start: Vector3, end: Vector3, use_collision: bool) -> Vector3","description":"Returns the navigation mesh surface point closest to the provided [param start] and [param end] segment on the navigation [param region].\n\t\t\t\tIf [param use_collision] is true, a closest point test is only done when the segment intersects with the navigation mesh surface.","returnType":"Vector3"},{"name":"region_get_connection_pathway_end","signature":"region_get_connection_pathway_end(region: RID, connection: int) -> Vector3","description":"Returns the ending point of a connection door. [param connection] is an index between 0 and the return value of [method region_get_connections_count].","returnType":"Vector3"},{"name":"region_get_connection_pathway_start","signature":"region_get_connection_pathway_start(region: RID, connection: int) -> Vector3","description":"Returns the starting point of a connection door. [param connection] is an index between 0 and the return value of [method region_get_connections_count].","returnType":"Vector3"},{"name":"region_get_connections_count","signature":"region_get_connections_count(region: RID) -> int","description":"Returns how many connections this [param region] has with other regions in the map.","returnType":"int"},{"name":"region_get_enabled","signature":"region_get_enabled(region: RID) -> bool","description":"Returns true if the specified [param region] is enabled.","returnType":"bool"},{"name":"region_get_enter_cost","signature":"region_get_enter_cost(region: RID) -> float","description":"Returns the enter cost of this [param region].","returnType":"float"},{"name":"region_get_map","signature":"region_get_map(region: RID) -> RID","description":"Returns the navigation map  the requested [param region] is currently assigned to.","returnType":"RID"},{"name":"region_get_navigation_layers","signature":"region_get_navigation_layers(region: RID) -> int","description":"Returns the region's navigation layers.","returnType":"int"},{"name":"region_get_owner_id","signature":"region_get_owner_id(region: RID) -> int","description":"Returns the ObjectID of the object which manages this region.","returnType":"int"},{"name":"region_get_random_point","signature":"region_get_random_point(region: RID, navigation_layers: int, uniformly: bool) -> Vector3","description":"Returns a random position picked from all region polygons with matching [param navigation_layers].\n\t\t\t\tIf [param uniformly] is true, all region polygons and faces are weighted by their surface area (slower).\n\t\t\t\tIf [param uniformly] is false, just a random polygon and face is picked (faster).","returnType":"Vector3"},{"name":"region_get_transform","signature":"region_get_transform(region: RID) -> Transform3D","description":"Returns the global transformation of this [param region].","returnType":"Transform3D"},{"name":"region_get_travel_cost","signature":"region_get_travel_cost(region: RID) -> float","description":"Returns the travel cost of this [param region].","returnType":"float"},{"name":"region_get_use_edge_connections","signature":"region_get_use_edge_connections(region: RID) -> bool","description":"Returns true if the navigation [param region] is set to use edge connections to connect with other navigation regions within proximity of the navigation map edge connection margin.","returnType":"bool"},{"name":"region_owns_point","signature":"region_owns_point(region: RID, point: Vector3) -> bool","description":"Returns true if the provided [param point] in world space is currently owned by the provided navigation [param region]. Owned in this context means that one of the region's navigation mesh polygon faces has a possible position at the closest distance to this point compared to all other navigation meshes from other navigation regions that are also registered on the navigation map of the provided region.\n\t\t\t\tIf multiple navigation meshes have positions at equal distance the navigation region whose polygons are processed first wins the ownership. Polygons are processed in the same order that navigation regions were registered on the NavigationServer.\n\t\t\t\tNote: If navigation meshes from different navigation regions overlap (which should be avoided in general) the result might not be what is expected.","returnType":"bool"},{"name":"region_set_enabled","signature":"region_set_enabled(region: RID, enabled: bool) -> void","description":"If [param enabled] is true, the specified [param region] will contribute to its current navigation map.","returnType":"void"},{"name":"region_set_enter_cost","signature":"region_set_enter_cost(region: RID, enter_cost: float) -> void","description":"Sets the [param enter_cost] for this [param region].","returnType":"void"},{"name":"region_set_map","signature":"region_set_map(region: RID, map: RID) -> void","description":"Sets the map for the region.","returnType":"void"},{"name":"region_set_navigation_layers","signature":"region_set_navigation_layers(region: RID, navigation_layers: int) -> void","description":"Set the region's navigation layers. This allows selecting regions from a path request (when using [method NavigationServer3D.map_get_path]).","returnType":"void"},{"name":"region_set_navigation_mesh","signature":"region_set_navigation_mesh(region: RID, navigation_mesh: NavigationMesh) -> void","description":"Sets the navigation mesh for the region.","returnType":"void"},{"name":"region_set_owner_id","signature":"region_set_owner_id(region: RID, owner_id: int) -> void","description":"Set the ObjectID of the object which manages this region.","returnType":"void"},{"name":"region_set_transform","signature":"region_set_transform(region: RID, transform: Transform3D) -> void","description":"Sets the global transformation for the region.","returnType":"void"},{"name":"region_set_travel_cost","signature":"region_set_travel_cost(region: RID, travel_cost: float) -> void","description":"Sets the [param travel_cost] for this [param region].","returnType":"void"},{"name":"region_set_use_edge_connections","signature":"region_set_use_edge_connections(region: RID, enabled: bool) -> void","description":"If [param enabled] is true, the navigation [param region] will use edge connections to connect with other navigation regions within proximity of the navigation map edge connection margin.","returnType":"void"},{"name":"set_active","signature":"set_active(active: bool) -> void","description":"Control activation of this server.","returnType":"void"},{"name":"set_debug_enabled","signature":"set_debug_enabled(enabled: bool) -> void","description":"If true enables debug mode on the NavigationServer.","returnType":"void"},{"name":"simplify_path","signature":"simplify_path(path: PackedVector3Array, epsilon: float) -> PackedVector3Array","description":"Returns a simplified version of [param path] with less critical path points removed. The simplification amount is in worlds units and controlled by [param epsilon]. The simplification uses a variant of Ramer-Douglas-Peucker algorithm for curve point decimation.\n\t\t\t\tPath simplification can be helpful to mitigate various path following issues that can arise with certain agent types and script behaviors. E.g. \"steering\" agents or avoidance in \"open fields\".","returnType":"PackedVector3Array"},{"name":"source_geometry_parser_create","signature":"source_geometry_parser_create() -> RID","description":"Creates a new source geometry parser. If a  is set for the parser with [method source_geometry_parser_set_callback] the callback will be called for every single node that gets parsed whenever [method parse_source_geometry_data] is used.","returnType":"RID"},{"name":"source_geometry_parser_set_callback","signature":"source_geometry_parser_set_callback(parser: RID, callback: Callable) -> void","description":"Sets the [param callback]  for the specific source geometry [param parser]. The  will receive a call with the following parameters:\n\t\t\t\t- navigation_mesh - The  reference used to define the parse settings. Do NOT edit or add directly to the navigation mesh.\n\t\t\t\t- source_geometry_data - The  reference. Add custom source geometry for navigation mesh baking to this object.\n\t\t\t\t- node - The  that is parsed.","returnType":"void"}],"signals":[{"name":"avoidance_debug_changed","description":"Emitted when avoidance debug settings are changed. Only available in debug builds."},{"name":"map_changed","description":"Emitted when a navigation map is updated, when a region moves or is modified."},{"name":"navigation_debug_changed","description":"Emitted when navigation debug settings are changed. Only available in debug builds."}]},"NinePatchRect":{"name":"NinePatchRect","description":"A control that displays a texture by keeping its corners intact, but tiling its edges and center.","inherits":"Control","properties":[{"name":"axis_stretch_horizontal","type":"int","description":"The stretch mode to use for horizontal stretching/tiling. See [enum NinePatchRect.AxisStretchMode] for possible values."},{"name":"axis_stretch_vertical","type":"int","description":"The stretch mode to use for vertical stretching/tiling. See [enum NinePatchRect.AxisStretchMode] for possible values."},{"name":"draw_center","type":"bool","description":"If [code]true[/code], draw the panel's center. Else, only draw the 9-slice's borders."},{"name":"patch_margin_bottom","type":"int","description":"The height of the 9-slice's bottom row. A margin of 16 means the 9-slice's bottom corners and side will have a height of 16 pixels. You can set all 4 margin values individually to create panels with non-uniform borders."},{"name":"patch_margin_left","type":"int","description":"The width of the 9-slice's left column. A margin of 16 means the 9-slice's left corners and side will have a width of 16 pixels. You can set all 4 margin values individually to create panels with non-uniform borders."},{"name":"patch_margin_right","type":"int","description":"The width of the 9-slice's right column. A margin of 16 means the 9-slice's right corners and side will have a width of 16 pixels. You can set all 4 margin values individually to create panels with non-uniform borders."},{"name":"patch_margin_top","type":"int","description":"The height of the 9-slice's top row. A margin of 16 means the 9-slice's top corners and side will have a height of 16 pixels. You can set all 4 margin values individually to create panels with non-uniform borders."},{"name":"region_rect","type":"Rect2","description":"Rectangular region of the texture to sample from. If you're working with an atlas, use this property to define the area the 9-slice should use. All other properties are relative to this one. If the rect is empty, NinePatchRect will use the whole texture."},{"name":"texture","type":"Texture2D","description":"The node's texture resource."}],"methods":[{"name":"get_patch_margin","signature":"get_patch_margin(margin: int) -> int","description":"Returns the size of the margin on the specified [enum Side].","returnType":"int"},{"name":"set_patch_margin","signature":"set_patch_margin(margin: int, value: int) -> void","description":"Sets the size of the margin on the specified [enum Side] to [param value] pixels.","returnType":"void"}],"signals":[{"name":"texture_changed","description":"Emitted when the node's texture changes."}]},"Node":{"name":"Node","description":"Base class for all scene objects.","inherits":"Object","properties":[{"name":"auto_translate_mode","type":"int","description":"Defines if any text should automatically change to its translated version depending on the current locale (for nodes such as [Label], [RichTextLabel], [Window], etc.). Also decides if the node's strings should be parsed for POT generation.\n\t\t\t[b]Note:[/b] For the root node, auto translate mode can also be set via [member ProjectSettings.internationalization/rendering/root_node_auto_translate]."},{"name":"editor_description","type":"String","description":"An optional description to the node. It will be displayed as a tooltip when hovering over the node in the editor's Scene dock."},{"name":"multiplayer","type":"MultiplayerAPI","description":"The [MultiplayerAPI] instance associated with this node. See [method SceneTree.get_multiplayer].\n\t\t\t[b]Note:[/b] Renaming the node, or moving it in the tree, will not move the [MultiplayerAPI] to the new path, you will have to update this manually."},{"name":"name","type":"StringName","description":"The name of the node. This name must be unique among the siblings (other child nodes from the same parent). When set to an existing sibling's name, the node is automatically renamed.\n\t\t\t[b]Note:[/b] When changing the name, the following characters will be replaced with an underscore: ([code].[/code] [code]:[/code] [code]@[/code] [code]/[/code] [code]\"[/code] [code]%[/code]). In particular, the [code]@[/code] character is reserved for auto-generated names. See also [method String.validate_node_name]."},{"name":"owner","type":"Node","description":"The owner of this node. The owner must be an ancestor of this node. When packing the owner node in a [PackedScene], all the nodes it owns are also saved with it. See also [member unique_name_in_owner].\n\t\t\t[b]Note:[/b] In the editor, nodes not owned by the scene root are usually not displayed in the Scene dock, and will [b]not[/b] be saved. To prevent this, remember to set the owner after calling [method add_child]."},{"name":"physics_interpolation_mode","type":"int","description":"Allows enabling or disabling physics interpolation per node, offering a finer grain of control than turning physics interpolation on and off globally. See [member ProjectSettings.physics/common/physics_interpolation] and [member SceneTree.physics_interpolation] for the global setting.\n\t\t\t[b]Note:[/b] When teleporting a node to a distant position you should temporarily disable interpolation with [method Node.reset_physics_interpolation]."},{"name":"process_mode","type":"int","description":"The node's processing behavior (see [enum ProcessMode]). To check if the node can process in its current mode, use [method can_process]."},{"name":"process_physics_priority","type":"int","description":"Similar to [member process_priority] but for [constant NOTIFICATION_PHYSICS_PROCESS], [method _physics_process], or [constant NOTIFICATION_INTERNAL_PHYSICS_PROCESS]."},{"name":"process_priority","type":"int","description":"The node's execution order of the process callbacks ([method _process], [constant NOTIFICATION_PROCESS], and [constant NOTIFICATION_INTERNAL_PROCESS]). Nodes whose priority value is [i]lower[/i] call their process callbacks first, regardless of tree order."},{"name":"process_thread_group","type":"int","description":"Set the process thread group for this node (basically, whether it receives [constant NOTIFICATION_PROCESS], [constant NOTIFICATION_PHYSICS_PROCESS], [method _process] or [method _physics_process] (and the internal versions) on the main thread or in a sub-thread.\n\t\t\tBy default, the thread group is [constant PROCESS_THREAD_GROUP_INHERIT], which means that this node belongs to the same thread group as the parent node. The thread groups means that nodes in a specific thread group will process together, separate to other thread groups (depending on [member process_thread_group_order]). If the value is set is [constant PROCESS_THREAD_GROUP_SUB_THREAD], this thread group will occur on a sub thread (not the main thread), otherwise if set to [constant PROCESS_THREAD_GROUP_MAIN_THREAD] it will process on the main thread. If there is not a parent or grandparent node set to something other than inherit, the node will belong to the [i]default thread group[/i]. This default group will process on the main thread and its group order is 0.\n\t\t\tDuring processing in a sub-thread, accessing most functions in nodes outside the thread group is forbidden (and it will result in an error in debug mode). Use [method Object.call_deferred], [method call_thread_safe], [method call_deferred_thread_group] and the likes in order to communicate from the thread groups to the main thread (or to other thread groups).\n\t\t\tTo better understand process thread groups, the idea is that any node set to any other value than [constant PROCESS_THREAD_GROUP_INHERIT] will include any child (and grandchild) nodes set to inherit into its process thread group. This means that the processing of all the nodes in the group will happen together, at the same time as the node including them."},{"name":"process_thread_group_order","type":"int","description":"Change the process thread group order. Groups with a lesser order will process before groups with a greater order. This is useful when a large amount of nodes process in sub thread and, afterwards, another group wants to collect their result in the main thread, as an example."},{"name":"process_thread_messages","type":"int","description":"Set whether the current thread group will process messages (calls to [method call_deferred_thread_group] on threads), and whether it wants to receive them during regular process or physics process callbacks."},{"name":"scene_file_path","type":"String","description":"The original scene's file path, if the node has been instantiated from a [PackedScene] file. Only scene root nodes contains this."},{"name":"unique_name_in_owner","type":"bool","description":"If [code]true[/code], the node can be accessed from any node sharing the same [member owner] or from the [member owner] itself, with special [code]%Name[/code] syntax in [method get_node].\n\t\t\t[b]Note:[/b] If another node with the same [member owner] shares the same [member name] as this node, the other node will no longer be accessible as unique."}],"methods":[{"name":"_enter_tree","signature":"_enter_tree() -> void","description":"Called when the node enters the  (e.g. upon instantiating, scene changing, or after calling [method add_child] in a script). If the node has children, its [method _enter_tree] callback will be called first, and then that of the children.\n\t\t\t\tCorresponds to the [constant NOTIFICATION_ENTER_TREE] notification in [method Object._notification].","returnType":"void"},{"name":"_exit_tree","signature":"_exit_tree() -> void","description":"Called when the node is about to leave the  (e.g. upon freeing, scene changing, or after calling [method remove_child] in a script). If the node has children, its [method _exit_tree] callback will be called last, after all its children have left the tree.\n\t\t\t\tCorresponds to the [constant NOTIFICATION_EXIT_TREE] notification in [method Object._notification] and signal [signal tree_exiting]. To get notified when the node has already left the active tree, connect to the [signal tree_exited].","returnType":"void"},{"name":"_get_configuration_warnings","signature":"_get_configuration_warnings() -> PackedStringArray","description":"The elements in the array returned from this method are displayed as warnings in the Scene dock if the script that overrides it is a tool script.\n\t\t\t\tReturning an empty array produces no warnings.\n\t\t\t\tCall [method update_configuration_warnings] when the warnings need to be updated for this node.\n\t\t\t\t\n\t\t\t\t@export var energy = 0:\n\t\t\t\t    set(value):\n\t\t\t\t        energy = value\n\t\t\t\t        update_configuration_warnings()\n\n\t\t\t\tfunc _get_configuration_warnings():\n\t\t\t\t    if energy &lt; 0:\n\t\t\t\t        return [\"Energy must be 0 or greater.\"]\n\t\t\t\t    else:\n\t\t\t\t        return []\n\t\t\t\t","returnType":"PackedStringArray"},{"name":"_input","signature":"_input(event: InputEvent) -> void","description":"Called when there is an input event. The input event propagates up through the node tree until a node consumes it.\n\t\t\t\tIt is only called if input processing is enabled, which is done automatically if this method is overridden, and can be toggled with [method set_process_input].\n\t\t\t\tTo consume the input event and stop it propagating further to other nodes, [method Viewport.set_input_as_handled] can be called.\n\t\t\t\tFor gameplay input, [method _unhandled_input] and [method _unhandled_key_input] are usually a better fit as they allow the GUI to intercept the events first.\n\t\t\t\tNote: This method is only called if the node is present in the scene tree (i.e. if it's not an orphan).","returnType":"void"},{"name":"_physics_process","signature":"_physics_process(delta: float) -> void","description":"Called during the physics processing step of the main loop. Physics processing means that the frame rate is synced to the physics, i.e. the [param delta] parameter will generally be constant (see exceptions below). [param delta] is in seconds.\n\t\t\t\tIt is only called if physics processing is enabled, which is done automatically if this method is overridden, and can be toggled with [method set_physics_process].\n\t\t\t\tProcessing happens in order of [member process_physics_priority], lower priority values are called first. Nodes with the same priority are processed in tree order, or top to bottom as seen in the editor (also known as pre-order traversal).\n\t\t\t\tCorresponds to the [constant NOTIFICATION_PHYSICS_PROCESS] notification in [method Object._notification].\n\t\t\t\tNote: This method is only called if the node is present in the scene tree (i.e. if it's not an orphan).\n\t\t\t\tNote: [param delta] will be larger than expected if running at a framerate lower than [member Engine.physics_ticks_per_second] / [member Engine.max_physics_steps_per_frame] FPS. This is done to avoid \"spiral of death\" scenarios where performance would plummet due to an ever-increasing number of physics steps per frame. This behavior affects both [method _process] and [method _physics_process]. As a result, avoid using [param delta] for time measurements in real-world seconds. Use the  singleton's methods for this purpose instead, such as [method Time.get_ticks_usec].","returnType":"void"},{"name":"_process","signature":"_process(delta: float) -> void","description":"Called during the processing step of the main loop. Processing happens at every frame and as fast as possible, so the [param delta] time since the previous frame is not constant. [param delta] is in seconds.\n\t\t\t\tIt is only called if processing is enabled, which is done automatically if this method is overridden, and can be toggled with [method set_process].\n\t\t\t\tProcessing happens in order of [member process_priority], lower priority values are called first. Nodes with the same priority are processed in tree order, or top to bottom as seen in the editor (also known as pre-order traversal).\n\t\t\t\tCorresponds to the [constant NOTIFICATION_PROCESS] notification in [method Object._notification].\n\t\t\t\tNote: This method is only called if the node is present in the scene tree (i.e. if it's not an orphan).\n\t\t\t\tNote: [param delta] will be larger than expected if running at a framerate lower than [member Engine.physics_ticks_per_second] / [member Engine.max_physics_steps_per_frame] FPS. This is done to avoid \"spiral of death\" scenarios where performance would plummet due to an ever-increasing number of physics steps per frame. This behavior affects both [method _process] and [method _physics_process]. As a result, avoid using [param delta] for time measurements in real-world seconds. Use the  singleton's methods for this purpose instead, such as [method Time.get_ticks_usec].","returnType":"void"},{"name":"_ready","signature":"_ready() -> void","description":"Called when the node is \"ready\", i.e. when both the node and its children have entered the scene tree. If the node has children, their [method _ready] callbacks get triggered first, and the parent node will receive the ready notification afterwards.\n\t\t\t\tCorresponds to the [constant NOTIFICATION_READY] notification in [method Object._notification]. See also the @onready annotation for variables.\n\t\t\t\tUsually used for initialization. For even earlier initialization, [method Object._init] may be used. See also [method _enter_tree].\n\t\t\t\tNote: This method may be called only once for each node. After removing a node from the scene tree and adding it again, [method _ready] will not be called a second time. This can be bypassed by requesting another call with [method request_ready], which may be called anywhere before adding the node again.","returnType":"void"},{"name":"_shortcut_input","signature":"_shortcut_input(event: InputEvent) -> void","description":"Called when an , , or  hasn't been consumed by [method _input] or any GUI  item. It is called before [method _unhandled_key_input] and [method _unhandled_input]. The input event propagates up through the node tree until a node consumes it.\n\t\t\t\tIt is only called if shortcut processing is enabled, which is done automatically if this method is overridden, and can be toggled with [method set_process_shortcut_input].\n\t\t\t\tTo consume the input event and stop it propagating further to other nodes, [method Viewport.set_input_as_handled] can be called.\n\t\t\t\tThis method can be used to handle shortcuts. For generic GUI events, use [method _input] instead. Gameplay events should usually be handled with either [method _unhandled_input] or [method _unhandled_key_input].\n\t\t\t\tNote: This method is only called if the node is present in the scene tree (i.e. if it's not orphan).","returnType":"void"},{"name":"_unhandled_input","signature":"_unhandled_input(event: InputEvent) -> void","description":"Called when an  hasn't been consumed by [method _input] or any GUI  item. It is called after [method _shortcut_input] and after [method _unhandled_key_input]. The input event propagates up through the node tree until a node consumes it.\n\t\t\t\tIt is only called if unhandled input processing is enabled, which is done automatically if this method is overridden, and can be toggled with [method set_process_unhandled_input].\n\t\t\t\tTo consume the input event and stop it propagating further to other nodes, [method Viewport.set_input_as_handled] can be called.\n\t\t\t\tFor gameplay input, this method is usually a better fit than [method _input], as GUI events need a higher priority. For keyboard shortcuts, consider using [method _shortcut_input] instead, as it is called before this method. Finally, to handle keyboard events, consider using [method _unhandled_key_input] for performance reasons.\n\t\t\t\tNote: This method is only called if the node is present in the scene tree (i.e. if it's not an orphan).","returnType":"void"},{"name":"_unhandled_key_input","signature":"_unhandled_key_input(event: InputEvent) -> void","description":"Called when an  hasn't been consumed by [method _input] or any GUI  item. It is called after [method _shortcut_input] but before [method _unhandled_input]. The input event propagates up through the node tree until a node consumes it.\n\t\t\t\tIt is only called if unhandled key input processing is enabled, which is done automatically if this method is overridden, and can be toggled with [method set_process_unhandled_key_input].\n\t\t\t\tTo consume the input event and stop it propagating further to other nodes, [method Viewport.set_input_as_handled] can be called.\n\t\t\t\tThis method can be used to handle Unicode character input with Alt, Alt + Ctrl, and Alt + Shift modifiers, after shortcuts were handled.\n\t\t\t\tFor gameplay input, this and [method _unhandled_input] are usually a better fit than [method _input], as GUI events should be handled first. This method also performs better than [method _unhandled_input], since unrelated events such as  are automatically filtered. For shortcuts, consider using [method _shortcut_input] instead.\n\t\t\t\tNote: This method is only called if the node is present in the scene tree (i.e. if it's not an orphan).","returnType":"void"},{"name":"add_child","signature":"add_child(node: Node, force_readable_name: bool, internal: int) -> void","description":"Adds a child [param node]. Nodes can have any number of children, but every child must have a unique name. Child nodes are automatically deleted when the parent node is deleted, so an entire scene can be removed by deleting its topmost node.\n\t\t\t\tIf [param force_readable_name] is true, improves the readability of the added [param node]. If not named, the [param node] is renamed to its type, and if it shares [member name] with a sibling, a number is suffixed more appropriately. This operation is very slow. As such, it is recommended leaving this to false, which assigns a dummy name featuring @ in both situations.\n\t\t\t\tIf [param internal] is different than [constant INTERNAL_MODE_DISABLED], the child will be added as internal node. These nodes are ignored by methods like [method get_children], unless their parameter include_internal is true. The intended usage is to hide the internal nodes from the user, so the user won't accidentally delete or modify them. Used by some GUI nodes, e.g. . See [enum InternalMode] for available modes.\n\t\t\t\tNote: If [param node] already has a parent, this method will fail. Use [method remove_child] first to remove [param node] from its current parent. For example:\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tvar child_node = get_child(0)\n\t\t\t\tif child_node.get_parent():\n\t\t\t\t    child_node.get_parent().remove_child(child_node)\n\t\t\t\tadd_child(child_node)\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tNode childNode = GetChild(0);\n\t\t\t\tif (childNode.GetParent() != null)\n\t\t\t\t{\n\t\t\t\t    childNode.GetParent().RemoveChild(childNode);\n\t\t\t\t}\n\t\t\t\tAddChild(childNode);\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tIf you need the child node to be added below a specific node in the list of children, use [method add_sibling] instead of this method.\n\t\t\t\tNote: If you want a child to be persisted to a , you must set [member owner] in addition to calling [method add_child]. This is typically relevant for [url=$DOCS_URL/tutorials/plugins/running_code_in_the_editor.html]tool scripts and [url=$DOCS_URL/tutorials/plugins/editor/index.html]editor plugins. If [method add_child] is called without setting [member owner], the newly added  will not be visible in the scene tree, though it will be visible in the 2D/3D view.","returnType":"void"},{"name":"add_sibling","signature":"add_sibling(sibling: Node, force_readable_name: bool) -> void","description":"Adds a [param sibling] node to this node's parent, and moves the added sibling right below this node.\n\t\t\t\tIf [param force_readable_name] is true, improves the readability of the added [param sibling]. If not named, the [param sibling] is renamed to its type, and if it shares [member name] with a sibling, a number is suffixed more appropriately. This operation is very slow. As such, it is recommended leaving this to false, which assigns a dummy name featuring @ in both situations.\n\t\t\t\tUse [method add_child] instead of this method if you don't need the child node to be added below a specific node in the list of children.\n\t\t\t\tNote: If this node is internal, the added sibling will be internal too (see [method add_child]'s internal parameter).","returnType":"void"},{"name":"add_to_group","signature":"add_to_group(group: StringName, persistent: bool) -> void","description":"Adds the node to the [param group]. Groups can be helpful to organize a subset of nodes, for example \"enemies\" or \"collectables\". See notes in the description, and the group methods in .\n\t\t\t\tIf [param persistent] is true, the group will be stored when saved inside a . All groups created and displayed in the Node dock are persistent.\n\t\t\t\tNote: To improve performance, the order of group names is not guaranteed and may vary between project runs. Therefore, do not rely on the group order.\n\t\t\t\tNote: 's group methods will not work on this node if not inside the tree (see [method is_inside_tree]).","returnType":"void"},{"name":"atr","signature":"atr(message: String, context: StringName) -> String","description":"Translates a [param message], using the translation catalogs configured in the Project Settings. Further [param context] can be specified to help with the translation. Note that most  nodes automatically translate their strings, so this method is mostly useful for formatted strings or custom drawn text.\n\t\t\t\tThis method works the same as [method Object.tr], with the addition of respecting the [member auto_translate_mode] state.\n\t\t\t\tIf [method Object.can_translate_messages] is false, or no translation is available, this method returns the [param message] without changes. See [method Object.set_message_translation].\n\t\t\t\tFor detailed examples, see [url=$DOCS_URL/tutorials/i18n/internationalizing_games.html]Internationalizing games.","returnType":"String"},{"name":"atr_n","signature":"atr_n(message: String, plural_message: StringName, n: int, context: StringName) -> String","description":"Translates a [param message] or [param plural_message], using the translation catalogs configured in the Project Settings. Further [param context] can be specified to help with the translation.\n\t\t\t\tThis method works the same as [method Object.tr_n], with the addition of respecting the [member auto_translate_mode] state.\n\t\t\t\tIf [method Object.can_translate_messages] is false, or no translation is available, this method returns [param message] or [param plural_message], without changes. See [method Object.set_message_translation].\n\t\t\t\tThe [param n] is the number, or amount, of the message's subject. It is used by the translation system to fetch the correct plural form for the current language.\n\t\t\t\tFor detailed examples, see [url=$DOCS_URL/tutorials/i18n/localization_using_gettext.html]Localization using gettext.\n\t\t\t\tNote: Negative and  numbers may not properly apply to some countable subjects. It's recommended to handle these cases with [method atr].","returnType":"String"},{"name":"call_deferred_thread_group","signature":"call_deferred_thread_group(method: StringName) -> Variant","description":"This function is similar to [method Object.call_deferred] except that the call will take place when the node thread group is processed. If the node thread group processes in sub-threads, then the call will be done on that thread, right before [constant NOTIFICATION_PROCESS] or [constant NOTIFICATION_PHYSICS_PROCESS], the [method _process] or [method _physics_process] or their internal versions are called.","returnType":"Variant"},{"name":"call_thread_safe","signature":"call_thread_safe(method: StringName) -> Variant","description":"This function ensures that the calling of this function will succeed, no matter whether it's being done from a thread or not. If called from a thread that is not allowed to call the function, the call will become deferred. Otherwise, the call will go through directly.","returnType":"Variant"},{"name":"can_process","signature":"can_process() -> bool","description":"Returns true if the node can receive processing notifications and input callbacks ([constant NOTIFICATION_PROCESS], [method _input], etc.) from the  and . The returned value depends on [member process_mode]:\n\t\t\t\t- If set to [constant PROCESS_MODE_PAUSABLE], returns true when the game is processing, i.e. [member SceneTree.paused] is false;\n\t\t\t\t- If set to [constant PROCESS_MODE_WHEN_PAUSED], returns true when the game is paused, i.e. [member SceneTree.paused] is true;\n\t\t\t\t- If set to [constant PROCESS_MODE_ALWAYS], always returns true;\n\t\t\t\t- If set to [constant PROCESS_MODE_DISABLED], always returns false;\n\t\t\t\t- If set to [constant PROCESS_MODE_INHERIT], use the parent node's [member process_mode] to determine the result.\n\t\t\t\tIf the node is not inside the tree, returns false no matter the value of [member process_mode].","returnType":"bool"},{"name":"create_tween","signature":"create_tween() -> Tween","description":"Creates a new  and binds it to this node.\n\t\t\t\tThis is the equivalent of doing:\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tget_tree().create_tween().bind_node(self)\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tGetTree().CreateTween().BindNode(this);\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tThe Tween will start automatically on the next process frame or physics frame (depending on [enum Tween.TweenProcessMode]). See [method Tween.bind_node] for more info on Tweens bound to nodes.\n\t\t\t\tNote: The method can still be used when the node is not inside . It can fail in an unlikely case of using a custom .","returnType":"Tween"},{"name":"duplicate","signature":"duplicate(flags: int) -> Node","description":"Duplicates the node, returning a new node with all of its properties, signals, groups, and children copied from the original. The behavior can be tweaked through the [param flags] (see [enum DuplicateFlags]).\n\t\t\t\tNote: For nodes with a  attached, if [method Object._init] has been defined with required parameters, the duplicated node will not have a .","returnType":"Node"},{"name":"find_child","signature":"find_child(pattern: String, recursive: bool, owned: bool) -> Node","description":"Finds the first descendant of this node whose [member name] matches [param pattern], returning null if no match is found. The matching is done against node names, not their paths, through [method String.match]. As such, it is case-sensitive, \"*\" matches zero or more characters, and \"?\" matches any single character.\n\t\t\t\tIf [param recursive] is false, only this node's direct children are checked. Nodes are checked in tree order, so this node's first direct child is checked first, then its own direct children, etc., before moving to the second direct child, and so on. Internal children are also included in the search (see internal parameter in [method add_child]).\n\t\t\t\tIf [param owned] is true, only descendants with a valid [member owner] node are checked.\n\t\t\t\tNote: This method can be very slow. Consider storing a reference to the found node in a variable. Alternatively, use [method get_node] with unique names (see [member unique_name_in_owner]).\n\t\t\t\tNote: To find all descendant nodes matching a pattern or a class type, see [method find_children].","returnType":"Node"},{"name":"find_children","signature":"find_children(pattern: String, type: String, recursive: bool, owned: bool) -> Node[]","description":"Finds all descendants of this node whose names match [param pattern], returning an empty  if no match is found. The matching is done against node names, not their paths, through [method String.match]. As such, it is case-sensitive, \"*\" matches zero or more characters, and \"?\" matches any single character.\n\t\t\t\tIf [param type] is not empty, only ancestors inheriting from [param type] are included (see [method Object.is_class]).\n\t\t\t\tIf [param recursive] is false, only this node's direct children are checked. Nodes are checked in tree order, so this node's first direct child is checked first, then its own direct children, etc., before moving to the second direct child, and so on. Internal children are also included in the search (see internal parameter in [method add_child]).\n\t\t\t\tIf [param owned] is true, only descendants with a valid [member owner] node are checked.\n\t\t\t\tNote: This method can be very slow. Consider storing references to the found nodes in a variable.\n\t\t\t\tNote: To find a single descendant node matching a pattern, see [method find_child].","returnType":"Node[]"},{"name":"find_parent","signature":"find_parent(pattern: String) -> Node","description":"Finds the first ancestor of this node whose [member name] matches [param pattern], returning null if no match is found. The matching is done through [method String.match]. As such, it is case-sensitive, \"*\" matches zero or more characters, and \"?\" matches any single character. See also [method find_child] and [method find_children].\n\t\t\t\tNote: As this method walks upwards in the scene tree, it can be slow in large, deeply nested nodes. Consider storing a reference to the found node in a variable. Alternatively, use [method get_node] with unique names (see [member unique_name_in_owner]).","returnType":"Node"},{"name":"get_child","signature":"get_child(idx: int, include_internal: bool) -> Node","description":"Fetches a child node by its index. Each child node has an index relative its siblings (see [method get_index]). The first child is at index 0. Negative values can also be used to start from the end of the list. This method can be used in combination with [method get_child_count] to iterate over this node's children. If no child exists at the given index, this method returns null and an error is generated.\n\t\t\t\tIf [param include_internal] is false, internal children are ignored (see [method add_child]'s internal parameter).\n\t\t\t\t\n\t\t\t\t# Assuming the following are children of this node, in order:\n\t\t\t\t# First, Middle, Last.\n\n\t\t\t\tvar a = get_child(0).name  # a is \"First\"\n\t\t\t\tvar b = get_child(1).name  # b is \"Middle\"\n\t\t\t\tvar b = get_child(2).name  # b is \"Last\"\n\t\t\t\tvar c = get_child(-1).name # c is \"Last\"\n\t\t\t\t\n\t\t\t\tNote: To fetch a node by , use [method get_node].","returnType":"Node"},{"name":"get_child_count","signature":"get_child_count(include_internal: bool) -> int","description":"Returns the number of children of this node.\n\t\t\t\tIf [param include_internal] is false, internal children are not counted (see [method add_child]'s internal parameter).","returnType":"int"},{"name":"get_children","signature":"get_children(include_internal: bool) -> Node[]","description":"Returns all children of this node inside an .\n\t\t\t\tIf [param include_internal] is false, excludes internal children from the returned array (see [method add_child]'s internal parameter).","returnType":"Node[]"},{"name":"get_groups","signature":"get_groups() -> StringName[]","description":"Returns an  of group names that the node has been added to.\n\t\t\t\tNote: To improve performance, the order of group names is not guaranteed and may vary between project runs. Therefore, do not rely on the group order.\n\t\t\t\tNote: This method may also return some group names starting with an underscore (_). These are internally used by the engine. To avoid conflicts, do not use custom groups starting with underscores. To exclude internal groups, see the following code snippet:\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t# Stores the node's non-internal groups only (as an array of StringNames).\n\t\t\t\tvar non_internal_groups = []\n\t\t\t\tfor group in get_groups():\n\t\t\t\t    if not str(group).begins_with(\"_\"):\n\t\t\t\t        non_internal_groups.push_back(group)\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t// Stores the node's non-internal groups only (as a List of StringNames).\n\t\t\t\tList&lt;string&gt; nonInternalGroups = new List&lt;string&gt;();\n\t\t\t\tforeach (string group in GetGroups())\n\t\t\t\t{\n\t\t\t\t    if (!group.BeginsWith(\"_\"))\n\t\t\t\t        nonInternalGroups.Add(group);\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t","returnType":"StringName[]"},{"name":"get_index","signature":"get_index(include_internal: bool) -> int","description":"Returns this node's order among its siblings. The first node's index is 0. See also [method get_child].\n\t\t\t\tIf [param include_internal] is false, returns the index ignoring internal children. The first, non-internal child will have an index of 0 (see [method add_child]'s internal parameter).","returnType":"int"},{"name":"get_last_exclusive_window","signature":"get_last_exclusive_window() -> Window","description":"Returns the  that contains this node, or the last exclusive child in a chain of windows starting with the one that contains this node.","returnType":"Window"},{"name":"get_multiplayer_authority","signature":"get_multiplayer_authority() -> int","description":"Returns the peer ID of the multiplayer authority for this node. See [method set_multiplayer_authority].","returnType":"int"},{"name":"get_node","signature":"get_node(path: NodePath) -> Node","description":"Fetches a node. The  can either be a relative path (from this node), or an absolute path (from the [member SceneTree.root]) to a node. If [param path] does not point to a valid node, generates an error and returns null. Attempts to access methods on the return value will result in an \"Attempt to call &lt;method&gt; on a null instance.\" error.\n\t\t\t\tNote: Fetching by absolute path only works when the node is inside the scene tree (see [method is_inside_tree]).\n\t\t\t\tExample: Assume this method is called from the Character node, inside the following tree:\n\t\t\t\t[codeblock lang=text]\n\t\t\t\t ┖╴root\n\t\t\t\t    ┠╴Character (you are here!)\n\t\t\t\t    ┃  ┠╴Sword\n\t\t\t\t    ┃  ┖╴Backpack\n\t\t\t\t    ┃     ┖╴Dagger\n\t\t\t\t    ┠╴MyGame\n\t\t\t\t    ┖╴Swamp\n\t\t\t\t       ┠╴Alligator\n\t\t\t\t       ┠╴Mosquito\n\t\t\t\t       ┖╴Goblin\n\t\t\t\t\n\t\t\t\tThe following calls will return a valid node:\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tget_node(\"Sword\")\n\t\t\t\tget_node(\"Backpack/Dagger\")\n\t\t\t\tget_node(\"../Swamp/Alligator\")\n\t\t\t\tget_node(\"/root/MyGame\")\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tGetNode(\"Sword\");\n\t\t\t\tGetNode(\"Backpack/Dagger\");\n\t\t\t\tGetNode(\"../Swamp/Alligator\");\n\t\t\t\tGetNode(\"/root/MyGame\");\n\t\t\t\t\n\t\t\t\t","returnType":"Node"},{"name":"get_node_and_resource","signature":"get_node_and_resource(path: NodePath) -> Array","description":"Fetches a node and its most nested resource as specified by the 's subname. Returns an  of size 3 where:\n\t\t\t\t- Element 0 is the , or null if not found;\n\t\t\t\t- Element 1 is the subname's last nested , or null if not found;\n\t\t\t\t- Element 2 is the remaining , referring to an existing, non- property (see [method Object.get_indexed]).\n\t\t\t\tExample: Assume that the child's [member Sprite2D.texture] has been assigned a :\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tvar a = get_node_and_resource(\"Area2D/Sprite2D\")\n\t\t\t\tprint(a.name) # Prints Sprite2D\n\t\t\t\tprint(a)      # Prints &lt;null&gt;\n\t\t\t\tprint(a)      # Prints ^\"\"\n\n\t\t\t\tvar b = get_node_and_resource(\"Area2D/Sprite2D:texture:atlas\")\n\t\t\t\tprint(b.name)        # Prints Sprite2D\n\t\t\t\tprint(b.get_class()) # Prints AtlasTexture\n\t\t\t\tprint(b)             # Prints ^\"\"\n\n\t\t\t\tvar c = get_node_and_resource(\"Area2D/Sprite2D:texture:atlas:region\")\n\t\t\t\tprint(c.name)        # Prints Sprite2D\n\t\t\t\tprint(c.get_class()) # Prints AtlasTexture\n\t\t\t\tprint(c)             # Prints ^\":region\"\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tvar a = GetNodeAndResource(NodePath(\"Area2D/Sprite2D\"));\n\t\t\t\tGD.Print(a.Name); // Prints Sprite2D\n\t\t\t\tGD.Print(a);      // Prints &lt;null&gt;\n\t\t\t\tGD.Print(a);      // Prints ^\"\n\n\t\t\t\tvar b = GetNodeAndResource(NodePath(\"Area2D/Sprite2D:texture:atlas\"));\n\t\t\t\tGD.Print(b.name);        // Prints Sprite2D\n\t\t\t\tGD.Print(b.get_class()); // Prints AtlasTexture\n\t\t\t\tGD.Print(b);             // Prints ^\"\"\n\n\t\t\t\tvar c = GetNodeAndResource(NodePath(\"Area2D/Sprite2D:texture:atlas:region\"));\n\t\t\t\tGD.Print(c.name);        // Prints Sprite2D\n\t\t\t\tGD.Print(c.get_class()); // Prints AtlasTexture\n\t\t\t\tGD.Print(c);             // Prints ^\":region\"\n\t\t\t\t\n\t\t\t\t","returnType":"Array"},{"name":"get_node_or_null","signature":"get_node_or_null(path: NodePath) -> Node","description":"Fetches a node by . Similar to [method get_node], but does not generate an error if [param path] does not point to a valid node.","returnType":"Node"},{"name":"get_parent","signature":"get_parent() -> Node","description":"Returns this node's parent node, or null if the node doesn't have a parent.","returnType":"Node"},{"name":"get_path","signature":"get_path() -> NodePath","description":"Returns the node's absolute path, relative to the [member SceneTree.root]. If the node is not inside the scene tree, this method fails and returns an empty .","returnType":"NodePath"},{"name":"get_path_to","signature":"get_path_to(node: Node, use_unique_path: bool) -> NodePath","description":"Returns the relative  from this node to the specified [param node]. Both nodes must be in the same  or scene hierarchy, otherwise this method fails and returns an empty .\n\t\t\t\tIf [param use_unique_path] is true, returns the shortest path accounting for this node's unique name (see [member unique_name_in_owner]).\n\t\t\t\tNote: If you get a relative path which starts from a unique node, the path may be longer than a normal relative path, due to the addition of the unique node's name.","returnType":"NodePath"},{"name":"get_physics_process_delta_time","signature":"get_physics_process_delta_time() -> float","description":"Returns the time elapsed (in seconds) since the last physics callback. This value is identical to [method _physics_process]'s delta parameter, and is often consistent at run-time, unless [member Engine.physics_ticks_per_second] is changed. See also [constant NOTIFICATION_PHYSICS_PROCESS].\n\t\t\t\tNote: The returned value will be larger than expected if running at a framerate lower than [member Engine.physics_ticks_per_second] / [member Engine.max_physics_steps_per_frame] FPS. This is done to avoid \"spiral of death\" scenarios where performance would plummet due to an ever-increasing number of physics steps per frame. This behavior affects both [method _process] and [method _physics_process]. As a result, avoid using delta for time measurements in real-world seconds. Use the  singleton's methods for this purpose instead, such as [method Time.get_ticks_usec].","returnType":"float"},{"name":"get_process_delta_time","signature":"get_process_delta_time() -> float","description":"Returns the time elapsed (in seconds) since the last process callback. This value is identical to [method _process]'s delta parameter, and may vary from frame to frame. See also [constant NOTIFICATION_PROCESS].\n\t\t\t\tNote: The returned value will be larger than expected if running at a framerate lower than [member Engine.physics_ticks_per_second] / [member Engine.max_physics_steps_per_frame] FPS. This is done to avoid \"spiral of death\" scenarios where performance would plummet due to an ever-increasing number of physics steps per frame. This behavior affects both [method _process] and [method _physics_process]. As a result, avoid using delta for time measurements in real-world seconds. Use the  singleton's methods for this purpose instead, such as [method Time.get_ticks_usec].","returnType":"float"},{"name":"get_rpc_config","signature":"get_rpc_config() -> Variant","description":"Returns a  mapping method names to their RPC configuration defined for this node using [method rpc_config].","returnType":"Variant"},{"name":"get_scene_instance_load_placeholder","signature":"get_scene_instance_load_placeholder() -> bool","description":"Returns true if this node is an instance load placeholder. See  and [method set_scene_instance_load_placeholder].","returnType":"bool"},{"name":"get_tree","signature":"get_tree() -> SceneTree","description":"Returns the  that contains this node. If this node is not inside the tree, generates an error and returns null. See also [method is_inside_tree].","returnType":"SceneTree"},{"name":"get_tree_string","signature":"get_tree_string() -> String","description":"Returns the tree as a . Used mainly for debugging purposes. This version displays the path relative to the current node, and is good for copy/pasting into the [method get_node] function. It also can be used in game UI/UX.\n\t\t\t\tMay print, for example:\n\t\t\t\t[codeblock lang=text]\n\t\t\t\tTheGame\n\t\t\t\tTheGame/Menu\n\t\t\t\tTheGame/Menu/Label\n\t\t\t\tTheGame/Menu/Camera2D\n\t\t\t\tTheGame/SplashScreen\n\t\t\t\tTheGame/SplashScreen/Camera2D\n\t\t\t\t","returnType":"String"},{"name":"get_tree_string_pretty","signature":"get_tree_string_pretty() -> String","description":"Similar to [method get_tree_string], this returns the tree as a . This version displays a more graphical representation similar to what is displayed in the Scene Dock. It is useful for inspecting larger trees.\n\t\t\t\tMay print, for example:\n\t\t\t\t[codeblock lang=text]\n\t\t\t\t ┖╴TheGame\n\t\t\t\t    ┠╴Menu\n\t\t\t\t    ┃  ┠╴Label\n\t\t\t\t    ┃  ┖╴Camera2D\n\t\t\t\t    ┖╴SplashScreen\n\t\t\t\t       ┖╴Camera2D\n\t\t\t\t","returnType":"String"},{"name":"get_viewport","signature":"get_viewport() -> Viewport","description":"Returns the node's closest  ancestor, if the node is inside the tree. Otherwise, returns null.","returnType":"Viewport"},{"name":"get_window","signature":"get_window() -> Window","description":"Returns the  that contains this node. If the node is in the main window, this is equivalent to getting the root node (get_tree().get_root()).","returnType":"Window"},{"name":"has_node","signature":"has_node(path: NodePath) -> bool","description":"Returns true if the [param path] points to a valid node. See also [method get_node].","returnType":"bool"},{"name":"has_node_and_resource","signature":"has_node_and_resource(path: NodePath) -> bool","description":"Returns true if [param path] points to a valid node and its subnames point to a valid , e.g. Area2D/CollisionShape2D:shape. Properties that are not  types (such as nodes or other  types) are not considered. See also [method get_node_and_resource].","returnType":"bool"},{"name":"is_ancestor_of","signature":"is_ancestor_of(node: Node) -> bool","description":"Returns true if the given [param node] is a direct or indirect child of this node.","returnType":"bool"},{"name":"is_displayed_folded","signature":"is_displayed_folded() -> bool","description":"Returns true if the node is folded (collapsed) in the Scene dock. This method is intended to be used in editor plugins and tools. See also [method set_display_folded].","returnType":"bool"},{"name":"is_editable_instance","signature":"is_editable_instance(node: Node) -> bool","description":"Returns true if [param node] has editable children enabled relative to this node. This method is intended to be used in editor plugins and tools. See also [method set_editable_instance].","returnType":"bool"},{"name":"is_greater_than","signature":"is_greater_than(node: Node) -> bool","description":"Returns true if the given [param node] occurs later in the scene hierarchy than this node. A node occurring later is usually processed last.","returnType":"bool"},{"name":"is_in_group","signature":"is_in_group(group: StringName) -> bool","description":"Returns true if this node has been added to the given [param group]. See [method add_to_group] and [method remove_from_group]. See also notes in the description, and the 's group methods.","returnType":"bool"},{"name":"is_inside_tree","signature":"is_inside_tree() -> bool","description":"Returns true if this node is currently inside a . See also [method get_tree].","returnType":"bool"},{"name":"is_multiplayer_authority","signature":"is_multiplayer_authority() -> bool","description":"Returns true if the local system is the multiplayer authority of this node.","returnType":"bool"},{"name":"is_node_ready","signature":"is_node_ready() -> bool","description":"Returns true if the node is ready, i.e. it's inside scene tree and all its children are initialized.\n\t\t\t\t[method request_ready] resets it back to false.","returnType":"bool"},{"name":"is_part_of_edited_scene","signature":"is_part_of_edited_scene() -> bool","description":"Returns true if the node is part of the scene currently opened in the editor.","returnType":"bool"},{"name":"is_physics_interpolated","signature":"is_physics_interpolated() -> bool","description":"Returns true if physics interpolation is enabled for this node (see [member physics_interpolation_mode]).\n\t\t\t\tNote: Interpolation will only be active if both the flag is set and physics interpolation is enabled within the . This can be tested using [method is_physics_interpolated_and_enabled].","returnType":"bool"},{"name":"is_physics_interpolated_and_enabled","signature":"is_physics_interpolated_and_enabled() -> bool","description":"Returns true if physics interpolation is enabled (see [member physics_interpolation_mode]) and enabled in the .\n\t\t\t\tThis is a convenience version of [method is_physics_interpolated] that also checks whether physics interpolation is enabled globally.\n\t\t\t\tSee [member SceneTree.physics_interpolation] and [member ProjectSettings.physics/common/physics_interpolation].","returnType":"bool"},{"name":"is_physics_processing","signature":"is_physics_processing() -> bool","description":"Returns true if physics processing is enabled (see [method set_physics_process]).","returnType":"bool"},{"name":"is_physics_processing_internal","signature":"is_physics_processing_internal() -> bool","description":"Returns true if internal physics processing is enabled (see [method set_physics_process_internal]).","returnType":"bool"},{"name":"is_processing","signature":"is_processing() -> bool","description":"Returns true if processing is enabled (see [method set_process]).","returnType":"bool"},{"name":"is_processing_input","signature":"is_processing_input() -> bool","description":"Returns true if the node is processing input (see [method set_process_input]).","returnType":"bool"},{"name":"is_processing_internal","signature":"is_processing_internal() -> bool","description":"Returns true if internal processing is enabled (see [method set_process_internal]).","returnType":"bool"},{"name":"is_processing_shortcut_input","signature":"is_processing_shortcut_input() -> bool","description":"Returns true if the node is processing shortcuts (see [method set_process_shortcut_input]).","returnType":"bool"},{"name":"is_processing_unhandled_input","signature":"is_processing_unhandled_input() -> bool","description":"Returns true if the node is processing unhandled input (see [method set_process_unhandled_input]).","returnType":"bool"},{"name":"is_processing_unhandled_key_input","signature":"is_processing_unhandled_key_input() -> bool","description":"Returns true if the node is processing unhandled key input (see [method set_process_unhandled_key_input]).","returnType":"bool"},{"name":"move_child","signature":"move_child(child_node: Node, to_index: int) -> void","description":"Moves [param child_node] to the given index. A node's index is the order among its siblings. If [param to_index] is negative, the index is counted from the end of the list. See also [method get_child] and [method get_index].\n\t\t\t\tNote: The processing order of several engine callbacks ([method _ready], [method _process], etc.) and notifications sent through [method propagate_notification] is affected by tree order.  nodes are also rendered in tree order. See also [member process_priority].","returnType":"void"},{"name":"notify_deferred_thread_group","signature":"notify_deferred_thread_group(what: int) -> void","description":"Similar to [method call_deferred_thread_group], but for notifications.","returnType":"void"},{"name":"notify_thread_safe","signature":"notify_thread_safe(what: int) -> void","description":"Similar to [method call_thread_safe], but for notifications.","returnType":"void"},{"name":"print_orphan_nodes","signature":"print_orphan_nodes() -> void","description":"Prints all orphan nodes (nodes outside the ). Useful for debugging.\n\t\t\t\tNote: This method only works in debug builds. Does nothing in a project exported in release mode.","returnType":"void"},{"name":"print_tree","signature":"print_tree() -> void","description":"Prints the node and its children to the console, recursively. The node does not have to be inside the tree. This method outputs s relative to this node, and is good for copy/pasting into [method get_node]. See also [method print_tree_pretty].\n\t\t\t\tMay print, for example:\n\t\t\t\t[codeblock lang=text]\n\t\t\t\t.\n\t\t\t\tMenu\n\t\t\t\tMenu/Label\n\t\t\t\tMenu/Camera2D\n\t\t\t\tSplashScreen\n\t\t\t\tSplashScreen/Camera2D\n\t\t\t\t","returnType":"void"},{"name":"print_tree_pretty","signature":"print_tree_pretty() -> void","description":"Prints the node and its children to the console, recursively. The node does not have to be inside the tree. Similar to [method print_tree], but the graphical representation looks like what is displayed in the editor's Scene dock. It is useful for inspecting larger trees.\n\t\t\t\tMay print, for example:\n\t\t\t\t[codeblock lang=text]\n\t\t\t\t ┖╴TheGame\n\t\t\t\t    ┠╴Menu\n\t\t\t\t    ┃  ┠╴Label\n\t\t\t\t    ┃  ┖╴Camera2D\n\t\t\t\t    ┖╴SplashScreen\n\t\t\t\t       ┖╴Camera2D\n\t\t\t\t","returnType":"void"},{"name":"propagate_call","signature":"propagate_call(method: StringName, args: Array, parent_first: bool) -> void","description":"Calls the given [param method] name, passing [param args] as arguments, on this node and all of its children, recursively.\n\t\t\t\tIf [param parent_first] is true, the method is called on this node first, then on all of its children. If false, the children's methods are called first.","returnType":"void"},{"name":"propagate_notification","signature":"propagate_notification(what: int) -> void","description":"Calls [method Object.notification] with [param what] on this node and all of its children, recursively.","returnType":"void"},{"name":"queue_free","signature":"queue_free() -> void","description":"Queues this node to be deleted at the end of the current frame. When deleted, all of its children are deleted as well, and all references to the node and its children become invalid.\n\t\t\t\tUnlike with [method Object.free], the node is not deleted instantly, and it can still be accessed before deletion. It is also safe to call [method queue_free] multiple times. Use [method Object.is_queued_for_deletion] to check if the node will be deleted at the end of the frame.\n\t\t\t\tNote: The node will only be freed after all other deferred calls are finished. Using this method is not always the same as calling [method Object.free] through [method Object.call_deferred].","returnType":"void"},{"name":"remove_child","signature":"remove_child(node: Node) -> void","description":"Removes a child [param node]. The [param node], along with its children, are not deleted. To delete a node, see [method queue_free].\n\t\t\t\tNote: When this node is inside the tree, this method sets the [member owner] of the removed [param node] (or its descendants) to null, if their [member owner] is no longer an ancestor (see [method is_ancestor_of]).","returnType":"void"},{"name":"remove_from_group","signature":"remove_from_group(group: StringName) -> void","description":"Removes the node from the given [param group]. Does nothing if the node is not in the [param group]. See also notes in the description, and the 's group methods.","returnType":"void"},{"name":"reparent","signature":"reparent(new_parent: Node, keep_global_transform: bool) -> void","description":"Changes the parent of this  to the [param new_parent]. The node needs to already have a parent. The node's [member owner] is preserved if its owner is still reachable from the new location (i.e., the node is still a descendant of the new parent after the operation).\n\t\t\t\tIf [param keep_global_transform] is true, the node's global transform will be preserved if supported. ,  and  support this argument (but  keeps only position).","returnType":"void"},{"name":"replace_by","signature":"replace_by(node: Node, keep_groups: bool) -> void","description":"Replaces this node by the given [param node]. All children of this node are moved to [param node].\n\t\t\t\tIf [param keep_groups] is true, the [param node] is added to the same groups that the replaced node is in (see [method add_to_group]).\n\t\t\t\tWarning: The replaced node is removed from the tree, but it is not deleted. To prevent memory leaks, store a reference to the node in a variable, or use [method Object.free].","returnType":"void"},{"name":"request_ready","signature":"request_ready() -> void","description":"Requests [method _ready] to be called again the next time the node enters the tree. Does not immediately call [method _ready].\n\t\t\t\tNote: This method only affects the current node. If the node's children also need to request ready, this method needs to be called for each one of them. When the node and its children enter the tree again, the order of [method _ready] callbacks will be the same as normal.","returnType":"void"},{"name":"reset_physics_interpolation","signature":"reset_physics_interpolation() -> void","description":"When physics interpolation is active, moving a node to a radically different transform (such as placement within a level) can result in a visible glitch as the object is rendered moving from the old to new position over the physics tick.\n\t\t\t\tThat glitch can be prevented by calling this method, which temporarily disables interpolation until the physics tick is complete.\n\t\t\t\tThe notification [constant NOTIFICATION_RESET_PHYSICS_INTERPOLATION] will be received by the node and all children recursively.\n\t\t\t\tNote: This function should be called after moving the node, rather than before.","returnType":"void"},{"name":"rpc","signature":"rpc(method: StringName) -> int","description":"Sends a remote procedure call request for the given [param method] to peers on the network (and locally), sending additional arguments to the method called by the RPC. The call request will only be received by nodes with the same , including the exact same [member name]. Behavior depends on the RPC configuration for the given [param method] (see [method rpc_config] and [annotation @GDScript.@rpc]). By default, methods are not exposed to RPCs.\n\t\t\t\tMay return [constant OK] if the call is successful, [constant ERR_INVALID_PARAMETER] if the arguments passed in the [param method] do not match, [constant ERR_UNCONFIGURED] if the node's [member multiplayer] cannot be fetched (such as when the node is not inside the tree), [constant ERR_CONNECTION_ERROR] if [member multiplayer]'s connection is not available.\n\t\t\t\tNote: You can only safely use RPCs on clients after you received the [signal MultiplayerAPI.connected_to_server] signal from the . You also need to keep track of the connection state, either by the  signals like [signal MultiplayerAPI.server_disconnected] or by checking (get_multiplayer().peer.get_connection_status() == CONNECTION_CONNECTED).","returnType":"int"},{"name":"rpc_config","signature":"rpc_config(method: StringName, config: Variant) -> void","description":"Changes the RPC configuration for the given [param method]. [param config] should either be null to disable the feature (as by default), or a  containing the following entries:\n\t\t\t\t- rpc_mode: see [enum MultiplayerAPI.RPCMode];\n\t\t\t\t- transfer_mode: see [enum MultiplayerPeer.TransferMode];\n\t\t\t\t- call_local: if true, the method will also be called locally;\n\t\t\t\t- channel: an  representing the channel to send the RPC on.\n\t\t\t\tNote: In GDScript, this method corresponds to the [annotation @GDScript.@rpc] annotation, with various parameters passed (@rpc(any), @rpc(authority)...). See also the [url=$DOCS_URL/tutorials/networking/high_level_multiplayer.html]high-level multiplayer tutorial.","returnType":"void"},{"name":"rpc_id","signature":"rpc_id(peer_id: int, method: StringName) -> int","description":"Sends a [method rpc] to a specific peer identified by [param peer_id] (see [method MultiplayerPeer.set_target_peer]).\n\t\t\t\tMay return [constant OK] if the call is successful, [constant ERR_INVALID_PARAMETER] if the arguments passed in the [param method] do not match, [constant ERR_UNCONFIGURED] if the node's [member multiplayer] cannot be fetched (such as when the node is not inside the tree), [constant ERR_CONNECTION_ERROR] if [member multiplayer]'s connection is not available.","returnType":"int"},{"name":"set_deferred_thread_group","signature":"set_deferred_thread_group(property: StringName, value: Variant) -> void","description":"Similar to [method call_deferred_thread_group], but for setting properties.","returnType":"void"},{"name":"set_display_folded","signature":"set_display_folded(fold: bool) -> void","description":"If set to true, the node appears folded in the Scene dock. As a result, all of its children are hidden. This method is intended to be used in editor plugins and tools, but it also works in release builds. See also [method is_displayed_folded].","returnType":"void"},{"name":"set_editable_instance","signature":"set_editable_instance(node: Node, is_editable: bool) -> void","description":"Set to true to allow all nodes owned by [param node] to be available, and editable, in the Scene dock, even if their [member owner] is not the scene root. This method is intended to be used in editor plugins and tools, but it also works in release builds. See also [method is_editable_instance].","returnType":"void"},{"name":"set_multiplayer_authority","signature":"set_multiplayer_authority(id: int, recursive: bool) -> void","description":"Sets the node's multiplayer authority to the peer with the given peer [param id]. The multiplayer authority is the peer that has authority over the node on the network. Defaults to peer ID 1 (the server). Useful in conjunction with [method rpc_config] and the .\n\t\t\t\tIf [param recursive] is true, the given peer is recursively set as the authority for all children of this node.\n\t\t\t\tWarning: This does not automatically replicate the new authority to other peers. It is the developer's responsibility to do so. You may replicate the new authority's information using [member MultiplayerSpawner.spawn_function], an RPC, or a . Furthermore, the parent's authority does not propagate to newly added children.","returnType":"void"},{"name":"set_physics_process","signature":"set_physics_process(enable: bool) -> void","description":"If set to true, enables physics (fixed framerate) processing. When a node is being processed, it will receive a [constant NOTIFICATION_PHYSICS_PROCESS] at a fixed (usually 60 FPS, see [member Engine.physics_ticks_per_second] to change) interval (and the [method _physics_process] callback will be called if it exists).\n\t\t\t\tNote: If [method _physics_process] is overridden, this will be automatically enabled before [method _ready] is called.","returnType":"void"},{"name":"set_physics_process_internal","signature":"set_physics_process_internal(enable: bool) -> void","description":"If set to true, enables internal physics for this node. Internal physics processing happens in isolation from the normal [method _physics_process] calls and is used by some nodes internally to guarantee proper functioning even if the node is paused or physics processing is disabled for scripting ([method set_physics_process]).\n\t\t\t\tWarning: Built-in nodes rely on internal processing for their internal logic. Disabling it is unsafe and may lead to unexpected behavior. Use this method if you know what you are doing.","returnType":"void"},{"name":"set_process","signature":"set_process(enable: bool) -> void","description":"If set to true, enables processing. When a node is being processed, it will receive a [constant NOTIFICATION_PROCESS] on every drawn frame (and the [method _process] callback will be called if it exists).\n\t\t\t\tNote: If [method _process] is overridden, this will be automatically enabled before [method _ready] is called.\n\t\t\t\tNote: This method only affects the [method _process] callback, i.e. it has no effect on other callbacks like [method _physics_process]. If you want to disable all processing for the node, set [member process_mode] to [constant PROCESS_MODE_DISABLED].","returnType":"void"},{"name":"set_process_input","signature":"set_process_input(enable: bool) -> void","description":"If set to true, enables input processing.\n\t\t\t\tNote: If [method _input] is overridden, this will be automatically enabled before [method _ready] is called. Input processing is also already enabled for GUI controls, such as  and .","returnType":"void"},{"name":"set_process_internal","signature":"set_process_internal(enable: bool) -> void","description":"If set to true, enables internal processing for this node. Internal processing happens in isolation from the normal [method _process] calls and is used by some nodes internally to guarantee proper functioning even if the node is paused or processing is disabled for scripting ([method set_process]).\n\t\t\t\tWarning: Built-in nodes rely on internal processing for their internal logic. Disabling it is unsafe and may lead to unexpected behavior. Use this method if you know what you are doing.","returnType":"void"},{"name":"set_process_shortcut_input","signature":"set_process_shortcut_input(enable: bool) -> void","description":"If set to true, enables shortcut processing for this node.\n\t\t\t\tNote: If [method _shortcut_input] is overridden, this will be automatically enabled before [method _ready] is called.","returnType":"void"},{"name":"set_process_unhandled_input","signature":"set_process_unhandled_input(enable: bool) -> void","description":"If set to true, enables unhandled input processing. It enables the node to receive all input that was not previously handled (usually by a ).\n\t\t\t\tNote: If [method _unhandled_input] is overridden, this will be automatically enabled before [method _ready] is called. Unhandled input processing is also already enabled for GUI controls, such as  and .","returnType":"void"},{"name":"set_process_unhandled_key_input","signature":"set_process_unhandled_key_input(enable: bool) -> void","description":"If set to true, enables unhandled key input processing.\n\t\t\t\tNote: If [method _unhandled_key_input] is overridden, this will be automatically enabled before [method _ready] is called.","returnType":"void"},{"name":"set_scene_instance_load_placeholder","signature":"set_scene_instance_load_placeholder(load_placeholder: bool) -> void","description":"If set to true, the node becomes a  when packed and instantiated from a . See also [method get_scene_instance_load_placeholder].","returnType":"void"},{"name":"set_thread_safe","signature":"set_thread_safe(property: StringName, value: Variant) -> void","description":"Similar to [method call_thread_safe], but for setting properties.","returnType":"void"},{"name":"set_translation_domain_inherited","signature":"set_translation_domain_inherited() -> void","description":"Makes this node inherit the translation domain from its parent node. If this node has no parent, the main translation domain will be used.\n\t\t\t\tThis is the default behavior for all nodes. Calling [method Object.set_translation_domain] disables this behavior.","returnType":"void"},{"name":"update_configuration_warnings","signature":"update_configuration_warnings() -> void","description":"Refreshes the warnings displayed for this node in the Scene dock. Use [method _get_configuration_warnings] to customize the warning messages to display.","returnType":"void"}],"signals":[{"name":"child_entered_tree","description":"Emitted when the child [param node] enters the [SceneTree], usually because this node entered the tree (see [signal tree_entered]), or [method add_child] has been called.\n\t\t\t\tThis signal is emitted [i]after[/i] the child node's own [constant NOTIFICATION_ENTER_TREE] and [signal tree_entered]."},{"name":"child_exiting_tree","description":"Emitted when the child [param node] is about to exit the [SceneTree], usually because this node is exiting the tree (see [signal tree_exiting]), or because the child [param node] is being removed or freed.\n\t\t\t\tWhen this signal is received, the child [param node] is still accessible inside the tree. This signal is emitted [i]after[/i] the child node's own [signal tree_exiting] and [constant NOTIFICATION_EXIT_TREE]."},{"name":"child_order_changed","description":"Emitted when the list of children is changed. This happens when child nodes are added, moved or removed."},{"name":"editor_description_changed","description":"Emitted when the node's editor description field changed."},{"name":"editor_state_changed","description":"Emitted when an attribute of the node that is relevant to the editor is changed. Only emitted in the editor."},{"name":"ready","description":"Emitted when the node is considered ready, after [method _ready] is called."},{"name":"renamed","description":"Emitted when the node's [member name] is changed, if the node is inside the tree."},{"name":"replacing_by","description":"Emitted when this node is being replaced by the [param node], see [method replace_by].\n\t\t\t\tThis signal is emitted [i]after[/i] [param node] has been added as a child of the original parent node, but [i]before[/i] all original child nodes have been reparented to [param node]."},{"name":"tree_entered","description":"Emitted when the node enters the tree.\n\t\t\t\tThis signal is emitted [i]after[/i] the related [constant NOTIFICATION_ENTER_TREE] notification."},{"name":"tree_exited","description":"Emitted after the node exits the tree and is no longer active.\n\t\t\t\tThis signal is emitted [i]after[/i] the related [constant NOTIFICATION_EXIT_TREE] notification."},{"name":"tree_exiting","description":"Emitted when the node is just about to exit the tree. The node is still valid. As such, this is the right place for de-initialization (or a \"destructor\", if you will).\n\t\t\t\tThis signal is emitted [i]after[/i] the node's [method _exit_tree], and [i]before[/i] the related [constant NOTIFICATION_EXIT_TREE]."}]},"Node2D":{"name":"Node2D","description":"A 2D game object, inherited by all 2D-related nodes. Has a position, rotation, scale, and skew.","inherits":"CanvasItem","properties":[{"name":"global_position","type":"Vector2","description":"Global position. See also [member position]."},{"name":"global_rotation","type":"float","description":"Global rotation in radians. See also [member rotation]."},{"name":"global_rotation_degrees","type":"float","description":"Helper property to access [member global_rotation] in degrees instead of radians. See also [member rotation_degrees]."},{"name":"global_scale","type":"Vector2","description":"Global scale. See also [member scale]."},{"name":"global_skew","type":"float","description":"Global skew in radians. See also [member skew]."},{"name":"global_transform","type":"Transform2D","description":"Global [Transform2D]. See also [member transform]."},{"name":"position","type":"Vector2","description":"Position, relative to the node's parent. See also [member global_position]."},{"name":"rotation","type":"float","description":"Rotation in radians, relative to the node's parent. See also [member global_rotation].\n\t\t\t[b]Note:[/b] This property is edited in the inspector in degrees. If you want to use degrees in a script, use [member rotation_degrees]."},{"name":"rotation_degrees","type":"float","description":"Helper property to access [member rotation] in degrees instead of radians. See also [member global_rotation_degrees]."},{"name":"scale","type":"Vector2","description":"The node's scale, relative to the node's parent. Unscaled value: [code](1, 1)[/code]. See also [member global_scale].\n\t\t\t[b]Note:[/b] Negative X scales in 2D are not decomposable from the transformation matrix. Due to the way scale is represented with transformation matrices in Godot, negative scales on the X axis will be changed to negative scales on the Y axis and a rotation of 180 degrees when decomposed."},{"name":"skew","type":"float","description":"If set to a non-zero value, slants the node in one direction or another. This can be used for pseudo-3D effects. See also [member global_skew].\n\t\t\t[b]Note:[/b] Skew is performed on the X axis only, and [i]between[/i] rotation and scaling.\n\t\t\t[b]Note:[/b] This property is edited in the inspector in degrees. If you want to use degrees in a script, use [code]skew = deg_to_rad(value_in_degrees)[/code]."},{"name":"transform","type":"Transform2D","description":"The node's [Transform2D], relative to the node's parent. See also [member global_transform]."}],"methods":[{"name":"apply_scale","signature":"apply_scale(ratio: Vector2) -> void","description":"Multiplies the current scale by the [param ratio] vector.","returnType":"void"},{"name":"get_angle_to","signature":"get_angle_to(point: Vector2) -> float","description":"Returns the angle between the node and the [param point] in radians.\n\t\t\t\t[url=https://raw.githubusercontent.com/godotengine/godot-docs/master/img/node2d_get_angle_to.png]Illustration of the returned angle.","returnType":"float"},{"name":"get_relative_transform_to_parent","signature":"get_relative_transform_to_parent(parent: Node) -> Transform2D","description":"Returns the  relative to this node's parent.","returnType":"Transform2D"},{"name":"global_translate","signature":"global_translate(offset: Vector2) -> void","description":"Adds the [param offset] vector to the node's global position.","returnType":"void"},{"name":"look_at","signature":"look_at(point: Vector2) -> void","description":"Rotates the node so that its local +X axis points towards the [param point], which is expected to use global coordinates.\n\t\t\t\t[param point] should not be the same as the node's position, otherwise the node always looks to the right.","returnType":"void"},{"name":"move_local_x","signature":"move_local_x(delta: float, scaled: bool) -> void","description":"Applies a local translation on the node's X axis based on the [method Node._process]'s [param delta]. If [param scaled] is false, normalizes the movement.","returnType":"void"},{"name":"move_local_y","signature":"move_local_y(delta: float, scaled: bool) -> void","description":"Applies a local translation on the node's Y axis based on the [method Node._process]'s [param delta]. If [param scaled] is false, normalizes the movement.","returnType":"void"},{"name":"rotate","signature":"rotate(radians: float) -> void","description":"Applies a rotation to the node, in radians, starting from its current rotation.","returnType":"void"},{"name":"to_global","signature":"to_global(local_point: Vector2) -> Vector2","description":"Transforms the provided local position into a position in global coordinate space. The input is expected to be local relative to the  it is called on. e.g. Applying this method to the positions of child nodes will correctly transform their positions into the global coordinate space, but applying it to a node's own position will give an incorrect result, as it will incorporate the node's own transformation into its global position.","returnType":"Vector2"},{"name":"to_local","signature":"to_local(global_point: Vector2) -> Vector2","description":"Transforms the provided global position into a position in local coordinate space. The output will be local relative to the  it is called on. e.g. It is appropriate for determining the positions of child nodes, but it is not appropriate for determining its own position relative to its parent.","returnType":"Vector2"},{"name":"translate","signature":"translate(offset: Vector2) -> void","description":"Translates the node by the given [param offset] in local coordinates.","returnType":"void"}],"signals":[]},"Node3D":{"name":"Node3D","description":"Most basic 3D game object, parent of all 3D-related nodes.","inherits":"Node","properties":[{"name":"basis","type":"Basis","description":"Basis of the [member transform] property. Represents the rotation, scale, and shear of this node."},{"name":"global_basis","type":"Basis","description":"Global basis of this node. This is equivalent to [code]global_transform.basis[/code]."},{"name":"global_position","type":"Vector3","description":"Global position of this node. This is equivalent to [code]global_transform.origin[/code]."},{"name":"global_rotation","type":"Vector3","description":"Rotation part of the global transformation in radians, specified in terms of YXZ-Euler angles in the format (X angle, Y angle, Z angle).\n\t\t\t[b]Note:[/b] In the mathematical sense, rotation is a matrix and not a vector. The three Euler angles, which are the three independent parameters of the Euler-angle parametrization of the rotation matrix, are stored in a [Vector3] data structure not because the rotation is a vector, but only because [Vector3] exists as a convenient data-structure to store 3 floating-point numbers. Therefore, applying affine operations on the rotation \"vector\" is not meaningful."},{"name":"global_rotation_degrees","type":"Vector3","description":"Helper property to access [member global_rotation] in degrees instead of radians."},{"name":"global_transform","type":"Transform3D","description":"World3D space (global) [Transform3D] of this node."},{"name":"position","type":"Vector3","description":"Local position or translation of this node relative to the parent. This is equivalent to [code]transform.origin[/code]."},{"name":"quaternion","type":"Quaternion","description":"Access to the node rotation as a [Quaternion]. This property is ideal for tweening complex rotations."},{"name":"rotation","type":"Vector3","description":"Rotation part of the local transformation in radians, specified in terms of Euler angles. The angles construct a rotation in the order specified by the [member rotation_order] property.\n\t\t\t[b]Note:[/b] In the mathematical sense, rotation is a matrix and not a vector. The three Euler angles, which are the three independent parameters of the Euler-angle parametrization of the rotation matrix, are stored in a [Vector3] data structure not because the rotation is a vector, but only because [Vector3] exists as a convenient data-structure to store 3 floating-point numbers. Therefore, applying affine operations on the rotation \"vector\" is not meaningful.\n\t\t\t[b]Note:[/b] This property is edited in the inspector in degrees. If you want to use degrees in a script, use [member rotation_degrees]."},{"name":"rotation_degrees","type":"Vector3","description":"Helper property to access [member rotation] in degrees instead of radians."},{"name":"rotation_edit_mode","type":"int","description":"Specify how rotation (and scale) will be presented in the editor."},{"name":"rotation_order","type":"int","description":"Specify the axis rotation order of the [member rotation] property. The final orientation is constructed by rotating the Euler angles in the order specified by this property."},{"name":"scale","type":"Vector3","description":"Scale part of the local transformation.\n\t\t\t[b]Note:[/b] Mixed negative scales in 3D are not decomposable from the transformation matrix. Due to the way scale is represented with transformation matrices in Godot, the scale values will either be all positive or all negative.\n\t\t\t[b]Note:[/b] Not all nodes are visually scaled by the [member scale] property. For example, [Light3D]s are not visually affected by [member scale]."},{"name":"top_level","type":"bool","description":"If [code]true[/code], the node will not inherit its transformations from its parent. Node transformations are only in global space."},{"name":"transform","type":"Transform3D","description":"Local space [Transform3D] of this node, with respect to the parent node."},{"name":"visibility_parent","type":"NodePath","description":"Defines the visibility range parent for this node and its subtree. The visibility parent must be a GeometryInstance3D. Any visual instance will only be visible if the visibility parent (and all of its visibility ancestors) is hidden by being closer to the camera than its own [member GeometryInstance3D.visibility_range_begin]. Nodes hidden via the [member Node3D.visible] property are essentially removed from the visibility dependency tree, so dependent instances will not take the hidden node or its ancestors into account."},{"name":"visible","type":"bool","description":"If [code]true[/code], this node is drawn. The node is only visible if all of its ancestors are visible as well (in other words, [method is_visible_in_tree] must return [code]true[/code])."}],"methods":[{"name":"add_gizmo","signature":"add_gizmo(gizmo: Node3DGizmo) -> void","description":"Attach an editor gizmo to this .\n\t\t\t\tNote: The gizmo object would typically be an instance of , but the argument type is kept generic to avoid creating a dependency on editor classes in .","returnType":"void"},{"name":"clear_gizmos","signature":"clear_gizmos() -> void","description":"Clear all gizmos attached to this .","returnType":"void"},{"name":"clear_subgizmo_selection","signature":"clear_subgizmo_selection() -> void","description":"Clears subgizmo selection for this node in the editor. Useful when subgizmo IDs become invalid after a property change.","returnType":"void"},{"name":"force_update_transform","signature":"force_update_transform() -> void","description":"Forces the transform to update. Transform changes in physics are not instant for performance reasons. Transforms are accumulated and then set. Use this if you need an up-to-date transform when doing physics operations.","returnType":"void"},{"name":"get_gizmos","signature":"get_gizmos() -> Node3DGizmo[]","description":"Returns all the gizmos attached to this .","returnType":"Node3DGizmo[]"},{"name":"get_global_transform_interpolated","signature":"get_global_transform_interpolated() -> Transform3D","description":"When using physics interpolation, there will be circumstances in which you want to know the interpolated (displayed) transform of a node rather than the standard transform (which may only be accurate to the most recent physics tick).\n\t\t\t\tThis is particularly important for frame-based operations that take place in [method Node._process], rather than [method Node._physics_process]. Examples include s focusing on a node, or finding where to fire lasers from on a frame rather than physics tick.\n\t\t\t\tNote: This function creates an interpolation pump on the  the first time it is called, which can respond to physics interpolation resets. If you get problems with \"streaking\" when initially following a , be sure to call [method get_global_transform_interpolated] at least once before resetting the  physics interpolation.","returnType":"Transform3D"},{"name":"get_parent_node_3d","signature":"get_parent_node_3d() -> Node3D","description":"Returns the parent , or null if no parent exists, the parent is not of type , or [member top_level] is true.\n\t\t\t\tNote: Calling this method is not equivalent to get_parent() as Node3D, which does not take [member top_level] into account.","returnType":"Node3D"},{"name":"get_world_3d","signature":"get_world_3d() -> World3D","description":"Returns the current  resource this  node is registered to.","returnType":"World3D"},{"name":"global_rotate","signature":"global_rotate(axis: Vector3, angle: float) -> void","description":"Rotates the global (world) transformation around axis, a unit , by specified angle in radians. The rotation axis is in global coordinate system.","returnType":"void"},{"name":"global_scale","signature":"global_scale(scale: Vector3) -> void","description":"Scales the global (world) transformation by the given  scale factors.","returnType":"void"},{"name":"global_translate","signature":"global_translate(offset: Vector3) -> void","description":"Moves the global (world) transformation by  offset. The offset is in global coordinate system.","returnType":"void"},{"name":"hide","signature":"hide() -> void","description":"Disables rendering of this node. Changes [member visible] to false.","returnType":"void"},{"name":"is_local_transform_notification_enabled","signature":"is_local_transform_notification_enabled() -> bool","description":"Returns whether node notifies about its local transformation changes.  will not propagate this by default.","returnType":"bool"},{"name":"is_scale_disabled","signature":"is_scale_disabled() -> bool","description":"Returns whether this node uses a scale of (1, 1, 1) or its local transformation scale.","returnType":"bool"},{"name":"is_transform_notification_enabled","signature":"is_transform_notification_enabled() -> bool","description":"Returns whether the node notifies about its global and local transformation changes.  will not propagate this by default.","returnType":"bool"},{"name":"is_visible_in_tree","signature":"is_visible_in_tree() -> bool","description":"Returns true if the node is present in the , its [member visible] property is true and all its ancestors are also visible. If any ancestor is hidden, this node will not be visible in the scene tree.\n\t\t\t\tVisibility is checked only in parent nodes that inherit from . If the parent is of any other type (such as , , or ), it is assumed to be visible.\n\t\t\t\tNote: This method does not take [member VisualInstance3D.layers] into account, so even if this method returns true, the node might end up not being rendered.","returnType":"bool"},{"name":"look_at","signature":"look_at(target: Vector3, up: Vector3, use_model_front: bool) -> void","description":"Rotates the node so that the local forward axis (-Z, [constant Vector3.FORWARD]) points toward the [param target] position.\n\t\t\t\tThe local up axis (+Y) points as close to the [param up] vector as possible while staying perpendicular to the local forward axis. The resulting transform is orthogonal, and the scale is preserved. Non-uniform scaling may not work correctly.\n\t\t\t\tThe [param target] position cannot be the same as the node's position, the [param up] vector cannot be zero.\n\t\t\t\tThe [param target] and the [param up] cannot be [constant Vector3.ZERO], and shouldn't be colinear to avoid unintended rotation around local Z axis.\n\t\t\t\tOperations take place in global space, which means that the node must be in the scene tree.\n\t\t\t\tIf [param use_model_front] is true, the +Z axis (asset front) is treated as forward (implies +X is left) and points toward the [param target] position. By default, the -Z axis (camera forward) is treated as forward (implies +X is right).","returnType":"void"},{"name":"look_at_from_position","signature":"look_at_from_position(position: Vector3, target: Vector3, up: Vector3, use_model_front: bool) -> void","description":"Moves the node to the specified [param position], and then rotates the node to point toward the [param target] as per [method look_at]. Operations take place in global space.","returnType":"void"},{"name":"orthonormalize","signature":"orthonormalize() -> void","description":"Resets this node's transformations (like scale, skew and taper) preserving its rotation and translation by performing Gram-Schmidt orthonormalization on this node's .","returnType":"void"},{"name":"rotate","signature":"rotate(axis: Vector3, angle: float) -> void","description":"Rotates the local transformation around axis, a unit , by specified angle in radians.","returnType":"void"},{"name":"rotate_object_local","signature":"rotate_object_local(axis: Vector3, angle: float) -> void","description":"Rotates the local transformation around axis, a unit , by specified angle in radians. The rotation axis is in object-local coordinate system.","returnType":"void"},{"name":"rotate_x","signature":"rotate_x(angle: float) -> void","description":"Rotates the local transformation around the X axis by angle in radians.","returnType":"void"},{"name":"rotate_y","signature":"rotate_y(angle: float) -> void","description":"Rotates the local transformation around the Y axis by angle in radians.","returnType":"void"},{"name":"rotate_z","signature":"rotate_z(angle: float) -> void","description":"Rotates the local transformation around the Z axis by angle in radians.","returnType":"void"},{"name":"scale_object_local","signature":"scale_object_local(scale: Vector3) -> void","description":"Scales the local transformation by given 3D scale factors in object-local coordinate system.","returnType":"void"},{"name":"set_disable_scale","signature":"set_disable_scale(disable: bool) -> void","description":"Sets whether the node uses a scale of (1, 1, 1) or its local transformation scale. Changes to the local transformation scale are preserved.","returnType":"void"},{"name":"set_identity","signature":"set_identity() -> void","description":"Reset all transformations for this node (sets its  to the identity matrix).","returnType":"void"},{"name":"set_ignore_transform_notification","signature":"set_ignore_transform_notification(enabled: bool) -> void","description":"Sets whether the node ignores notification that its transformation (global or local) changed.","returnType":"void"},{"name":"set_notify_local_transform","signature":"set_notify_local_transform(enable: bool) -> void","description":"Sets whether the node notifies about its local transformation changes.  will not propagate this by default.","returnType":"void"},{"name":"set_notify_transform","signature":"set_notify_transform(enable: bool) -> void","description":"Sets whether the node notifies about its global and local transformation changes.  will not propagate this by default, unless it is in the editor context and it has a valid gizmo.","returnType":"void"},{"name":"set_subgizmo_selection","signature":"set_subgizmo_selection(gizmo: Node3DGizmo, id: int, transform: Transform3D) -> void","description":"Set subgizmo selection for this node in the editor.\n\t\t\t\tNote: The gizmo object would typically be an instance of , but the argument type is kept generic to avoid creating a dependency on editor classes in .","returnType":"void"},{"name":"show","signature":"show() -> void","description":"Enables rendering of this node. Changes [member visible] to true.","returnType":"void"},{"name":"to_global","signature":"to_global(local_point: Vector3) -> Vector3","description":"Transforms [param local_point] from this node's local space to world space.","returnType":"Vector3"},{"name":"to_local","signature":"to_local(global_point: Vector3) -> Vector3","description":"Transforms [param global_point] from world space to this node's local space.","returnType":"Vector3"},{"name":"translate","signature":"translate(offset: Vector3) -> void","description":"Changes the node's position by the given offset .\n\t\t\t\tNote that the translation [param offset] is affected by the node's scale, so if scaled by e.g. (10, 1, 1), a translation by an offset of (2, 0, 0) would actually add 20 (2 * 10) to the X coordinate.","returnType":"void"},{"name":"translate_object_local","signature":"translate_object_local(offset: Vector3) -> void","description":"Changes the node's position by the given offset  in local space.","returnType":"void"},{"name":"update_gizmos","signature":"update_gizmos() -> void","description":"Updates all the  gizmos attached to this node.","returnType":"void"}],"signals":[{"name":"visibility_changed","description":"Emitted when node visibility changes."}]},"Node3DGizmo":{"name":"Node3DGizmo","description":"Abstract class to expose editor gizmos for .","inherits":"RefCounted","properties":[],"methods":[],"signals":[]},"NodePath":{"name":"NodePath","description":"A pre-parsed scene tree path.","inherits":"","properties":[],"methods":[{"name":"get_as_property_path","signature":"get_as_property_path() -> NodePath","description":"Returns a copy of this node path with a colon character (:) prefixed, transforming it to a pure property path with no node names (relative to the current node).\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t# node_path points to the \"x\" property of the child node named \"position\".\n\t\t\t\tvar node_path = ^\"position:x\"\n\n\t\t\t\t# property_path points to the \"position\" in the \"x\" axis of this node.\n\t\t\t\tvar property_path = node_path.get_as_property_path()\n\t\t\t\tprint(property_path) # Prints \":position:x\"\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t// nodePath points to the \"x\" property of the child node named \"position\".\n\t\t\t\tvar nodePath = new NodePath(\"position:x\");\n\n\t\t\t\t// propertyPath points to the \"position\" in the \"x\" axis of this node.\n\t\t\t\tNodePath propertyPath = nodePath.GetAsPropertyPath();\n\t\t\t\tGD.Print(propertyPath); // Prints \":position:x\"\n\t\t\t\t\n\t\t\t\t","returnType":"NodePath"},{"name":"get_concatenated_names","signature":"get_concatenated_names() -> StringName","description":"Returns all node names concatenated with a slash character (/) as a single .","returnType":"StringName"},{"name":"get_concatenated_subnames","signature":"get_concatenated_subnames() -> StringName","description":"Returns all property subnames concatenated with a colon character (:) as a single .\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tvar node_path = ^\"Sprite2D:texture:resource_name\"\n\t\t\t\tprint(node_path.get_concatenated_subnames()) # Prints \"texture:resource_name\"\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tvar nodePath = new NodePath(\"Sprite2D:texture:resource_name\");\n\t\t\t\tGD.Print(nodePath.GetConcatenatedSubnames()); // Prints \"texture:resource_name\"\n\t\t\t\t\n\t\t\t\t","returnType":"StringName"},{"name":"get_name","signature":"get_name(idx: int) -> StringName","description":"Returns the node name indicated by [param idx], starting from 0. If [param idx] is out of bounds, an error is generated. See also [method get_subname_count] and [method get_name_count].\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tvar sprite_path = NodePath(\"../RigidBody2D/Sprite2D\")\n\t\t\t\tprint(sprite_path.get_name(0)) # Prints \"..\"\n\t\t\t\tprint(sprite_path.get_name(1)) # Prints \"RigidBody2D\"\n\t\t\t\tprint(sprite_path.get_name(2)) # Prints \"Sprite\"\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tvar spritePath = new NodePath(\"../RigidBody2D/Sprite2D\");\n\t\t\t\tGD.Print(spritePath.GetName(0)); // Prints \"..\"\n\t\t\t\tGD.Print(spritePath.GetName(1)); // Prints \"PathFollow2D\"\n\t\t\t\tGD.Print(spritePath.GetName(2)); // Prints \"Sprite\"\n\t\t\t\t\n\t\t\t\t","returnType":"StringName"},{"name":"get_name_count","signature":"get_name_count() -> int","description":"Returns the number of node names in the path. Property subnames are not included.\n\t\t\t\tFor example, \"../RigidBody2D/Sprite2D:texture\" contains 3 node names.","returnType":"int"},{"name":"get_subname","signature":"get_subname(idx: int) -> StringName","description":"Returns the property name indicated by [param idx], starting from 0. If [param idx] is out of bounds, an error is generated. See also [method get_subname_count].\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tvar path_to_name = NodePath(\"Sprite2D:texture:resource_name\")\n\t\t\t\tprint(path_to_name.get_subname(0)) # Prints \"texture\"\n\t\t\t\tprint(path_to_name.get_subname(1)) # Prints \"resource_name\"\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tvar pathToName = new NodePath(\"Sprite2D:texture:resource_name\");\n\t\t\t\tGD.Print(pathToName.GetSubname(0)); // Prints \"texture\"\n\t\t\t\tGD.Print(pathToName.GetSubname(1)); // Prints \"resource_name\"\n\t\t\t\t\n\t\t\t\t","returnType":"StringName"},{"name":"get_subname_count","signature":"get_subname_count() -> int","description":"Returns the number of property names (\"subnames\") in the path. Each subname in the node path is listed after a colon character (:).\n\t\t\t\tFor example, \"Level/RigidBody2D/Sprite2D:texture:resource_name\" contains 2 subnames.","returnType":"int"},{"name":"hash","signature":"hash() -> int","description":"Returns the 32-bit hash value representing the node path's contents.\n\t\t\t\tNote: Node paths with equal hash values are not guaranteed to be the same, as a result of hash collisions. Node paths with different hash values are guaranteed to be different.","returnType":"int"},{"name":"is_absolute","signature":"is_absolute() -> bool","description":"Returns true if the node path is absolute. Unlike a relative path, an absolute path is represented by a leading slash character (/) and always begins from the . It can be used to reliably access nodes from the root node (e.g. \"/root/Global\" if an autoload named \"Global\" exists).","returnType":"bool"},{"name":"is_empty","signature":"is_empty() -> bool","description":"Returns true if the node path has been constructed from an empty  (\"\").","returnType":"bool"},{"name":"slice","signature":"slice(begin: int, end: int) -> NodePath","description":"Returns the slice of the , from [param begin] (inclusive) to [param end] (exclusive), as a new .\n\t\t\t\tThe absolute value of [param begin] and [param end] will be clamped to the sum of [method get_name_count] and [method get_subname_count], so the default value for [param end] makes it slice to the end of the  by default (i.e. path.slice(1) is a shorthand for path.slice(1, path.get_name_count() + path.get_subname_count())).\n\t\t\t\tIf either [param begin] or [param end] are negative, they will be relative to the end of the  (i.e. path.slice(0, -2) is a shorthand for path.slice(0, path.get_name_count() + path.get_subname_count() - 2)).","returnType":"NodePath"}],"signals":[]},"ORMMaterial3D":{"name":"ORMMaterial3D","description":"A PBR (Physically Based Rendering) material to be used on 3D objects. Uses an ORM texture.","inherits":"BaseMaterial3D","properties":[],"methods":[],"signals":[]},"OS":{"name":"OS","description":"Provides access to common operating system functionalities.","inherits":"Object","properties":[{"name":"delta_smoothing","type":"bool","description":"If [code]true[/code], the engine filters the time delta measured between each frame, and attempts to compensate for random variation. This only works on systems where V-Sync is active.\n\t\t\t[b]Note:[/b] On start-up, this is the same as [member ProjectSettings.application/run/delta_smoothing]."},{"name":"low_processor_usage_mode","type":"bool","description":"If [code]true[/code], the engine optimizes for low processor usage by only refreshing the screen if needed. Can improve battery consumption on mobile.\n\t\t\t[b]Note:[/b] On start-up, this is the same as [member ProjectSettings.application/run/low_processor_mode]."},{"name":"low_processor_usage_mode_sleep_usec","type":"int","description":"The amount of sleeping between frames when the low-processor usage mode is enabled, in microseconds. Higher values will result in lower CPU usage. See also [member low_processor_usage_mode].\n\t\t\t[b]Note:[/b] On start-up, this is the same as [member ProjectSettings.application/run/low_processor_mode_sleep_usec]."}],"methods":[{"name":"alert","signature":"alert(text: String, title: String) -> void","description":"Displays a modal dialog box using the host platform's implementation. The engine execution is blocked until the dialog is closed.","returnType":"void"},{"name":"close_midi_inputs","signature":"close_midi_inputs() -> void","description":"Shuts down the system MIDI driver. Godot will no longer receive . See also [method open_midi_inputs] and [method get_connected_midi_inputs].\n\t\t\t\tNote: This method is implemented on Linux, macOS, Windows, and Web.","returnType":"void"},{"name":"crash","signature":"crash(message: String) -> void","description":"Crashes the engine (or the editor if called within a @tool script). See also [method kill].\n\t\t\t\tNote: This method should only be used for testing the system's crash handler, not for any other purpose. For general error reporting, use (in order of preference) [method @GDScript.assert], [method @GlobalScope.push_error], or [method alert].","returnType":"void"},{"name":"create_instance","signature":"create_instance(arguments: PackedStringArray) -> int","description":"Creates a new instance of Godot that runs independently. The [param arguments] are used in the given order and separated by a space.\n\t\t\t\tIf the process is successfully created, this method returns the new process' ID, which you can use to monitor the process (and potentially terminate it with [method kill]). If the process cannot be created, this method returns -1.\n\t\t\t\tSee [method create_process] if you wish to run a different process.\n\t\t\t\tNote: This method is implemented on Android, Linux, macOS and Windows.","returnType":"int"},{"name":"create_process","signature":"create_process(path: String, arguments: PackedStringArray, open_console: bool) -> int","description":"Creates a new process that runs independently of Godot. It will not terminate when Godot terminates. The path specified in [param path] must exist and be an executable file or macOS .app bundle. The path is resolved based on the current platform. The [param arguments] are used in the given order and separated by a space.\n\t\t\t\tOn Windows, if [param open_console] is true and the process is a console app, a new terminal window will be opened.\n\t\t\t\tIf the process is successfully created, this method returns its process ID, which you can use to monitor the process (and potentially terminate it with [method kill]). Otherwise, this method returns -1.\n\t\t\t\tExample: Run another instance of the project:\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tvar pid = OS.create_process(OS.get_executable_path(), [])\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tvar pid = OS.CreateProcess(OS.GetExecutablePath(), []);\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tSee [method execute] if you wish to run an external command and retrieve the results.\n\t\t\t\tNote: This method is implemented on Android, Linux, macOS, and Windows.\n\t\t\t\tNote: On macOS, sandboxed applications are limited to run only embedded helper executables, specified during export or system .app bundle, system .app bundles will ignore arguments.","returnType":"int"},{"name":"delay_msec","signature":"delay_msec(msec: int) -> void","description":"Delays execution of the current thread by [param msec] milliseconds. [param msec] must be greater than or equal to 0. Otherwise, [method delay_msec] does nothing and prints an error message.\n\t\t\t\tNote: [method delay_msec] is a blocking way to delay code execution. To delay code execution in a non-blocking way, you may use [method SceneTree.create_timer]. Awaiting with  delays the execution of code placed below the await without affecting the rest of the project (or editor, for s and s).\n\t\t\t\tNote: When [method delay_msec] is called on the main thread, it will freeze the project and will prevent it from redrawing and registering input until the delay has passed. When using [method delay_msec] as part of an  or , it will freeze the editor but won't freeze the project if it is currently running (since the project is an independent child process).","returnType":"void"},{"name":"delay_usec","signature":"delay_usec(usec: int) -> void","description":"Delays execution of the current thread by [param usec] microseconds. [param usec] must be greater than or equal to 0. Otherwise, [method delay_usec] does nothing and prints an error message.\n\t\t\t\tNote: [method delay_usec] is a blocking way to delay code execution. To delay code execution in a non-blocking way, you may use [method SceneTree.create_timer]. Awaiting with a  delays the execution of code placed below the await without affecting the rest of the project (or editor, for s and s).\n\t\t\t\tNote: When [method delay_usec] is called on the main thread, it will freeze the project and will prevent it from redrawing and registering input until the delay has passed. When using [method delay_usec] as part of an  or , it will freeze the editor but won't freeze the project if it is currently running (since the project is an independent child process).","returnType":"void"},{"name":"execute","signature":"execute(path: String, arguments: PackedStringArray, output: Array, read_stderr: bool, open_console: bool) -> int","description":"Executes the given process in a blocking way. The file specified in [param path] must exist and be executable. The system path resolution will be used. The [param arguments] are used in the given order, separated by spaces, and wrapped in quotes.\n\t\t\t\tIf an [param output] array is provided, the complete shell output of the process is appended to [param output] as a single  element. If [param read_stderr] is true, the output to the standard error stream is also appended to the array.\n\t\t\t\tOn Windows, if [param open_console] is true and the process is a console app, a new terminal window is opened.\n\t\t\t\tThis method returns the exit code of the command, or -1 if the process fails to execute.\n\t\t\t\tNote: The main thread will be blocked until the executed command terminates. Use  to create a separate thread that will not block the main thread, or use [method create_process] to create a completely independent process.\n\t\t\t\tFor example, to retrieve a list of the working directory's contents:\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tvar output = []\n\t\t\t\tvar exit_code = OS.execute(\"ls\", [\"-l\", \"/tmp\"], output)\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tGodot.Collections.Array output = [];\n\t\t\t\tint exitCode = OS.Execute(\"ls\", [\"-l\", \"/tmp\"], output);\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tIf you wish to access a shell built-in or execute a composite command, a platform-specific shell can be invoked. For example:\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tvar output = []\n\t\t\t\tOS.execute(\"CMD.exe\", [\"/C\", \"cd %TEMP% &amp;&amp; dir\"], output)\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tGodot.Collections.Array output = [];\n\t\t\t\tOS.Execute(\"CMD.exe\", [\"/C\", \"cd %TEMP% &amp;&amp; dir\"], output);\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tNote: This method is implemented on Android, Linux, macOS, and Windows.\n\t\t\t\tNote: To execute a Windows command interpreter built-in command, specify cmd.exe in [param path], /c as the first argument, and the desired command as the second argument.\n\t\t\t\tNote: To execute a PowerShell built-in command, specify powershell.exe in [param path], -Command as the first argument, and the desired command as the second argument.\n\t\t\t\tNote: To execute a Unix shell built-in command, specify shell executable name in [param path], -c as the first argument, and the desired command as the second argument.\n\t\t\t\tNote: On macOS, sandboxed applications are limited to run only embedded helper executables, specified during export.\n\t\t\t\tNote: On Android, system commands such as dumpsys can only be run on a rooted device.","returnType":"int"},{"name":"execute_with_pipe","signature":"execute_with_pipe(path: String, arguments: PackedStringArray, blocking: bool) -> Dictionary","description":"Creates a new process that runs independently of Godot with redirected IO. It will not terminate when Godot terminates. The path specified in [param path] must exist and be an executable file or macOS .app bundle. The path is resolved based on the current platform. The [param arguments] are used in the given order and separated by a space.\n\t\t\t\tIf [param blocking] is false, created pipes work in non-blocking mode, i.e. read and write operations will return immediately. Use [method FileAccess.get_error] to check if the last read/write operation was successful.\n\t\t\t\tIf the process cannot be created, this method returns an empty . Otherwise, this method returns a  with the following keys:\n\t\t\t\t- \"stdio\" -  to access the process stdin and stdout pipes (read/write).\n\t\t\t\t- \"stderr\" -  to access the process stderr pipe (read only).\n\t\t\t\t- \"pid\" - Process ID as an , which you can use to monitor the process (and potentially terminate it with [method kill]).\n\t\t\t\tNote: This method is implemented on Android, Linux, macOS, and Windows.\n\t\t\t\tNote: To execute a Windows command interpreter built-in command, specify cmd.exe in [param path], /c as the first argument, and the desired command as the second argument.\n\t\t\t\tNote: To execute a PowerShell built-in command, specify powershell.exe in [param path], -Command as the first argument, and the desired command as the second argument.\n\t\t\t\tNote: To execute a Unix shell built-in command, specify shell executable name in [param path], -c as the first argument, and the desired command as the second argument.\n\t\t\t\tNote: On macOS, sandboxed applications are limited to run only embedded helper executables, specified during export or system .app bundle, system .app bundles will ignore arguments.","returnType":"Dictionary"},{"name":"find_keycode_from_string","signature":"find_keycode_from_string(string: String) -> int","description":"Finds the keycode for the given string. The returned values are equivalent to the [enum Key] constants.\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tprint(OS.find_keycode_from_string(\"C\"))         # Prints 67 (KEY_C)\n\t\t\t\tprint(OS.find_keycode_from_string(\"Escape\"))    # Prints 4194305 (KEY_ESCAPE)\n\t\t\t\tprint(OS.find_keycode_from_string(\"Shift+Tab\")) # Prints 37748738 (KEY_MASK_SHIFT | KEY_TAB)\n\t\t\t\tprint(OS.find_keycode_from_string(\"Unknown\"))   # Prints 0 (KEY_NONE)\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tGD.Print(OS.FindKeycodeFromString(\"C\"));         // Prints C (Key.C)\n\t\t\t\tGD.Print(OS.FindKeycodeFromString(\"Escape\"));    // Prints Escape (Key.Escape)\n\t\t\t\tGD.Print(OS.FindKeycodeFromString(\"Shift+Tab\")); // Prints 37748738 (KeyModifierMask.MaskShift | Key.Tab)\n\t\t\t\tGD.Print(OS.FindKeycodeFromString(\"Unknown\"));   // Prints None (Key.None)\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tSee also [method get_keycode_string].","returnType":"int"},{"name":"get_cache_dir","signature":"get_cache_dir() -> String","description":"Returns the global cache data directory according to the operating system's standards.\n\t\t\t\tOn the Linux/BSD platform, this path can be overridden by setting the XDG_CACHE_HOME environment variable before starting the project. See [url=$DOCS_URL/tutorials/io/data_paths.html]File paths in Godot projects in the documentation for more information. See also [method get_config_dir] and [method get_data_dir].\n\t\t\t\tNot to be confused with [method get_user_data_dir], which returns the project-specific user data path.","returnType":"String"},{"name":"get_cmdline_args","signature":"get_cmdline_args() -> PackedStringArray","description":"Returns the command-line arguments passed to the engine.\n\t\t\t\tCommand-line arguments can be written in any form, including both --key value and --key=value forms so they can be properly parsed, as long as custom command-line arguments do not conflict with engine arguments.\n\t\t\t\tYou can also incorporate environment variables using the [method get_environment] method.\n\t\t\t\tYou can set [member ProjectSettings.editor/run/main_run_args] to define command-line arguments to be passed by the editor when running the project.\n\t\t\t\tExample: Parse command-line arguments into a  using the --key=value form for arguments:\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tvar arguments = {}\n\t\t\t\tfor argument in OS.get_cmdline_args():\n\t\t\t\t    if argument.contains(\"=\"):\n\t\t\t\t        var key_value = argument.split(\"=\")\n\t\t\t\t        arguments[key_value.trim_prefix(\"--\")] = key_value\n\t\t\t\t    else:\n\t\t\t\t        # Options without an argument will be present in the dictionary,\n\t\t\t\t        # with the value set to an empty string.\n\t\t\t\t        arguments[argument.trim_prefix(\"--\")] = \"\"\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tvar arguments = new Dictionary&lt;string, string&gt;();\n\t\t\t\tforeach (var argument in OS.GetCmdlineArgs())\n\t\t\t\t{\n\t\t\t\t    if (argument.Contains('='))\n\t\t\t\t    {\n\t\t\t\t        string[] keyValue = argument.Split(\"=\");\n\t\t\t\t        arguments[keyValue.TrimPrefix(\"--\")] = keyValue;\n\t\t\t\t    }\n\t\t\t\t    else\n\t\t\t\t    {\n\t\t\t\t        // Options without an argument will be present in the dictionary,\n\t\t\t\t        // with the value set to an empty string.\n\t\t\t\t        arguments[argument.TrimPrefix(\"--\")] = \"\";\n\t\t\t\t    }\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tNote: Passing custom user arguments directly is not recommended, as the engine may discard or modify them. Instead, pass the standard UNIX double dash (--) and then the custom arguments, which the engine will ignore by design. These can be read via [method get_cmdline_user_args].","returnType":"PackedStringArray"},{"name":"get_cmdline_user_args","signature":"get_cmdline_user_args() -> PackedStringArray","description":"Returns the command-line user arguments passed to the engine. User arguments are ignored by the engine and reserved for the user. They are passed after the double dash -- argument. ++ may be used when -- is intercepted by another program (such as startx).\n\t\t\t\t\n\t\t\t\t# Godot has been executed with the following command:\n\t\t\t\t# godot --fullscreen -- --level=2 --hardcore\n\n\t\t\t\tOS.get_cmdline_args()      # Returns [\"--fullscreen\", \"--level=2\", \"--hardcore\"]\n\t\t\t\tOS.get_cmdline_user_args() # Returns [\"--level=2\", \"--hardcore\"]\n\t\t\t\t\n\t\t\t\tTo get all passed arguments, use [method get_cmdline_args].","returnType":"PackedStringArray"},{"name":"get_config_dir","signature":"get_config_dir() -> String","description":"Returns the global user configuration directory according to the operating system's standards.\n\t\t\t\tOn the Linux/BSD platform, this path can be overridden by setting the XDG_CONFIG_HOME environment variable before starting the project. See [url=$DOCS_URL/tutorials/io/data_paths.html]File paths in Godot projects in the documentation for more information. See also [method get_cache_dir] and [method get_data_dir].\n\t\t\t\tNot to be confused with [method get_user_data_dir], which returns the project-specific user data path.","returnType":"String"},{"name":"get_connected_midi_inputs","signature":"get_connected_midi_inputs() -> PackedStringArray","description":"Returns an array of connected MIDI device names, if they exist. Returns an empty array if the system MIDI driver has not previously been initialized with [method open_midi_inputs]. See also [method close_midi_inputs].\n\t\t\t\tNote: This method is implemented on Linux, macOS, Windows, and Web.\n\t\t\t\tNote: On the Web platform, Web MIDI needs to be supported by the browser. [url=https://caniuse.com/midi]For the time being, it is currently supported by all major browsers, except Safari.\n\t\t\t\tNote: On the Web platform, using MIDI input requires a browser permission to be granted first. This permission request is performed when calling [method open_midi_inputs]. The browser will refrain from processing MIDI input until the user accepts the permission request.","returnType":"PackedStringArray"},{"name":"get_data_dir","signature":"get_data_dir() -> String","description":"Returns the global user data directory according to the operating system's standards.\n\t\t\t\tOn the Linux/BSD platform, this path can be overridden by setting the XDG_DATA_HOME environment variable before starting the project. See [url=$DOCS_URL/tutorials/io/data_paths.html]File paths in Godot projects in the documentation for more information. See also [method get_cache_dir] and [method get_config_dir].\n\t\t\t\tNot to be confused with [method get_user_data_dir], which returns the project-specific user data path.","returnType":"String"},{"name":"get_distribution_name","signature":"get_distribution_name() -> String","description":"Returns the name of the distribution for Linux and BSD platforms (e.g. \"Ubuntu\", \"Manjaro\", \"OpenBSD\", etc.).\n\t\t\t\tReturns the same value as [method get_name] for stock Android ROMs, but attempts to return the custom ROM name for popular Android derivatives such as \"LineageOS\".\n\t\t\t\tReturns the same value as [method get_name] for other platforms.\n\t\t\t\tNote: This method is not supported on the Web platform. It returns an empty string.","returnType":"String"},{"name":"get_entropy","signature":"get_entropy(size: int) -> PackedByteArray","description":"Generates a  of cryptographically secure random bytes with given [param size].\n\t\t\t\tNote: Generating large quantities of bytes using this method can result in locking and entropy of lower quality on most platforms. Using [method Crypto.generate_random_bytes] is preferred in most cases.","returnType":"PackedByteArray"},{"name":"get_environment","signature":"get_environment(variable: String) -> String","description":"Returns the value of the given environment variable, or an empty string if [param variable] doesn't exist.\n\t\t\t\tNote: Double-check the casing of [param variable]. Environment variable names are case-sensitive on all platforms except Windows.\n\t\t\t\tNote: On macOS, applications do not have access to shell environment variables.","returnType":"String"},{"name":"get_executable_path","signature":"get_executable_path() -> String","description":"Returns the file path to the current engine executable.\n\t\t\t\tNote: On macOS, if you want to launch another instance of Godot, always use [method create_instance] instead of relying on the executable path.","returnType":"String"},{"name":"get_granted_permissions","signature":"get_granted_permissions() -> PackedStringArray","description":"On Android devices: Returns the list of dangerous permissions that have been granted.\n\t\t\t\tOn macOS: Returns the list of user selected folders accessible to the application (sandboxed applications only). Use the native file dialog to request folder access permission.","returnType":"PackedStringArray"},{"name":"get_keycode_string","signature":"get_keycode_string(code: int) -> String","description":"Returns the given keycode as a .\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tprint(OS.get_keycode_string(KEY_C))                    # Prints \"C\"\n\t\t\t\tprint(OS.get_keycode_string(KEY_ESCAPE))               # Prints \"Escape\"\n\t\t\t\tprint(OS.get_keycode_string(KEY_MASK_SHIFT | KEY_TAB)) # Prints \"Shift+Tab\"\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tGD.Print(OS.GetKeycodeString(Key.C));                                    // Prints \"C\"\n\t\t\t\tGD.Print(OS.GetKeycodeString(Key.Escape));                               // Prints \"Escape\"\n\t\t\t\tGD.Print(OS.GetKeycodeString((Key)KeyModifierMask.MaskShift | Key.Tab)); // Prints \"Shift+Tab\"\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tSee also [method find_keycode_from_string], [member InputEventKey.keycode], and [method InputEventKey.get_keycode_with_modifiers].","returnType":"String"},{"name":"get_locale","signature":"get_locale() -> String","description":"Returns the host OS locale as a  of the form language_Script_COUNTRY_VARIANT@extra. Every substring after language is optional and may not exist.\n\t\t\t\t- language - 2 or 3-letter [url=https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes]language code, in lower case.\n\t\t\t\t- [code skip-lint]Script - 4-letter [url=https://en.wikipedia.org/wiki/ISO_15924]script code, in title case.\n\t\t\t\t- COUNTRY - 2 or 3-letter [url=https://en.wikipedia.org/wiki/ISO_3166-1]country code, in upper case.\n\t\t\t\t- VARIANT - language variant, region and sort order. The variant can have any number of underscored keywords.\n\t\t\t\t- extra - semicolon separated list of additional key words. This may include currency, calendar, sort order and numbering system information.\n\t\t\t\tIf you want only the language code and not the fully specified locale from the OS, you can use [method get_locale_language].","returnType":"String"},{"name":"get_locale_language","signature":"get_locale_language() -> String","description":"Returns the host OS locale's 2 or 3-letter [url=https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes]language code as a string which should be consistent on all platforms. This is equivalent to extracting the language part of the [method get_locale] string.\n\t\t\t\tThis can be used to narrow down fully specified locale strings to only the \"common\" language code, when you don't need the additional information about country code or variants. For example, for a French Canadian user with fr_CA locale, this would return fr.","returnType":"String"},{"name":"get_main_thread_id","signature":"get_main_thread_id() -> int","description":"Returns the ID of the main thread. See [method get_thread_caller_id].\n\t\t\t\tNote: Thread IDs are not deterministic and may be reused across application restarts.","returnType":"int"},{"name":"get_memory_info","signature":"get_memory_info() -> Dictionary","description":"Returns a  containing information about the current memory with the following entries:\n\t\t\t\t- \"physical\" - total amount of usable physical memory in bytes. This value can be slightly less than the actual physical memory amount, since it does not include memory reserved by the kernel and devices.\n\t\t\t\t- \"free\" - amount of physical memory, that can be immediately allocated without disk access or other costly operations, in bytes. The process might be able to allocate more physical memory, but this action will require moving inactive pages to disk, which can be expensive.\n\t\t\t\t- \"available\" - amount of memory that can be allocated without extending the swap file(s), in bytes. This value includes both physical memory and swap.\n\t\t\t\t- \"stack\" - size of the current thread stack in bytes.\n\t\t\t\tNote: Each entry's value may be -1 if it is unknown.","returnType":"Dictionary"},{"name":"get_model_name","signature":"get_model_name() -> String","description":"Returns the model name of the current device.\n\t\t\t\tNote: This method is implemented on Android, iOS, macOS, and Windows. Returns \"GenericDevice\" on unsupported platforms.","returnType":"String"},{"name":"get_name","signature":"get_name() -> String","description":"Returns the name of the host platform.\n\t\t\t\t- On Windows, this is \"Windows\".\n\t\t\t\t- On macOS, this is \"macOS\".\n\t\t\t\t- On Linux-based operating systems, this is \"Linux\".\n\t\t\t\t- On BSD-based operating systems, this is \"FreeBSD\", \"NetBSD\", \"OpenBSD\", or \"BSD\" as a fallback.\n\t\t\t\t- On Android, this is \"Android\".\n\t\t\t\t- On iOS, this is \"iOS\".\n\t\t\t\t- On Web, this is \"Web\".\n\t\t\t\tNote: Custom builds of the engine may support additional platforms, such as consoles, possibly returning other names.\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tmatch OS.get_name():\n\t\t\t\t    \"Windows\":\n\t\t\t\t        print(\"Welcome to Windows!\")\n\t\t\t\t    \"macOS\":\n\t\t\t\t        print(\"Welcome to macOS!\")\n\t\t\t\t    \"Linux\", \"FreeBSD\", \"NetBSD\", \"OpenBSD\", \"BSD\":\n\t\t\t\t        print(\"Welcome to Linux/BSD!\")\n\t\t\t\t    \"Android\":\n\t\t\t\t        print(\"Welcome to Android!\")\n\t\t\t\t    \"iOS\":\n\t\t\t\t        print(\"Welcome to iOS!\")\n\t\t\t\t    \"Web\":\n\t\t\t\t        print(\"Welcome to the Web!\")\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tswitch (OS.GetName())\n\t\t\t\t{\n\t\t\t\t    case \"Windows\":\n\t\t\t\t        GD.Print(\"Welcome to Windows\");\n\t\t\t\t        break;\n\t\t\t\t    case \"macOS\":\n\t\t\t\t        GD.Print(\"Welcome to macOS!\");\n\t\t\t\t        break;\n\t\t\t\t    case \"Linux\":\n\t\t\t\t    case \"FreeBSD\":\n\t\t\t\t    case \"NetBSD\":\n\t\t\t\t    case \"OpenBSD\":\n\t\t\t\t    case \"BSD\":\n\t\t\t\t        GD.Print(\"Welcome to Linux/BSD!\");\n\t\t\t\t        break;\n\t\t\t\t    case \"Android\":\n\t\t\t\t        GD.Print(\"Welcome to Android!\");\n\t\t\t\t        break;\n\t\t\t\t    case \"iOS\":\n\t\t\t\t        GD.Print(\"Welcome to iOS!\");\n\t\t\t\t        break;\n\t\t\t\t    case \"Web\":\n\t\t\t\t        GD.Print(\"Welcome to the Web!\");\n\t\t\t\t        break;\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tNote: On Web platforms, it is still possible to determine the host platform's OS with feature tags. See [method has_feature].","returnType":"String"},{"name":"get_process_exit_code","signature":"get_process_exit_code(pid: int) -> int","description":"Returns the exit code of a spawned process once it has finished running (see [method is_process_running]).\n\t\t\t\tReturns -1 if the [param pid] is not a PID of a spawned child process, the process is still running, or the method is not implemented for the current platform.\n\t\t\t\tNote: Returns -1 if the [param pid] is a macOS bundled app process.\n\t\t\t\tNote: This method is implemented on Android, Linux, macOS and Windows.","returnType":"int"},{"name":"get_process_id","signature":"get_process_id() -> int","description":"Returns the number used by the host machine to uniquely identify this application.\n\t\t\t\tNote: This method is implemented on Android, iOS, Linux, macOS, and Windows.","returnType":"int"},{"name":"get_processor_count","signature":"get_processor_count() -> int","description":"Returns the number of logical CPU cores available on the host machine. On CPUs with HyperThreading enabled, this number will be greater than the number of physical CPU cores.","returnType":"int"},{"name":"get_processor_name","signature":"get_processor_name() -> String","description":"Returns the full name of the CPU model on the host machine (e.g. \"Intel(R) Core(TM) i7-6700K CPU @ 4.00GHz\").\n\t\t\t\tNote: This method is only implemented on Windows, macOS, Linux and iOS. On Android and Web, [method get_processor_name] returns an empty string.","returnType":"String"},{"name":"get_restart_on_exit_arguments","signature":"get_restart_on_exit_arguments() -> PackedStringArray","description":"Returns the list of command line arguments that will be used when the project automatically restarts using [method set_restart_on_exit]. See also [method is_restart_on_exit_set].","returnType":"PackedStringArray"},{"name":"get_static_memory_peak_usage","signature":"get_static_memory_peak_usage() -> int","description":"Returns the maximum amount of static memory used. Only works in debug builds.","returnType":"int"},{"name":"get_static_memory_usage","signature":"get_static_memory_usage() -> int","description":"Returns the amount of static memory being used by the program in bytes. Only works in debug builds.","returnType":"int"},{"name":"get_stderr_type","signature":"get_stderr_type() -> int","description":"Returns type of the standard error device.","returnType":"int"},{"name":"get_stdin_type","signature":"get_stdin_type() -> int","description":"Returns type of the standard input device.","returnType":"int"},{"name":"get_stdout_type","signature":"get_stdout_type() -> int","description":"Returns type of the standard output device.","returnType":"int"},{"name":"get_system_ca_certificates","signature":"get_system_ca_certificates() -> String","description":"Returns the list of certification authorities trusted by the operating system as a string of concatenated certificates in PEM format.","returnType":"String"},{"name":"get_system_dir","signature":"get_system_dir(dir: int, shared_storage: bool) -> String","description":"Returns the path to commonly used folders across different platforms, as defined by [param dir]. See the [enum SystemDir] constants for available locations.\n\t\t\t\tNote: This method is implemented on Android, Linux, macOS and Windows.\n\t\t\t\tNote: Shared storage is implemented on Android and allows to differentiate between app specific and shared directories, if [param shared_storage] is true. Shared directories have additional restrictions on Android.","returnType":"String"},{"name":"get_system_font_path","signature":"get_system_font_path(font_name: String, weight: int, stretch: int, italic: bool) -> String","description":"Returns the path to the system font file with [param font_name] and style. Returns an empty string if no matching fonts found.\n\t\t\t\tThe following aliases can be used to request default fonts: \"sans-serif\", \"serif\", \"monospace\", \"cursive\", and \"fantasy\".\n\t\t\t\tNote: Returned font might have different style if the requested style is not available.\n\t\t\t\tNote: This method is implemented on Android, iOS, Linux, macOS and Windows.","returnType":"String"},{"name":"get_system_font_path_for_text","signature":"get_system_font_path_for_text(font_name: String, text: String, locale: String, script: String, weight: int, stretch: int, italic: bool) -> PackedStringArray","description":"Returns an array of the system substitute font file paths, which are similar to the font with [param font_name] and style for the specified text, locale, and script. Returns an empty array if no matching fonts found.\n\t\t\t\tThe following aliases can be used to request default fonts: \"sans-serif\", \"serif\", \"monospace\", \"cursive\", and \"fantasy\".\n\t\t\t\tNote: Depending on OS, it's not guaranteed that any of the returned fonts will be suitable for rendering specified text. Fonts should be loaded and checked in the order they are returned, and the first suitable one used.\n\t\t\t\tNote: Returned fonts might have different style if the requested style is not available or belong to a different font family.\n\t\t\t\tNote: This method is implemented on Android, iOS, Linux, macOS and Windows.","returnType":"PackedStringArray"},{"name":"get_system_fonts","signature":"get_system_fonts() -> PackedStringArray","description":"Returns the list of font family names available.\n\t\t\t\tNote: This method is implemented on Android, iOS, Linux, macOS and Windows.","returnType":"PackedStringArray"},{"name":"get_temp_dir","signature":"get_temp_dir() -> String","description":"Returns the global temporary data directory according to the operating system's standards.","returnType":"String"},{"name":"get_thread_caller_id","signature":"get_thread_caller_id() -> int","description":"Returns the ID of the current thread. This can be used in logs to ease debugging of multi-threaded applications.\n\t\t\t\tNote: Thread IDs are not deterministic and may be reused across application restarts.","returnType":"int"},{"name":"get_unique_id","signature":"get_unique_id() -> String","description":"Returns a string that is unique to the device.\n\t\t\t\tNote: This string may change without notice if the user reinstalls their operating system, upgrades it, or modifies their hardware. This means it should generally not be used to encrypt persistent data, as the data saved before an unexpected ID change would become inaccessible. The returned string may also be falsified using external programs, so do not rely on the string returned by this method for security purposes.\n\t\t\t\tNote: On Web, returns an empty string and generates an error, as this method cannot be implemented for security reasons.","returnType":"String"},{"name":"get_user_data_dir","signature":"get_user_data_dir() -> String","description":"Returns the absolute directory path where user data is written (the user:// directory in Godot). The path depends on the project name and [member ProjectSettings.application/config/use_custom_user_dir].\n\t\t\t\t- On Windows, this is %AppData%\\Godot\\app_userdata\\, or %AppData%\\ if use_custom_user_dir is set. %AppData% expands to %UserProfile%\\AppData\\Roaming.\n\t\t\t\t- On macOS, this is ~/Library/Application Support/Godot/app_userdata/, or ~/Library/Application Support/ if use_custom_user_dir is set.\n\t\t\t\t- On Linux and BSD, this is ~/.local/share/godot/app_userdata/, or ~/.local/share/ if use_custom_user_dir is set.\n\t\t\t\t- On Android and iOS, this is a sandboxed directory in either internal or external storage, depending on the user's configuration.\n\t\t\t\t- On Web, this is a virtual directory managed by the browser.\n\t\t\t\tIf the project name is empty,  falls back to [unnamed project].\n\t\t\t\tNot to be confused with [method get_data_dir], which returns the global (non-project-specific) user home directory.","returnType":"String"},{"name":"get_version","signature":"get_version() -> String","description":"Returns the exact production and build version of the operating system. This is different from the branded version used in marketing. This helps to distinguish between different releases of operating systems, including minor versions, and insider and custom builds.\n\t\t\t\t- For Windows, the major and minor version are returned, as well as the build number. For example, the returned string may look like 10.0.9926 for a build of Windows 10, and it may look like 6.1.7601 for a build of Windows 7 SP1.\n\t\t\t\t- For rolling distributions, such as Arch Linux, an empty string is returned.\n\t\t\t\t- For macOS and iOS, the major and minor version are returned, as well as the patch number.\n\t\t\t\t- For Android, the SDK version and the incremental build number are returned. If it's a custom ROM, it attempts to return its version instead.\n\t\t\t\tNote: This method is not supported on the Web platform. It returns an empty string.","returnType":"String"},{"name":"get_version_alias","signature":"get_version_alias() -> String","description":"Returns the branded version used in marketing, followed by the build number (on Windows) or the version number (on macOS). Examples include 11 (build 22000) and Sequoia (15.0.0). This value can then be appended to [method get_name] to get a full, human-readable operating system name and version combination for the operating system. Windows feature updates such as 24H2 are not contained in the resulting string, but Windows Server is recognized as such (e.g. 2025 (build 26100) for Windows Server 2025).\n\t\t\t\tNote: This method is only supported on Windows and macOS. On other operating systems, it returns the same value as [method get_version].","returnType":"String"},{"name":"get_video_adapter_driver_info","signature":"get_video_adapter_driver_info() -> PackedStringArray","description":"Returns the video adapter driver name and version for the user's currently active graphics card, as a . See also [method RenderingServer.get_video_adapter_api_version].\n\t\t\t\tThe first element holds the driver name, such as nvidia, amdgpu, etc.\n\t\t\t\tThe second element holds the driver version. For example, on the nvidia driver on a Linux/BSD platform, the version is in the format 510.85.02. For Windows, the driver's format is 31.0.15.1659.\n\t\t\t\tNote: This method is only supported on Linux/BSD and Windows when not running in headless mode. On other platforms, it returns an empty array.","returnType":"PackedStringArray"},{"name":"has_environment","signature":"has_environment(variable: String) -> bool","description":"Returns true if the environment variable with the name [param variable] exists.\n\t\t\t\tNote: Double-check the casing of [param variable]. Environment variable names are case-sensitive on all platforms except Windows.","returnType":"bool"},{"name":"has_feature","signature":"has_feature(tag_name: String) -> bool","description":"Returns true if the feature for the given feature tag is supported in the currently running instance, depending on the platform, build, etc. Can be used to check whether you're currently running a debug build, on a certain platform or arch, etc. Refer to the [url=$DOCS_URL/tutorials/export/feature_tags.html]Feature Tags documentation for more details.\n\t\t\t\tNote: Tag names are case-sensitive.\n\t\t\t\tNote: On the Web platform, one of the following additional tags is defined to indicate the host platform: web_android, web_ios, web_linuxbsd, web_macos, or web_windows.","returnType":"bool"},{"name":"is_debug_build","signature":"is_debug_build() -> bool","description":"Returns true if the Godot binary used to run the project is a debug export template, or when running in the editor.\n\t\t\t\tReturns false if the Godot binary used to run the project is a release export template.\n\t\t\t\tNote: To check whether the Godot binary used to run the project is an export template (debug or release), use OS.has_feature(\"template\") instead.","returnType":"bool"},{"name":"is_keycode_unicode","signature":"is_keycode_unicode(code: int) -> bool","description":"Returns true if the input keycode corresponds to a Unicode character. For a list of codes, see the [enum Key] constants.\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tprint(OS.is_keycode_unicode(KEY_G))      # Prints true\n\t\t\t\tprint(OS.is_keycode_unicode(KEY_KP_4))   # Prints true\n\t\t\t\tprint(OS.is_keycode_unicode(KEY_TAB))    # Prints false\n\t\t\t\tprint(OS.is_keycode_unicode(KEY_ESCAPE)) # Prints false\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tGD.Print(OS.IsKeycodeUnicode((long)Key.G));      // Prints True\n\t\t\t\tGD.Print(OS.IsKeycodeUnicode((long)Key.Kp4));    // Prints True\n\t\t\t\tGD.Print(OS.IsKeycodeUnicode((long)Key.Tab));    // Prints False\n\t\t\t\tGD.Print(OS.IsKeycodeUnicode((long)Key.Escape)); // Prints False\n\t\t\t\t\n\t\t\t\t","returnType":"bool"},{"name":"is_process_running","signature":"is_process_running(pid: int) -> bool","description":"Returns true if the child process ID ([param pid]) is still running or false if it has terminated. [param pid] must be a valid ID generated from [method create_process].\n\t\t\t\tNote: This method is implemented on Android, iOS, Linux, macOS, and Windows.","returnType":"bool"},{"name":"is_restart_on_exit_set","signature":"is_restart_on_exit_set() -> bool","description":"Returns true if the project will automatically restart when it exits for any reason, false otherwise. See also [method set_restart_on_exit] and [method get_restart_on_exit_arguments].","returnType":"bool"},{"name":"is_sandboxed","signature":"is_sandboxed() -> bool","description":"Returns true if the application is running in the sandbox.\n\t\t\t\tNote: This method is only implemented on macOS and Linux.","returnType":"bool"},{"name":"is_stdout_verbose","signature":"is_stdout_verbose() -> bool","description":"Returns true if the engine was executed with the --verbose or -v command line argument, or if [member ProjectSettings.debug/settings/stdout/verbose_stdout] is true. See also [method @GlobalScope.print_verbose].","returnType":"bool"},{"name":"is_userfs_persistent","signature":"is_userfs_persistent() -> bool","description":"Returns true if the user:// file system is persistent, that is, its state is the same after a player quits and starts the game again. Relevant to the Web platform, where this persistence may be unavailable.","returnType":"bool"},{"name":"kill","signature":"kill(pid: int) -> int","description":"Kill (terminate) the process identified by the given process ID ([param pid]), such as the ID returned by [method execute] in non-blocking mode. See also [method crash].\n\t\t\t\tNote: This method can also be used to kill processes that were not spawned by the engine.\n\t\t\t\tNote: This method is implemented on Android, iOS, Linux, macOS and Windows.","returnType":"int"},{"name":"move_to_trash","signature":"move_to_trash(path: String) -> int","description":"Moves the file or directory at the given [param path] to the system's recycle bin. See also [method DirAccess.remove].\n\t\t\t\tThe method takes only global paths, so you may need to use [method ProjectSettings.globalize_path]. Do not use it for files in res:// as it will not work in exported projects.\n\t\t\t\tReturns [constant FAILED] if the file or directory cannot be found, or the system does not support this method.\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tvar file_to_remove = \"user://slot1.save\"\n\t\t\t\tOS.move_to_trash(ProjectSettings.globalize_path(file_to_remove))\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tvar fileToRemove = \"user://slot1.save\";\n\t\t\t\tOS.MoveToTrash(ProjectSettings.GlobalizePath(fileToRemove));\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tNote: This method is implemented on Android, Linux, macOS and Windows.\n\t\t\t\tNote: If the user has disabled the recycle bin on their system, the file will be permanently deleted instead.","returnType":"int"},{"name":"open_midi_inputs","signature":"open_midi_inputs() -> void","description":"Initializes the singleton for the system MIDI driver, allowing Godot to receive . See also [method get_connected_midi_inputs] and [method close_midi_inputs].\n\t\t\t\tNote: This method is implemented on Linux, macOS, Windows, and Web.\n\t\t\t\tNote: On the Web platform, Web MIDI needs to be supported by the browser. [url=https://caniuse.com/midi]For the time being, it is currently supported by all major browsers, except Safari.\n\t\t\t\tNote: On the Web platform, using MIDI input requires a browser permission to be granted first. This permission request is performed when calling [method open_midi_inputs]. The browser will refrain from processing MIDI input until the user accepts the permission request.","returnType":"void"},{"name":"read_buffer_from_stdin","signature":"read_buffer_from_stdin(buffer_size: int) -> PackedByteArray","description":"Reads a user input as raw data from the standard input. This operation can be blocking, which causes the window to freeze if [method read_string_from_stdin] is called on the main thread.\n\t\t\t\t- If standard input is console, this method will block until the program receives a line break in standard input (usually by the user pressing Enter).\n\t\t\t\t- If standard input is pipe, this method will block until a specific amount of data is read or pipe is closed.\n\t\t\t\t- If standard input is a file, this method will read a specific amount of data (or less if end-of-file is reached) and return immediately.\n\t\t\t\tNote: This method is implemented on Linux, macOS, and Windows.\n\t\t\t\tNote: On exported Windows builds, run the console wrapper executable to access the terminal. If standard input is console, calling this method without console wrapped will freeze permanently. If standard input is pipe or file, it can be used without console wrapper. If you need a single executable with full console support, use a custom build compiled with the windows_subsystem=console flag.","returnType":"PackedByteArray"},{"name":"read_string_from_stdin","signature":"read_string_from_stdin(buffer_size: int) -> String","description":"Reads a user input as a UTF-8 encoded string from the standard input. This operation can be blocking, which causes the window to freeze if [method read_string_from_stdin] is called on the main thread.\n\t\t\t\t- If standard input is console, this method will block until the program receives a line break in standard input (usually by the user pressing Enter).\n\t\t\t\t- If standard input is pipe, this method will block until a specific amount of data is read or pipe is closed.\n\t\t\t\t- If standard input is a file, this method will read a specific amount of data (or less if end-of-file is reached) and return immediately.\n\t\t\t\tNote: This method automatically replaces \\r\\n line breaks with \\n and removes them from the end of the string. Use [method read_buffer_from_stdin] to read the unprocessed data.\n\t\t\t\tNote: This method is implemented on Linux, macOS, and Windows.\n\t\t\t\tNote: On exported Windows builds, run the console wrapper executable to access the terminal. If standard input is console, calling this method without console wrapped will freeze permanently. If standard input is pipe or file, it can be used without console wrapper. If you need a single executable with full console support, use a custom build compiled with the windows_subsystem=console flag.","returnType":"String"},{"name":"request_permission","signature":"request_permission(name: String) -> bool","description":"Requests permission from the OS for the given [param name]. Returns true if the permission has already been granted. See also [signal MainLoop.on_request_permissions_result].\n\t\t\t\tThe [param name] must be the full permission name. For example:\n\t\t\t\t- OS.request_permission(\"android.permission.READ_EXTERNAL_STORAGE\")\n\t\t\t\t- OS.request_permission(\"android.permission.POST_NOTIFICATIONS\")\n\t\t\t\tNote: Permission must be checked during export.\n\t\t\t\tNote: This method is only implemented on Android.","returnType":"bool"},{"name":"request_permissions","signature":"request_permissions() -> bool","description":"Requests dangerous permissions from the OS. Returns true if permissions have already been granted. See also [signal MainLoop.on_request_permissions_result].\n\t\t\t\tNote: Permissions must be checked during export.\n\t\t\t\tNote: This method is only implemented on Android. Normal permissions are automatically granted at install time in Android applications.","returnType":"bool"},{"name":"revoke_granted_permissions","signature":"revoke_granted_permissions() -> void","description":"On macOS (sandboxed applications only), this function clears list of user selected folders accessible to the application.","returnType":"void"},{"name":"set_environment","signature":"set_environment(variable: String, value: String) -> void","description":"Sets the value of the environment variable [param variable] to [param value]. The environment variable will be set for the Godot process and any process executed with [method execute] after running [method set_environment]. The environment variable will not persist to processes run after the Godot process was terminated.\n\t\t\t\tNote: Environment variable names are case-sensitive on all platforms except Windows. The [param variable] name cannot be empty or include the = character. On Windows, there is a 32767 characters limit for the combined length of [param variable], [param value], and the = and null terminator characters that will be registered in the environment block.","returnType":"void"},{"name":"set_restart_on_exit","signature":"set_restart_on_exit(restart: bool, arguments: PackedStringArray) -> void","description":"If [param restart] is true, restarts the project automatically when it is exited with [method SceneTree.quit] or [constant Node.NOTIFICATION_WM_CLOSE_REQUEST]. Command-line [param arguments] can be supplied. To restart the project with the same command line arguments as originally used to run the project, pass [method get_cmdline_args] as the value for [param arguments].\n\t\t\t\tThis method can be used to apply setting changes that require a restart. See also [method is_restart_on_exit_set] and [method get_restart_on_exit_arguments].\n\t\t\t\tNote: This method is only effective on desktop platforms, and only when the project isn't started from the editor. It will have no effect on mobile and Web platforms, or when the project is started from the editor.\n\t\t\t\tNote: If the project process crashes or is killed by the user (by sending SIGKILL instead of the usual SIGTERM), the project won't restart automatically.","returnType":"void"},{"name":"set_thread_name","signature":"set_thread_name(name: String) -> int","description":"Assigns the given name to the current thread. Returns [constant ERR_UNAVAILABLE] if unavailable on the current platform.","returnType":"int"},{"name":"set_use_file_access_save_and_swap","signature":"set_use_file_access_save_and_swap(enabled: bool) -> void","description":"If [param enabled] is true, when opening a file for writing, a temporary file is used in its place. When closed, it is automatically applied to the target file.\n\t\t\t\tThis can useful when files may be opened by other applications, such as antiviruses, text editors, or even the Godot editor itself.","returnType":"void"},{"name":"shell_open","signature":"shell_open(uri: String) -> int","description":"Requests the OS to open a resource identified by [param uri] with the most appropriate program. For example:\n\t\t\t\t- OS.shell_open(\"C:\\\\Users\\\\name\\\\Downloads\") on Windows opens the file explorer at the user's Downloads folder.\n\t\t\t\t- OS.shell_open(\"C:/Users/name/Downloads\") also works on Windows and opens the file explorer at the user's Downloads folder.\n\t\t\t\t- OS.shell_open(\"https://godotengine.org\") opens the default web browser on the official Godot website.\n\t\t\t\t- OS.shell_open(\"mailto:example@example.com\") opens the default email client with the \"To\" field set to example@example.com. See [url=https://datatracker.ietf.org/doc/html/rfc2368]RFC 2368 - The mailto URL scheme for a list of fields that can be added.\n\t\t\t\tUse [method ProjectSettings.globalize_path] to convert a res:// or user:// project path into a system path for use with this method.\n\t\t\t\tNote: Use [method String.uri_encode] to encode characters within URLs in a URL-safe, portable way. This is especially required for line breaks. Otherwise, [method shell_open] may not work correctly in a project exported to the Web platform.\n\t\t\t\tNote: This method is implemented on Android, iOS, Web, Linux, macOS and Windows.","returnType":"int"},{"name":"shell_show_in_file_manager","signature":"shell_show_in_file_manager(file_or_dir_path: String, open_folder: bool) -> int","description":"Requests the OS to open the file manager, navigate to the given [param file_or_dir_path] and select the target file or folder.\n\t\t\t\tIf [param open_folder] is true and [param file_or_dir_path] is a valid directory path, the OS will open the file manager and navigate to the target folder without selecting anything.\n\t\t\t\tUse [method ProjectSettings.globalize_path] to convert a res:// or user:// project path into a system path to use with this method.\n\t\t\t\tNote: This method is currently only implemented on Windows and macOS. On other platforms, it will fallback to [method shell_open] with a directory path of [param file_or_dir_path] prefixed with file://.","returnType":"int"},{"name":"unset_environment","signature":"unset_environment(variable: String) -> void","description":"Removes the given environment variable from the current environment, if it exists. The [param variable] name cannot be empty or include the = character. The environment variable will be removed for the Godot process and any process executed with [method execute] after running [method unset_environment]. The removal of the environment variable will not persist to processes run after the Godot process was terminated.\n\t\t\t\tNote: Environment variable names are case-sensitive on all platforms except Windows.","returnType":"void"}],"signals":[]},"Object":{"name":"Object","description":"Base class for all other classes in the engine.","inherits":"","properties":[],"methods":[{"name":"_get","signature":"_get(property: StringName) -> Variant","description":"Override this method to customize the behavior of [method get]. Should return the given [param property]'s value, or null if the [param property] should be handled normally.\n\t\t\t\tCombined with [method _set] and [method _get_property_list], this method allows defining custom properties, which is particularly useful for editor plugins. Note that a property must be present in [method get_property_list], otherwise this method will not be called.\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tfunc _get(property):\n\t\t\t\t    if property == \"fake_property\":\n\t\t\t\t        print(\"Getting my property!\")\n\t\t\t\t        return 4\n\n\t\t\t\tfunc _get_property_list():\n\t\t\t\t    return [\n\t\t\t\t        { \"name\": \"fake_property\", \"type\": TYPE_INT }\n\t\t\t\t    ]\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tpublic override Variant _Get(StringName property)\n\t\t\t\t{\n\t\t\t\t    if (property == \"FakeProperty\")\n\t\t\t\t    {\n\t\t\t\t        GD.Print(\"Getting my property!\");\n\t\t\t\t        return 4;\n\t\t\t\t    }\n\t\t\t\t    return default;\n\t\t\t\t}\n\n\t\t\t\tpublic override Godot.Collections.Array&lt;Godot.Collections.Dictionary&gt; _GetPropertyList()\n\t\t\t\t{\n\t\t\t\t    return\n\t\t\t\t    [\n\t\t\t\t        new Godot.Collections.Dictionary()\n\t\t\t\t        {\n\t\t\t\t            { \"name\", \"FakeProperty\" },\n\t\t\t\t            { \"type\", (int)Variant.Type.Int },\n\t\t\t\t        },\n\t\t\t\t    ];\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t","returnType":"Variant"},{"name":"_get_property_list","signature":"_get_property_list() -> Dictionary[]","description":"Override this method to provide a custom list of additional properties to handle by the engine.\n\t\t\t\tShould return a property list, as an  of dictionaries. The result is added to the array of [method get_property_list], and should be formatted in the same way. Each  must at least contain the name and type entries.\n\t\t\t\tYou can use [method _property_can_revert] and [method _property_get_revert] to customize the default values of the properties added by this method.\n\t\t\t\tThe example below displays a list of numbers shown as words going from ZERO to FIVE, with number_count controlling the size of the list:\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t@tool\n\t\t\t\textends Node\n\n\t\t\t\t@export var number_count = 3:\n\t\t\t\t    set(nc):\n\t\t\t\t        number_count = nc\n\t\t\t\t        numbers.resize(number_count)\n\t\t\t\t        notify_property_list_changed()\n\n\t\t\t\tvar numbers = PackedInt32Array([0, 0, 0])\n\n\t\t\t\tfunc _get_property_list():\n\t\t\t\t    var properties = []\n\n\t\t\t\t    for i in range(number_count):\n\t\t\t\t        properties.append({\n\t\t\t\t            \"name\": \"number_%d\" % i,\n\t\t\t\t            \"type\": TYPE_INT,\n\t\t\t\t            \"hint\": PROPERTY_HINT_ENUM,\n\t\t\t\t            \"hint_string\": \"ZERO,ONE,TWO,THREE,FOUR,FIVE\",\n\t\t\t\t        })\n\n\t\t\t\t    return properties\n\n\t\t\t\tfunc _get(property):\n\t\t\t\t    if property.begins_with(\"number_\"):\n\t\t\t\t        var index = property.get_slice(\"_\", 1).to_int()\n\t\t\t\t        return numbers\n\n\t\t\t\tfunc _set(property, value):\n\t\t\t\t    if property.begins_with(\"number_\"):\n\t\t\t\t        var index = property.get_slice(\"_\", 1).to_int()\n\t\t\t\t        numbers = value\n\t\t\t\t        return true\n\t\t\t\t    return false\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tpublic partial class MyNode : Node\n\t\t\t\t{\n\t\t\t\t    private int _numberCount;\n\n\t\t\t\t    \n\t\t\t\t    public int NumberCount\n\t\t\t\t    {\n\t\t\t\t        get =&gt; _numberCount;\n\t\t\t\t        set\n\t\t\t\t        {\n\t\t\t\t            _numberCount = value;\n\t\t\t\t            _numbers.Resize(_numberCount);\n\t\t\t\t            NotifyPropertyListChanged();\n\t\t\t\t        }\n\t\t\t\t    }\n\n\t\t\t\t    private Godot.Collections.Array&lt;int&gt; _numbers = [];\n\n\t\t\t\t    public override Godot.Collections.Array&lt;Godot.Collections.Dictionary&gt; _GetPropertyList()\n\t\t\t\t    {\n\t\t\t\t        Godot.Collections.Array&lt;Godot.Collections.Dictionary&gt; properties = [];\n\n\t\t\t\t        for (int i = 0; i &lt; _numberCount; i++)\n\t\t\t\t        {\n\t\t\t\t            properties.Add(new Godot.Collections.Dictionary()\n\t\t\t\t            {\n\t\t\t\t                { \"name\", $\"number_{i}\" },\n\t\t\t\t                { \"type\", (int)Variant.Type.Int },\n\t\t\t\t                { \"hint\", (int)PropertyHint.Enum },\n\t\t\t\t                { \"hint_string\", \"Zero,One,Two,Three,Four,Five\" },\n\t\t\t\t            });\n\t\t\t\t        }\n\n\t\t\t\t        return properties;\n\t\t\t\t    }\n\n\t\t\t\t    public override Variant _Get(StringName property)\n\t\t\t\t    {\n\t\t\t\t        string propertyName = property.ToString();\n\t\t\t\t        if (propertyName.StartsWith(\"number_\"))\n\t\t\t\t        {\n\t\t\t\t            int index = int.Parse(propertyName.Substring(\"number_\".Length));\n\t\t\t\t            return _numbers;\n\t\t\t\t        }\n\t\t\t\t        return default;\n\t\t\t\t    }\n\n\t\t\t\t    public override bool _Set(StringName property, Variant value)\n\t\t\t\t    {\n\t\t\t\t        string propertyName = property.ToString();\n\t\t\t\t        if (propertyName.StartsWith(\"number_\"))\n\t\t\t\t        {\n\t\t\t\t            int index = int.Parse(propertyName.Substring(\"number_\".Length));\n\t\t\t\t            _numbers = value.As&lt;int&gt;();\n\t\t\t\t            return true;\n\t\t\t\t        }\n\t\t\t\t        return false;\n\t\t\t\t    }\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tNote: This method is intended for advanced purposes. For most common use cases, the scripting languages offer easier ways to handle properties. See [annotation @GDScript.@export], [annotation @GDScript.@export_enum], [annotation @GDScript.@export_group], etc. If you want to customize exported properties, use [method _validate_property].\n\t\t\t\tNote: If the object's script is not [annotation @GDScript.@tool], this method will not be called in the editor.","returnType":"Dictionary[]"},{"name":"_init","signature":"_init() -> void","description":"Called when the object's script is instantiated, oftentimes after the object is initialized in memory (through Object.new() in GDScript, or new GodotObject in C#). It can be also defined to take in parameters. This method is similar to a constructor in most programming languages.\n\t\t\t\tNote: If [method _init] is defined with required parameters, the Object with script may only be created directly. If any other means (such as [method PackedScene.instantiate] or [method Node.duplicate]) are used, the script's initialization will fail.","returnType":"void"},{"name":"_iter_get","signature":"_iter_get(iter: Variant) -> Variant","description":"Returns the current iterable value. [param iter] stores the iteration state, but unlike [method _iter_init] and [method _iter_next] the state is supposed to be read-only, so there is no  wrapper.","returnType":"Variant"},{"name":"_iter_init","signature":"_iter_init(iter: Array) -> bool","description":"Initializes the iterator. [param iter] stores the iteration state. Since GDScript does not support passing arguments by reference, a single-element array is used as a wrapper. Returns true so long as the iterator has not reached the end.\n\t\t\t\tExample:\n\t\t\t\t\n\t\t\t\tclass MyRange:\n\t\t\t\t    var _from\n\t\t\t\t    var _to\n\n\t\t\t\t    func _init(from, to):\n\t\t\t\t        assert(from &lt;= to)\n\t\t\t\t        _from = from\n\t\t\t\t        _to = to\n\n\t\t\t\t    func _iter_init(iter):\n\t\t\t\t        iter = _from\n\t\t\t\t        return iter &lt; _to\n\n\t\t\t\t    func _iter_next(iter):\n\t\t\t\t        iter += 1\n\t\t\t\t        return iter &lt; _to\n\n\t\t\t\t    func _iter_get(iter):\n\t\t\t\t        return iter\n\n\t\t\t\tfunc _ready():\n\t\t\t\t    var my_range = MyRange.new(2, 5)\n\t\t\t\t    for x in my_range:\n\t\t\t\t        print(x) # Prints 2, 3, 4.\n\t\t\t\t\n\t\t\t\tNote: Alternatively, you can ignore [param iter] and use the object's state instead, see [url=$DOCS_URL/tutorials/scripting/gdscript/gdscript_advanced.html#custom-iterators]online docs for an example. Note that in this case you will not be able to reuse the same iterator instance in nested loops. Also, make sure you reset the iterator state in this method if you want to reuse the same instance multiple times.","returnType":"bool"},{"name":"_iter_next","signature":"_iter_next(iter: Array) -> bool","description":"Moves the iterator to the next iteration. [param iter] stores the iteration state. Since GDScript does not support passing arguments by reference, a single-element array is used as a wrapper. Returns true so long as the iterator has not reached the end.","returnType":"bool"},{"name":"_notification","signature":"_notification(what: int) -> void","description":"Called when the object receives a notification, which can be identified in [param what] by comparing it with a constant. See also [method notification].\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tfunc _notification(what):\n\t\t\t\t    if what == NOTIFICATION_PREDELETE:\n\t\t\t\t        print(\"Goodbye!\")\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tpublic override void _Notification(int what)\n\t\t\t\t{\n\t\t\t\t    if (what == NotificationPredelete)\n\t\t\t\t    {\n\t\t\t\t        GD.Print(\"Goodbye!\");\n\t\t\t\t    }\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tNote: The base  defines a few notifications ([constant NOTIFICATION_POSTINITIALIZE] and [constant NOTIFICATION_PREDELETE]). Inheriting classes such as  define a lot more notifications, which are also received by this method.","returnType":"void"},{"name":"_property_can_revert","signature":"_property_can_revert(property: StringName) -> bool","description":"Override this method to customize the given [param property]'s revert behavior. Should return true if the [param property] has a custom default value and is revertible in the Inspector dock. Use [method _property_get_revert] to specify the [param property]'s default value.\n\t\t\t\tNote: This method must return consistently, regardless of the current value of the [param property].","returnType":"bool"},{"name":"_property_get_revert","signature":"_property_get_revert(property: StringName) -> Variant","description":"Override this method to customize the given [param property]'s revert behavior. Should return the default value for the [param property]. If the default value differs from the [param property]'s current value, a revert icon is displayed in the Inspector dock.\n\t\t\t\tNote: [method _property_can_revert] must also be overridden for this method to be called.","returnType":"Variant"},{"name":"_set","signature":"_set(property: StringName, value: Variant) -> bool","description":"Override this method to customize the behavior of [method set]. Should set the [param property] to [param value] and return true, or false if the [param property] should be handled normally. The exact way to set the [param property] is up to this method's implementation.\n\t\t\t\tCombined with [method _get] and [method _get_property_list], this method allows defining custom properties, which is particularly useful for editor plugins. Note that a property must be present in [method get_property_list], otherwise this method will not be called.\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tvar internal_data = {}\n\n\t\t\t\tfunc _set(property, value):\n\t\t\t\t    if property == \"fake_property\":\n\t\t\t\t        # Storing the value in the fake property.\n\t\t\t\t        internal_data[\"fake_property\"] = value\n\t\t\t\t        return true\n\t\t\t\t    return false\n\n\t\t\t\tfunc _get_property_list():\n\t\t\t\t    return [\n\t\t\t\t        { \"name\": \"fake_property\", \"type\": TYPE_INT }\n\t\t\t\t    ]\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tprivate Godot.Collections.Dictionary _internalData = new Godot.Collections.Dictionary();\n\n\t\t\t\tpublic override bool _Set(StringName property, Variant value)\n\t\t\t\t{\n\t\t\t\t    if (property == \"FakeProperty\")\n\t\t\t\t    {\n\t\t\t\t        // Storing the value in the fake property.\n\t\t\t\t        _internalData[\"FakeProperty\"] = value;\n\t\t\t\t        return true;\n\t\t\t\t    }\n\n\t\t\t\t    return false;\n\t\t\t\t}\n\n\t\t\t\tpublic override Godot.Collections.Array&lt;Godot.Collections.Dictionary&gt; _GetPropertyList()\n\t\t\t\t{\n\t\t\t\t    return\n\t\t\t\t    [\n\t\t\t\t        new Godot.Collections.Dictionary()\n\t\t\t\t        {\n\t\t\t\t            { \"name\", \"FakeProperty\" },\n\t\t\t\t            { \"type\", (int)Variant.Type.Int },\n\t\t\t\t        },\n\t\t\t\t    ];\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t","returnType":"bool"},{"name":"_to_string","signature":"_to_string() -> String","description":"Override this method to customize the return value of [method to_string], and therefore the object's representation as a .\n\t\t\t\t\n\t\t\t\tfunc _to_string():\n\t\t\t\t    return \"Welcome to Godot 4!\"\n\n\t\t\t\tfunc _init():\n\t\t\t\t    print(self)       # Prints \"Welcome to Godot 4!\"\n\t\t\t\t    var a = str(self) # a is \"Welcome to Godot 4!\"\n\t\t\t\t","returnType":"String"},{"name":"_validate_property","signature":"_validate_property(property: Dictionary) -> void","description":"Override this method to customize existing properties. Every property info goes through this method, except properties added with [method _get_property_list]. The dictionary contents is the same as in [method _get_property_list].\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t@tool\n\t\t\t\textends Node\n\n\t\t\t\t@export var is_number_editable: bool:\n\t\t\t\t    set(value):\n\t\t\t\t        is_number_editable = value\n\t\t\t\t        notify_property_list_changed()\n\t\t\t\t@export var number: int\n\n\t\t\t\tfunc _validate_property(property: Dictionary):\n\t\t\t\t    if property.name == \"number\" and not is_number_editable:\n\t\t\t\t        property.usage |= PROPERTY_USAGE_READ_ONLY\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tpublic partial class MyNode : Node\n\t\t\t\t{\n\t\t\t\t    private bool _isNumberEditable;\n\n\t\t\t\t    \n\t\t\t\t    public bool IsNumberEditable\n\t\t\t\t    {\n\t\t\t\t        get =&gt; _isNumberEditable;\n\t\t\t\t        set\n\t\t\t\t        {\n\t\t\t\t            _isNumberEditable = value;\n\t\t\t\t            NotifyPropertyListChanged();\n\t\t\t\t        }\n\t\t\t\t    }\n\n\t\t\t\t    \n\t\t\t\t    public int Number { get; set; }\n\n\t\t\t\t    public override void _ValidateProperty(Godot.Collections.Dictionary property)\n\t\t\t\t    {\n\t\t\t\t        if (property[\"name\"].AsStringName() == PropertyName.Number &amp;&amp; !IsNumberEditable)\n\t\t\t\t        {\n\t\t\t\t            var usage = property[\"usage\"].As&lt;PropertyUsageFlags&gt;() | PropertyUsageFlags.ReadOnly;\n\t\t\t\t            property[\"usage\"] = (int)usage;\n\t\t\t\t        }\n\t\t\t\t    }\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t","returnType":"void"},{"name":"add_user_signal","signature":"add_user_signal(signal: String, arguments: Array) -> void","description":"Adds a user-defined signal named [param signal]. Optional arguments for the signal can be added as an  of dictionaries, each defining a name  and a type  (see [enum Variant.Type]). See also [method has_user_signal] and [method remove_user_signal].\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tadd_user_signal(\"hurt\", [\n\t\t\t\t    { \"name\": \"damage\", \"type\": TYPE_INT },\n\t\t\t\t    { \"name\": \"source\", \"type\": TYPE_OBJECT }\n\t\t\t\t])\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tAddUserSignal(\"Hurt\",\n\t\t\t\t[\n\t\t\t\t    new Godot.Collections.Dictionary()\n\t\t\t\t    {\n\t\t\t\t        { \"name\", \"damage\" },\n\t\t\t\t        { \"type\", (int)Variant.Type.Int },\n\t\t\t\t    },\n\t\t\t\t    new Godot.Collections.Dictionary()\n\t\t\t\t    {\n\t\t\t\t        { \"name\", \"source\" },\n\t\t\t\t        { \"type\", (int)Variant.Type.Object },\n\t\t\t\t    },\n\t\t\t\t]);\n\t\t\t\t\n\t\t\t\t","returnType":"void"},{"name":"call","signature":"call(method: StringName) -> Variant","description":"Calls the [param method] on the object and returns the result. This method supports a variable number of arguments, so parameters can be passed as a comma separated list.\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tvar node = Node3D.new()\n\t\t\t\tnode.call(\"rotate\", Vector3(1.0, 0.0, 0.0), 1.571)\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tvar node = new Node3D();\n\t\t\t\tnode.Call(Node3D.MethodName.Rotate, new Vector3(1f, 0f, 0f), 1.571f);\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tNote: In C#, [param method] must be in snake_case when referring to built-in Godot methods. Prefer using the names exposed in the MethodName class to avoid allocating a new  on each call.","returnType":"Variant"},{"name":"call_deferred","signature":"call_deferred(method: StringName) -> Variant","description":"Calls the [param method] on the object during idle time. Always returns null, not the method's result.\n\t\t\t\tIdle time happens mainly at the end of process and physics frames. In it, deferred calls will be run until there are none left, which means you can defer calls from other deferred calls and they'll still be run in the current idle time cycle. This means you should not call a method deferred from itself (or from a method called by it), as this causes infinite recursion the same way as if you had called the method directly.\n\t\t\t\tThis method supports a variable number of arguments, so parameters can be passed as a comma separated list.\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tvar node = Node3D.new()\n\t\t\t\tnode.call_deferred(\"rotate\", Vector3(1.0, 0.0, 0.0), 1.571)\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tvar node = new Node3D();\n\t\t\t\tnode.CallDeferred(Node3D.MethodName.Rotate, new Vector3(1f, 0f, 0f), 1.571f);\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tSee also [method Callable.call_deferred].\n\t\t\t\tNote: In C#, [param method] must be in snake_case when referring to built-in Godot methods. Prefer using the names exposed in the MethodName class to avoid allocating a new  on each call.\n\t\t\t\tNote: If you're looking to delay the function call by a frame, refer to the [signal SceneTree.process_frame] and [signal SceneTree.physics_frame] signals.\n\t\t\t\t\n\t\t\t\tvar node = Node3D.new()\n\t\t\t\t# Make a Callable and bind the arguments to the node's rotate() call.\n\t\t\t\tvar callable = node.rotate.bind(Vector3(1.0, 0.0, 0.0), 1.571)\n\t\t\t\t# Connect the callable to the process_frame signal, so it gets called in the next process frame.\n\t\t\t\t# CONNECT_ONE_SHOT makes sure it only gets called once instead of every frame.\n\t\t\t\tget_tree().process_frame.connect(callable, CONNECT_ONE_SHOT)\n\t\t\t\t","returnType":"Variant"},{"name":"callv","signature":"callv(method: StringName, arg_array: Array) -> Variant","description":"Calls the [param method] on the object and returns the result. Unlike [method call], this method expects all parameters to be contained inside [param arg_array].\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tvar node = Node3D.new()\n\t\t\t\tnode.callv(\"rotate\", [Vector3(1.0, 0.0, 0.0), 1.571])\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tvar node = new Node3D();\n\t\t\t\tnode.Callv(Node3D.MethodName.Rotate, [new Vector3(1f, 0f, 0f), 1.571f]);\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tNote: In C#, [param method] must be in snake_case when referring to built-in Godot methods. Prefer using the names exposed in the MethodName class to avoid allocating a new  on each call.","returnType":"Variant"},{"name":"can_translate_messages","signature":"can_translate_messages() -> bool","description":"Returns true if the object is allowed to translate messages with [method tr] and [method tr_n]. See also [method set_message_translation].","returnType":"bool"},{"name":"cancel_free","signature":"cancel_free() -> void","description":"If this method is called during [constant NOTIFICATION_PREDELETE], this object will reject being freed and will remain allocated. This is mostly an internal function used for error handling to avoid the user from freeing objects when they are not intended to.","returnType":"void"},{"name":"connect","signature":"connect(signal: StringName, callable: Callable, flags: int) -> int","description":"Connects a [param signal] by name to a [param callable]. Optional [param flags] can be also added to configure the connection's behavior (see [enum ConnectFlags] constants).\n\t\t\t\tA signal can only be connected once to the same . If the signal is already connected, this method returns [constant ERR_INVALID_PARAMETER] and pushes an error message, unless the signal is connected with [constant CONNECT_REFERENCE_COUNTED]. To prevent this, use [method is_connected] first to check for existing connections.\n\t\t\t\tIf the [param callable]'s object is freed, the connection will be lost.\n\t\t\t\tExamples with recommended syntax:\n\t\t\t\tConnecting signals is one of the most common operations in Godot and the API gives many options to do so, which are described further down. The code block below shows the recommended approach.\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tfunc _ready():\n\t\t\t\t    var button = Button.new()\n\t\t\t\t    # `button_down` here is a Signal variant type, and we thus call the Signal.connect() method, not Object.connect().\n\t\t\t\t    # See discussion below for a more in-depth overview of the API.\n\t\t\t\t    button.button_down.connect(_on_button_down)\n\n\t\t\t\t    # This assumes that a `Player` class exists, which defines a `hit` signal.\n\t\t\t\t    var player = Player.new()\n\t\t\t\t    # We use Signal.connect() again, and we also use the Callable.bind() method,\n\t\t\t\t    # which returns a new Callable with the parameter binds.\n\t\t\t\t    player.hit.connect(_on_player_hit.bind(\"sword\", 100))\n\n\t\t\t\tfunc _on_button_down():\n\t\t\t\t    print(\"Button down!\")\n\n\t\t\t\tfunc _on_player_hit(weapon_type, damage):\n\t\t\t\t    print(\"Hit with weapon %s for %d damage.\" % [weapon_type, damage])\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tpublic override void _Ready()\n\t\t\t\t{\n\t\t\t\t    var button = new Button();\n\t\t\t\t    // C# supports passing signals as events, so we can use this idiomatic construct:\n\t\t\t\t    button.ButtonDown += OnButtonDown;\n\n\t\t\t\t    // This assumes that a `Player` class exists, which defines a `Hit` signal.\n\t\t\t\t    var player = new Player();\n\t\t\t\t    // We can use lambdas when we need to bind additional parameters.\n\t\t\t\t    player.Hit += () =&gt; OnPlayerHit(\"sword\", 100);\n\t\t\t\t}\n\n\t\t\t\tprivate void OnButtonDown()\n\t\t\t\t{\n\t\t\t\t    GD.Print(\"Button down!\");\n\t\t\t\t}\n\n\t\t\t\tprivate void OnPlayerHit(string weaponType, int damage)\n\t\t\t\t{\n\t\t\t\t    GD.Print($\"Hit with weapon {weaponType} for {damage} damage.\");\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t[code skip-lint]Object.connect() or [code skip-lint]Signal.connect()?\n\t\t\t\tAs seen above, the recommended method to connect signals is not [method Object.connect]. The code block below shows the four options for connecting signals, using either this legacy method or the recommended [method Signal.connect], and using either an implicit  or a manually defined one.\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tfunc _ready():\n\t\t\t\t    var button = Button.new()\n\t\t\t\t    # Option 1: Object.connect() with an implicit Callable for the defined function.\n\t\t\t\t    button.connect(\"button_down\", _on_button_down)\n\t\t\t\t    # Option 2: Object.connect() with a constructed Callable using a target object and method name.\n\t\t\t\t    button.connect(\"button_down\", Callable(self, \"_on_button_down\"))\n\t\t\t\t    # Option 3: Signal.connect() with an implicit Callable for the defined function.\n\t\t\t\t    button.button_down.connect(_on_button_down)\n\t\t\t\t    # Option 4: Signal.connect() with a constructed Callable using a target object and method name.\n\t\t\t\t    button.button_down.connect(Callable(self, \"_on_button_down\"))\n\n\t\t\t\tfunc _on_button_down():\n\t\t\t\t    print(\"Button down!\")\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tpublic override void _Ready()\n\t\t\t\t{\n\t\t\t\t    var button = new Button();\n\t\t\t\t    // Option 1: In C#, we can use signals as events and connect with this idiomatic syntax:\n\t\t\t\t    button.ButtonDown += OnButtonDown;\n\t\t\t\t    // Option 2: GodotObject.Connect() with a constructed Callable from a method group.\n\t\t\t\t    button.Connect(Button.SignalName.ButtonDown, Callable.From(OnButtonDown));\n\t\t\t\t    // Option 3: GodotObject.Connect() with a constructed Callable using a target object and method name.\n\t\t\t\t    button.Connect(Button.SignalName.ButtonDown, new Callable(this, MethodName.OnButtonDown));\n\t\t\t\t}\n\n\t\t\t\tprivate void OnButtonDown()\n\t\t\t\t{\n\t\t\t\t    GD.Print(\"Button down!\");\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tWhile all options have the same outcome (button's [signal BaseButton.button_down] signal will be connected to _on_button_down), option 3 offers the best validation: it will print a compile-time error if either the button_down  or the _on_button_down  are not defined. On the other hand, option 2 only relies on string names and will only be able to validate either names at runtime: it will print a runtime error if \"button_down\" doesn't correspond to a signal, or if \"_on_button_down\" is not a registered method in the object self. The main reason for using options 1, 2, or 4 would be if you actually need to use strings (e.g. to connect signals programmatically based on strings read from a configuration file). Otherwise, option 3 is the recommended (and fastest) method.\n\t\t\t\tBinding and passing parameters:\n\t\t\t\tThe syntax to bind parameters is through [method Callable.bind], which returns a copy of the  with its parameters bound.\n\t\t\t\tWhen calling [method emit_signal] or [method Signal.emit], the signal parameters can be also passed. The examples below show the relationship between these signal parameters and bound parameters.\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tfunc _ready():\n\t\t\t\t    # This assumes that a `Player` class exists, which defines a `hit` signal.\n\t\t\t\t    var player = Player.new()\n\t\t\t\t    # Using Callable.bind().\n\t\t\t\t    player.hit.connect(_on_player_hit.bind(\"sword\", 100))\n\n\t\t\t\t    # Parameters added when emitting the signal are passed first.\n\t\t\t\t    player.hit.emit(\"Dark lord\", 5)\n\n\t\t\t\t# We pass two arguments when emitting (`hit_by`, `level`),\n\t\t\t\t# and bind two more arguments when connecting (`weapon_type`, `damage`).\n\t\t\t\tfunc _on_player_hit(hit_by, level, weapon_type, damage):\n\t\t\t\t    print(\"Hit by %s (level %d) with weapon %s for %d damage.\" % [hit_by, level, weapon_type, damage])\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tpublic override void _Ready()\n\t\t\t\t{\n\t\t\t\t    // This assumes that a `Player` class exists, which defines a `Hit` signal.\n\t\t\t\t    var player = new Player();\n\t\t\t\t    // Using lambda expressions that create a closure that captures the additional parameters.\n\t\t\t\t    // The lambda only receives the parameters defined by the signal's delegate.\n\t\t\t\t    player.Hit += (hitBy, level) =&gt; OnPlayerHit(hitBy, level, \"sword\", 100);\n\n\t\t\t\t    // Parameters added when emitting the signal are passed first.\n\t\t\t\t    player.EmitSignal(SignalName.Hit, \"Dark lord\", 5);\n\t\t\t\t}\n\n\t\t\t\t// We pass two arguments when emitting (`hit_by`, `level`),\n\t\t\t\t// and bind two more arguments when connecting (`weapon_type`, `damage`).\n\t\t\t\tprivate void OnPlayerHit(string hitBy, int level, string weaponType, int damage)\n\t\t\t\t{\n\t\t\t\t    GD.Print($\"Hit by {hitBy} (level {level}) with weapon {weaponType} for {damage} damage.\");\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t","returnType":"int"},{"name":"disconnect","signature":"disconnect(signal: StringName, callable: Callable) -> void","description":"Disconnects a [param signal] by name from a given [param callable]. If the connection does not exist, generates an error. Use [method is_connected] to make sure that the connection exists.","returnType":"void"},{"name":"emit_signal","signature":"emit_signal(signal: StringName) -> int","description":"Emits the given [param signal] by name. The signal must exist, so it should be a built-in signal of this class or one of its inherited classes, or a user-defined signal (see [method add_user_signal]). This method supports a variable number of arguments, so parameters can be passed as a comma separated list.\n\t\t\t\tReturns [constant ERR_UNAVAILABLE] if [param signal] does not exist or the parameters are invalid.\n\t\t\t\t\n\t\t\t\t\n\t\t\t\temit_signal(\"hit\", \"sword\", 100)\n\t\t\t\temit_signal(\"game_over\")\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tEmitSignal(SignalName.Hit, \"sword\", 100);\n\t\t\t\tEmitSignal(SignalName.GameOver);\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tNote: In C#, [param signal] must be in snake_case when referring to built-in Godot signals. Prefer using the names exposed in the SignalName class to avoid allocating a new  on each call.","returnType":"int"},{"name":"free","signature":"free() -> void","description":"Deletes the object from memory. Pre-existing references to the object become invalid, and any attempt to access them will result in a run-time error. Checking the references with [method @GlobalScope.is_instance_valid] will return false.","returnType":"void"},{"name":"get","signature":"get(property: StringName) -> Variant","description":"Returns the  value of the given [param property]. If the [param property] does not exist, this method returns null.\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tvar node = Node2D.new()\n\t\t\t\tnode.rotation = 1.5\n\t\t\t\tvar a = node.get(\"rotation\") # a is 1.5\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tvar node = new Node2D();\n\t\t\t\tnode.Rotation = 1.5f;\n\t\t\t\tvar a = node.Get(Node2D.PropertyName.Rotation); // a is 1.5\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tNote: In C#, [param property] must be in snake_case when referring to built-in Godot properties. Prefer using the names exposed in the PropertyName class to avoid allocating a new  on each call.","returnType":"Variant"},{"name":"get_class","signature":"get_class() -> String","description":"Returns the object's built-in class name, as a . See also [method is_class].\n\t\t\t\tNote: This method ignores class_name declarations. If this object's script has defined a class_name, the base, built-in class name is returned instead.","returnType":"String"},{"name":"get_incoming_connections","signature":"get_incoming_connections() -> Dictionary[]","description":"Returns an  of signal connections received by this object. Each connection is represented as a  that contains three entries:\n\t\t\t\t- signal is a reference to the ;\n\t\t\t\t- callable is a reference to the ;\n\t\t\t\t- flags is a combination of [enum ConnectFlags].","returnType":"Dictionary[]"},{"name":"get_indexed","signature":"get_indexed(property_path: NodePath) -> Variant","description":"Gets the object's property indexed by the given [param property_path]. The path should be a  relative to the current object and can use the colon character (:) to access nested properties.\n\t\t\t\tExamples: \"position:x\" or \"material:next_pass:blend_mode\".\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tvar node = Node2D.new()\n\t\t\t\tnode.position = Vector2(5, -10)\n\t\t\t\tvar a = node.get_indexed(\"position\")   # a is Vector2(5, -10)\n\t\t\t\tvar b = node.get_indexed(\"position:y\") # b is -10\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tvar node = new Node2D();\n\t\t\t\tnode.Position = new Vector2(5, -10);\n\t\t\t\tvar a = node.GetIndexed(\"position\");   // a is Vector2(5, -10)\n\t\t\t\tvar b = node.GetIndexed(\"position:y\"); // b is -10\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tNote: In C#, [param property_path] must be in snake_case when referring to built-in Godot properties. Prefer using the names exposed in the PropertyName class to avoid allocating a new  on each call.\n\t\t\t\tNote: This method does not support actual paths to nodes in the , only sub-property paths. In the context of nodes, use [method Node.get_node_and_resource] instead.","returnType":"Variant"},{"name":"get_instance_id","signature":"get_instance_id() -> int","description":"Returns the object's unique instance ID. This ID can be saved in , and can be used to retrieve this object instance with [method @GlobalScope.instance_from_id].\n\t\t\t\tNote: This ID is only useful during the current session. It won't correspond to a similar object if the ID is sent over a network, or loaded from a file at a later time.","returnType":"int"},{"name":"get_meta","signature":"get_meta(name: StringName, default: Variant) -> Variant","description":"Returns the object's metadata value for the given entry [param name]. If the entry does not exist, returns [param default]. If [param default] is null, an error is also generated.\n\t\t\t\tNote: A metadata's name must be a valid identifier as per [method StringName.is_valid_identifier] method.\n\t\t\t\tNote: Metadata that has a name starting with an underscore (_) is considered editor-only. Editor-only metadata is not displayed in the Inspector and should not be edited, although it can still be found by this method.","returnType":"Variant"},{"name":"get_meta_list","signature":"get_meta_list() -> StringName[]","description":"Returns the object's metadata entry names as an  of s.","returnType":"StringName[]"},{"name":"get_method_argument_count","signature":"get_method_argument_count(method: StringName) -> int","description":"Returns the number of arguments of the given [param method] by name.\n\t\t\t\tNote: In C#, [param method] must be in snake_case when referring to built-in Godot methods. Prefer using the names exposed in the MethodName class to avoid allocating a new  on each call.","returnType":"int"},{"name":"get_method_list","signature":"get_method_list() -> Dictionary[]","description":"Returns this object's methods and their signatures as an  of dictionaries. Each  contains the following entries:\n\t\t\t\t- name is the name of the method, as a ;\n\t\t\t\t- args is an  of dictionaries representing the arguments;\n\t\t\t\t- default_args is the default arguments as an  of variants;\n\t\t\t\t- flags is a combination of [enum MethodFlags];\n\t\t\t\t- id is the method's internal identifier ;\n\t\t\t\t- return is the returned value, as a ;\n\t\t\t\tNote: The dictionaries of args and return are formatted identically to the results of [method get_property_list], although not all entries are used.","returnType":"Dictionary[]"},{"name":"get_property_list","signature":"get_property_list() -> Dictionary[]","description":"Returns the object's property list as an  of dictionaries. Each  contains the following entries:\n\t\t\t\t- name is the property's name, as a ;\n\t\t\t\t- class_name is an empty , unless the property is [constant TYPE_OBJECT] and it inherits from a class;\n\t\t\t\t- type is the property's type, as an  (see [enum Variant.Type]);\n\t\t\t\t- hint is how the property is meant to be edited (see [enum PropertyHint]);\n\t\t\t\t- hint_string depends on the hint (see [enum PropertyHint]);\n\t\t\t\t- usage is a combination of [enum PropertyUsageFlags].\n\t\t\t\tNote: In GDScript, all class members are treated as properties. In C# and GDExtension, it may be necessary to explicitly mark class members as Godot properties using decorators or attributes.","returnType":"Dictionary[]"},{"name":"get_script","signature":"get_script() -> Variant","description":"Returns the object's  instance, or null if no script is attached.","returnType":"Variant"},{"name":"get_signal_connection_list","signature":"get_signal_connection_list(signal: StringName) -> Dictionary[]","description":"Returns an  of connections for the given [param signal] name. Each connection is represented as a  that contains three entries:\n\t\t\t\t- [code skip-lint]signal is a reference to the ;\n\t\t\t\t- callable is a reference to the connected ;\n\t\t\t\t- flags is a combination of [enum ConnectFlags].","returnType":"Dictionary[]"},{"name":"get_signal_list","signature":"get_signal_list() -> Dictionary[]","description":"Returns the list of existing signals as an  of dictionaries.\n\t\t\t\tNote: Due of the implementation, each  is formatted very similarly to the returned values of [method get_method_list].","returnType":"Dictionary[]"},{"name":"get_translation_domain","signature":"get_translation_domain() -> StringName","description":"Returns the name of the translation domain used by [method tr] and [method tr_n]. See also .","returnType":"StringName"},{"name":"has_connections","signature":"has_connections(signal: StringName) -> bool","description":"Returns true if any connection exists on the given [param signal] name.\n\t\t\t\tNote: In C#, [param signal] must be in snake_case when referring to built-in Godot methods. Prefer using the names exposed in the SignalName class to avoid allocating a new  on each call.","returnType":"bool"},{"name":"has_meta","signature":"has_meta(name: StringName) -> bool","description":"Returns true if a metadata entry is found with the given [param name]. See also [method get_meta], [method set_meta] and [method remove_meta].\n\t\t\t\tNote: A metadata's name must be a valid identifier as per [method StringName.is_valid_identifier] method.\n\t\t\t\tNote: Metadata that has a name starting with an underscore (_) is considered editor-only. Editor-only metadata is not displayed in the Inspector and should not be edited, although it can still be found by this method.","returnType":"bool"},{"name":"has_method","signature":"has_method(method: StringName) -> bool","description":"Returns true if the given [param method] name exists in the object.\n\t\t\t\tNote: In C#, [param method] must be in snake_case when referring to built-in Godot methods. Prefer using the names exposed in the MethodName class to avoid allocating a new  on each call.","returnType":"bool"},{"name":"has_signal","signature":"has_signal(signal: StringName) -> bool","description":"Returns true if the given [param signal] name exists in the object.\n\t\t\t\tNote: In C#, [param signal] must be in snake_case when referring to built-in Godot signals. Prefer using the names exposed in the SignalName class to avoid allocating a new  on each call.","returnType":"bool"},{"name":"has_user_signal","signature":"has_user_signal(signal: StringName) -> bool","description":"Returns true if the given user-defined [param signal] name exists. Only signals added with [method add_user_signal] are included. See also [method remove_user_signal].","returnType":"bool"},{"name":"is_blocking_signals","signature":"is_blocking_signals() -> bool","description":"Returns true if the object is blocking its signals from being emitted. See [method set_block_signals].","returnType":"bool"},{"name":"is_class","signature":"is_class(class: String) -> bool","description":"Returns true if the object inherits from the given [param class]. See also [method get_class].\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tvar sprite2d = Sprite2D.new()\n\t\t\t\tsprite2d.is_class(\"Sprite2D\") # Returns true\n\t\t\t\tsprite2d.is_class(\"Node\")     # Returns true\n\t\t\t\tsprite2d.is_class(\"Node3D\")   # Returns false\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tvar sprite2D = new Sprite2D();\n\t\t\t\tsprite2D.IsClass(\"Sprite2D\"); // Returns true\n\t\t\t\tsprite2D.IsClass(\"Node\");     // Returns true\n\t\t\t\tsprite2D.IsClass(\"Node3D\");   // Returns false\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tNote: This method ignores class_name declarations in the object's script.","returnType":"bool"},{"name":"is_connected","signature":"is_connected(signal: StringName, callable: Callable) -> bool","description":"Returns true if a connection exists between the given [param signal] name and [param callable].\n\t\t\t\tNote: In C#, [param signal] must be in snake_case when referring to built-in Godot signals. Prefer using the names exposed in the SignalName class to avoid allocating a new  on each call.","returnType":"bool"},{"name":"is_queued_for_deletion","signature":"is_queued_for_deletion() -> bool","description":"Returns true if the [method Node.queue_free] method was called for the object.","returnType":"bool"},{"name":"notification","signature":"notification(what: int, reversed: bool) -> void","description":"Sends the given [param what] notification to all classes inherited by the object, triggering calls to [method _notification], starting from the highest ancestor (the  class) and going down to the object's script.\n\t\t\t\tIf [param reversed] is true, the call order is reversed.\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tvar player = Node2D.new()\n\t\t\t\tplayer.set_script(load(\"res://player.gd\"))\n\n\t\t\t\tplayer.notification(NOTIFICATION_ENTER_TREE)\n\t\t\t\t# The call order is Object -&gt; Node -&gt; Node2D -&gt; player.gd.\n\n\t\t\t\tplayer.notification(NOTIFICATION_ENTER_TREE, true)\n\t\t\t\t# The call order is player.gd -&gt; Node2D -&gt; Node -&gt; Object.\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tvar player = new Node2D();\n\t\t\t\tplayer.SetScript(GD.Load(\"res://player.gd\"));\n\n\t\t\t\tplayer.Notification(NotificationEnterTree);\n\t\t\t\t// The call order is GodotObject -&gt; Node -&gt; Node2D -&gt; player.gd.\n\n\t\t\t\tplayer.Notification(NotificationEnterTree, true);\n\t\t\t\t// The call order is player.gd -&gt; Node2D -&gt; Node -&gt; GodotObject.\n\t\t\t\t\n\t\t\t\t","returnType":"void"},{"name":"notify_property_list_changed","signature":"notify_property_list_changed() -> void","description":"Emits the [signal property_list_changed] signal. This is mainly used to refresh the editor, so that the Inspector and editor plugins are properly updated.","returnType":"void"},{"name":"property_can_revert","signature":"property_can_revert(property: StringName) -> bool","description":"Returns true if the given [param property] has a custom default value. Use [method property_get_revert] to get the [param property]'s default value.\n\t\t\t\tNote: This method is used by the Inspector dock to display a revert icon. The object must implement [method _property_can_revert] to customize the default value. If [method _property_can_revert] is not implemented, this method returns false.","returnType":"bool"},{"name":"property_get_revert","signature":"property_get_revert(property: StringName) -> Variant","description":"Returns the custom default value of the given [param property]. Use [method property_can_revert] to check if the [param property] has a custom default value.\n\t\t\t\tNote: This method is used by the Inspector dock to display a revert icon. The object must implement [method _property_get_revert] to customize the default value. If [method _property_get_revert] is not implemented, this method returns null.","returnType":"Variant"},{"name":"remove_meta","signature":"remove_meta(name: StringName) -> void","description":"Removes the given entry [param name] from the object's metadata. See also [method has_meta], [method get_meta] and [method set_meta].\n\t\t\t\tNote: A metadata's name must be a valid identifier as per [method StringName.is_valid_identifier] method.\n\t\t\t\tNote: Metadata that has a name starting with an underscore (_) is considered editor-only. Editor-only metadata is not displayed in the Inspector and should not be edited, although it can still be found by this method.","returnType":"void"},{"name":"remove_user_signal","signature":"remove_user_signal(signal: StringName) -> void","description":"Removes the given user signal [param signal] from the object. See also [method add_user_signal] and [method has_user_signal].","returnType":"void"},{"name":"set","signature":"set(property: StringName, value: Variant) -> void","description":"Assigns [param value] to the given [param property]. If the property does not exist or the given [param value]'s type doesn't match, nothing happens.\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tvar node = Node2D.new()\n\t\t\t\tnode.set(\"global_scale\", Vector2(8, 2.5))\n\t\t\t\tprint(node.global_scale) # Prints (8.0, 2.5)\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tvar node = new Node2D();\n\t\t\t\tnode.Set(Node2D.PropertyName.GlobalScale, new Vector2(8, 2.5f));\n\t\t\t\tGD.Print(node.GlobalScale); // Prints (8, 2.5)\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tNote: In C#, [param property] must be in snake_case when referring to built-in Godot properties. Prefer using the names exposed in the PropertyName class to avoid allocating a new  on each call.","returnType":"void"},{"name":"set_block_signals","signature":"set_block_signals(enable: bool) -> void","description":"If set to true, the object becomes unable to emit signals. As such, [method emit_signal] and signal connections will not work, until it is set to false.","returnType":"void"},{"name":"set_deferred","signature":"set_deferred(property: StringName, value: Variant) -> void","description":"Assigns [param value] to the given [param property], at the end of the current frame. This is equivalent to calling [method set] through [method call_deferred].\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tvar node = Node2D.new()\n\t\t\t\tadd_child(node)\n\n\t\t\t\tnode.rotation = 1.5\n\t\t\t\tnode.set_deferred(\"rotation\", 3.0)\n\t\t\t\tprint(node.rotation) # Prints 1.5\n\n\t\t\t\tawait get_tree().process_frame\n\t\t\t\tprint(node.rotation) # Prints 3.0\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tvar node = new Node2D();\n\t\t\t\tnode.Rotation = 1.5f;\n\t\t\t\tnode.SetDeferred(Node2D.PropertyName.Rotation, 3f);\n\t\t\t\tGD.Print(node.Rotation); // Prints 1.5\n\n\t\t\t\tawait ToSignal(GetTree(), SceneTree.SignalName.ProcessFrame);\n\t\t\t\tGD.Print(node.Rotation); // Prints 3.0\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tNote: In C#, [param property] must be in snake_case when referring to built-in Godot properties. Prefer using the names exposed in the PropertyName class to avoid allocating a new  on each call.","returnType":"void"},{"name":"set_indexed","signature":"set_indexed(property_path: NodePath, value: Variant) -> void","description":"Assigns a new [param value] to the property identified by the [param property_path]. The path should be a  relative to this object, and can use the colon character (:) to access nested properties.\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tvar node = Node2D.new()\n\t\t\t\tnode.set_indexed(\"position\", Vector2(42, 0))\n\t\t\t\tnode.set_indexed(\"position:y\", -10)\n\t\t\t\tprint(node.position) # Prints (42.0, -10.0)\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tvar node = new Node2D();\n\t\t\t\tnode.SetIndexed(\"position\", new Vector2(42, 0));\n\t\t\t\tnode.SetIndexed(\"position:y\", -10);\n\t\t\t\tGD.Print(node.Position); // Prints (42, -10)\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tNote: In C#, [param property_path] must be in snake_case when referring to built-in Godot properties. Prefer using the names exposed in the PropertyName class to avoid allocating a new  on each call.","returnType":"void"},{"name":"set_message_translation","signature":"set_message_translation(enable: bool) -> void","description":"If set to true, allows the object to translate messages with [method tr] and [method tr_n]. Enabled by default. See also [method can_translate_messages].","returnType":"void"},{"name":"set_meta","signature":"set_meta(name: StringName, value: Variant) -> void","description":"Adds or changes the entry [param name] inside the object's metadata. The metadata [param value] can be any , although some types cannot be serialized correctly.\n\t\t\t\tIf [param value] is null, the entry is removed. This is the equivalent of using [method remove_meta]. See also [method has_meta] and [method get_meta].\n\t\t\t\tNote: A metadata's name must be a valid identifier as per [method StringName.is_valid_identifier] method.\n\t\t\t\tNote: Metadata that has a name starting with an underscore (_) is considered editor-only. Editor-only metadata is not displayed in the Inspector and should not be edited, although it can still be found by this method.","returnType":"void"},{"name":"set_script","signature":"set_script(script: Variant) -> void","description":"Attaches [param script] to the object, and instantiates it. As a result, the script's [method _init] is called. A  is used to extend the object's functionality.\n\t\t\t\tIf a script already exists, its instance is detached, and its property values and state are lost. Built-in property values are still kept.","returnType":"void"},{"name":"set_translation_domain","signature":"set_translation_domain(domain: StringName) -> void","description":"Sets the name of the translation domain used by [method tr] and [method tr_n]. See also .","returnType":"void"},{"name":"to_string","signature":"to_string() -> String","description":"Returns a  representing the object. Defaults to \"&lt;ClassName#RID&gt;\". Override [method _to_string] to customize the string representation of the object.","returnType":"String"},{"name":"tr","signature":"tr(message: StringName, context: StringName) -> String","description":"Translates a [param message], using the translation catalogs configured in the Project Settings. Further [param context] can be specified to help with the translation. Note that most  nodes automatically translate their strings, so this method is mostly useful for formatted strings or custom drawn text.\n\t\t\t\tIf [method can_translate_messages] is false, or no translation is available, this method returns the [param message] without changes. See [method set_message_translation].\n\t\t\t\tFor detailed examples, see [url=$DOCS_URL/tutorials/i18n/internationalizing_games.html]Internationalizing games.\n\t\t\t\tNote: This method can't be used without an  instance, as it requires the [method can_translate_messages] method. To translate strings in a static context, use [method TranslationServer.translate].","returnType":"String"},{"name":"tr_n","signature":"tr_n(message: StringName, plural_message: StringName, n: int, context: StringName) -> String","description":"Translates a [param message] or [param plural_message], using the translation catalogs configured in the Project Settings. Further [param context] can be specified to help with the translation.\n\t\t\t\tIf [method can_translate_messages] is false, or no translation is available, this method returns [param message] or [param plural_message], without changes. See [method set_message_translation].\n\t\t\t\tThe [param n] is the number, or amount, of the message's subject. It is used by the translation system to fetch the correct plural form for the current language.\n\t\t\t\tFor detailed examples, see [url=$DOCS_URL/tutorials/i18n/localization_using_gettext.html]Localization using gettext.\n\t\t\t\tNote: Negative and  numbers may not properly apply to some countable subjects. It's recommended to handle these cases with [method tr].\n\t\t\t\tNote: This method can't be used without an  instance, as it requires the [method can_translate_messages] method. To translate strings in a static context, use [method TranslationServer.translate_plural].","returnType":"String"}],"signals":[{"name":"property_list_changed","description":"Emitted when [method notify_property_list_changed] is called."},{"name":"script_changed","description":"Emitted when the object's script is changed.\n\t\t\t\t[b]Note:[/b] When this signal is emitted, the new script is not initialized yet. If you need to access the new script, defer connections to this signal with [constant CONNECT_DEFERRED]."}]},"Occluder3D":{"name":"Occluder3D","description":"Occluder shape resource for use with occlusion culling in .","inherits":"Resource","properties":[],"methods":[{"name":"get_indices","signature":"get_indices() -> PackedInt32Array","description":"Returns the occluder shape's vertex indices.","returnType":"PackedInt32Array"},{"name":"get_vertices","signature":"get_vertices() -> PackedVector3Array","description":"Returns the occluder shape's vertex positions.","returnType":"PackedVector3Array"}],"signals":[]},"OccluderInstance3D":{"name":"OccluderInstance3D","description":"Provides occlusion culling for 3D nodes, which improves performance in closed areas.","inherits":"VisualInstance3D","properties":[{"name":"bake_mask","type":"int","description":"The visual layers to account for when baking for occluders. Only [MeshInstance3D]s whose [member VisualInstance3D.layers] match with this [member bake_mask] will be included in the generated occluder mesh. By default, all objects with [i]opaque[/i] materials are taken into account for the occluder baking.\n\t\t\tTo improve performance and avoid artifacts, it is recommended to exclude dynamic objects, small objects and fixtures from the baking process by moving them to a separate visual layer and excluding this layer in [member bake_mask]."},{"name":"bake_simplification_distance","type":"float","description":"The simplification distance to use for simplifying the generated occluder polygon (in 3D units). Higher values result in a less detailed occluder mesh, which improves performance but reduces culling accuracy.\n\t\t\tThe occluder geometry is rendered on the CPU, so it is important to keep its geometry as simple as possible. Since the buffer is rendered at a low resolution, less detailed occluder meshes generally still work well. The default value is fairly aggressive, so you may have to decrease it if you run into false negatives (objects being occluded even though they are visible by the camera). A value of [code]0.01[/code] will act conservatively, and will keep geometry [i]perceptually[/i] unaffected in the occlusion culling buffer. Depending on the scene, a value of [code]0.01[/code] may still simplify the mesh noticeably compared to disabling simplification entirely.\n\t\t\tSetting this to [code]0.0[/code] disables simplification entirely, but vertices in the exact same position will still be merged. The mesh will also be re-indexed to reduce both the number of vertices and indices.\n\t\t\t[b]Note:[/b] This uses the [url=https://meshoptimizer.org/]meshoptimizer[/url] library under the hood, similar to LOD generation."},{"name":"occluder","type":"Occluder3D","description":"The occluder resource for this [OccluderInstance3D]. You can generate an occluder resource by selecting an [OccluderInstance3D] node then using the [b]Bake Occluders[/b] button at the top of the editor.\n\t\t\tYou can also draw your own 2D occluder polygon by adding a new [PolygonOccluder3D] resource to the [member occluder] property in the Inspector.\n\t\t\tAlternatively, you can select a primitive occluder to use: [QuadOccluder3D], [BoxOccluder3D] or [SphereOccluder3D]."}],"methods":[{"name":"get_bake_mask_value","signature":"get_bake_mask_value(layer_number: int) -> bool","description":"Returns whether or not the specified layer of the [member bake_mask] is enabled, given a [param layer_number] between 1 and 32.","returnType":"bool"},{"name":"set_bake_mask_value","signature":"set_bake_mask_value(layer_number: int, value: bool) -> void","description":"Based on [param value], enables or disables the specified layer in the [member bake_mask], given a [param layer_number] between 1 and 32.","returnType":"void"}],"signals":[]},"OccluderPolygon2D":{"name":"OccluderPolygon2D","description":"Defines a 2D polygon for LightOccluder2D.","inherits":"Resource","properties":[{"name":"closed","type":"bool","description":"If [code]true[/code], closes the polygon. A closed OccluderPolygon2D occludes the light coming from any direction. An opened OccluderPolygon2D occludes the light only at its outline's direction."},{"name":"cull_mode","type":"int","description":"The culling mode to use."},{"name":"polygon","type":"PackedVector2Array","description":"A [Vector2] array with the index for polygon's vertices positions."}],"methods":[],"signals":[]},"OmniLight3D":{"name":"OmniLight3D","description":"Omnidirectional light, such as a light bulb or a candle.","inherits":"Light3D","properties":[{"name":"omni_attenuation","type":"float","description":"Controls the distance attenuation function for omnilights.\n\t\t\tA value of [code]0.0[/code] will maintain a constant brightness through most of the range, but smoothly attenuate the light at the edge of the range. Use a value of [code]2.0[/code] for physically accurate lights as it results in the proper inverse square attenutation.\n\t\t\t[b]Note:[/b] Setting attenuation to [code]2.0[/code] or higher may result in distant objects receiving minimal light, even within range. For example, with a range of [code]4096[/code], an object at [code]100[/code] units is attenuated by a factor of [code]0.0001[/code]. With a default brightness of [code]1[/code], the light would not be visible at that distance.\n\t\t\t[b]Note:[/b] Using negative or values higher than [code]10.0[/code] may lead to unexpected results."},{"name":"omni_range","type":"float","description":"The light's radius. Note that the effectively lit area may appear to be smaller depending on the [member omni_attenuation] in use. No matter the [member omni_attenuation] in use, the light will never reach anything outside this radius.\n\t\t\t[b]Note:[/b] [member omni_range] is not affected by [member Node3D.scale] (the light's scale or its parent's scale)."},{"name":"omni_shadow_mode","type":"int","description":"See [enum ShadowMode]."}],"methods":[],"signals":[]},"OptimizedTranslation":{"name":"OptimizedTranslation","description":"An optimized translation, used by default for CSV Translations.","inherits":"Translation","properties":[],"methods":[{"name":"generate","signature":"generate(from: Translation) -> void","description":"Generates and sets an optimized translation from the given  resource.\n\t\t\t\tNote: This method is intended to be used in the editor. It does nothing when called from an exported project.","returnType":"void"}],"signals":[]},"OptionButton":{"name":"OptionButton","description":"A button that brings up a dropdown with selectable options when pressed.","inherits":"Button","properties":[{"name":"allow_reselect","type":"bool","description":"If [code]true[/code], the currently selected item can be selected again."},{"name":"fit_to_longest_item","type":"bool","description":"If [code]true[/code], minimum size will be determined by the longest item's text, instead of the currently selected one's.\n\t\t\t[b]Note:[/b] For performance reasons, the minimum size doesn't update immediately when adding, removing or modifying items."},{"name":"item_count","type":"int","description":"The number of items to select from."},{"name":"selected","type":"int","description":"The index of the currently selected item, or [code]-1[/code] if no item is selected."}],"methods":[{"name":"add_icon_item","signature":"add_icon_item(texture: Texture2D, label: String, id: int) -> void","description":"Adds an item, with a [param texture] icon, text [param label] and (optionally) [param id]. If no [param id] is passed, the item index will be used as the item's ID. New items are appended at the end.","returnType":"void"},{"name":"add_item","signature":"add_item(label: String, id: int) -> void","description":"Adds an item, with text [param label] and (optionally) [param id]. If no [param id] is passed, the item index will be used as the item's ID. New items are appended at the end.","returnType":"void"},{"name":"add_separator","signature":"add_separator(text: String) -> void","description":"Adds a separator to the list of items. Separators help to group items, and can optionally be given a [param text] header. A separator also gets an index assigned, and is appended at the end of the item list.","returnType":"void"},{"name":"clear","signature":"clear() -> void","description":"Clears all the items in the .","returnType":"void"},{"name":"get_item_icon","signature":"get_item_icon(idx: int) -> Texture2D","description":"Returns the icon of the item at index [param idx].","returnType":"Texture2D"},{"name":"get_item_id","signature":"get_item_id(idx: int) -> int","description":"Returns the ID of the item at index [param idx].","returnType":"int"},{"name":"get_item_index","signature":"get_item_index(id: int) -> int","description":"Returns the index of the item with the given [param id].","returnType":"int"},{"name":"get_item_metadata","signature":"get_item_metadata(idx: int) -> Variant","description":"Retrieves the metadata of an item. Metadata may be any type and can be used to store extra information about an item, such as an external string ID.","returnType":"Variant"},{"name":"get_item_text","signature":"get_item_text(idx: int) -> String","description":"Returns the text of the item at index [param idx].","returnType":"String"},{"name":"get_item_tooltip","signature":"get_item_tooltip(idx: int) -> String","description":"Returns the tooltip of the item at index [param idx].","returnType":"String"},{"name":"get_popup","signature":"get_popup() -> PopupMenu","description":"Returns the  contained in this button.\n\t\t\t\tWarning: This is a required internal node, removing and freeing it may cause a crash. If you wish to hide it or any of its children, use their [member Window.visible] property.","returnType":"PopupMenu"},{"name":"get_selectable_item","signature":"get_selectable_item(from_last: bool) -> int","description":"Returns the index of the first item which is not disabled, or marked as a separator. If [param from_last] is true, the items will be searched in reverse order.\n\t\t\t\tReturns -1 if no item is found.","returnType":"int"},{"name":"get_selected_id","signature":"get_selected_id() -> int","description":"Returns the ID of the selected item, or -1 if no item is selected.","returnType":"int"},{"name":"get_selected_metadata","signature":"get_selected_metadata() -> Variant","description":"Gets the metadata of the selected item. Metadata for items can be set using [method set_item_metadata].","returnType":"Variant"},{"name":"has_selectable_items","signature":"has_selectable_items() -> bool","description":"Returns true if this button contains at least one item which is not disabled, or marked as a separator.","returnType":"bool"},{"name":"is_item_disabled","signature":"is_item_disabled(idx: int) -> bool","description":"Returns true if the item at index [param idx] is disabled.","returnType":"bool"},{"name":"is_item_separator","signature":"is_item_separator(idx: int) -> bool","description":"Returns true if the item at index [param idx] is marked as a separator.","returnType":"bool"},{"name":"remove_item","signature":"remove_item(idx: int) -> void","description":"Removes the item at index [param idx].","returnType":"void"},{"name":"select","signature":"select(idx: int) -> void","description":"Selects an item by index and makes it the current item. This will work even if the item is disabled.\n\t\t\t\tPassing -1 as the index deselects any currently selected item.","returnType":"void"},{"name":"set_disable_shortcuts","signature":"set_disable_shortcuts(disabled: bool) -> void","description":"If true, shortcuts are disabled and cannot be used to trigger the button.","returnType":"void"},{"name":"set_item_disabled","signature":"set_item_disabled(idx: int, disabled: bool) -> void","description":"Sets whether the item at index [param idx] is disabled.\n\t\t\t\tDisabled items are drawn differently in the dropdown and are not selectable by the user. If the current selected item is set as disabled, it will remain selected.","returnType":"void"},{"name":"set_item_icon","signature":"set_item_icon(idx: int, texture: Texture2D) -> void","description":"Sets the icon of the item at index [param idx].","returnType":"void"},{"name":"set_item_id","signature":"set_item_id(idx: int, id: int) -> void","description":"Sets the ID of the item at index [param idx].","returnType":"void"},{"name":"set_item_metadata","signature":"set_item_metadata(idx: int, metadata: Variant) -> void","description":"Sets the metadata of an item. Metadata may be of any type and can be used to store extra information about an item, such as an external string ID.","returnType":"void"},{"name":"set_item_text","signature":"set_item_text(idx: int, text: String) -> void","description":"Sets the text of the item at index [param idx].","returnType":"void"},{"name":"set_item_tooltip","signature":"set_item_tooltip(idx: int, tooltip: String) -> void","description":"Sets the tooltip of the item at index [param idx].","returnType":"void"},{"name":"show_popup","signature":"show_popup() -> void","description":"Adjusts popup position and sizing for the , then shows the . Prefer this over using get_popup().popup().","returnType":"void"}],"signals":[{"name":"item_focused","description":"Emitted when the user navigates to an item using the [member ProjectSettings.input/ui_up] or [member ProjectSettings.input/ui_down] input actions. The index of the item selected is passed as argument."},{"name":"item_selected","description":"Emitted when the current item has been changed by the user. The index of the item selected is passed as argument.\n\t\t\t\t[member allow_reselect] must be enabled to reselect an item."}]},"PCKPacker":{"name":"PCKPacker","description":"Creates packages that can be loaded into a running project.","inherits":"RefCounted","properties":[],"methods":[{"name":"add_file","signature":"add_file(target_path: String, source_path: String, encrypt: bool) -> int","description":"Adds the [param source_path] file to the current PCK package at the [param target_path] internal path. The res:// prefix for [param target_path] is optional and stripped internally.","returnType":"int"},{"name":"add_file_removal","signature":"add_file_removal(target_path: String) -> int","description":"Registers a file removal of the [param target_path] internal path to the PCK. This is mainly used for patches. If the file at this path has been loaded from a previous PCK, it will be removed. The res:// prefix for [param target_path] is optional and stripped internally.","returnType":"int"},{"name":"flush","signature":"flush(verbose: bool) -> int","description":"Writes the files specified using all [method add_file] calls since the last flush. If [param verbose] is true, a list of files added will be printed to the console for easier debugging.","returnType":"int"},{"name":"pck_start","signature":"pck_start(pck_path: String, alignment: int, key: String, encrypt_directory: bool) -> int","description":"Creates a new PCK file at the file path [param pck_path]. The .pck file extension isn't added automatically, so it should be part of [param pck_path] (even though it's not required).","returnType":"int"}],"signals":[]},"PackedByteArray":{"name":"PackedByteArray","description":"A packed array of bytes.","inherits":"","properties":[],"methods":[{"name":"append","signature":"append(value: int) -> bool","description":"Appends an element at the end of the array (alias of [method push_back]).","returnType":"bool"},{"name":"append_array","signature":"append_array(array: PackedByteArray) -> void","description":"Appends a  at the end of this array.","returnType":"void"},{"name":"bsearch","signature":"bsearch(value: int, before: bool) -> int","description":"Finds the index of an existing value (or the insertion index that maintains sorting order, if the value is not yet present in the array) using binary search. Optionally, a [param before] specifier can be passed. If false, the returned index comes after all existing entries of the value in the array.\n\t\t\t\tNote: Calling [method bsearch] on an unsorted array results in unexpected behavior.","returnType":"int"},{"name":"clear","signature":"clear() -> void","description":"Clears the array. This is equivalent to using [method resize] with a size of 0.","returnType":"void"},{"name":"compress","signature":"compress(compression_mode: int) -> PackedByteArray","description":"Returns a new  with the data compressed. Set the compression mode using one of [enum FileAccess.CompressionMode]'s constants.","returnType":"PackedByteArray"},{"name":"count","signature":"count(value: int) -> int","description":"Returns the number of times an element is in the array.","returnType":"int"},{"name":"decode_double","signature":"decode_double(byte_offset: int) -> float","description":"Decodes a 64-bit floating-point number from the bytes starting at [param byte_offset]. Fails if the byte count is insufficient. Returns 0.0 if a valid number can't be decoded.","returnType":"float"},{"name":"decode_float","signature":"decode_float(byte_offset: int) -> float","description":"Decodes a 32-bit floating-point number from the bytes starting at [param byte_offset]. Fails if the byte count is insufficient. Returns 0.0 if a valid number can't be decoded.","returnType":"float"},{"name":"decode_half","signature":"decode_half(byte_offset: int) -> float","description":"Decodes a 16-bit floating-point number from the bytes starting at [param byte_offset]. Fails if the byte count is insufficient. Returns 0.0 if a valid number can't be decoded.","returnType":"float"},{"name":"decode_s8","signature":"decode_s8(byte_offset: int) -> int","description":"Decodes a 8-bit signed integer number from the bytes starting at [param byte_offset]. Fails if the byte count is insufficient. Returns 0 if a valid number can't be decoded.","returnType":"int"},{"name":"decode_s16","signature":"decode_s16(byte_offset: int) -> int","description":"Decodes a 16-bit signed integer number from the bytes starting at [param byte_offset]. Fails if the byte count is insufficient. Returns 0 if a valid number can't be decoded.","returnType":"int"},{"name":"decode_s32","signature":"decode_s32(byte_offset: int) -> int","description":"Decodes a 32-bit signed integer number from the bytes starting at [param byte_offset]. Fails if the byte count is insufficient. Returns 0 if a valid number can't be decoded.","returnType":"int"},{"name":"decode_s64","signature":"decode_s64(byte_offset: int) -> int","description":"Decodes a 64-bit signed integer number from the bytes starting at [param byte_offset]. Fails if the byte count is insufficient. Returns 0 if a valid number can't be decoded.","returnType":"int"},{"name":"decode_u8","signature":"decode_u8(byte_offset: int) -> int","description":"Decodes a 8-bit unsigned integer number from the bytes starting at [param byte_offset]. Fails if the byte count is insufficient. Returns 0 if a valid number can't be decoded.","returnType":"int"},{"name":"decode_u16","signature":"decode_u16(byte_offset: int) -> int","description":"Decodes a 16-bit unsigned integer number from the bytes starting at [param byte_offset]. Fails if the byte count is insufficient. Returns 0 if a valid number can't be decoded.","returnType":"int"},{"name":"decode_u32","signature":"decode_u32(byte_offset: int) -> int","description":"Decodes a 32-bit unsigned integer number from the bytes starting at [param byte_offset]. Fails if the byte count is insufficient. Returns 0 if a valid number can't be decoded.","returnType":"int"},{"name":"decode_u64","signature":"decode_u64(byte_offset: int) -> int","description":"Decodes a 64-bit unsigned integer number from the bytes starting at [param byte_offset]. Fails if the byte count is insufficient. Returns 0 if a valid number can't be decoded.","returnType":"int"},{"name":"decode_var","signature":"decode_var(byte_offset: int, allow_objects: bool) -> Variant","description":"Decodes a  from the bytes starting at [param byte_offset]. Returns null if a valid variant can't be decoded or the value is -derived and [param allow_objects] is false.","returnType":"Variant"},{"name":"decode_var_size","signature":"decode_var_size(byte_offset: int, allow_objects: bool) -> int","description":"Decodes a size of a  from the bytes starting at [param byte_offset]. Requires at least 4 bytes of data starting at the offset, otherwise fails.","returnType":"int"},{"name":"decompress","signature":"decompress(buffer_size: int, compression_mode: int) -> PackedByteArray","description":"Returns a new  with the data decompressed. Set [param buffer_size] to the size of the uncompressed data. Set the compression mode using one of [enum FileAccess.CompressionMode]'s constants.\n\t\t\t\tNote: Decompression is not guaranteed to work with data not compressed by Godot, for example if data compressed with the deflate compression mode lacks a checksum or header.","returnType":"PackedByteArray"},{"name":"decompress_dynamic","signature":"decompress_dynamic(max_output_size: int, compression_mode: int) -> PackedByteArray","description":"Returns a new  with the data decompressed. Set the compression mode using one of [enum FileAccess.CompressionMode]'s constants. This method only accepts brotli, gzip, and deflate compression modes.\n\t\t\t\tThis method is potentially slower than [method decompress], as it may have to re-allocate its output buffer multiple times while decompressing, whereas [method decompress] knows it's output buffer size from the beginning.\n\t\t\t\tGZIP has a maximal compression ratio of 1032:1, meaning it's very possible for a small compressed payload to decompress to a potentially very large output. To guard against this, you may provide a maximum size this function is allowed to allocate in bytes via [param max_output_size]. Passing -1 will allow for unbounded output. If any positive value is passed, and the decompression exceeds that amount in bytes, then an error will be returned.\n\t\t\t\tNote: Decompression is not guaranteed to work with data not compressed by Godot, for example if data compressed with the deflate compression mode lacks a checksum or header.","returnType":"PackedByteArray"},{"name":"duplicate","signature":"duplicate() -> PackedByteArray","description":"Creates a copy of the array, and returns it.","returnType":"PackedByteArray"},{"name":"encode_double","signature":"encode_double(byte_offset: int, value: float) -> void","description":"Encodes a 64-bit floating-point number as bytes at the index of [param byte_offset] bytes. The array must have at least 8 bytes of allocated space, starting at the offset.","returnType":"void"},{"name":"encode_float","signature":"encode_float(byte_offset: int, value: float) -> void","description":"Encodes a 32-bit floating-point number as bytes at the index of [param byte_offset] bytes. The array must have at least 4 bytes of space, starting at the offset.","returnType":"void"},{"name":"encode_half","signature":"encode_half(byte_offset: int, value: float) -> void","description":"Encodes a 16-bit floating-point number as bytes at the index of [param byte_offset] bytes. The array must have at least 2 bytes of space, starting at the offset.","returnType":"void"},{"name":"encode_s8","signature":"encode_s8(byte_offset: int, value: int) -> void","description":"Encodes a 8-bit signed integer number (signed byte) at the index of [param byte_offset] bytes. The array must have at least 1 byte of space, starting at the offset.","returnType":"void"},{"name":"encode_s16","signature":"encode_s16(byte_offset: int, value: int) -> void","description":"Encodes a 16-bit signed integer number as bytes at the index of [param byte_offset] bytes. The array must have at least 2 bytes of space, starting at the offset.","returnType":"void"},{"name":"encode_s32","signature":"encode_s32(byte_offset: int, value: int) -> void","description":"Encodes a 32-bit signed integer number as bytes at the index of [param byte_offset] bytes. The array must have at least 4 bytes of space, starting at the offset.","returnType":"void"},{"name":"encode_s64","signature":"encode_s64(byte_offset: int, value: int) -> void","description":"Encodes a 64-bit signed integer number as bytes at the index of [param byte_offset] bytes. The array must have at least 8 bytes of space, starting at the offset.","returnType":"void"},{"name":"encode_u8","signature":"encode_u8(byte_offset: int, value: int) -> void","description":"Encodes a 8-bit unsigned integer number (byte) at the index of [param byte_offset] bytes. The array must have at least 1 byte of space, starting at the offset.","returnType":"void"},{"name":"encode_u16","signature":"encode_u16(byte_offset: int, value: int) -> void","description":"Encodes a 16-bit unsigned integer number as bytes at the index of [param byte_offset] bytes. The array must have at least 2 bytes of space, starting at the offset.","returnType":"void"},{"name":"encode_u32","signature":"encode_u32(byte_offset: int, value: int) -> void","description":"Encodes a 32-bit unsigned integer number as bytes at the index of [param byte_offset] bytes. The array must have at least 4 bytes of space, starting at the offset.","returnType":"void"},{"name":"encode_u64","signature":"encode_u64(byte_offset: int, value: int) -> void","description":"Encodes a 64-bit unsigned integer number as bytes at the index of [param byte_offset] bytes. The array must have at least 8 bytes of space, starting at the offset.","returnType":"void"},{"name":"encode_var","signature":"encode_var(byte_offset: int, value: Variant, allow_objects: bool) -> int","description":"Encodes a  at the index of [param byte_offset] bytes. A sufficient space must be allocated, depending on the encoded variant's size. If [param allow_objects] is false, -derived values are not permitted and will instead be serialized as ID-only.","returnType":"int"},{"name":"fill","signature":"fill(value: int) -> void","description":"Assigns the given value to all elements in the array. This can typically be used together with [method resize] to create an array with a given size and initialized elements.","returnType":"void"},{"name":"find","signature":"find(value: int, from: int) -> int","description":"Searches the array for a value and returns its index or -1 if not found. Optionally, the initial search index can be passed.","returnType":"int"},{"name":"get","signature":"get(index: int) -> int","description":"Returns the byte at the given [param index] in the array. This is the same as using the [] operator (array).","returnType":"int"},{"name":"get_string_from_ascii","signature":"get_string_from_ascii() -> String","description":"Converts ASCII/Latin-1 encoded array to . Fast alternative to [method get_string_from_utf8] if the content is ASCII/Latin-1 only. Unlike the UTF-8 function this function maps every byte to a character in the array. Multibyte sequences will not be interpreted correctly. For parsing user input always use [method get_string_from_utf8]. This is the inverse of [method String.to_ascii_buffer].","returnType":"String"},{"name":"get_string_from_utf8","signature":"get_string_from_utf8() -> String","description":"Converts UTF-8 encoded array to . Slower than [method get_string_from_ascii] but supports UTF-8 encoded data. Use this function if you are unsure about the source of the data. For user input this function should always be preferred. Returns empty string if source array is not valid UTF-8 string. This is the inverse of [method String.to_utf8_buffer].","returnType":"String"},{"name":"get_string_from_utf16","signature":"get_string_from_utf16() -> String","description":"Converts UTF-16 encoded array to . If the BOM is missing, system endianness is assumed. Returns empty string if source array is not valid UTF-16 string. This is the inverse of [method String.to_utf16_buffer].","returnType":"String"},{"name":"get_string_from_utf32","signature":"get_string_from_utf32() -> String","description":"Converts UTF-32 encoded array to . System endianness is assumed. Returns empty string if source array is not valid UTF-32 string. This is the inverse of [method String.to_utf32_buffer].","returnType":"String"},{"name":"get_string_from_wchar","signature":"get_string_from_wchar() -> String","description":"Converts wide character (wchar_t, UTF-16 on Windows, UTF-32 on other platforms) encoded array to . Returns empty string if source array is not valid wide string. This is the inverse of [method String.to_wchar_buffer].","returnType":"String"},{"name":"has","signature":"has(value: int) -> bool","description":"Returns true if the array contains [param value].","returnType":"bool"},{"name":"has_encoded_var","signature":"has_encoded_var(byte_offset: int, allow_objects: bool) -> bool","description":"Returns true if a valid  value can be decoded at the [param byte_offset]. Returns false otherwise or when the value is -derived and [param allow_objects] is false.","returnType":"bool"},{"name":"hex_encode","signature":"hex_encode() -> String","description":"Returns a hexadecimal representation of this array as a .\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tvar array = PackedByteArray([11, 46, 255])\n\t\t\t\tprint(array.hex_encode()) # Prints \"0b2eff\"\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tbyte[] array = [11, 46, 255];\n\t\t\t\tGD.Print(array.HexEncode()); // Prints \"0b2eff\"\n\t\t\t\t\n\t\t\t\t","returnType":"String"},{"name":"insert","signature":"insert(at_index: int, value: int) -> int","description":"Inserts a new element at a given position in the array. The position must be valid, or at the end of the array (idx == size()).","returnType":"int"},{"name":"is_empty","signature":"is_empty() -> bool","description":"Returns true if the array is empty.","returnType":"bool"},{"name":"push_back","signature":"push_back(value: int) -> bool","description":"Appends an element at the end of the array.","returnType":"bool"},{"name":"remove_at","signature":"remove_at(index: int) -> void","description":"Removes an element from the array by index.","returnType":"void"},{"name":"resize","signature":"resize(new_size: int) -> int","description":"Sets the size of the array. If the array is grown, reserves elements at the end of the array. If the array is shrunk, truncates the array to the new size. Calling [method resize] once and assigning the new values is faster than adding new elements one by one.","returnType":"int"},{"name":"reverse","signature":"reverse() -> void","description":"Reverses the order of the elements in the array.","returnType":"void"},{"name":"rfind","signature":"rfind(value: int, from: int) -> int","description":"Searches the array in reverse order. Optionally, a start search index can be passed. If negative, the start index is considered relative to the end of the array.","returnType":"int"},{"name":"set","signature":"set(index: int, value: int) -> void","description":"Changes the byte at the given index.","returnType":"void"},{"name":"size","signature":"size() -> int","description":"Returns the number of elements in the array.","returnType":"int"},{"name":"slice","signature":"slice(begin: int, end: int) -> PackedByteArray","description":"Returns the slice of the , from [param begin] (inclusive) to [param end] (exclusive), as a new .\n\t\t\t\tThe absolute value of [param begin] and [param end] will be clamped to the array size, so the default value for [param end] makes it slice to the size of the array by default (i.e. arr.slice(1) is a shorthand for arr.slice(1, arr.size())).\n\t\t\t\tIf either [param begin] or [param end] are negative, they will be relative to the end of the array (i.e. arr.slice(0, -2) is a shorthand for arr.slice(0, arr.size() - 2)).","returnType":"PackedByteArray"},{"name":"sort","signature":"sort() -> void","description":"Sorts the elements of the array in ascending order.","returnType":"void"},{"name":"to_float32_array","signature":"to_float32_array() -> PackedFloat32Array","description":"Returns a copy of the data converted to a , where each block of 4 bytes has been converted to a 32-bit float (C++ [code skip-lint]float).\n\t\t\t\tThe size of the input array must be a multiple of 4 (size of 32-bit float). The size of the new array will be byte_array.size() / 4.\n\t\t\t\tIf the original data can't be converted to 32-bit floats, the resulting data is undefined.","returnType":"PackedFloat32Array"},{"name":"to_float64_array","signature":"to_float64_array() -> PackedFloat64Array","description":"Returns a copy of the data converted to a , where each block of 8 bytes has been converted to a 64-bit float (C++ double, Godot ).\n\t\t\t\tThe size of the input array must be a multiple of 8 (size of 64-bit double). The size of the new array will be byte_array.size() / 8.\n\t\t\t\tIf the original data can't be converted to 64-bit floats, the resulting data is undefined.","returnType":"PackedFloat64Array"},{"name":"to_int32_array","signature":"to_int32_array() -> PackedInt32Array","description":"Returns a copy of the data converted to a , where each block of 4 bytes has been converted to a signed 32-bit integer (C++ int32_t).\n\t\t\t\tThe size of the input array must be a multiple of 4 (size of 32-bit integer). The size of the new array will be byte_array.size() / 4.\n\t\t\t\tIf the original data can't be converted to signed 32-bit integers, the resulting data is undefined.","returnType":"PackedInt32Array"},{"name":"to_int64_array","signature":"to_int64_array() -> PackedInt64Array","description":"Returns a copy of the data converted to a , where each block of 8 bytes has been converted to a signed 64-bit integer (C++ int64_t, Godot ).\n\t\t\t\tThe size of the input array must be a multiple of 8 (size of 64-bit integer). The size of the new array will be byte_array.size() / 8.\n\t\t\t\tIf the original data can't be converted to signed 64-bit integers, the resulting data is undefined.","returnType":"PackedInt64Array"}],"signals":[]},"PackedColorArray":{"name":"PackedColorArray","description":"A packed array of s.","inherits":"","properties":[],"methods":[{"name":"append","signature":"append(value: Color) -> bool","description":"Appends an element at the end of the array (alias of [method push_back]).","returnType":"bool"},{"name":"append_array","signature":"append_array(array: PackedColorArray) -> void","description":"Appends a  at the end of this array.","returnType":"void"},{"name":"bsearch","signature":"bsearch(value: Color, before: bool) -> int","description":"Finds the index of an existing value (or the insertion index that maintains sorting order, if the value is not yet present in the array) using binary search. Optionally, a [param before] specifier can be passed. If false, the returned index comes after all existing entries of the value in the array.\n\t\t\t\tNote: Calling [method bsearch] on an unsorted array results in unexpected behavior.","returnType":"int"},{"name":"clear","signature":"clear() -> void","description":"Clears the array. This is equivalent to using [method resize] with a size of 0.","returnType":"void"},{"name":"count","signature":"count(value: Color) -> int","description":"Returns the number of times an element is in the array.","returnType":"int"},{"name":"duplicate","signature":"duplicate() -> PackedColorArray","description":"Creates a copy of the array, and returns it.","returnType":"PackedColorArray"},{"name":"fill","signature":"fill(value: Color) -> void","description":"Assigns the given value to all elements in the array. This can typically be used together with [method resize] to create an array with a given size and initialized elements.","returnType":"void"},{"name":"find","signature":"find(value: Color, from: int) -> int","description":"Searches the array for a value and returns its index or -1 if not found. Optionally, the initial search index can be passed.","returnType":"int"},{"name":"get","signature":"get(index: int) -> Color","description":"Returns the  at the given [param index] in the array. This is the same as using the [] operator (array).","returnType":"Color"},{"name":"has","signature":"has(value: Color) -> bool","description":"Returns true if the array contains [param value].","returnType":"bool"},{"name":"insert","signature":"insert(at_index: int, value: Color) -> int","description":"Inserts a new element at a given position in the array. The position must be valid, or at the end of the array (idx == size()).","returnType":"int"},{"name":"is_empty","signature":"is_empty() -> bool","description":"Returns true if the array is empty.","returnType":"bool"},{"name":"push_back","signature":"push_back(value: Color) -> bool","description":"Appends a value to the array.","returnType":"bool"},{"name":"remove_at","signature":"remove_at(index: int) -> void","description":"Removes an element from the array by index.","returnType":"void"},{"name":"resize","signature":"resize(new_size: int) -> int","description":"Sets the size of the array. If the array is grown, reserves elements at the end of the array. If the array is shrunk, truncates the array to the new size. Calling [method resize] once and assigning the new values is faster than adding new elements one by one.","returnType":"int"},{"name":"reverse","signature":"reverse() -> void","description":"Reverses the order of the elements in the array.","returnType":"void"},{"name":"rfind","signature":"rfind(value: Color, from: int) -> int","description":"Searches the array in reverse order. Optionally, a start search index can be passed. If negative, the start index is considered relative to the end of the array.","returnType":"int"},{"name":"set","signature":"set(index: int, value: Color) -> void","description":"Changes the  at the given index.","returnType":"void"},{"name":"size","signature":"size() -> int","description":"Returns the number of elements in the array.","returnType":"int"},{"name":"slice","signature":"slice(begin: int, end: int) -> PackedColorArray","description":"Returns the slice of the , from [param begin] (inclusive) to [param end] (exclusive), as a new .\n\t\t\t\tThe absolute value of [param begin] and [param end] will be clamped to the array size, so the default value for [param end] makes it slice to the size of the array by default (i.e. arr.slice(1) is a shorthand for arr.slice(1, arr.size())).\n\t\t\t\tIf either [param begin] or [param end] are negative, they will be relative to the end of the array (i.e. arr.slice(0, -2) is a shorthand for arr.slice(0, arr.size() - 2)).","returnType":"PackedColorArray"},{"name":"sort","signature":"sort() -> void","description":"Sorts the elements of the array in ascending order.","returnType":"void"},{"name":"to_byte_array","signature":"to_byte_array() -> PackedByteArray","description":"Returns a  with each color encoded as bytes.","returnType":"PackedByteArray"}],"signals":[]},"PackedDataContainer":{"name":"PackedDataContainer","description":"Efficiently packs and serializes  or .","inherits":"Resource","properties":[],"methods":[{"name":"pack","signature":"pack(value: Variant) -> int","description":"Packs the given container into a binary representation. The [param value] must be either  or , any other type will result in invalid data error.\n\t\t\t\tNote: Subsequent calls to this method will overwrite the existing data.","returnType":"int"},{"name":"size","signature":"size() -> int","description":"Returns the size of the packed container (see [method Array.size] and [method Dictionary.size]).","returnType":"int"}],"signals":[]},"PackedDataContainerRef":{"name":"PackedDataContainerRef","description":"An internal class used by  to pack nested arrays and dictionaries.","inherits":"RefCounted","properties":[],"methods":[{"name":"size","signature":"size() -> int","description":"Returns the size of the packed container (see [method Array.size] and [method Dictionary.size]).","returnType":"int"}],"signals":[]},"PackedFloat32Array":{"name":"PackedFloat32Array","description":"A packed array of 32-bit floating-point values.","inherits":"","properties":[],"methods":[{"name":"append","signature":"append(value: float) -> bool","description":"Appends an element at the end of the array (alias of [method push_back]).","returnType":"bool"},{"name":"append_array","signature":"append_array(array: PackedFloat32Array) -> void","description":"Appends a  at the end of this array.","returnType":"void"},{"name":"bsearch","signature":"bsearch(value: float, before: bool) -> int","description":"Finds the index of an existing value (or the insertion index that maintains sorting order, if the value is not yet present in the array) using binary search. Optionally, a [param before] specifier can be passed. If false, the returned index comes after all existing entries of the value in the array.\n\t\t\t\tNote: Calling [method bsearch] on an unsorted array results in unexpected behavior.\n\t\t\t\tNote: [constant @GDScript.NAN] doesn't behave the same as other numbers. Therefore, the results from this method may not be accurate if NaNs are included.","returnType":"int"},{"name":"clear","signature":"clear() -> void","description":"Clears the array. This is equivalent to using [method resize] with a size of 0.","returnType":"void"},{"name":"count","signature":"count(value: float) -> int","description":"Returns the number of times an element is in the array.\n\t\t\t\tNote: [constant @GDScript.NAN] doesn't behave the same as other numbers. Therefore, the results from this method may not be accurate if NaNs are included.","returnType":"int"},{"name":"duplicate","signature":"duplicate() -> PackedFloat32Array","description":"Creates a copy of the array, and returns it.","returnType":"PackedFloat32Array"},{"name":"fill","signature":"fill(value: float) -> void","description":"Assigns the given value to all elements in the array. This can typically be used together with [method resize] to create an array with a given size and initialized elements.","returnType":"void"},{"name":"find","signature":"find(value: float, from: int) -> int","description":"Searches the array for a value and returns its index or -1 if not found. Optionally, the initial search index can be passed.\n\t\t\t\tNote: [constant @GDScript.NAN] doesn't behave the same as other numbers. Therefore, the results from this method may not be accurate if NaNs are included.","returnType":"int"},{"name":"get","signature":"get(index: int) -> float","description":"Returns the 32-bit float at the given [param index] in the array. This is the same as using the [] operator (array).","returnType":"float"},{"name":"has","signature":"has(value: float) -> bool","description":"Returns true if the array contains [param value].\n\t\t\t\tNote: [constant @GDScript.NAN] doesn't behave the same as other numbers. Therefore, the results from this method may not be accurate if NaNs are included.","returnType":"bool"},{"name":"insert","signature":"insert(at_index: int, value: float) -> int","description":"Inserts a new element at a given position in the array. The position must be valid, or at the end of the array (idx == size()).","returnType":"int"},{"name":"is_empty","signature":"is_empty() -> bool","description":"Returns true if the array is empty.","returnType":"bool"},{"name":"push_back","signature":"push_back(value: float) -> bool","description":"Appends an element at the end of the array.","returnType":"bool"},{"name":"remove_at","signature":"remove_at(index: int) -> void","description":"Removes an element from the array by index.","returnType":"void"},{"name":"resize","signature":"resize(new_size: int) -> int","description":"Sets the size of the array. If the array is grown, reserves elements at the end of the array. If the array is shrunk, truncates the array to the new size. Calling [method resize] once and assigning the new values is faster than adding new elements one by one.","returnType":"int"},{"name":"reverse","signature":"reverse() -> void","description":"Reverses the order of the elements in the array.","returnType":"void"},{"name":"rfind","signature":"rfind(value: float, from: int) -> int","description":"Searches the array in reverse order. Optionally, a start search index can be passed. If negative, the start index is considered relative to the end of the array.\n\t\t\t\tNote: [constant @GDScript.NAN] doesn't behave the same as other numbers. Therefore, the results from this method may not be accurate if NaNs are included.","returnType":"int"},{"name":"set","signature":"set(index: int, value: float) -> void","description":"Changes the float at the given index.","returnType":"void"},{"name":"size","signature":"size() -> int","description":"Returns the number of elements in the array.","returnType":"int"},{"name":"slice","signature":"slice(begin: int, end: int) -> PackedFloat32Array","description":"Returns the slice of the , from [param begin] (inclusive) to [param end] (exclusive), as a new .\n\t\t\t\tThe absolute value of [param begin] and [param end] will be clamped to the array size, so the default value for [param end] makes it slice to the size of the array by default (i.e. arr.slice(1) is a shorthand for arr.slice(1, arr.size())).\n\t\t\t\tIf either [param begin] or [param end] are negative, they will be relative to the end of the array (i.e. arr.slice(0, -2) is a shorthand for arr.slice(0, arr.size() - 2)).","returnType":"PackedFloat32Array"},{"name":"sort","signature":"sort() -> void","description":"Sorts the elements of the array in ascending order.\n\t\t\t\tNote: [constant @GDScript.NAN] doesn't behave the same as other numbers. Therefore, the results from this method may not be accurate if NaNs are included.","returnType":"void"},{"name":"to_byte_array","signature":"to_byte_array() -> PackedByteArray","description":"Returns a copy of the data converted to a , where each element has been encoded as 4 bytes.\n\t\t\t\tThe size of the new array will be float32_array.size() * 4.","returnType":"PackedByteArray"}],"signals":[]},"PackedFloat64Array":{"name":"PackedFloat64Array","description":"A packed array of 64-bit floating-point values.","inherits":"","properties":[],"methods":[{"name":"append","signature":"append(value: float) -> bool","description":"Appends an element at the end of the array (alias of [method push_back]).","returnType":"bool"},{"name":"append_array","signature":"append_array(array: PackedFloat64Array) -> void","description":"Appends a  at the end of this array.","returnType":"void"},{"name":"bsearch","signature":"bsearch(value: float, before: bool) -> int","description":"Finds the index of an existing value (or the insertion index that maintains sorting order, if the value is not yet present in the array) using binary search. Optionally, a [param before] specifier can be passed. If false, the returned index comes after all existing entries of the value in the array.\n\t\t\t\tNote: Calling [method bsearch] on an unsorted array results in unexpected behavior.\n\t\t\t\tNote: [constant @GDScript.NAN] doesn't behave the same as other numbers. Therefore, the results from this method may not be accurate if NaNs are included.","returnType":"int"},{"name":"clear","signature":"clear() -> void","description":"Clears the array. This is equivalent to using [method resize] with a size of 0.","returnType":"void"},{"name":"count","signature":"count(value: float) -> int","description":"Returns the number of times an element is in the array.\n\t\t\t\tNote: [constant @GDScript.NAN] doesn't behave the same as other numbers. Therefore, the results from this method may not be accurate if NaNs are included.","returnType":"int"},{"name":"duplicate","signature":"duplicate() -> PackedFloat64Array","description":"Creates a copy of the array, and returns it.","returnType":"PackedFloat64Array"},{"name":"fill","signature":"fill(value: float) -> void","description":"Assigns the given value to all elements in the array. This can typically be used together with [method resize] to create an array with a given size and initialized elements.","returnType":"void"},{"name":"find","signature":"find(value: float, from: int) -> int","description":"Searches the array for a value and returns its index or -1 if not found. Optionally, the initial search index can be passed.\n\t\t\t\tNote: [constant @GDScript.NAN] doesn't behave the same as other numbers. Therefore, the results from this method may not be accurate if NaNs are included.","returnType":"int"},{"name":"get","signature":"get(index: int) -> float","description":"Returns the 64-bit float at the given [param index] in the array. This is the same as using the [] operator (array).","returnType":"float"},{"name":"has","signature":"has(value: float) -> bool","description":"Returns true if the array contains [param value].\n\t\t\t\tNote: [constant @GDScript.NAN] doesn't behave the same as other numbers. Therefore, the results from this method may not be accurate if NaNs are included.","returnType":"bool"},{"name":"insert","signature":"insert(at_index: int, value: float) -> int","description":"Inserts a new element at a given position in the array. The position must be valid, or at the end of the array (idx == size()).","returnType":"int"},{"name":"is_empty","signature":"is_empty() -> bool","description":"Returns true if the array is empty.","returnType":"bool"},{"name":"push_back","signature":"push_back(value: float) -> bool","description":"Appends an element at the end of the array.","returnType":"bool"},{"name":"remove_at","signature":"remove_at(index: int) -> void","description":"Removes an element from the array by index.","returnType":"void"},{"name":"resize","signature":"resize(new_size: int) -> int","description":"Sets the size of the array. If the array is grown, reserves elements at the end of the array. If the array is shrunk, truncates the array to the new size. Calling [method resize] once and assigning the new values is faster than adding new elements one by one.","returnType":"int"},{"name":"reverse","signature":"reverse() -> void","description":"Reverses the order of the elements in the array.","returnType":"void"},{"name":"rfind","signature":"rfind(value: float, from: int) -> int","description":"Searches the array in reverse order. Optionally, a start search index can be passed. If negative, the start index is considered relative to the end of the array.\n\t\t\t\tNote: [constant @GDScript.NAN] doesn't behave the same as other numbers. Therefore, the results from this method may not be accurate if NaNs are included.","returnType":"int"},{"name":"set","signature":"set(index: int, value: float) -> void","description":"Changes the float at the given index.","returnType":"void"},{"name":"size","signature":"size() -> int","description":"Returns the number of elements in the array.","returnType":"int"},{"name":"slice","signature":"slice(begin: int, end: int) -> PackedFloat64Array","description":"Returns the slice of the , from [param begin] (inclusive) to [param end] (exclusive), as a new .\n\t\t\t\tThe absolute value of [param begin] and [param end] will be clamped to the array size, so the default value for [param end] makes it slice to the size of the array by default (i.e. arr.slice(1) is a shorthand for arr.slice(1, arr.size())).\n\t\t\t\tIf either [param begin] or [param end] are negative, they will be relative to the end of the array (i.e. arr.slice(0, -2) is a shorthand for arr.slice(0, arr.size() - 2)).","returnType":"PackedFloat64Array"},{"name":"sort","signature":"sort() -> void","description":"Sorts the elements of the array in ascending order.\n\t\t\t\tNote: [constant @GDScript.NAN] doesn't behave the same as other numbers. Therefore, the results from this method may not be accurate if NaNs are included.","returnType":"void"},{"name":"to_byte_array","signature":"to_byte_array() -> PackedByteArray","description":"Returns a copy of the data converted to a , where each element has been encoded as 8 bytes.\n\t\t\t\tThe size of the new array will be float64_array.size() * 8.","returnType":"PackedByteArray"}],"signals":[]},"PackedInt32Array":{"name":"PackedInt32Array","description":"A packed array of 32-bit integers.","inherits":"","properties":[],"methods":[{"name":"append","signature":"append(value: int) -> bool","description":"Appends an element at the end of the array (alias of [method push_back]).","returnType":"bool"},{"name":"append_array","signature":"append_array(array: PackedInt32Array) -> void","description":"Appends a  at the end of this array.","returnType":"void"},{"name":"bsearch","signature":"bsearch(value: int, before: bool) -> int","description":"Finds the index of an existing value (or the insertion index that maintains sorting order, if the value is not yet present in the array) using binary search. Optionally, a [param before] specifier can be passed. If false, the returned index comes after all existing entries of the value in the array.\n\t\t\t\tNote: Calling [method bsearch] on an unsorted array results in unexpected behavior.","returnType":"int"},{"name":"clear","signature":"clear() -> void","description":"Clears the array. This is equivalent to using [method resize] with a size of 0.","returnType":"void"},{"name":"count","signature":"count(value: int) -> int","description":"Returns the number of times an element is in the array.","returnType":"int"},{"name":"duplicate","signature":"duplicate() -> PackedInt32Array","description":"Creates a copy of the array, and returns it.","returnType":"PackedInt32Array"},{"name":"fill","signature":"fill(value: int) -> void","description":"Assigns the given value to all elements in the array. This can typically be used together with [method resize] to create an array with a given size and initialized elements.","returnType":"void"},{"name":"find","signature":"find(value: int, from: int) -> int","description":"Searches the array for a value and returns its index or -1 if not found. Optionally, the initial search index can be passed.","returnType":"int"},{"name":"get","signature":"get(index: int) -> int","description":"Returns the 32-bit integer at the given [param index] in the array. This is the same as using the [] operator (array).","returnType":"int"},{"name":"has","signature":"has(value: int) -> bool","description":"Returns true if the array contains [param value].","returnType":"bool"},{"name":"insert","signature":"insert(at_index: int, value: int) -> int","description":"Inserts a new integer at a given position in the array. The position must be valid, or at the end of the array (idx == size()).","returnType":"int"},{"name":"is_empty","signature":"is_empty() -> bool","description":"Returns true if the array is empty.","returnType":"bool"},{"name":"push_back","signature":"push_back(value: int) -> bool","description":"Appends a value to the array.","returnType":"bool"},{"name":"remove_at","signature":"remove_at(index: int) -> void","description":"Removes an element from the array by index.","returnType":"void"},{"name":"resize","signature":"resize(new_size: int) -> int","description":"Sets the size of the array. If the array is grown, reserves elements at the end of the array. If the array is shrunk, truncates the array to the new size. Calling [method resize] once and assigning the new values is faster than adding new elements one by one.","returnType":"int"},{"name":"reverse","signature":"reverse() -> void","description":"Reverses the order of the elements in the array.","returnType":"void"},{"name":"rfind","signature":"rfind(value: int, from: int) -> int","description":"Searches the array in reverse order. Optionally, a start search index can be passed. If negative, the start index is considered relative to the end of the array.","returnType":"int"},{"name":"set","signature":"set(index: int, value: int) -> void","description":"Changes the integer at the given index.","returnType":"void"},{"name":"size","signature":"size() -> int","description":"Returns the number of elements in the array.","returnType":"int"},{"name":"slice","signature":"slice(begin: int, end: int) -> PackedInt32Array","description":"Returns the slice of the , from [param begin] (inclusive) to [param end] (exclusive), as a new .\n\t\t\t\tThe absolute value of [param begin] and [param end] will be clamped to the array size, so the default value for [param end] makes it slice to the size of the array by default (i.e. arr.slice(1) is a shorthand for arr.slice(1, arr.size())).\n\t\t\t\tIf either [param begin] or [param end] are negative, they will be relative to the end of the array (i.e. arr.slice(0, -2) is a shorthand for arr.slice(0, arr.size() - 2)).","returnType":"PackedInt32Array"},{"name":"sort","signature":"sort() -> void","description":"Sorts the elements of the array in ascending order.","returnType":"void"},{"name":"to_byte_array","signature":"to_byte_array() -> PackedByteArray","description":"Returns a copy of the data converted to a , where each element has been encoded as 4 bytes.\n\t\t\t\tThe size of the new array will be int32_array.size() * 4.","returnType":"PackedByteArray"}],"signals":[]},"PackedInt64Array":{"name":"PackedInt64Array","description":"A packed array of 64-bit integers.","inherits":"","properties":[],"methods":[{"name":"append","signature":"append(value: int) -> bool","description":"Appends an element at the end of the array (alias of [method push_back]).","returnType":"bool"},{"name":"append_array","signature":"append_array(array: PackedInt64Array) -> void","description":"Appends a  at the end of this array.","returnType":"void"},{"name":"bsearch","signature":"bsearch(value: int, before: bool) -> int","description":"Finds the index of an existing value (or the insertion index that maintains sorting order, if the value is not yet present in the array) using binary search. Optionally, a [param before] specifier can be passed. If false, the returned index comes after all existing entries of the value in the array.\n\t\t\t\tNote: Calling [method bsearch] on an unsorted array results in unexpected behavior.","returnType":"int"},{"name":"clear","signature":"clear() -> void","description":"Clears the array. This is equivalent to using [method resize] with a size of 0.","returnType":"void"},{"name":"count","signature":"count(value: int) -> int","description":"Returns the number of times an element is in the array.","returnType":"int"},{"name":"duplicate","signature":"duplicate() -> PackedInt64Array","description":"Creates a copy of the array, and returns it.","returnType":"PackedInt64Array"},{"name":"fill","signature":"fill(value: int) -> void","description":"Assigns the given value to all elements in the array. This can typically be used together with [method resize] to create an array with a given size and initialized elements.","returnType":"void"},{"name":"find","signature":"find(value: int, from: int) -> int","description":"Searches the array for a value and returns its index or -1 if not found. Optionally, the initial search index can be passed.","returnType":"int"},{"name":"get","signature":"get(index: int) -> int","description":"Returns the 64-bit integer at the given [param index] in the array. This is the same as using the [] operator (array).","returnType":"int"},{"name":"has","signature":"has(value: int) -> bool","description":"Returns true if the array contains [param value].","returnType":"bool"},{"name":"insert","signature":"insert(at_index: int, value: int) -> int","description":"Inserts a new integer at a given position in the array. The position must be valid, or at the end of the array (idx == size()).","returnType":"int"},{"name":"is_empty","signature":"is_empty() -> bool","description":"Returns true if the array is empty.","returnType":"bool"},{"name":"push_back","signature":"push_back(value: int) -> bool","description":"Appends a value to the array.","returnType":"bool"},{"name":"remove_at","signature":"remove_at(index: int) -> void","description":"Removes an element from the array by index.","returnType":"void"},{"name":"resize","signature":"resize(new_size: int) -> int","description":"Sets the size of the array. If the array is grown, reserves elements at the end of the array. If the array is shrunk, truncates the array to the new size. Calling [method resize] once and assigning the new values is faster than adding new elements one by one.","returnType":"int"},{"name":"reverse","signature":"reverse() -> void","description":"Reverses the order of the elements in the array.","returnType":"void"},{"name":"rfind","signature":"rfind(value: int, from: int) -> int","description":"Searches the array in reverse order. Optionally, a start search index can be passed. If negative, the start index is considered relative to the end of the array.","returnType":"int"},{"name":"set","signature":"set(index: int, value: int) -> void","description":"Changes the integer at the given index.","returnType":"void"},{"name":"size","signature":"size() -> int","description":"Returns the number of elements in the array.","returnType":"int"},{"name":"slice","signature":"slice(begin: int, end: int) -> PackedInt64Array","description":"Returns the slice of the , from [param begin] (inclusive) to [param end] (exclusive), as a new .\n\t\t\t\tThe absolute value of [param begin] and [param end] will be clamped to the array size, so the default value for [param end] makes it slice to the size of the array by default (i.e. arr.slice(1) is a shorthand for arr.slice(1, arr.size())).\n\t\t\t\tIf either [param begin] or [param end] are negative, they will be relative to the end of the array (i.e. arr.slice(0, -2) is a shorthand for arr.slice(0, arr.size() - 2)).","returnType":"PackedInt64Array"},{"name":"sort","signature":"sort() -> void","description":"Sorts the elements of the array in ascending order.","returnType":"void"},{"name":"to_byte_array","signature":"to_byte_array() -> PackedByteArray","description":"Returns a copy of the data converted to a , where each element has been encoded as 8 bytes.\n\t\t\t\tThe size of the new array will be int64_array.size() * 8.","returnType":"PackedByteArray"}],"signals":[]},"PackedScene":{"name":"PackedScene","description":"An abstraction of a serialized scene.","inherits":"Resource","properties":[],"methods":[{"name":"can_instantiate","signature":"can_instantiate() -> bool","description":"Returns true if the scene file has nodes.","returnType":"bool"},{"name":"get_state","signature":"get_state() -> SceneState","description":"Returns the  representing the scene file contents.","returnType":"SceneState"},{"name":"instantiate","signature":"instantiate(edit_state: int) -> Node","description":"Instantiates the scene's node hierarchy. Triggers child scene instantiation(s). Triggers a [constant Node.NOTIFICATION_SCENE_INSTANTIATED] notification on the root node.","returnType":"Node"},{"name":"pack","signature":"pack(path: Node) -> int","description":"Packs the [param path] node, and all owned sub-nodes, into this . Any existing data will be cleared. See [member Node.owner].","returnType":"int"}],"signals":[]},"PackedStringArray":{"name":"PackedStringArray","description":"A packed array of s.","inherits":"","properties":[],"methods":[{"name":"append","signature":"append(value: String) -> bool","description":"Appends an element at the end of the array (alias of [method push_back]).","returnType":"bool"},{"name":"append_array","signature":"append_array(array: PackedStringArray) -> void","description":"Appends a  at the end of this array.","returnType":"void"},{"name":"bsearch","signature":"bsearch(value: String, before: bool) -> int","description":"Finds the index of an existing value (or the insertion index that maintains sorting order, if the value is not yet present in the array) using binary search. Optionally, a [param before] specifier can be passed. If false, the returned index comes after all existing entries of the value in the array.\n\t\t\t\tNote: Calling [method bsearch] on an unsorted array results in unexpected behavior.","returnType":"int"},{"name":"clear","signature":"clear() -> void","description":"Clears the array. This is equivalent to using [method resize] with a size of 0.","returnType":"void"},{"name":"count","signature":"count(value: String) -> int","description":"Returns the number of times an element is in the array.","returnType":"int"},{"name":"duplicate","signature":"duplicate() -> PackedStringArray","description":"Creates a copy of the array, and returns it.","returnType":"PackedStringArray"},{"name":"fill","signature":"fill(value: String) -> void","description":"Assigns the given value to all elements in the array. This can typically be used together with [method resize] to create an array with a given size and initialized elements.","returnType":"void"},{"name":"find","signature":"find(value: String, from: int) -> int","description":"Searches the array for a value and returns its index or -1 if not found. Optionally, the initial search index can be passed.","returnType":"int"},{"name":"get","signature":"get(index: int) -> String","description":"Returns the  at the given [param index] in the array. This is the same as using the [] operator (array).","returnType":"String"},{"name":"has","signature":"has(value: String) -> bool","description":"Returns true if the array contains [param value].","returnType":"bool"},{"name":"insert","signature":"insert(at_index: int, value: String) -> int","description":"Inserts a new element at a given position in the array. The position must be valid, or at the end of the array (idx == size()).","returnType":"int"},{"name":"is_empty","signature":"is_empty() -> bool","description":"Returns true if the array is empty.","returnType":"bool"},{"name":"push_back","signature":"push_back(value: String) -> bool","description":"Appends a string element at end of the array.","returnType":"bool"},{"name":"remove_at","signature":"remove_at(index: int) -> void","description":"Removes an element from the array by index.","returnType":"void"},{"name":"resize","signature":"resize(new_size: int) -> int","description":"Sets the size of the array. If the array is grown, reserves elements at the end of the array. If the array is shrunk, truncates the array to the new size. Calling [method resize] once and assigning the new values is faster than adding new elements one by one.","returnType":"int"},{"name":"reverse","signature":"reverse() -> void","description":"Reverses the order of the elements in the array.","returnType":"void"},{"name":"rfind","signature":"rfind(value: String, from: int) -> int","description":"Searches the array in reverse order. Optionally, a start search index can be passed. If negative, the start index is considered relative to the end of the array.","returnType":"int"},{"name":"set","signature":"set(index: int, value: String) -> void","description":"Changes the  at the given index.","returnType":"void"},{"name":"size","signature":"size() -> int","description":"Returns the number of elements in the array.","returnType":"int"},{"name":"slice","signature":"slice(begin: int, end: int) -> PackedStringArray","description":"Returns the slice of the , from [param begin] (inclusive) to [param end] (exclusive), as a new .\n\t\t\t\tThe absolute value of [param begin] and [param end] will be clamped to the array size, so the default value for [param end] makes it slice to the size of the array by default (i.e. arr.slice(1) is a shorthand for arr.slice(1, arr.size())).\n\t\t\t\tIf either [param begin] or [param end] are negative, they will be relative to the end of the array (i.e. arr.slice(0, -2) is a shorthand for arr.slice(0, arr.size() - 2)).","returnType":"PackedStringArray"},{"name":"sort","signature":"sort() -> void","description":"Sorts the elements of the array in ascending order.","returnType":"void"},{"name":"to_byte_array","signature":"to_byte_array() -> PackedByteArray","description":"Returns a  with each string encoded as UTF-8. Strings are null terminated.","returnType":"PackedByteArray"}],"signals":[]},"PackedVector2Array":{"name":"PackedVector2Array","description":"A packed array of s.","inherits":"","properties":[],"methods":[{"name":"append","signature":"append(value: Vector2) -> bool","description":"Appends an element at the end of the array (alias of [method push_back]).","returnType":"bool"},{"name":"append_array","signature":"append_array(array: PackedVector2Array) -> void","description":"Appends a  at the end of this array.","returnType":"void"},{"name":"bsearch","signature":"bsearch(value: Vector2, before: bool) -> int","description":"Finds the index of an existing value (or the insertion index that maintains sorting order, if the value is not yet present in the array) using binary search. Optionally, a [param before] specifier can be passed. If false, the returned index comes after all existing entries of the value in the array.\n\t\t\t\tNote: Calling [method bsearch] on an unsorted array results in unexpected behavior.\n\t\t\t\tNote: Vectors with [constant @GDScript.NAN] elements don't behave the same as other vectors. Therefore, the results from this method may not be accurate if NaNs are included.","returnType":"int"},{"name":"clear","signature":"clear() -> void","description":"Clears the array. This is equivalent to using [method resize] with a size of 0.","returnType":"void"},{"name":"count","signature":"count(value: Vector2) -> int","description":"Returns the number of times an element is in the array.\n\t\t\t\tNote: Vectors with [constant @GDScript.NAN] elements don't behave the same as other vectors. Therefore, the results from this method may not be accurate if NaNs are included.","returnType":"int"},{"name":"duplicate","signature":"duplicate() -> PackedVector2Array","description":"Creates a copy of the array, and returns it.","returnType":"PackedVector2Array"},{"name":"fill","signature":"fill(value: Vector2) -> void","description":"Assigns the given value to all elements in the array. This can typically be used together with [method resize] to create an array with a given size and initialized elements.","returnType":"void"},{"name":"find","signature":"find(value: Vector2, from: int) -> int","description":"Searches the array for a value and returns its index or -1 if not found. Optionally, the initial search index can be passed.\n\t\t\t\tNote: Vectors with [constant @GDScript.NAN] elements don't behave the same as other vectors. Therefore, the results from this method may not be accurate if NaNs are included.","returnType":"int"},{"name":"get","signature":"get(index: int) -> Vector2","description":"Returns the  at the given [param index] in the array. This is the same as using the [] operator (array).","returnType":"Vector2"},{"name":"has","signature":"has(value: Vector2) -> bool","description":"Returns true if the array contains [param value].\n\t\t\t\tNote: Vectors with [constant @GDScript.NAN] elements don't behave the same as other vectors. Therefore, the results from this method may not be accurate if NaNs are included.","returnType":"bool"},{"name":"insert","signature":"insert(at_index: int, value: Vector2) -> int","description":"Inserts a new element at a given position in the array. The position must be valid, or at the end of the array (idx == size()).","returnType":"int"},{"name":"is_empty","signature":"is_empty() -> bool","description":"Returns true if the array is empty.","returnType":"bool"},{"name":"push_back","signature":"push_back(value: Vector2) -> bool","description":"Inserts a  at the end.","returnType":"bool"},{"name":"remove_at","signature":"remove_at(index: int) -> void","description":"Removes an element from the array by index.","returnType":"void"},{"name":"resize","signature":"resize(new_size: int) -> int","description":"Sets the size of the array. If the array is grown, reserves elements at the end of the array. If the array is shrunk, truncates the array to the new size. Calling [method resize] once and assigning the new values is faster than adding new elements one by one.","returnType":"int"},{"name":"reverse","signature":"reverse() -> void","description":"Reverses the order of the elements in the array.","returnType":"void"},{"name":"rfind","signature":"rfind(value: Vector2, from: int) -> int","description":"Searches the array in reverse order. Optionally, a start search index can be passed. If negative, the start index is considered relative to the end of the array.\n\t\t\t\tNote: Vectors with [constant @GDScript.NAN] elements don't behave the same as other vectors. Therefore, the results from this method may not be accurate if NaNs are included.","returnType":"int"},{"name":"set","signature":"set(index: int, value: Vector2) -> void","description":"Changes the  at the given index.","returnType":"void"},{"name":"size","signature":"size() -> int","description":"Returns the number of elements in the array.","returnType":"int"},{"name":"slice","signature":"slice(begin: int, end: int) -> PackedVector2Array","description":"Returns the slice of the , from [param begin] (inclusive) to [param end] (exclusive), as a new .\n\t\t\t\tThe absolute value of [param begin] and [param end] will be clamped to the array size, so the default value for [param end] makes it slice to the size of the array by default (i.e. arr.slice(1) is a shorthand for arr.slice(1, arr.size())).\n\t\t\t\tIf either [param begin] or [param end] are negative, they will be relative to the end of the array (i.e. arr.slice(0, -2) is a shorthand for arr.slice(0, arr.size() - 2)).","returnType":"PackedVector2Array"},{"name":"sort","signature":"sort() -> void","description":"Sorts the elements of the array in ascending order.\n\t\t\t\tNote: Vectors with [constant @GDScript.NAN] elements don't behave the same as other vectors. Therefore, the results from this method may not be accurate if NaNs are included.","returnType":"void"},{"name":"to_byte_array","signature":"to_byte_array() -> PackedByteArray","description":"Returns a  with each vector encoded as bytes.","returnType":"PackedByteArray"}],"signals":[]},"PackedVector3Array":{"name":"PackedVector3Array","description":"A packed array of s.","inherits":"","properties":[],"methods":[{"name":"append","signature":"append(value: Vector3) -> bool","description":"Appends an element at the end of the array (alias of [method push_back]).","returnType":"bool"},{"name":"append_array","signature":"append_array(array: PackedVector3Array) -> void","description":"Appends a  at the end of this array.","returnType":"void"},{"name":"bsearch","signature":"bsearch(value: Vector3, before: bool) -> int","description":"Finds the index of an existing value (or the insertion index that maintains sorting order, if the value is not yet present in the array) using binary search. Optionally, a [param before] specifier can be passed. If false, the returned index comes after all existing entries of the value in the array.\n\t\t\t\tNote: Calling [method bsearch] on an unsorted array results in unexpected behavior.\n\t\t\t\tNote: Vectors with [constant @GDScript.NAN] elements don't behave the same as other vectors. Therefore, the results from this method may not be accurate if NaNs are included.","returnType":"int"},{"name":"clear","signature":"clear() -> void","description":"Clears the array. This is equivalent to using [method resize] with a size of 0.","returnType":"void"},{"name":"count","signature":"count(value: Vector3) -> int","description":"Returns the number of times an element is in the array.\n\t\t\t\tNote: Vectors with [constant @GDScript.NAN] elements don't behave the same as other vectors. Therefore, the results from this method may not be accurate if NaNs are included.","returnType":"int"},{"name":"duplicate","signature":"duplicate() -> PackedVector3Array","description":"Creates a copy of the array, and returns it.","returnType":"PackedVector3Array"},{"name":"fill","signature":"fill(value: Vector3) -> void","description":"Assigns the given value to all elements in the array. This can typically be used together with [method resize] to create an array with a given size and initialized elements.","returnType":"void"},{"name":"find","signature":"find(value: Vector3, from: int) -> int","description":"Searches the array for a value and returns its index or -1 if not found. Optionally, the initial search index can be passed.\n\t\t\t\tNote: Vectors with [constant @GDScript.NAN] elements don't behave the same as other vectors. Therefore, the results from this method may not be accurate if NaNs are included.","returnType":"int"},{"name":"get","signature":"get(index: int) -> Vector3","description":"Returns the  at the given [param index] in the array. This is the same as using the [] operator (array).","returnType":"Vector3"},{"name":"has","signature":"has(value: Vector3) -> bool","description":"Returns true if the array contains [param value].\n\t\t\t\tNote: Vectors with [constant @GDScript.NAN] elements don't behave the same as other vectors. Therefore, the results from this method may not be accurate if NaNs are included.","returnType":"bool"},{"name":"insert","signature":"insert(at_index: int, value: Vector3) -> int","description":"Inserts a new element at a given position in the array. The position must be valid, or at the end of the array (idx == size()).","returnType":"int"},{"name":"is_empty","signature":"is_empty() -> bool","description":"Returns true if the array is empty.","returnType":"bool"},{"name":"push_back","signature":"push_back(value: Vector3) -> bool","description":"Inserts a  at the end.","returnType":"bool"},{"name":"remove_at","signature":"remove_at(index: int) -> void","description":"Removes an element from the array by index.","returnType":"void"},{"name":"resize","signature":"resize(new_size: int) -> int","description":"Sets the size of the array. If the array is grown, reserves elements at the end of the array. If the array is shrunk, truncates the array to the new size. Calling [method resize] once and assigning the new values is faster than adding new elements one by one.","returnType":"int"},{"name":"reverse","signature":"reverse() -> void","description":"Reverses the order of the elements in the array.","returnType":"void"},{"name":"rfind","signature":"rfind(value: Vector3, from: int) -> int","description":"Searches the array in reverse order. Optionally, a start search index can be passed. If negative, the start index is considered relative to the end of the array.\n\t\t\t\tNote: Vectors with [constant @GDScript.NAN] elements don't behave the same as other vectors. Therefore, the results from this method may not be accurate if NaNs are included.","returnType":"int"},{"name":"set","signature":"set(index: int, value: Vector3) -> void","description":"Changes the  at the given index.","returnType":"void"},{"name":"size","signature":"size() -> int","description":"Returns the number of elements in the array.","returnType":"int"},{"name":"slice","signature":"slice(begin: int, end: int) -> PackedVector3Array","description":"Returns the slice of the , from [param begin] (inclusive) to [param end] (exclusive), as a new .\n\t\t\t\tThe absolute value of [param begin] and [param end] will be clamped to the array size, so the default value for [param end] makes it slice to the size of the array by default (i.e. arr.slice(1) is a shorthand for arr.slice(1, arr.size())).\n\t\t\t\tIf either [param begin] or [param end] are negative, they will be relative to the end of the array (i.e. arr.slice(0, -2) is a shorthand for arr.slice(0, arr.size() - 2)).","returnType":"PackedVector3Array"},{"name":"sort","signature":"sort() -> void","description":"Sorts the elements of the array in ascending order.\n\t\t\t\tNote: Vectors with [constant @GDScript.NAN] elements don't behave the same as other vectors. Therefore, the results from this method may not be accurate if NaNs are included.","returnType":"void"},{"name":"to_byte_array","signature":"to_byte_array() -> PackedByteArray","description":"Returns a  with each vector encoded as bytes.","returnType":"PackedByteArray"}],"signals":[]},"PackedVector4Array":{"name":"PackedVector4Array","description":"A packed array of s.","inherits":"","properties":[],"methods":[{"name":"append","signature":"append(value: Vector4) -> bool","description":"Appends an element at the end of the array (alias of [method push_back]).","returnType":"bool"},{"name":"append_array","signature":"append_array(array: PackedVector4Array) -> void","description":"Appends a  at the end of this array.","returnType":"void"},{"name":"bsearch","signature":"bsearch(value: Vector4, before: bool) -> int","description":"Finds the index of an existing value (or the insertion index that maintains sorting order, if the value is not yet present in the array) using binary search. Optionally, a [param before] specifier can be passed. If false, the returned index comes after all existing entries of the value in the array.\n\t\t\t\tNote: Calling [method bsearch] on an unsorted array results in unexpected behavior.\n\t\t\t\tNote: Vectors with [constant @GDScript.NAN] elements don't behave the same as other vectors. Therefore, the results from this method may not be accurate if NaNs are included.","returnType":"int"},{"name":"clear","signature":"clear() -> void","description":"Clears the array. This is equivalent to using [method resize] with a size of 0.","returnType":"void"},{"name":"count","signature":"count(value: Vector4) -> int","description":"Returns the number of times an element is in the array.\n\t\t\t\tNote: Vectors with [constant @GDScript.NAN] elements don't behave the same as other vectors. Therefore, the results from this method may not be accurate if NaNs are included.","returnType":"int"},{"name":"duplicate","signature":"duplicate() -> PackedVector4Array","description":"Creates a copy of the array, and returns it.","returnType":"PackedVector4Array"},{"name":"fill","signature":"fill(value: Vector4) -> void","description":"Assigns the given value to all elements in the array. This can typically be used together with [method resize] to create an array with a given size and initialized elements.","returnType":"void"},{"name":"find","signature":"find(value: Vector4, from: int) -> int","description":"Searches the array for a value and returns its index or -1 if not found. Optionally, the initial search index can be passed.\n\t\t\t\tNote: Vectors with [constant @GDScript.NAN] elements don't behave the same as other vectors. Therefore, the results from this method may not be accurate if NaNs are included.","returnType":"int"},{"name":"get","signature":"get(index: int) -> Vector4","description":"Returns the  at the given [param index] in the array. This is the same as using the [] operator (array).","returnType":"Vector4"},{"name":"has","signature":"has(value: Vector4) -> bool","description":"Returns true if the array contains [param value].\n\t\t\t\tNote: Vectors with [constant @GDScript.NAN] elements don't behave the same as other vectors. Therefore, the results from this method may not be accurate if NaNs are included.","returnType":"bool"},{"name":"insert","signature":"insert(at_index: int, value: Vector4) -> int","description":"Inserts a new element at a given position in the array. The position must be valid, or at the end of the array (idx == size()).","returnType":"int"},{"name":"is_empty","signature":"is_empty() -> bool","description":"Returns true if the array is empty.","returnType":"bool"},{"name":"push_back","signature":"push_back(value: Vector4) -> bool","description":"Inserts a  at the end.","returnType":"bool"},{"name":"remove_at","signature":"remove_at(index: int) -> void","description":"Removes an element from the array by index.","returnType":"void"},{"name":"resize","signature":"resize(new_size: int) -> int","description":"Sets the size of the array. If the array is grown, reserves elements at the end of the array. If the array is shrunk, truncates the array to the new size.","returnType":"int"},{"name":"reverse","signature":"reverse() -> void","description":"Reverses the order of the elements in the array.","returnType":"void"},{"name":"rfind","signature":"rfind(value: Vector4, from: int) -> int","description":"Searches the array in reverse order. Optionally, a start search index can be passed. If negative, the start index is considered relative to the end of the array.\n\t\t\t\tNote: Vectors with [constant @GDScript.NAN] elements don't behave the same as other vectors. Therefore, the results from this method may not be accurate if NaNs are included.","returnType":"int"},{"name":"set","signature":"set(index: int, value: Vector4) -> void","description":"Changes the  at the given index.","returnType":"void"},{"name":"size","signature":"size() -> int","description":"Returns the number of elements in the array.","returnType":"int"},{"name":"slice","signature":"slice(begin: int, end: int) -> PackedVector4Array","description":"Returns the slice of the , from [param begin] (inclusive) to [param end] (exclusive), as a new .\n\t\t\t\tThe absolute value of [param begin] and [param end] will be clamped to the array size, so the default value for [param end] makes it slice to the size of the array by default (i.e. arr.slice(1) is a shorthand for arr.slice(1, arr.size())).\n\t\t\t\tIf either [param begin] or [param end] are negative, they will be relative to the end of the array (i.e. arr.slice(0, -2) is a shorthand for arr.slice(0, arr.size() - 2)).","returnType":"PackedVector4Array"},{"name":"sort","signature":"sort() -> void","description":"Sorts the elements of the array in ascending order.\n\t\t\t\tNote: Vectors with [constant @GDScript.NAN] elements don't behave the same as other vectors. Therefore, the results from this method may not be accurate if NaNs are included.","returnType":"void"},{"name":"to_byte_array","signature":"to_byte_array() -> PackedByteArray","description":"Returns a  with each vector encoded as bytes.","returnType":"PackedByteArray"}],"signals":[]},"PacketPeer":{"name":"PacketPeer","description":"Abstraction and base class for packet-based protocols.","inherits":"RefCounted","properties":[{"name":"encode_buffer_max_size","type":"int","description":"Maximum buffer size allowed when encoding [Variant]s. Raise this value to support heavier memory allocations.\n\t\t\tThe [method put_var] method allocates memory on the stack, and the buffer used will grow automatically to the closest power of two to match the size of the [Variant]. If the [Variant] is bigger than [member encode_buffer_max_size], the method will error out with [constant ERR_OUT_OF_MEMORY]."}],"methods":[{"name":"get_available_packet_count","signature":"get_available_packet_count() -> int","description":"Returns the number of packets currently available in the ring-buffer.","returnType":"int"},{"name":"get_packet","signature":"get_packet() -> PackedByteArray","description":"Gets a raw packet.","returnType":"PackedByteArray"},{"name":"get_packet_error","signature":"get_packet_error() -> int","description":"Returns the error state of the last packet received (via [method get_packet] and [method get_var]).","returnType":"int"},{"name":"get_var","signature":"get_var(allow_objects: bool) -> Variant","description":"Gets a Variant. If [param allow_objects] is true, decoding objects is allowed.\n\t\t\t\tInternally, this uses the same decoding mechanism as the [method @GlobalScope.bytes_to_var] method.\n\t\t\t\tWarning: Deserialized objects can contain code which gets executed. Do not use this option if the serialized object comes from untrusted sources to avoid potential security threats such as remote code execution.","returnType":"Variant"},{"name":"put_packet","signature":"put_packet(buffer: PackedByteArray) -> int","description":"Sends a raw packet.","returnType":"int"},{"name":"put_var","signature":"put_var(var: Variant, full_objects: bool) -> int","description":"Sends a  as a packet. If [param full_objects] is true, encoding objects is allowed (and can potentially include code).\n\t\t\t\tInternally, this uses the same encoding mechanism as the [method @GlobalScope.var_to_bytes] method.","returnType":"int"}],"signals":[]},"PacketPeerDTLS":{"name":"PacketPeerDTLS","description":"DTLS packet peer.","inherits":"PacketPeer","properties":[],"methods":[{"name":"connect_to_peer","signature":"connect_to_peer(packet_peer: PacketPeerUDP, hostname: String, client_options: TLSOptions) -> int","description":"Connects a [param packet_peer] beginning the DTLS handshake using the underlying  which must be connected (see [method PacketPeerUDP.connect_to_host]). You can optionally specify the [param client_options] to be used while verifying the TLS connections. See [method TLSOptions.client] and [method TLSOptions.client_unsafe].","returnType":"int"},{"name":"disconnect_from_peer","signature":"disconnect_from_peer() -> void","description":"Disconnects this peer, terminating the DTLS session.","returnType":"void"},{"name":"get_status","signature":"get_status() -> int","description":"Returns the status of the connection. See [enum Status] for values.","returnType":"int"},{"name":"poll","signature":"poll() -> void","description":"Poll the connection to check for incoming packets. Call this frequently to update the status and keep the connection working.","returnType":"void"}],"signals":[]},"PacketPeerExtension":{"name":"PacketPeerExtension","description":"","inherits":"PacketPeer","properties":[],"methods":[{"name":"_get_available_packet_count","signature":"_get_available_packet_count() -> int","description":"","returnType":"int"},{"name":"_get_max_packet_size","signature":"_get_max_packet_size() -> int","description":"","returnType":"int"},{"name":"_get_packet","signature":"_get_packet(r_buffer: const uint8_t **, r_buffer_size: int32_t*) -> int","description":"","returnType":"int"},{"name":"_put_packet","signature":"_put_packet(p_buffer: const uint8_t*, p_buffer_size: int) -> int","description":"","returnType":"int"}],"signals":[]},"PacketPeerStream":{"name":"PacketPeerStream","description":"Wrapper to use a PacketPeer over a StreamPeer.","inherits":"PacketPeer","properties":[{"name":"input_buffer_max_size","type":"int","description":""},{"name":"output_buffer_max_size","type":"int","description":""},{"name":"stream_peer","type":"StreamPeer","description":"The wrapped [StreamPeer] object."}],"methods":[],"signals":[]},"PacketPeerUDP":{"name":"PacketPeerUDP","description":"UDP packet peer.","inherits":"PacketPeer","properties":[],"methods":[{"name":"bind","signature":"bind(port: int, bind_address: String, recv_buf_size: int) -> int","description":"Binds this  to the specified [param port] and [param bind_address] with a buffer size [param recv_buf_size], allowing it to receive incoming packets.\n\t\t\t\tIf [param bind_address] is set to \"*\" (default), the peer will be bound on all available addresses (both IPv4 and IPv6).\n\t\t\t\tIf [param bind_address] is set to \"0.0.0.0\" (for IPv4) or \"::\" (for IPv6), the peer will be bound to all available addresses matching that IP type.\n\t\t\t\tIf [param bind_address] is set to any valid address (e.g. \"192.168.1.101\", \"::1\", etc.), the peer will only be bound to the interface with that address (or fail if no interface with the given address exists).","returnType":"int"},{"name":"close","signature":"close() -> void","description":"Closes the 's underlying UDP socket.","returnType":"void"},{"name":"connect_to_host","signature":"connect_to_host(host: String, port: int) -> int","description":"Calling this method connects this UDP peer to the given [param host]/[param port] pair. UDP is in reality connectionless, so this option only means that incoming packets from different addresses are automatically discarded, and that outgoing packets are always sent to the connected address (future calls to [method set_dest_address] are not allowed). This method does not send any data to the remote peer, to do that, use [method PacketPeer.put_var] or [method PacketPeer.put_packet] as usual. See also .\n\t\t\t\tNote: Connecting to the remote peer does not help to protect from malicious attacks like IP spoofing, etc. Think about using an encryption technique like TLS or DTLS if you feel like your application is transferring sensitive information.","returnType":"int"},{"name":"get_local_port","signature":"get_local_port() -> int","description":"Returns the local port to which this peer is bound.","returnType":"int"},{"name":"get_packet_ip","signature":"get_packet_ip() -> String","description":"Returns the IP of the remote peer that sent the last packet(that was received with [method PacketPeer.get_packet] or [method PacketPeer.get_var]).","returnType":"String"},{"name":"get_packet_port","signature":"get_packet_port() -> int","description":"Returns the port of the remote peer that sent the last packet(that was received with [method PacketPeer.get_packet] or [method PacketPeer.get_var]).","returnType":"int"},{"name":"is_bound","signature":"is_bound() -> bool","description":"Returns whether this  is bound to an address and can receive packets.","returnType":"bool"},{"name":"is_socket_connected","signature":"is_socket_connected() -> bool","description":"Returns true if the UDP socket is open and has been connected to a remote address. See [method connect_to_host].","returnType":"bool"},{"name":"join_multicast_group","signature":"join_multicast_group(multicast_address: String, interface_name: String) -> int","description":"Joins the multicast group specified by [param multicast_address] using the interface identified by [param interface_name].\n\t\t\t\tYou can join the same multicast group with multiple interfaces. Use [method IP.get_local_interfaces] to know which are available.\n\t\t\t\tNote: Some Android devices might require the CHANGE_WIFI_MULTICAST_STATE permission for multicast to work.","returnType":"int"},{"name":"leave_multicast_group","signature":"leave_multicast_group(multicast_address: String, interface_name: String) -> int","description":"Removes the interface identified by [param interface_name] from the multicast group specified by [param multicast_address].","returnType":"int"},{"name":"set_broadcast_enabled","signature":"set_broadcast_enabled(enabled: bool) -> void","description":"Enable or disable sending of broadcast packets (e.g. set_dest_address(\"255.255.255.255\", 4343). This option is disabled by default.\n\t\t\t\tNote: Some Android devices might require the CHANGE_WIFI_MULTICAST_STATE permission and this option to be enabled to receive broadcast packets too.","returnType":"void"},{"name":"set_dest_address","signature":"set_dest_address(host: String, port: int) -> int","description":"Sets the destination address and port for sending packets and variables. A hostname will be resolved using DNS if needed.\n\t\t\t\tNote: [method set_broadcast_enabled] must be enabled before sending packets to a broadcast address (e.g. 255.255.255.255).","returnType":"int"},{"name":"wait","signature":"wait() -> int","description":"Waits for a packet to arrive on the bound address. See [method bind].\n\t\t\t\tNote: [method wait] can't be interrupted once it has been called. This can be worked around by allowing the other party to send a specific \"death pill\" packet like this:\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tsocket = PacketPeerUDP.new()\n\t\t\t\t# Server\n\t\t\t\tsocket.set_dest_address(\"127.0.0.1\", 789)\n\t\t\t\tsocket.put_packet(\"Time to stop\".to_ascii_buffer())\n\n\t\t\t\t# Client\n\t\t\t\twhile socket.wait() == OK:\n\t\t\t\t    var data = socket.get_packet().get_string_from_ascii()\n\t\t\t\t    if data == \"Time to stop\":\n\t\t\t\t        return\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tvar socket = new PacketPeerUdp();\n\t\t\t\t// Server\n\t\t\t\tsocket.SetDestAddress(\"127.0.0.1\", 789);\n\t\t\t\tsocket.PutPacket(\"Time to stop\".ToAsciiBuffer());\n\n\t\t\t\t// Client\n\t\t\t\twhile (socket.Wait() == OK)\n\t\t\t\t{\n\t\t\t\t    string data = socket.GetPacket().GetStringFromASCII();\n\t\t\t\t    if (data == \"Time to stop\")\n\t\t\t\t    {\n\t\t\t\t        return;\n\t\t\t\t    }\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t","returnType":"int"}],"signals":[]},"Panel":{"name":"Panel","description":"A GUI control that displays a .","inherits":"Control","properties":[],"methods":[],"signals":[]},"PanelContainer":{"name":"PanelContainer","description":"A container that keeps its child controls within the area of a .","inherits":"Container","properties":[],"methods":[],"signals":[]},"PanoramaSkyMaterial":{"name":"PanoramaSkyMaterial","description":"A material that provides a special texture to a , usually an HDR panorama.","inherits":"Material","properties":[{"name":"energy_multiplier","type":"float","description":"The sky's overall brightness multiplier. Higher values result in a brighter sky."},{"name":"filter","type":"bool","description":"A boolean value to determine if the background texture should be filtered or not."},{"name":"panorama","type":"Texture2D","description":"[Texture2D] to be applied to the [PanoramaSkyMaterial]."}],"methods":[],"signals":[]},"Parallax2D":{"name":"Parallax2D","description":"A node used to create a parallax scrolling background.","inherits":"Node2D","properties":[{"name":"autoscroll","type":"Vector2","description":"Velocity at which the offset scrolls automatically, in pixels per second."},{"name":"follow_viewport","type":"bool","description":"If [code]true[/code], this [Parallax2D] is offset by the current camera's position. If the [Parallax2D] is in a [CanvasLayer] separate from the current camera, it may be desired to match the value with [member CanvasLayer.follow_viewport_enabled]."},{"name":"ignore_camera_scroll","type":"bool","description":"If [code]true[/code], [Parallax2D]'s position is not affected by the position of the camera."},{"name":"limit_begin","type":"Vector2","description":"Top-left limits for scrolling to begin. If the camera is outside of this limit, the [Parallax2D] stops scrolling. Must be lower than [member limit_end] minus the viewport size to work."},{"name":"limit_end","type":"Vector2","description":"Bottom-right limits for scrolling to end. If the camera is outside of this limit, the [Parallax2D] will stop scrolling. Must be higher than [member limit_begin] and the viewport size combined to work."},{"name":"repeat_size","type":"Vector2","description":"Repeats the [Texture2D] of each of this node's children and offsets them by this value. When scrolling, the node's position loops, giving the illusion of an infinite scrolling background if the values are larger than the screen size. If an axis is set to [code]0[/code], the [Texture2D] will not be repeated."},{"name":"repeat_times","type":"int","description":"Overrides the amount of times the texture repeats. Each texture copy spreads evenly from the original by [member repeat_size]. Useful for when zooming out with a camera."},{"name":"screen_offset","type":"Vector2","description":"Offset used to scroll this [Parallax2D]. This value is updated automatically unless [member ignore_camera_scroll] is [code]true[/code]."},{"name":"scroll_offset","type":"Vector2","description":"The [Parallax2D]'s offset. Similar to [member screen_offset] and [member Node2D.position], but will not be overridden.\n\t\t\t[b]Note:[/b] Values will loop if [member repeat_size] is set higher than [code]0[/code]."},{"name":"scroll_scale","type":"Vector2","description":"Multiplier to the final [Parallax2D]'s offset. Can be used to simulate distance from the camera.\n\t\t\tFor example, a value of [code]1[/code] scrolls at the same speed as the camera. A value greater than [code]1[/code] scrolls faster, making objects appear closer. Less than [code]1[/code] scrolls slower, making objects appear further, and a value of [code]0[/code] stops the objects completely."}],"methods":[],"signals":[]},"ParallaxBackground":{"name":"ParallaxBackground","description":"A node used to create a parallax scrolling background.","inherits":"CanvasLayer","properties":[{"name":"scroll_base_offset","type":"Vector2","description":"The base position offset for all [ParallaxLayer] children."},{"name":"scroll_base_scale","type":"Vector2","description":"The base motion scale for all [ParallaxLayer] children."},{"name":"scroll_ignore_camera_zoom","type":"bool","description":"If [code]true[/code], elements in [ParallaxLayer] child aren't affected by the zoom level of the camera."},{"name":"scroll_limit_begin","type":"Vector2","description":"Top-left limits for scrolling to begin. If the camera is outside of this limit, the background will stop scrolling. Must be lower than [member scroll_limit_end] to work."},{"name":"scroll_limit_end","type":"Vector2","description":"Bottom-right limits for scrolling to end. If the camera is outside of this limit, the background will stop scrolling. Must be higher than [member scroll_limit_begin] to work."},{"name":"scroll_offset","type":"Vector2","description":"The ParallaxBackground's scroll value. Calculated automatically when using a [Camera2D], but can be used to manually manage scrolling when no camera is present."}],"methods":[],"signals":[]},"ParallaxLayer":{"name":"ParallaxLayer","description":"A parallax scrolling layer to be used with .","inherits":"Node2D","properties":[{"name":"motion_mirroring","type":"Vector2","description":"The interval, in pixels, at which the [ParallaxLayer] is drawn repeatedly. Useful for creating an infinitely scrolling background. If an axis is set to [code]0[/code], the [ParallaxLayer] will be drawn only once along that direction.\n\t\t\t[b]Note:[/b] If you want the repetition to pixel-perfect match a [Texture2D] displayed by a child node, you should account for any scale applied to the texture when defining this interval. For example, if you use a child [Sprite2D] scaled to [code]0.5[/code] to display a 600x600 texture, and want this sprite to be repeated continuously horizontally, you should set the mirroring to [code]Vector2(300, 0)[/code].\n\t\t\t[b]Note:[/b] If the length of the viewport axis is bigger than twice the repeated axis size, it will not repeat infinitely, as the parallax layer only draws 2 instances of the layer at any given time. The visibility window is calculated from the parent [ParallaxBackground]'s position, not the layer's own position. So, if you use mirroring, [b]do not[/b] change the [ParallaxLayer] position relative to its parent. Instead, if you need to adjust the background's position, set the [member CanvasLayer.offset] property in the parent [ParallaxBackground].\n\t\t\t[b]Note:[/b] Despite the name, the layer will not be mirrored, it will only be repeated."},{"name":"motion_offset","type":"Vector2","description":"The ParallaxLayer's offset relative to the parent ParallaxBackground's [member ParallaxBackground.scroll_offset]."},{"name":"motion_scale","type":"Vector2","description":"Multiplies the ParallaxLayer's motion. If an axis is set to [code]0[/code], it will not scroll."}],"methods":[],"signals":[]},"ParticleProcessMaterial":{"name":"ParticleProcessMaterial","description":"Holds a particle configuration for  or  nodes.","inherits":"Material","properties":[{"name":"alpha_curve","type":"Texture2D","description":"The alpha value of each particle's color will be multiplied by this [CurveTexture] over its lifetime.\n\t\t\t[b]Note:[/b] [member alpha_curve] multiplies the particle mesh's vertex colors. To have a visible effect on a [BaseMaterial3D], [member BaseMaterial3D.vertex_color_use_as_albedo] [i]must[/i] be [code]true[/code]. For a [ShaderMaterial], [code]ALBEDO *= COLOR.rgb;[/code] must be inserted in the shader's [code]fragment()[/code] function. Otherwise, [member alpha_curve] will have no visible effect."},{"name":"angle_curve","type":"Texture2D","description":"Each particle's rotation will be animated along this [CurveTexture]."},{"name":"angle_max","type":"float","description":"Maximum initial rotation applied to each particle, in degrees.\n\t\t\tOnly applied when [member particle_flag_disable_z] or [member particle_flag_rotate_y] are [code]true[/code] or the [BaseMaterial3D] being used to draw the particle is using [constant BaseMaterial3D.BILLBOARD_PARTICLES]."},{"name":"angle_min","type":"float","description":"Minimum equivalent of [member angle_max]."},{"name":"angular_velocity_curve","type":"Texture2D","description":"Each particle's angular velocity (rotation speed) will vary along this [CurveTexture] over its lifetime."},{"name":"angular_velocity_max","type":"float","description":"Maximum initial angular velocity (rotation speed) applied to each particle in [i]degrees[/i] per second.\n\t\t\tOnly applied when [member particle_flag_disable_z] or [member particle_flag_rotate_y] are [code]true[/code] or the [BaseMaterial3D] being used to draw the particle is using [constant BaseMaterial3D.BILLBOARD_PARTICLES]."},{"name":"angular_velocity_min","type":"float","description":"Minimum equivalent of [member angular_velocity_max]."},{"name":"anim_offset_curve","type":"Texture2D","description":"Each particle's animation offset will vary along this [CurveTexture]."},{"name":"anim_offset_max","type":"float","description":"Maximum animation offset that corresponds to frame index in the texture. [code]0[/code] is the first frame, [code]1[/code] is the last one. See [member CanvasItemMaterial.particles_animation]."},{"name":"anim_offset_min","type":"float","description":"Minimum equivalent of [member anim_offset_max]."},{"name":"anim_speed_curve","type":"Texture2D","description":"Each particle's animation speed will vary along this [CurveTexture]."},{"name":"anim_speed_max","type":"float","description":"Maximum particle animation speed. Animation speed of [code]1[/code] means that the particles will make full [code]0[/code] to [code]1[/code] offset cycle during lifetime, [code]2[/code] means [code]2[/code] cycles etc.\n\t\t\tWith animation speed greater than [code]1[/code], remember to enable [member CanvasItemMaterial.particles_anim_loop] property if you want the animation to repeat."},{"name":"anim_speed_min","type":"float","description":"Minimum equivalent of [member anim_speed_max]."},{"name":"attractor_interaction_enabled","type":"bool","description":"If [code]true[/code], interaction with particle attractors is enabled. In 3D, attraction only occurs within the area defined by the [GPUParticles3D] node's [member GPUParticles3D.visibility_aabb]."},{"name":"collision_bounce","type":"float","description":"The particles' bounciness. Values range from [code]0[/code] (no bounce) to [code]1[/code] (full bounciness). Only effective if [member collision_mode] is [constant COLLISION_RIGID]."},{"name":"collision_friction","type":"float","description":"The particles' friction. Values range from [code]0[/code] (frictionless) to [code]1[/code] (maximum friction). Only effective if [member collision_mode] is [constant COLLISION_RIGID]."},{"name":"collision_mode","type":"int","description":"The particles' collision mode.\n\t\t\t[b]Note:[/b] 3D Particles can only collide with [GPUParticlesCollision3D] nodes, not [PhysicsBody3D] nodes. To make particles collide with various objects, you can add [GPUParticlesCollision3D] nodes as children of [PhysicsBody3D] nodes. In 3D, collisions only occur within the area defined by the [GPUParticles3D] node's [member GPUParticles3D.visibility_aabb].\n\t\t\t[b]Note:[/b] 2D Particles can only collide with [LightOccluder2D] nodes, not [PhysicsBody2D] nodes."},{"name":"collision_use_scale","type":"bool","description":"If [code]true[/code], [member GPUParticles3D.collision_base_size] is multiplied by the particle's effective scale (see [member scale_min], [member scale_max], [member scale_curve], and [member scale_over_velocity_curve])."},{"name":"color","type":"Color","description":"Each particle's initial color. If the [GPUParticles2D]'s [code]texture[/code] is defined, it will be multiplied by this color.\n\t\t\t[b]Note:[/b] [member color] multiplies the particle mesh's vertex colors. To have a visible effect on a [BaseMaterial3D], [member BaseMaterial3D.vertex_color_use_as_albedo] [i]must[/i] be [code]true[/code]. For a [ShaderMaterial], [code]ALBEDO *= COLOR.rgb;[/code] must be inserted in the shader's [code]fragment()[/code] function. Otherwise, [member color] will have no visible effect."},{"name":"color_initial_ramp","type":"Texture2D","description":"Each particle's initial color will vary along this [GradientTexture1D] (multiplied with [member color]).\n\t\t\t[b]Note:[/b] [member color_initial_ramp] multiplies the particle mesh's vertex colors. To have a visible effect on a [BaseMaterial3D], [member BaseMaterial3D.vertex_color_use_as_albedo] [i]must[/i] be [code]true[/code]. For a [ShaderMaterial], [code]ALBEDO *= COLOR.rgb;[/code] must be inserted in the shader's [code]fragment()[/code] function. Otherwise, [member color_initial_ramp] will have no visible effect."},{"name":"color_ramp","type":"Texture2D","description":"Each particle's color will vary along this [GradientTexture1D] over its lifetime (multiplied with [member color]).\n\t\t\t[b]Note:[/b] [member color_ramp] multiplies the particle mesh's vertex colors. To have a visible effect on a [BaseMaterial3D], [member BaseMaterial3D.vertex_color_use_as_albedo] [i]must[/i] be [code]true[/code]. For a [ShaderMaterial], [code]ALBEDO *= COLOR.rgb;[/code] must be inserted in the shader's [code]fragment()[/code] function. Otherwise, [member color_ramp] will have no visible effect."},{"name":"damping_curve","type":"Texture2D","description":"Damping will vary along this [CurveTexture]."},{"name":"damping_max","type":"float","description":"The maximum rate at which particles lose velocity. For example value of [code]100[/code] means that the particle will go from [code]100[/code] velocity to [code]0[/code] in [code]1[/code] second."},{"name":"damping_min","type":"float","description":"Minimum equivalent of [member damping_max]."},{"name":"direction","type":"Vector3","description":"Unit vector specifying the particles' emission direction."},{"name":"directional_velocity_curve","type":"Texture2D","description":"A curve that specifies the velocity along each of the axes of the particle system along its lifetime.\n\t\t\t[b]Note:[/b] Animated velocities will not be affected by damping, use [member velocity_limit_curve] instead."},{"name":"directional_velocity_max","type":"float","description":"Maximum directional velocity value, which is multiplied by [member directional_velocity_curve].\n\t\t\t[b]Note:[/b] Animated velocities will not be affected by damping, use [member velocity_limit_curve] instead."},{"name":"directional_velocity_min","type":"float","description":"Minimum directional velocity value, which is multiplied by [member directional_velocity_curve].\n\t\t\t[b]Note:[/b] Animated velocities will not be affected by damping, use [member velocity_limit_curve] instead."},{"name":"emission_box_extents","type":"Vector3","description":"The box's extents if [member emission_shape] is set to [constant EMISSION_SHAPE_BOX].\n\t\t\t[b]Note:[/b] [member emission_box_extents] starts from the center point and applies the X, Y, and Z values in both directions. The size is twice the area of the extents."},{"name":"emission_color_texture","type":"Texture2D","description":"Particle color will be modulated by color determined by sampling this texture at the same point as the [member emission_point_texture].\n\t\t\t[b]Note:[/b] [member emission_color_texture] multiplies the particle mesh's vertex colors. To have a visible effect on a [BaseMaterial3D], [member BaseMaterial3D.vertex_color_use_as_albedo] [i]must[/i] be [code]true[/code]. For a [ShaderMaterial], [code]ALBEDO *= COLOR.rgb;[/code] must be inserted in the shader's [code]fragment()[/code] function. Otherwise, [member emission_color_texture] will have no visible effect."},{"name":"emission_curve","type":"Texture2D","description":"Each particle's color will be multiplied by this [CurveTexture] over its lifetime.\n\t\t\t[b]Note:[/b] [member emission_curve] multiplies the particle mesh's vertex colors. To have a visible effect on a [BaseMaterial3D], [member BaseMaterial3D.vertex_color_use_as_albedo] [i]must[/i] be [code]true[/code]. For a [ShaderMaterial], [code]ALBEDO *= COLOR.rgb;[/code] must be inserted in the shader's [code]fragment()[/code] function. Otherwise, [member emission_curve] will have no visible effect."},{"name":"emission_normal_texture","type":"Texture2D","description":"Particle velocity and rotation will be set by sampling this texture at the same point as the [member emission_point_texture]. Used only in [constant EMISSION_SHAPE_DIRECTED_POINTS]. Can be created automatically from mesh or node by selecting \"Create Emission Points from Mesh/Node\" under the \"Particles\" tool in the toolbar."},{"name":"emission_point_count","type":"int","description":"The number of emission points if [member emission_shape] is set to [constant EMISSION_SHAPE_POINTS] or [constant EMISSION_SHAPE_DIRECTED_POINTS]."},{"name":"emission_point_texture","type":"Texture2D","description":"Particles will be emitted at positions determined by sampling this texture at a random position. Used with [constant EMISSION_SHAPE_POINTS] and [constant EMISSION_SHAPE_DIRECTED_POINTS]. Can be created automatically from mesh or node by selecting \"Create Emission Points from Mesh/Node\" under the \"Particles\" tool in the toolbar."},{"name":"emission_ring_axis","type":"Vector3","description":"The axis of the ring when using the emitter [constant EMISSION_SHAPE_RING]."},{"name":"emission_ring_cone_angle","type":"float","description":"The angle of the cone when using the emitter [constant EMISSION_SHAPE_RING]. The default angle of 90 degrees results in a ring, while an angle of 0 degrees results in a cone. Intermediate values will result in a ring where one end is larger than the other.\n\t\t\t[b]Note:[/b] Depending on [member emission_ring_height], the angle may be clamped if the ring's end is reached to form a perfect cone."},{"name":"emission_ring_height","type":"float","description":"The height of the ring when using the emitter [constant EMISSION_SHAPE_RING]."},{"name":"emission_ring_inner_radius","type":"float","description":"The inner radius of the ring when using the emitter [constant EMISSION_SHAPE_RING]."},{"name":"emission_ring_radius","type":"float","description":"The radius of the ring when using the emitter [constant EMISSION_SHAPE_RING]."},{"name":"emission_shape","type":"int","description":"Particles will be emitted inside this region. Use [enum EmissionShape] constants for values."},{"name":"emission_shape_offset","type":"Vector3","description":"The offset for the [member emission_shape], in local space."},{"name":"emission_shape_scale","type":"Vector3","description":"The scale of the [member emission_shape], in local space."},{"name":"emission_sphere_radius","type":"float","description":"The sphere's radius if [member emission_shape] is set to [constant EMISSION_SHAPE_SPHERE]."},{"name":"flatness","type":"float","description":"Amount of [member spread] along the Y axis."},{"name":"gravity","type":"Vector3","description":"Gravity applied to every particle."},{"name":"hue_variation_curve","type":"Texture2D","description":"Each particle's hue will vary along this [CurveTexture]."},{"name":"hue_variation_max","type":"float","description":"Maximum initial hue variation applied to each particle. It will shift the particle color's hue."},{"name":"hue_variation_min","type":"float","description":"Minimum equivalent of [member hue_variation_max]."},{"name":"inherit_velocity_ratio","type":"float","description":"Percentage of the velocity of the respective [GPUParticles2D] or [GPUParticles3D] inherited by each particle when spawning."},{"name":"initial_velocity_max","type":"float","description":"Maximum initial velocity magnitude for each particle. Direction comes from [member direction] and [member spread]."},{"name":"initial_velocity_min","type":"float","description":"Minimum equivalent of [member initial_velocity_max]."},{"name":"lifetime_randomness","type":"float","description":"Particle lifetime randomness ratio. The equation for the lifetime of a particle is [code]lifetime * (1.0 - randf() * lifetime_randomness)[/code]. For example, a [member lifetime_randomness] of [code]0.4[/code] scales the lifetime between [code]0.6[/code] to [code]1.0[/code] of its original value."},{"name":"linear_accel_curve","type":"Texture2D","description":"Each particle's linear acceleration will vary along this [CurveTexture]."},{"name":"linear_accel_max","type":"float","description":"Maximum linear acceleration applied to each particle in the direction of motion."},{"name":"linear_accel_min","type":"float","description":"Minimum equivalent of [member linear_accel_max]."},{"name":"orbit_velocity_curve","type":"Texture2D","description":"Each particle's orbital velocity will vary along this [CurveTexture].\n\t\t\t[b]Note:[/b] For 3D orbital velocity, use a [CurveXYZTexture].\n\t\t\t[b]Note:[/b] Animated velocities will not be affected by damping, use [member velocity_limit_curve] instead."},{"name":"orbit_velocity_max","type":"float","description":"Maximum orbital velocity applied to each particle. Makes the particles circle around origin. Specified in number of full rotations around origin per second.\n\t\t\t[b]Note:[/b] Animated velocities will not be affected by damping, use [member velocity_limit_curve] instead."},{"name":"orbit_velocity_min","type":"float","description":"Minimum equivalent of [member orbit_velocity_max].\n\t\t\t[b]Note:[/b] Animated velocities will not be affected by damping, use [member velocity_limit_curve] instead."},{"name":"particle_flag_align_y","type":"bool","description":"Align Y axis of particle with the direction of its velocity."},{"name":"particle_flag_damping_as_friction","type":"bool","description":"Changes the behavior of the damping properties from a linear deceleration to a deceleration based on speed percentage."},{"name":"particle_flag_disable_z","type":"bool","description":"If [code]true[/code], particles will not move on the z axis."},{"name":"particle_flag_rotate_y","type":"bool","description":"If [code]true[/code], particles rotate around Y axis by [member angle_min]."},{"name":"radial_accel_curve","type":"Texture2D","description":"Each particle's radial acceleration will vary along this [CurveTexture]."},{"name":"radial_accel_max","type":"float","description":"Maximum radial acceleration applied to each particle. Makes particle accelerate away from the origin or towards it if negative."},{"name":"radial_accel_min","type":"float","description":"Minimum equivalent of [member radial_accel_max]."},{"name":"radial_velocity_curve","type":"Texture2D","description":"A [CurveTexture] that defines the velocity over the particle's lifetime away (or toward) the [member velocity_pivot].\n\t\t\t[b]Note:[/b] Animated velocities will not be affected by damping, use [member velocity_limit_curve] instead."},{"name":"radial_velocity_max","type":"float","description":"Maximum radial velocity applied to each particle. Makes particles move away from the [member velocity_pivot], or toward it if negative.\n\t\t\t[b]Note:[/b] Animated velocities will not be affected by damping, use [member velocity_limit_curve] instead."},{"name":"radial_velocity_min","type":"float","description":"Minimum radial velocity applied to each particle. Makes particles move away from the [member velocity_pivot], or toward it if negative.\n\t\t\t[b]Note:[/b] Animated velocities will not be affected by damping, use [member velocity_limit_curve] instead."},{"name":"scale_curve","type":"Texture2D","description":"Each particle's scale will vary along this [CurveTexture] over its lifetime. If a [CurveXYZTexture] is supplied instead, the scale will be separated per-axis."},{"name":"scale_max","type":"float","description":"Maximum initial scale applied to each particle."},{"name":"scale_min","type":"float","description":"Minimum equivalent of [member scale_max]."},{"name":"scale_over_velocity_curve","type":"Texture2D","description":"Either a [CurveTexture] or a [CurveXYZTexture] that scales each particle based on its velocity."},{"name":"scale_over_velocity_max","type":"float","description":"Maximum velocity value reference for [member scale_over_velocity_curve].\n\t\t\t[member scale_over_velocity_curve] will be interpolated between [member scale_over_velocity_min] and [member scale_over_velocity_max]."},{"name":"scale_over_velocity_min","type":"float","description":"Minimum velocity value reference for [member scale_over_velocity_curve].\n\t\t\t[member scale_over_velocity_curve] will be interpolated between [member scale_over_velocity_min] and [member scale_over_velocity_max]."},{"name":"spread","type":"float","description":"Each particle's initial direction range from [code]+spread[/code] to [code]-spread[/code] degrees."},{"name":"sub_emitter_amount_at_collision","type":"int","description":"The amount of particles to spawn from the subemitter node when a collision occurs. When combined with [constant COLLISION_HIDE_ON_CONTACT] on the main particles material, this can be used to achieve effects such as raindrops hitting the ground.\n\t\t\t[b]Note:[/b] This value shouldn't exceed [member GPUParticles2D.amount] or [member GPUParticles3D.amount] defined on the [i]subemitter node[/i] (not the main node), relative to the subemitter's particle lifetime. If the number of particles is exceeded, no new particles will spawn from the subemitter until enough particles have expired."},{"name":"sub_emitter_amount_at_end","type":"int","description":"The amount of particles to spawn from the subemitter node when the particle expires.\n\t\t\t[b]Note:[/b] This value shouldn't exceed [member GPUParticles2D.amount] or [member GPUParticles3D.amount] defined on the [i]subemitter node[/i] (not the main node), relative to the subemitter's particle lifetime. If the number of particles is exceeded, no new particles will spawn from the subemitter until enough particles have expired."},{"name":"sub_emitter_amount_at_start","type":"int","description":"The amount of particles to spawn from the subemitter node when the particle spawns.\n\t\t\t[b]Note:[/b] This value shouldn't exceed [member GPUParticles2D.amount] or [member GPUParticles3D.amount] defined on the [i]subemitter node[/i] (not the main node), relative to the subemitter's particle lifetime. If the number of particles is exceeded, no new particles will spawn from the subemitter until enough particles have expired."},{"name":"sub_emitter_frequency","type":"float","description":"The frequency at which particles should be emitted from the subemitter node. One particle will be spawned every [member sub_emitter_frequency] seconds.\n\t\t\t[b]Note:[/b] This value shouldn't exceed [member GPUParticles2D.amount] or [member GPUParticles3D.amount] defined on the [i]subemitter node[/i] (not the main node), relative to the subemitter's particle lifetime. If the number of particles is exceeded, no new particles will spawn from the subemitter until enough particles have expired."},{"name":"sub_emitter_keep_velocity","type":"bool","description":"If [code]true[/code], the subemitter inherits the parent particle's velocity when it spawns."},{"name":"sub_emitter_mode","type":"int","description":"The particle subemitter mode (see [member GPUParticles2D.sub_emitter] and [member GPUParticles3D.sub_emitter])."},{"name":"tangential_accel_curve","type":"Texture2D","description":"Each particle's tangential acceleration will vary along this [CurveTexture]."},{"name":"tangential_accel_max","type":"float","description":"Maximum tangential acceleration applied to each particle. Tangential acceleration is perpendicular to the particle's velocity giving the particles a swirling motion."},{"name":"tangential_accel_min","type":"float","description":"Minimum equivalent of [member tangential_accel_max]."},{"name":"turbulence_enabled","type":"bool","description":"If [code]true[/code], enables turbulence for the particle system. Turbulence can be used to vary particle movement according to its position (based on a 3D noise pattern). In 3D, [GPUParticlesAttractorVectorField3D] with [NoiseTexture3D] can be used as an alternative to turbulence that works in world space and with multiple particle systems reacting in the same way.\n\t\t\t[b]Note:[/b] Enabling turbulence has a high performance cost on the GPU. Only enable turbulence on a few particle systems at once at most, and consider disabling it when targeting mobile/web platforms."},{"name":"turbulence_influence_max","type":"float","description":"Maximum turbulence influence on each particle.\n\t\t\tThe actual amount of turbulence influence on each particle is calculated as a random value between [member turbulence_influence_min] and [member turbulence_influence_max] and multiplied by the amount of turbulence influence from [member turbulence_influence_over_life]."},{"name":"turbulence_influence_min","type":"float","description":"Minimum turbulence influence on each particle.\n\t\t\tThe actual amount of turbulence influence on each particle is calculated as a random value between [member turbulence_influence_min] and [member turbulence_influence_max] and multiplied by the amount of turbulence influence from [member turbulence_influence_over_life]."},{"name":"turbulence_influence_over_life","type":"Texture2D","description":"Each particle's amount of turbulence will be influenced along this [CurveTexture] over its life time."},{"name":"turbulence_initial_displacement_max","type":"float","description":"Maximum displacement of each particle's spawn position by the turbulence.\n\t\t\tThe actual amount of displacement will be a factor of the underlying turbulence multiplied by a random value between [member turbulence_initial_displacement_min] and [member turbulence_initial_displacement_max]."},{"name":"turbulence_initial_displacement_min","type":"float","description":"Minimum displacement of each particle's spawn position by the turbulence.\n\t\t\tThe actual amount of displacement will be a factor of the underlying turbulence multiplied by a random value between [member turbulence_initial_displacement_min] and [member turbulence_initial_displacement_max]."},{"name":"turbulence_noise_scale","type":"float","description":"This value controls the overall scale/frequency of the turbulence noise pattern.\n\t\t\tA small scale will result in smaller features with more detail while a high scale will result in smoother noise with larger features."},{"name":"turbulence_noise_speed","type":"Vector3","description":"A scrolling velocity for the turbulence field. This sets a directional trend for the pattern to move in over time.\n\t\t\tThe default value of [code]Vector3(0, 0, 0)[/code] turns off the scrolling."},{"name":"turbulence_noise_speed_random","type":"float","description":"The in-place rate of change of the turbulence field. This defines how quickly the noise pattern varies over time.\n\t\t\tA value of 0.0 will result in a fixed pattern."},{"name":"turbulence_noise_strength","type":"float","description":"The turbulence noise strength. Increasing this will result in a stronger, more contrasting, flow pattern."},{"name":"velocity_limit_curve","type":"Texture2D","description":"A [CurveTexture] that defines the maximum velocity of a particle during its lifetime."},{"name":"velocity_pivot","type":"Vector3","description":"A pivot point used to calculate radial and orbital velocity of particles."}],"methods":[{"name":"get_param","signature":"get_param(param: int) -> Vector2","description":"Returns the minimum and maximum values of the given [param param] as a vector.\n\t\t\t\tThe x component of the returned vector corresponds to minimum and the y component corresponds to maximum.","returnType":"Vector2"},{"name":"get_param_max","signature":"get_param_max(param: int) -> float","description":"Returns the maximum value range for the given parameter.","returnType":"float"},{"name":"get_param_min","signature":"get_param_min(param: int) -> float","description":"Returns the minimum value range for the given parameter.","returnType":"float"},{"name":"get_param_texture","signature":"get_param_texture(param: int) -> Texture2D","description":"Returns the  used by the specified parameter.","returnType":"Texture2D"},{"name":"get_particle_flag","signature":"get_particle_flag(particle_flag: int) -> bool","description":"Returns true if the specified particle flag is enabled. See [enum ParticleFlags] for options.","returnType":"bool"},{"name":"set_param","signature":"set_param(param: int, value: Vector2) -> void","description":"Sets the minimum and maximum values of the given [param param].\n\t\t\t\tThe x component of the argument vector corresponds to minimum and the y component corresponds to maximum.","returnType":"void"},{"name":"set_param_max","signature":"set_param_max(param: int, value: float) -> void","description":"Sets the maximum value range for the given parameter.","returnType":"void"},{"name":"set_param_min","signature":"set_param_min(param: int, value: float) -> void","description":"Sets the minimum value range for the given parameter.","returnType":"void"},{"name":"set_param_texture","signature":"set_param_texture(param: int, texture: Texture2D) -> void","description":"Sets the  for the specified [enum Parameter].","returnType":"void"},{"name":"set_particle_flag","signature":"set_particle_flag(particle_flag: int, enable: bool) -> void","description":"If true, enables the specified particle flag. See [enum ParticleFlags] for options.","returnType":"void"}],"signals":[{"name":"emission_shape_changed","description":"Emitted when this material's emission shape is changed in any way. This includes changes to [member emission_shape], [member emission_shape_scale], or [member emission_sphere_radius], and any other property that affects the emission shape's offset, size, scale, or orientation.\n\t\t\t\t[b]Note:[/b] This signal is only emitted inside the editor for performance reasons."}]},"Path2D":{"name":"Path2D","description":"Contains a  path for  nodes to follow.","inherits":"Node2D","properties":[{"name":"curve","type":"Curve2D","description":"A [Curve2D] describing the path."}],"methods":[],"signals":[]},"Path3D":{"name":"Path3D","description":"Contains a  path for  nodes to follow.","inherits":"Node3D","properties":[{"name":"curve","type":"Curve3D","description":"A [Curve3D] describing the path."}],"methods":[],"signals":[{"name":"curve_changed","description":"Emitted when the [member curve] changes."}]},"PathFollow2D":{"name":"PathFollow2D","description":"Point sampler for a .","inherits":"Node2D","properties":[{"name":"cubic_interp","type":"bool","description":"If [code]true[/code], the position between two cached points is interpolated cubically, and linearly otherwise.\n\t\t\tThe points along the [Curve2D] of the [Path2D] are precomputed before use, for faster calculations. The point at the requested offset is then calculated interpolating between two adjacent cached points. This may present a problem if the curve makes sharp turns, as the cached points may not follow the curve closely enough.\n\t\t\tThere are two answers to this problem: either increase the number of cached points and increase memory consumption, or make a cubic interpolation between two points at the cost of (slightly) slower calculations."},{"name":"h_offset","type":"float","description":"The node's offset along the curve."},{"name":"loop","type":"bool","description":"If [code]true[/code], any offset outside the path's length will wrap around, instead of stopping at the ends. Use it for cyclic paths."},{"name":"progress","type":"float","description":"The distance along the path, in pixels. Changing this value sets this node's position to a point within the path."},{"name":"progress_ratio","type":"float","description":"The distance along the path as a number in the range 0.0 (for the first vertex) to 1.0 (for the last). This is just another way of expressing the progress within the path, as the offset supplied is multiplied internally by the path's length.\n\t\t\tIt can be set or get only if the [PathFollow2D] is the child of a [Path2D] which is part of the scene tree, and that this [Path2D] has a [Curve2D] with a non-zero length. Otherwise, trying to set this field will print an error, and getting this field will return [code]0.0[/code]."},{"name":"rotates","type":"bool","description":"If [code]true[/code], this node rotates to follow the path, with the +X direction facing forward on the path."},{"name":"v_offset","type":"float","description":"The node's offset perpendicular to the curve."}],"methods":[],"signals":[]},"PathFollow3D":{"name":"PathFollow3D","description":"Point sampler for a .","inherits":"Node3D","properties":[{"name":"cubic_interp","type":"bool","description":"If [code]true[/code], the position between two cached points is interpolated cubically, and linearly otherwise.\n\t\t\tThe points along the [Curve3D] of the [Path3D] are precomputed before use, for faster calculations. The point at the requested offset is then calculated interpolating between two adjacent cached points. This may present a problem if the curve makes sharp turns, as the cached points may not follow the curve closely enough.\n\t\t\tThere are two answers to this problem: either increase the number of cached points and increase memory consumption, or make a cubic interpolation between two points at the cost of (slightly) slower calculations."},{"name":"h_offset","type":"float","description":"The node's offset along the curve."},{"name":"loop","type":"bool","description":"If [code]true[/code], any offset outside the path's length will wrap around, instead of stopping at the ends. Use it for cyclic paths."},{"name":"progress","type":"float","description":"The distance from the first vertex, measured in 3D units along the path. Changing this value sets this node's position to a point within the path."},{"name":"progress_ratio","type":"float","description":"The distance from the first vertex, considering 0.0 as the first vertex and 1.0 as the last. This is just another way of expressing the progress within the path, as the progress supplied is multiplied internally by the path's length.\n\t\t\tIt can be set or get only if the [PathFollow3D] is the child of a [Path3D] which is part of the scene tree, and that this [Path3D] has a [Curve3D] with a non-zero length. Otherwise, trying to set this field will print an error, and getting this field will return [code]0.0[/code]."},{"name":"rotation_mode","type":"int","description":"Allows or forbids rotation on one or more axes, depending on the [enum RotationMode] constants being used."},{"name":"tilt_enabled","type":"bool","description":"If [code]true[/code], the tilt property of [Curve3D] takes effect."},{"name":"use_model_front","type":"bool","description":"If [code]true[/code], the node moves on the travel path with orienting the +Z axis as forward. See also [constant Vector3.FORWARD] and [constant Vector3.MODEL_FRONT]."},{"name":"v_offset","type":"float","description":"The node's offset perpendicular to the curve."}],"methods":[{"name":"correct_posture","signature":"correct_posture(transform: Transform3D, rotation_mode: int) -> Transform3D","description":"Correct the [param transform]. [param rotation_mode] implicitly specifies how posture (forward, up and sideway direction) is calculated.","returnType":"Transform3D"}],"signals":[]},"Performance":{"name":"Performance","description":"Exposes performance-related data.","inherits":"Object","properties":[],"methods":[{"name":"add_custom_monitor","signature":"add_custom_monitor(id: StringName, callable: Callable, arguments: Array) -> void","description":"Adds a custom monitor with the name [param id]. You can specify the category of the monitor using slash delimiters in [param id] (for example: \"Game/NumberOfNPCs\"). If there is more than one slash delimiter, then the default category is used. The default category is \"Custom\". Prints an error if given [param id] is already present.\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tfunc _ready():\n\t\t\t\t    var monitor_value = Callable(self, \"get_monitor_value\")\n\n\t\t\t\t    # Adds monitor with name \"MyName\" to category \"MyCategory\".\n\t\t\t\t    Performance.add_custom_monitor(\"MyCategory/MyMonitor\", monitor_value)\n\n\t\t\t\t    # Adds monitor with name \"MyName\" to category \"Custom\".\n\t\t\t\t    # Note: \"MyCategory/MyMonitor\" and \"MyMonitor\" have same name but different IDs, so the code is valid.\n\t\t\t\t    Performance.add_custom_monitor(\"MyMonitor\", monitor_value)\n\n\t\t\t\t    # Adds monitor with name \"MyName\" to category \"Custom\".\n\t\t\t\t    # Note: \"MyMonitor\" and \"Custom/MyMonitor\" have same name and same category but different IDs, so the code is valid.\n\t\t\t\t    Performance.add_custom_monitor(\"Custom/MyMonitor\", monitor_value)\n\n\t\t\t\t    # Adds monitor with name \"MyCategoryOne/MyCategoryTwo/MyMonitor\" to category \"Custom\".\n\t\t\t\t    Performance.add_custom_monitor(\"MyCategoryOne/MyCategoryTwo/MyMonitor\", monitor_value)\n\n\t\t\t\tfunc get_monitor_value():\n\t\t\t\t    return randi() % 25\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tpublic override void _Ready()\n\t\t\t\t{\n\t\t\t\t    var monitorValue = new Callable(this, MethodName.GetMonitorValue);\n\n\t\t\t\t    // Adds monitor with name \"MyName\" to category \"MyCategory\".\n\t\t\t\t    Performance.AddCustomMonitor(\"MyCategory/MyMonitor\", monitorValue);\n\t\t\t\t    // Adds monitor with name \"MyName\" to category \"Custom\".\n\t\t\t\t    // Note: \"MyCategory/MyMonitor\" and \"MyMonitor\" have same name but different ids so the code is valid.\n\t\t\t\t    Performance.AddCustomMonitor(\"MyMonitor\", monitorValue);\n\n\t\t\t\t    // Adds monitor with name \"MyName\" to category \"Custom\".\n\t\t\t\t    // Note: \"MyMonitor\" and \"Custom/MyMonitor\" have same name and same category but different ids so the code is valid.\n\t\t\t\t    Performance.AddCustomMonitor(\"Custom/MyMonitor\", monitorValue);\n\n\t\t\t\t    // Adds monitor with name \"MyCategoryOne/MyCategoryTwo/MyMonitor\" to category \"Custom\".\n\t\t\t\t    Performance.AddCustomMonitor(\"MyCategoryOne/MyCategoryTwo/MyMonitor\", monitorValue);\n\t\t\t\t}\n\n\t\t\t\tpublic int GetMonitorValue()\n\t\t\t\t{\n\t\t\t\t    return GD.Randi() % 25;\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tThe debugger calls the callable to get the value of custom monitor. The callable must return a zero or positive integer or floating-point number.\n\t\t\t\tCallables are called with arguments supplied in argument array.","returnType":"void"},{"name":"get_custom_monitor","signature":"get_custom_monitor(id: StringName) -> Variant","description":"Returns the value of custom monitor with given [param id]. The callable is called to get the value of custom monitor. See also [method has_custom_monitor]. Prints an error if the given [param id] is absent.","returnType":"Variant"},{"name":"get_custom_monitor_names","signature":"get_custom_monitor_names() -> StringName[]","description":"Returns the names of active custom monitors in an .","returnType":"StringName[]"},{"name":"get_monitor","signature":"get_monitor(monitor: int) -> float","description":"Returns the value of one of the available built-in monitors. You should provide one of the [enum Monitor] constants as the argument, like this:\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tprint(Performance.get_monitor(Performance.TIME_FPS)) # Prints the FPS to the console.\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tGD.Print(Performance.GetMonitor(Performance.Monitor.TimeFps)); // Prints the FPS to the console.\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tSee [method get_custom_monitor] to query custom performance monitors' values.","returnType":"float"},{"name":"get_monitor_modification_time","signature":"get_monitor_modification_time() -> int","description":"Returns the last tick in which custom monitor was added/removed (in microseconds since the engine started). This is set to [method Time.get_ticks_usec] when the monitor is updated.","returnType":"int"},{"name":"has_custom_monitor","signature":"has_custom_monitor(id: StringName) -> bool","description":"Returns true if custom monitor with the given [param id] is present, false otherwise.","returnType":"bool"},{"name":"remove_custom_monitor","signature":"remove_custom_monitor(id: StringName) -> void","description":"Removes the custom monitor with given [param id]. Prints an error if the given [param id] is already absent.","returnType":"void"}],"signals":[]},"PhysicalBone2D":{"name":"PhysicalBone2D","description":"A -derived node used to make s in a  react to physics.","inherits":"RigidBody2D","properties":[{"name":"auto_configure_joint","type":"bool","description":"If [code]true[/code], the [PhysicalBone2D] will automatically configure the first [Joint2D] child node. The automatic configuration is limited to setting up the node properties and positioning the [Joint2D]."},{"name":"bone2d_index","type":"int","description":"The index of the [Bone2D] that this [PhysicalBone2D] should simulate."},{"name":"bone2d_nodepath","type":"NodePath","description":"The [NodePath] to the [Bone2D] that this [PhysicalBone2D] should simulate."},{"name":"follow_bone_when_simulating","type":"bool","description":"If [code]true[/code], the [PhysicalBone2D] will keep the transform of the bone it is bound to when simulating physics."},{"name":"simulate_physics","type":"bool","description":"If [code]true[/code], the [PhysicalBone2D] will start simulating using physics. If [code]false[/code], the [PhysicalBone2D] will follow the transform of the [Bone2D] node.\n\t\t\t[b]Note:[/b] To have the [Bone2D]s visually follow the [PhysicalBone2D], use a [SkeletonModification2DPhysicalBones] modification on the [Skeleton2D] node with the [Bone2D] nodes."}],"methods":[{"name":"get_joint","signature":"get_joint() -> Joint2D","description":"Returns the first  child node, if one exists. This is mainly a helper function to make it easier to get the  that the  is autoconfiguring.","returnType":"Joint2D"},{"name":"is_simulating_physics","signature":"is_simulating_physics() -> bool","description":"Returns a boolean that indicates whether the  is running and simulating using the Godot 2D physics engine. When true, the PhysicalBone2D node is using physics.","returnType":"bool"}],"signals":[]},"PhysicalBone3D":{"name":"PhysicalBone3D","description":"A physics body used to make bones in a  react to physics.","inherits":"PhysicsBody3D","properties":[{"name":"angular_damp","type":"float","description":"Damps the body's rotation. By default, the body will use the [member ProjectSettings.physics/3d/default_angular_damp] project setting or any value override set by an [Area3D] the body is in. Depending on [member angular_damp_mode], you can set [member angular_damp] to be added to or to replace the body's damping value.\n\t\t\tSee [member ProjectSettings.physics/3d/default_angular_damp] for more details about damping."},{"name":"angular_damp_mode","type":"int","description":"Defines how [member angular_damp] is applied. See [enum DampMode] for possible values."},{"name":"angular_velocity","type":"Vector3","description":"The PhysicalBone3D's rotational velocity in [i]radians[/i] per second."},{"name":"body_offset","type":"Transform3D","description":"Sets the body's transform."},{"name":"bounce","type":"float","description":"The body's bounciness. Values range from [code]0[/code] (no bounce) to [code]1[/code] (full bounciness).\n\t\t\t[b]Note:[/b] Even with [member bounce] set to [code]1.0[/code], some energy will be lost over time due to linear and angular damping. To have a [PhysicalBone3D] that preserves all its energy over time, set [member bounce] to [code]1.0[/code], [member linear_damp_mode] to [constant DAMP_MODE_REPLACE], [member linear_damp] to [code]0.0[/code], [member angular_damp_mode] to [constant DAMP_MODE_REPLACE], and [member angular_damp] to [code]0.0[/code]."},{"name":"can_sleep","type":"bool","description":"If [code]true[/code], the body is deactivated when there is no movement, so it will not take part in the simulation until it is awakened by an external force."},{"name":"custom_integrator","type":"bool","description":"If [code]true[/code], the standard force integration (like gravity or damping) will be disabled for this body. Other than collision response, the body will only move as determined by the [method _integrate_forces] method, if that virtual method is overridden.\n\t\t\tSetting this property will call the method [method PhysicsServer3D.body_set_omit_force_integration] internally."},{"name":"friction","type":"float","description":"The body's friction, from [code]0[/code] (frictionless) to [code]1[/code] (max friction)."},{"name":"gravity_scale","type":"float","description":"This is multiplied by [member ProjectSettings.physics/3d/default_gravity] to produce this body's gravity. For example, a value of [code]1.0[/code] will apply normal gravity, [code]2.0[/code] will apply double the gravity, and [code]0.5[/code] will apply half the gravity to this body."},{"name":"joint_offset","type":"Transform3D","description":"Sets the joint's transform."},{"name":"joint_rotation","type":"Vector3","description":"Sets the joint's rotation in radians."},{"name":"joint_type","type":"int","description":"Sets the joint type. See [enum JointType] for possible values."},{"name":"linear_damp","type":"float","description":"Damps the body's movement. By default, the body will use [member ProjectSettings.physics/3d/default_linear_damp] or any value override set by an [Area3D] the body is in. Depending on [member linear_damp_mode], [member linear_damp] may be added to or replace the body's damping value.\n\t\t\tSee [member ProjectSettings.physics/3d/default_linear_damp] for more details about damping."},{"name":"linear_damp_mode","type":"int","description":"Defines how [member linear_damp] is applied. See [enum DampMode] for possible values."},{"name":"linear_velocity","type":"Vector3","description":"The body's linear velocity in units per second. Can be used sporadically, but [b]don't set this every frame[/b], because physics may run in another thread and runs at a different granularity. Use [method _integrate_forces] as your process loop for precise control of the body state."},{"name":"mass","type":"float","description":"The body's mass."}],"methods":[{"name":"_integrate_forces","signature":"_integrate_forces(state: PhysicsDirectBodyState3D) -> void","description":"Called during physics processing, allowing you to read and safely modify the simulation state for the object. By default, it is called before the standard force integration, but the [member custom_integrator] property allows you to disable the standard force integration and do fully custom force integration for a body.","returnType":"void"},{"name":"apply_central_impulse","signature":"apply_central_impulse(impulse: Vector3) -> void","description":"Applies a directional impulse without affecting rotation.\n\t\t\t\tAn impulse is time-independent! Applying an impulse every frame would result in a framerate-dependent force. For this reason, it should only be used when simulating one-time impacts (use the \"_integrate_forces\" functions otherwise).\n\t\t\t\tThis is equivalent to using [method apply_impulse] at the body's center of mass.","returnType":"void"},{"name":"apply_impulse","signature":"apply_impulse(impulse: Vector3, position: Vector3) -> void","description":"Applies a positioned impulse to the PhysicsBone3D.\n\t\t\t\tAn impulse is time-independent! Applying an impulse every frame would result in a framerate-dependent force. For this reason, it should only be used when simulating one-time impacts (use the \"_integrate_forces\" functions otherwise).\n\t\t\t\t[param position] is the offset from the PhysicsBone3D origin in global coordinates.","returnType":"void"},{"name":"get_bone_id","signature":"get_bone_id() -> int","description":"Returns the unique identifier of the PhysicsBone3D.","returnType":"int"},{"name":"get_simulate_physics","signature":"get_simulate_physics() -> bool","description":"Returns true if the PhysicsBone3D is allowed to simulate physics.","returnType":"bool"},{"name":"is_simulating_physics","signature":"is_simulating_physics() -> bool","description":"Returns true if the PhysicsBone3D is currently simulating physics.","returnType":"bool"}],"signals":[]},"PhysicalBoneSimulator3D":{"name":"PhysicalBoneSimulator3D","description":"Node that can be the parent of  and can apply the simulation results to .","inherits":"SkeletonModifier3D","properties":[],"methods":[{"name":"is_simulating_physics","signature":"is_simulating_physics() -> bool","description":"Returns a boolean that indicates whether the  is running and simulating.","returnType":"bool"},{"name":"physical_bones_add_collision_exception","signature":"physical_bones_add_collision_exception(exception: RID) -> void","description":"Adds a collision exception to the physical bone.\n\t\t\t\tWorks just like the  node.","returnType":"void"},{"name":"physical_bones_remove_collision_exception","signature":"physical_bones_remove_collision_exception(exception: RID) -> void","description":"Removes a collision exception to the physical bone.\n\t\t\t\tWorks just like the  node.","returnType":"void"},{"name":"physical_bones_start_simulation","signature":"physical_bones_start_simulation(bones: StringName[]) -> void","description":"Tells the  nodes in the Skeleton to start simulating and reacting to the physics world.\n\t\t\t\tOptionally, a list of bone names can be passed-in, allowing only the passed-in bones to be simulated.","returnType":"void"},{"name":"physical_bones_stop_simulation","signature":"physical_bones_stop_simulation() -> void","description":"Tells the  nodes in the Skeleton to stop simulating.","returnType":"void"}],"signals":[]},"PhysicalSkyMaterial":{"name":"PhysicalSkyMaterial","description":"A material that defines a sky for a  resource by a set of physical properties.","inherits":"Material","properties":[{"name":"energy_multiplier","type":"float","description":"The sky's overall brightness multiplier. Higher values result in a brighter sky."},{"name":"ground_color","type":"Color","description":"Modulates the [Color] on the bottom half of the sky to represent the ground."},{"name":"mie_coefficient","type":"float","description":"Controls the strength of [url=https://en.wikipedia.org/wiki/Mie_scattering]Mie scattering[/url] for the sky. Mie scattering results from light colliding with larger particles (like water). On earth, Mie scattering results in a whitish color around the sun and horizon."},{"name":"mie_color","type":"Color","description":"Controls the [Color] of the [url=https://en.wikipedia.org/wiki/Mie_scattering]Mie scattering[/url] effect. While not physically accurate, this allows for the creation of alien-looking planets."},{"name":"mie_eccentricity","type":"float","description":"Controls the direction of the [url=https://en.wikipedia.org/wiki/Mie_scattering]Mie scattering[/url]. A value of [code]1[/code] means that when light hits a particle it's passing through straight forward. A value of [code]-1[/code] means that all light is scatter backwards."},{"name":"night_sky","type":"Texture2D","description":"[Texture2D] for the night sky. This is added to the sky, so if it is bright enough, it may be visible during the day."},{"name":"rayleigh_coefficient","type":"float","description":"Controls the strength of the [url=https://en.wikipedia.org/wiki/Rayleigh_scattering]Rayleigh scattering[/url]. Rayleigh scattering results from light colliding with small particles. It is responsible for the blue color of the sky."},{"name":"rayleigh_color","type":"Color","description":"Controls the [Color] of the [url=https://en.wikipedia.org/wiki/Rayleigh_scattering]Rayleigh scattering[/url]. While not physically accurate, this allows for the creation of alien-looking planets. For example, setting this to a red [Color] results in a Mars-looking atmosphere with a corresponding blue sunset."},{"name":"sun_disk_scale","type":"float","description":"Sets the size of the sun disk. Default value is based on Sol's perceived size from Earth."},{"name":"turbidity","type":"float","description":"Sets the thickness of the atmosphere. High turbidity creates a foggy-looking atmosphere, while a low turbidity results in a clearer atmosphere."},{"name":"use_debanding","type":"bool","description":"If [code]true[/code], enables debanding. Debanding adds a small amount of noise which helps reduce banding that appears from the smooth changes in color in the sky."}],"methods":[],"signals":[]},"PhysicsBody2D":{"name":"PhysicsBody2D","description":"Abstract base class for 2D game objects affected by physics.","inherits":"CollisionObject2D","properties":[],"methods":[{"name":"add_collision_exception_with","signature":"add_collision_exception_with(body: Node) -> void","description":"Adds a body to the list of bodies that this body can't collide with.","returnType":"void"},{"name":"get_collision_exceptions","signature":"get_collision_exceptions() -> PhysicsBody2D[]","description":"Returns an array of nodes that were added as collision exceptions for this body.","returnType":"PhysicsBody2D[]"},{"name":"get_gravity","signature":"get_gravity() -> Vector2","description":"Returns the gravity vector computed from all sources that can affect the body, including all gravity overrides from  nodes and the global world gravity.","returnType":"Vector2"},{"name":"move_and_collide","signature":"move_and_collide(motion: Vector2, test_only: bool, safe_margin: float, recovery_as_collision: bool) -> KinematicCollision2D","description":"Moves the body along the vector [param motion]. In order to be frame rate independent in [method Node._physics_process] or [method Node._process], [param motion] should be computed using delta.\n\t\t\t\tReturns a , which contains information about the collision when stopped, or when touching another body along the motion.\n\t\t\t\tIf [param test_only] is true, the body does not move but the would-be collision information is given.\n\t\t\t\t[param safe_margin] is the extra margin used for collision recovery (see [member CharacterBody2D.safe_margin] for more details).\n\t\t\t\tIf [param recovery_as_collision] is true, any depenetration from the recovery phase is also reported as a collision; this is used e.g. by  for improving floor detection during floor snapping.","returnType":"KinematicCollision2D"},{"name":"remove_collision_exception_with","signature":"remove_collision_exception_with(body: Node) -> void","description":"Removes a body from the list of bodies that this body can't collide with.","returnType":"void"},{"name":"test_move","signature":"test_move(from: Transform2D, motion: Vector2, collision: KinematicCollision2D, safe_margin: float, recovery_as_collision: bool) -> bool","description":"Checks for collisions without moving the body. In order to be frame rate independent in [method Node._physics_process] or [method Node._process], [param motion] should be computed using delta.\n\t\t\t\tVirtually sets the node's position, scale and rotation to that of the given , then tries to move the body along the vector [param motion]. Returns true if a collision would stop the body from moving along the whole path.\n\t\t\t\t[param collision] is an optional object of type , which contains additional information about the collision when stopped, or when touching another body along the motion.\n\t\t\t\t[param safe_margin] is the extra margin used for collision recovery (see [member CharacterBody2D.safe_margin] for more details).\n\t\t\t\tIf [param recovery_as_collision] is true, any depenetration from the recovery phase is also reported as a collision; this is useful for checking whether the body would touch any other bodies.","returnType":"bool"}],"signals":[]},"PhysicsBody3D":{"name":"PhysicsBody3D","description":"Abstract base class for 3D game objects affected by physics.","inherits":"CollisionObject3D","properties":[{"name":"axis_lock_angular_x","type":"bool","description":"Lock the body's rotation in the X axis."},{"name":"axis_lock_angular_y","type":"bool","description":"Lock the body's rotation in the Y axis."},{"name":"axis_lock_angular_z","type":"bool","description":"Lock the body's rotation in the Z axis."},{"name":"axis_lock_linear_x","type":"bool","description":"Lock the body's linear movement in the X axis."},{"name":"axis_lock_linear_y","type":"bool","description":"Lock the body's linear movement in the Y axis."},{"name":"axis_lock_linear_z","type":"bool","description":"Lock the body's linear movement in the Z axis."}],"methods":[{"name":"add_collision_exception_with","signature":"add_collision_exception_with(body: Node) -> void","description":"Adds a body to the list of bodies that this body can't collide with.","returnType":"void"},{"name":"get_axis_lock","signature":"get_axis_lock(axis: int) -> bool","description":"Returns true if the specified linear or rotational [param axis] is locked.","returnType":"bool"},{"name":"get_collision_exceptions","signature":"get_collision_exceptions() -> PhysicsBody3D[]","description":"Returns an array of nodes that were added as collision exceptions for this body.","returnType":"PhysicsBody3D[]"},{"name":"get_gravity","signature":"get_gravity() -> Vector3","description":"Returns the gravity vector computed from all sources that can affect the body, including all gravity overrides from  nodes and the global world gravity.","returnType":"Vector3"},{"name":"move_and_collide","signature":"move_and_collide(motion: Vector3, test_only: bool, safe_margin: float, recovery_as_collision: bool, max_collisions: int) -> KinematicCollision3D","description":"Moves the body along the vector [param motion]. In order to be frame rate independent in [method Node._physics_process] or [method Node._process], [param motion] should be computed using delta.\n\t\t\t\tThe body will stop if it collides. Returns a , which contains information about the collision when stopped, or when touching another body along the motion.\n\t\t\t\tIf [param test_only] is true, the body does not move but the would-be collision information is given.\n\t\t\t\t[param safe_margin] is the extra margin used for collision recovery (see [member CharacterBody3D.safe_margin] for more details).\n\t\t\t\tIf [param recovery_as_collision] is true, any depenetration from the recovery phase is also reported as a collision; this is used e.g. by  for improving floor detection during floor snapping.\n\t\t\t\t[param max_collisions] allows to retrieve more than one collision result.","returnType":"KinematicCollision3D"},{"name":"remove_collision_exception_with","signature":"remove_collision_exception_with(body: Node) -> void","description":"Removes a body from the list of bodies that this body can't collide with.","returnType":"void"},{"name":"set_axis_lock","signature":"set_axis_lock(axis: int, lock: bool) -> void","description":"Locks or unlocks the specified linear or rotational [param axis] depending on the value of [param lock].","returnType":"void"},{"name":"test_move","signature":"test_move(from: Transform3D, motion: Vector3, collision: KinematicCollision3D, safe_margin: float, recovery_as_collision: bool, max_collisions: int) -> bool","description":"Checks for collisions without moving the body. In order to be frame rate independent in [method Node._physics_process] or [method Node._process], [param motion] should be computed using delta.\n\t\t\t\tVirtually sets the node's position, scale and rotation to that of the given , then tries to move the body along the vector [param motion]. Returns true if a collision would stop the body from moving along the whole path.\n\t\t\t\t[param collision] is an optional object of type , which contains additional information about the collision when stopped, or when touching another body along the motion.\n\t\t\t\t[param safe_margin] is the extra margin used for collision recovery (see [member CharacterBody3D.safe_margin] for more details).\n\t\t\t\tIf [param recovery_as_collision] is true, any depenetration from the recovery phase is also reported as a collision; this is useful for checking whether the body would touch any other bodies.\n\t\t\t\t[param max_collisions] allows to retrieve more than one collision result.","returnType":"bool"}],"signals":[]},"PhysicsDirectBodyState2D":{"name":"PhysicsDirectBodyState2D","description":"Provides direct access to a physics body in the .","inherits":"Object","properties":[{"name":"angular_velocity","type":"float","description":"The body's rotational velocity in [i]radians[/i] per second."},{"name":"center_of_mass","type":"Vector2","description":"The body's center of mass position relative to the body's center in the global coordinate system."},{"name":"center_of_mass_local","type":"Vector2","description":"The body's center of mass position in the body's local coordinate system."},{"name":"inverse_inertia","type":"float","description":"The inverse of the inertia of the body."},{"name":"inverse_mass","type":"float","description":"The inverse of the mass of the body."},{"name":"linear_velocity","type":"Vector2","description":"The body's linear velocity in pixels per second."},{"name":"sleeping","type":"bool","description":"If [code]true[/code], this body is currently sleeping (not active)."},{"name":"step","type":"float","description":"The timestep (delta) used for the simulation."},{"name":"total_angular_damp","type":"float","description":"The rate at which the body stops rotating, if there are not any other forces moving it."},{"name":"total_gravity","type":"Vector2","description":"The total gravity vector being currently applied to this body."},{"name":"total_linear_damp","type":"float","description":"The rate at which the body stops moving, if there are not any other forces moving it."},{"name":"transform","type":"Transform2D","description":"The body's transformation matrix."}],"methods":[{"name":"add_constant_central_force","signature":"add_constant_central_force(force: Vector2) -> void","description":"Adds a constant directional force without affecting rotation that keeps being applied over time until cleared with constant_force = Vector2(0, 0).\n\t\t\t\tThis is equivalent to using [method add_constant_force] at the body's center of mass.","returnType":"void"},{"name":"add_constant_force","signature":"add_constant_force(force: Vector2, position: Vector2) -> void","description":"Adds a constant positioned force to the body that keeps being applied over time until cleared with constant_force = Vector2(0, 0).\n\t\t\t\t[param position] is the offset from the body origin in global coordinates.","returnType":"void"},{"name":"add_constant_torque","signature":"add_constant_torque(torque: float) -> void","description":"Adds a constant rotational force without affecting position that keeps being applied over time until cleared with constant_torque = 0.","returnType":"void"},{"name":"apply_central_force","signature":"apply_central_force(force: Vector2) -> void","description":"Applies a directional force without affecting rotation. A force is time dependent and meant to be applied every physics update.\n\t\t\t\tThis is equivalent to using [method apply_force] at the body's center of mass.","returnType":"void"},{"name":"apply_central_impulse","signature":"apply_central_impulse(impulse: Vector2) -> void","description":"Applies a directional impulse without affecting rotation.\n\t\t\t\tAn impulse is time-independent! Applying an impulse every frame would result in a framerate-dependent force. For this reason, it should only be used when simulating one-time impacts (use the \"_force\" functions otherwise).\n\t\t\t\tThis is equivalent to using [method apply_impulse] at the body's center of mass.","returnType":"void"},{"name":"apply_force","signature":"apply_force(force: Vector2, position: Vector2) -> void","description":"Applies a positioned force to the body. A force is time dependent and meant to be applied every physics update.\n\t\t\t\t[param position] is the offset from the body origin in global coordinates.","returnType":"void"},{"name":"apply_impulse","signature":"apply_impulse(impulse: Vector2, position: Vector2) -> void","description":"Applies a positioned impulse to the body.\n\t\t\t\tAn impulse is time-independent! Applying an impulse every frame would result in a framerate-dependent force. For this reason, it should only be used when simulating one-time impacts (use the \"_force\" functions otherwise).\n\t\t\t\t[param position] is the offset from the body origin in global coordinates.","returnType":"void"},{"name":"apply_torque","signature":"apply_torque(torque: float) -> void","description":"Applies a rotational force without affecting position. A force is time dependent and meant to be applied every physics update.\n\t\t\t\tNote: [member inverse_inertia] is required for this to work. To have [member inverse_inertia], an active  must be a child of the node, or you can manually set [member inverse_inertia].","returnType":"void"},{"name":"apply_torque_impulse","signature":"apply_torque_impulse(impulse: float) -> void","description":"Applies a rotational impulse to the body without affecting the position.\n\t\t\t\tAn impulse is time-independent! Applying an impulse every frame would result in a framerate-dependent force. For this reason, it should only be used when simulating one-time impacts (use the \"_force\" functions otherwise).\n\t\t\t\tNote: [member inverse_inertia] is required for this to work. To have [member inverse_inertia], an active  must be a child of the node, or you can manually set [member inverse_inertia].","returnType":"void"},{"name":"get_constant_force","signature":"get_constant_force() -> Vector2","description":"Returns the body's total constant positional forces applied during each physics update.\n\t\t\t\tSee [method add_constant_force] and [method add_constant_central_force].","returnType":"Vector2"},{"name":"get_constant_torque","signature":"get_constant_torque() -> float","description":"Returns the body's total constant rotational forces applied during each physics update.\n\t\t\t\tSee [method add_constant_torque].","returnType":"float"},{"name":"get_contact_collider","signature":"get_contact_collider(contact_idx: int) -> RID","description":"Returns the collider's .","returnType":"RID"},{"name":"get_contact_collider_id","signature":"get_contact_collider_id(contact_idx: int) -> int","description":"Returns the collider's object id.","returnType":"int"},{"name":"get_contact_collider_object","signature":"get_contact_collider_object(contact_idx: int) -> Object","description":"Returns the collider object. This depends on how it was created (will return a scene node if such was used to create it).","returnType":"Object"},{"name":"get_contact_collider_position","signature":"get_contact_collider_position(contact_idx: int) -> Vector2","description":"Returns the position of the contact point on the collider in the global coordinate system.","returnType":"Vector2"},{"name":"get_contact_collider_shape","signature":"get_contact_collider_shape(contact_idx: int) -> int","description":"Returns the collider's shape index.","returnType":"int"},{"name":"get_contact_collider_velocity_at_position","signature":"get_contact_collider_velocity_at_position(contact_idx: int) -> Vector2","description":"Returns the velocity vector at the collider's contact point.","returnType":"Vector2"},{"name":"get_contact_count","signature":"get_contact_count() -> int","description":"Returns the number of contacts this body has with other bodies.\n\t\t\t\tNote: By default, this returns 0 unless bodies are configured to monitor contacts. See [member RigidBody2D.contact_monitor].","returnType":"int"},{"name":"get_contact_impulse","signature":"get_contact_impulse(contact_idx: int) -> Vector2","description":"Returns the impulse created by the contact.","returnType":"Vector2"},{"name":"get_contact_local_normal","signature":"get_contact_local_normal(contact_idx: int) -> Vector2","description":"Returns the local normal at the contact point.","returnType":"Vector2"},{"name":"get_contact_local_position","signature":"get_contact_local_position(contact_idx: int) -> Vector2","description":"Returns the position of the contact point on the body in the global coordinate system.","returnType":"Vector2"},{"name":"get_contact_local_shape","signature":"get_contact_local_shape(contact_idx: int) -> int","description":"Returns the local shape index of the collision.","returnType":"int"},{"name":"get_contact_local_velocity_at_position","signature":"get_contact_local_velocity_at_position(contact_idx: int) -> Vector2","description":"Returns the velocity vector at the body's contact point.","returnType":"Vector2"},{"name":"get_space_state","signature":"get_space_state() -> PhysicsDirectSpaceState2D","description":"Returns the current state of the space, useful for queries.","returnType":"PhysicsDirectSpaceState2D"},{"name":"get_velocity_at_local_position","signature":"get_velocity_at_local_position(local_position: Vector2) -> Vector2","description":"Returns the body's velocity at the given relative position, including both translation and rotation.","returnType":"Vector2"},{"name":"integrate_forces","signature":"integrate_forces() -> void","description":"Updates the body's linear and angular velocity by applying gravity and damping for the equivalent of one physics tick.","returnType":"void"},{"name":"set_constant_force","signature":"set_constant_force(force: Vector2) -> void","description":"Sets the body's total constant positional forces applied during each physics update.\n\t\t\t\tSee [method add_constant_force] and [method add_constant_central_force].","returnType":"void"},{"name":"set_constant_torque","signature":"set_constant_torque(torque: float) -> void","description":"Sets the body's total constant rotational forces applied during each physics update.\n\t\t\t\tSee [method add_constant_torque].","returnType":"void"}],"signals":[]},"PhysicsDirectBodyState2DExtension":{"name":"PhysicsDirectBodyState2DExtension","description":"Provides virtual methods that can be overridden to create custom  implementations.","inherits":"PhysicsDirectBodyState2D","properties":[],"methods":[{"name":"_add_constant_central_force","signature":"_add_constant_central_force(force: Vector2) -> void","description":"Overridable version of [method PhysicsDirectBodyState2D.add_constant_central_force].","returnType":"void"},{"name":"_add_constant_force","signature":"_add_constant_force(force: Vector2, position: Vector2) -> void","description":"Overridable version of [method PhysicsDirectBodyState2D.add_constant_force].","returnType":"void"},{"name":"_add_constant_torque","signature":"_add_constant_torque(torque: float) -> void","description":"Overridable version of [method PhysicsDirectBodyState2D.add_constant_torque].","returnType":"void"},{"name":"_apply_central_force","signature":"_apply_central_force(force: Vector2) -> void","description":"Overridable version of [method PhysicsDirectBodyState2D.apply_central_force].","returnType":"void"},{"name":"_apply_central_impulse","signature":"_apply_central_impulse(impulse: Vector2) -> void","description":"Overridable version of [method PhysicsDirectBodyState2D.apply_central_impulse].","returnType":"void"},{"name":"_apply_force","signature":"_apply_force(force: Vector2, position: Vector2) -> void","description":"Overridable version of [method PhysicsDirectBodyState2D.apply_force].","returnType":"void"},{"name":"_apply_impulse","signature":"_apply_impulse(impulse: Vector2, position: Vector2) -> void","description":"Overridable version of [method PhysicsDirectBodyState2D.apply_impulse].","returnType":"void"},{"name":"_apply_torque","signature":"_apply_torque(torque: float) -> void","description":"Overridable version of [method PhysicsDirectBodyState2D.apply_torque].","returnType":"void"},{"name":"_apply_torque_impulse","signature":"_apply_torque_impulse(impulse: float) -> void","description":"Overridable version of [method PhysicsDirectBodyState2D.apply_torque_impulse].","returnType":"void"},{"name":"_get_angular_velocity","signature":"_get_angular_velocity() -> float","description":"Implement to override the behavior of [member PhysicsDirectBodyState2D.angular_velocity] and its respective getter.","returnType":"float"},{"name":"_get_center_of_mass","signature":"_get_center_of_mass() -> Vector2","description":"Implement to override the behavior of [member PhysicsDirectBodyState2D.center_of_mass] and its respective getter.","returnType":"Vector2"},{"name":"_get_center_of_mass_local","signature":"_get_center_of_mass_local() -> Vector2","description":"Implement to override the behavior of [member PhysicsDirectBodyState2D.center_of_mass_local] and its respective getter.","returnType":"Vector2"},{"name":"_get_constant_force","signature":"_get_constant_force() -> Vector2","description":"Overridable version of [method PhysicsDirectBodyState2D.get_constant_force].","returnType":"Vector2"},{"name":"_get_constant_torque","signature":"_get_constant_torque() -> float","description":"Overridable version of [method PhysicsDirectBodyState2D.get_constant_torque].","returnType":"float"},{"name":"_get_contact_collider","signature":"_get_contact_collider(contact_idx: int) -> RID","description":"Overridable version of [method PhysicsDirectBodyState2D.get_contact_collider].","returnType":"RID"},{"name":"_get_contact_collider_id","signature":"_get_contact_collider_id(contact_idx: int) -> int","description":"Overridable version of [method PhysicsDirectBodyState2D.get_contact_collider_id].","returnType":"int"},{"name":"_get_contact_collider_object","signature":"_get_contact_collider_object(contact_idx: int) -> Object","description":"Overridable version of [method PhysicsDirectBodyState2D.get_contact_collider_object].","returnType":"Object"},{"name":"_get_contact_collider_position","signature":"_get_contact_collider_position(contact_idx: int) -> Vector2","description":"Overridable version of [method PhysicsDirectBodyState2D.get_contact_collider_position].","returnType":"Vector2"},{"name":"_get_contact_collider_shape","signature":"_get_contact_collider_shape(contact_idx: int) -> int","description":"Overridable version of [method PhysicsDirectBodyState2D.get_contact_collider_shape].","returnType":"int"},{"name":"_get_contact_collider_velocity_at_position","signature":"_get_contact_collider_velocity_at_position(contact_idx: int) -> Vector2","description":"Overridable version of [method PhysicsDirectBodyState2D.get_contact_collider_velocity_at_position].","returnType":"Vector2"},{"name":"_get_contact_count","signature":"_get_contact_count() -> int","description":"Overridable version of [method PhysicsDirectBodyState2D.get_contact_count].","returnType":"int"},{"name":"_get_contact_impulse","signature":"_get_contact_impulse(contact_idx: int) -> Vector2","description":"Overridable version of [method PhysicsDirectBodyState2D.get_contact_impulse].","returnType":"Vector2"},{"name":"_get_contact_local_normal","signature":"_get_contact_local_normal(contact_idx: int) -> Vector2","description":"Overridable version of [method PhysicsDirectBodyState2D.get_contact_local_normal].","returnType":"Vector2"},{"name":"_get_contact_local_position","signature":"_get_contact_local_position(contact_idx: int) -> Vector2","description":"Overridable version of [method PhysicsDirectBodyState2D.get_contact_local_position].","returnType":"Vector2"},{"name":"_get_contact_local_shape","signature":"_get_contact_local_shape(contact_idx: int) -> int","description":"Overridable version of [method PhysicsDirectBodyState2D.get_contact_local_shape].","returnType":"int"},{"name":"_get_contact_local_velocity_at_position","signature":"_get_contact_local_velocity_at_position(contact_idx: int) -> Vector2","description":"Overridable version of [method PhysicsDirectBodyState2D.get_contact_local_velocity_at_position].","returnType":"Vector2"},{"name":"_get_inverse_inertia","signature":"_get_inverse_inertia() -> float","description":"Implement to override the behavior of [member PhysicsDirectBodyState2D.inverse_inertia] and its respective getter.","returnType":"float"},{"name":"_get_inverse_mass","signature":"_get_inverse_mass() -> float","description":"Implement to override the behavior of [member PhysicsDirectBodyState2D.inverse_mass] and its respective getter.","returnType":"float"},{"name":"_get_linear_velocity","signature":"_get_linear_velocity() -> Vector2","description":"Implement to override the behavior of [member PhysicsDirectBodyState2D.linear_velocity] and its respective getter.","returnType":"Vector2"},{"name":"_get_space_state","signature":"_get_space_state() -> PhysicsDirectSpaceState2D","description":"Overridable version of [method PhysicsDirectBodyState2D.get_space_state].","returnType":"PhysicsDirectSpaceState2D"},{"name":"_get_step","signature":"_get_step() -> float","description":"Implement to override the behavior of [member PhysicsDirectBodyState2D.step] and its respective getter.","returnType":"float"},{"name":"_get_total_angular_damp","signature":"_get_total_angular_damp() -> float","description":"Implement to override the behavior of [member PhysicsDirectBodyState2D.total_angular_damp] and its respective getter.","returnType":"float"},{"name":"_get_total_gravity","signature":"_get_total_gravity() -> Vector2","description":"Implement to override the behavior of [member PhysicsDirectBodyState2D.total_gravity] and its respective getter.","returnType":"Vector2"},{"name":"_get_total_linear_damp","signature":"_get_total_linear_damp() -> float","description":"Implement to override the behavior of [member PhysicsDirectBodyState2D.total_linear_damp] and its respective getter.","returnType":"float"},{"name":"_get_transform","signature":"_get_transform() -> Transform2D","description":"Implement to override the behavior of [member PhysicsDirectBodyState2D.transform] and its respective getter.","returnType":"Transform2D"},{"name":"_get_velocity_at_local_position","signature":"_get_velocity_at_local_position(local_position: Vector2) -> Vector2","description":"Overridable version of [method PhysicsDirectBodyState2D.get_velocity_at_local_position].","returnType":"Vector2"},{"name":"_integrate_forces","signature":"_integrate_forces() -> void","description":"Overridable version of [method PhysicsDirectBodyState2D.integrate_forces].","returnType":"void"},{"name":"_is_sleeping","signature":"_is_sleeping() -> bool","description":"Implement to override the behavior of [member PhysicsDirectBodyState2D.sleeping] and its respective getter.","returnType":"bool"},{"name":"_set_angular_velocity","signature":"_set_angular_velocity(velocity: float) -> void","description":"Implement to override the behavior of [member PhysicsDirectBodyState2D.angular_velocity] and its respective setter.","returnType":"void"},{"name":"_set_constant_force","signature":"_set_constant_force(force: Vector2) -> void","description":"Overridable version of [method PhysicsDirectBodyState2D.set_constant_force].","returnType":"void"},{"name":"_set_constant_torque","signature":"_set_constant_torque(torque: float) -> void","description":"Overridable version of [method PhysicsDirectBodyState2D.set_constant_torque].","returnType":"void"},{"name":"_set_linear_velocity","signature":"_set_linear_velocity(velocity: Vector2) -> void","description":"Implement to override the behavior of [member PhysicsDirectBodyState2D.linear_velocity] and its respective setter.","returnType":"void"},{"name":"_set_sleep_state","signature":"_set_sleep_state(enabled: bool) -> void","description":"Implement to override the behavior of [member PhysicsDirectBodyState2D.sleeping] and its respective setter.","returnType":"void"},{"name":"_set_transform","signature":"_set_transform(transform: Transform2D) -> void","description":"Implement to override the behavior of [member PhysicsDirectBodyState2D.transform] and its respective setter.","returnType":"void"}],"signals":[]},"PhysicsDirectBodyState3D":{"name":"PhysicsDirectBodyState3D","description":"Provides direct access to a physics body in the .","inherits":"Object","properties":[{"name":"angular_velocity","type":"Vector3","description":"The body's rotational velocity in [i]radians[/i] per second."},{"name":"center_of_mass","type":"Vector3","description":"The body's center of mass position relative to the body's center in the global coordinate system."},{"name":"center_of_mass_local","type":"Vector3","description":"The body's center of mass position in the body's local coordinate system."},{"name":"inverse_inertia","type":"Vector3","description":"The inverse of the inertia of the body."},{"name":"inverse_inertia_tensor","type":"Basis","description":"The inverse of the inertia tensor of the body."},{"name":"inverse_mass","type":"float","description":"The inverse of the mass of the body."},{"name":"linear_velocity","type":"Vector3","description":"The body's linear velocity in units per second."},{"name":"principal_inertia_axes","type":"Basis","description":""},{"name":"sleeping","type":"bool","description":"If [code]true[/code], this body is currently sleeping (not active)."},{"name":"step","type":"float","description":"The timestep (delta) used for the simulation."},{"name":"total_angular_damp","type":"float","description":"The rate at which the body stops rotating, if there are not any other forces moving it."},{"name":"total_gravity","type":"Vector3","description":"The total gravity vector being currently applied to this body."},{"name":"total_linear_damp","type":"float","description":"The rate at which the body stops moving, if there are not any other forces moving it."},{"name":"transform","type":"Transform3D","description":"The body's transformation matrix."}],"methods":[{"name":"add_constant_central_force","signature":"add_constant_central_force(force: Vector3) -> void","description":"Adds a constant directional force without affecting rotation that keeps being applied over time until cleared with constant_force = Vector3(0, 0, 0).\n\t\t\t\tThis is equivalent to using [method add_constant_force] at the body's center of mass.","returnType":"void"},{"name":"add_constant_force","signature":"add_constant_force(force: Vector3, position: Vector3) -> void","description":"Adds a constant positioned force to the body that keeps being applied over time until cleared with constant_force = Vector3(0, 0, 0).\n\t\t\t\t[param position] is the offset from the body origin in global coordinates.","returnType":"void"},{"name":"add_constant_torque","signature":"add_constant_torque(torque: Vector3) -> void","description":"Adds a constant rotational force without affecting position that keeps being applied over time until cleared with constant_torque = Vector3(0, 0, 0).","returnType":"void"},{"name":"apply_central_force","signature":"apply_central_force(force: Vector3) -> void","description":"Applies a directional force without affecting rotation. A force is time dependent and meant to be applied every physics update.\n\t\t\t\tThis is equivalent to using [method apply_force] at the body's center of mass.","returnType":"void"},{"name":"apply_central_impulse","signature":"apply_central_impulse(impulse: Vector3) -> void","description":"Applies a directional impulse without affecting rotation.\n\t\t\t\tAn impulse is time-independent! Applying an impulse every frame would result in a framerate-dependent force. For this reason, it should only be used when simulating one-time impacts (use the \"_force\" functions otherwise).\n\t\t\t\tThis is equivalent to using [method apply_impulse] at the body's center of mass.","returnType":"void"},{"name":"apply_force","signature":"apply_force(force: Vector3, position: Vector3) -> void","description":"Applies a positioned force to the body. A force is time dependent and meant to be applied every physics update.\n\t\t\t\t[param position] is the offset from the body origin in global coordinates.","returnType":"void"},{"name":"apply_impulse","signature":"apply_impulse(impulse: Vector3, position: Vector3) -> void","description":"Applies a positioned impulse to the body.\n\t\t\t\tAn impulse is time-independent! Applying an impulse every frame would result in a framerate-dependent force. For this reason, it should only be used when simulating one-time impacts (use the \"_force\" functions otherwise).\n\t\t\t\t[param position] is the offset from the body origin in global coordinates.","returnType":"void"},{"name":"apply_torque","signature":"apply_torque(torque: Vector3) -> void","description":"Applies a rotational force without affecting position. A force is time dependent and meant to be applied every physics update.\n\t\t\t\tNote: [member inverse_inertia] is required for this to work. To have [member inverse_inertia], an active  must be a child of the node, or you can manually set [member inverse_inertia].","returnType":"void"},{"name":"apply_torque_impulse","signature":"apply_torque_impulse(impulse: Vector3) -> void","description":"Applies a rotational impulse to the body without affecting the position.\n\t\t\t\tAn impulse is time-independent! Applying an impulse every frame would result in a framerate-dependent force. For this reason, it should only be used when simulating one-time impacts (use the \"_force\" functions otherwise).\n\t\t\t\tNote: [member inverse_inertia] is required for this to work. To have [member inverse_inertia], an active  must be a child of the node, or you can manually set [member inverse_inertia].","returnType":"void"},{"name":"get_constant_force","signature":"get_constant_force() -> Vector3","description":"Returns the body's total constant positional forces applied during each physics update.\n\t\t\t\tSee [method add_constant_force] and [method add_constant_central_force].","returnType":"Vector3"},{"name":"get_constant_torque","signature":"get_constant_torque() -> Vector3","description":"Returns the body's total constant rotational forces applied during each physics update.\n\t\t\t\tSee [method add_constant_torque].","returnType":"Vector3"},{"name":"get_contact_collider","signature":"get_contact_collider(contact_idx: int) -> RID","description":"Returns the collider's .","returnType":"RID"},{"name":"get_contact_collider_id","signature":"get_contact_collider_id(contact_idx: int) -> int","description":"Returns the collider's object id.","returnType":"int"},{"name":"get_contact_collider_object","signature":"get_contact_collider_object(contact_idx: int) -> Object","description":"Returns the collider object.","returnType":"Object"},{"name":"get_contact_collider_position","signature":"get_contact_collider_position(contact_idx: int) -> Vector3","description":"Returns the position of the contact point on the collider in the global coordinate system.","returnType":"Vector3"},{"name":"get_contact_collider_shape","signature":"get_contact_collider_shape(contact_idx: int) -> int","description":"Returns the collider's shape index.","returnType":"int"},{"name":"get_contact_collider_velocity_at_position","signature":"get_contact_collider_velocity_at_position(contact_idx: int) -> Vector3","description":"Returns the linear velocity vector at the collider's contact point.","returnType":"Vector3"},{"name":"get_contact_count","signature":"get_contact_count() -> int","description":"Returns the number of contacts this body has with other bodies.\n\t\t\t\tNote: By default, this returns 0 unless bodies are configured to monitor contacts. See [member RigidBody3D.contact_monitor].","returnType":"int"},{"name":"get_contact_impulse","signature":"get_contact_impulse(contact_idx: int) -> Vector3","description":"Impulse created by the contact.","returnType":"Vector3"},{"name":"get_contact_local_normal","signature":"get_contact_local_normal(contact_idx: int) -> Vector3","description":"Returns the local normal at the contact point.","returnType":"Vector3"},{"name":"get_contact_local_position","signature":"get_contact_local_position(contact_idx: int) -> Vector3","description":"Returns the position of the contact point on the body in the global coordinate system.","returnType":"Vector3"},{"name":"get_contact_local_shape","signature":"get_contact_local_shape(contact_idx: int) -> int","description":"Returns the local shape index of the collision.","returnType":"int"},{"name":"get_contact_local_velocity_at_position","signature":"get_contact_local_velocity_at_position(contact_idx: int) -> Vector3","description":"Returns the linear velocity vector at the body's contact point.","returnType":"Vector3"},{"name":"get_space_state","signature":"get_space_state() -> PhysicsDirectSpaceState3D","description":"Returns the current state of the space, useful for queries.","returnType":"PhysicsDirectSpaceState3D"},{"name":"get_velocity_at_local_position","signature":"get_velocity_at_local_position(local_position: Vector3) -> Vector3","description":"Returns the body's velocity at the given relative position, including both translation and rotation.","returnType":"Vector3"},{"name":"integrate_forces","signature":"integrate_forces() -> void","description":"Updates the body's linear and angular velocity by applying gravity and damping for the equivalent of one physics tick.","returnType":"void"},{"name":"set_constant_force","signature":"set_constant_force(force: Vector3) -> void","description":"Sets the body's total constant positional forces applied during each physics update.\n\t\t\t\tSee [method add_constant_force] and [method add_constant_central_force].","returnType":"void"},{"name":"set_constant_torque","signature":"set_constant_torque(torque: Vector3) -> void","description":"Sets the body's total constant rotational forces applied during each physics update.\n\t\t\t\tSee [method add_constant_torque].","returnType":"void"}],"signals":[]},"PhysicsDirectBodyState3DExtension":{"name":"PhysicsDirectBodyState3DExtension","description":"Provides virtual methods that can be overridden to create custom  implementations.","inherits":"PhysicsDirectBodyState3D","properties":[],"methods":[{"name":"_add_constant_central_force","signature":"_add_constant_central_force(force: Vector3) -> void","description":"","returnType":"void"},{"name":"_add_constant_force","signature":"_add_constant_force(force: Vector3, position: Vector3) -> void","description":"","returnType":"void"},{"name":"_add_constant_torque","signature":"_add_constant_torque(torque: Vector3) -> void","description":"","returnType":"void"},{"name":"_apply_central_force","signature":"_apply_central_force(force: Vector3) -> void","description":"","returnType":"void"},{"name":"_apply_central_impulse","signature":"_apply_central_impulse(impulse: Vector3) -> void","description":"","returnType":"void"},{"name":"_apply_force","signature":"_apply_force(force: Vector3, position: Vector3) -> void","description":"","returnType":"void"},{"name":"_apply_impulse","signature":"_apply_impulse(impulse: Vector3, position: Vector3) -> void","description":"","returnType":"void"},{"name":"_apply_torque","signature":"_apply_torque(torque: Vector3) -> void","description":"","returnType":"void"},{"name":"_apply_torque_impulse","signature":"_apply_torque_impulse(impulse: Vector3) -> void","description":"","returnType":"void"},{"name":"_get_angular_velocity","signature":"_get_angular_velocity() -> Vector3","description":"","returnType":"Vector3"},{"name":"_get_center_of_mass","signature":"_get_center_of_mass() -> Vector3","description":"","returnType":"Vector3"},{"name":"_get_center_of_mass_local","signature":"_get_center_of_mass_local() -> Vector3","description":"","returnType":"Vector3"},{"name":"_get_constant_force","signature":"_get_constant_force() -> Vector3","description":"","returnType":"Vector3"},{"name":"_get_constant_torque","signature":"_get_constant_torque() -> Vector3","description":"","returnType":"Vector3"},{"name":"_get_contact_collider","signature":"_get_contact_collider(contact_idx: int) -> RID","description":"","returnType":"RID"},{"name":"_get_contact_collider_id","signature":"_get_contact_collider_id(contact_idx: int) -> int","description":"","returnType":"int"},{"name":"_get_contact_collider_object","signature":"_get_contact_collider_object(contact_idx: int) -> Object","description":"","returnType":"Object"},{"name":"_get_contact_collider_position","signature":"_get_contact_collider_position(contact_idx: int) -> Vector3","description":"","returnType":"Vector3"},{"name":"_get_contact_collider_shape","signature":"_get_contact_collider_shape(contact_idx: int) -> int","description":"","returnType":"int"},{"name":"_get_contact_collider_velocity_at_position","signature":"_get_contact_collider_velocity_at_position(contact_idx: int) -> Vector3","description":"","returnType":"Vector3"},{"name":"_get_contact_count","signature":"_get_contact_count() -> int","description":"","returnType":"int"},{"name":"_get_contact_impulse","signature":"_get_contact_impulse(contact_idx: int) -> Vector3","description":"","returnType":"Vector3"},{"name":"_get_contact_local_normal","signature":"_get_contact_local_normal(contact_idx: int) -> Vector3","description":"","returnType":"Vector3"},{"name":"_get_contact_local_position","signature":"_get_contact_local_position(contact_idx: int) -> Vector3","description":"","returnType":"Vector3"},{"name":"_get_contact_local_shape","signature":"_get_contact_local_shape(contact_idx: int) -> int","description":"","returnType":"int"},{"name":"_get_contact_local_velocity_at_position","signature":"_get_contact_local_velocity_at_position(contact_idx: int) -> Vector3","description":"","returnType":"Vector3"},{"name":"_get_inverse_inertia","signature":"_get_inverse_inertia() -> Vector3","description":"","returnType":"Vector3"},{"name":"_get_inverse_inertia_tensor","signature":"_get_inverse_inertia_tensor() -> Basis","description":"","returnType":"Basis"},{"name":"_get_inverse_mass","signature":"_get_inverse_mass() -> float","description":"","returnType":"float"},{"name":"_get_linear_velocity","signature":"_get_linear_velocity() -> Vector3","description":"","returnType":"Vector3"},{"name":"_get_principal_inertia_axes","signature":"_get_principal_inertia_axes() -> Basis","description":"","returnType":"Basis"},{"name":"_get_space_state","signature":"_get_space_state() -> PhysicsDirectSpaceState3D","description":"","returnType":"PhysicsDirectSpaceState3D"},{"name":"_get_step","signature":"_get_step() -> float","description":"","returnType":"float"},{"name":"_get_total_angular_damp","signature":"_get_total_angular_damp() -> float","description":"","returnType":"float"},{"name":"_get_total_gravity","signature":"_get_total_gravity() -> Vector3","description":"","returnType":"Vector3"},{"name":"_get_total_linear_damp","signature":"_get_total_linear_damp() -> float","description":"","returnType":"float"},{"name":"_get_transform","signature":"_get_transform() -> Transform3D","description":"","returnType":"Transform3D"},{"name":"_get_velocity_at_local_position","signature":"_get_velocity_at_local_position(local_position: Vector3) -> Vector3","description":"","returnType":"Vector3"},{"name":"_integrate_forces","signature":"_integrate_forces() -> void","description":"","returnType":"void"},{"name":"_is_sleeping","signature":"_is_sleeping() -> bool","description":"","returnType":"bool"},{"name":"_set_angular_velocity","signature":"_set_angular_velocity(velocity: Vector3) -> void","description":"","returnType":"void"},{"name":"_set_constant_force","signature":"_set_constant_force(force: Vector3) -> void","description":"","returnType":"void"},{"name":"_set_constant_torque","signature":"_set_constant_torque(torque: Vector3) -> void","description":"","returnType":"void"},{"name":"_set_linear_velocity","signature":"_set_linear_velocity(velocity: Vector3) -> void","description":"","returnType":"void"},{"name":"_set_sleep_state","signature":"_set_sleep_state(enabled: bool) -> void","description":"","returnType":"void"},{"name":"_set_transform","signature":"_set_transform(transform: Transform3D) -> void","description":"","returnType":"void"}],"signals":[]},"PhysicsDirectSpaceState2D":{"name":"PhysicsDirectSpaceState2D","description":"Provides direct access to a physics space in the .","inherits":"Object","properties":[],"methods":[{"name":"cast_motion","signature":"cast_motion(parameters: PhysicsShapeQueryParameters2D) -> PackedFloat32Array","description":"Checks how far a  can move without colliding. All the parameters for the query, including the shape and the motion, are supplied through a  object.\n\t\t\t\tReturns an array with the safe and unsafe proportions (between 0 and 1) of the motion. The safe proportion is the maximum fraction of the motion that can be made without a collision. The unsafe proportion is the minimum fraction of the distance that must be moved for a collision. If no collision is detected a result of [1.0, 1.0] will be returned.\n\t\t\t\tNote: Any s that the shape is already colliding with e.g. inside of, will be ignored. Use [method collide_shape] to determine the s that the shape is already colliding with.","returnType":"PackedFloat32Array"},{"name":"collide_shape","signature":"collide_shape(parameters: PhysicsShapeQueryParameters2D, max_results: int) -> Vector2[]","description":"Checks the intersections of a shape, given through a  object, against the space. The resulting array contains a list of points where the shape intersects another. Like with [method intersect_shape], the number of returned results can be limited to save processing time.\n\t\t\t\tReturned points are a list of pairs of contact points. For each pair the first one is in the shape passed in  object, second one is in the collided shape from the physics space.","returnType":"Vector2[]"},{"name":"get_rest_info","signature":"get_rest_info(parameters: PhysicsShapeQueryParameters2D) -> Dictionary","description":"Checks the intersections of a shape, given through a  object, against the space. If it collides with more than one shape, the nearest one is selected. If the shape did not intersect anything, then an empty dictionary is returned instead.\n\t\t\t\tNote: This method does not take into account the motion property of the object. The returned object is a dictionary containing the following fields:\n\t\t\t\tcollider_id: The colliding object's ID.\n\t\t\t\tlinear_velocity: The colliding object's velocity . If the object is an , the result is (0, 0).\n\t\t\t\tnormal: The collision normal of the query shape at the intersection point, pointing away from the intersecting object.\n\t\t\t\tpoint: The intersection point.\n\t\t\t\trid: The intersecting object's .\n\t\t\t\tshape: The shape index of the colliding shape.","returnType":"Dictionary"},{"name":"intersect_point","signature":"intersect_point(parameters: PhysicsPointQueryParameters2D, max_results: int) -> Dictionary[]","description":"Checks whether a point is inside any solid shape. Position and other parameters are defined through . The shapes the point is inside of are returned in an array containing dictionaries with the following fields:\n\t\t\t\tcollider: The colliding object.\n\t\t\t\tcollider_id: The colliding object's ID.\n\t\t\t\trid: The intersecting object's .\n\t\t\t\tshape: The shape index of the colliding shape.\n\t\t\t\tThe number of intersections can be limited with the [param max_results] parameter, to reduce the processing time.\n\t\t\t\tNote: s and s in Segments build mode are not solid shapes. Therefore, they will not be detected.","returnType":"Dictionary[]"},{"name":"intersect_ray","signature":"intersect_ray(parameters: PhysicsRayQueryParameters2D) -> Dictionary","description":"Intersects a ray in a given space. Ray position and other parameters are defined through . The returned object is a dictionary with the following fields:\n\t\t\t\tcollider: The colliding object.\n\t\t\t\tcollider_id: The colliding object's ID.\n\t\t\t\tnormal: The object's surface normal at the intersection point, or Vector2(0, 0) if the ray starts inside the shape and [member PhysicsRayQueryParameters2D.hit_from_inside] is true.\n\t\t\t\tposition: The intersection point.\n\t\t\t\trid: The intersecting object's .\n\t\t\t\tshape: The shape index of the colliding shape.\n\t\t\t\tIf the ray did not intersect anything, then an empty dictionary is returned instead.","returnType":"Dictionary"},{"name":"intersect_shape","signature":"intersect_shape(parameters: PhysicsShapeQueryParameters2D, max_results: int) -> Dictionary[]","description":"Checks the intersections of a shape, given through a  object, against the space. The intersected shapes are returned in an array containing dictionaries with the following fields:\n\t\t\t\tcollider: The colliding object.\n\t\t\t\tcollider_id: The colliding object's ID.\n\t\t\t\trid: The intersecting object's .\n\t\t\t\tshape: The shape index of the colliding shape.\n\t\t\t\tThe number of intersections can be limited with the [param max_results] parameter, to reduce the processing time.","returnType":"Dictionary[]"}],"signals":[]},"PhysicsDirectSpaceState2DExtension":{"name":"PhysicsDirectSpaceState2DExtension","description":"Provides virtual methods that can be overridden to create custom  implementations.","inherits":"PhysicsDirectSpaceState2D","properties":[],"methods":[{"name":"_cast_motion","signature":"_cast_motion(shape_rid: RID, transform: Transform2D, motion: Vector2, margin: float, collision_mask: int, collide_with_bodies: bool, collide_with_areas: bool, closest_safe: float*, closest_unsafe: float*) -> bool","description":"","returnType":"bool"},{"name":"_collide_shape","signature":"_collide_shape(shape_rid: RID, transform: Transform2D, motion: Vector2, margin: float, collision_mask: int, collide_with_bodies: bool, collide_with_areas: bool, results: void*, max_results: int, result_count: int32_t*) -> bool","description":"","returnType":"bool"},{"name":"_intersect_point","signature":"_intersect_point(position: Vector2, canvas_instance_id: int, collision_mask: int, collide_with_bodies: bool, collide_with_areas: bool, results: PhysicsServer2DExtensionShapeResult*, max_results: int) -> int","description":"","returnType":"int"},{"name":"_intersect_ray","signature":"_intersect_ray(from: Vector2, to: Vector2, collision_mask: int, collide_with_bodies: bool, collide_with_areas: bool, hit_from_inside: bool, result: PhysicsServer2DExtensionRayResult*) -> bool","description":"","returnType":"bool"},{"name":"_intersect_shape","signature":"_intersect_shape(shape_rid: RID, transform: Transform2D, motion: Vector2, margin: float, collision_mask: int, collide_with_bodies: bool, collide_with_areas: bool, result: PhysicsServer2DExtensionShapeResult*, max_results: int) -> int","description":"","returnType":"int"},{"name":"_rest_info","signature":"_rest_info(shape_rid: RID, transform: Transform2D, motion: Vector2, margin: float, collision_mask: int, collide_with_bodies: bool, collide_with_areas: bool, rest_info: PhysicsServer2DExtensionShapeRestInfo*) -> bool","description":"","returnType":"bool"},{"name":"is_body_excluded_from_query","signature":"is_body_excluded_from_query(body: RID) -> bool","description":"","returnType":"bool"}],"signals":[]},"PhysicsDirectSpaceState3D":{"name":"PhysicsDirectSpaceState3D","description":"Provides direct access to a physics space in the .","inherits":"Object","properties":[],"methods":[{"name":"cast_motion","signature":"cast_motion(parameters: PhysicsShapeQueryParameters3D) -> PackedFloat32Array","description":"Checks how far a  can move without colliding. All the parameters for the query, including the shape, are supplied through a  object.\n\t\t\t\tReturns an array with the safe and unsafe proportions (between 0 and 1) of the motion. The safe proportion is the maximum fraction of the motion that can be made without a collision. The unsafe proportion is the minimum fraction of the distance that must be moved for a collision. If no collision is detected a result of [1.0, 1.0] will be returned.\n\t\t\t\tNote: Any s that the shape is already colliding with e.g. inside of, will be ignored. Use [method collide_shape] to determine the s that the shape is already colliding with.","returnType":"PackedFloat32Array"},{"name":"collide_shape","signature":"collide_shape(parameters: PhysicsShapeQueryParameters3D, max_results: int) -> Vector3[]","description":"Checks the intersections of a shape, given through a  object, against the space. The resulting array contains a list of points where the shape intersects another. Like with [method intersect_shape], the number of returned results can be limited to save processing time.\n\t\t\t\tReturned points are a list of pairs of contact points. For each pair the first one is in the shape passed in  object, second one is in the collided shape from the physics space.\n\t\t\t\tNote: This method does not take into account the motion property of the object.","returnType":"Vector3[]"},{"name":"get_rest_info","signature":"get_rest_info(parameters: PhysicsShapeQueryParameters3D) -> Dictionary","description":"Checks the intersections of a shape, given through a  object, against the space. If it collides with more than one shape, the nearest one is selected. The returned object is a dictionary containing the following fields:\n\t\t\t\tcollider_id: The colliding object's ID.\n\t\t\t\tlinear_velocity: The colliding object's velocity . If the object is an , the result is (0, 0, 0).\n\t\t\t\tnormal: The collision normal of the query shape at the intersection point, pointing away from the intersecting object.\n\t\t\t\tpoint: The intersection point.\n\t\t\t\trid: The intersecting object's .\n\t\t\t\tshape: The shape index of the colliding shape.\n\t\t\t\tIf the shape did not intersect anything, then an empty dictionary is returned instead.\n\t\t\t\tNote: This method does not take into account the motion property of the object.","returnType":"Dictionary"},{"name":"intersect_point","signature":"intersect_point(parameters: PhysicsPointQueryParameters3D, max_results: int) -> Dictionary[]","description":"Checks whether a point is inside any solid shape. Position and other parameters are defined through . The shapes the point is inside of are returned in an array containing dictionaries with the following fields:\n\t\t\t\tcollider: The colliding object.\n\t\t\t\tcollider_id: The colliding object's ID.\n\t\t\t\trid: The intersecting object's .\n\t\t\t\tshape: The shape index of the colliding shape.\n\t\t\t\tThe number of intersections can be limited with the [param max_results] parameter, to reduce the processing time.","returnType":"Dictionary[]"},{"name":"intersect_ray","signature":"intersect_ray(parameters: PhysicsRayQueryParameters3D) -> Dictionary","description":"Intersects a ray in a given space. Ray position and other parameters are defined through . The returned object is a dictionary with the following fields:\n\t\t\t\tcollider: The colliding object.\n\t\t\t\tcollider_id: The colliding object's ID.\n\t\t\t\tnormal: The object's surface normal at the intersection point, or Vector3(0, 0, 0) if the ray starts inside the shape and [member PhysicsRayQueryParameters3D.hit_from_inside] is true.\n\t\t\t\tposition: The intersection point.\n\t\t\t\tface_index: The face index at the intersection point.\n\t\t\t\tNote: Returns a valid number only if the intersected shape is a . Otherwise, -1 is returned.\n\t\t\t\trid: The intersecting object's .\n\t\t\t\tshape: The shape index of the colliding shape.\n\t\t\t\tIf the ray did not intersect anything, then an empty dictionary is returned instead.","returnType":"Dictionary"},{"name":"intersect_shape","signature":"intersect_shape(parameters: PhysicsShapeQueryParameters3D, max_results: int) -> Dictionary[]","description":"Checks the intersections of a shape, given through a  object, against the space. The intersected shapes are returned in an array containing dictionaries with the following fields:\n\t\t\t\tcollider: The colliding object.\n\t\t\t\tcollider_id: The colliding object's ID.\n\t\t\t\trid: The intersecting object's .\n\t\t\t\tshape: The shape index of the colliding shape.\n\t\t\t\tThe number of intersections can be limited with the [param max_results] parameter, to reduce the processing time.\n\t\t\t\tNote: This method does not take into account the motion property of the object.","returnType":"Dictionary[]"}],"signals":[]},"PhysicsDirectSpaceState3DExtension":{"name":"PhysicsDirectSpaceState3DExtension","description":"Provides virtual methods that can be overridden to create custom  implementations.","inherits":"PhysicsDirectSpaceState3D","properties":[],"methods":[{"name":"_cast_motion","signature":"_cast_motion(shape_rid: RID, transform: Transform3D, motion: Vector3, margin: float, collision_mask: int, collide_with_bodies: bool, collide_with_areas: bool, closest_safe: float*, closest_unsafe: float*, info: PhysicsServer3DExtensionShapeRestInfo*) -> bool","description":"","returnType":"bool"},{"name":"_collide_shape","signature":"_collide_shape(shape_rid: RID, transform: Transform3D, motion: Vector3, margin: float, collision_mask: int, collide_with_bodies: bool, collide_with_areas: bool, results: void*, max_results: int, result_count: int32_t*) -> bool","description":"","returnType":"bool"},{"name":"_get_closest_point_to_object_volume","signature":"_get_closest_point_to_object_volume(object: RID, point: Vector3) -> Vector3","description":"","returnType":"Vector3"},{"name":"_intersect_point","signature":"_intersect_point(position: Vector3, collision_mask: int, collide_with_bodies: bool, collide_with_areas: bool, results: PhysicsServer3DExtensionShapeResult*, max_results: int) -> int","description":"","returnType":"int"},{"name":"_intersect_ray","signature":"_intersect_ray(from: Vector3, to: Vector3, collision_mask: int, collide_with_bodies: bool, collide_with_areas: bool, hit_from_inside: bool, hit_back_faces: bool, pick_ray: bool, result: PhysicsServer3DExtensionRayResult*) -> bool","description":"","returnType":"bool"},{"name":"_intersect_shape","signature":"_intersect_shape(shape_rid: RID, transform: Transform3D, motion: Vector3, margin: float, collision_mask: int, collide_with_bodies: bool, collide_with_areas: bool, result_count: PhysicsServer3DExtensionShapeResult*, max_results: int) -> int","description":"","returnType":"int"},{"name":"_rest_info","signature":"_rest_info(shape_rid: RID, transform: Transform3D, motion: Vector3, margin: float, collision_mask: int, collide_with_bodies: bool, collide_with_areas: bool, rest_info: PhysicsServer3DExtensionShapeRestInfo*) -> bool","description":"","returnType":"bool"},{"name":"is_body_excluded_from_query","signature":"is_body_excluded_from_query(body: RID) -> bool","description":"","returnType":"bool"}],"signals":[]},"PhysicsMaterial":{"name":"PhysicsMaterial","description":"Holds physics-related properties of a surface, namely its roughness and bounciness.","inherits":"Resource","properties":[{"name":"absorbent","type":"bool","description":"If [code]true[/code], subtracts the bounciness from the colliding object's bounciness instead of adding it."},{"name":"bounce","type":"float","description":"The body's bounciness. Values range from [code]0[/code] (no bounce) to [code]1[/code] (full bounciness).\n\t\t\t[b]Note:[/b] Even with [member bounce] set to [code]1.0[/code], some energy will be lost over time due to linear and angular damping. To have a physics body that preserves all its energy over time, set [member bounce] to [code]1.0[/code], the body's linear damp mode to [b]Replace[/b] (if applicable), its linear damp to [code]0.0[/code], its angular damp mode to [b]Replace[/b] (if applicable), and its angular damp to [code]0.0[/code]."},{"name":"friction","type":"float","description":"The body's friction. Values range from [code]0[/code] (frictionless) to [code]1[/code] (maximum friction)."},{"name":"rough","type":"bool","description":"If [code]true[/code], the physics engine will use the friction of the object marked as \"rough\" when two objects collide. If [code]false[/code], the physics engine will use the lowest friction of all colliding objects instead. If [code]true[/code] for both colliding objects, the physics engine will use the highest friction."}],"methods":[],"signals":[]},"PhysicsPointQueryParameters2D":{"name":"PhysicsPointQueryParameters2D","description":"Provides parameters for [method PhysicsDirectSpaceState2D.intersect_point].","inherits":"RefCounted","properties":[{"name":"canvas_instance_id","type":"int","description":"If different from [code]0[/code], restricts the query to a specific canvas layer specified by its instance ID. See [method Object.get_instance_id].\n\t\t\tIf [code]0[/code], restricts the query to the Viewport's default canvas layer."},{"name":"collide_with_areas","type":"bool","description":"If [code]true[/code], the query will take [Area2D]s into account."},{"name":"collide_with_bodies","type":"bool","description":"If [code]true[/code], the query will take [PhysicsBody2D]s into account."},{"name":"collision_mask","type":"int","description":"The physics layers the query will detect (as a bitmask). By default, all collision layers are detected. See [url=$DOCS_URL/tutorials/physics/physics_introduction.html#collision-layers-and-masks]Collision layers and masks[/url] in the documentation for more information."},{"name":"exclude","type":"RID[]","description":"The list of object [RID]s that will be excluded from collisions. Use [method CollisionObject2D.get_rid] to get the [RID] associated with a [CollisionObject2D]-derived node.\n\t\t\t[b]Note:[/b] The returned array is copied and any changes to it will not update the original property value. To update the value you need to modify the returned array, and then assign it to the property again."},{"name":"position","type":"Vector2","description":"The position being queried for, in global coordinates."}],"methods":[],"signals":[]},"PhysicsPointQueryParameters3D":{"name":"PhysicsPointQueryParameters3D","description":"Provides parameters for [method PhysicsDirectSpaceState3D.intersect_point].","inherits":"RefCounted","properties":[{"name":"collide_with_areas","type":"bool","description":"If [code]true[/code], the query will take [Area3D]s into account."},{"name":"collide_with_bodies","type":"bool","description":"If [code]true[/code], the query will take [PhysicsBody3D]s into account."},{"name":"collision_mask","type":"int","description":"The physics layers the query will detect (as a bitmask). By default, all collision layers are detected. See [url=$DOCS_URL/tutorials/physics/physics_introduction.html#collision-layers-and-masks]Collision layers and masks[/url] in the documentation for more information."},{"name":"exclude","type":"RID[]","description":"The list of object [RID]s that will be excluded from collisions. Use [method CollisionObject3D.get_rid] to get the [RID] associated with a [CollisionObject3D]-derived node.\n\t\t\t[b]Note:[/b] The returned array is copied and any changes to it will not update the original property value. To update the value you need to modify the returned array, and then assign it to the property again."},{"name":"position","type":"Vector3","description":"The position being queried for, in global coordinates."}],"methods":[],"signals":[]},"PhysicsRayQueryParameters2D":{"name":"PhysicsRayQueryParameters2D","description":"Provides parameters for [method PhysicsDirectSpaceState2D.intersect_ray].","inherits":"RefCounted","properties":[{"name":"collide_with_areas","type":"bool","description":"If [code]true[/code], the query will take [Area2D]s into account."},{"name":"collide_with_bodies","type":"bool","description":"If [code]true[/code], the query will take [PhysicsBody2D]s into account."},{"name":"collision_mask","type":"int","description":"The physics layers the query will detect (as a bitmask). By default, all collision layers are detected. See [url=$DOCS_URL/tutorials/physics/physics_introduction.html#collision-layers-and-masks]Collision layers and masks[/url] in the documentation for more information."},{"name":"exclude","type":"RID[]","description":"The list of object [RID]s that will be excluded from collisions. Use [method CollisionObject2D.get_rid] to get the [RID] associated with a [CollisionObject2D]-derived node.\n\t\t\t[b]Note:[/b] The returned array is copied and any changes to it will not update the original property value. To update the value you need to modify the returned array, and then assign it to the property again."},{"name":"from","type":"Vector2","description":"The starting point of the ray being queried for, in global coordinates."},{"name":"hit_from_inside","type":"bool","description":"If [code]true[/code], the query will detect a hit when starting inside shapes. In this case the collision normal will be [code]Vector2(0, 0)[/code]. Does not affect concave polygon shapes."},{"name":"to","type":"Vector2","description":"The ending point of the ray being queried for, in global coordinates."}],"methods":[{"name":"create","signature":"create(from: Vector2, to: Vector2, collision_mask: int, exclude: RID[]) -> PhysicsRayQueryParameters2D","description":"Returns a new, pre-configured  object. Use it to quickly create query parameters using the most common options.\n\t\t\t\t\n\t\t\t\tvar query = PhysicsRayQueryParameters2D.create(global_position, global_position + Vector2(0, 100))\n\t\t\t\tvar collision = get_world_2d().direct_space_state.intersect_ray(query)\n\t\t\t\t","returnType":"PhysicsRayQueryParameters2D"}],"signals":[]},"PhysicsRayQueryParameters3D":{"name":"PhysicsRayQueryParameters3D","description":"Provides parameters for [method PhysicsDirectSpaceState3D.intersect_ray].","inherits":"RefCounted","properties":[{"name":"collide_with_areas","type":"bool","description":"If [code]true[/code], the query will take [Area3D]s into account."},{"name":"collide_with_bodies","type":"bool","description":"If [code]true[/code], the query will take [PhysicsBody3D]s into account."},{"name":"collision_mask","type":"int","description":"The physics layers the query will detect (as a bitmask). By default, all collision layers are detected. See [url=$DOCS_URL/tutorials/physics/physics_introduction.html#collision-layers-and-masks]Collision layers and masks[/url] in the documentation for more information."},{"name":"exclude","type":"RID[]","description":"The list of object [RID]s that will be excluded from collisions. Use [method CollisionObject3D.get_rid] to get the [RID] associated with a [CollisionObject3D]-derived node.\n\t\t\t[b]Note:[/b] The returned array is copied and any changes to it will not update the original property value. To update the value you need to modify the returned array, and then assign it to the property again."},{"name":"from","type":"Vector3","description":"The starting point of the ray being queried for, in global coordinates."},{"name":"hit_back_faces","type":"bool","description":"If [code]true[/code], the query will hit back faces with concave polygon shapes with back face enabled or heightmap shapes."},{"name":"hit_from_inside","type":"bool","description":"If [code]true[/code], the query will detect a hit when starting inside shapes. In this case the collision normal will be [code]Vector3(0, 0, 0)[/code]. Does not affect concave polygon shapes or heightmap shapes."},{"name":"to","type":"Vector3","description":"The ending point of the ray being queried for, in global coordinates."}],"methods":[{"name":"create","signature":"create(from: Vector3, to: Vector3, collision_mask: int, exclude: RID[]) -> PhysicsRayQueryParameters3D","description":"Returns a new, pre-configured  object. Use it to quickly create query parameters using the most common options.\n\t\t\t\t\n\t\t\t\tvar query = PhysicsRayQueryParameters3D.create(position, position + Vector3(0, -10, 0))\n\t\t\t\tvar collision = get_world_3d().direct_space_state.intersect_ray(query)\n\t\t\t\t","returnType":"PhysicsRayQueryParameters3D"}],"signals":[]},"PhysicsServer2D":{"name":"PhysicsServer2D","description":"A server interface for low-level 2D physics access.","inherits":"Object","properties":[],"methods":[{"name":"area_add_shape","signature":"area_add_shape(area: RID, shape: RID, transform: Transform2D, disabled: bool) -> void","description":"Adds a shape to the area, with the given local transform. The shape (together with its [param transform] and [param disabled] properties) is added to an array of shapes, and the shapes of an area are usually referenced by their index in this array.","returnType":"void"},{"name":"area_attach_canvas_instance_id","signature":"area_attach_canvas_instance_id(area: RID, id: int) -> void","description":"Attaches the ObjectID of a canvas to the area. Use [method Object.get_instance_id] to get the ObjectID of a .","returnType":"void"},{"name":"area_attach_object_instance_id","signature":"area_attach_object_instance_id(area: RID, id: int) -> void","description":"Attaches the ObjectID of an  to the area. Use [method Object.get_instance_id] to get the ObjectID of a .","returnType":"void"},{"name":"area_clear_shapes","signature":"area_clear_shapes(area: RID) -> void","description":"Removes all shapes from the area. This does not delete the shapes themselves, so they can continue to be used elsewhere or added back later.","returnType":"void"},{"name":"area_create","signature":"area_create() -> RID","description":"Creates a 2D area object in the physics server, and returns the  that identifies it. The default settings for the created area include a collision layer and mask set to 1, and monitorable set to false.\n\t\t\t\tUse [method area_add_shape] to add shapes to it, use [method area_set_transform] to set its transform, and use [method area_set_space] to add the area to a space. If you want the area to be detectable use [method area_set_monitorable].","returnType":"RID"},{"name":"area_get_canvas_instance_id","signature":"area_get_canvas_instance_id(area: RID) -> int","description":"Returns the ObjectID of the canvas attached to the area. Use [method @GlobalScope.instance_from_id] to retrieve a  from a nonzero ObjectID.","returnType":"int"},{"name":"area_get_collision_layer","signature":"area_get_collision_layer(area: RID) -> int","description":"Returns the physics layer or layers the area belongs to, as a bitmask.","returnType":"int"},{"name":"area_get_collision_mask","signature":"area_get_collision_mask(area: RID) -> int","description":"Returns the physics layer or layers the area can contact with, as a bitmask.","returnType":"int"},{"name":"area_get_object_instance_id","signature":"area_get_object_instance_id(area: RID) -> int","description":"Returns the ObjectID attached to the area. Use [method @GlobalScope.instance_from_id] to retrieve an  from a nonzero ObjectID.","returnType":"int"},{"name":"area_get_param","signature":"area_get_param(area: RID, param: int) -> Variant","description":"Returns the value of the given area parameter. See [enum AreaParameter] for the list of available parameters.","returnType":"Variant"},{"name":"area_get_shape","signature":"area_get_shape(area: RID, shape_idx: int) -> RID","description":"Returns the  of the shape with the given index in the area's array of shapes.","returnType":"RID"},{"name":"area_get_shape_count","signature":"area_get_shape_count(area: RID) -> int","description":"Returns the number of shapes added to the area.","returnType":"int"},{"name":"area_get_shape_transform","signature":"area_get_shape_transform(area: RID, shape_idx: int) -> Transform2D","description":"Returns the local transform matrix of the shape with the given index in the area's array of shapes.","returnType":"Transform2D"},{"name":"area_get_space","signature":"area_get_space(area: RID) -> RID","description":"Returns the  of the space assigned to the area. Returns an empty  if no space is assigned.","returnType":"RID"},{"name":"area_get_transform","signature":"area_get_transform(area: RID) -> Transform2D","description":"Returns the transform matrix of the area.","returnType":"Transform2D"},{"name":"area_remove_shape","signature":"area_remove_shape(area: RID, shape_idx: int) -> void","description":"Removes the shape with the given index from the area's array of shapes. The shape itself is not deleted, so it can continue to be used elsewhere or added back later. As a result of this operation, the area's shapes which used to have indices higher than [param shape_idx] will have their index decreased by one.","returnType":"void"},{"name":"area_set_area_monitor_callback","signature":"area_set_area_monitor_callback(area: RID, callback: Callable) -> void","description":"Sets the area's area monitor callback. This callback will be called when any other (shape of an) area enters or exits (a shape of) the given area, and must take the following five parameters:\n\t\t\t\t1. an integer status: either [constant AREA_BODY_ADDED] or [constant AREA_BODY_REMOVED] depending on whether the other area's shape entered or exited the area,\n\t\t\t\t2. an  area_rid: the  of the other area that entered or exited the area,\n\t\t\t\t3. an integer instance_id: the ObjectID attached to the other area,\n\t\t\t\t4. an integer area_shape_idx: the index of the shape of the other area that entered or exited the area,\n\t\t\t\t5. an integer self_shape_idx: the index of the shape of the area where the other area entered or exited.\n\t\t\t\tBy counting (or keeping track of) the shapes that enter and exit, it can be determined if an area (with all its shapes) is entering for the first time or exiting for the last time.","returnType":"void"},{"name":"area_set_collision_layer","signature":"area_set_collision_layer(area: RID, layer: int) -> void","description":"Assigns the area to one or many physics layers, via a bitmask.","returnType":"void"},{"name":"area_set_collision_mask","signature":"area_set_collision_mask(area: RID, mask: int) -> void","description":"Sets which physics layers the area will monitor, via a bitmask.","returnType":"void"},{"name":"area_set_monitor_callback","signature":"area_set_monitor_callback(area: RID, callback: Callable) -> void","description":"Sets the area's body monitor callback. This callback will be called when any other (shape of a) body enters or exits (a shape of) the given area, and must take the following five parameters:\n\t\t\t\t1. an integer status: either [constant AREA_BODY_ADDED] or [constant AREA_BODY_REMOVED] depending on whether the other body shape entered or exited the area,\n\t\t\t\t2. an  body_rid: the  of the body that entered or exited the area,\n\t\t\t\t3. an integer instance_id: the ObjectID attached to the body,\n\t\t\t\t4. an integer body_shape_idx: the index of the shape of the body that entered or exited the area,\n\t\t\t\t5. an integer self_shape_idx: the index of the shape of the area where the body entered or exited.\n\t\t\t\tBy counting (or keeping track of) the shapes that enter and exit, it can be determined if a body (with all its shapes) is entering for the first time or exiting for the last time.","returnType":"void"},{"name":"area_set_monitorable","signature":"area_set_monitorable(area: RID, monitorable: bool) -> void","description":"Sets whether the area is monitorable or not. If [param monitorable] is true, the area monitoring callback of other areas will be called when this area enters or exits them.","returnType":"void"},{"name":"area_set_param","signature":"area_set_param(area: RID, param: int, value: Variant) -> void","description":"Sets the value of the given area parameter. See [enum AreaParameter] for the list of available parameters.","returnType":"void"},{"name":"area_set_shape","signature":"area_set_shape(area: RID, shape_idx: int, shape: RID) -> void","description":"Replaces the area's shape at the given index by another shape, while not affecting the transform and disabled properties at the same index.","returnType":"void"},{"name":"area_set_shape_disabled","signature":"area_set_shape_disabled(area: RID, shape_idx: int, disabled: bool) -> void","description":"Sets the disabled property of the area's shape with the given index. If [param disabled] is true, then the shape will not detect any other shapes entering or exiting it.","returnType":"void"},{"name":"area_set_shape_transform","signature":"area_set_shape_transform(area: RID, shape_idx: int, transform: Transform2D) -> void","description":"Sets the local transform matrix of the area's shape with the given index.","returnType":"void"},{"name":"area_set_space","signature":"area_set_space(area: RID, space: RID) -> void","description":"Adds the area to the given space, after removing the area from the previously assigned space (if any).\n\t\t\t\tNote: To remove an area from a space without immediately adding it back elsewhere, use PhysicsServer2D.area_set_space(area, RID()).","returnType":"void"},{"name":"area_set_transform","signature":"area_set_transform(area: RID, transform: Transform2D) -> void","description":"Sets the transform matrix of the area.","returnType":"void"},{"name":"body_add_collision_exception","signature":"body_add_collision_exception(body: RID, excepted_body: RID) -> void","description":"Adds [param excepted_body] to the body's list of collision exceptions, so that collisions with it are ignored.","returnType":"void"},{"name":"body_add_constant_central_force","signature":"body_add_constant_central_force(body: RID, force: Vector2) -> void","description":"Adds a constant directional force to the body. The force does not affect rotation. The force remains applied over time until cleared with PhysicsServer2D.body_set_constant_force(body, Vector2(0, 0)).\n\t\t\t\tThis is equivalent to using [method body_add_constant_force] at the body's center of mass.","returnType":"void"},{"name":"body_add_constant_force","signature":"body_add_constant_force(body: RID, force: Vector2, position: Vector2) -> void","description":"Adds a constant positioned force to the body. The force can affect rotation if [param position] is different from the body's center of mass. The force remains applied over time until cleared with PhysicsServer2D.body_set_constant_force(body, Vector2(0, 0)).\n\t\t\t\t[param position] is the offset from the body origin in global coordinates.","returnType":"void"},{"name":"body_add_constant_torque","signature":"body_add_constant_torque(body: RID, torque: float) -> void","description":"Adds a constant rotational force to the body. The force does not affect position. The force remains applied over time until cleared with PhysicsServer2D.body_set_constant_torque(body, 0).","returnType":"void"},{"name":"body_add_shape","signature":"body_add_shape(body: RID, shape: RID, transform: Transform2D, disabled: bool) -> void","description":"Adds a shape to the area, with the given local transform. The shape (together with its [param transform] and [param disabled] properties) is added to an array of shapes, and the shapes of a body are usually referenced by their index in this array.","returnType":"void"},{"name":"body_apply_central_force","signature":"body_apply_central_force(body: RID, force: Vector2) -> void","description":"Applies a directional force to the body, at the body's center of mass. The force does not affect rotation. A force is time dependent and meant to be applied every physics update.\n\t\t\t\tThis is equivalent to using [method body_apply_force] at the body's center of mass.","returnType":"void"},{"name":"body_apply_central_impulse","signature":"body_apply_central_impulse(body: RID, impulse: Vector2) -> void","description":"Applies a directional impulse to the body, at the body's center of mass. The impulse does not affect rotation.\n\t\t\t\tAn impulse is time-independent! Applying an impulse every frame would result in a framerate-dependent force. For this reason, it should only be used when simulating one-time impacts (use the \"_force\" functions otherwise).\n\t\t\t\tThis is equivalent to using [method body_apply_impulse] at the body's center of mass.","returnType":"void"},{"name":"body_apply_force","signature":"body_apply_force(body: RID, force: Vector2, position: Vector2) -> void","description":"Applies a positioned force to the body. The force can affect rotation if [param position] is different from the body's center of mass. A force is time dependent and meant to be applied every physics update.\n\t\t\t\t[param position] is the offset from the body origin in global coordinates.","returnType":"void"},{"name":"body_apply_impulse","signature":"body_apply_impulse(body: RID, impulse: Vector2, position: Vector2) -> void","description":"Applies a positioned impulse to the body. The impulse can affect rotation if [param position] is different from the body's center of mass.\n\t\t\t\tAn impulse is time-independent! Applying an impulse every frame would result in a framerate-dependent force. For this reason, it should only be used when simulating one-time impacts (use the \"_force\" functions otherwise).\n\t\t\t\t[param position] is the offset from the body origin in global coordinates.","returnType":"void"},{"name":"body_apply_torque","signature":"body_apply_torque(body: RID, torque: float) -> void","description":"Applies a rotational force to the body. The force does not affect position. A force is time dependent and meant to be applied every physics update.","returnType":"void"},{"name":"body_apply_torque_impulse","signature":"body_apply_torque_impulse(body: RID, impulse: float) -> void","description":"Applies a rotational impulse to the body. The impulse does not affect position.\n\t\t\t\tAn impulse is time-independent! Applying an impulse every frame would result in a framerate-dependent force. For this reason, it should only be used when simulating one-time impacts (use the \"_force\" functions otherwise).","returnType":"void"},{"name":"body_attach_canvas_instance_id","signature":"body_attach_canvas_instance_id(body: RID, id: int) -> void","description":"Attaches the ObjectID of a canvas to the body. Use [method Object.get_instance_id] to get the ObjectID of a .","returnType":"void"},{"name":"body_attach_object_instance_id","signature":"body_attach_object_instance_id(body: RID, id: int) -> void","description":"Attaches the ObjectID of an  to the body. Use [method Object.get_instance_id] to get the ObjectID of a .","returnType":"void"},{"name":"body_clear_shapes","signature":"body_clear_shapes(body: RID) -> void","description":"Removes all shapes from the body. This does not delete the shapes themselves, so they can continue to be used elsewhere or added back later.","returnType":"void"},{"name":"body_create","signature":"body_create() -> RID","description":"Creates a 2D body object in the physics server, and returns the  that identifies it. The default settings for the created area include a collision layer and mask set to 1, and body mode set to [constant BODY_MODE_RIGID].\n\t\t\t\tUse [method body_add_shape] to add shapes to it, use [method body_set_state] to set its transform, and use [method body_set_space] to add the body to a space.","returnType":"RID"},{"name":"body_get_canvas_instance_id","signature":"body_get_canvas_instance_id(body: RID) -> int","description":"Returns the ObjectID of the canvas attached to the body. Use [method @GlobalScope.instance_from_id] to retrieve a  from a nonzero ObjectID.","returnType":"int"},{"name":"body_get_collision_layer","signature":"body_get_collision_layer(body: RID) -> int","description":"Returns the physics layer or layers the body belongs to, as a bitmask.","returnType":"int"},{"name":"body_get_collision_mask","signature":"body_get_collision_mask(body: RID) -> int","description":"Returns the physics layer or layers the body can collide with, as a bitmask.","returnType":"int"},{"name":"body_get_collision_priority","signature":"body_get_collision_priority(body: RID) -> float","description":"Returns the body's collision priority. This is used in the depenetration phase of [method body_test_motion]. The higher the priority is, the lower the penetration into the body will be.","returnType":"float"},{"name":"body_get_constant_force","signature":"body_get_constant_force(body: RID) -> Vector2","description":"Returns the body's total constant positional force applied during each physics update.\n\t\t\t\tSee [method body_add_constant_force] and [method body_add_constant_central_force].","returnType":"Vector2"},{"name":"body_get_constant_torque","signature":"body_get_constant_torque(body: RID) -> float","description":"Returns the body's total constant rotational force applied during each physics update.\n\t\t\t\tSee [method body_add_constant_torque].","returnType":"float"},{"name":"body_get_continuous_collision_detection_mode","signature":"body_get_continuous_collision_detection_mode(body: RID) -> int","description":"Returns the body's continuous collision detection mode (see [enum CCDMode]).","returnType":"int"},{"name":"body_get_direct_state","signature":"body_get_direct_state(body: RID) -> PhysicsDirectBodyState2D","description":"Returns the  of the body. Returns null if the body is destroyed or not assigned to a space.","returnType":"PhysicsDirectBodyState2D"},{"name":"body_get_max_contacts_reported","signature":"body_get_max_contacts_reported(body: RID) -> int","description":"Returns the maximum number of contacts that the body can report. See [method body_set_max_contacts_reported].","returnType":"int"},{"name":"body_get_mode","signature":"body_get_mode(body: RID) -> int","description":"Returns the body's mode (see [enum BodyMode]).","returnType":"int"},{"name":"body_get_object_instance_id","signature":"body_get_object_instance_id(body: RID) -> int","description":"Returns the ObjectID attached to the body. Use [method @GlobalScope.instance_from_id] to retrieve an  from a nonzero ObjectID.","returnType":"int"},{"name":"body_get_param","signature":"body_get_param(body: RID, param: int) -> Variant","description":"Returns the value of the given body parameter. See [enum BodyParameter] for the list of available parameters.","returnType":"Variant"},{"name":"body_get_shape","signature":"body_get_shape(body: RID, shape_idx: int) -> RID","description":"Returns the  of the shape with the given index in the body's array of shapes.","returnType":"RID"},{"name":"body_get_shape_count","signature":"body_get_shape_count(body: RID) -> int","description":"Returns the number of shapes added to the body.","returnType":"int"},{"name":"body_get_shape_transform","signature":"body_get_shape_transform(body: RID, shape_idx: int) -> Transform2D","description":"Returns the local transform matrix of the shape with the given index in the area's array of shapes.","returnType":"Transform2D"},{"name":"body_get_space","signature":"body_get_space(body: RID) -> RID","description":"Returns the  of the space assigned to the body. Returns an empty  if no space is assigned.","returnType":"RID"},{"name":"body_get_state","signature":"body_get_state(body: RID, state: int) -> Variant","description":"Returns the value of the given state of the body. See [enum BodyState] for the list of available states.","returnType":"Variant"},{"name":"body_is_omitting_force_integration","signature":"body_is_omitting_force_integration(body: RID) -> bool","description":"Returns true if the body is omitting the standard force integration. See [method body_set_omit_force_integration].","returnType":"bool"},{"name":"body_remove_collision_exception","signature":"body_remove_collision_exception(body: RID, excepted_body: RID) -> void","description":"Removes [param excepted_body] from the body's list of collision exceptions, so that collisions with it are no longer ignored.","returnType":"void"},{"name":"body_remove_shape","signature":"body_remove_shape(body: RID, shape_idx: int) -> void","description":"Removes the shape with the given index from the body's array of shapes. The shape itself is not deleted, so it can continue to be used elsewhere or added back later. As a result of this operation, the body's shapes which used to have indices higher than [param shape_idx] will have their index decreased by one.","returnType":"void"},{"name":"body_reset_mass_properties","signature":"body_reset_mass_properties(body: RID) -> void","description":"Restores the default inertia and center of mass of the body based on its shapes. This undoes any custom values previously set using [method body_set_param].","returnType":"void"},{"name":"body_set_axis_velocity","signature":"body_set_axis_velocity(body: RID, axis_velocity: Vector2) -> void","description":"Modifies the body's linear velocity so that its projection to the axis axis_velocity.normalized() is exactly axis_velocity.length(). This is useful for jumping behavior.","returnType":"void"},{"name":"body_set_collision_layer","signature":"body_set_collision_layer(body: RID, layer: int) -> void","description":"Sets the physics layer or layers the body belongs to, via a bitmask.","returnType":"void"},{"name":"body_set_collision_mask","signature":"body_set_collision_mask(body: RID, mask: int) -> void","description":"Sets the physics layer or layers the body can collide with, via a bitmask.","returnType":"void"},{"name":"body_set_collision_priority","signature":"body_set_collision_priority(body: RID, priority: float) -> void","description":"Sets the body's collision priority. This is used in the depenetration phase of [method body_test_motion]. The higher the priority is, the lower the penetration into the body will be.","returnType":"void"},{"name":"body_set_constant_force","signature":"body_set_constant_force(body: RID, force: Vector2) -> void","description":"Sets the body's total constant positional force applied during each physics update.\n\t\t\t\tSee [method body_add_constant_force] and [method body_add_constant_central_force].","returnType":"void"},{"name":"body_set_constant_torque","signature":"body_set_constant_torque(body: RID, torque: float) -> void","description":"Sets the body's total constant rotational force applied during each physics update.\n\t\t\t\tSee [method body_add_constant_torque].","returnType":"void"},{"name":"body_set_continuous_collision_detection_mode","signature":"body_set_continuous_collision_detection_mode(body: RID, mode: int) -> void","description":"Sets the continuous collision detection mode using one of the [enum CCDMode] constants.\n\t\t\t\tContinuous collision detection tries to predict where a moving body would collide in between physics updates, instead of moving it and correcting its movement if it collided.","returnType":"void"},{"name":"body_set_force_integration_callback","signature":"body_set_force_integration_callback(body: RID, callable: Callable, userdata: Variant) -> void","description":"Sets the body's custom force integration callback function to [param callable]. Use an empty  ([code skip-lint]Callable()) to clear the custom callback.\n\t\t\t\tThe function [param callable] will be called every physics tick, before the standard force integration (see [method body_set_omit_force_integration]). It can be used for example to update the body's linear and angular velocity based on contact with other bodies.\n\t\t\t\tIf [param userdata] is not null, the function [param callable] must take the following two parameters:\n\t\t\t\t1. state: a  used to retrieve and modify the body's state,\n\t\t\t\t2. [code skip-lint]userdata: a ; its value will be the [param userdata] passed into this method.\n\t\t\t\tIf [param userdata] is null, then [param callable] must take only the state parameter.","returnType":"void"},{"name":"body_set_max_contacts_reported","signature":"body_set_max_contacts_reported(body: RID, amount: int) -> void","description":"Sets the maximum number of contacts that the body can report. If [param amount] is greater than zero, then the body will keep track of at most this many contacts with other bodies.","returnType":"void"},{"name":"body_set_mode","signature":"body_set_mode(body: RID, mode: int) -> void","description":"Sets the body's mode. See [enum BodyMode] for the list of available modes.","returnType":"void"},{"name":"body_set_omit_force_integration","signature":"body_set_omit_force_integration(body: RID, enable: bool) -> void","description":"Sets whether the body omits the standard force integration. If [param enable] is true, the body will not automatically use applied forces, torques, and damping to update the body's linear and angular velocity. In this case, [method body_set_force_integration_callback] can be used to manually update the linear and angular velocity instead.\n\t\t\t\tThis method is called when the property [member RigidBody2D.custom_integrator] is set.","returnType":"void"},{"name":"body_set_param","signature":"body_set_param(body: RID, param: int, value: Variant) -> void","description":"Sets the value of the given body parameter. See [enum BodyParameter] for the list of available parameters.","returnType":"void"},{"name":"body_set_shape","signature":"body_set_shape(body: RID, shape_idx: int, shape: RID) -> void","description":"Replaces the body's shape at the given index by another shape, while not affecting the transform, disabled, and one-way collision properties at the same index.","returnType":"void"},{"name":"body_set_shape_as_one_way_collision","signature":"body_set_shape_as_one_way_collision(body: RID, shape_idx: int, enable: bool, margin: float) -> void","description":"Sets the one-way collision properties of the body's shape with the given index. If [param enable] is true, the one-way collision direction given by the shape's local upward axis body_get_shape_transform(body, shape_idx).y will be used to ignore collisions with the shape in the opposite direction, and to ensure depenetration of kinematic bodies happens in this direction.","returnType":"void"},{"name":"body_set_shape_disabled","signature":"body_set_shape_disabled(body: RID, shape_idx: int, disabled: bool) -> void","description":"Sets the disabled property of the body's shape with the given index. If [param disabled] is true, then the shape will be ignored in all collision detection.","returnType":"void"},{"name":"body_set_shape_transform","signature":"body_set_shape_transform(body: RID, shape_idx: int, transform: Transform2D) -> void","description":"Sets the local transform matrix of the body's shape with the given index.","returnType":"void"},{"name":"body_set_space","signature":"body_set_space(body: RID, space: RID) -> void","description":"Adds the body to the given space, after removing the body from the previously assigned space (if any). If the body's mode is set to [constant BODY_MODE_RIGID], then adding the body to a space will have the following additional effects:\n\t\t\t\t- If the parameter [constant BODY_PARAM_CENTER_OF_MASS] has never been set explicitly, then the value of that parameter will be recalculated based on the body's shapes.\n\t\t\t\t- If the parameter [constant BODY_PARAM_INERTIA] is set to a value &lt;= 0.0, then the value of that parameter will be recalculated based on the body's shapes, mass, and center of mass.\n\t\t\t\tNote: To remove a body from a space without immediately adding it back elsewhere, use PhysicsServer2D.body_set_space(body, RID()).","returnType":"void"},{"name":"body_set_state","signature":"body_set_state(body: RID, state: int, value: Variant) -> void","description":"Sets the value of a body's state. See [enum BodyState] for the list of available states.\n\t\t\t\tNote: The state change doesn't take effect immediately. The state will change on the next physics frame.","returnType":"void"},{"name":"body_set_state_sync_callback","signature":"body_set_state_sync_callback(body: RID, callable: Callable) -> void","description":"Sets the body's state synchronization callback function to [param callable]. Use an empty  ([code skip-lint]Callable()) to clear the callback.\n\t\t\t\tThe function [param callable] will be called every physics frame, assuming that the body was active during the previous physics tick, and can be used to fetch the latest state from the physics server.\n\t\t\t\tThe function [param callable] must take the following parameters:\n\t\t\t\t1. state: a , used to retrieve the body's state.","returnType":"void"},{"name":"body_test_motion","signature":"body_test_motion(body: RID, parameters: PhysicsTestMotionParameters2D, result: PhysicsTestMotionResult2D) -> bool","description":"Returns true if a collision would result from moving the body along a motion vector from a given point in space. See  for the available motion parameters. Optionally a  object can be passed, which will be used to store the information about the resulting collision.","returnType":"bool"},{"name":"capsule_shape_create","signature":"capsule_shape_create() -> RID","description":"Creates a 2D capsule shape in the physics server, and returns the  that identifies it. Use [method shape_set_data] to set the capsule's height and radius.","returnType":"RID"},{"name":"circle_shape_create","signature":"circle_shape_create() -> RID","description":"Creates a 2D circle shape in the physics server, and returns the  that identifies it. Use [method shape_set_data] to set the circle's radius.","returnType":"RID"},{"name":"concave_polygon_shape_create","signature":"concave_polygon_shape_create() -> RID","description":"Creates a 2D concave polygon shape in the physics server, and returns the  that identifies it. Use [method shape_set_data] to set the concave polygon's segments.","returnType":"RID"},{"name":"convex_polygon_shape_create","signature":"convex_polygon_shape_create() -> RID","description":"Creates a 2D convex polygon shape in the physics server, and returns the  that identifies it. Use [method shape_set_data] to set the convex polygon's points.","returnType":"RID"},{"name":"damped_spring_joint_get_param","signature":"damped_spring_joint_get_param(joint: RID, param: int) -> float","description":"Returns the value of the given damped spring joint parameter. See [enum DampedSpringParam] for the list of available parameters.","returnType":"float"},{"name":"damped_spring_joint_set_param","signature":"damped_spring_joint_set_param(joint: RID, param: int, value: float) -> void","description":"Sets the value of the given damped spring joint parameter. See [enum DampedSpringParam] for the list of available parameters.","returnType":"void"},{"name":"free_rid","signature":"free_rid(rid: RID) -> void","description":"Destroys any of the objects created by PhysicsServer2D. If the  passed is not one of the objects that can be created by PhysicsServer2D, an error will be printed to the console.","returnType":"void"},{"name":"get_process_info","signature":"get_process_info(process_info: int) -> int","description":"Returns information about the current state of the 2D physics engine. See [enum ProcessInfo] for the list of available states.","returnType":"int"},{"name":"joint_clear","signature":"joint_clear(joint: RID) -> void","description":"Destroys the joint with the given , creates a new uninitialized joint, and makes the  refer to this new joint.","returnType":"void"},{"name":"joint_create","signature":"joint_create() -> RID","description":"Creates a 2D joint in the physics server, and returns the  that identifies it. To set the joint type, use [method joint_make_damped_spring], [method joint_make_groove] or [method joint_make_pin]. Use [method joint_set_param] to set generic joint parameters.","returnType":"RID"},{"name":"joint_disable_collisions_between_bodies","signature":"joint_disable_collisions_between_bodies(joint: RID, disable: bool) -> void","description":"Sets whether the bodies attached to the  will collide with each other.","returnType":"void"},{"name":"joint_get_param","signature":"joint_get_param(joint: RID, param: int) -> float","description":"Returns the value of the given joint parameter. See [enum JointParam] for the list of available parameters.","returnType":"float"},{"name":"joint_get_type","signature":"joint_get_type(joint: RID) -> int","description":"Returns the joint's type (see [enum JointType]).","returnType":"int"},{"name":"joint_is_disabled_collisions_between_bodies","signature":"joint_is_disabled_collisions_between_bodies(joint: RID) -> bool","description":"Returns whether the bodies attached to the  will collide with each other.","returnType":"bool"},{"name":"joint_make_damped_spring","signature":"joint_make_damped_spring(joint: RID, anchor_a: Vector2, anchor_b: Vector2, body_a: RID, body_b: RID) -> void","description":"Makes the joint a damped spring joint, attached at the point [param anchor_a] (given in global coordinates) on the body [param body_a] and at the point [param anchor_b] (given in global coordinates) on the body [param body_b]. To set the parameters which are specific to the damped spring, see [method damped_spring_joint_set_param].","returnType":"void"},{"name":"joint_make_groove","signature":"joint_make_groove(joint: RID, groove1_a: Vector2, groove2_a: Vector2, anchor_b: Vector2, body_a: RID, body_b: RID) -> void","description":"Makes the joint a groove joint.","returnType":"void"},{"name":"joint_make_pin","signature":"joint_make_pin(joint: RID, anchor: Vector2, body_a: RID, body_b: RID) -> void","description":"Makes the joint a pin joint. If [param body_b] is an empty , then [param body_a] is pinned to the point [param anchor] (given in global coordinates); otherwise, [param body_a] is pinned to [param body_b] at the point [param anchor] (given in global coordinates). To set the parameters which are specific to the pin joint, see [method pin_joint_set_param].","returnType":"void"},{"name":"joint_set_param","signature":"joint_set_param(joint: RID, param: int, value: float) -> void","description":"Sets the value of the given joint parameter. See [enum JointParam] for the list of available parameters.","returnType":"void"},{"name":"pin_joint_get_flag","signature":"pin_joint_get_flag(joint: RID, flag: int) -> bool","description":"Gets a pin joint flag (see [enum PinJointFlag] constants).","returnType":"bool"},{"name":"pin_joint_get_param","signature":"pin_joint_get_param(joint: RID, param: int) -> float","description":"Returns the value of a pin joint parameter. See [enum PinJointParam] for a list of available parameters.","returnType":"float"},{"name":"pin_joint_set_flag","signature":"pin_joint_set_flag(joint: RID, flag: int, enabled: bool) -> void","description":"Sets a pin joint flag (see [enum PinJointFlag] constants).","returnType":"void"},{"name":"pin_joint_set_param","signature":"pin_joint_set_param(joint: RID, param: int, value: float) -> void","description":"Sets a pin joint parameter. See [enum PinJointParam] for a list of available parameters.","returnType":"void"},{"name":"rectangle_shape_create","signature":"rectangle_shape_create() -> RID","description":"Creates a 2D rectangle shape in the physics server, and returns the  that identifies it. Use [method shape_set_data] to set the rectangle's half-extents.","returnType":"RID"},{"name":"segment_shape_create","signature":"segment_shape_create() -> RID","description":"Creates a 2D segment shape in the physics server, and returns the  that identifies it. Use [method shape_set_data] to set the segment's start and end points.","returnType":"RID"},{"name":"separation_ray_shape_create","signature":"separation_ray_shape_create() -> RID","description":"Creates a 2D separation ray shape in the physics server, and returns the  that identifies it. Use [method shape_set_data] to set the shape's length and slide_on_slope properties.","returnType":"RID"},{"name":"set_active","signature":"set_active(active: bool) -> void","description":"Activates or deactivates the 2D physics server. If [param active] is false, then the physics server will not do anything in its physics step.","returnType":"void"},{"name":"shape_get_data","signature":"shape_get_data(shape: RID) -> Variant","description":"Returns the shape data that defines the configuration of the shape, such as the half-extents of a rectangle or the segments of a concave shape. See [method shape_set_data] for the precise format of this data in each case.","returnType":"Variant"},{"name":"shape_get_type","signature":"shape_get_type(shape: RID) -> int","description":"Returns the shape's type (see [enum ShapeType]).","returnType":"int"},{"name":"shape_set_data","signature":"shape_set_data(shape: RID, data: Variant) -> void","description":"Sets the shape data that defines the configuration of the shape. The [param data] to be passed depends on the shape's type (see [method shape_get_type]):\n\t\t\t\t- [constant SHAPE_WORLD_BOUNDARY]: an array of length two containing a  normal direction and a  distance d,\n\t\t\t\t- [constant SHAPE_SEPARATION_RAY]: a dictionary containing the key length with a  value and the key slide_on_slope with a  value,\n\t\t\t\t- [constant SHAPE_SEGMENT]: a  rect containing the first point of the segment in rect.position and the second point of the segment in rect.size,\n\t\t\t\t- [constant SHAPE_CIRCLE]: a  radius,\n\t\t\t\t- [constant SHAPE_RECTANGLE]: a  half_extents,\n\t\t\t\t- [constant SHAPE_CAPSULE]: an array of length two (or a ) containing a  height and a  radius,\n\t\t\t\t- [constant SHAPE_CONVEX_POLYGON]: either a  of points defining a convex polygon in counterclockwise order (the clockwise outward normal of each segment formed by consecutive points is calculated internally), or a  of length divisible by four so that every 4-tuple of s contains the coordinates of a point followed by the coordinates of the clockwise outward normal vector to the segment between the current point and the next point,\n\t\t\t\t- [constant SHAPE_CONCAVE_POLYGON]: a  of length divisible by two (each pair of points forms one segment).\n\t\t\t\tWarning: In the case of [constant SHAPE_CONVEX_POLYGON], this method does not check if the points supplied actually form a convex polygon (unlike the [member CollisionPolygon2D.polygon] property).","returnType":"void"},{"name":"space_create","signature":"space_create() -> RID","description":"Creates a 2D space in the physics server, and returns the  that identifies it. A space contains bodies and areas, and controls the stepping of the physics simulation of the objects in it.","returnType":"RID"},{"name":"space_get_direct_state","signature":"space_get_direct_state(space: RID) -> PhysicsDirectSpaceState2D","description":"Returns the state of a space, a . This object can be used for collision/intersection queries.","returnType":"PhysicsDirectSpaceState2D"},{"name":"space_get_param","signature":"space_get_param(space: RID, param: int) -> float","description":"Returns the value of the given space parameter. See [enum SpaceParameter] for the list of available parameters.","returnType":"float"},{"name":"space_is_active","signature":"space_is_active(space: RID) -> bool","description":"Returns true if the space is active.","returnType":"bool"},{"name":"space_set_active","signature":"space_set_active(space: RID, active: bool) -> void","description":"Activates or deactivates the space. If [param active] is false, then the physics server will not do anything with this space in its physics step.","returnType":"void"},{"name":"space_set_param","signature":"space_set_param(space: RID, param: int, value: float) -> void","description":"Sets the value of the given space parameter. See [enum SpaceParameter] for the list of available parameters.","returnType":"void"},{"name":"world_boundary_shape_create","signature":"world_boundary_shape_create() -> RID","description":"Creates a 2D world boundary shape in the physics server, and returns the  that identifies it. Use [method shape_set_data] to set the shape's normal direction and distance properties.","returnType":"RID"}],"signals":[]},"PhysicsServer2DExtension":{"name":"PhysicsServer2DExtension","description":"Provides virtual methods that can be overridden to create custom  implementations.","inherits":"PhysicsServer2D","properties":[],"methods":[{"name":"_area_add_shape","signature":"_area_add_shape(area: RID, shape: RID, transform: Transform2D, disabled: bool) -> void","description":"Overridable version of [method PhysicsServer2D.area_add_shape].","returnType":"void"},{"name":"_area_attach_canvas_instance_id","signature":"_area_attach_canvas_instance_id(area: RID, id: int) -> void","description":"Overridable version of [method PhysicsServer2D.area_attach_canvas_instance_id].","returnType":"void"},{"name":"_area_attach_object_instance_id","signature":"_area_attach_object_instance_id(area: RID, id: int) -> void","description":"Overridable version of [method PhysicsServer2D.area_attach_object_instance_id].","returnType":"void"},{"name":"_area_clear_shapes","signature":"_area_clear_shapes(area: RID) -> void","description":"Overridable version of [method PhysicsServer2D.area_clear_shapes].","returnType":"void"},{"name":"_area_create","signature":"_area_create() -> RID","description":"Overridable version of [method PhysicsServer2D.area_create].","returnType":"RID"},{"name":"_area_get_canvas_instance_id","signature":"_area_get_canvas_instance_id(area: RID) -> int","description":"Overridable version of [method PhysicsServer2D.area_get_canvas_instance_id].","returnType":"int"},{"name":"_area_get_collision_layer","signature":"_area_get_collision_layer(area: RID) -> int","description":"Overridable version of [method PhysicsServer2D.area_get_collision_layer].","returnType":"int"},{"name":"_area_get_collision_mask","signature":"_area_get_collision_mask(area: RID) -> int","description":"Overridable version of [method PhysicsServer2D.area_get_collision_mask].","returnType":"int"},{"name":"_area_get_object_instance_id","signature":"_area_get_object_instance_id(area: RID) -> int","description":"Overridable version of [method PhysicsServer2D.area_get_object_instance_id].","returnType":"int"},{"name":"_area_get_param","signature":"_area_get_param(area: RID, param: int) -> Variant","description":"Overridable version of [method PhysicsServer2D.area_get_param].","returnType":"Variant"},{"name":"_area_get_shape","signature":"_area_get_shape(area: RID, shape_idx: int) -> RID","description":"Overridable version of [method PhysicsServer2D.area_get_shape].","returnType":"RID"},{"name":"_area_get_shape_count","signature":"_area_get_shape_count(area: RID) -> int","description":"Overridable version of [method PhysicsServer2D.area_get_shape_count].","returnType":"int"},{"name":"_area_get_shape_transform","signature":"_area_get_shape_transform(area: RID, shape_idx: int) -> Transform2D","description":"Overridable version of [method PhysicsServer2D.area_get_shape_transform].","returnType":"Transform2D"},{"name":"_area_get_space","signature":"_area_get_space(area: RID) -> RID","description":"Overridable version of [method PhysicsServer2D.area_get_space].","returnType":"RID"},{"name":"_area_get_transform","signature":"_area_get_transform(area: RID) -> Transform2D","description":"Overridable version of [method PhysicsServer2D.area_get_transform].","returnType":"Transform2D"},{"name":"_area_remove_shape","signature":"_area_remove_shape(area: RID, shape_idx: int) -> void","description":"Overridable version of [method PhysicsServer2D.area_remove_shape].","returnType":"void"},{"name":"_area_set_area_monitor_callback","signature":"_area_set_area_monitor_callback(area: RID, callback: Callable) -> void","description":"Overridable version of [method PhysicsServer2D.area_set_area_monitor_callback].","returnType":"void"},{"name":"_area_set_collision_layer","signature":"_area_set_collision_layer(area: RID, layer: int) -> void","description":"Overridable version of [method PhysicsServer2D.area_set_collision_layer].","returnType":"void"},{"name":"_area_set_collision_mask","signature":"_area_set_collision_mask(area: RID, mask: int) -> void","description":"Overridable version of [method PhysicsServer2D.area_set_collision_mask].","returnType":"void"},{"name":"_area_set_monitor_callback","signature":"_area_set_monitor_callback(area: RID, callback: Callable) -> void","description":"Overridable version of [method PhysicsServer2D.area_set_monitor_callback].","returnType":"void"},{"name":"_area_set_monitorable","signature":"_area_set_monitorable(area: RID, monitorable: bool) -> void","description":"Overridable version of [method PhysicsServer2D.area_set_monitorable].","returnType":"void"},{"name":"_area_set_param","signature":"_area_set_param(area: RID, param: int, value: Variant) -> void","description":"Overridable version of [method PhysicsServer2D.area_set_param].","returnType":"void"},{"name":"_area_set_pickable","signature":"_area_set_pickable(area: RID, pickable: bool) -> void","description":"If set to true, allows the area with the given  to detect mouse inputs when the mouse cursor is hovering on it.\n\t\t\t\tOverridable version of 's internal area_set_pickable method. Corresponds to [member CollisionObject2D.input_pickable].","returnType":"void"},{"name":"_area_set_shape","signature":"_area_set_shape(area: RID, shape_idx: int, shape: RID) -> void","description":"Overridable version of [method PhysicsServer2D.area_set_shape].","returnType":"void"},{"name":"_area_set_shape_disabled","signature":"_area_set_shape_disabled(area: RID, shape_idx: int, disabled: bool) -> void","description":"Overridable version of [method PhysicsServer2D.area_set_shape_disabled].","returnType":"void"},{"name":"_area_set_shape_transform","signature":"_area_set_shape_transform(area: RID, shape_idx: int, transform: Transform2D) -> void","description":"Overridable version of [method PhysicsServer2D.area_set_shape_transform].","returnType":"void"},{"name":"_area_set_space","signature":"_area_set_space(area: RID, space: RID) -> void","description":"Overridable version of [method PhysicsServer2D.area_set_space].","returnType":"void"},{"name":"_area_set_transform","signature":"_area_set_transform(area: RID, transform: Transform2D) -> void","description":"Overridable version of [method PhysicsServer2D.area_set_transform].","returnType":"void"},{"name":"_body_add_collision_exception","signature":"_body_add_collision_exception(body: RID, excepted_body: RID) -> void","description":"Overridable version of [method PhysicsServer2D.body_add_collision_exception].","returnType":"void"},{"name":"_body_add_constant_central_force","signature":"_body_add_constant_central_force(body: RID, force: Vector2) -> void","description":"Overridable version of [method PhysicsServer2D.body_add_constant_central_force].","returnType":"void"},{"name":"_body_add_constant_force","signature":"_body_add_constant_force(body: RID, force: Vector2, position: Vector2) -> void","description":"Overridable version of [method PhysicsServer2D.body_add_constant_force].","returnType":"void"},{"name":"_body_add_constant_torque","signature":"_body_add_constant_torque(body: RID, torque: float) -> void","description":"Overridable version of [method PhysicsServer2D.body_add_constant_torque].","returnType":"void"},{"name":"_body_add_shape","signature":"_body_add_shape(body: RID, shape: RID, transform: Transform2D, disabled: bool) -> void","description":"Overridable version of [method PhysicsServer2D.body_add_shape].","returnType":"void"},{"name":"_body_apply_central_force","signature":"_body_apply_central_force(body: RID, force: Vector2) -> void","description":"Overridable version of [method PhysicsServer2D.body_apply_central_force].","returnType":"void"},{"name":"_body_apply_central_impulse","signature":"_body_apply_central_impulse(body: RID, impulse: Vector2) -> void","description":"Overridable version of [method PhysicsServer2D.body_apply_central_impulse].","returnType":"void"},{"name":"_body_apply_force","signature":"_body_apply_force(body: RID, force: Vector2, position: Vector2) -> void","description":"Overridable version of [method PhysicsServer2D.body_apply_force].","returnType":"void"},{"name":"_body_apply_impulse","signature":"_body_apply_impulse(body: RID, impulse: Vector2, position: Vector2) -> void","description":"Overridable version of [method PhysicsServer2D.body_apply_impulse].","returnType":"void"},{"name":"_body_apply_torque","signature":"_body_apply_torque(body: RID, torque: float) -> void","description":"Overridable version of [method PhysicsServer2D.body_apply_torque].","returnType":"void"},{"name":"_body_apply_torque_impulse","signature":"_body_apply_torque_impulse(body: RID, impulse: float) -> void","description":"Overridable version of [method PhysicsServer2D.body_apply_torque_impulse].","returnType":"void"},{"name":"_body_attach_canvas_instance_id","signature":"_body_attach_canvas_instance_id(body: RID, id: int) -> void","description":"Overridable version of [method PhysicsServer2D.body_attach_canvas_instance_id].","returnType":"void"},{"name":"_body_attach_object_instance_id","signature":"_body_attach_object_instance_id(body: RID, id: int) -> void","description":"Overridable version of [method PhysicsServer2D.body_attach_object_instance_id].","returnType":"void"},{"name":"_body_clear_shapes","signature":"_body_clear_shapes(body: RID) -> void","description":"Overridable version of [method PhysicsServer2D.body_clear_shapes].","returnType":"void"},{"name":"_body_collide_shape","signature":"_body_collide_shape(body: RID, body_shape: int, shape: RID, shape_xform: Transform2D, motion: Vector2, results: void*, result_max: int, result_count: int32_t*) -> bool","description":"Given a [param body], a [param shape], and their respective parameters, this method should return true if a collision between the two would occur, with additional details passed in [param results].\n\t\t\t\tOverridable version of 's internal shape_collide method. Corresponds to [method PhysicsDirectSpaceState2D.collide_shape].","returnType":"bool"},{"name":"_body_create","signature":"_body_create() -> RID","description":"Overridable version of [method PhysicsServer2D.body_create].","returnType":"RID"},{"name":"_body_get_canvas_instance_id","signature":"_body_get_canvas_instance_id(body: RID) -> int","description":"Overridable version of [method PhysicsServer2D.body_get_canvas_instance_id].","returnType":"int"},{"name":"_body_get_collision_exceptions","signature":"_body_get_collision_exceptions(body: RID) -> RID[]","description":"Returns the s of all bodies added as collision exceptions for the given [param body]. See also [method _body_add_collision_exception] and [method _body_remove_collision_exception].\n\t\t\t\tOverridable version of 's internal body_get_collision_exceptions method. Corresponds to [method PhysicsBody2D.get_collision_exceptions].","returnType":"RID[]"},{"name":"_body_get_collision_layer","signature":"_body_get_collision_layer(body: RID) -> int","description":"Overridable version of [method PhysicsServer2D.body_get_collision_layer].","returnType":"int"},{"name":"_body_get_collision_mask","signature":"_body_get_collision_mask(body: RID) -> int","description":"Overridable version of [method PhysicsServer2D.body_get_collision_mask].","returnType":"int"},{"name":"_body_get_collision_priority","signature":"_body_get_collision_priority(body: RID) -> float","description":"Overridable version of [method PhysicsServer2D.body_get_collision_priority].","returnType":"float"},{"name":"_body_get_constant_force","signature":"_body_get_constant_force(body: RID) -> Vector2","description":"Overridable version of [method PhysicsServer2D.body_get_constant_force].","returnType":"Vector2"},{"name":"_body_get_constant_torque","signature":"_body_get_constant_torque(body: RID) -> float","description":"Overridable version of [method PhysicsServer2D.body_get_constant_torque].","returnType":"float"},{"name":"_body_get_contacts_reported_depth_threshold","signature":"_body_get_contacts_reported_depth_threshold(body: RID) -> float","description":"Overridable version of 's internal body_get_contacts_reported_depth_threshold method.\n\t\t\t\tNote: This method is currently unused by Godot's default physics implementation.","returnType":"float"},{"name":"_body_get_continuous_collision_detection_mode","signature":"_body_get_continuous_collision_detection_mode(body: RID) -> int","description":"Overridable version of [method PhysicsServer2D.body_get_continuous_collision_detection_mode].","returnType":"int"},{"name":"_body_get_direct_state","signature":"_body_get_direct_state(body: RID) -> PhysicsDirectBodyState2D","description":"Overridable version of [method PhysicsServer2D.body_get_direct_state].","returnType":"PhysicsDirectBodyState2D"},{"name":"_body_get_max_contacts_reported","signature":"_body_get_max_contacts_reported(body: RID) -> int","description":"Overridable version of [method PhysicsServer2D.body_get_max_contacts_reported].","returnType":"int"},{"name":"_body_get_mode","signature":"_body_get_mode(body: RID) -> int","description":"Overridable version of [method PhysicsServer2D.body_get_mode].","returnType":"int"},{"name":"_body_get_object_instance_id","signature":"_body_get_object_instance_id(body: RID) -> int","description":"Overridable version of [method PhysicsServer2D.body_get_object_instance_id].","returnType":"int"},{"name":"_body_get_param","signature":"_body_get_param(body: RID, param: int) -> Variant","description":"Overridable version of [method PhysicsServer2D.body_get_param].","returnType":"Variant"},{"name":"_body_get_shape","signature":"_body_get_shape(body: RID, shape_idx: int) -> RID","description":"Overridable version of [method PhysicsServer2D.body_get_shape].","returnType":"RID"},{"name":"_body_get_shape_count","signature":"_body_get_shape_count(body: RID) -> int","description":"Overridable version of [method PhysicsServer2D.body_get_shape_count].","returnType":"int"},{"name":"_body_get_shape_transform","signature":"_body_get_shape_transform(body: RID, shape_idx: int) -> Transform2D","description":"Overridable version of [method PhysicsServer2D.body_get_shape_transform].","returnType":"Transform2D"},{"name":"_body_get_space","signature":"_body_get_space(body: RID) -> RID","description":"Overridable version of [method PhysicsServer2D.body_get_space].","returnType":"RID"},{"name":"_body_get_state","signature":"_body_get_state(body: RID, state: int) -> Variant","description":"Overridable version of [method PhysicsServer2D.body_get_state].","returnType":"Variant"},{"name":"_body_is_omitting_force_integration","signature":"_body_is_omitting_force_integration(body: RID) -> bool","description":"Overridable version of [method PhysicsServer2D.body_is_omitting_force_integration].","returnType":"bool"},{"name":"_body_remove_collision_exception","signature":"_body_remove_collision_exception(body: RID, excepted_body: RID) -> void","description":"Overridable version of [method PhysicsServer2D.body_remove_collision_exception].","returnType":"void"},{"name":"_body_remove_shape","signature":"_body_remove_shape(body: RID, shape_idx: int) -> void","description":"Overridable version of [method PhysicsServer2D.body_remove_shape].","returnType":"void"},{"name":"_body_reset_mass_properties","signature":"_body_reset_mass_properties(body: RID) -> void","description":"Overridable version of [method PhysicsServer2D.body_reset_mass_properties].","returnType":"void"},{"name":"_body_set_axis_velocity","signature":"_body_set_axis_velocity(body: RID, axis_velocity: Vector2) -> void","description":"Overridable version of [method PhysicsServer2D.body_set_axis_velocity].","returnType":"void"},{"name":"_body_set_collision_layer","signature":"_body_set_collision_layer(body: RID, layer: int) -> void","description":"Overridable version of [method PhysicsServer2D.body_set_collision_layer].","returnType":"void"},{"name":"_body_set_collision_mask","signature":"_body_set_collision_mask(body: RID, mask: int) -> void","description":"Overridable version of [method PhysicsServer2D.body_set_collision_mask].","returnType":"void"},{"name":"_body_set_collision_priority","signature":"_body_set_collision_priority(body: RID, priority: float) -> void","description":"Overridable version of [method PhysicsServer2D.body_set_collision_priority].","returnType":"void"},{"name":"_body_set_constant_force","signature":"_body_set_constant_force(body: RID, force: Vector2) -> void","description":"Overridable version of [method PhysicsServer2D.body_set_constant_force].","returnType":"void"},{"name":"_body_set_constant_torque","signature":"_body_set_constant_torque(body: RID, torque: float) -> void","description":"Overridable version of [method PhysicsServer2D.body_set_constant_torque].","returnType":"void"},{"name":"_body_set_contacts_reported_depth_threshold","signature":"_body_set_contacts_reported_depth_threshold(body: RID, threshold: float) -> void","description":"Overridable version of 's internal body_set_contacts_reported_depth_threshold method.\n\t\t\t\tNote: This method is currently unused by Godot's default physics implementation.","returnType":"void"},{"name":"_body_set_continuous_collision_detection_mode","signature":"_body_set_continuous_collision_detection_mode(body: RID, mode: int) -> void","description":"Overridable version of [method PhysicsServer2D.body_set_continuous_collision_detection_mode].","returnType":"void"},{"name":"_body_set_force_integration_callback","signature":"_body_set_force_integration_callback(body: RID, callable: Callable, userdata: Variant) -> void","description":"Overridable version of [method PhysicsServer2D.body_set_force_integration_callback].","returnType":"void"},{"name":"_body_set_max_contacts_reported","signature":"_body_set_max_contacts_reported(body: RID, amount: int) -> void","description":"Overridable version of [method PhysicsServer2D.body_set_max_contacts_reported].","returnType":"void"},{"name":"_body_set_mode","signature":"_body_set_mode(body: RID, mode: int) -> void","description":"Overridable version of [method PhysicsServer2D.body_set_mode].","returnType":"void"},{"name":"_body_set_omit_force_integration","signature":"_body_set_omit_force_integration(body: RID, enable: bool) -> void","description":"Overridable version of [method PhysicsServer2D.body_set_omit_force_integration].","returnType":"void"},{"name":"_body_set_param","signature":"_body_set_param(body: RID, param: int, value: Variant) -> void","description":"Overridable version of [method PhysicsServer2D.body_set_param].","returnType":"void"},{"name":"_body_set_pickable","signature":"_body_set_pickable(body: RID, pickable: bool) -> void","description":"If set to true, allows the body with the given  to detect mouse inputs when the mouse cursor is hovering on it.\n\t\t\t\tOverridable version of 's internal body_set_pickable method. Corresponds to [member CollisionObject2D.input_pickable].","returnType":"void"},{"name":"_body_set_shape","signature":"_body_set_shape(body: RID, shape_idx: int, shape: RID) -> void","description":"Overridable version of [method PhysicsServer2D.body_set_shape].","returnType":"void"},{"name":"_body_set_shape_as_one_way_collision","signature":"_body_set_shape_as_one_way_collision(body: RID, shape_idx: int, enable: bool, margin: float) -> void","description":"Overridable version of [method PhysicsServer2D.body_set_shape_as_one_way_collision].","returnType":"void"},{"name":"_body_set_shape_disabled","signature":"_body_set_shape_disabled(body: RID, shape_idx: int, disabled: bool) -> void","description":"Overridable version of [method PhysicsServer2D.body_set_shape_disabled].","returnType":"void"},{"name":"_body_set_shape_transform","signature":"_body_set_shape_transform(body: RID, shape_idx: int, transform: Transform2D) -> void","description":"Overridable version of [method PhysicsServer2D.body_set_shape_transform].","returnType":"void"},{"name":"_body_set_space","signature":"_body_set_space(body: RID, space: RID) -> void","description":"Overridable version of [method PhysicsServer2D.body_set_space].","returnType":"void"},{"name":"_body_set_state","signature":"_body_set_state(body: RID, state: int, value: Variant) -> void","description":"Overridable version of [method PhysicsServer2D.body_set_state].","returnType":"void"},{"name":"_body_set_state_sync_callback","signature":"_body_set_state_sync_callback(body: RID, callable: Callable) -> void","description":"Assigns the [param body] to call the given [param callable] during the synchronization phase of the loop, before [method _step] is called. See also [method _sync].\n\t\t\t\tOverridable version of [method PhysicsServer2D.body_set_state_sync_callback].","returnType":"void"},{"name":"_body_test_motion","signature":"_body_test_motion(body: RID, from: Transform2D, motion: Vector2, margin: float, collide_separation_ray: bool, recovery_as_collision: bool, result: PhysicsServer2DExtensionMotionResult*) -> bool","description":"Overridable version of [method PhysicsServer2D.body_test_motion]. Unlike the exposed implementation, this method does not receive all of the arguments inside a .","returnType":"bool"},{"name":"_capsule_shape_create","signature":"_capsule_shape_create() -> RID","description":"Overridable version of [method PhysicsServer2D.capsule_shape_create].","returnType":"RID"},{"name":"_circle_shape_create","signature":"_circle_shape_create() -> RID","description":"Overridable version of [method PhysicsServer2D.circle_shape_create].","returnType":"RID"},{"name":"_concave_polygon_shape_create","signature":"_concave_polygon_shape_create() -> RID","description":"Overridable version of [method PhysicsServer2D.concave_polygon_shape_create].","returnType":"RID"},{"name":"_convex_polygon_shape_create","signature":"_convex_polygon_shape_create() -> RID","description":"Overridable version of [method PhysicsServer2D.convex_polygon_shape_create].","returnType":"RID"},{"name":"_damped_spring_joint_get_param","signature":"_damped_spring_joint_get_param(joint: RID, param: int) -> float","description":"Overridable version of [method PhysicsServer2D.damped_spring_joint_get_param].","returnType":"float"},{"name":"_damped_spring_joint_set_param","signature":"_damped_spring_joint_set_param(joint: RID, param: int, value: float) -> void","description":"Overridable version of [method PhysicsServer2D.damped_spring_joint_set_param].","returnType":"void"},{"name":"_end_sync","signature":"_end_sync() -> void","description":"Called to indicate that the physics server has stopped synchronizing. It is in the loop's iteration/physics phase, and can access physics objects even if running on a separate thread. See also [method _sync].\n\t\t\t\tOverridable version of 's internal end_sync method.","returnType":"void"},{"name":"_finish","signature":"_finish() -> void","description":"Called when the main loop finalizes to shut down the physics server. See also [method MainLoop._finalize] and [method _init].\n\t\t\t\tOverridable version of 's internal finish method.","returnType":"void"},{"name":"_flush_queries","signature":"_flush_queries() -> void","description":"Called every physics step before [method _step] to process all remaining queries.\n\t\t\t\tOverridable version of 's internal flush_queries method.","returnType":"void"},{"name":"_free_rid","signature":"_free_rid(rid: RID) -> void","description":"Overridable version of [method PhysicsServer2D.free_rid].","returnType":"void"},{"name":"_get_process_info","signature":"_get_process_info(process_info: int) -> int","description":"Overridable version of [method PhysicsServer2D.get_process_info].","returnType":"int"},{"name":"_init","signature":"_init() -> void","description":"Called when the main loop is initialized and creates a new instance of this physics server. See also [method MainLoop._initialize] and [method _finish].\n\t\t\t\tOverridable version of 's internal init method.","returnType":"void"},{"name":"_is_flushing_queries","signature":"_is_flushing_queries() -> bool","description":"Overridable method that should return true when the physics server is processing queries. See also [method _flush_queries].\n\t\t\t\tOverridable version of 's internal is_flushing_queries method.","returnType":"bool"},{"name":"_joint_clear","signature":"_joint_clear(joint: RID) -> void","description":"Overridable version of [method PhysicsServer2D.joint_clear].","returnType":"void"},{"name":"_joint_create","signature":"_joint_create() -> RID","description":"Overridable version of [method PhysicsServer2D.joint_create].","returnType":"RID"},{"name":"_joint_disable_collisions_between_bodies","signature":"_joint_disable_collisions_between_bodies(joint: RID, disable: bool) -> void","description":"Overridable version of [method PhysicsServer2D.joint_disable_collisions_between_bodies].","returnType":"void"},{"name":"_joint_get_param","signature":"_joint_get_param(joint: RID, param: int) -> float","description":"Overridable version of [method PhysicsServer2D.joint_get_param].","returnType":"float"},{"name":"_joint_get_type","signature":"_joint_get_type(joint: RID) -> int","description":"Overridable version of [method PhysicsServer2D.joint_get_type].","returnType":"int"},{"name":"_joint_is_disabled_collisions_between_bodies","signature":"_joint_is_disabled_collisions_between_bodies(joint: RID) -> bool","description":"Overridable version of [method PhysicsServer2D.joint_is_disabled_collisions_between_bodies].","returnType":"bool"},{"name":"_joint_make_damped_spring","signature":"_joint_make_damped_spring(joint: RID, anchor_a: Vector2, anchor_b: Vector2, body_a: RID, body_b: RID) -> void","description":"Overridable version of [method PhysicsServer2D.joint_make_damped_spring].","returnType":"void"},{"name":"_joint_make_groove","signature":"_joint_make_groove(joint: RID, a_groove1: Vector2, a_groove2: Vector2, b_anchor: Vector2, body_a: RID, body_b: RID) -> void","description":"Overridable version of [method PhysicsServer2D.joint_make_groove].","returnType":"void"},{"name":"_joint_make_pin","signature":"_joint_make_pin(joint: RID, anchor: Vector2, body_a: RID, body_b: RID) -> void","description":"Overridable version of [method PhysicsServer2D.joint_make_pin].","returnType":"void"},{"name":"_joint_set_param","signature":"_joint_set_param(joint: RID, param: int, value: float) -> void","description":"Overridable version of [method PhysicsServer2D.joint_set_param].","returnType":"void"},{"name":"_pin_joint_get_flag","signature":"_pin_joint_get_flag(joint: RID, flag: int) -> bool","description":"Overridable version of [method PhysicsServer2D.pin_joint_get_flag].","returnType":"bool"},{"name":"_pin_joint_get_param","signature":"_pin_joint_get_param(joint: RID, param: int) -> float","description":"Overridable version of [method PhysicsServer2D.pin_joint_get_param].","returnType":"float"},{"name":"_pin_joint_set_flag","signature":"_pin_joint_set_flag(joint: RID, flag: int, enabled: bool) -> void","description":"Overridable version of [method PhysicsServer2D.pin_joint_set_flag].","returnType":"void"},{"name":"_pin_joint_set_param","signature":"_pin_joint_set_param(joint: RID, param: int, value: float) -> void","description":"Overridable version of [method PhysicsServer2D.pin_joint_set_param].","returnType":"void"},{"name":"_rectangle_shape_create","signature":"_rectangle_shape_create() -> RID","description":"Overridable version of [method PhysicsServer2D.rectangle_shape_create].","returnType":"RID"},{"name":"_segment_shape_create","signature":"_segment_shape_create() -> RID","description":"Overridable version of [method PhysicsServer2D.segment_shape_create].","returnType":"RID"},{"name":"_separation_ray_shape_create","signature":"_separation_ray_shape_create() -> RID","description":"Overridable version of [method PhysicsServer2D.separation_ray_shape_create].","returnType":"RID"},{"name":"_set_active","signature":"_set_active(active: bool) -> void","description":"Overridable version of [method PhysicsServer2D.set_active].","returnType":"void"},{"name":"_shape_collide","signature":"_shape_collide(shape_A: RID, xform_A: Transform2D, motion_A: Vector2, shape_B: RID, xform_B: Transform2D, motion_B: Vector2, results: void*, result_max: int, result_count: int32_t*) -> bool","description":"Given two shapes and their parameters, should return true if a collision between the two would occur, with additional details passed in [param results].\n\t\t\t\tOverridable version of 's internal shape_collide method. Corresponds to [method PhysicsDirectSpaceState2D.collide_shape].","returnType":"bool"},{"name":"_shape_get_custom_solver_bias","signature":"_shape_get_custom_solver_bias(shape: RID) -> float","description":"Should return the custom solver bias of the given [param shape], which defines how much bodies are forced to separate on contact when this shape is involved.\n\t\t\t\tOverridable version of 's internal shape_get_custom_solver_bias method. Corresponds to [member Shape2D.custom_solver_bias].","returnType":"float"},{"name":"_shape_get_data","signature":"_shape_get_data(shape: RID) -> Variant","description":"Overridable version of [method PhysicsServer2D.shape_get_data].","returnType":"Variant"},{"name":"_shape_get_type","signature":"_shape_get_type(shape: RID) -> int","description":"Overridable version of [method PhysicsServer2D.shape_get_type].","returnType":"int"},{"name":"_shape_set_custom_solver_bias","signature":"_shape_set_custom_solver_bias(shape: RID, bias: float) -> void","description":"Should set the custom solver bias for the given [param shape]. It defines how much bodies are forced to separate on contact.\n\t\t\t\tOverridable version of 's internal shape_get_custom_solver_bias method. Corresponds to [member Shape2D.custom_solver_bias].","returnType":"void"},{"name":"_shape_set_data","signature":"_shape_set_data(shape: RID, data: Variant) -> void","description":"Overridable version of [method PhysicsServer2D.shape_set_data].","returnType":"void"},{"name":"_space_create","signature":"_space_create() -> RID","description":"Overridable version of [method PhysicsServer2D.space_create].","returnType":"RID"},{"name":"_space_get_contact_count","signature":"_space_get_contact_count(space: RID) -> int","description":"Should return how many contacts have occurred during the last physics step in the given [param space]. See also [method _space_get_contacts] and [method _space_set_debug_contacts].\n\t\t\t\tOverridable version of 's internal space_get_contact_count method.","returnType":"int"},{"name":"_space_get_contacts","signature":"_space_get_contacts(space: RID) -> PackedVector2Array","description":"Should return the positions of all contacts that have occurred during the last physics step in the given [param space]. See also [method _space_get_contact_count] and [method _space_set_debug_contacts].\n\t\t\t\tOverridable version of 's internal space_get_contacts method.","returnType":"PackedVector2Array"},{"name":"_space_get_direct_state","signature":"_space_get_direct_state(space: RID) -> PhysicsDirectSpaceState2D","description":"Overridable version of [method PhysicsServer2D.space_get_direct_state].","returnType":"PhysicsDirectSpaceState2D"},{"name":"_space_get_param","signature":"_space_get_param(space: RID, param: int) -> float","description":"Overridable version of [method PhysicsServer2D.space_get_param].","returnType":"float"},{"name":"_space_is_active","signature":"_space_is_active(space: RID) -> bool","description":"Overridable version of [method PhysicsServer2D.space_is_active].","returnType":"bool"},{"name":"_space_set_active","signature":"_space_set_active(space: RID, active: bool) -> void","description":"Overridable version of [method PhysicsServer2D.space_set_active].","returnType":"void"},{"name":"_space_set_debug_contacts","signature":"_space_set_debug_contacts(space: RID, max_contacts: int) -> void","description":"Used internally to allow the given [param space] to store contact points, up to [param max_contacts]. This is automatically set for the main 's space when [member SceneTree.debug_collisions_hint] is true, or by checking \"Visible Collision Shapes\" in the editor. Only works in debug builds.\n\t\t\t\tOverridable version of 's internal space_set_debug_contacts method.","returnType":"void"},{"name":"_space_set_param","signature":"_space_set_param(space: RID, param: int, value: float) -> void","description":"Overridable version of [method PhysicsServer2D.space_set_param].","returnType":"void"},{"name":"_step","signature":"_step(step: float) -> void","description":"Called every physics step to process the physics simulation. [param step] is the time elapsed since the last physics step, in seconds. It is usually the same as [method Node.get_physics_process_delta_time].\n\t\t\t\tOverridable version of 's internal [code skip-lint]step method.","returnType":"void"},{"name":"_sync","signature":"_sync() -> void","description":"Called to indicate that the physics server is synchronizing and cannot access physics states if running on a separate thread. See also [method _end_sync].\n\t\t\t\tOverridable version of 's internal sync method.","returnType":"void"},{"name":"_world_boundary_shape_create","signature":"_world_boundary_shape_create() -> RID","description":"Overridable version of [method PhysicsServer2D.world_boundary_shape_create].","returnType":"RID"},{"name":"body_test_motion_is_excluding_body","signature":"body_test_motion_is_excluding_body(body: RID) -> bool","description":"Returns true if the body with the given  is being excluded from [method _body_test_motion]. See also [method Object.get_instance_id].","returnType":"bool"},{"name":"body_test_motion_is_excluding_object","signature":"body_test_motion_is_excluding_object(object: int) -> bool","description":"Returns true if the object with the given instance ID is being excluded from [method _body_test_motion]. See also [method Object.get_instance_id].","returnType":"bool"}],"signals":[]},"PhysicsServer2DManager":{"name":"PhysicsServer2DManager","description":"A singleton for managing  implementations.","inherits":"Object","properties":[],"methods":[{"name":"register_server","signature":"register_server(name: String, create_callback: Callable) -> void","description":"Register a  implementation by passing a [param name] and a  that returns a  object.","returnType":"void"},{"name":"set_default_server","signature":"set_default_server(name: String, priority: int) -> void","description":"Set the default  implementation to the one identified by [param name], if [param priority] is greater than the priority of the current default implementation.","returnType":"void"}],"signals":[]},"PhysicsServer3D":{"name":"PhysicsServer3D","description":"A server interface for low-level 3D physics access.","inherits":"Object","properties":[],"methods":[{"name":"area_add_shape","signature":"area_add_shape(area: RID, shape: RID, transform: Transform3D, disabled: bool) -> void","description":"Adds a shape to the area, along with a transform matrix. Shapes are usually referenced by their index, so you should track which shape has a given index.","returnType":"void"},{"name":"area_attach_object_instance_id","signature":"area_attach_object_instance_id(area: RID, id: int) -> void","description":"Assigns the area to a descendant of , so it can exist in the node tree.","returnType":"void"},{"name":"area_clear_shapes","signature":"area_clear_shapes(area: RID) -> void","description":"Removes all shapes from an area. It does not delete the shapes, so they can be reassigned later.","returnType":"void"},{"name":"area_create","signature":"area_create() -> RID","description":"Creates a 3D area object in the physics server, and returns the  that identifies it. The default settings for the created area include a collision layer and mask set to 1, and monitorable set to false.\n\t\t\t\tUse [method area_add_shape] to add shapes to it, use [method area_set_transform] to set its transform, and use [method area_set_space] to add the area to a space. If you want the area to be detectable use [method area_set_monitorable].","returnType":"RID"},{"name":"area_get_collision_layer","signature":"area_get_collision_layer(area: RID) -> int","description":"Returns the physics layer or layers an area belongs to.","returnType":"int"},{"name":"area_get_collision_mask","signature":"area_get_collision_mask(area: RID) -> int","description":"Returns the physics layer or layers an area can contact with.","returnType":"int"},{"name":"area_get_object_instance_id","signature":"area_get_object_instance_id(area: RID) -> int","description":"Gets the instance ID of the object the area is assigned to.","returnType":"int"},{"name":"area_get_param","signature":"area_get_param(area: RID, param: int) -> Variant","description":"Returns an area parameter value. A list of available parameters is on the [enum AreaParameter] constants.","returnType":"Variant"},{"name":"area_get_shape","signature":"area_get_shape(area: RID, shape_idx: int) -> RID","description":"Returns the  of the nth shape of an area.","returnType":"RID"},{"name":"area_get_shape_count","signature":"area_get_shape_count(area: RID) -> int","description":"Returns the number of shapes assigned to an area.","returnType":"int"},{"name":"area_get_shape_transform","signature":"area_get_shape_transform(area: RID, shape_idx: int) -> Transform3D","description":"Returns the transform matrix of a shape within an area.","returnType":"Transform3D"},{"name":"area_get_space","signature":"area_get_space(area: RID) -> RID","description":"Returns the space assigned to the area.","returnType":"RID"},{"name":"area_get_transform","signature":"area_get_transform(area: RID) -> Transform3D","description":"Returns the transform matrix for an area.","returnType":"Transform3D"},{"name":"area_remove_shape","signature":"area_remove_shape(area: RID, shape_idx: int) -> void","description":"Removes a shape from an area. It does not delete the shape, so it can be reassigned later.","returnType":"void"},{"name":"area_set_area_monitor_callback","signature":"area_set_area_monitor_callback(area: RID, callback: Callable) -> void","description":"Sets the area's area monitor callback. This callback will be called when any other (shape of an) area enters or exits (a shape of) the given area, and must take the following five parameters:\n\t\t\t\t1. an integer status: either [constant AREA_BODY_ADDED] or [constant AREA_BODY_REMOVED] depending on whether the other area's shape entered or exited the area,\n\t\t\t\t2. an  area_rid: the  of the other area that entered or exited the area,\n\t\t\t\t3. an integer instance_id: the ObjectID attached to the other area,\n\t\t\t\t4. an integer area_shape_idx: the index of the shape of the other area that entered or exited the area,\n\t\t\t\t5. an integer self_shape_idx: the index of the shape of the area where the other area entered or exited.\n\t\t\t\tBy counting (or keeping track of) the shapes that enter and exit, it can be determined if an area (with all its shapes) is entering for the first time or exiting for the last time.","returnType":"void"},{"name":"area_set_collision_layer","signature":"area_set_collision_layer(area: RID, layer: int) -> void","description":"Assigns the area to one or many physics layers.","returnType":"void"},{"name":"area_set_collision_mask","signature":"area_set_collision_mask(area: RID, mask: int) -> void","description":"Sets which physics layers the area will monitor.","returnType":"void"},{"name":"area_set_monitor_callback","signature":"area_set_monitor_callback(area: RID, callback: Callable) -> void","description":"Sets the area's body monitor callback. This callback will be called when any other (shape of a) body enters or exits (a shape of) the given area, and must take the following five parameters:\n\t\t\t\t1. an integer status: either [constant AREA_BODY_ADDED] or [constant AREA_BODY_REMOVED] depending on whether the other body shape entered or exited the area,\n\t\t\t\t2. an  body_rid: the  of the body that entered or exited the area,\n\t\t\t\t3. an integer instance_id: the ObjectID attached to the body,\n\t\t\t\t4. an integer body_shape_idx: the index of the shape of the body that entered or exited the area,\n\t\t\t\t5. an integer self_shape_idx: the index of the shape of the area where the body entered or exited.\n\t\t\t\tBy counting (or keeping track of) the shapes that enter and exit, it can be determined if a body (with all its shapes) is entering for the first time or exiting for the last time.","returnType":"void"},{"name":"area_set_monitorable","signature":"area_set_monitorable(area: RID, monitorable: bool) -> void","description":"","returnType":"void"},{"name":"area_set_param","signature":"area_set_param(area: RID, param: int, value: Variant) -> void","description":"Sets the value for an area parameter. A list of available parameters is on the [enum AreaParameter] constants.","returnType":"void"},{"name":"area_set_ray_pickable","signature":"area_set_ray_pickable(area: RID, enable: bool) -> void","description":"Sets object pickable with rays.","returnType":"void"},{"name":"area_set_shape","signature":"area_set_shape(area: RID, shape_idx: int, shape: RID) -> void","description":"Substitutes a given area shape by another. The old shape is selected by its index, the new one by its .","returnType":"void"},{"name":"area_set_shape_disabled","signature":"area_set_shape_disabled(area: RID, shape_idx: int, disabled: bool) -> void","description":"","returnType":"void"},{"name":"area_set_shape_transform","signature":"area_set_shape_transform(area: RID, shape_idx: int, transform: Transform3D) -> void","description":"Sets the transform matrix for an area shape.","returnType":"void"},{"name":"area_set_space","signature":"area_set_space(area: RID, space: RID) -> void","description":"Assigns a space to the area.","returnType":"void"},{"name":"area_set_transform","signature":"area_set_transform(area: RID, transform: Transform3D) -> void","description":"Sets the transform matrix for an area.","returnType":"void"},{"name":"body_add_collision_exception","signature":"body_add_collision_exception(body: RID, excepted_body: RID) -> void","description":"Adds a body to the list of bodies exempt from collisions.","returnType":"void"},{"name":"body_add_constant_central_force","signature":"body_add_constant_central_force(body: RID, force: Vector3) -> void","description":"Adds a constant directional force without affecting rotation that keeps being applied over time until cleared with body_set_constant_force(body, Vector3(0, 0, 0)).\n\t\t\t\tThis is equivalent to using [method body_add_constant_force] at the body's center of mass.","returnType":"void"},{"name":"body_add_constant_force","signature":"body_add_constant_force(body: RID, force: Vector3, position: Vector3) -> void","description":"Adds a constant positioned force to the body that keeps being applied over time until cleared with body_set_constant_force(body, Vector3(0, 0, 0)).\n\t\t\t\t[param position] is the offset from the body origin in global coordinates.","returnType":"void"},{"name":"body_add_constant_torque","signature":"body_add_constant_torque(body: RID, torque: Vector3) -> void","description":"Adds a constant rotational force without affecting position that keeps being applied over time until cleared with body_set_constant_torque(body, Vector3(0, 0, 0)).","returnType":"void"},{"name":"body_add_shape","signature":"body_add_shape(body: RID, shape: RID, transform: Transform3D, disabled: bool) -> void","description":"Adds a shape to the body, along with a transform matrix. Shapes are usually referenced by their index, so you should track which shape has a given index.","returnType":"void"},{"name":"body_apply_central_force","signature":"body_apply_central_force(body: RID, force: Vector3) -> void","description":"Applies a directional force without affecting rotation. A force is time dependent and meant to be applied every physics update.\n\t\t\t\tThis is equivalent to using [method body_apply_force] at the body's center of mass.","returnType":"void"},{"name":"body_apply_central_impulse","signature":"body_apply_central_impulse(body: RID, impulse: Vector3) -> void","description":"Applies a directional impulse without affecting rotation.\n\t\t\t\tAn impulse is time-independent! Applying an impulse every frame would result in a framerate-dependent force. For this reason, it should only be used when simulating one-time impacts (use the \"_force\" functions otherwise).\n\t\t\t\tThis is equivalent to using [method body_apply_impulse] at the body's center of mass.","returnType":"void"},{"name":"body_apply_force","signature":"body_apply_force(body: RID, force: Vector3, position: Vector3) -> void","description":"Applies a positioned force to the body. A force is time dependent and meant to be applied every physics update.\n\t\t\t\t[param position] is the offset from the body origin in global coordinates.","returnType":"void"},{"name":"body_apply_impulse","signature":"body_apply_impulse(body: RID, impulse: Vector3, position: Vector3) -> void","description":"Applies a positioned impulse to the body.\n\t\t\t\tAn impulse is time-independent! Applying an impulse every frame would result in a framerate-dependent force. For this reason, it should only be used when simulating one-time impacts (use the \"_force\" functions otherwise).\n\t\t\t\t[param position] is the offset from the body origin in global coordinates.","returnType":"void"},{"name":"body_apply_torque","signature":"body_apply_torque(body: RID, torque: Vector3) -> void","description":"Applies a rotational force without affecting position. A force is time dependent and meant to be applied every physics update.","returnType":"void"},{"name":"body_apply_torque_impulse","signature":"body_apply_torque_impulse(body: RID, impulse: Vector3) -> void","description":"Applies a rotational impulse to the body without affecting the position.\n\t\t\t\tAn impulse is time-independent! Applying an impulse every frame would result in a framerate-dependent force. For this reason, it should only be used when simulating one-time impacts (use the \"_force\" functions otherwise).","returnType":"void"},{"name":"body_attach_object_instance_id","signature":"body_attach_object_instance_id(body: RID, id: int) -> void","description":"Assigns the area to a descendant of , so it can exist in the node tree.","returnType":"void"},{"name":"body_clear_shapes","signature":"body_clear_shapes(body: RID) -> void","description":"Removes all shapes from a body.","returnType":"void"},{"name":"body_create","signature":"body_create() -> RID","description":"Creates a 3D body object in the physics server, and returns the  that identifies it. The default settings for the created area include a collision layer and mask set to 1, and body mode set to [constant BODY_MODE_RIGID].\n\t\t\t\tUse [method body_add_shape] to add shapes to it, use [method body_set_state] to set its transform, and use [method body_set_space] to add the body to a space.","returnType":"RID"},{"name":"body_get_collision_layer","signature":"body_get_collision_layer(body: RID) -> int","description":"Returns the physics layer or layers a body belongs to.","returnType":"int"},{"name":"body_get_collision_mask","signature":"body_get_collision_mask(body: RID) -> int","description":"Returns the physics layer or layers a body can collide with.","returnType":"int"},{"name":"body_get_collision_priority","signature":"body_get_collision_priority(body: RID) -> float","description":"Returns the body's collision priority.","returnType":"float"},{"name":"body_get_constant_force","signature":"body_get_constant_force(body: RID) -> Vector3","description":"Returns the body's total constant positional forces applied during each physics update.\n\t\t\t\tSee [method body_add_constant_force] and [method body_add_constant_central_force].","returnType":"Vector3"},{"name":"body_get_constant_torque","signature":"body_get_constant_torque(body: RID) -> Vector3","description":"Returns the body's total constant rotational forces applied during each physics update.\n\t\t\t\tSee [method body_add_constant_torque].","returnType":"Vector3"},{"name":"body_get_direct_state","signature":"body_get_direct_state(body: RID) -> PhysicsDirectBodyState3D","description":"Returns the  of the body. Returns null if the body is destroyed or removed from the physics space.","returnType":"PhysicsDirectBodyState3D"},{"name":"body_get_max_contacts_reported","signature":"body_get_max_contacts_reported(body: RID) -> int","description":"Returns the maximum contacts that can be reported. See [method body_set_max_contacts_reported].","returnType":"int"},{"name":"body_get_mode","signature":"body_get_mode(body: RID) -> int","description":"Returns the body mode.","returnType":"int"},{"name":"body_get_object_instance_id","signature":"body_get_object_instance_id(body: RID) -> int","description":"Gets the instance ID of the object the area is assigned to.","returnType":"int"},{"name":"body_get_param","signature":"body_get_param(body: RID, param: int) -> Variant","description":"Returns the value of a body parameter. A list of available parameters is on the [enum BodyParameter] constants.","returnType":"Variant"},{"name":"body_get_shape","signature":"body_get_shape(body: RID, shape_idx: int) -> RID","description":"Returns the  of the nth shape of a body.","returnType":"RID"},{"name":"body_get_shape_count","signature":"body_get_shape_count(body: RID) -> int","description":"Returns the number of shapes assigned to a body.","returnType":"int"},{"name":"body_get_shape_transform","signature":"body_get_shape_transform(body: RID, shape_idx: int) -> Transform3D","description":"Returns the transform matrix of a body shape.","returnType":"Transform3D"},{"name":"body_get_space","signature":"body_get_space(body: RID) -> RID","description":"Returns the  of the space assigned to a body.","returnType":"RID"},{"name":"body_get_state","signature":"body_get_state(body: RID, state: int) -> Variant","description":"Returns a body state.","returnType":"Variant"},{"name":"body_is_axis_locked","signature":"body_is_axis_locked(body: RID, axis: int) -> bool","description":"","returnType":"bool"},{"name":"body_is_continuous_collision_detection_enabled","signature":"body_is_continuous_collision_detection_enabled(body: RID) -> bool","description":"If true, the continuous collision detection mode is enabled.","returnType":"bool"},{"name":"body_is_omitting_force_integration","signature":"body_is_omitting_force_integration(body: RID) -> bool","description":"Returns true if the body is omitting the standard force integration. See [method body_set_omit_force_integration].","returnType":"bool"},{"name":"body_remove_collision_exception","signature":"body_remove_collision_exception(body: RID, excepted_body: RID) -> void","description":"Removes a body from the list of bodies exempt from collisions.\n\t\t\t\tContinuous collision detection tries to predict where a moving body will collide, instead of moving it and correcting its movement if it collided.","returnType":"void"},{"name":"body_remove_shape","signature":"body_remove_shape(body: RID, shape_idx: int) -> void","description":"Removes a shape from a body. The shape is not deleted, so it can be reused afterwards.","returnType":"void"},{"name":"body_reset_mass_properties","signature":"body_reset_mass_properties(body: RID) -> void","description":"Restores the default inertia and center of mass based on shapes to cancel any custom values previously set using [method body_set_param].","returnType":"void"},{"name":"body_set_axis_lock","signature":"body_set_axis_lock(body: RID, axis: int, lock: bool) -> void","description":"","returnType":"void"},{"name":"body_set_axis_velocity","signature":"body_set_axis_velocity(body: RID, axis_velocity: Vector3) -> void","description":"Sets an axis velocity. The velocity in the given vector axis will be set as the given vector length. This is useful for jumping behavior.","returnType":"void"},{"name":"body_set_collision_layer","signature":"body_set_collision_layer(body: RID, layer: int) -> void","description":"Sets the physics layer or layers a body belongs to.","returnType":"void"},{"name":"body_set_collision_mask","signature":"body_set_collision_mask(body: RID, mask: int) -> void","description":"Sets the physics layer or layers a body can collide with.","returnType":"void"},{"name":"body_set_collision_priority","signature":"body_set_collision_priority(body: RID, priority: float) -> void","description":"Sets the body's collision priority.","returnType":"void"},{"name":"body_set_constant_force","signature":"body_set_constant_force(body: RID, force: Vector3) -> void","description":"Sets the body's total constant positional forces applied during each physics update.\n\t\t\t\tSee [method body_add_constant_force] and [method body_add_constant_central_force].","returnType":"void"},{"name":"body_set_constant_torque","signature":"body_set_constant_torque(body: RID, torque: Vector3) -> void","description":"Sets the body's total constant rotational forces applied during each physics update.\n\t\t\t\tSee [method body_add_constant_torque].","returnType":"void"},{"name":"body_set_enable_continuous_collision_detection","signature":"body_set_enable_continuous_collision_detection(body: RID, enable: bool) -> void","description":"If true, the continuous collision detection mode is enabled.\n\t\t\t\tContinuous collision detection tries to predict where a moving body will collide, instead of moving it and correcting its movement if it collided.","returnType":"void"},{"name":"body_set_force_integration_callback","signature":"body_set_force_integration_callback(body: RID, callable: Callable, userdata: Variant) -> void","description":"Sets the body's custom force integration callback function to [param callable]. Use an empty  ([code skip-lint]Callable()) to clear the custom callback.\n\t\t\t\tThe function [param callable] will be called every physics tick, before the standard force integration (see [method body_set_omit_force_integration]). It can be used for example to update the body's linear and angular velocity based on contact with other bodies.\n\t\t\t\tIf [param userdata] is not null, the function [param callable] must take the following two parameters:\n\t\t\t\t1. state: a , used to retrieve and modify the body's state,\n\t\t\t\t2. [code skip-lint]userdata: a ; its value will be the [param userdata] passed into this method.\n\t\t\t\tIf [param userdata] is null, then [param callable] must take only the state parameter.","returnType":"void"},{"name":"body_set_max_contacts_reported","signature":"body_set_max_contacts_reported(body: RID, amount: int) -> void","description":"Sets the maximum contacts to report. Bodies can keep a log of the contacts with other bodies. This is enabled by setting the maximum number of contacts reported to a number greater than 0.","returnType":"void"},{"name":"body_set_mode","signature":"body_set_mode(body: RID, mode: int) -> void","description":"Sets the body mode, from one of the [enum BodyMode] constants.","returnType":"void"},{"name":"body_set_omit_force_integration","signature":"body_set_omit_force_integration(body: RID, enable: bool) -> void","description":"Sets whether the body omits the standard force integration. If [param enable] is true, the body will not automatically use applied forces, torques, and damping to update the body's linear and angular velocity. In this case, [method body_set_force_integration_callback] can be used to manually update the linear and angular velocity instead.\n\t\t\t\tThis method is called when the property [member RigidBody3D.custom_integrator] is set.","returnType":"void"},{"name":"body_set_param","signature":"body_set_param(body: RID, param: int, value: Variant) -> void","description":"Sets a body parameter. A list of available parameters is on the [enum BodyParameter] constants.","returnType":"void"},{"name":"body_set_ray_pickable","signature":"body_set_ray_pickable(body: RID, enable: bool) -> void","description":"Sets the body pickable with rays if [param enable] is set.","returnType":"void"},{"name":"body_set_shape","signature":"body_set_shape(body: RID, shape_idx: int, shape: RID) -> void","description":"Substitutes a given body shape by another. The old shape is selected by its index, the new one by its .","returnType":"void"},{"name":"body_set_shape_disabled","signature":"body_set_shape_disabled(body: RID, shape_idx: int, disabled: bool) -> void","description":"","returnType":"void"},{"name":"body_set_shape_transform","signature":"body_set_shape_transform(body: RID, shape_idx: int, transform: Transform3D) -> void","description":"Sets the transform matrix for a body shape.","returnType":"void"},{"name":"body_set_space","signature":"body_set_space(body: RID, space: RID) -> void","description":"Assigns a space to the body (see [method space_create]).","returnType":"void"},{"name":"body_set_state","signature":"body_set_state(body: RID, state: int, value: Variant) -> void","description":"Sets a body state (see [enum BodyState] constants).","returnType":"void"},{"name":"body_set_state_sync_callback","signature":"body_set_state_sync_callback(body: RID, callable: Callable) -> void","description":"Sets the body's state synchronization callback function to [param callable]. Use an empty  ([code skip-lint]Callable()) to clear the callback.\n\t\t\t\tThe function [param callable] will be called every physics frame, assuming that the body was active during the previous physics tick, and can be used to fetch the latest state from the physics server.\n\t\t\t\tThe function [param callable] must take the following parameters:\n\t\t\t\t1. state: a , used to retrieve the body's state.","returnType":"void"},{"name":"body_test_motion","signature":"body_test_motion(body: RID, parameters: PhysicsTestMotionParameters3D, result: PhysicsTestMotionResult3D) -> bool","description":"Returns true if a collision would result from moving along a motion vector from a given point in space.  is passed to set motion parameters.  can be passed to return additional information.","returnType":"bool"},{"name":"box_shape_create","signature":"box_shape_create() -> RID","description":"","returnType":"RID"},{"name":"capsule_shape_create","signature":"capsule_shape_create() -> RID","description":"","returnType":"RID"},{"name":"concave_polygon_shape_create","signature":"concave_polygon_shape_create() -> RID","description":"","returnType":"RID"},{"name":"cone_twist_joint_get_param","signature":"cone_twist_joint_get_param(joint: RID, param: int) -> float","description":"Gets a cone_twist_joint parameter (see [enum ConeTwistJointParam] constants).","returnType":"float"},{"name":"cone_twist_joint_set_param","signature":"cone_twist_joint_set_param(joint: RID, param: int, value: float) -> void","description":"Sets a cone_twist_joint parameter (see [enum ConeTwistJointParam] constants).","returnType":"void"},{"name":"convex_polygon_shape_create","signature":"convex_polygon_shape_create() -> RID","description":"","returnType":"RID"},{"name":"custom_shape_create","signature":"custom_shape_create() -> RID","description":"","returnType":"RID"},{"name":"cylinder_shape_create","signature":"cylinder_shape_create() -> RID","description":"","returnType":"RID"},{"name":"free_rid","signature":"free_rid(rid: RID) -> void","description":"Destroys any of the objects created by PhysicsServer3D. If the  passed is not one of the objects that can be created by PhysicsServer3D, an error will be sent to the console.","returnType":"void"},{"name":"generic_6dof_joint_get_flag","signature":"generic_6dof_joint_get_flag(joint: RID, axis: int, flag: int) -> bool","description":"Returns the value of a generic 6DOF joint flag. See [enum G6DOFJointAxisFlag] for the list of available flags.","returnType":"bool"},{"name":"generic_6dof_joint_get_param","signature":"generic_6dof_joint_get_param(joint: RID, axis: int, param: int) -> float","description":"Returns the value of a generic 6DOF joint parameter. See [enum G6DOFJointAxisParam] for the list of available parameters.","returnType":"float"},{"name":"generic_6dof_joint_set_flag","signature":"generic_6dof_joint_set_flag(joint: RID, axis: int, flag: int, enable: bool) -> void","description":"Sets the value of a given generic 6DOF joint flag. See [enum G6DOFJointAxisFlag] for the list of available flags.","returnType":"void"},{"name":"generic_6dof_joint_set_param","signature":"generic_6dof_joint_set_param(joint: RID, axis: int, param: int, value: float) -> void","description":"Sets the value of a given generic 6DOF joint parameter. See [enum G6DOFJointAxisParam] for the list of available parameters.","returnType":"void"},{"name":"get_process_info","signature":"get_process_info(process_info: int) -> int","description":"Returns information about the current state of the 3D physics engine. See [enum ProcessInfo] for a list of available states.","returnType":"int"},{"name":"heightmap_shape_create","signature":"heightmap_shape_create() -> RID","description":"","returnType":"RID"},{"name":"hinge_joint_get_flag","signature":"hinge_joint_get_flag(joint: RID, flag: int) -> bool","description":"Gets a hinge_joint flag (see [enum HingeJointFlag] constants).","returnType":"bool"},{"name":"hinge_joint_get_param","signature":"hinge_joint_get_param(joint: RID, param: int) -> float","description":"Gets a hinge_joint parameter (see [enum HingeJointParam]).","returnType":"float"},{"name":"hinge_joint_set_flag","signature":"hinge_joint_set_flag(joint: RID, flag: int, enabled: bool) -> void","description":"Sets a hinge_joint flag (see [enum HingeJointFlag] constants).","returnType":"void"},{"name":"hinge_joint_set_param","signature":"hinge_joint_set_param(joint: RID, param: int, value: float) -> void","description":"Sets a hinge_joint parameter (see [enum HingeJointParam] constants).","returnType":"void"},{"name":"joint_clear","signature":"joint_clear(joint: RID) -> void","description":"","returnType":"void"},{"name":"joint_create","signature":"joint_create() -> RID","description":"","returnType":"RID"},{"name":"joint_disable_collisions_between_bodies","signature":"joint_disable_collisions_between_bodies(joint: RID, disable: bool) -> void","description":"Sets whether the bodies attached to the  will collide with each other.","returnType":"void"},{"name":"joint_get_solver_priority","signature":"joint_get_solver_priority(joint: RID) -> int","description":"Gets the priority value of the Joint3D.","returnType":"int"},{"name":"joint_get_type","signature":"joint_get_type(joint: RID) -> int","description":"Returns the type of the Joint3D.","returnType":"int"},{"name":"joint_is_disabled_collisions_between_bodies","signature":"joint_is_disabled_collisions_between_bodies(joint: RID) -> bool","description":"Returns whether the bodies attached to the  will collide with each other.","returnType":"bool"},{"name":"joint_make_cone_twist","signature":"joint_make_cone_twist(joint: RID, body_A: RID, local_ref_A: Transform3D, body_B: RID, local_ref_B: Transform3D) -> void","description":"","returnType":"void"},{"name":"joint_make_generic_6dof","signature":"joint_make_generic_6dof(joint: RID, body_A: RID, local_ref_A: Transform3D, body_B: RID, local_ref_B: Transform3D) -> void","description":"Make the joint a generic six degrees of freedom (6DOF) joint. Use [method generic_6dof_joint_set_flag] and [method generic_6dof_joint_set_param] to set the joint's flags and parameters respectively.","returnType":"void"},{"name":"joint_make_hinge","signature":"joint_make_hinge(joint: RID, body_A: RID, hinge_A: Transform3D, body_B: RID, hinge_B: Transform3D) -> void","description":"","returnType":"void"},{"name":"joint_make_pin","signature":"joint_make_pin(joint: RID, body_A: RID, local_A: Vector3, body_B: RID, local_B: Vector3) -> void","description":"","returnType":"void"},{"name":"joint_make_slider","signature":"joint_make_slider(joint: RID, body_A: RID, local_ref_A: Transform3D, body_B: RID, local_ref_B: Transform3D) -> void","description":"","returnType":"void"},{"name":"joint_set_solver_priority","signature":"joint_set_solver_priority(joint: RID, priority: int) -> void","description":"Sets the priority value of the Joint3D.","returnType":"void"},{"name":"pin_joint_get_local_a","signature":"pin_joint_get_local_a(joint: RID) -> Vector3","description":"Returns position of the joint in the local space of body a of the joint.","returnType":"Vector3"},{"name":"pin_joint_get_local_b","signature":"pin_joint_get_local_b(joint: RID) -> Vector3","description":"Returns position of the joint in the local space of body b of the joint.","returnType":"Vector3"},{"name":"pin_joint_get_param","signature":"pin_joint_get_param(joint: RID, param: int) -> float","description":"Gets a pin_joint parameter (see [enum PinJointParam] constants).","returnType":"float"},{"name":"pin_joint_set_local_a","signature":"pin_joint_set_local_a(joint: RID, local_A: Vector3) -> void","description":"Sets position of the joint in the local space of body a of the joint.","returnType":"void"},{"name":"pin_joint_set_local_b","signature":"pin_joint_set_local_b(joint: RID, local_B: Vector3) -> void","description":"Sets position of the joint in the local space of body b of the joint.","returnType":"void"},{"name":"pin_joint_set_param","signature":"pin_joint_set_param(joint: RID, param: int, value: float) -> void","description":"Sets a pin_joint parameter (see [enum PinJointParam] constants).","returnType":"void"},{"name":"separation_ray_shape_create","signature":"separation_ray_shape_create() -> RID","description":"","returnType":"RID"},{"name":"set_active","signature":"set_active(active: bool) -> void","description":"Activates or deactivates the 3D physics engine.","returnType":"void"},{"name":"shape_get_data","signature":"shape_get_data(shape: RID) -> Variant","description":"Returns the shape data.","returnType":"Variant"},{"name":"shape_get_margin","signature":"shape_get_margin(shape: RID) -> float","description":"Returns the collision margin for the shape.\n\t\t\t\tNote: This is not used in Godot Physics, so will always return 0.","returnType":"float"},{"name":"shape_get_type","signature":"shape_get_type(shape: RID) -> int","description":"Returns the type of shape (see [enum ShapeType] constants).","returnType":"int"},{"name":"shape_set_data","signature":"shape_set_data(shape: RID, data: Variant) -> void","description":"Sets the shape data that defines its shape and size. The data to be passed depends on the kind of shape created [method shape_get_type].","returnType":"void"},{"name":"shape_set_margin","signature":"shape_set_margin(shape: RID, margin: float) -> void","description":"Sets the collision margin for the shape.\n\t\t\t\tNote: This is not used in Godot Physics.","returnType":"void"},{"name":"slider_joint_get_param","signature":"slider_joint_get_param(joint: RID, param: int) -> float","description":"Gets a slider_joint parameter (see [enum SliderJointParam] constants).","returnType":"float"},{"name":"slider_joint_set_param","signature":"slider_joint_set_param(joint: RID, param: int, value: float) -> void","description":"Gets a slider_joint parameter (see [enum SliderJointParam] constants).","returnType":"void"},{"name":"soft_body_add_collision_exception","signature":"soft_body_add_collision_exception(body: RID, body_b: RID) -> void","description":"Adds the given body to the list of bodies exempt from collisions.","returnType":"void"},{"name":"soft_body_create","signature":"soft_body_create() -> RID","description":"Creates a new soft body and returns its internal .","returnType":"RID"},{"name":"soft_body_get_bounds","signature":"soft_body_get_bounds(body: RID) -> AABB","description":"Returns the bounds of the given soft body in global coordinates.","returnType":"AABB"},{"name":"soft_body_get_collision_layer","signature":"soft_body_get_collision_layer(body: RID) -> int","description":"Returns the physics layer or layers that the given soft body belongs to.","returnType":"int"},{"name":"soft_body_get_collision_mask","signature":"soft_body_get_collision_mask(body: RID) -> int","description":"Returns the physics layer or layers that the given soft body can collide with.","returnType":"int"},{"name":"soft_body_get_damping_coefficient","signature":"soft_body_get_damping_coefficient(body: RID) -> float","description":"Returns the damping coefficient of the given soft body.","returnType":"float"},{"name":"soft_body_get_drag_coefficient","signature":"soft_body_get_drag_coefficient(body: RID) -> float","description":"Returns the drag coefficient of the given soft body.","returnType":"float"},{"name":"soft_body_get_linear_stiffness","signature":"soft_body_get_linear_stiffness(body: RID) -> float","description":"Returns the linear stiffness of the given soft body.","returnType":"float"},{"name":"soft_body_get_point_global_position","signature":"soft_body_get_point_global_position(body: RID, point_index: int) -> Vector3","description":"Returns the current position of the given soft body point in global coordinates.","returnType":"Vector3"},{"name":"soft_body_get_pressure_coefficient","signature":"soft_body_get_pressure_coefficient(body: RID) -> float","description":"Returns the pressure coefficient of the given soft body.","returnType":"float"},{"name":"soft_body_get_simulation_precision","signature":"soft_body_get_simulation_precision(body: RID) -> int","description":"Returns the simulation precision of the given soft body.","returnType":"int"},{"name":"soft_body_get_space","signature":"soft_body_get_space(body: RID) -> RID","description":"Returns the  of the space assigned to the given soft body.","returnType":"RID"},{"name":"soft_body_get_state","signature":"soft_body_get_state(body: RID, state: int) -> Variant","description":"Returns the given soft body state (see [enum BodyState] constants).\n\t\t\t\tNote: Godot's default physics implementation does not support [constant BODY_STATE_LINEAR_VELOCITY], [constant BODY_STATE_ANGULAR_VELOCITY], [constant BODY_STATE_SLEEPING], or [constant BODY_STATE_CAN_SLEEP].","returnType":"Variant"},{"name":"soft_body_get_total_mass","signature":"soft_body_get_total_mass(body: RID) -> float","description":"Returns the total mass assigned to the given soft body.","returnType":"float"},{"name":"soft_body_is_point_pinned","signature":"soft_body_is_point_pinned(body: RID, point_index: int) -> bool","description":"Returns whether the given soft body point is pinned.","returnType":"bool"},{"name":"soft_body_move_point","signature":"soft_body_move_point(body: RID, point_index: int, global_position: Vector3) -> void","description":"Moves the given soft body point to a position in global coordinates.","returnType":"void"},{"name":"soft_body_pin_point","signature":"soft_body_pin_point(body: RID, point_index: int, pin: bool) -> void","description":"Pins or unpins the given soft body point based on the value of [param pin].\n\t\t\t\tNote: Pinning a point effectively makes it kinematic, preventing it from being affected by forces, but you can still move it using [method soft_body_move_point].","returnType":"void"},{"name":"soft_body_remove_all_pinned_points","signature":"soft_body_remove_all_pinned_points(body: RID) -> void","description":"Unpins all points of the given soft body.","returnType":"void"},{"name":"soft_body_remove_collision_exception","signature":"soft_body_remove_collision_exception(body: RID, body_b: RID) -> void","description":"Removes the given body from the list of bodies exempt from collisions.","returnType":"void"},{"name":"soft_body_set_collision_layer","signature":"soft_body_set_collision_layer(body: RID, layer: int) -> void","description":"Sets the physics layer or layers the given soft body belongs to.","returnType":"void"},{"name":"soft_body_set_collision_mask","signature":"soft_body_set_collision_mask(body: RID, mask: int) -> void","description":"Sets the physics layer or layers the given soft body can collide with.","returnType":"void"},{"name":"soft_body_set_damping_coefficient","signature":"soft_body_set_damping_coefficient(body: RID, damping_coefficient: float) -> void","description":"Sets the damping coefficient of the given soft body. Higher values will slow down the body more noticeably when forces are applied.","returnType":"void"},{"name":"soft_body_set_drag_coefficient","signature":"soft_body_set_drag_coefficient(body: RID, drag_coefficient: float) -> void","description":"Sets the drag coefficient of the given soft body. Higher values increase this body's air resistance.\n\t\t\t\tNote: This value is currently unused by Godot's default physics implementation.","returnType":"void"},{"name":"soft_body_set_linear_stiffness","signature":"soft_body_set_linear_stiffness(body: RID, stiffness: float) -> void","description":"Sets the linear stiffness of the given soft body. Higher values will result in a stiffer body, while lower values will increase the body's ability to bend. The value can be between 0.0 and 1.0 (inclusive).","returnType":"void"},{"name":"soft_body_set_mesh","signature":"soft_body_set_mesh(body: RID, mesh: RID) -> void","description":"Sets the mesh of the given soft body.","returnType":"void"},{"name":"soft_body_set_pressure_coefficient","signature":"soft_body_set_pressure_coefficient(body: RID, pressure_coefficient: float) -> void","description":"Sets the pressure coefficient of the given soft body. Simulates pressure build-up from inside this body. Higher values increase the strength of this effect.","returnType":"void"},{"name":"soft_body_set_ray_pickable","signature":"soft_body_set_ray_pickable(body: RID, enable: bool) -> void","description":"Sets whether the given soft body will be pickable when using object picking.","returnType":"void"},{"name":"soft_body_set_simulation_precision","signature":"soft_body_set_simulation_precision(body: RID, simulation_precision: int) -> void","description":"Sets the simulation precision of the given soft body. Increasing this value will improve the resulting simulation, but can affect performance. Use with care.","returnType":"void"},{"name":"soft_body_set_space","signature":"soft_body_set_space(body: RID, space: RID) -> void","description":"Assigns a space to the given soft body (see [method space_create]).","returnType":"void"},{"name":"soft_body_set_state","signature":"soft_body_set_state(body: RID, state: int, variant: Variant) -> void","description":"Sets the given body state for the given body (see [enum BodyState] constants).\n\t\t\t\tNote: Godot's default physics implementation does not support [constant BODY_STATE_LINEAR_VELOCITY], [constant BODY_STATE_ANGULAR_VELOCITY], [constant BODY_STATE_SLEEPING], or [constant BODY_STATE_CAN_SLEEP].","returnType":"void"},{"name":"soft_body_set_total_mass","signature":"soft_body_set_total_mass(body: RID, total_mass: float) -> void","description":"Sets the total mass for the given soft body.","returnType":"void"},{"name":"soft_body_set_transform","signature":"soft_body_set_transform(body: RID, transform: Transform3D) -> void","description":"Sets the global transform of the given soft body.","returnType":"void"},{"name":"soft_body_update_rendering_server","signature":"soft_body_update_rendering_server(body: RID, rendering_server_handler: PhysicsServer3DRenderingServerHandler) -> void","description":"Requests that the physics server updates the rendering server with the latest positions of the given soft body's points through the [param rendering_server_handler] interface.","returnType":"void"},{"name":"space_create","signature":"space_create() -> RID","description":"Creates a space. A space is a collection of parameters for the physics engine that can be assigned to an area or a body. It can be assigned to an area with [method area_set_space], or to a body with [method body_set_space].","returnType":"RID"},{"name":"space_get_direct_state","signature":"space_get_direct_state(space: RID) -> PhysicsDirectSpaceState3D","description":"Returns the state of a space, a . This object can be used to make collision/intersection queries.","returnType":"PhysicsDirectSpaceState3D"},{"name":"space_get_param","signature":"space_get_param(space: RID, param: int) -> float","description":"Returns the value of a space parameter.","returnType":"float"},{"name":"space_is_active","signature":"space_is_active(space: RID) -> bool","description":"Returns whether the space is active.","returnType":"bool"},{"name":"space_set_active","signature":"space_set_active(space: RID, active: bool) -> void","description":"Marks a space as active. It will not have an effect, unless it is assigned to an area or body.","returnType":"void"},{"name":"space_set_param","signature":"space_set_param(space: RID, param: int, value: float) -> void","description":"Sets the value for a space parameter. A list of available parameters is on the [enum SpaceParameter] constants.","returnType":"void"},{"name":"sphere_shape_create","signature":"sphere_shape_create() -> RID","description":"","returnType":"RID"},{"name":"world_boundary_shape_create","signature":"world_boundary_shape_create() -> RID","description":"","returnType":"RID"}],"signals":[]},"PhysicsServer3DExtension":{"name":"PhysicsServer3DExtension","description":"Provides virtual methods that can be overridden to create custom  implementations.","inherits":"PhysicsServer3D","properties":[],"methods":[{"name":"_area_add_shape","signature":"_area_add_shape(area: RID, shape: RID, transform: Transform3D, disabled: bool) -> void","description":"","returnType":"void"},{"name":"_area_attach_object_instance_id","signature":"_area_attach_object_instance_id(area: RID, id: int) -> void","description":"","returnType":"void"},{"name":"_area_clear_shapes","signature":"_area_clear_shapes(area: RID) -> void","description":"","returnType":"void"},{"name":"_area_create","signature":"_area_create() -> RID","description":"","returnType":"RID"},{"name":"_area_get_collision_layer","signature":"_area_get_collision_layer(area: RID) -> int","description":"","returnType":"int"},{"name":"_area_get_collision_mask","signature":"_area_get_collision_mask(area: RID) -> int","description":"","returnType":"int"},{"name":"_area_get_object_instance_id","signature":"_area_get_object_instance_id(area: RID) -> int","description":"","returnType":"int"},{"name":"_area_get_param","signature":"_area_get_param(area: RID, param: int) -> Variant","description":"","returnType":"Variant"},{"name":"_area_get_shape","signature":"_area_get_shape(area: RID, shape_idx: int) -> RID","description":"","returnType":"RID"},{"name":"_area_get_shape_count","signature":"_area_get_shape_count(area: RID) -> int","description":"","returnType":"int"},{"name":"_area_get_shape_transform","signature":"_area_get_shape_transform(area: RID, shape_idx: int) -> Transform3D","description":"","returnType":"Transform3D"},{"name":"_area_get_space","signature":"_area_get_space(area: RID) -> RID","description":"","returnType":"RID"},{"name":"_area_get_transform","signature":"_area_get_transform(area: RID) -> Transform3D","description":"","returnType":"Transform3D"},{"name":"_area_remove_shape","signature":"_area_remove_shape(area: RID, shape_idx: int) -> void","description":"","returnType":"void"},{"name":"_area_set_area_monitor_callback","signature":"_area_set_area_monitor_callback(area: RID, callback: Callable) -> void","description":"","returnType":"void"},{"name":"_area_set_collision_layer","signature":"_area_set_collision_layer(area: RID, layer: int) -> void","description":"","returnType":"void"},{"name":"_area_set_collision_mask","signature":"_area_set_collision_mask(area: RID, mask: int) -> void","description":"","returnType":"void"},{"name":"_area_set_monitor_callback","signature":"_area_set_monitor_callback(area: RID, callback: Callable) -> void","description":"","returnType":"void"},{"name":"_area_set_monitorable","signature":"_area_set_monitorable(area: RID, monitorable: bool) -> void","description":"","returnType":"void"},{"name":"_area_set_param","signature":"_area_set_param(area: RID, param: int, value: Variant) -> void","description":"","returnType":"void"},{"name":"_area_set_ray_pickable","signature":"_area_set_ray_pickable(area: RID, enable: bool) -> void","description":"","returnType":"void"},{"name":"_area_set_shape","signature":"_area_set_shape(area: RID, shape_idx: int, shape: RID) -> void","description":"","returnType":"void"},{"name":"_area_set_shape_disabled","signature":"_area_set_shape_disabled(area: RID, shape_idx: int, disabled: bool) -> void","description":"","returnType":"void"},{"name":"_area_set_shape_transform","signature":"_area_set_shape_transform(area: RID, shape_idx: int, transform: Transform3D) -> void","description":"","returnType":"void"},{"name":"_area_set_space","signature":"_area_set_space(area: RID, space: RID) -> void","description":"","returnType":"void"},{"name":"_area_set_transform","signature":"_area_set_transform(area: RID, transform: Transform3D) -> void","description":"","returnType":"void"},{"name":"_body_add_collision_exception","signature":"_body_add_collision_exception(body: RID, excepted_body: RID) -> void","description":"","returnType":"void"},{"name":"_body_add_constant_central_force","signature":"_body_add_constant_central_force(body: RID, force: Vector3) -> void","description":"","returnType":"void"},{"name":"_body_add_constant_force","signature":"_body_add_constant_force(body: RID, force: Vector3, position: Vector3) -> void","description":"","returnType":"void"},{"name":"_body_add_constant_torque","signature":"_body_add_constant_torque(body: RID, torque: Vector3) -> void","description":"","returnType":"void"},{"name":"_body_add_shape","signature":"_body_add_shape(body: RID, shape: RID, transform: Transform3D, disabled: bool) -> void","description":"","returnType":"void"},{"name":"_body_apply_central_force","signature":"_body_apply_central_force(body: RID, force: Vector3) -> void","description":"","returnType":"void"},{"name":"_body_apply_central_impulse","signature":"_body_apply_central_impulse(body: RID, impulse: Vector3) -> void","description":"","returnType":"void"},{"name":"_body_apply_force","signature":"_body_apply_force(body: RID, force: Vector3, position: Vector3) -> void","description":"","returnType":"void"},{"name":"_body_apply_impulse","signature":"_body_apply_impulse(body: RID, impulse: Vector3, position: Vector3) -> void","description":"","returnType":"void"},{"name":"_body_apply_torque","signature":"_body_apply_torque(body: RID, torque: Vector3) -> void","description":"","returnType":"void"},{"name":"_body_apply_torque_impulse","signature":"_body_apply_torque_impulse(body: RID, impulse: Vector3) -> void","description":"","returnType":"void"},{"name":"_body_attach_object_instance_id","signature":"_body_attach_object_instance_id(body: RID, id: int) -> void","description":"","returnType":"void"},{"name":"_body_clear_shapes","signature":"_body_clear_shapes(body: RID) -> void","description":"","returnType":"void"},{"name":"_body_create","signature":"_body_create() -> RID","description":"","returnType":"RID"},{"name":"_body_get_collision_exceptions","signature":"_body_get_collision_exceptions(body: RID) -> RID[]","description":"","returnType":"RID[]"},{"name":"_body_get_collision_layer","signature":"_body_get_collision_layer(body: RID) -> int","description":"","returnType":"int"},{"name":"_body_get_collision_mask","signature":"_body_get_collision_mask(body: RID) -> int","description":"","returnType":"int"},{"name":"_body_get_collision_priority","signature":"_body_get_collision_priority(body: RID) -> float","description":"","returnType":"float"},{"name":"_body_get_constant_force","signature":"_body_get_constant_force(body: RID) -> Vector3","description":"","returnType":"Vector3"},{"name":"_body_get_constant_torque","signature":"_body_get_constant_torque(body: RID) -> Vector3","description":"","returnType":"Vector3"},{"name":"_body_get_contacts_reported_depth_threshold","signature":"_body_get_contacts_reported_depth_threshold(body: RID) -> float","description":"","returnType":"float"},{"name":"_body_get_direct_state","signature":"_body_get_direct_state(body: RID) -> PhysicsDirectBodyState3D","description":"","returnType":"PhysicsDirectBodyState3D"},{"name":"_body_get_max_contacts_reported","signature":"_body_get_max_contacts_reported(body: RID) -> int","description":"","returnType":"int"},{"name":"_body_get_mode","signature":"_body_get_mode(body: RID) -> int","description":"","returnType":"int"},{"name":"_body_get_object_instance_id","signature":"_body_get_object_instance_id(body: RID) -> int","description":"","returnType":"int"},{"name":"_body_get_param","signature":"_body_get_param(body: RID, param: int) -> Variant","description":"","returnType":"Variant"},{"name":"_body_get_shape","signature":"_body_get_shape(body: RID, shape_idx: int) -> RID","description":"","returnType":"RID"},{"name":"_body_get_shape_count","signature":"_body_get_shape_count(body: RID) -> int","description":"","returnType":"int"},{"name":"_body_get_shape_transform","signature":"_body_get_shape_transform(body: RID, shape_idx: int) -> Transform3D","description":"","returnType":"Transform3D"},{"name":"_body_get_space","signature":"_body_get_space(body: RID) -> RID","description":"","returnType":"RID"},{"name":"_body_get_state","signature":"_body_get_state(body: RID, state: int) -> Variant","description":"","returnType":"Variant"},{"name":"_body_get_user_flags","signature":"_body_get_user_flags(body: RID) -> int","description":"","returnType":"int"},{"name":"_body_is_axis_locked","signature":"_body_is_axis_locked(body: RID, axis: int) -> bool","description":"","returnType":"bool"},{"name":"_body_is_continuous_collision_detection_enabled","signature":"_body_is_continuous_collision_detection_enabled(body: RID) -> bool","description":"","returnType":"bool"},{"name":"_body_is_omitting_force_integration","signature":"_body_is_omitting_force_integration(body: RID) -> bool","description":"","returnType":"bool"},{"name":"_body_remove_collision_exception","signature":"_body_remove_collision_exception(body: RID, excepted_body: RID) -> void","description":"","returnType":"void"},{"name":"_body_remove_shape","signature":"_body_remove_shape(body: RID, shape_idx: int) -> void","description":"","returnType":"void"},{"name":"_body_reset_mass_properties","signature":"_body_reset_mass_properties(body: RID) -> void","description":"","returnType":"void"},{"name":"_body_set_axis_lock","signature":"_body_set_axis_lock(body: RID, axis: int, lock: bool) -> void","description":"","returnType":"void"},{"name":"_body_set_axis_velocity","signature":"_body_set_axis_velocity(body: RID, axis_velocity: Vector3) -> void","description":"","returnType":"void"},{"name":"_body_set_collision_layer","signature":"_body_set_collision_layer(body: RID, layer: int) -> void","description":"","returnType":"void"},{"name":"_body_set_collision_mask","signature":"_body_set_collision_mask(body: RID, mask: int) -> void","description":"","returnType":"void"},{"name":"_body_set_collision_priority","signature":"_body_set_collision_priority(body: RID, priority: float) -> void","description":"","returnType":"void"},{"name":"_body_set_constant_force","signature":"_body_set_constant_force(body: RID, force: Vector3) -> void","description":"","returnType":"void"},{"name":"_body_set_constant_torque","signature":"_body_set_constant_torque(body: RID, torque: Vector3) -> void","description":"","returnType":"void"},{"name":"_body_set_contacts_reported_depth_threshold","signature":"_body_set_contacts_reported_depth_threshold(body: RID, threshold: float) -> void","description":"","returnType":"void"},{"name":"_body_set_enable_continuous_collision_detection","signature":"_body_set_enable_continuous_collision_detection(body: RID, enable: bool) -> void","description":"","returnType":"void"},{"name":"_body_set_force_integration_callback","signature":"_body_set_force_integration_callback(body: RID, callable: Callable, userdata: Variant) -> void","description":"","returnType":"void"},{"name":"_body_set_max_contacts_reported","signature":"_body_set_max_contacts_reported(body: RID, amount: int) -> void","description":"","returnType":"void"},{"name":"_body_set_mode","signature":"_body_set_mode(body: RID, mode: int) -> void","description":"","returnType":"void"},{"name":"_body_set_omit_force_integration","signature":"_body_set_omit_force_integration(body: RID, enable: bool) -> void","description":"","returnType":"void"},{"name":"_body_set_param","signature":"_body_set_param(body: RID, param: int, value: Variant) -> void","description":"","returnType":"void"},{"name":"_body_set_ray_pickable","signature":"_body_set_ray_pickable(body: RID, enable: bool) -> void","description":"","returnType":"void"},{"name":"_body_set_shape","signature":"_body_set_shape(body: RID, shape_idx: int, shape: RID) -> void","description":"","returnType":"void"},{"name":"_body_set_shape_disabled","signature":"_body_set_shape_disabled(body: RID, shape_idx: int, disabled: bool) -> void","description":"","returnType":"void"},{"name":"_body_set_shape_transform","signature":"_body_set_shape_transform(body: RID, shape_idx: int, transform: Transform3D) -> void","description":"","returnType":"void"},{"name":"_body_set_space","signature":"_body_set_space(body: RID, space: RID) -> void","description":"","returnType":"void"},{"name":"_body_set_state","signature":"_body_set_state(body: RID, state: int, value: Variant) -> void","description":"","returnType":"void"},{"name":"_body_set_state_sync_callback","signature":"_body_set_state_sync_callback(body: RID, callable: Callable) -> void","description":"","returnType":"void"},{"name":"_body_set_user_flags","signature":"_body_set_user_flags(body: RID, flags: int) -> void","description":"","returnType":"void"},{"name":"_body_test_motion","signature":"_body_test_motion(body: RID, from: Transform3D, motion: Vector3, margin: float, max_collisions: int, collide_separation_ray: bool, recovery_as_collision: bool, result: PhysicsServer3DExtensionMotionResult*) -> bool","description":"","returnType":"bool"},{"name":"_box_shape_create","signature":"_box_shape_create() -> RID","description":"","returnType":"RID"},{"name":"_capsule_shape_create","signature":"_capsule_shape_create() -> RID","description":"","returnType":"RID"},{"name":"_concave_polygon_shape_create","signature":"_concave_polygon_shape_create() -> RID","description":"","returnType":"RID"},{"name":"_cone_twist_joint_get_param","signature":"_cone_twist_joint_get_param(joint: RID, param: int) -> float","description":"","returnType":"float"},{"name":"_cone_twist_joint_set_param","signature":"_cone_twist_joint_set_param(joint: RID, param: int, value: float) -> void","description":"","returnType":"void"},{"name":"_convex_polygon_shape_create","signature":"_convex_polygon_shape_create() -> RID","description":"","returnType":"RID"},{"name":"_custom_shape_create","signature":"_custom_shape_create() -> RID","description":"","returnType":"RID"},{"name":"_cylinder_shape_create","signature":"_cylinder_shape_create() -> RID","description":"","returnType":"RID"},{"name":"_end_sync","signature":"_end_sync() -> void","description":"","returnType":"void"},{"name":"_finish","signature":"_finish() -> void","description":"","returnType":"void"},{"name":"_flush_queries","signature":"_flush_queries() -> void","description":"","returnType":"void"},{"name":"_free_rid","signature":"_free_rid(rid: RID) -> void","description":"","returnType":"void"},{"name":"_generic_6dof_joint_get_flag","signature":"_generic_6dof_joint_get_flag(joint: RID, axis: int, flag: int) -> bool","description":"","returnType":"bool"},{"name":"_generic_6dof_joint_get_param","signature":"_generic_6dof_joint_get_param(joint: RID, axis: int, param: int) -> float","description":"","returnType":"float"},{"name":"_generic_6dof_joint_set_flag","signature":"_generic_6dof_joint_set_flag(joint: RID, axis: int, flag: int, enable: bool) -> void","description":"","returnType":"void"},{"name":"_generic_6dof_joint_set_param","signature":"_generic_6dof_joint_set_param(joint: RID, axis: int, param: int, value: float) -> void","description":"","returnType":"void"},{"name":"_get_process_info","signature":"_get_process_info(process_info: int) -> int","description":"","returnType":"int"},{"name":"_heightmap_shape_create","signature":"_heightmap_shape_create() -> RID","description":"","returnType":"RID"},{"name":"_hinge_joint_get_flag","signature":"_hinge_joint_get_flag(joint: RID, flag: int) -> bool","description":"","returnType":"bool"},{"name":"_hinge_joint_get_param","signature":"_hinge_joint_get_param(joint: RID, param: int) -> float","description":"","returnType":"float"},{"name":"_hinge_joint_set_flag","signature":"_hinge_joint_set_flag(joint: RID, flag: int, enabled: bool) -> void","description":"","returnType":"void"},{"name":"_hinge_joint_set_param","signature":"_hinge_joint_set_param(joint: RID, param: int, value: float) -> void","description":"","returnType":"void"},{"name":"_init","signature":"_init() -> void","description":"","returnType":"void"},{"name":"_is_flushing_queries","signature":"_is_flushing_queries() -> bool","description":"","returnType":"bool"},{"name":"_joint_clear","signature":"_joint_clear(joint: RID) -> void","description":"","returnType":"void"},{"name":"_joint_create","signature":"_joint_create() -> RID","description":"","returnType":"RID"},{"name":"_joint_disable_collisions_between_bodies","signature":"_joint_disable_collisions_between_bodies(joint: RID, disable: bool) -> void","description":"","returnType":"void"},{"name":"_joint_get_solver_priority","signature":"_joint_get_solver_priority(joint: RID) -> int","description":"","returnType":"int"},{"name":"_joint_get_type","signature":"_joint_get_type(joint: RID) -> int","description":"","returnType":"int"},{"name":"_joint_is_disabled_collisions_between_bodies","signature":"_joint_is_disabled_collisions_between_bodies(joint: RID) -> bool","description":"","returnType":"bool"},{"name":"_joint_make_cone_twist","signature":"_joint_make_cone_twist(joint: RID, body_A: RID, local_ref_A: Transform3D, body_B: RID, local_ref_B: Transform3D) -> void","description":"","returnType":"void"},{"name":"_joint_make_generic_6dof","signature":"_joint_make_generic_6dof(joint: RID, body_A: RID, local_ref_A: Transform3D, body_B: RID, local_ref_B: Transform3D) -> void","description":"","returnType":"void"},{"name":"_joint_make_hinge","signature":"_joint_make_hinge(joint: RID, body_A: RID, hinge_A: Transform3D, body_B: RID, hinge_B: Transform3D) -> void","description":"","returnType":"void"},{"name":"_joint_make_hinge_simple","signature":"_joint_make_hinge_simple(joint: RID, body_A: RID, pivot_A: Vector3, axis_A: Vector3, body_B: RID, pivot_B: Vector3, axis_B: Vector3) -> void","description":"","returnType":"void"},{"name":"_joint_make_pin","signature":"_joint_make_pin(joint: RID, body_A: RID, local_A: Vector3, body_B: RID, local_B: Vector3) -> void","description":"","returnType":"void"},{"name":"_joint_make_slider","signature":"_joint_make_slider(joint: RID, body_A: RID, local_ref_A: Transform3D, body_B: RID, local_ref_B: Transform3D) -> void","description":"","returnType":"void"},{"name":"_joint_set_solver_priority","signature":"_joint_set_solver_priority(joint: RID, priority: int) -> void","description":"","returnType":"void"},{"name":"_pin_joint_get_local_a","signature":"_pin_joint_get_local_a(joint: RID) -> Vector3","description":"","returnType":"Vector3"},{"name":"_pin_joint_get_local_b","signature":"_pin_joint_get_local_b(joint: RID) -> Vector3","description":"","returnType":"Vector3"},{"name":"_pin_joint_get_param","signature":"_pin_joint_get_param(joint: RID, param: int) -> float","description":"","returnType":"float"},{"name":"_pin_joint_set_local_a","signature":"_pin_joint_set_local_a(joint: RID, local_A: Vector3) -> void","description":"","returnType":"void"},{"name":"_pin_joint_set_local_b","signature":"_pin_joint_set_local_b(joint: RID, local_B: Vector3) -> void","description":"","returnType":"void"},{"name":"_pin_joint_set_param","signature":"_pin_joint_set_param(joint: RID, param: int, value: float) -> void","description":"","returnType":"void"},{"name":"_separation_ray_shape_create","signature":"_separation_ray_shape_create() -> RID","description":"","returnType":"RID"},{"name":"_set_active","signature":"_set_active(active: bool) -> void","description":"","returnType":"void"},{"name":"_shape_get_custom_solver_bias","signature":"_shape_get_custom_solver_bias(shape: RID) -> float","description":"","returnType":"float"},{"name":"_shape_get_data","signature":"_shape_get_data(shape: RID) -> Variant","description":"","returnType":"Variant"},{"name":"_shape_get_margin","signature":"_shape_get_margin(shape: RID) -> float","description":"","returnType":"float"},{"name":"_shape_get_type","signature":"_shape_get_type(shape: RID) -> int","description":"","returnType":"int"},{"name":"_shape_set_custom_solver_bias","signature":"_shape_set_custom_solver_bias(shape: RID, bias: float) -> void","description":"","returnType":"void"},{"name":"_shape_set_data","signature":"_shape_set_data(shape: RID, data: Variant) -> void","description":"","returnType":"void"},{"name":"_shape_set_margin","signature":"_shape_set_margin(shape: RID, margin: float) -> void","description":"","returnType":"void"},{"name":"_slider_joint_get_param","signature":"_slider_joint_get_param(joint: RID, param: int) -> float","description":"","returnType":"float"},{"name":"_slider_joint_set_param","signature":"_slider_joint_set_param(joint: RID, param: int, value: float) -> void","description":"","returnType":"void"},{"name":"_soft_body_add_collision_exception","signature":"_soft_body_add_collision_exception(body: RID, body_b: RID) -> void","description":"","returnType":"void"},{"name":"_soft_body_create","signature":"_soft_body_create() -> RID","description":"","returnType":"RID"},{"name":"_soft_body_get_bounds","signature":"_soft_body_get_bounds(body: RID) -> AABB","description":"","returnType":"AABB"},{"name":"_soft_body_get_collision_exceptions","signature":"_soft_body_get_collision_exceptions(body: RID) -> RID[]","description":"","returnType":"RID[]"},{"name":"_soft_body_get_collision_layer","signature":"_soft_body_get_collision_layer(body: RID) -> int","description":"","returnType":"int"},{"name":"_soft_body_get_collision_mask","signature":"_soft_body_get_collision_mask(body: RID) -> int","description":"","returnType":"int"},{"name":"_soft_body_get_damping_coefficient","signature":"_soft_body_get_damping_coefficient(body: RID) -> float","description":"","returnType":"float"},{"name":"_soft_body_get_drag_coefficient","signature":"_soft_body_get_drag_coefficient(body: RID) -> float","description":"","returnType":"float"},{"name":"_soft_body_get_linear_stiffness","signature":"_soft_body_get_linear_stiffness(body: RID) -> float","description":"","returnType":"float"},{"name":"_soft_body_get_point_global_position","signature":"_soft_body_get_point_global_position(body: RID, point_index: int) -> Vector3","description":"","returnType":"Vector3"},{"name":"_soft_body_get_pressure_coefficient","signature":"_soft_body_get_pressure_coefficient(body: RID) -> float","description":"","returnType":"float"},{"name":"_soft_body_get_simulation_precision","signature":"_soft_body_get_simulation_precision(body: RID) -> int","description":"","returnType":"int"},{"name":"_soft_body_get_space","signature":"_soft_body_get_space(body: RID) -> RID","description":"","returnType":"RID"},{"name":"_soft_body_get_state","signature":"_soft_body_get_state(body: RID, state: int) -> Variant","description":"","returnType":"Variant"},{"name":"_soft_body_get_total_mass","signature":"_soft_body_get_total_mass(body: RID) -> float","description":"","returnType":"float"},{"name":"_soft_body_is_point_pinned","signature":"_soft_body_is_point_pinned(body: RID, point_index: int) -> bool","description":"","returnType":"bool"},{"name":"_soft_body_move_point","signature":"_soft_body_move_point(body: RID, point_index: int, global_position: Vector3) -> void","description":"","returnType":"void"},{"name":"_soft_body_pin_point","signature":"_soft_body_pin_point(body: RID, point_index: int, pin: bool) -> void","description":"","returnType":"void"},{"name":"_soft_body_remove_all_pinned_points","signature":"_soft_body_remove_all_pinned_points(body: RID) -> void","description":"","returnType":"void"},{"name":"_soft_body_remove_collision_exception","signature":"_soft_body_remove_collision_exception(body: RID, body_b: RID) -> void","description":"","returnType":"void"},{"name":"_soft_body_set_collision_layer","signature":"_soft_body_set_collision_layer(body: RID, layer: int) -> void","description":"","returnType":"void"},{"name":"_soft_body_set_collision_mask","signature":"_soft_body_set_collision_mask(body: RID, mask: int) -> void","description":"","returnType":"void"},{"name":"_soft_body_set_damping_coefficient","signature":"_soft_body_set_damping_coefficient(body: RID, damping_coefficient: float) -> void","description":"","returnType":"void"},{"name":"_soft_body_set_drag_coefficient","signature":"_soft_body_set_drag_coefficient(body: RID, drag_coefficient: float) -> void","description":"","returnType":"void"},{"name":"_soft_body_set_linear_stiffness","signature":"_soft_body_set_linear_stiffness(body: RID, linear_stiffness: float) -> void","description":"","returnType":"void"},{"name":"_soft_body_set_mesh","signature":"_soft_body_set_mesh(body: RID, mesh: RID) -> void","description":"","returnType":"void"},{"name":"_soft_body_set_pressure_coefficient","signature":"_soft_body_set_pressure_coefficient(body: RID, pressure_coefficient: float) -> void","description":"","returnType":"void"},{"name":"_soft_body_set_ray_pickable","signature":"_soft_body_set_ray_pickable(body: RID, enable: bool) -> void","description":"","returnType":"void"},{"name":"_soft_body_set_simulation_precision","signature":"_soft_body_set_simulation_precision(body: RID, simulation_precision: int) -> void","description":"","returnType":"void"},{"name":"_soft_body_set_space","signature":"_soft_body_set_space(body: RID, space: RID) -> void","description":"","returnType":"void"},{"name":"_soft_body_set_state","signature":"_soft_body_set_state(body: RID, state: int, variant: Variant) -> void","description":"","returnType":"void"},{"name":"_soft_body_set_total_mass","signature":"_soft_body_set_total_mass(body: RID, total_mass: float) -> void","description":"","returnType":"void"},{"name":"_soft_body_set_transform","signature":"_soft_body_set_transform(body: RID, transform: Transform3D) -> void","description":"","returnType":"void"},{"name":"_soft_body_update_rendering_server","signature":"_soft_body_update_rendering_server(body: RID, rendering_server_handler: PhysicsServer3DRenderingServerHandler) -> void","description":"","returnType":"void"},{"name":"_space_create","signature":"_space_create() -> RID","description":"","returnType":"RID"},{"name":"_space_get_contact_count","signature":"_space_get_contact_count(space: RID) -> int","description":"","returnType":"int"},{"name":"_space_get_contacts","signature":"_space_get_contacts(space: RID) -> PackedVector3Array","description":"","returnType":"PackedVector3Array"},{"name":"_space_get_direct_state","signature":"_space_get_direct_state(space: RID) -> PhysicsDirectSpaceState3D","description":"","returnType":"PhysicsDirectSpaceState3D"},{"name":"_space_get_param","signature":"_space_get_param(space: RID, param: int) -> float","description":"","returnType":"float"},{"name":"_space_is_active","signature":"_space_is_active(space: RID) -> bool","description":"","returnType":"bool"},{"name":"_space_set_active","signature":"_space_set_active(space: RID, active: bool) -> void","description":"","returnType":"void"},{"name":"_space_set_debug_contacts","signature":"_space_set_debug_contacts(space: RID, max_contacts: int) -> void","description":"","returnType":"void"},{"name":"_space_set_param","signature":"_space_set_param(space: RID, param: int, value: float) -> void","description":"","returnType":"void"},{"name":"_sphere_shape_create","signature":"_sphere_shape_create() -> RID","description":"","returnType":"RID"},{"name":"_step","signature":"_step(step: float) -> void","description":"","returnType":"void"},{"name":"_sync","signature":"_sync() -> void","description":"","returnType":"void"},{"name":"_world_boundary_shape_create","signature":"_world_boundary_shape_create() -> RID","description":"","returnType":"RID"},{"name":"body_test_motion_is_excluding_body","signature":"body_test_motion_is_excluding_body(body: RID) -> bool","description":"","returnType":"bool"},{"name":"body_test_motion_is_excluding_object","signature":"body_test_motion_is_excluding_object(object: int) -> bool","description":"","returnType":"bool"}],"signals":[]},"PhysicsServer3DManager":{"name":"PhysicsServer3DManager","description":"A singleton for managing  implementations.","inherits":"Object","properties":[],"methods":[{"name":"register_server","signature":"register_server(name: String, create_callback: Callable) -> void","description":"Register a  implementation by passing a [param name] and a  that returns a  object.","returnType":"void"},{"name":"set_default_server","signature":"set_default_server(name: String, priority: int) -> void","description":"Set the default  implementation to the one identified by [param name], if [param priority] is greater than the priority of the current default implementation.","returnType":"void"}],"signals":[]},"PhysicsServer3DRenderingServerHandler":{"name":"PhysicsServer3DRenderingServerHandler","description":"A class used to provide [method PhysicsServer3DExtension._soft_body_update_rendering_server] with a rendering handler for soft bodies.","inherits":"Object","properties":[],"methods":[{"name":"_set_aabb","signature":"_set_aabb(aabb: AABB) -> void","description":"Called by the  to set the bounding box for the .","returnType":"void"},{"name":"_set_normal","signature":"_set_normal(vertex_id: int, normal: Vector3) -> void","description":"Called by the  to set the normal for the  vertex at the index specified by [param vertex_id].\n\t\t\t\tNote: The [param normal] parameter used to be of type const void* prior to Godot 4.2.","returnType":"void"},{"name":"_set_vertex","signature":"_set_vertex(vertex_id: int, vertex: Vector3) -> void","description":"Called by the  to set the position for the  vertex at the index specified by [param vertex_id].\n\t\t\t\tNote: The [param vertex] parameter used to be of type const void* prior to Godot 4.2.","returnType":"void"},{"name":"set_aabb","signature":"set_aabb(aabb: AABB) -> void","description":"Sets the bounding box for the .","returnType":"void"},{"name":"set_normal","signature":"set_normal(vertex_id: int, normal: Vector3) -> void","description":"Sets the normal for the  vertex at the index specified by [param vertex_id].","returnType":"void"},{"name":"set_vertex","signature":"set_vertex(vertex_id: int, vertex: Vector3) -> void","description":"Sets the position for the  vertex at the index specified by [param vertex_id].","returnType":"void"}],"signals":[]},"PhysicsShapeQueryParameters2D":{"name":"PhysicsShapeQueryParameters2D","description":"Provides parameters for [method PhysicsDirectSpaceState2D.intersect_shape].","inherits":"RefCounted","properties":[{"name":"collide_with_areas","type":"bool","description":"If [code]true[/code], the query will take [Area2D]s into account."},{"name":"collide_with_bodies","type":"bool","description":"If [code]true[/code], the query will take [PhysicsBody2D]s into account."},{"name":"collision_mask","type":"int","description":"The physics layers the query will detect (as a bitmask). By default, all collision layers are detected. See [url=$DOCS_URL/tutorials/physics/physics_introduction.html#collision-layers-and-masks]Collision layers and masks[/url] in the documentation for more information."},{"name":"exclude","type":"RID[]","description":"The list of object [RID]s that will be excluded from collisions. Use [method CollisionObject2D.get_rid] to get the [RID] associated with a [CollisionObject2D]-derived node.\n\t\t\t[b]Note:[/b] The returned array is copied and any changes to it will not update the original property value. To update the value you need to modify the returned array, and then assign it to the property again."},{"name":"margin","type":"float","description":"The collision margin for the shape."},{"name":"motion","type":"Vector2","description":"The motion of the shape being queried for."},{"name":"shape","type":"Resource","description":"The [Shape2D] that will be used for collision/intersection queries. This stores the actual reference which avoids the shape to be released while being used for queries, so always prefer using this over [member shape_rid]."},{"name":"shape_rid","type":"RID","description":"The queried shape's [RID] that will be used for collision/intersection queries. Use this over [member shape] if you want to optimize for performance using the Servers API:\n\t\t\t\t[codeblocks]\n\t\t\t\t[gdscript]\n\t\t\t\tvar shape_rid = PhysicsServer2D.circle_shape_create()\n\t\t\t\tvar radius = 64\n\t\t\t\tPhysicsServer2D.shape_set_data(shape_rid, radius)\n\n\t\t\t\tvar params = PhysicsShapeQueryParameters2D.new()\n\t\t\t\tparams.shape_rid = shape_rid\n\n\t\t\t\t# Execute physics queries here...\n\n\t\t\t\t# Release the shape when done with physics queries.\n\t\t\t\tPhysicsServer2D.free_rid(shape_rid)\n\t\t\t\t[/gdscript]\n\t\t\t\t[csharp]\n\t\t\t\tRID shapeRid = PhysicsServer2D.CircleShapeCreate();\n\t\t\t\tint radius = 64;\n\t\t\t\tPhysicsServer2D.ShapeSetData(shapeRid, radius);\n\n\t\t\t\tvar params = new PhysicsShapeQueryParameters2D();\n\t\t\t\tparams.ShapeRid = shapeRid;\n\n\t\t\t\t// Execute physics queries here...\n\n\t\t\t\t// Release the shape when done with physics queries.\n\t\t\t\tPhysicsServer2D.FreeRid(shapeRid);\n\t\t\t\t[/csharp]\n\t\t\t\t[/codeblocks]"},{"name":"transform","type":"Transform2D","description":"The queried shape's transform matrix."}],"methods":[],"signals":[]},"PhysicsShapeQueryParameters3D":{"name":"PhysicsShapeQueryParameters3D","description":"Provides parameters for [method PhysicsDirectSpaceState3D.intersect_shape].","inherits":"RefCounted","properties":[{"name":"collide_with_areas","type":"bool","description":"If [code]true[/code], the query will take [Area3D]s into account."},{"name":"collide_with_bodies","type":"bool","description":"If [code]true[/code], the query will take [PhysicsBody3D]s into account."},{"name":"collision_mask","type":"int","description":"The physics layers the query will detect (as a bitmask). By default, all collision layers are detected. See [url=$DOCS_URL/tutorials/physics/physics_introduction.html#collision-layers-and-masks]Collision layers and masks[/url] in the documentation for more information."},{"name":"exclude","type":"RID[]","description":"The list of object [RID]s that will be excluded from collisions. Use [method CollisionObject3D.get_rid] to get the [RID] associated with a [CollisionObject3D]-derived node.\n\t\t\t[b]Note:[/b] The returned array is copied and any changes to it will not update the original property value. To update the value you need to modify the returned array, and then assign it to the property again."},{"name":"margin","type":"float","description":"The collision margin for the shape."},{"name":"motion","type":"Vector3","description":"The motion of the shape being queried for."},{"name":"shape","type":"Resource","description":"The [Shape3D] that will be used for collision/intersection queries. This stores the actual reference which avoids the shape to be released while being used for queries, so always prefer using this over [member shape_rid]."},{"name":"shape_rid","type":"RID","description":"The queried shape's [RID] that will be used for collision/intersection queries. Use this over [member shape] if you want to optimize for performance using the Servers API:\n\t\t\t\t[codeblocks]\n\t\t\t\t[gdscript]\n\t\t\t\tvar shape_rid = PhysicsServer3D.shape_create(PhysicsServer3D.SHAPE_SPHERE)\n\t\t\t\tvar radius = 2.0\n\t\t\t\tPhysicsServer3D.shape_set_data(shape_rid, radius)\n\n\t\t\t\tvar params = PhysicsShapeQueryParameters3D.new()\n\t\t\t\tparams.shape_rid = shape_rid\n\n\t\t\t\t# Execute physics queries here...\n\n\t\t\t\t# Release the shape when done with physics queries.\n\t\t\t\tPhysicsServer3D.free_rid(shape_rid)\n\t\t\t\t[/gdscript]\n\t\t\t\t[csharp]\n\t\t\t\tRID shapeRid = PhysicsServer3D.ShapeCreate(PhysicsServer3D.ShapeType.Sphere);\n\t\t\t\tfloat radius = 2.0f;\n\t\t\t\tPhysicsServer3D.ShapeSetData(shapeRid, radius);\n\n\t\t\t\tvar params = new PhysicsShapeQueryParameters3D();\n\t\t\t\tparams.ShapeRid = shapeRid;\n\n\t\t\t\t// Execute physics queries here...\n\n\t\t\t\t// Release the shape when done with physics queries.\n\t\t\t\tPhysicsServer3D.FreeRid(shapeRid);\n\t\t\t\t[/csharp]\n\t\t\t\t[/codeblocks]"},{"name":"transform","type":"Transform3D","description":"The queried shape's transform matrix."}],"methods":[],"signals":[]},"PhysicsTestMotionParameters2D":{"name":"PhysicsTestMotionParameters2D","description":"Provides parameters for [method PhysicsServer2D.body_test_motion].","inherits":"RefCounted","properties":[{"name":"collide_separation_ray","type":"bool","description":"If set to [code]true[/code], shapes of type [constant PhysicsServer2D.SHAPE_SEPARATION_RAY] are used to detect collisions and can stop the motion. Can be useful when snapping to the ground.\n\t\t\tIf set to [code]false[/code], shapes of type [constant PhysicsServer2D.SHAPE_SEPARATION_RAY] are only used for separation when overlapping with other bodies. That's the main use for separation ray shapes."},{"name":"exclude_bodies","type":"RID[]","description":"Optional array of body [RID] to exclude from collision. Use [method CollisionObject2D.get_rid] to get the [RID] associated with a [CollisionObject2D]-derived node."},{"name":"exclude_objects","type":"int[]","description":"Optional array of object unique instance ID to exclude from collision. See [method Object.get_instance_id]."},{"name":"from","type":"Transform2D","description":"Transform in global space where the motion should start. Usually set to [member Node2D.global_transform] for the current body's transform."},{"name":"margin","type":"float","description":"Increases the size of the shapes involved in the collision detection."},{"name":"motion","type":"Vector2","description":"Motion vector to define the length and direction of the motion to test."},{"name":"recovery_as_collision","type":"bool","description":"If set to [code]true[/code], any depenetration from the recovery phase is reported as a collision; this is used e.g. by [CharacterBody2D] for improving floor detection during floor snapping.\n\t\t\tIf set to [code]false[/code], only collisions resulting from the motion are reported, which is generally the desired behavior."}],"methods":[],"signals":[]},"PhysicsTestMotionParameters3D":{"name":"PhysicsTestMotionParameters3D","description":"Provides parameters for [method PhysicsServer3D.body_test_motion].","inherits":"RefCounted","properties":[{"name":"collide_separation_ray","type":"bool","description":"If set to [code]true[/code], shapes of type [constant PhysicsServer3D.SHAPE_SEPARATION_RAY] are used to detect collisions and can stop the motion. Can be useful when snapping to the ground.\n\t\t\tIf set to [code]false[/code], shapes of type [constant PhysicsServer3D.SHAPE_SEPARATION_RAY] are only used for separation when overlapping with other bodies. That's the main use for separation ray shapes."},{"name":"exclude_bodies","type":"RID[]","description":"Optional array of body [RID] to exclude from collision. Use [method CollisionObject3D.get_rid] to get the [RID] associated with a [CollisionObject3D]-derived node."},{"name":"exclude_objects","type":"int[]","description":"Optional array of object unique instance ID to exclude from collision. See [method Object.get_instance_id]."},{"name":"from","type":"Transform3D","description":"Transform in global space where the motion should start. Usually set to [member Node3D.global_transform] for the current body's transform."},{"name":"margin","type":"float","description":"Increases the size of the shapes involved in the collision detection."},{"name":"max_collisions","type":"int","description":"Maximum number of returned collisions, between [code]1[/code] and [code]32[/code]. Always returns the deepest detected collisions."},{"name":"motion","type":"Vector3","description":"Motion vector to define the length and direction of the motion to test."},{"name":"recovery_as_collision","type":"bool","description":"If set to [code]true[/code], any depenetration from the recovery phase is reported as a collision; this is used e.g. by [CharacterBody3D] for improving floor detection during floor snapping.\n\t\t\tIf set to [code]false[/code], only collisions resulting from the motion are reported, which is generally the desired behavior."}],"methods":[],"signals":[]},"PhysicsTestMotionResult2D":{"name":"PhysicsTestMotionResult2D","description":"Describes the motion and collision result from [method PhysicsServer2D.body_test_motion].","inherits":"RefCounted","properties":[],"methods":[{"name":"get_collider","signature":"get_collider() -> Object","description":"Returns the colliding body's attached , if a collision occurred.","returnType":"Object"},{"name":"get_collider_id","signature":"get_collider_id() -> int","description":"Returns the unique instance ID of the colliding body's attached , if a collision occurred. See [method Object.get_instance_id].","returnType":"int"},{"name":"get_collider_rid","signature":"get_collider_rid() -> RID","description":"Returns the colliding body's  used by the , if a collision occurred.","returnType":"RID"},{"name":"get_collider_shape","signature":"get_collider_shape() -> int","description":"Returns the colliding body's shape index, if a collision occurred. See .","returnType":"int"},{"name":"get_collider_velocity","signature":"get_collider_velocity() -> Vector2","description":"Returns the colliding body's velocity, if a collision occurred.","returnType":"Vector2"},{"name":"get_collision_depth","signature":"get_collision_depth() -> float","description":"Returns the length of overlap along the collision normal, if a collision occurred.","returnType":"float"},{"name":"get_collision_local_shape","signature":"get_collision_local_shape() -> int","description":"Returns the moving object's colliding shape, if a collision occurred.","returnType":"int"},{"name":"get_collision_normal","signature":"get_collision_normal() -> Vector2","description":"Returns the colliding body's shape's normal at the point of collision, if a collision occurred.","returnType":"Vector2"},{"name":"get_collision_point","signature":"get_collision_point() -> Vector2","description":"Returns the point of collision in global coordinates, if a collision occurred.","returnType":"Vector2"},{"name":"get_collision_safe_fraction","signature":"get_collision_safe_fraction() -> float","description":"Returns the maximum fraction of the motion that can occur without a collision, between 0 and 1.","returnType":"float"},{"name":"get_collision_unsafe_fraction","signature":"get_collision_unsafe_fraction() -> float","description":"Returns the minimum fraction of the motion needed to collide, if a collision occurred, between 0 and 1.","returnType":"float"},{"name":"get_remainder","signature":"get_remainder() -> Vector2","description":"Returns the moving object's remaining movement vector.","returnType":"Vector2"},{"name":"get_travel","signature":"get_travel() -> Vector2","description":"Returns the moving object's travel before collision.","returnType":"Vector2"}],"signals":[]},"PhysicsTestMotionResult3D":{"name":"PhysicsTestMotionResult3D","description":"Describes the motion and collision result from [method PhysicsServer3D.body_test_motion].","inherits":"RefCounted","properties":[],"methods":[{"name":"get_collider","signature":"get_collider(collision_index: int) -> Object","description":"Returns the colliding body's attached  given a collision index (the deepest collision by default), if a collision occurred.","returnType":"Object"},{"name":"get_collider_id","signature":"get_collider_id(collision_index: int) -> int","description":"Returns the unique instance ID of the colliding body's attached  given a collision index (the deepest collision by default), if a collision occurred. See [method Object.get_instance_id].","returnType":"int"},{"name":"get_collider_rid","signature":"get_collider_rid(collision_index: int) -> RID","description":"Returns the colliding body's  used by the  given a collision index (the deepest collision by default), if a collision occurred.","returnType":"RID"},{"name":"get_collider_shape","signature":"get_collider_shape(collision_index: int) -> int","description":"Returns the colliding body's shape index given a collision index (the deepest collision by default), if a collision occurred. See .","returnType":"int"},{"name":"get_collider_velocity","signature":"get_collider_velocity(collision_index: int) -> Vector3","description":"Returns the colliding body's velocity given a collision index (the deepest collision by default), if a collision occurred.","returnType":"Vector3"},{"name":"get_collision_count","signature":"get_collision_count() -> int","description":"Returns the number of detected collisions.","returnType":"int"},{"name":"get_collision_depth","signature":"get_collision_depth(collision_index: int) -> float","description":"Returns the length of overlap along the collision normal given a collision index (the deepest collision by default), if a collision occurred.","returnType":"float"},{"name":"get_collision_local_shape","signature":"get_collision_local_shape(collision_index: int) -> int","description":"Returns the moving object's colliding shape given a collision index (the deepest collision by default), if a collision occurred.","returnType":"int"},{"name":"get_collision_normal","signature":"get_collision_normal(collision_index: int) -> Vector3","description":"Returns the colliding body's shape's normal at the point of collision given a collision index (the deepest collision by default), if a collision occurred.","returnType":"Vector3"},{"name":"get_collision_point","signature":"get_collision_point(collision_index: int) -> Vector3","description":"Returns the point of collision in global coordinates given a collision index (the deepest collision by default), if a collision occurred.","returnType":"Vector3"},{"name":"get_collision_safe_fraction","signature":"get_collision_safe_fraction() -> float","description":"Returns the maximum fraction of the motion that can occur without a collision, between 0 and 1.","returnType":"float"},{"name":"get_collision_unsafe_fraction","signature":"get_collision_unsafe_fraction() -> float","description":"Returns the minimum fraction of the motion needed to collide, if a collision occurred, between 0 and 1.","returnType":"float"},{"name":"get_remainder","signature":"get_remainder() -> Vector3","description":"Returns the moving object's remaining movement vector.","returnType":"Vector3"},{"name":"get_travel","signature":"get_travel() -> Vector3","description":"Returns the moving object's travel before collision.","returnType":"Vector3"}],"signals":[]},"PinJoint2D":{"name":"PinJoint2D","description":"A physics joint that attaches two 2D physics bodies at a single point, allowing them to freely rotate.","inherits":"Joint2D","properties":[{"name":"angular_limit_enabled","type":"bool","description":"If [code]true[/code], the pin maximum and minimum rotation, defined by [member angular_limit_lower] and [member angular_limit_upper] are applied."},{"name":"angular_limit_lower","type":"float","description":"The minimum rotation. Only active if [member angular_limit_enabled] is [code]true[/code]."},{"name":"angular_limit_upper","type":"float","description":"The maximum rotation. Only active if [member angular_limit_enabled] is [code]true[/code]."},{"name":"motor_enabled","type":"bool","description":"When activated, a motor turns the pin."},{"name":"motor_target_velocity","type":"float","description":"Target speed for the motor. In radians per second."},{"name":"softness","type":"float","description":"The higher this value, the more the bond to the pinned partner can flex."}],"methods":[],"signals":[]},"PinJoint3D":{"name":"PinJoint3D","description":"A physics joint that attaches two 3D physics bodies at a single point, allowing them to freely rotate.","inherits":"Joint3D","properties":[{"name":"params/bias","type":"float","description":"The force with which the pinned objects stay in positional relation to each other. The higher, the stronger."},{"name":"params/damping","type":"float","description":"The force with which the pinned objects stay in velocity relation to each other. The higher, the stronger."},{"name":"params/impulse_clamp","type":"float","description":"If above 0, this value is the maximum value for an impulse that this Joint3D produces."}],"methods":[{"name":"get_param","signature":"get_param(param: int) -> float","description":"Returns the value of the specified parameter.","returnType":"float"},{"name":"set_param","signature":"set_param(param: int, value: float) -> void","description":"Sets the value of the specified parameter.","returnType":"void"}],"signals":[]},"PlaceholderCubemap":{"name":"PlaceholderCubemap","description":"A  without image data.","inherits":"PlaceholderTextureLayered","properties":[],"methods":[],"signals":[]},"PlaceholderCubemapArray":{"name":"PlaceholderCubemapArray","description":"A  without image data.","inherits":"PlaceholderTextureLayered","properties":[],"methods":[],"signals":[]},"PlaceholderMaterial":{"name":"PlaceholderMaterial","description":"Placeholder class for a material.","inherits":"Material","properties":[],"methods":[],"signals":[]},"PlaceholderMesh":{"name":"PlaceholderMesh","description":"Placeholder class for a mesh.","inherits":"Mesh","properties":[{"name":"aabb","type":"AABB","description":"The smallest [AABB] enclosing this mesh in local space."}],"methods":[],"signals":[]},"PlaceholderTexture2D":{"name":"PlaceholderTexture2D","description":"Placeholder class for a 2-dimensional texture.","inherits":"Texture2D","properties":[{"name":"size","type":"Vector2","description":"The texture's size (in pixels)."}],"methods":[],"signals":[]},"PlaceholderTexture2DArray":{"name":"PlaceholderTexture2DArray","description":"Placeholder class for a 2-dimensional texture array.","inherits":"PlaceholderTextureLayered","properties":[],"methods":[],"signals":[]},"PlaceholderTexture3D":{"name":"PlaceholderTexture3D","description":"Placeholder class for a 3-dimensional texture.","inherits":"Texture3D","properties":[{"name":"size","type":"Vector3i","description":"The texture's size (in pixels)."}],"methods":[],"signals":[]},"PlaceholderTextureLayered":{"name":"PlaceholderTextureLayered","description":"Placeholder class for a 2-dimensional texture array.","inherits":"TextureLayered","properties":[{"name":"layers","type":"int","description":"The number of layers in the texture array."},{"name":"size","type":"Vector2i","description":"The size of each texture layer (in pixels)."}],"methods":[],"signals":[]},"Plane":{"name":"Plane","description":"A plane in Hessian normal form.","inherits":"","properties":[{"name":"d","type":"float","description":"The distance from the origin to the plane, expressed in terms of [member normal] (according to its direction and magnitude). Actual absolute distance from the origin to the plane can be calculated as [code]abs(d) / normal.length()[/code] (if [member normal] has zero length then this [Plane] does not represent a valid plane).\n\t\t\tIn the scalar equation of the plane [code]ax + by + cz = d[/code], this is [code skip-lint]d[/code], while the [code](a, b, c)[/code] coordinates are represented by the [member normal] property."},{"name":"normal","type":"Vector3","description":"The normal of the plane, typically a unit vector. Shouldn't be a zero vector as [Plane] with such [member normal] does not represent a valid plane.\n\t\t\tIn the scalar equation of the plane [code]ax + by + cz = d[/code], this is the vector [code](a, b, c)[/code], where [code skip-lint]d[/code] is the [member d] property."},{"name":"x","type":"float","description":"The X component of the plane's [member normal] vector."},{"name":"y","type":"float","description":"The Y component of the plane's [member normal] vector."},{"name":"z","type":"float","description":"The Z component of the plane's [member normal] vector."}],"methods":[{"name":"distance_to","signature":"distance_to(point: Vector3) -> float","description":"Returns the shortest distance from the plane to the position [param point]. If the point is above the plane, the distance will be positive. If below, the distance will be negative.","returnType":"float"},{"name":"get_center","signature":"get_center() -> Vector3","description":"Returns the center of the plane.","returnType":"Vector3"},{"name":"has_point","signature":"has_point(point: Vector3, tolerance: float) -> bool","description":"Returns true if [param point] is inside the plane. Comparison uses a custom minimum [param tolerance] threshold.","returnType":"bool"},{"name":"intersect_3","signature":"intersect_3(b: Plane, c: Plane) -> Variant","description":"Returns the intersection point of the three planes [param b], [param c] and this plane. If no intersection is found, null is returned.","returnType":"Variant"},{"name":"intersects_ray","signature":"intersects_ray(from: Vector3, dir: Vector3) -> Variant","description":"Returns the intersection point of a ray consisting of the position [param from] and the direction normal [param dir] with this plane. If no intersection is found, null is returned.","returnType":"Variant"},{"name":"intersects_segment","signature":"intersects_segment(from: Vector3, to: Vector3) -> Variant","description":"Returns the intersection point of a segment from position [param from] to position [param to] with this plane. If no intersection is found, null is returned.","returnType":"Variant"},{"name":"is_equal_approx","signature":"is_equal_approx(to_plane: Plane) -> bool","description":"Returns true if this plane and [param to_plane] are approximately equal, by running [method @GlobalScope.is_equal_approx] on each component.","returnType":"bool"},{"name":"is_finite","signature":"is_finite() -> bool","description":"Returns true if this plane is finite, by calling [method @GlobalScope.is_finite] on each component.","returnType":"bool"},{"name":"is_point_over","signature":"is_point_over(point: Vector3) -> bool","description":"Returns true if [param point] is located above the plane.","returnType":"bool"},{"name":"normalized","signature":"normalized() -> Plane","description":"Returns a copy of the plane, with normalized [member normal] (so it's a unit vector). Returns Plane(0, 0, 0, 0) if [member normal] can't be normalized (it has zero length).","returnType":"Plane"},{"name":"project","signature":"project(point: Vector3) -> Vector3","description":"Returns the orthogonal projection of [param point] into a point in the plane.","returnType":"Vector3"}],"signals":[]},"PlaneMesh":{"name":"PlaneMesh","description":"Class representing a planar .","inherits":"PrimitiveMesh","properties":[{"name":"center_offset","type":"Vector3","description":"Offset of the generated plane. Useful for particles."},{"name":"orientation","type":"int","description":"Direction that the [PlaneMesh] is facing. See [enum Orientation] for options."},{"name":"size","type":"Vector2","description":"Size of the generated plane."},{"name":"subdivide_depth","type":"int","description":"Number of subdivision along the Z axis."},{"name":"subdivide_width","type":"int","description":"Number of subdivision along the X axis."}],"methods":[],"signals":[]},"PointLight2D":{"name":"PointLight2D","description":"Positional 2D light source.","inherits":"Light2D","properties":[{"name":"height","type":"float","description":"The height of the light. Used with 2D normal mapping. The units are in pixels, e.g. if the height is 100, then it will illuminate an object 100 pixels away at a 45° angle to the plane."},{"name":"offset","type":"Vector2","description":"The offset of the light's [member texture]."},{"name":"texture","type":"Texture2D","description":"[Texture2D] used for the light's appearance."},{"name":"texture_scale","type":"float","description":"The [member texture]'s scale factor."}],"methods":[],"signals":[]},"PointMesh":{"name":"PointMesh","description":"Mesh with a single Point primitive.","inherits":"PrimitiveMesh","properties":[],"methods":[],"signals":[]},"Polygon2D":{"name":"Polygon2D","description":"A 2D polygon.","inherits":"Node2D","properties":[{"name":"antialiased","type":"bool","description":"If [code]true[/code], polygon edges will be anti-aliased."},{"name":"color","type":"Color","description":"The polygon's fill color. If [member texture] is set, it will be multiplied by this color. It will also be the default color for vertices not set in [member vertex_colors]."},{"name":"internal_vertex_count","type":"int","description":"Number of internal vertices, used for UV mapping."},{"name":"invert_border","type":"float","description":"Added padding applied to the bounding box when [member invert_enabled] is set to [code]true[/code]. Setting this value too small may result in a \"Bad Polygon\" error."},{"name":"invert_enabled","type":"bool","description":"If [code]true[/code], the polygon will be inverted, containing the area outside the defined points and extending to the [member invert_border]."},{"name":"offset","type":"Vector2","description":"The offset applied to each vertex."},{"name":"polygon","type":"PackedVector2Array","description":"The polygon's list of vertices. The final point will be connected to the first."},{"name":"polygons","type":"Array","description":"The list of polygons, in case more than one is being represented. Every individual polygon is stored as a [PackedInt32Array] where each [int] is an index to a point in [member polygon]. If empty, this property will be ignored, and the resulting single polygon will be composed of all points in [member polygon], using the order they are stored in."},{"name":"skeleton","type":"NodePath","description":"Path to a [Skeleton2D] node used for skeleton-based deformations of this polygon. If empty or invalid, skeletal deformations will not be used."},{"name":"texture","type":"Texture2D","description":"The polygon's fill texture. Use [member uv] to set texture coordinates."},{"name":"texture_offset","type":"Vector2","description":"Amount to offset the polygon's [member texture]. If set to [code]Vector2(0, 0)[/code], the texture's origin (its top-left corner) will be placed at the polygon's position."},{"name":"texture_rotation","type":"float","description":"The texture's rotation in radians."},{"name":"texture_scale","type":"Vector2","description":"Amount to multiply the [member uv] coordinates when using [member texture]. Larger values make the texture smaller, and vice versa."},{"name":"uv","type":"PackedVector2Array","description":"Texture coordinates for each vertex of the polygon. There should be one UV value per polygon vertex. If there are fewer, undefined vertices will use [code]Vector2(0, 0)[/code]."},{"name":"vertex_colors","type":"PackedColorArray","description":"Color for each vertex. Colors are interpolated between vertices, resulting in smooth gradients. There should be one per polygon vertex. If there are fewer, undefined vertices will use [member color]."}],"methods":[{"name":"add_bone","signature":"add_bone(path: NodePath, weights: PackedFloat32Array) -> void","description":"Adds a bone with the specified [param path] and [param weights].","returnType":"void"},{"name":"clear_bones","signature":"clear_bones() -> void","description":"Removes all bones from this .","returnType":"void"},{"name":"erase_bone","signature":"erase_bone(index: int) -> void","description":"Removes the specified bone from this .","returnType":"void"},{"name":"get_bone_count","signature":"get_bone_count() -> int","description":"Returns the number of bones in this .","returnType":"int"},{"name":"get_bone_path","signature":"get_bone_path(index: int) -> NodePath","description":"Returns the path to the node associated with the specified bone.","returnType":"NodePath"},{"name":"get_bone_weights","signature":"get_bone_weights(index: int) -> PackedFloat32Array","description":"Returns the weight values of the specified bone.","returnType":"PackedFloat32Array"},{"name":"set_bone_path","signature":"set_bone_path(index: int, path: NodePath) -> void","description":"Sets the path to the node associated with the specified bone.","returnType":"void"},{"name":"set_bone_weights","signature":"set_bone_weights(index: int, weights: PackedFloat32Array) -> void","description":"Sets the weight values for the specified bone.","returnType":"void"}],"signals":[]},"PolygonOccluder3D":{"name":"PolygonOccluder3D","description":"Flat 2D polygon shape for use with occlusion culling in .","inherits":"Occluder3D","properties":[{"name":"polygon","type":"PackedVector2Array","description":"The polygon to use for occlusion culling. The polygon can be convex or concave, but it should have as few points as possible to maximize performance.\n\t\t\tThe polygon must [i]not[/i] have intersecting lines. Otherwise, triangulation will fail (with an error message printed)."}],"methods":[],"signals":[]},"PolygonPathFinder":{"name":"PolygonPathFinder","description":"","inherits":"Resource","properties":[],"methods":[{"name":"find_path","signature":"find_path(from: Vector2, to: Vector2) -> PackedVector2Array","description":"","returnType":"PackedVector2Array"},{"name":"get_bounds","signature":"get_bounds() -> Rect2","description":"","returnType":"Rect2"},{"name":"get_closest_point","signature":"get_closest_point(point: Vector2) -> Vector2","description":"","returnType":"Vector2"},{"name":"get_intersections","signature":"get_intersections(from: Vector2, to: Vector2) -> PackedVector2Array","description":"","returnType":"PackedVector2Array"},{"name":"get_point_penalty","signature":"get_point_penalty(idx: int) -> float","description":"","returnType":"float"},{"name":"is_point_inside","signature":"is_point_inside(point: Vector2) -> bool","description":"Returns true if [param point] falls inside the polygon area.\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tvar polygon_path_finder = PolygonPathFinder.new()\n\t\t\t\tvar points = [Vector2(0.0, 0.0), Vector2(1.0, 0.0), Vector2(0.0, 1.0)]\n\t\t\t\tvar connections = [0, 1, 1, 2, 2, 0]\n\t\t\t\tpolygon_path_finder.setup(points, connections)\n\t\t\t\tprint(polygon_path_finder.is_point_inside(Vector2(0.2, 0.2))) # Prints true\n\t\t\t\tprint(polygon_path_finder.is_point_inside(Vector2(1.0, 1.0))) # Prints false\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tvar polygonPathFinder = new PolygonPathFinder();\n\t\t\t\tVector2[] points =\n\t\t\t\t[\n\t\t\t\t    new Vector2(0.0f, 0.0f),\n\t\t\t\t    new Vector2(1.0f, 0.0f),\n\t\t\t\t    new Vector2(0.0f, 1.0f)\n\t\t\t\t];\n\t\t\t\tint[] connections = [0, 1, 1, 2, 2, 0];\n\t\t\t\tpolygonPathFinder.Setup(points, connections);\n\t\t\t\tGD.Print(polygonPathFinder.IsPointInside(new Vector2(0.2f, 0.2f))); // Prints True\n\t\t\t\tGD.Print(polygonPathFinder.IsPointInside(new Vector2(1.0f, 1.0f))); // Prints False\n\t\t\t\t\n\t\t\t\t","returnType":"bool"},{"name":"set_point_penalty","signature":"set_point_penalty(idx: int, penalty: float) -> void","description":"","returnType":"void"},{"name":"setup","signature":"setup(points: PackedVector2Array, connections: PackedInt32Array) -> void","description":"Sets up  with an array of points that define the vertices of the polygon, and an array of indices that determine the edges of the polygon.\n\t\t\t\tThe length of [param connections] must be even, returns an error if odd.\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tvar polygon_path_finder = PolygonPathFinder.new()\n\t\t\t\tvar points = [Vector2(0.0, 0.0), Vector2(1.0, 0.0), Vector2(0.0, 1.0)]\n\t\t\t\tvar connections = [0, 1, 1, 2, 2, 0]\n\t\t\t\tpolygon_path_finder.setup(points, connections)\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tvar polygonPathFinder = new PolygonPathFinder();\n\t\t\t\tVector2[] points =\n\t\t\t\t[\n\t\t\t\t    new Vector2(0.0f, 0.0f),\n\t\t\t\t    new Vector2(1.0f, 0.0f),\n\t\t\t\t    new Vector2(0.0f, 1.0f)\n\t\t\t\t];\n\t\t\t\tint[] connections = [0, 1, 1, 2, 2, 0];\n\t\t\t\tpolygonPathFinder.Setup(points, connections);\n\t\t\t\t\n\t\t\t\t","returnType":"void"}],"signals":[]},"Popup":{"name":"Popup","description":"Base class for contextual windows and panels with fixed position.","inherits":"Window","properties":[],"methods":[],"signals":[{"name":"popup_hide","description":"Emitted when the popup is hidden."}]},"PopupMenu":{"name":"PopupMenu","description":"A modal window used to display a list of options.","inherits":"Popup","properties":[{"name":"allow_search","type":"bool","description":"If [code]true[/code], allows navigating [PopupMenu] with letter keys."},{"name":"hide_on_checkable_item_selection","type":"bool","description":"If [code]true[/code], hides the [PopupMenu] when a checkbox or radio button is selected."},{"name":"hide_on_item_selection","type":"bool","description":"If [code]true[/code], hides the [PopupMenu] when an item is selected."},{"name":"hide_on_state_item_selection","type":"bool","description":"If [code]true[/code], hides the [PopupMenu] when a state item is selected."},{"name":"item_count","type":"int","description":"The number of items currently in the list."},{"name":"prefer_native_menu","type":"bool","description":"If [code]true[/code], [MenuBar] will use native menu when supported.\n\t\t\t[b]Note:[/b] If [PopupMenu] is linked to [StatusIndicator], [MenuBar], or another [PopupMenu] item it can use native menu regardless of this property, use [method is_native_menu] to check it."},{"name":"submenu_popup_delay","type":"float","description":"Sets the delay time in seconds for the submenu item to popup on mouse hovering. If the popup menu is added as a child of another (acting as a submenu), it will inherit the delay time of the parent menu item."},{"name":"system_menu_id","type":"int","description":"If set to one of the values of [enum NativeMenu.SystemMenus], this [PopupMenu] is bound to the special system menu. Only one [PopupMenu] can be bound to each special menu at a time."}],"methods":[{"name":"activate_item_by_event","signature":"activate_item_by_event(event: InputEvent, for_global_only: bool) -> bool","description":"Checks the provided [param event] against the 's shortcuts and accelerators, and activates the first item with matching events. If [param for_global_only] is true, only shortcuts and accelerators with global set to true will be called.\n\t\t\t\tReturns true if an item was successfully activated.\n\t\t\t\tNote: Certain s, such as , will call this method automatically.","returnType":"bool"},{"name":"add_check_item","signature":"add_check_item(label: String, id: int, accel: int) -> void","description":"Adds a new checkable item with text [param label].\n\t\t\t\tAn [param id] can optionally be provided, as well as an accelerator ([param accel]). If no [param id] is provided, one will be created from the index. If no [param accel] is provided, then the default value of 0 (corresponding to [constant @GlobalScope.KEY_NONE]) will be assigned to the item (which means it won't have any accelerator). See [method get_item_accelerator] for more info on accelerators.\n\t\t\t\tNote: Checkable items just display a checkmark, but don't have any built-in checking behavior and must be checked/unchecked manually. See [method set_item_checked] for more info on how to control it.","returnType":"void"},{"name":"add_check_shortcut","signature":"add_check_shortcut(shortcut: Shortcut, id: int, global: bool) -> void","description":"Adds a new checkable item and assigns the specified  to it. Sets the label of the checkbox to the 's name.\n\t\t\t\tAn [param id] can optionally be provided. If no [param id] is provided, one will be created from the index.\n\t\t\t\tNote: Checkable items just display a checkmark, but don't have any built-in checking behavior and must be checked/unchecked manually. See [method set_item_checked] for more info on how to control it.","returnType":"void"},{"name":"add_icon_check_item","signature":"add_icon_check_item(texture: Texture2D, label: String, id: int, accel: int) -> void","description":"Adds a new checkable item with text [param label] and icon [param texture].\n\t\t\t\tAn [param id] can optionally be provided, as well as an accelerator ([param accel]). If no [param id] is provided, one will be created from the index. If no [param accel] is provided, then the default value of 0 (corresponding to [constant @GlobalScope.KEY_NONE]) will be assigned to the item (which means it won't have any accelerator). See [method get_item_accelerator] for more info on accelerators.\n\t\t\t\tNote: Checkable items just display a checkmark, but don't have any built-in checking behavior and must be checked/unchecked manually. See [method set_item_checked] for more info on how to control it.","returnType":"void"},{"name":"add_icon_check_shortcut","signature":"add_icon_check_shortcut(texture: Texture2D, shortcut: Shortcut, id: int, global: bool) -> void","description":"Adds a new checkable item and assigns the specified  and icon [param texture] to it. Sets the label of the checkbox to the 's name.\n\t\t\t\tAn [param id] can optionally be provided. If no [param id] is provided, one will be created from the index.\n\t\t\t\tNote: Checkable items just display a checkmark, but don't have any built-in checking behavior and must be checked/unchecked manually. See [method set_item_checked] for more info on how to control it.","returnType":"void"},{"name":"add_icon_item","signature":"add_icon_item(texture: Texture2D, label: String, id: int, accel: int) -> void","description":"Adds a new item with text [param label] and icon [param texture].\n\t\t\t\tAn [param id] can optionally be provided, as well as an accelerator ([param accel]). If no [param id] is provided, one will be created from the index. If no [param accel] is provided, then the default value of 0 (corresponding to [constant @GlobalScope.KEY_NONE]) will be assigned to the item (which means it won't have any accelerator). See [method get_item_accelerator] for more info on accelerators.","returnType":"void"},{"name":"add_icon_radio_check_item","signature":"add_icon_radio_check_item(texture: Texture2D, label: String, id: int, accel: int) -> void","description":"Same as [method add_icon_check_item], but uses a radio check button.","returnType":"void"},{"name":"add_icon_radio_check_shortcut","signature":"add_icon_radio_check_shortcut(texture: Texture2D, shortcut: Shortcut, id: int, global: bool) -> void","description":"Same as [method add_icon_check_shortcut], but uses a radio check button.","returnType":"void"},{"name":"add_icon_shortcut","signature":"add_icon_shortcut(texture: Texture2D, shortcut: Shortcut, id: int, global: bool, allow_echo: bool) -> void","description":"Adds a new item and assigns the specified  and icon [param texture] to it. Sets the label of the checkbox to the 's name.\n\t\t\t\tAn [param id] can optionally be provided. If no [param id] is provided, one will be created from the index.\n\t\t\t\tIf [param allow_echo] is true, the shortcut can be activated with echo events.","returnType":"void"},{"name":"add_item","signature":"add_item(label: String, id: int, accel: int) -> void","description":"Adds a new item with text [param label].\n\t\t\t\tAn [param id] can optionally be provided, as well as an accelerator ([param accel]). If no [param id] is provided, one will be created from the index. If no [param accel] is provided, then the default value of 0 (corresponding to [constant @GlobalScope.KEY_NONE]) will be assigned to the item (which means it won't have any accelerator). See [method get_item_accelerator] for more info on accelerators.\n\t\t\t\tNote: The provided [param id] is used only in [signal id_pressed] and [signal id_focused] signals. It's not related to the index arguments in e.g. [method set_item_checked].","returnType":"void"},{"name":"add_multistate_item","signature":"add_multistate_item(label: String, max_states: int, default_state: int, id: int, accel: int) -> void","description":"Adds a new multistate item with text [param label].\n\t\t\t\tContrarily to normal binary items, multistate items can have more than two states, as defined by [param max_states]. The default value is defined by [param default_state].\n\t\t\t\tAn [param id] can optionally be provided, as well as an accelerator ([param accel]). If no [param id] is provided, one will be created from the index. If no [param accel] is provided, then the default value of 0 (corresponding to [constant @GlobalScope.KEY_NONE]) will be assigned to the item (which means it won't have any accelerator). See [method get_item_accelerator] for more info on accelerators.\n\t\t\t\t\n\t\t\t\tfunc _ready():\n\t\t\t\t    add_multistate_item(\"Item\", 3, 0)\n\n\t\t\t\t    index_pressed.connect(func(index: int):\n\t\t\t\t            toggle_item_multistate(index)\n\t\t\t\t            match get_item_multistate(index):\n\t\t\t\t                0:\n\t\t\t\t                    print(\"First state\")\n\t\t\t\t                1:\n\t\t\t\t                    print(\"Second state\")\n\t\t\t\t                2:\n\t\t\t\t                    print(\"Third state\")\n\t\t\t\t        )\n\t\t\t\t\n\t\t\t\tNote: Multistate items don't update their state automatically and must be done manually. See [method toggle_item_multistate], [method set_item_multistate] and [method get_item_multistate] for more info on how to control it.","returnType":"void"},{"name":"add_radio_check_item","signature":"add_radio_check_item(label: String, id: int, accel: int) -> void","description":"Adds a new radio check button with text [param label].\n\t\t\t\tAn [param id] can optionally be provided, as well as an accelerator ([param accel]). If no [param id] is provided, one will be created from the index. If no [param accel] is provided, then the default value of 0 (corresponding to [constant @GlobalScope.KEY_NONE]) will be assigned to the item (which means it won't have any accelerator). See [method get_item_accelerator] for more info on accelerators.\n\t\t\t\tNote: Checkable items just display a checkmark, but don't have any built-in checking behavior and must be checked/unchecked manually. See [method set_item_checked] for more info on how to control it.","returnType":"void"},{"name":"add_radio_check_shortcut","signature":"add_radio_check_shortcut(shortcut: Shortcut, id: int, global: bool) -> void","description":"Adds a new radio check button and assigns a  to it. Sets the label of the checkbox to the 's name.\n\t\t\t\tAn [param id] can optionally be provided. If no [param id] is provided, one will be created from the index.\n\t\t\t\tNote: Checkable items just display a checkmark, but don't have any built-in checking behavior and must be checked/unchecked manually. See [method set_item_checked] for more info on how to control it.","returnType":"void"},{"name":"add_separator","signature":"add_separator(label: String, id: int) -> void","description":"Adds a separator between items. Separators also occupy an index, which you can set by using the [param id] parameter.\n\t\t\t\tA [param label] can optionally be provided, which will appear at the center of the separator.","returnType":"void"},{"name":"add_shortcut","signature":"add_shortcut(shortcut: Shortcut, id: int, global: bool, allow_echo: bool) -> void","description":"Adds a .\n\t\t\t\tAn [param id] can optionally be provided. If no [param id] is provided, one will be created from the index.\n\t\t\t\tIf [param allow_echo] is true, the shortcut can be activated with echo events.","returnType":"void"},{"name":"add_submenu_item","signature":"add_submenu_item(label: String, submenu: String, id: int) -> void","description":"Adds an item that will act as a submenu of the parent  node when clicked. The [param submenu] argument must be the name of an existing  that has been added as a child to this node. This submenu will be shown when the item is clicked, hovered for long enough, or activated using the ui_select or ui_right input actions.\n\t\t\t\tAn [param id] can optionally be provided. If no [param id] is provided, one will be created from the index.","returnType":"void"},{"name":"add_submenu_node_item","signature":"add_submenu_node_item(label: String, submenu: PopupMenu, id: int) -> void","description":"Adds an item that will act as a submenu of the parent  node when clicked. This submenu will be shown when the item is clicked, hovered for long enough, or activated using the ui_select or ui_right input actions.\n\t\t\t\t[param submenu] must be either child of this  or has no parent node (in which case it will be automatically added as a child). If the [param submenu] popup has another parent, this method will fail.\n\t\t\t\tAn [param id] can optionally be provided. If no [param id] is provided, one will be created from the index.","returnType":"void"},{"name":"clear","signature":"clear(free_submenus: bool) -> void","description":"Removes all items from the . If [param free_submenus] is true, the submenu nodes are automatically freed.","returnType":"void"},{"name":"get_focused_item","signature":"get_focused_item() -> int","description":"Returns the index of the currently focused item. Returns -1 if no item is focused.","returnType":"int"},{"name":"get_item_accelerator","signature":"get_item_accelerator(index: int) -> int","description":"Returns the accelerator of the item at the given [param index]. An accelerator is a keyboard shortcut that can be pressed to trigger the menu button even if it's not currently open. The return value is an integer which is generally a combination of [enum KeyModifierMask]s and [enum Key]s using bitwise OR such as KEY_MASK_CTRL | KEY_A (Ctrl + A). If no accelerator is defined for the specified [param index], [method get_item_accelerator] returns 0 (corresponding to [constant @GlobalScope.KEY_NONE]).","returnType":"int"},{"name":"get_item_icon","signature":"get_item_icon(index: int) -> Texture2D","description":"Returns the icon of the item at the given [param index].","returnType":"Texture2D"},{"name":"get_item_icon_max_width","signature":"get_item_icon_max_width(index: int) -> int","description":"Returns the maximum allowed width of the icon for the item at the given [param index].","returnType":"int"},{"name":"get_item_icon_modulate","signature":"get_item_icon_modulate(index: int) -> Color","description":"Returns a  modulating the item's icon at the given [param index].","returnType":"Color"},{"name":"get_item_id","signature":"get_item_id(index: int) -> int","description":"Returns the ID of the item at the given [param index]. id can be manually assigned, while index can not.","returnType":"int"},{"name":"get_item_indent","signature":"get_item_indent(index: int) -> int","description":"Returns the horizontal offset of the item at the given [param index].","returnType":"int"},{"name":"get_item_index","signature":"get_item_index(id: int) -> int","description":"Returns the index of the item containing the specified [param id]. Index is automatically assigned to each item by the engine and can not be set manually.","returnType":"int"},{"name":"get_item_language","signature":"get_item_language(index: int) -> String","description":"Returns item's text language code.","returnType":"String"},{"name":"get_item_metadata","signature":"get_item_metadata(index: int) -> Variant","description":"Returns the metadata of the specified item, which might be of any type. You can set it with [method set_item_metadata], which provides a simple way of assigning context data to items.","returnType":"Variant"},{"name":"get_item_multistate","signature":"get_item_multistate(index: int) -> int","description":"Returns the state of the item at the given [param index].","returnType":"int"},{"name":"get_item_multistate_max","signature":"get_item_multistate_max(index: int) -> int","description":"Returns the max states of the item at the given [param index].","returnType":"int"},{"name":"get_item_shortcut","signature":"get_item_shortcut(index: int) -> Shortcut","description":"Returns the  associated with the item at the given [param index].","returnType":"Shortcut"},{"name":"get_item_submenu","signature":"get_item_submenu(index: int) -> String","description":"Returns the submenu name of the item at the given [param index]. See [method add_submenu_item] for more info on how to add a submenu.","returnType":"String"},{"name":"get_item_submenu_node","signature":"get_item_submenu_node(index: int) -> PopupMenu","description":"Returns the submenu of the item at the given [param index], or null if no submenu was added. See [method add_submenu_node_item] for more info on how to add a submenu.","returnType":"PopupMenu"},{"name":"get_item_text","signature":"get_item_text(index: int) -> String","description":"Returns the text of the item at the given [param index].","returnType":"String"},{"name":"get_item_text_direction","signature":"get_item_text_direction(index: int) -> int","description":"Returns item's text base writing direction.","returnType":"int"},{"name":"get_item_tooltip","signature":"get_item_tooltip(index: int) -> String","description":"Returns the tooltip associated with the item at the given [param index].","returnType":"String"},{"name":"is_item_checkable","signature":"is_item_checkable(index: int) -> bool","description":"Returns true if the item at the given [param index] is checkable in some way, i.e. if it has a checkbox or radio button.\n\t\t\t\tNote: Checkable items just display a checkmark or radio button, but don't have any built-in checking behavior and must be checked/unchecked manually.","returnType":"bool"},{"name":"is_item_checked","signature":"is_item_checked(index: int) -> bool","description":"Returns true if the item at the given [param index] is checked.","returnType":"bool"},{"name":"is_item_disabled","signature":"is_item_disabled(index: int) -> bool","description":"Returns true if the item at the given [param index] is disabled. When it is disabled it can't be selected, or its action invoked.\n\t\t\t\tSee [method set_item_disabled] for more info on how to disable an item.","returnType":"bool"},{"name":"is_item_radio_checkable","signature":"is_item_radio_checkable(index: int) -> bool","description":"Returns true if the item at the given [param index] has radio button-style checkability.\n\t\t\t\tNote: This is purely cosmetic; you must add the logic for checking/unchecking items in radio groups.","returnType":"bool"},{"name":"is_item_separator","signature":"is_item_separator(index: int) -> bool","description":"Returns true if the item is a separator. If it is, it will be displayed as a line. See [method add_separator] for more info on how to add a separator.","returnType":"bool"},{"name":"is_item_shortcut_disabled","signature":"is_item_shortcut_disabled(index: int) -> bool","description":"Returns true if the specified item's shortcut is disabled.","returnType":"bool"},{"name":"is_native_menu","signature":"is_native_menu() -> bool","description":"Returns true if the system native menu is supported and currently used by this .","returnType":"bool"},{"name":"is_system_menu","signature":"is_system_menu() -> bool","description":"Returns true if the menu is bound to the special system menu.","returnType":"bool"},{"name":"remove_item","signature":"remove_item(index: int) -> void","description":"Removes the item at the given [param index] from the menu.\n\t\t\t\tNote: The indices of items after the removed item will be shifted by one.","returnType":"void"},{"name":"scroll_to_item","signature":"scroll_to_item(index: int) -> void","description":"Moves the scroll view to make the item at the given [param index] visible.","returnType":"void"},{"name":"set_focused_item","signature":"set_focused_item(index: int) -> void","description":"Sets the currently focused item as the given [param index].\n\t\t\t\tPassing -1 as the index makes so that no item is focused.","returnType":"void"},{"name":"set_item_accelerator","signature":"set_item_accelerator(index: int, accel: int) -> void","description":"Sets the accelerator of the item at the given [param index]. An accelerator is a keyboard shortcut that can be pressed to trigger the menu button even if it's not currently open. [param accel] is generally a combination of [enum KeyModifierMask]s and [enum Key]s using bitwise OR such as KEY_MASK_CTRL | KEY_A (Ctrl + A).","returnType":"void"},{"name":"set_item_as_checkable","signature":"set_item_as_checkable(index: int, enable: bool) -> void","description":"Sets whether the item at the given [param index] has a checkbox. If false, sets the type of the item to plain text.\n\t\t\t\tNote: Checkable items just display a checkmark, but don't have any built-in checking behavior and must be checked/unchecked manually.","returnType":"void"},{"name":"set_item_as_radio_checkable","signature":"set_item_as_radio_checkable(index: int, enable: bool) -> void","description":"Sets the type of the item at the given [param index] to radio button. If false, sets the type of the item to plain text.","returnType":"void"},{"name":"set_item_as_separator","signature":"set_item_as_separator(index: int, enable: bool) -> void","description":"Mark the item at the given [param index] as a separator, which means that it would be displayed as a line. If false, sets the type of the item to plain text.","returnType":"void"},{"name":"set_item_checked","signature":"set_item_checked(index: int, checked: bool) -> void","description":"Sets the checkstate status of the item at the given [param index].","returnType":"void"},{"name":"set_item_disabled","signature":"set_item_disabled(index: int, disabled: bool) -> void","description":"Enables/disables the item at the given [param index]. When it is disabled, it can't be selected and its action can't be invoked.","returnType":"void"},{"name":"set_item_icon","signature":"set_item_icon(index: int, icon: Texture2D) -> void","description":"Replaces the  icon of the item at the given [param index].","returnType":"void"},{"name":"set_item_icon_max_width","signature":"set_item_icon_max_width(index: int, width: int) -> void","description":"Sets the maximum allowed width of the icon for the item at the given [param index]. This limit is applied on top of the default size of the icon and on top of [theme_item icon_max_width]. The height is adjusted according to the icon's ratio.","returnType":"void"},{"name":"set_item_icon_modulate","signature":"set_item_icon_modulate(index: int, modulate: Color) -> void","description":"Sets a modulating  of the item's icon at the given [param index].","returnType":"void"},{"name":"set_item_id","signature":"set_item_id(index: int, id: int) -> void","description":"Sets the [param id] of the item at the given [param index].\n\t\t\t\tThe [param id] is used in [signal id_pressed] and [signal id_focused] signals.","returnType":"void"},{"name":"set_item_indent","signature":"set_item_indent(index: int, indent: int) -> void","description":"Sets the horizontal offset of the item at the given [param index].","returnType":"void"},{"name":"set_item_language","signature":"set_item_language(index: int, language: String) -> void","description":"Sets language code of item's text used for line-breaking and text shaping algorithms, if left empty current locale is used instead.","returnType":"void"},{"name":"set_item_metadata","signature":"set_item_metadata(index: int, metadata: Variant) -> void","description":"Sets the metadata of an item, which may be of any type. You can later get it with [method get_item_metadata], which provides a simple way of assigning context data to items.","returnType":"void"},{"name":"set_item_multistate","signature":"set_item_multistate(index: int, state: int) -> void","description":"Sets the state of a multistate item. See [method add_multistate_item] for details.","returnType":"void"},{"name":"set_item_multistate_max","signature":"set_item_multistate_max(index: int, max_states: int) -> void","description":"Sets the max states of a multistate item. See [method add_multistate_item] for details.","returnType":"void"},{"name":"set_item_shortcut","signature":"set_item_shortcut(index: int, shortcut: Shortcut, global: bool) -> void","description":"Sets a  for the item at the given [param index].","returnType":"void"},{"name":"set_item_shortcut_disabled","signature":"set_item_shortcut_disabled(index: int, disabled: bool) -> void","description":"Disables the  of the item at the given [param index].","returnType":"void"},{"name":"set_item_submenu","signature":"set_item_submenu(index: int, submenu: String) -> void","description":"Sets the submenu of the item at the given [param index]. The submenu is the name of a child  node that would be shown when the item is clicked.","returnType":"void"},{"name":"set_item_submenu_node","signature":"set_item_submenu_node(index: int, submenu: PopupMenu) -> void","description":"Sets the submenu of the item at the given [param index]. The submenu is a  node that would be shown when the item is clicked. It must either be a child of this  or has no parent (in which case it will be automatically added as a child). If the [param submenu] popup has another parent, this method will fail.","returnType":"void"},{"name":"set_item_text","signature":"set_item_text(index: int, text: String) -> void","description":"Sets the text of the item at the given [param index].","returnType":"void"},{"name":"set_item_text_direction","signature":"set_item_text_direction(index: int, direction: int) -> void","description":"Sets item's text base writing direction.","returnType":"void"},{"name":"set_item_tooltip","signature":"set_item_tooltip(index: int, tooltip: String) -> void","description":"Sets the  tooltip of the item at the given [param index].","returnType":"void"},{"name":"toggle_item_checked","signature":"toggle_item_checked(index: int) -> void","description":"Toggles the check state of the item at the given [param index].","returnType":"void"},{"name":"toggle_item_multistate","signature":"toggle_item_multistate(index: int) -> void","description":"Cycle to the next state of a multistate item. See [method add_multistate_item] for details.","returnType":"void"}],"signals":[{"name":"id_focused","description":"Emitted when the user navigated to an item of some [param id] using the [member ProjectSettings.input/ui_up] or [member ProjectSettings.input/ui_down] input action."},{"name":"id_pressed","description":"Emitted when an item of some [param id] is pressed or its accelerator is activated.\n\t\t\t\t[b]Note:[/b] If [param id] is negative (either explicitly or due to overflow), this will return the corresponding index instead."},{"name":"index_pressed","description":"Emitted when an item of some [param index] is pressed or its accelerator is activated."},{"name":"menu_changed","description":"Emitted when any item is added, modified or removed."}]},"PopupPanel":{"name":"PopupPanel","description":"A popup with a panel background.","inherits":"Popup","properties":[],"methods":[],"signals":[]},"PortableCompressedTexture2D":{"name":"PortableCompressedTexture2D","description":"Provides a compressed texture for disk and/or VRAM in a way that is portable.","inherits":"Texture2D","properties":[{"name":"keep_compressed_buffer","type":"bool","description":"When running on the editor, this class will keep the source compressed data in memory. Otherwise, the source compressed data is lost after loading and the resource can't be re saved.\n\t\t\tThis flag allows to keep the compressed data in memory if you intend it to persist after loading."},{"name":"size_override","type":"Vector2","description":"Allow overriding the texture size (for 2D only)."}],"methods":[{"name":"create_from_image","signature":"create_from_image(image: Image, compression_mode: int, normal_map: bool, lossy_quality: float) -> void","description":"Initializes the compressed texture from a base image. The compression mode must be provided.\n\t\t\t\t[param normal_map] is recommended to ensure optimum quality if this image will be used as a normal map.\n\t\t\t\tIf lossy compression is requested, the quality setting can optionally be provided. This maps to Lossy WebP compression quality.","returnType":"void"},{"name":"get_compression_mode","signature":"get_compression_mode() -> int","description":"Return the compression mode used (valid after initialized).","returnType":"int"},{"name":"get_format","signature":"get_format() -> int","description":"Return the image format used (valid after initialized).","returnType":"int"},{"name":"is_keeping_all_compressed_buffers","signature":"is_keeping_all_compressed_buffers() -> bool","description":"Return whether the flag is overridden for all textures of this type.","returnType":"bool"},{"name":"set_keep_all_compressed_buffers","signature":"set_keep_all_compressed_buffers(keep: bool) -> void","description":"Overrides the flag globally for all textures of this type. This is used primarily by the editor.","returnType":"void"}],"signals":[]},"PrimitiveMesh":{"name":"PrimitiveMesh","description":"Base class for all primitive meshes. Handles applying a  to a primitive mesh.","inherits":"Mesh","properties":[{"name":"add_uv2","type":"bool","description":"If set, generates UV2 UV coordinates applying a padding using the [member uv2_padding] setting. UV2 is needed for lightmapping."},{"name":"custom_aabb","type":"AABB","description":"Overrides the [AABB] with one defined by user for use with frustum culling. Especially useful to avoid unexpected culling when using a shader to offset vertices."},{"name":"flip_faces","type":"bool","description":"If set, the order of the vertices in each triangle are reversed resulting in the backside of the mesh being drawn.\n\t\t\tThis gives the same result as using [constant BaseMaterial3D.CULL_FRONT] in [member BaseMaterial3D.cull_mode]."},{"name":"material","type":"Material","description":"The current [Material] of the primitive mesh."},{"name":"uv2_padding","type":"float","description":"If [member add_uv2] is set, specifies the padding in pixels applied along seams of the mesh. Lower padding values allow making better use of the lightmap texture (resulting in higher texel density), but may introduce visible lightmap bleeding along edges.\n\t\t\tIf the size of the lightmap texture can't be determined when generating the mesh, UV2 is calculated assuming a texture size of 1024x1024."}],"methods":[{"name":"_create_mesh_array","signature":"_create_mesh_array() -> Array","description":"Override this method to customize how this primitive mesh should be generated. Should return an  where each element is another Array of values required for the mesh (see the [enum Mesh.ArrayType] constants).","returnType":"Array"},{"name":"get_mesh_arrays","signature":"get_mesh_arrays() -> Array","description":"Returns the mesh arrays used to make up the surface of this primitive mesh.\n\t\t\t\tExample: Pass the result to [method ArrayMesh.add_surface_from_arrays] to create a new surface:\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tvar c = CylinderMesh.new()\n\t\t\t\tvar arr_mesh = ArrayMesh.new()\n\t\t\t\tarr_mesh.add_surface_from_arrays(Mesh.PRIMITIVE_TRIANGLES, c.get_mesh_arrays())\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tvar c = new CylinderMesh();\n\t\t\t\tvar arrMesh = new ArrayMesh();\n\t\t\t\tarrMesh.AddSurfaceFromArrays(Mesh.PrimitiveType.Triangles, c.GetMeshArrays());\n\t\t\t\t\n\t\t\t\t","returnType":"Array"},{"name":"request_update","signature":"request_update() -> void","description":"Request an update of this primitive mesh based on its properties.","returnType":"void"}],"signals":[]},"PrismMesh":{"name":"PrismMesh","description":"Class representing a prism-shaped .","inherits":"PrimitiveMesh","properties":[{"name":"left_to_right","type":"float","description":"Displacement of the upper edge along the X axis. 0.0 positions edge straight above the bottom-left edge."},{"name":"size","type":"Vector3","description":"Size of the prism."},{"name":"subdivide_depth","type":"int","description":"Number of added edge loops along the Z axis."},{"name":"subdivide_height","type":"int","description":"Number of added edge loops along the Y axis."},{"name":"subdivide_width","type":"int","description":"Number of added edge loops along the X axis."}],"methods":[],"signals":[]},"ProceduralSkyMaterial":{"name":"ProceduralSkyMaterial","description":"A material that defines a simple sky for a  resource.","inherits":"Material","properties":[{"name":"energy_multiplier","type":"float","description":"The sky's overall brightness multiplier. Higher values result in a brighter sky."},{"name":"ground_bottom_color","type":"Color","description":"Color of the ground at the bottom. Blends with [member ground_horizon_color]."},{"name":"ground_curve","type":"float","description":"How quickly the [member ground_horizon_color] fades into the [member ground_bottom_color]."},{"name":"ground_energy_multiplier","type":"float","description":"Multiplier for ground color. A higher value will make the ground brighter."},{"name":"ground_horizon_color","type":"Color","description":"Color of the ground at the horizon. Blends with [member ground_bottom_color]."},{"name":"sky_cover","type":"Texture2D","description":"The sky cover texture to use. This texture must use an equirectangular projection (similar to [PanoramaSkyMaterial]). The texture's colors will be [i]added[/i] to the existing sky color, and will be multiplied by [member sky_energy_multiplier] and [member sky_cover_modulate]. This is mainly suited to displaying stars at night, but it can also be used to display clouds at day or night (with a non-physically-accurate look)."},{"name":"sky_cover_modulate","type":"Color","description":"The tint to apply to the [member sky_cover] texture. This can be used to change the sky cover's colors or opacity independently of the sky energy, which is useful for day/night or weather transitions. Only effective if a texture is defined in [member sky_cover]."},{"name":"sky_curve","type":"float","description":"How quickly the [member sky_horizon_color] fades into the [member sky_top_color]."},{"name":"sky_energy_multiplier","type":"float","description":"Multiplier for sky color. A higher value will make the sky brighter."},{"name":"sky_horizon_color","type":"Color","description":"Color of the sky at the horizon. Blends with [member sky_top_color]."},{"name":"sky_top_color","type":"Color","description":"Color of the sky at the top. Blends with [member sky_horizon_color]."},{"name":"sun_angle_max","type":"float","description":"Distance from center of sun where it fades out completely."},{"name":"sun_curve","type":"float","description":"How quickly the sun fades away between the edge of the sun disk and [member sun_angle_max]."},{"name":"use_debanding","type":"bool","description":"If [code]true[/code], enables debanding. Debanding adds a small amount of noise which helps reduce banding that appears from the smooth changes in color in the sky."}],"methods":[],"signals":[]},"ProgressBar":{"name":"ProgressBar","description":"A control used for visual representation of a percentage.","inherits":"Range","properties":[{"name":"editor_preview_indeterminate","type":"bool","description":"If [code]false[/code], the [member indeterminate] animation will be paused in the editor."},{"name":"fill_mode","type":"int","description":"The fill direction. See [enum FillMode] for possible values."},{"name":"indeterminate","type":"bool","description":"When set to [code]true[/code], the progress bar indicates that something is happening with an animation, but does not show the fill percentage or value."},{"name":"show_percentage","type":"bool","description":"If [code]true[/code], the fill percentage is displayed on the bar."}],"methods":[],"signals":[]},"ProjectSettings":{"name":"ProjectSettings","description":"Stores globally-accessible variables.","inherits":"Object","properties":[{"name":"animation/warnings/check_angle_interpolation_type_conflicting","type":"bool","description":"If [code]true[/code], [AnimationMixer] prints the warning of interpolation being forced to choose the shortest rotation path due to multiple angle interpolation types being mixed in the [AnimationMixer] cache."},{"name":"animation/warnings/check_invalid_track_paths","type":"bool","description":"If [code]true[/code], [AnimationMixer] prints the warning of no matching object of the track path in the scene."},{"name":"application/boot_splash/bg_color","type":"Color","description":"Background color for the boot splash."},{"name":"application/boot_splash/fullsize","type":"bool","description":"If [code]true[/code], scale the boot splash image to the full window size (preserving the aspect ratio) when the engine starts. If [code]false[/code], the engine will leave it at the default pixel size."},{"name":"application/boot_splash/image","type":"String","description":"Path to an image used as the boot splash. If left empty, the default Godot Engine splash will be displayed instead.\n\t\t\t[b]Note:[/b] Only effective if [member application/boot_splash/show_image] is [code]true[/code].\n\t\t\t[b]Note:[/b] The only supported format is PNG. Using another image format will result in an error.\n\t\t\t[b]Note:[/b] The image will also show when opening the project in the editor. If you want to display the default splash image in the editor, add an empty override for [code]editor_hint[/code] feature."},{"name":"application/boot_splash/minimum_display_time","type":"int","description":"Minimum boot splash display time (in milliseconds). It is not recommended to set too high values for this setting."},{"name":"application/boot_splash/show_image","type":"bool","description":"If [code]true[/code], displays the image specified in [member application/boot_splash/image] when the engine starts. If [code]false[/code], only displays the plain color specified in [member application/boot_splash/bg_color]."},{"name":"application/boot_splash/use_filter","type":"bool","description":"If [code]true[/code], applies linear filtering when scaling the image (recommended for high-resolution artwork). If [code]false[/code], uses nearest-neighbor interpolation (recommended for pixel art)."},{"name":"application/config/auto_accept_quit","type":"bool","description":"If [code]true[/code], the application automatically accepts quitting requests."},{"name":"application/config/custom_user_dir_name","type":"String","description":"This user directory is used for storing persistent data ([code]user://[/code] filesystem). If a custom directory name is defined, this name will be appended to the system-specific user data directory (same parent folder as the Godot configuration folder documented in [method OS.get_user_data_dir]).\n\t\t\tThe [member application/config/use_custom_user_dir] setting must be enabled for this to take effect.\n\t\t\t[b]Note:[/b] If [member application/config/custom_user_dir_name] contains trailing periods, they will be stripped as folder names ending with a period are not allowed on Windows."},{"name":"application/config/description","type":"String","description":"The project's description, displayed as a tooltip in the Project Manager when hovering the project."},{"name":"application/config/icon","type":"String","description":"Icon used for the project, set when project loads. Exporters will also use this icon as a fallback if necessary."},{"name":"application/config/macos_native_icon","type":"String","description":"Icon set in [code].icns[/code] format used on macOS to set the game's icon. This is done automatically on start by calling [method DisplayServer.set_native_icon]."},{"name":"application/config/name","type":"String","description":"The project's name. It is used both by the Project Manager and by exporters. The project name can be translated by translating its value in localization files. The window title will be set to match the project name automatically on startup.\n\t\t\t[b]Note:[/b] Changing this value will also change the user data folder's path if [member application/config/use_custom_user_dir] is [code]false[/code]. After renaming the project, you will no longer be able to access existing data in [code]user://[/code] unless you rename the old folder to match the new project name. See [url=$DOCS_URL/tutorials/io/data_paths.html]Data paths[/url] in the documentation for more information."},{"name":"application/config/name_localized","type":"Dictionary","description":"Translations of the project's name. This setting is used by OS tools to translate application name on Android, iOS and macOS."},{"name":"application/config/project_settings_override","type":"String","description":"Specifies a file to override project settings. For example: [code]user://custom_settings.cfg[/code]. See \"Overriding\" in the [ProjectSettings] class description at the top for more information.\n\t\t\t[b]Note:[/b] Regardless of this setting's value, [code]res://override.cfg[/code] will still be read to override the project settings."},{"name":"application/config/quit_on_go_back","type":"bool","description":"If [code]true[/code], the application quits automatically when navigating back (e.g. using the system \"Back\" button on Android)."},{"name":"application/config/use_custom_user_dir","type":"bool","description":"If [code]true[/code], the project will save user data to its own user directory. If [member application/config/custom_user_dir_name] is empty, [code]&lt;OS user data directory&gt;/&lt;project name&gt;[/code] directory will be used. If [code]false[/code], the project will save user data to [code]&lt;OS user data directory&gt;/Godot/app_userdata/&lt;project name&gt;[/code].\n\t\t\tSee also [url=$DOCS_URL/tutorials/io/data_paths.html#accessing-persistent-user-data-user]File paths in Godot projects[/url]. This setting is only effective on desktop platforms."},{"name":"application/config/use_hidden_project_data_directory","type":"bool","description":"If [code]true[/code], the project will use a hidden directory ([code].godot[/code]) for storing project-specific data (metadata, shader cache, etc.).\n\t\t\tIf [code]false[/code], a non-hidden directory ([code]godot[/code]) will be used instead.\n\t\t\t[b]Note:[/b] Restart the application after changing this setting.\n\t\t\t[b]Note:[/b] Changing this value can help on platforms or with third-party tools where hidden directory patterns are disallowed. Only modify this setting if you know that your environment requires it, as changing the default can impact compatibility with some external tools or plugins which expect the default [code].godot[/code] folder."},{"name":"application/config/version","type":"String","description":"The project's human-readable version identifier. This is used by exporters if the version identifier isn't overridden there. If [member application/config/version] is an empty string and the version identifier isn't overridden in an exporter, the exporter will use [code]1.0.0[/code] as a version identifier."},{"name":"application/config/windows_native_icon","type":"String","description":"Icon set in [code].ico[/code] format used on Windows to set the game's icon. This is done automatically on start by calling [method DisplayServer.set_native_icon]."},{"name":"application/run/delta_smoothing","type":"bool","description":"Time samples for frame deltas are subject to random variation introduced by the platform, even when frames are displayed at regular intervals thanks to V-Sync. This can lead to jitter. Delta smoothing can often give a better result by filtering the input deltas to correct for minor fluctuations from the refresh rate.\n\t\t\t[b]Note:[/b] Delta smoothing is only attempted when [member display/window/vsync/vsync_mode] is set to [code]enabled[/code], as it does not work well without V-Sync.\n\t\t\tIt may take several seconds at a stable frame rate before the smoothing is initially activated. It will only be active on machines where performance is adequate to render frames at the refresh rate."},{"name":"application/run/disable_stderr","type":"bool","description":"If [code]true[/code], disables printing to standard error. If [code]true[/code], this also hides error and warning messages printed by [method @GlobalScope.push_error] and [method @GlobalScope.push_warning]. See also [member application/run/disable_stdout].\n\t\t\tChanges to this setting will only be applied upon restarting the application. To control this at runtime, use [member Engine.print_error_messages]."},{"name":"application/run/disable_stdout","type":"bool","description":"If [code]true[/code], disables printing to standard output. This is equivalent to starting the editor or project with the [code]--quiet[/code] [url=$DOCS_URL/tutorials/editor/command_line_tutorial.html]command line argument[/url]. See also [member application/run/disable_stderr].\n\t\t\tChanges to this setting will only be applied upon restarting the application. To control this at runtime, use [member Engine.print_to_stdout]."},{"name":"application/run/enable_alt_space_menu","type":"bool","description":"If [code]true[/code], allows the [kbd]Alt + Space[/kbd] keys to display the window menu. This menu allows the user to perform various window management operations such as moving, resizing, or minimizing the window.\n\t\t\t[b]Note:[/b] When the menu is displayed, project execution will pause until the menu is [i]fully[/i] closed due to Windows behavior. Consider this when enabling this setting in a networked multiplayer game. The menu is only considered fully closed when an option is selected, when the user clicks outside, or when [kbd]Escape[/kbd] is pressed after bringing up the window menu [i]and[/i] another key is pressed afterwards.\n\t\t\t[b]Note:[/b] This setting is implemented only on Windows."},{"name":"application/run/flush_stdout_on_print","type":"bool","description":"If [code]true[/code], flushes the standard output stream every time a line is printed. This affects both terminal logging and file logging.\n\t\t\tWhen running a project, this setting must be enabled if you want logs to be collected by service managers such as systemd/journalctl. This setting is disabled by default on release builds, since flushing on every printed line will negatively affect performance if lots of lines are printed in a rapid succession. Also, if this setting is enabled, logged files will still be written successfully if the application crashes or is otherwise killed by the user (without being closed \"normally\").\n\t\t\t[b]Note:[/b] Regardless of this setting, the standard error stream ([code]stderr[/code]) is always flushed when a line is printed to it.\n\t\t\tChanges to this setting will only be applied upon restarting the application."},{"name":"application/run/flush_stdout_on_print.debug","type":"bool","description":"Debug build override for [member application/run/flush_stdout_on_print], as performance is less important during debugging.\n\t\t\tChanges to this setting will only be applied upon restarting the application."},{"name":"application/run/frame_delay_msec","type":"int","description":"Forces a [i]constant[/i] delay between frames in the main loop (in milliseconds). In most situations, [member application/run/max_fps] should be preferred as an FPS limiter as it's more precise.\n\t\t\tThis setting can be overridden using the [code]--frame-delay &lt;ms;&gt;[/code] command line argument."},{"name":"application/run/low_processor_mode","type":"bool","description":"If [code]true[/code], enables low-processor usage mode. When enabled, the engine takes longer to redraw, but only redraws the screen if necessary. This may lower power consumption, and is intended for editors or mobile applications. For most games, because the screen needs to be redrawn every frame, it is recommended to keep this setting disabled."},{"name":"application/run/low_processor_mode_sleep_usec","type":"int","description":"Amount of sleeping between frames when the low-processor usage mode is enabled (in microseconds). Higher values will result in lower CPU usage."},{"name":"application/run/main_loop_type","type":"String","description":"The name of the type implementing the engine's main loop."},{"name":"application/run/main_scene","type":"String","description":"Path to the main scene file that will be loaded when the project runs."},{"name":"application/run/max_fps","type":"int","description":"Maximum number of frames per second allowed. A value of [code]0[/code] means \"no limit\". The actual number of frames per second may still be below this value if the CPU or GPU cannot keep up with the project logic and rendering.\n\t\t\tLimiting the FPS can be useful to reduce system power consumption, which reduces heat and noise emissions (and improves battery life on mobile devices).\n\t\t\tIf [member display/window/vsync/vsync_mode] is set to [code]Enabled[/code] or [code]Adaptive[/code], it takes precedence and the forced FPS number cannot exceed the monitor's refresh rate.\n\t\t\tIf [member display/window/vsync/vsync_mode] is [code]Enabled[/code], on monitors with variable refresh rate enabled (G-Sync/FreeSync), using an FPS limit a few frames lower than the monitor's refresh rate will [url=https://blurbusters.com/howto-low-lag-vsync-on/]reduce input lag while avoiding tearing[/url].\n\t\t\tIf [member display/window/vsync/vsync_mode] is [code]Disabled[/code], limiting the FPS to a high value that can be consistently reached on the system can reduce input lag compared to an uncapped framerate. Since this works by ensuring the GPU load is lower than 100%, this latency reduction is only effective in GPU-bottlenecked scenarios, not CPU-bottlenecked scenarios.\n\t\t\tSee also [member physics/common/physics_ticks_per_second].\n\t\t\tThis setting can be overridden using the [code]--max-fps &lt;fps&gt;[/code] command line argument (including with a value of [code]0[/code] for unlimited framerate).\n\t\t\t[b]Note:[/b] This property is only read when the project starts. To change the rendering FPS cap at runtime, set [member Engine.max_fps] instead."},{"name":"application/run/print_header","type":"bool","description":"If [code]true[/code], the engine header is printed in the console on startup. This header describes the current version of the engine, as well as the renderer being used. This behavior can also be disabled on the command line with the [code]--no-header[/code] option."},{"name":"audio/buses/channel_disable_threshold_db","type":"float","description":"Audio buses will disable automatically when sound goes below a given dB threshold for a given time. This saves CPU as effects assigned to that bus will no longer do any processing."},{"name":"audio/buses/channel_disable_time","type":"float","description":"Audio buses will disable automatically when sound goes below a given dB threshold for a given time. This saves CPU as effects assigned to that bus will no longer do any processing."},{"name":"audio/buses/default_bus_layout","type":"String","description":"Default [AudioBusLayout] resource file to use in the project, unless overridden by the scene."},{"name":"audio/driver/driver","type":"String","description":"Specifies the audio driver to use. This setting is platform-dependent as each platform supports different audio drivers. If left empty, the default audio driver will be used.\n\t\t\tThe [code]Dummy[/code] audio driver disables all audio playback and recording, which is useful for non-game applications as it reduces CPU usage. It also prevents the engine from appearing as an application playing audio in the OS' audio mixer.\n\t\t\tTo query the value that is being used at run-time (which may be overridden by command-line arguments or headless mode), use [method AudioServer.get_driver_name].\n\t\t\t[b]Note:[/b] The driver in use can be overridden at runtime via the [code]--audio-driver[/code] [url=$DOCS_URL/tutorials/editor/command_line_tutorial.html]command line argument[/url]."},{"name":"audio/driver/enable_input","type":"bool","description":"If [code]true[/code], microphone input will be allowed. This requires appropriate permissions to be set when exporting to Android or iOS.\n\t\t\t[b]Note:[/b] If the operating system blocks access to audio input devices (due to the user's privacy settings), audio capture will only return silence. On Windows 10 and later, make sure that apps are allowed to access the microphone in the OS' privacy settings."},{"name":"audio/driver/mix_rate","type":"int","description":"Target mixing rate used for audio (in Hz). In general, it's better to not touch this and leave it to the host operating system.\n\t\t\t[b]Note:[/b] On iOS and macOS, mixing rate is determined by audio driver, this value is ignored.\n\t\t\t[b]Note:[/b] Input and output mixing rates might be different. Use [method AudioServer.get_mix_rate] and [method AudioServer.get_input_mix_rate] to get actual values."},{"name":"audio/driver/mix_rate.web","type":"int","description":"Safer override for [member audio/driver/mix_rate] in the Web platform. Here [code]0[/code] means \"let the browser choose\" (since some browsers do not like forcing the mix rate)."},{"name":"audio/driver/output_latency","type":"int","description":"Specifies the preferred output latency in milliseconds for audio. Lower values will result in lower audio latency at the cost of increased CPU usage. Low values may result in audible crackling on slower hardware.\n\t\t\tAudio output latency may be constrained by the host operating system and audio hardware drivers. If the host can not provide the specified audio output latency then Godot will attempt to use the nearest latency allowed by the host. As such you should always use [method AudioServer.get_output_latency] to determine the actual audio output latency.\n\t\t\tAudio output latency can be overridden using the [code]--audio-output-latency &lt;ms&gt;[/code] command line argument.\n\t\t\t[b]Note:[/b] This setting is ignored on Android, and on all versions of Windows prior to Windows 10."},{"name":"audio/driver/output_latency.web","type":"int","description":"Safer override for [member audio/driver/output_latency] in the Web platform, to avoid audio issues especially on mobile devices."},{"name":"audio/general/2d_panning_strength","type":"float","description":"The base strength of the panning effect for all [AudioStreamPlayer2D] nodes. The panning strength can be further scaled on each Node using [member AudioStreamPlayer2D.panning_strength]. A value of [code]0.0[/code] disables stereo panning entirely, leaving only volume attenuation in place. A value of [code]1.0[/code] completely mutes one of the channels if the sound is located exactly to the left (or right) of the listener.\n\t\t\tThe default value of [code]0.5[/code] is tuned for headphones. When using speakers, you may find lower values to sound better as speakers have a lower stereo separation compared to headphones."},{"name":"audio/general/3d_panning_strength","type":"float","description":"The base strength of the panning effect for all [AudioStreamPlayer3D] nodes. The panning strength can be further scaled on each Node using [member AudioStreamPlayer3D.panning_strength]. A value of [code]0.0[/code] disables stereo panning entirely, leaving only volume attenuation in place. A value of [code]1.0[/code] completely mutes one of the channels if the sound is located exactly to the left (or right) of the listener.\n\t\t\tThe default value of [code]0.5[/code] is tuned for headphones. When using speakers, you may find lower values to sound better as speakers have a lower stereo separation compared to headphones."},{"name":"audio/general/default_playback_type","type":"int","description":"Specifies the default playback type of the platform.\n\t\t\tThe default value is set to [b]Stream[/b], as most platforms have no issues mixing streams."},{"name":"audio/general/default_playback_type.web","type":"int","description":"Specifies the default playback type of the Web platform.\n\t\t\tThe default value is set to [b]Sample[/b] as the Web platform is not suited to mix audio streams outside of the Web Audio API, especially when exporting a single-threaded game. [b]Sample[/b] allows for lower latency on the web platform at the cost of flexibility ([AudioEffect]s are not supported).\n\t\t\t[b]Warning:[/b] Forcing [b]Stream[/b] on the Web platform may cause high audio latency and crackling, especially when exporting a multi-threaded game."},{"name":"audio/general/ios/mix_with_others","type":"bool","description":"Sets the [url=https://developer.apple.com/documentation/avfaudio/avaudiosession/categoryoptions/1616611-mixwithothers]mixWithOthers[/url] option for the AVAudioSession on iOS. This will override the mix behavior, if the category is set to [code]Play and Record[/code], [code]Playback[/code], or [code]Multi Route[/code].\n\t\t\t[code]Ambient[/code] always has this set per default."},{"name":"audio/general/ios/session_category","type":"int","description":"Sets the [url=https://developer.apple.com/documentation/avfaudio/avaudiosessioncategory]AVAudioSessionCategory[/url] on iOS. Use the [code]Playback[/code] category to get sound output, even if the phone is in silent mode."},{"name":"audio/general/text_to_speech","type":"bool","description":"If [code]true[/code], text-to-speech support is enabled, see [method DisplayServer.tts_get_voices] and [method DisplayServer.tts_speak].\n\t\t\t[b]Note:[/b] Enabling TTS can cause addition idle CPU usage and interfere with the sleep mode, so consider disabling it if TTS is not used."},{"name":"audio/video/video_delay_compensation_ms","type":"int","description":"Setting to hardcode audio delay when playing video. Best to leave this unchanged unless you know what you are doing."},{"name":"collada/use_ambient","type":"bool","description":"If [code]true[/code], ambient lights will be imported from COLLADA models as [DirectionalLight3D]. If [code]false[/code], ambient lights will be ignored."},{"name":"compression/formats/gzip/compression_level","type":"int","description":"The default compression level for gzip. Affects compressed scenes and resources. Higher levels result in smaller files at the cost of compression speed. Decompression speed is mostly unaffected by the compression level. [code]-1[/code] uses the default gzip compression level, which is identical to [code]6[/code] but could change in the future due to underlying zlib updates."},{"name":"compression/formats/zlib/compression_level","type":"int","description":"The default compression level for Zlib. Affects compressed scenes and resources. Higher levels result in smaller files at the cost of compression speed. Decompression speed is mostly unaffected by the compression level. [code]-1[/code] uses the default gzip compression level, which is identical to [code]6[/code] but could change in the future due to underlying zlib updates."},{"name":"compression/formats/zstd/compression_level","type":"int","description":"The default compression level for Zstandard. Affects compressed scenes and resources. Higher levels result in smaller files at the cost of compression speed. Decompression speed is mostly unaffected by the compression level."},{"name":"compression/formats/zstd/long_distance_matching","type":"bool","description":"Enables [url=https://github.com/facebook/zstd/releases/tag/v1.3.2]long-distance matching[/url] in Zstandard."},{"name":"compression/formats/zstd/window_log_size","type":"int","description":"Largest size limit (in power of 2) allowed when compressing using long-distance matching with Zstandard. Higher values can result in better compression, but will require more memory when compressing and decompressing."},{"name":"debug/canvas_items/debug_redraw_color","type":"Color","description":"If canvas item redraw debugging is active, this color will be flashed on canvas items when they redraw."},{"name":"debug/canvas_items/debug_redraw_time","type":"float","description":"If canvas item redraw debugging is active, this will be the time the flash will last each time they redraw."},{"name":"debug/file_logging/enable_file_logging","type":"bool","description":"If [code]true[/code], logs all output and error messages to files. See also [member debug/file_logging/log_path], [member debug/file_logging/max_log_files], and [member application/run/flush_stdout_on_print]."},{"name":"debug/file_logging/enable_file_logging.pc","type":"bool","description":"Desktop override for [member debug/file_logging/enable_file_logging], as log files are not readily accessible on mobile/Web platforms."},{"name":"debug/file_logging/log_path","type":"String","description":"Path at which to store log files for the project. Using a path under [code]user://[/code] is recommended.\n\t\t\tThis can be specified manually on the command line using the [code]--log-file &lt;file&gt;[/code] [url=$DOCS_URL/tutorials/editor/command_line_tutorial.html]command line argument[/url]. If this command line argument is specified, log rotation is automatically disabled (see [member debug/file_logging/max_log_files])."},{"name":"debug/file_logging/max_log_files","type":"int","description":"Specifies the maximum number of log files allowed (used for rotation). Set to [code]1[/code] to disable log file rotation.\n\t\t\tIf the [code]--log-file &lt;file&gt;[/code] [url=$DOCS_URL/tutorials/editor/command_line_tutorial.html]command line argument[/url] is used, log rotation is always disabled."},{"name":"debug/gdscript/warnings/assert_always_false","type":"int","description":"When set to [code]warn[/code] or [code]error[/code], produces a warning or an error respectively when an [code]assert[/code] call always evaluates to [code]false[/code]."},{"name":"debug/gdscript/warnings/assert_always_true","type":"int","description":"When set to [code]warn[/code] or [code]error[/code], produces a warning or an error respectively when an [code]assert[/code] call always evaluates to [code]true[/code]."},{"name":"debug/gdscript/warnings/confusable_capture_reassignment","type":"int","description":"When set to [code]warn[/code] or [code]error[/code], produces a warning or an error respectively when a local variable captured by a lambda is reassigned, since this does not modify the outer local variable."},{"name":"debug/gdscript/warnings/confusable_identifier","type":"int","description":"When set to [code]warn[/code] or [code]error[/code], produces a warning or an error respectively when an identifier contains characters that can be confused with something else, like when mixing different alphabets."},{"name":"debug/gdscript/warnings/confusable_local_declaration","type":"int","description":"When set to [code]warn[/code] or [code]error[/code], produces a warning or an error respectively when an identifier declared in the nested block has the same name as an identifier declared below in the parent block."},{"name":"debug/gdscript/warnings/confusable_local_usage","type":"int","description":"When set to [code]warn[/code] or [code]error[/code], produces a warning or an error respectively when an identifier that will be shadowed below in the block is used."},{"name":"debug/gdscript/warnings/constant_used_as_function","type":"int","description":"When set to [code]warn[/code] or [code]error[/code], produces a warning or an error respectively when a constant is used as a function."},{"name":"debug/gdscript/warnings/deprecated_keyword","type":"int","description":"When set to [code]warn[/code] or [code]error[/code], produces a warning or an error respectively when deprecated keywords are used.\n\t\t\t[b]Note:[/b] There are currently no deprecated keywords, so this warning is never produced."},{"name":"debug/gdscript/warnings/empty_file","type":"int","description":"When set to [code]warn[/code] or [code]error[/code], produces a warning or an error respectively when an empty file is parsed."},{"name":"debug/gdscript/warnings/enable","type":"bool","description":"If [code]true[/code], enables specific GDScript warnings (see [code]debug/gdscript/warnings/*[/code] settings). If [code]false[/code], disables all GDScript warnings."},{"name":"debug/gdscript/warnings/enum_variable_without_default","type":"int","description":"When set to [code]warn[/code] or [code]error[/code], produces a warning or an error respectively when a variable has an enum type but no explicit default value, but only if the enum does not contain [code]0[/code] as a valid value."},{"name":"debug/gdscript/warnings/exclude_addons","type":"bool","description":"If [code]true[/code], scripts in the [code]res://addons[/code] folder will not generate warnings."},{"name":"debug/gdscript/warnings/function_used_as_property","type":"int","description":"When set to [code]warn[/code] or [code]error[/code], produces a warning or an error respectively when using a function as if it is a property."},{"name":"debug/gdscript/warnings/get_node_default_without_onready","type":"int","description":"When set to [code]warn[/code] or [code]error[/code], produces a warning or an error respectively when [method Node.get_node] (or the shorthand [code]$[/code]) is used as default value of a class variable without the [code]@onready[/code] annotation."},{"name":"debug/gdscript/warnings/incompatible_ternary","type":"int","description":"When set to [code]warn[/code] or [code]error[/code], produces a warning or an error respectively when a ternary operator may emit values with incompatible types."},{"name":"debug/gdscript/warnings/inference_on_variant","type":"int","description":"When set to [code]warn[/code] or [code]error[/code], produces a warning or an error respectively when a static inferred type uses a [Variant] as initial value, which makes the static type to also be Variant."},{"name":"debug/gdscript/warnings/inferred_declaration","type":"int","description":"When set to [code]warn[/code] or [code]error[/code], produces a warning or an error respectively when a variable, constant, or parameter has an implicitly inferred static type.\n\t\t\t[b]Note:[/b] This warning is recommended [i]in addition[/i] to [member debug/gdscript/warnings/untyped_declaration] if you want to always specify the type explicitly. Having [code]INFERRED_DECLARATION[/code] warning level higher than [code]UNTYPED_DECLARATION[/code] warning level makes little sense and is not recommended."},{"name":"debug/gdscript/warnings/int_as_enum_without_cast","type":"int","description":"When set to [code]warn[/code] or [code]error[/code], produces a warning or an error respectively when trying to use an integer as an enum without an explicit cast."},{"name":"debug/gdscript/warnings/int_as_enum_without_match","type":"int","description":"When set to [code]warn[/code] or [code]error[/code], produces a warning or an error respectively when trying to use an integer as an enum when there is no matching enum member for that numeric value."},{"name":"debug/gdscript/warnings/integer_division","type":"int","description":"When set to [code]warn[/code] or [code]error[/code], produces a warning or an error respectively when dividing an integer by another integer (the decimal part will be discarded)."},{"name":"debug/gdscript/warnings/missing_tool","type":"int","description":"When set to [code]warn[/code] or [code]error[/code], produces a warning or an error respectively when the base class script has the [code]@tool[/code] annotation, but the current class script does not have it."},{"name":"debug/gdscript/warnings/narrowing_conversion","type":"int","description":"When set to [code]warn[/code] or [code]error[/code], produces a warning or an error respectively when passing a floating-point value to a function that expects an integer (it will be converted and lose precision)."},{"name":"debug/gdscript/warnings/native_method_override","type":"int","description":"When set to [code]warn[/code] or [code]error[/code], produces a warning or an error respectively when a method in the script overrides a native method, because it may not behave as expected."},{"name":"debug/gdscript/warnings/onready_with_export","type":"int","description":"When set to [code]warn[/code] or [code]error[/code], produces a warning or an error respectively when the [code]@onready[/code] annotation is used together with the [code]@export[/code] annotation, since it may not behave as expected."},{"name":"debug/gdscript/warnings/property_used_as_function","type":"int","description":"When set to [code]warn[/code] or [code]error[/code], produces a warning or an error respectively when using a property as if it is a function."},{"name":"debug/gdscript/warnings/redundant_await","type":"int","description":"When set to [code]warn[/code] or [code]error[/code], produces a warning or an error respectively when a function that is not a coroutine is called with await."},{"name":"debug/gdscript/warnings/redundant_static_unload","type":"int","description":"When set to [code]warn[/code] or [code]error[/code], produces a warning or an error respectively when the [code]@static_unload[/code] annotation is used in a script without any static variables."},{"name":"debug/gdscript/warnings/renamed_in_godot_4_hint","type":"bool","description":"When enabled, using a property, enum, or function that was renamed since Godot 3 will produce a hint if an error occurs."},{"name":"debug/gdscript/warnings/return_value_discarded","type":"int","description":"When set to [code]warn[/code] or [code]error[/code], produces a warning or an error respectively when calling a function without using its return value (by assigning it to a variable or using it as a function argument). These return values are sometimes used to indicate possible errors using the [enum Error] enum."},{"name":"debug/gdscript/warnings/shadowed_global_identifier","type":"int","description":"When set to [code]warn[/code] or [code]error[/code], produces a warning or an error respectively when defining a local or member variable, signal, or enum that would have the same name as a built-in function or global class name, thus shadowing it."},{"name":"debug/gdscript/warnings/shadowed_variable","type":"int","description":"When set to [code]warn[/code] or [code]error[/code], produces a warning or an error respectively when a local variable or local constant shadows a member declared in the current class."},{"name":"debug/gdscript/warnings/shadowed_variable_base_class","type":"int","description":"When set to [code]warn[/code] or [code]error[/code], produces a warning or an error respectively when a local variable or local constant shadows a member declared in a base class."},{"name":"debug/gdscript/warnings/standalone_expression","type":"int","description":"When set to [code]warn[/code] or [code]error[/code], produces a warning or an error respectively when calling an expression that may have no effect on the surrounding code, such as writing [code]2 + 2[/code] as a statement."},{"name":"debug/gdscript/warnings/standalone_ternary","type":"int","description":"When set to [code]warn[/code] or [code]error[/code], produces a warning or an error respectively when calling a ternary expression that may have no effect on the surrounding code, such as writing [code]42 if active else 0[/code] as a statement."},{"name":"debug/gdscript/warnings/static_called_on_instance","type":"int","description":"When set to [code]warn[/code] or [code]error[/code], produces a warning or an error respectively when calling a static method from an instance of a class instead of from the class directly."},{"name":"debug/gdscript/warnings/unassigned_variable","type":"int","description":"When set to [code]warn[/code] or [code]error[/code], produces a warning or an error respectively when using a variable that wasn't previously assigned."},{"name":"debug/gdscript/warnings/unassigned_variable_op_assign","type":"int","description":"When set to [code]warn[/code] or [code]error[/code], produces a warning or an error respectively when assigning a variable using an assignment operator like [code]+=[/code] if the variable wasn't previously assigned."},{"name":"debug/gdscript/warnings/unreachable_code","type":"int","description":"When set to [code]warn[/code] or [code]error[/code], produces a warning or an error respectively when unreachable code is detected (such as after a [code]return[/code] statement that will always be executed)."},{"name":"debug/gdscript/warnings/unreachable_pattern","type":"int","description":"When set to [code]warn[/code] or [code]error[/code], produces a warning or an error respectively when an unreachable [code]match[/code] pattern is detected."},{"name":"debug/gdscript/warnings/unsafe_call_argument","type":"int","description":"When set to [code]warn[/code] or [code]error[/code], produces a warning or an error respectively when using an expression whose type may not be compatible with the function parameter expected."},{"name":"debug/gdscript/warnings/unsafe_cast","type":"int","description":"When set to [code]warn[/code] or [code]error[/code], produces a warning or an error respectively when a [Variant] value is cast to a non-Variant."},{"name":"debug/gdscript/warnings/unsafe_method_access","type":"int","description":"When set to [code]warn[/code] or [code]error[/code], produces a warning or an error respectively when calling a method whose presence is not guaranteed at compile-time in the class."},{"name":"debug/gdscript/warnings/unsafe_property_access","type":"int","description":"When set to [code]warn[/code] or [code]error[/code], produces a warning or an error respectively when accessing a property whose presence is not guaranteed at compile-time in the class."},{"name":"debug/gdscript/warnings/unsafe_void_return","type":"int","description":"When set to [code]warn[/code] or [code]error[/code], produces a warning or an error respectively when returning a call from a [code]void[/code] function when such call cannot be guaranteed to be also [code]void[/code]."},{"name":"debug/gdscript/warnings/untyped_declaration","type":"int","description":"When set to [code]warn[/code] or [code]error[/code], produces a warning or an error respectively when a variable or parameter has no static type, or if a function has no static return type.\n\t\t\t[b]Note:[/b] This warning is recommended together with [member EditorSettings.text_editor/completion/add_type_hints] to help achieve type safety."},{"name":"debug/gdscript/warnings/unused_local_constant","type":"int","description":"When set to [code]warn[/code] or [code]error[/code], produces a warning or an error respectively when a local constant is never used."},{"name":"debug/gdscript/warnings/unused_parameter","type":"int","description":"When set to [code]warn[/code] or [code]error[/code], produces a warning or an error respectively when a function parameter is never used."},{"name":"debug/gdscript/warnings/unused_private_class_variable","type":"int","description":"When set to [code]warn[/code] or [code]error[/code], produces a warning or an error respectively when a private member variable is never used."},{"name":"debug/gdscript/warnings/unused_signal","type":"int","description":"When set to [code]warn[/code] or [code]error[/code], produces a warning or an error respectively when a signal is declared but never explicitly used in the class."},{"name":"debug/gdscript/warnings/unused_variable","type":"int","description":"When set to [code]warn[/code] or [code]error[/code], produces a warning or an error respectively when a local variable is unused."},{"name":"debug/settings/crash_handler/message","type":"String","description":"Message to be displayed before the backtrace when the engine crashes. By default, this message is only used in exported projects due to the editor-only override applied to this setting."},{"name":"debug/settings/crash_handler/message.editor","type":"String","description":"Editor-only override for [member debug/settings/crash_handler/message]. Does not affect exported projects in debug or release mode."},{"name":"debug/settings/gdscript/max_call_stack","type":"int","description":"Maximum call stack allowed for debugging GDScript."},{"name":"debug/settings/physics_interpolation/enable_warnings","type":"bool","description":"If [code]true[/code], enables warnings which can help pinpoint where nodes are being incorrectly updated, which will result in incorrect interpolation and visual glitches.\n\t\t\tWhen a node is being interpolated, it is essential that the transform is set during [method Node._physics_process] (during a physics tick) rather than [method Node._process] (during a frame)."},{"name":"debug/settings/profiler/max_functions","type":"int","description":"Maximum number of functions per frame allowed when profiling."},{"name":"debug/settings/profiler/max_timestamp_query_elements","type":"int","description":"Maximum number of timestamp query elements allowed per frame for visual profiling."},{"name":"debug/settings/stdout/print_fps","type":"bool","description":"Print frames per second to standard output every second."},{"name":"debug/settings/stdout/print_gpu_profile","type":"bool","description":"Print GPU profile information to standard output every second. This includes how long each frame takes the GPU to render on average, broken down into different steps of the render pipeline, such as CanvasItems, shadows, glow, etc."},{"name":"debug/settings/stdout/verbose_stdout","type":"bool","description":"Print more information to standard output when running. It displays information such as memory leaks, which scenes and resources are being loaded, etc. This can also be enabled using the [code]--verbose[/code] or [code]-v[/code] [url=$DOCS_URL/tutorials/editor/command_line_tutorial.html]command line argument[/url], even on an exported project. See also [method OS.is_stdout_verbose] and [method @GlobalScope.print_verbose]."},{"name":"debug/shader_language/warnings/device_limit_exceeded","type":"bool","description":"When set to [code]true[/code], produces a warning when the shader exceeds certain device limits. Currently, the only device limit checked is the limit on uniform buffer size. More device limits will be added in the future."},{"name":"debug/shader_language/warnings/enable","type":"bool","description":"If [code]true[/code], enables specific shader warnings (see [code]debug/shader_language/warnings/*[/code] settings). If [code]false[/code], disables all shader warnings."},{"name":"debug/shader_language/warnings/float_comparison","type":"bool","description":"When set to [code]true[/code], produces a warning when two floating-point numbers are compared directly with the [code]==[/code] operator or the [code]!=[/code] operator."},{"name":"debug/shader_language/warnings/formatting_error","type":"bool","description":"When set to [code]true[/code], produces a warning upon encountering certain formatting errors. Currently this only checks for empty statements. More formatting errors may be added over time."},{"name":"debug/shader_language/warnings/magic_position_write","type":"bool","description":"When set to [code]true[/code], produces a warning when the shader contains [code]POSITION = vec4(vertex,[/code] as this was very common code written in Godot 4.2 and earlier that was paired with a QuadMesh to produce a full screen post processes pass. With the switch to reversed z in 4.3, this trick no longer works, as it implicitly relied on the [code]VERTEX.z[/code] being 0."},{"name":"debug/shader_language/warnings/treat_warnings_as_errors","type":"bool","description":"When set to [code]true[/code], warnings are treated as errors."},{"name":"debug/shader_language/warnings/unused_constant","type":"bool","description":"When set to [code]true[/code], produces a warning when a constant is never used."},{"name":"debug/shader_language/warnings/unused_function","type":"bool","description":"When set to [code]true[/code], produces a warning when a function is never used."},{"name":"debug/shader_language/warnings/unused_local_variable","type":"bool","description":"When set to [code]true[/code], produces a warning when a local variable is never used."},{"name":"debug/shader_language/warnings/unused_struct","type":"bool","description":"When set to [code]true[/code], produces a warning when a struct is never used."},{"name":"debug/shader_language/warnings/unused_uniform","type":"bool","description":"When set to [code]true[/code], produces a warning when a uniform is never used."},{"name":"debug/shader_language/warnings/unused_varying","type":"bool","description":"When set to [code]true[/code], produces a warning when a varying is never used."},{"name":"debug/shapes/avoidance/agents_radius_color","type":"Color","description":"Color of the avoidance agents radius, visible when \"Visible Avoidance\" is enabled in the Debug menu."},{"name":"debug/shapes/avoidance/enable_agents_radius","type":"bool","description":"If enabled, displays avoidance agents radius when \"Visible Avoidance\" is enabled in the Debug menu."},{"name":"debug/shapes/avoidance/enable_obstacles_radius","type":"bool","description":"If enabled, displays avoidance obstacles radius when \"Visible Avoidance\" is enabled in the Debug menu."},{"name":"debug/shapes/avoidance/enable_obstacles_static","type":"bool","description":"If enabled, displays static avoidance obstacles when \"Visible Avoidance\" is enabled in the Debug menu."},{"name":"debug/shapes/avoidance/obstacles_radius_color","type":"Color","description":"Color of the avoidance obstacles radius, visible when \"Visible Avoidance\" is enabled in the Debug menu."},{"name":"debug/shapes/avoidance/obstacles_static_edge_pushin_color","type":"Color","description":"Color of the static avoidance obstacles edges when their vertices are winded in order to push agents in, visible when \"Visible Avoidance\" is enabled in the Debug menu."},{"name":"debug/shapes/avoidance/obstacles_static_edge_pushout_color","type":"Color","description":"Color of the static avoidance obstacles edges when their vertices are winded in order to push agents out, visible when \"Visible Avoidance\" is enabled in the Debug menu."},{"name":"debug/shapes/avoidance/obstacles_static_face_pushin_color","type":"Color","description":"Color of the static avoidance obstacles faces when their vertices are winded in order to push agents in, visible when \"Visible Avoidance\" is enabled in the Debug menu."},{"name":"debug/shapes/avoidance/obstacles_static_face_pushout_color","type":"Color","description":"Color of the static avoidance obstacles faces when their vertices are winded in order to push agents out, visible when \"Visible Avoidance\" is enabled in the Debug menu."},{"name":"debug/shapes/collision/contact_color","type":"Color","description":"Color of the contact points between collision shapes, visible when \"Visible Collision Shapes\" is enabled in the Debug menu."},{"name":"debug/shapes/collision/draw_2d_outlines","type":"bool","description":"Sets whether 2D physics will display collision outlines in game when \"Visible Collision Shapes\" is enabled in the Debug menu."},{"name":"debug/shapes/collision/max_contacts_displayed","type":"int","description":"Maximum number of contact points between collision shapes to display when \"Visible Collision Shapes\" is enabled in the Debug menu."},{"name":"debug/shapes/collision/shape_color","type":"Color","description":"Color of the collision shapes, visible when \"Visible Collision Shapes\" is enabled in the Debug menu."},{"name":"debug/shapes/navigation/agent_path_color","type":"Color","description":"Color to display enabled navigation agent paths when an agent has debug enabled."},{"name":"debug/shapes/navigation/agent_path_point_size","type":"float","description":"Rasterized size (pixel) used to render navigation agent path points when an agent has debug enabled."},{"name":"debug/shapes/navigation/edge_connection_color","type":"Color","description":"Color to display edge connections between navigation regions, visible when \"Visible Navigation\" is enabled in the Debug menu."},{"name":"debug/shapes/navigation/enable_agent_paths","type":"bool","description":"If enabled, displays navigation agent paths when an agent has debug enabled."},{"name":"debug/shapes/navigation/enable_agent_paths_xray","type":"bool","description":"If enabled, displays navigation agent paths through geometry when an agent has debug enabled."},{"name":"debug/shapes/navigation/enable_edge_connections","type":"bool","description":"If enabled, displays edge connections between navigation regions when \"Visible Navigation\" is enabled in the Debug menu."},{"name":"debug/shapes/navigation/enable_edge_connections_xray","type":"bool","description":"If enabled, displays edge connections between navigation regions through geometry when \"Visible Navigation\" is enabled in the Debug menu."},{"name":"debug/shapes/navigation/enable_edge_lines","type":"bool","description":"If enabled, displays navigation mesh polygon edges when \"Visible Navigation\" is enabled in the Debug menu."},{"name":"debug/shapes/navigation/enable_edge_lines_xray","type":"bool","description":"If enabled, displays navigation mesh polygon edges through geometry when \"Visible Navigation\" is enabled in the Debug menu."},{"name":"debug/shapes/navigation/enable_geometry_face_random_color","type":"bool","description":"If enabled, colorizes each navigation mesh polygon face with a random color when \"Visible Navigation\" is enabled in the Debug menu."},{"name":"debug/shapes/navigation/enable_link_connections","type":"bool","description":"If enabled, displays navigation link connections when \"Visible Navigation\" is enabled in the Debug menu."},{"name":"debug/shapes/navigation/enable_link_connections_xray","type":"bool","description":"If enabled, displays navigation link connections through geometry when \"Visible Navigation\" is enabled in the Debug menu."},{"name":"debug/shapes/navigation/geometry_edge_color","type":"Color","description":"Color to display enabled navigation mesh polygon edges, visible when \"Visible Navigation\" is enabled in the Debug menu."},{"name":"debug/shapes/navigation/geometry_edge_disabled_color","type":"Color","description":"Color to display disabled navigation mesh polygon edges, visible when \"Visible Navigation\" is enabled in the Debug menu."},{"name":"debug/shapes/navigation/geometry_face_color","type":"Color","description":"Color to display enabled navigation mesh polygon faces, visible when \"Visible Navigation\" is enabled in the Debug menu."},{"name":"debug/shapes/navigation/geometry_face_disabled_color","type":"Color","description":"Color to display disabled navigation mesh polygon faces, visible when \"Visible Navigation\" is enabled in the Debug menu."},{"name":"debug/shapes/navigation/link_connection_color","type":"Color","description":"Color to use to display navigation link connections, visible when \"Visible Navigation\" is enabled in the Debug menu."},{"name":"debug/shapes/navigation/link_connection_disabled_color","type":"Color","description":"Color to use to display disabled navigation link connections, visible when \"Visible Navigation\" is enabled in the Debug menu."},{"name":"debug/shapes/paths/geometry_color","type":"Color","description":"Color of the curve path geometry, visible when \"Visible Paths\" is enabled in the Debug menu."},{"name":"debug/shapes/paths/geometry_width","type":"float","description":"Line width of the curve path geometry, visible when \"Visible Paths\" is enabled in the Debug menu."},{"name":"display/display_server/driver","type":"String","description":"Sets the driver to be used by the display server. This property can not be edited directly, instead, set the driver using the platform-specific overrides."},{"name":"display/display_server/driver.android","type":"String","description":"Android override for [member display/display_server/driver]."},{"name":"display/display_server/driver.ios","type":"String","description":"iOS override for [member display/display_server/driver]."},{"name":"display/display_server/driver.linuxbsd","type":"String","description":"LinuxBSD override for [member display/display_server/driver]."},{"name":"display/display_server/driver.macos","type":"String","description":"MacOS override for [member display/display_server/driver]."},{"name":"display/display_server/driver.windows","type":"String","description":"Windows override for [member display/display_server/driver]."},{"name":"display/mouse_cursor/custom_image","type":"String","description":"Custom image for the mouse cursor (limited to 256×256)."},{"name":"display/mouse_cursor/custom_image_hotspot","type":"Vector2","description":"Hotspot for the custom mouse cursor image."},{"name":"display/mouse_cursor/tooltip_position_offset","type":"Vector2","description":"Position offset for tooltips, relative to the mouse cursor's hotspot."},{"name":"display/window/dpi/allow_hidpi","type":"bool","description":"If [code]true[/code], allows HiDPI display on Windows, macOS, Android, iOS and Web. If [code]false[/code], the platform's low-DPI fallback will be used on HiDPI displays, which causes the window to be displayed in a blurry or pixelated manner (and can cause various window management bugs). Therefore, it is recommended to make your project scale to [url=$DOCS_URL/tutorials/rendering/multiple_resolutions.html]multiple resolutions[/url] instead of disabling this setting.\n\t\t\t[b]Note:[/b] This setting has no effect on Linux as DPI-awareness fallbacks are not supported there."},{"name":"display/window/energy_saving/keep_screen_on","type":"bool","description":"If [code]true[/code], keeps the screen on (even in case of inactivity), so the screensaver does not take over. Works on desktop and mobile platforms."},{"name":"display/window/frame_pacing/android/enable_frame_pacing","type":"bool","description":"Enable Swappy for stable frame pacing on Android. Highly recommended.\n\t\t\t[b]Note:[/b] This option will be forced off when using OpenXR."},{"name":"display/window/frame_pacing/android/swappy_mode","type":"int","description":"Swappy mode to use. The options are:\n\t\t\t- pipeline_forced_on: Try to honor [member Engine.max_fps]. Pipelining is always on. This is the same behavior as Desktop PC.\n\t\t\t- auto_fps_pipeline_forced_on: Autocalculate max fps. Actual max_fps will be between 0 and [member Engine.max_fps]. While this sounds convenient, beware that Swappy will often downgrade max fps until it finds something that can be met and sustained. That means if your game runs between 40fps and 60fps on a 60hz screen, after some time Swappy will downgrade max fps so that the game renders at perfect 30fps.\n\t\t\t- auto_fps_auto_pipeline: Same as auto_fps_pipeline_forced_on, but if Swappy detects that rendering is very fast (e.g. it takes &lt; 8ms to render on a 60hz screen) Swappy will disable pipelining to minimize input latency. This is the default.\n\t\t\t[b]Note:[/b] If [member Engine.max_fps] is 0, actual max_fps will considered as to be the screen's refresh rate (often 60hz, 90hz or 120hz depending on device model and OS settings)."},{"name":"display/window/handheld/orientation","type":"int","description":"The default screen orientation to use on mobile devices. See [enum DisplayServer.ScreenOrientation] for possible values.\n\t\t\t[b]Note:[/b] When set to a portrait orientation, this project setting does not flip the project resolution's width and height automatically. Instead, you have to set [member display/window/size/viewport_width] and [member display/window/size/viewport_height] accordingly."},{"name":"display/window/ios/allow_high_refresh_rate","type":"bool","description":"If [code]true[/code], iOS devices that support high refresh rate/\"ProMotion\" will be allowed to render at up to 120 frames per second."},{"name":"display/window/ios/hide_home_indicator","type":"bool","description":"If [code]true[/code], the home indicator is hidden automatically. This only affects iOS devices without a physical home button."},{"name":"display/window/ios/hide_status_bar","type":"bool","description":"If [code]true[/code], the status bar is hidden while the app is running."},{"name":"display/window/ios/suppress_ui_gesture","type":"bool","description":"If [code]true[/code], it will require two swipes to access iOS UI that uses gestures.\n\t\t\t[b]Note:[/b] This setting has no effect on the home indicator if [code]hide_home_indicator[/code] is [code]true[/code]."},{"name":"display/window/per_pixel_transparency/allowed","type":"bool","description":"If [code]true[/code], allows per-pixel transparency for the window background. This affects performance, so leave it on [code]false[/code] unless you need it. See also [member display/window/size/transparent] and [member rendering/viewport/transparent_background]."},{"name":"display/window/size/always_on_top","type":"bool","description":"Forces the main window to be always on top.\n\t\t\t[b]Note:[/b] This setting is ignored on iOS, Android, and Web."},{"name":"display/window/size/borderless","type":"bool","description":"Forces the main window to be borderless.\n\t\t\t[b]Note:[/b] This setting is ignored on iOS, Android, and Web."},{"name":"display/window/size/extend_to_title","type":"bool","description":"Main window content is expanded to the full size of the window. Unlike a borderless window, the frame is left intact and can be used to resize the window, and the title bar is transparent, but has minimize/maximize/close buttons.\n\t\t\t[b]Note:[/b] This setting is implemented only on macOS."},{"name":"display/window/size/initial_position","type":"Vector2i","description":"Main window initial position (in virtual desktop coordinates), this setting is used only if [member display/window/size/initial_position_type] is set to \"Absolute\" ([code]0[/code]).\n\t\t\t[b]Note:[/b] This setting only affects the exported project, or when the project is run from the command line. In the editor, the value of [member EditorSettings.run/window_placement/rect_custom_position] is used instead."},{"name":"display/window/size/initial_position_type","type":"int","description":"Main window initial position.\n\t\t\t[code]0[/code] - \"Absolute\", [member display/window/size/initial_position] is used to set window position.\n\t\t\t[code]1[/code] - \"Primary Screen Center\".\n\t\t\t[code]2[/code] - \"Other Screen Center\", [member display/window/size/initial_screen] is used to set the screen.\n\t\t\t[b]Note:[/b] This setting only affects the exported project, or when the project is run from the command line. In the editor, the value of [member EditorSettings.run/window_placement/rect] is used instead."},{"name":"display/window/size/initial_screen","type":"int","description":"Main window initial screen, this setting is used only if [member display/window/size/initial_position_type] is set to \"Other Screen Center\" ([code]2[/code]).\n\t\t\t[b]Note:[/b] This setting only affects the exported project, or when the project is run from the command line. In the editor, the value of [member EditorSettings.run/window_placement/screen] is used instead."},{"name":"display/window/size/mode","type":"int","description":"Main window mode. See [enum DisplayServer.WindowMode] for possible values and how each mode behaves.\n\t\t\t[b]Note:[/b] Game embedding is available only in the \"Windowed\" mode."},{"name":"display/window/size/no_focus","type":"bool","description":"Main window can't be focused. No-focus window will ignore all input, except mouse clicks."},{"name":"display/window/size/resizable","type":"bool","description":"If [code]true[/code], allows the window to be resizable by default.\n\t\t\t[b]Note:[/b] This property is only read when the project starts. To change whether the window is resizable at runtime, set [member Window.unresizable] instead on the root Window, which can be retrieved using [code]get_viewport().get_window()[/code]. [member Window.unresizable] takes the opposite value of this setting.\n\t\t\t[b]Note:[/b] Certain window managers can be configured to ignore the non-resizable status of a window. Do not rely on this setting as a guarantee that the window will [i]never[/i] be resizable.\n\t\t\t[b]Note:[/b] This setting is ignored on iOS."},{"name":"display/window/size/sharp_corners","type":"bool","description":"If [code]true[/code], the main window uses sharp corners by default.\n\t\t\t[b]Note:[/b] This property is implemented only on Windows (11)."},{"name":"display/window/size/transparent","type":"bool","description":"If [code]true[/code], enables a window manager hint that the main window background [i]can[/i] be transparent. This does not make the background actually transparent. For the background to be transparent, the root viewport must also be made transparent by enabling [member rendering/viewport/transparent_background].\n\t\t\t[b]Note:[/b] To use a transparent splash screen, set [member application/boot_splash/bg_color] to [code]Color(0, 0, 0, 0)[/code].\n\t\t\t[b]Note:[/b] This setting has no effect if [member display/window/per_pixel_transparency/allowed] is set to [code]false[/code]."},{"name":"display/window/size/viewport_height","type":"int","description":"Sets the game's main viewport height. On desktop platforms, this is also the initial window height, represented by an indigo-colored rectangle in the 2D editor. Stretch mode settings also use this as a reference when using the [code]canvas_items[/code] or [code]viewport[/code] stretch modes. See also [member display/window/size/viewport_width], [member display/window/size/window_width_override] and [member display/window/size/window_height_override]."},{"name":"display/window/size/viewport_width","type":"int","description":"Sets the game's main viewport width. On desktop platforms, this is also the initial window width, represented by an indigo-colored rectangle in the 2D editor. Stretch mode settings also use this as a reference when using the [code]canvas_items[/code] or [code]viewport[/code] stretch modes. See also [member display/window/size/viewport_height], [member display/window/size/window_width_override] and [member display/window/size/window_height_override]."},{"name":"display/window/size/window_height_override","type":"int","description":"On desktop platforms, overrides the game's initial window height. See also [member display/window/size/window_width_override], [member display/window/size/viewport_width] and [member display/window/size/viewport_height].\n\t\t\t[b]Note:[/b] By default, or when set to [code]0[/code], the initial window height is the [member display/window/size/viewport_height]. This setting is ignored on iOS, Android, and Web."},{"name":"display/window/size/window_width_override","type":"int","description":"On desktop platforms, overrides the game's initial window width. See also [member display/window/size/window_height_override], [member display/window/size/viewport_width] and [member display/window/size/viewport_height].\n\t\t\t[b]Note:[/b] By default, or when set to [code]0[/code], the initial window width is the [member display/window/size/viewport_width]. This setting is ignored on iOS, Android, and Web."},{"name":"display/window/stretch/aspect","type":"String","description":""},{"name":"display/window/stretch/mode","type":"String","description":"Defines how the base size is stretched to fit the resolution of the window or screen.\n\t\t\t[b]\"disabled\"[/b]: No stretching happens. One unit in the scene corresponds to one pixel on the screen. In this mode, [member display/window/stretch/aspect] has no effect. Recommended for non-game applications.\n\t\t\t[b]\"canvas_items\"[/b]: The base size specified in width and height in the project settings is stretched to cover the whole screen (taking [member display/window/stretch/aspect] into account). This means that everything is rendered directly at the target resolution. 3D is unaffected, while in 2D, there is no longer a 1:1 correspondence between sprite pixels and screen pixels, which may result in scaling artifacts. Recommended for most games that don't use a pixel art aesthetic, although it is possible to use this stretch mode for pixel art games too (especially in 3D).\n\t\t\t[b]\"viewport\"[/b]: The size of the root [Viewport] is set precisely to the base size specified in the Project Settings' Display section. The scene is rendered to this viewport first. Finally, this viewport is scaled to fit the screen (taking [member display/window/stretch/aspect] into account). Recommended for games that use a pixel art aesthetic."},{"name":"display/window/stretch/scale","type":"float","description":"The scale factor multiplier to use for 2D elements. This multiplies the final scale factor determined by [member display/window/stretch/mode]. If using the [b]Disabled[/b] stretch mode, this scale factor is applied as-is. This can be adjusted to make the UI easier to read on certain displays."},{"name":"display/window/stretch/scale_mode","type":"String","description":"The policy to use to determine the final scale factor for 2D elements. This affects how [member display/window/stretch/scale] is applied, in addition to the automatic scale factor determined by [member display/window/stretch/mode].\n\t\t\t[b]\"fractional\"[/b]: The scale factor will not be modified.\n\t\t\t[b]\"integer\"[/b]: The scale factor will be floored to an integer value, which means that the screen size will always be an integer multiple of the base viewport size. This provides a crisp pixel art appearance.\n\t\t\t[b]Note:[/b] When using integer scaling with a stretch mode, resizing the window to be smaller than the base viewport size will clip the contents. Consider preventing that by setting [member Window.min_size] to the same value as the base viewport size defined in [member display/window/size/viewport_width] and [member display/window/size/viewport_height]."},{"name":"display/window/subwindows/embed_subwindows","type":"bool","description":"If [code]true[/code], subwindows are embedded in the main window (this is also called single-window mode). Single-window mode can be faster as it does not need to create a separate window for every popup and tooltip, which can be a slow operation depending on the operating system and rendering method in use.\n\t\t\tIf [code]false[/code], subwindows are created as separate windows (this is also called multi-window mode). This allows them to be moved outside the main window and use native operating system window decorations.\n\t\t\tThis is equivalent to [member EditorSettings.interface/editor/single_window_mode] in the editor, except the setting's value is inverted."},{"name":"display/window/vsync/vsync_mode","type":"int","description":"Sets the V-Sync mode for the main game window. The editor's own V-Sync mode can be set using [member EditorSettings.interface/editor/vsync_mode].\n\t\t\tSee [enum DisplayServer.VSyncMode] for possible values and how they affect the behavior of your application.\n\t\t\tDepending on the platform and rendering method, the engine will fall back to [b]Enabled[/b] if the desired mode is not supported.\n\t\t\tV-Sync can be disabled on the command line using the [code]--disable-vsync[/code] [url=$DOCS_URL/tutorials/editor/command_line_tutorial.html]command line argument[/url].\n\t\t\t[b]Note:[/b] The [b]Adaptive[/b] and [b]Mailbox[/b] V-Sync modes are only supported in the Forward+ and Mobile rendering methods, not Compatibility.\n\t\t\t[b]Note:[/b] This property is only read when the project starts. To change the V-Sync mode at runtime, call [method DisplayServer.window_set_vsync_mode] instead."},{"name":"dotnet/project/assembly_name","type":"String","description":"Name of the .NET assembly. This name is used as the name of the [code].csproj[/code] and [code].sln[/code] files. By default, it's set to the name of the project ([member application/config/name]) allowing to change it in the future without affecting the .NET assembly."},{"name":"dotnet/project/assembly_reload_attempts","type":"int","description":"Number of times to attempt assembly reloading after rebuilding .NET assemblies. Effectively also the timeout in seconds to wait for unloading of script assemblies to finish."},{"name":"dotnet/project/solution_directory","type":"String","description":"Directory that contains the [code].sln[/code] file. By default, the [code].sln[/code] files is in the root of the project directory, next to the [code]project.godot[/code] and [code].csproj[/code] files.\n\t\t\tChanging this value allows setting up a multi-project scenario where there are multiple [code].csproj[/code]. Keep in mind that the Godot project is considered one of the C# projects in the workspace and it's root directory should contain the [code]project.godot[/code] and [code].csproj[/code] next to each other."},{"name":"editor/export/convert_text_resources_to_binary","type":"bool","description":"If [code]true[/code], text resource ([code]tres[/code]) and text scene ([code]tscn[/code]) files are converted to their corresponding binary format on export. This decreases file sizes and speeds up loading slightly.\n\t\t\t[b]Note:[/b] Because a resource's file extension may change in an exported project, it is heavily recommended to use [method @GDScript.load] or [ResourceLoader] instead of [FileAccess] to load resources dynamically.\n\t\t\t[b]Note:[/b] The project settings file ([code]project.godot[/code]) will always be converted to binary on export, regardless of this setting."},{"name":"editor/import/atlas_max_width","type":"int","description":"The maximum width to use when importing textures as an atlas. The value will be rounded to the nearest power of two when used. Use this to prevent imported textures from growing too large in the other direction."},{"name":"editor/import/reimport_missing_imported_files","type":"bool","description":""},{"name":"editor/import/use_multiple_threads","type":"bool","description":"If [code]true[/code] importing of resources is run on multiple threads."},{"name":"editor/movie_writer/disable_vsync","type":"bool","description":"If [code]true[/code], requests V-Sync to be disabled when writing a movie (similar to setting [member display/window/vsync/vsync_mode] to [b]Disabled[/b]). This can speed up video writing if the hardware is fast enough to render, encode and save the video at a framerate higher than the monitor's refresh rate.\n\t\t\t[b]Note:[/b] [member editor/movie_writer/disable_vsync] has no effect if the operating system or graphics driver forces V-Sync with no way for applications to disable it."},{"name":"editor/movie_writer/fps","type":"int","description":"The number of frames per second to record in the video when writing a movie. Simulation speed will adjust to always match the specified framerate, which means the engine will appear to run slower at higher [member editor/movie_writer/fps] values. Certain FPS values will require you to adjust [member editor/movie_writer/mix_rate] to prevent audio from desynchronizing over time.\n\t\t\tThis can be specified manually on the command line using the [code]--fixed-fps &lt;fps&gt;[/code] [url=$DOCS_URL/tutorials/editor/command_line_tutorial.html]command line argument[/url]."},{"name":"editor/movie_writer/mix_rate","type":"int","description":"The audio mix rate to use in the recorded audio when writing a movie (in Hz). This can be different from [member audio/driver/mix_rate], but this value must be divisible by [member editor/movie_writer/fps] to prevent audio from desynchronizing over time."},{"name":"editor/movie_writer/mjpeg_quality","type":"float","description":"The JPEG quality to use when writing a video to an AVI file, between [code]0.01[/code] and [code]1.0[/code] (inclusive). Higher [code]quality[/code] values result in better-looking output at the cost of larger file sizes. Recommended [code]quality[/code] values are between [code]0.75[/code] and [code]0.9[/code]. Even at quality [code]1.0[/code], JPEG compression remains lossy.\n\t\t\t[b]Note:[/b] This does not affect the audio quality or writing PNG image sequences."},{"name":"editor/movie_writer/movie_file","type":"String","description":"The output path for the movie. The file extension determines the [MovieWriter] that will be used.\n\t\t\tGodot has 2 built-in [MovieWriter]s:\n\t\t\t- AVI container with MJPEG for video and uncompressed audio ([code].avi[/code] file extension). Lossy compression, medium file sizes, fast encoding. The lossy compression quality can be adjusted by changing [member ProjectSettings.editor/movie_writer/mjpeg_quality]. The resulting file can be viewed in most video players, but it must be converted to another format for viewing on the web or by Godot with [VideoStreamPlayer]. MJPEG does not support transparency. AVI output is currently limited to a file of 4 GB in size at most.\n\t\t\t- PNG image sequence for video and WAV for audio ([code].png[/code] file extension). Lossless compression, large file sizes, slow encoding. Designed to be encoded to a video file with another tool such as [url=https://ffmpeg.org/]FFmpeg[/url] after recording. Transparency is currently not supported, even if the root viewport is set to be transparent.\n\t\t\tIf you need to encode to a different format or pipe a stream through third-party software, you can extend this [MovieWriter] class to create your own movie writers.\n\t\t\tWhen using PNG output, the frame number will be appended at the end of the file name. It starts from 0 and is padded with 8 digits to ensure correct sorting and easier processing. For example, if the output path is [code]/tmp/hello.png[/code], the first two frames will be [code]/tmp/hello00000000.png[/code] and [code]/tmp/hello00000001.png[/code]. The audio will be saved at [code]/tmp/hello.wav[/code]."},{"name":"editor/movie_writer/speaker_mode","type":"int","description":"The speaker mode to use in the recorded audio when writing a movie. See [enum AudioServer.SpeakerMode] for possible values."},{"name":"editor/naming/default_signal_callback_name","type":"String","description":"The format of the default signal callback name (in the Signal Connection Dialog). The following substitutions are available: [code]{NodeName}[/code], [code]{nodeName}[/code], [code]{node_name}[/code], [code]{SignalName}[/code], [code]{signalName}[/code], and [code]{signal_name}[/code]."},{"name":"editor/naming/default_signal_callback_to_self_name","type":"String","description":"The format of the default signal callback name when a signal connects to the same node that emits it (in the Signal Connection Dialog). The following substitutions are available: [code]{NodeName}[/code], [code]{nodeName}[/code], [code]{node_name}[/code], [code]{SignalName}[/code], [code]{signalName}[/code], and [code]{signal_name}[/code]."},{"name":"editor/naming/node_name_casing","type":"int","description":"When creating node names automatically, set the type of casing to use in this project. This is mostly an editor setting."},{"name":"editor/naming/node_name_num_separator","type":"int","description":"What to use to separate node name from number. This is mostly an editor setting."},{"name":"editor/naming/scene_name_casing","type":"int","description":"When generating scene file names from scene root node, set the type of casing to use in this project. This is mostly an editor setting."},{"name":"editor/naming/script_name_casing","type":"int","description":"When generating script file names from the selected node, set the type of casing to use in this project. This is mostly an editor setting."},{"name":"editor/run/main_run_args","type":"String","description":"The command-line arguments to append to Godot's own command line when running the project. This doesn't affect the editor itself.\n\t\t\tIt is possible to make another executable run Godot by using the [code]%command%[/code] placeholder. The placeholder will be replaced with Godot's own command line. Program-specific arguments should be placed [i]before[/i] the placeholder, whereas Godot-specific arguments should be placed [i]after[/i] the placeholder.\n\t\t\tFor example, this can be used to force the project to run on the dedicated GPU in an NVIDIA Optimus system on Linux:\n\t\t\t[codeblock lang=text]\n\t\t\tprime-run %command%\n\t\t\t[/codeblock]"},{"name":"editor/script/search_in_file_extensions","type":"PackedStringArray","description":"Text-based file extensions to include in the script editor's \"Find in Files\" feature. You can add e.g. [code]tscn[/code] if you wish to also parse your scene files, especially if you use built-in scripts which are serialized in the scene files."},{"name":"editor/script/templates_search_path","type":"String","description":"Search path for project-specific script templates. Godot will search for script templates both in the editor-specific path and in this project-specific path."},{"name":"editor/version_control/autoload_on_startup","type":"bool","description":""},{"name":"editor/version_control/plugin_name","type":"String","description":""},{"name":"filesystem/import/blender/enabled","type":"bool","description":"If [code]true[/code], Blender 3D scene files with the [code].blend[/code] extension will be imported by converting them to glTF 2.0.\n\t\t\tThis requires configuring a path to a Blender executable in the editor settings at [code]filesystem/import/blender/blender_path[/code]. Blender 3.0 or later is required."},{"name":"filesystem/import/blender/enabled.android","type":"bool","description":"Override for [member filesystem/import/blender/enabled] on Android where Blender can't easily be accessed from Godot."},{"name":"filesystem/import/blender/enabled.web","type":"bool","description":"Override for [member filesystem/import/blender/enabled] on the Web where Blender can't easily be accessed from Godot."},{"name":"filesystem/import/fbx2gltf/enabled","type":"bool","description":"If [code]true[/code], Autodesk FBX 3D scene files with the [code].fbx[/code] extension will be imported by converting them to glTF 2.0.\n\t\t\tThis requires configuring a path to an FBX2glTF executable in the editor settings at [member EditorSettings.filesystem/import/fbx/fbx2gltf_path]."},{"name":"filesystem/import/fbx2gltf/enabled.android","type":"bool","description":"Override for [member filesystem/import/fbx2gltf/enabled] on Android where FBX2glTF can't easily be accessed from Godot."},{"name":"filesystem/import/fbx2gltf/enabled.web","type":"bool","description":"Override for [member filesystem/import/fbx2gltf/enabled] on the Web where FBX2glTF can't easily be accessed from Godot."},{"name":"gui/common/default_scroll_deadzone","type":"int","description":"Default value for [member ScrollContainer.scroll_deadzone], which will be used for all [ScrollContainer]s unless overridden."},{"name":"gui/common/snap_controls_to_pixels","type":"bool","description":"If [code]true[/code], snaps [Control] node vertices to the nearest pixel to ensure they remain crisp even when the camera moves or zooms."},{"name":"gui/common/swap_cancel_ok","type":"bool","description":"If [code]true[/code], swaps [b]Cancel[/b] and [b]OK[/b] buttons in dialogs on Windows to follow interface conventions. [method DisplayServer.get_swap_cancel_ok] can be used to query whether buttons are swapped at run-time.\n\t\t\t[b]Note:[/b] This doesn't affect native dialogs such as the ones spawned by [method DisplayServer.dialog_show]."},{"name":"gui/common/text_edit_undo_stack_max_size","type":"int","description":"Maximum undo/redo history size for [TextEdit] fields."},{"name":"gui/fonts/dynamic_fonts/use_oversampling","type":"bool","description":""},{"name":"gui/theme/custom","type":"String","description":"Path to a custom [Theme] resource file to use for the project ([code].theme[/code] or generic [code].tres[/code]/[code].res[/code] extension)."},{"name":"gui/theme/custom_font","type":"String","description":"Path to a custom [Font] resource to use as default for all GUI elements of the project."},{"name":"gui/theme/default_font_antialiasing","type":"int","description":"Font anti-aliasing mode for the default project font. See [member FontFile.antialiasing].\n\t\t\t[b]Note:[/b] This setting does not affect custom [Font]s used within the project. Use the [b]Import[/b] dock for that instead (see [member ResourceImporterDynamicFont.antialiasing])."},{"name":"gui/theme/default_font_generate_mipmaps","type":"bool","description":"If set to [code]true[/code], the default font will have mipmaps generated. This prevents text from looking grainy when a [Control] is scaled down, or when a [Label3D] is viewed from a long distance (if [member Label3D.texture_filter] is set to a mode that displays mipmaps).\n\t\t\tEnabling [member gui/theme/default_font_generate_mipmaps] increases font generation time and memory usage. Only enable this setting if you actually need it.\n\t\t\t[b]Note:[/b] This setting does not affect custom [Font]s used within the project. Use the [b]Import[/b] dock for that instead (see [member ResourceImporterDynamicFont.generate_mipmaps])."},{"name":"gui/theme/default_font_hinting","type":"int","description":"Font hinting mode for the default project font. See [member FontFile.hinting].\n\t\t\t[b]Note:[/b] This setting does not affect custom [Font]s used within the project. Use the [b]Import[/b] dock for that instead (see [member ResourceImporterDynamicFont.hinting])."},{"name":"gui/theme/default_font_multichannel_signed_distance_field","type":"bool","description":"If set to [code]true[/code], the default font will use multichannel signed distance field (MSDF) for crisp rendering at any size. Since this approach does not rely on rasterizing the font every time its size changes, this allows for resizing the font in real-time without any performance penalty. Text will also not look grainy for [Control]s that are scaled down (or for [Label3D]s viewed from a long distance).\n\t\t\tMSDF font rendering can be combined with [member gui/theme/default_font_generate_mipmaps] to further improve font rendering quality when scaled down.\n\t\t\t[b]Note:[/b] This setting does not affect custom [Font]s used within the project. Use the [b]Import[/b] dock for that instead (see [member ResourceImporterDynamicFont.multichannel_signed_distance_field])."},{"name":"gui/theme/default_font_subpixel_positioning","type":"int","description":"Font glyph subpixel positioning mode for the default project font. See [member FontFile.subpixel_positioning].\n\t\t\t[b]Note:[/b] This setting does not affect custom [Font]s used within the project. Use the [b]Import[/b] dock for that instead (see [member ResourceImporterDynamicFont.subpixel_positioning])."},{"name":"gui/theme/default_theme_scale","type":"float","description":"The default scale factor for [Control]s, when not overridden by a [Theme].\n\t\t\t[b]Note:[/b] This property is only read when the project starts. To change the default scale at runtime, set [member ThemeDB.fallback_base_scale] instead."},{"name":"gui/theme/lcd_subpixel_layout","type":"int","description":"LCD subpixel layout used for font anti-aliasing. See [enum TextServer.FontLCDSubpixelLayout]."},{"name":"gui/timers/button_shortcut_feedback_highlight_time","type":"float","description":"When [member BaseButton.shortcut_feedback] is enabled, this is the time the [BaseButton] will remain highlighted after a shortcut."},{"name":"gui/timers/incremental_search_max_interval_msec","type":"int","description":"Timer setting for incremental search in [Tree], [ItemList], etc. controls (in milliseconds)."},{"name":"gui/timers/text_edit_idle_detect_sec","type":"float","description":"Timer for detecting idle in [TextEdit] (in seconds)."},{"name":"gui/timers/tooltip_delay_sec","type":"float","description":"Default delay for tooltips (in seconds)."},{"name":"gui/timers/tooltip_delay_sec.editor_hint","type":"float","description":"Delay for tooltips in the editor."},{"name":"input/ui_accept","type":"Dictionary","description":"Default [InputEventAction] to confirm a focused button, menu or list item, or validate input.\n\t\t\t[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are necessary for the internal logic of several [Control]s. The events assigned to the action can however be modified."},{"name":"input/ui_cancel","type":"Dictionary","description":"Default [InputEventAction] to discard a modal or pending input.\n\t\t\t[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are necessary for the internal logic of several [Control]s. The events assigned to the action can however be modified."},{"name":"input/ui_copy","type":"Dictionary","description":"Default [InputEventAction] to copy a selection to the clipboard.\n\t\t\t[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are necessary for the internal logic of several [Control]s. The events assigned to the action can however be modified."},{"name":"input/ui_cut","type":"Dictionary","description":"Default [InputEventAction] to cut a selection to the clipboard.\n\t\t\t[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are necessary for the internal logic of several [Control]s. The events assigned to the action can however be modified."},{"name":"input/ui_down","type":"Dictionary","description":"Default [InputEventAction] to move down in the UI.\n\t\t\t[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are necessary for the internal logic of several [Control]s. The events assigned to the action can however be modified."},{"name":"input/ui_end","type":"Dictionary","description":"Default [InputEventAction] to go to the end position of a [Control] (e.g. last item in an [ItemList] or a [Tree]), matching the behavior of [constant KEY_END] on typical desktop UI systems.\n\t\t\t[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are necessary for the internal logic of several [Control]s. The events assigned to the action can however be modified."},{"name":"input/ui_filedialog_refresh","type":"Dictionary","description":"Default [InputEventAction] to refresh the contents of the current directory of a [FileDialog].\n\t\t\t[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are necessary for the internal logic of several [Control]s. The events assigned to the action can however be modified."},{"name":"input/ui_filedialog_show_hidden","type":"Dictionary","description":"Default [InputEventAction] to toggle showing hidden files and directories in a [FileDialog].\n\t\t\t[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are necessary for the internal logic of several [Control]s. The events assigned to the action can however be modified."},{"name":"input/ui_filedialog_up_one_level","type":"Dictionary","description":"Default [InputEventAction] to go up one directory in a [FileDialog].\n\t\t\t[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are necessary for the internal logic of several [Control]s. The events assigned to the action can however be modified."},{"name":"input/ui_focus_next","type":"Dictionary","description":"Default [InputEventAction] to focus the next [Control] in the scene. The focus behavior can be configured via [member Control.focus_next].\n\t\t\t[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are necessary for the internal logic of several [Control]s. The events assigned to the action can however be modified."},{"name":"input/ui_focus_prev","type":"Dictionary","description":"Default [InputEventAction] to focus the previous [Control] in the scene. The focus behavior can be configured via [member Control.focus_previous].\n\t\t\t[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are necessary for the internal logic of several [Control]s. The events assigned to the action can however be modified."},{"name":"input/ui_graph_delete","type":"Dictionary","description":"Default [InputEventAction] to delete a [GraphNode] in a [GraphEdit].\n\t\t\t[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are necessary for the internal logic of several [Control]s. The events assigned to the action can however be modified."},{"name":"input/ui_graph_duplicate","type":"Dictionary","description":"Default [InputEventAction] to duplicate a [GraphNode] in a [GraphEdit].\n\t\t\t[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are necessary for the internal logic of several [Control]s. The events assigned to the action can however be modified."},{"name":"input/ui_home","type":"Dictionary","description":"Default [InputEventAction] to go to the start position of a [Control] (e.g. first item in an [ItemList] or a [Tree]), matching the behavior of [constant KEY_HOME] on typical desktop UI systems.\n\t\t\t[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are necessary for the internal logic of several [Control]s. The events assigned to the action can however be modified."},{"name":"input/ui_left","type":"Dictionary","description":"Default [InputEventAction] to move left in the UI.\n\t\t\t[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are necessary for the internal logic of several [Control]s. The events assigned to the action can however be modified."},{"name":"input/ui_menu","type":"Dictionary","description":"Default [InputEventAction] to open a context menu in a text field.\n\t\t\t[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are necessary for the internal logic of several [Control]s. The events assigned to the action can however be modified."},{"name":"input/ui_page_down","type":"Dictionary","description":"Default [InputEventAction] to go down a page in a [Control] (e.g. in an [ItemList] or a [Tree]), matching the behavior of [constant KEY_PAGEDOWN] on typical desktop UI systems.\n\t\t\t[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are necessary for the internal logic of several [Control]s. The events assigned to the action can however be modified."},{"name":"input/ui_page_up","type":"Dictionary","description":"Default [InputEventAction] to go up a page in a [Control] (e.g. in an [ItemList] or a [Tree]), matching the behavior of [constant KEY_PAGEUP] on typical desktop UI systems.\n\t\t\t[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are necessary for the internal logic of several [Control]s. The events assigned to the action can however be modified."},{"name":"input/ui_paste","type":"Dictionary","description":"Default [InputEventAction] to paste from the clipboard.\n\t\t\t[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are necessary for the internal logic of several [Control]s. The events assigned to the action can however be modified."},{"name":"input/ui_redo","type":"Dictionary","description":"Default [InputEventAction] to redo an undone action.\n\t\t\t[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are necessary for the internal logic of several [Control]s. The events assigned to the action can however be modified."},{"name":"input/ui_right","type":"Dictionary","description":"Default [InputEventAction] to move right in the UI.\n\t\t\t[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are necessary for the internal logic of several [Control]s. The events assigned to the action can however be modified."},{"name":"input/ui_select","type":"Dictionary","description":"Default [InputEventAction] to select an item in a [Control] (e.g. in an [ItemList] or a [Tree]).\n\t\t\t[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are necessary for the internal logic of several [Control]s. The events assigned to the action can however be modified."},{"name":"input/ui_swap_input_direction","type":"Dictionary","description":"Default [InputEventAction] to swap input direction, i.e. change between left-to-right to right-to-left modes. Affects text-editing controls ([LineEdit], [TextEdit])."},{"name":"input/ui_text_add_selection_for_next_occurrence","type":"Dictionary","description":"If a selection is currently active with the last caret in text fields, searches for the next occurrence of the selection, adds a caret and selects the next occurrence.\n\t\t\tIf no selection is currently active with the last caret in text fields, selects the word currently under the caret.\n\t\t\tThe action can be performed sequentially for all occurrences of the selection of the last caret and for all existing carets.\n\t\t\tThe viewport is adjusted to the latest newly added caret.\n\t\t\t[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are necessary for the internal logic of several [Control]s. The events assigned to the action can however be modified."},{"name":"input/ui_text_backspace","type":"Dictionary","description":"Default [InputEventAction] to delete the character before the text cursor.\n\t\t\t[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are necessary for the internal logic of several [Control]s. The events assigned to the action can however be modified."},{"name":"input/ui_text_backspace_all_to_left","type":"Dictionary","description":"Default [InputEventAction] to delete [b]all[/b] text before the text cursor.\n\t\t\t[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are necessary for the internal logic of several [Control]s. The events assigned to the action can however be modified."},{"name":"input/ui_text_backspace_all_to_left.macos","type":"Dictionary","description":"macOS specific override for the shortcut to delete all text before the text cursor."},{"name":"input/ui_text_backspace_word","type":"Dictionary","description":"Default [InputEventAction] to delete all characters before the cursor up until a whitespace or punctuation character.\n\t\t\t[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are necessary for the internal logic of several [Control]s. The events assigned to the action can however be modified."},{"name":"input/ui_text_backspace_word.macos","type":"Dictionary","description":"macOS specific override for the shortcut to delete a word."},{"name":"input/ui_text_caret_add_above","type":"Dictionary","description":"Default [InputEventAction] to add an additional caret above every caret of a text."},{"name":"input/ui_text_caret_add_above.macos","type":"Dictionary","description":"macOS specific override for the shortcut to add a caret above every caret."},{"name":"input/ui_text_caret_add_below","type":"Dictionary","description":"Default [InputEventAction] to add an additional caret below every caret of a text."},{"name":"input/ui_text_caret_add_below.macos","type":"Dictionary","description":"macOS specific override for the shortcut to add a caret below every caret."},{"name":"input/ui_text_caret_document_end","type":"Dictionary","description":"Default [InputEventAction] to move the text cursor to the end of the text.\n\t\t\t[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are necessary for the internal logic of several [Control]s. The events assigned to the action can however be modified."},{"name":"input/ui_text_caret_document_end.macos","type":"Dictionary","description":"macOS specific override for the shortcut to move the text cursor to the end of the text."},{"name":"input/ui_text_caret_document_start","type":"Dictionary","description":"Default [InputEventAction] to move the text cursor to the start of the text.\n\t\t\t[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are necessary for the internal logic of several [Control]s. The events assigned to the action can however be modified."},{"name":"input/ui_text_caret_document_start.macos","type":"Dictionary","description":"macOS specific override for the shortcut to move the text cursor to the start of the text."},{"name":"input/ui_text_caret_down","type":"Dictionary","description":"Default [InputEventAction] to move the text cursor down.\n\t\t\t[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are necessary for the internal logic of several [Control]s. The events assigned to the action can however be modified."},{"name":"input/ui_text_caret_left","type":"Dictionary","description":"Default [InputEventAction] to move the text cursor left.\n\t\t\t[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are necessary for the internal logic of several [Control]s. The events assigned to the action can however be modified."},{"name":"input/ui_text_caret_line_end","type":"Dictionary","description":"Default [InputEventAction] to move the text cursor to the end of the line.\n\t\t\t[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are necessary for the internal logic of several [Control]s. The events assigned to the action can however be modified."},{"name":"input/ui_text_caret_line_end.macos","type":"Dictionary","description":"macOS specific override for the shortcut to move the text cursor to the end of the line."},{"name":"input/ui_text_caret_line_start","type":"Dictionary","description":"Default [InputEventAction] to move the text cursor to the start of the line.\n\t\t\t[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are necessary for the internal logic of several [Control]s. The events assigned to the action can however be modified."},{"name":"input/ui_text_caret_line_start.macos","type":"Dictionary","description":"macOS specific override for the shortcut to move the text cursor to the start of the line."},{"name":"input/ui_text_caret_page_down","type":"Dictionary","description":"Default [InputEventAction] to move the text cursor down one page.\n\t\t\t[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are necessary for the internal logic of several [Control]s. The events assigned to the action can however be modified."},{"name":"input/ui_text_caret_page_up","type":"Dictionary","description":"Default [InputEventAction] to move the text cursor up one page.\n\t\t\t[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are necessary for the internal logic of several [Control]s. The events assigned to the action can however be modified."},{"name":"input/ui_text_caret_right","type":"Dictionary","description":"Default [InputEventAction] to move the text cursor right.\n\t\t\t[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are necessary for the internal logic of several [Control]s. The events assigned to the action can however be modified."},{"name":"input/ui_text_caret_up","type":"Dictionary","description":"Default [InputEventAction] to move the text cursor up.\n\t\t\t[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are necessary for the internal logic of several [Control]s. The events assigned to the action can however be modified."},{"name":"input/ui_text_caret_word_left","type":"Dictionary","description":"Default [InputEventAction] to move the text cursor left to the next whitespace or punctuation.\n\t\t\t[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are necessary for the internal logic of several [Control]s. The events assigned to the action can however be modified."},{"name":"input/ui_text_caret_word_left.macos","type":"Dictionary","description":"macOS specific override for the shortcut to move the text cursor back one word."},{"name":"input/ui_text_caret_word_right","type":"Dictionary","description":"Default [InputEventAction] to move the text cursor right to the next whitespace or punctuation.\n\t\t\t[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are necessary for the internal logic of several [Control]s. The events assigned to the action can however be modified."},{"name":"input/ui_text_caret_word_right.macos","type":"Dictionary","description":"macOS specific override for the shortcut to move the text cursor forward one word."},{"name":"input/ui_text_clear_carets_and_selection","type":"Dictionary","description":"If there's only one caret active and with a selection, clears the selection.\n\t\t\tIn case there's more than one caret active, removes the secondary carets and clears their selections.\n\t\t\t[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are necessary for the internal logic of several [Control]s. The events assigned to the action can however be modified."},{"name":"input/ui_text_completion_accept","type":"Dictionary","description":"Default [InputEventAction] to accept an autocompletion hint.\n\t\t\t[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are necessary for the internal logic of several [Control]s. The events assigned to the action can however be modified."},{"name":"input/ui_text_completion_query","type":"Dictionary","description":"Default [InputEventAction] to request autocompletion.\n\t\t\t[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are necessary for the internal logic of several [Control]s. The events assigned to the action can however be modified."},{"name":"input/ui_text_completion_replace","type":"Dictionary","description":"Default [InputEventAction] to accept an autocompletion hint, replacing existing text.\n\t\t\t[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are necessary for the internal logic of several [Control]s. The events assigned to the action can however be modified."},{"name":"input/ui_text_dedent","type":"Dictionary","description":"Default [InputEventAction] to unindent text.\n\t\t\t[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are necessary for the internal logic of several [Control]s. The events assigned to the action can however be modified."},{"name":"input/ui_text_delete","type":"Dictionary","description":"Default [InputEventAction] to delete the character after the text cursor.\n\t\t\t[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are necessary for the internal logic of several [Control]s. The events assigned to the action can however be modified."},{"name":"input/ui_text_delete_all_to_right","type":"Dictionary","description":"Default [InputEventAction] to delete [b]all[/b] text after the text cursor.\n\t\t\t[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are necessary for the internal logic of several [Control]s. The events assigned to the action can however be modified."},{"name":"input/ui_text_delete_all_to_right.macos","type":"Dictionary","description":"macOS specific override for the shortcut to delete all text after the text cursor."},{"name":"input/ui_text_delete_word","type":"Dictionary","description":"Default [InputEventAction] to delete all characters after the cursor up until a whitespace or punctuation character.\n\t\t\t[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are necessary for the internal logic of several [Control]s. The events assigned to the action can however be modified."},{"name":"input/ui_text_delete_word.macos","type":"Dictionary","description":"macOS specific override for the shortcut to delete a word after the text cursor."},{"name":"input/ui_text_indent","type":"Dictionary","description":"Default [InputEventAction] to indent the current line.\n\t\t\t[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are necessary for the internal logic of several [Control]s. The events assigned to the action can however be modified."},{"name":"input/ui_text_newline","type":"Dictionary","description":"Default [InputEventAction] to insert a new line at the position of the text cursor.\n\t\t\t[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are necessary for the internal logic of several [Control]s. The events assigned to the action can however be modified."},{"name":"input/ui_text_newline_above","type":"Dictionary","description":"Default [InputEventAction] to insert a new line before the current one.\n\t\t\t[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are necessary for the internal logic of several [Control]s. The events assigned to the action can however be modified."},{"name":"input/ui_text_newline_blank","type":"Dictionary","description":"Default [InputEventAction] to insert a new line after the current one.\n\t\t\t[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are necessary for the internal logic of several [Control]s. The events assigned to the action can however be modified."},{"name":"input/ui_text_scroll_down","type":"Dictionary","description":"Default [InputEventAction] to scroll down one line of text.\n\t\t\t[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are necessary for the internal logic of several [Control]s. The events assigned to the action can however be modified."},{"name":"input/ui_text_scroll_down.macos","type":"Dictionary","description":"macOS specific override for the shortcut to scroll down one line."},{"name":"input/ui_text_scroll_up","type":"Dictionary","description":"Default [InputEventAction] to scroll up one line of text.\n\t\t\t[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are necessary for the internal logic of several [Control]s. The events assigned to the action can however be modified."},{"name":"input/ui_text_scroll_up.macos","type":"Dictionary","description":"macOS specific override for the shortcut to scroll up one line."},{"name":"input/ui_text_select_all","type":"Dictionary","description":"Default [InputEventAction] to select all text.\n\t\t\t[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are necessary for the internal logic of several [Control]s. The events assigned to the action can however be modified."},{"name":"input/ui_text_select_word_under_caret","type":"Dictionary","description":"If no selection is currently active, selects the word currently under the caret in text fields. If a selection is currently active, deselects the current selection.\n\t\t\t[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are necessary for the internal logic of several [Control]s. The events assigned to the action can however be modified."},{"name":"input/ui_text_select_word_under_caret.macos","type":"Dictionary","description":"macOS specific override for the shortcut to select the word currently under the caret."},{"name":"input/ui_text_skip_selection_for_next_occurrence","type":"Dictionary","description":"If no selection is currently active with the last caret in text fields, searches for the next occurrence of the word currently under the caret and moves the caret to the next occurrence. The action can be performed sequentially for other occurrences of the word under the last caret.\n\t\t\tIf a selection is currently active with the last caret in text fields, searches for the next occurrence of the selection, adds a caret, selects the next occurrence then deselects the previous selection and its associated caret. The action can be performed sequentially for other occurrences of the selection of the last caret.\n\t\t\tThe viewport is adjusted to the latest newly added caret.\n\t\t\t[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are necessary for the internal logic of several [Control]s. The events assigned to the action can however be modified."},{"name":"input/ui_text_submit","type":"Dictionary","description":"Default [InputEventAction] to submit a text field.\n\t\t\t[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are necessary for the internal logic of several [Control]s. The events assigned to the action can however be modified."},{"name":"input/ui_text_toggle_insert_mode","type":"Dictionary","description":"Default [InputEventAction] to toggle [i]insert mode[/i] in a text field. While in insert mode, inserting new text overrides the character after the cursor, unless the next character is a new line.\n\t\t\t[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are necessary for the internal logic of several [Control]s. The events assigned to the action can however be modified."},{"name":"input/ui_undo","type":"Dictionary","description":"Default [InputEventAction] to undo the most recent action.\n\t\t\t[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are necessary for the internal logic of several [Control]s. The events assigned to the action can however be modified."},{"name":"input/ui_unicode_start","type":"Dictionary","description":"Default [InputEventAction] to start Unicode character hexadecimal code input in a text field.\n\t\t\t[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are necessary for the internal logic of several [Control]s. The events assigned to the action can however be modified."},{"name":"input/ui_up","type":"Dictionary","description":"Default [InputEventAction] to move up in the UI.\n\t\t\t[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are necessary for the internal logic of several [Control]s. The events assigned to the action can however be modified."},{"name":"input_devices/buffering/agile_event_flushing","type":"bool","description":"If [code]true[/code], key/touch/joystick events will be flushed just before every idle and physics frame.\n\t\t\tIf [code]false[/code], such events will be flushed only once per process frame, between iterations of the engine.\n\t\t\tEnabling this can greatly improve the responsiveness to input, specially in devices that need to run multiple physics frames per visible (process) frame, because they can't run at the target frame rate.\n\t\t\t[b]Note:[/b] Currently implemented only on Android."},{"name":"input_devices/compatibility/legacy_just_pressed_behavior","type":"bool","description":"If [code]true[/code], [method Input.is_action_just_pressed] and [method Input.is_action_just_released] will only return [code]true[/code] if the action is still in the respective state, i.e. an action that is pressed [i]and[/i] released on the same frame will be missed.\n\t\t\tIf [code]false[/code], no input will be lost.\n\t\t\t[b]Note:[/b] You should in nearly all cases prefer the [code]false[/code] setting. The legacy behavior is to enable supporting old projects that rely on the old logic, without changes to script."},{"name":"input_devices/pen_tablet/driver","type":"String","description":"Specifies the tablet driver to use. If left empty, the default driver will be used.\n\t\t\t[b]Note:[/b] The driver in use can be overridden at runtime via the [code]--tablet-driver[/code] [url=$DOCS_URL/tutorials/editor/command_line_tutorial.html]command line argument[/url].\n\t\t\t[b]Note:[/b] Use [method DisplayServer.tablet_set_current_driver] to switch tablet driver in runtime."},{"name":"input_devices/pen_tablet/driver.windows","type":"String","description":"Override for [member input_devices/pen_tablet/driver] on Windows. Supported values are:\n\t\t\t- [code]auto[/code] (default), uses [code]wintab[/code] if Windows Ink is disabled in the Wacom Tablet Properties or system settings, [code]winink[/code] otherwise.\n\t\t\t- [code]winink[/code], uses Windows native \"Windows Ink\" driver.\n\t\t\t- [code]wintab[/code], uses Wacom \"WinTab\" driver.\n\t\t\t- [code]dummy[/code], tablet input is disabled."},{"name":"input_devices/pointing/android/enable_long_press_as_right_click","type":"bool","description":"If [code]true[/code], long press events on an Android touchscreen are transformed into right click events."},{"name":"input_devices/pointing/android/enable_pan_and_scale_gestures","type":"bool","description":"If [code]true[/code], multi-touch pan and scale gestures are enabled on Android devices."},{"name":"input_devices/pointing/android/rotary_input_scroll_axis","type":"int","description":"On Wear OS devices, defines which axis of the mouse wheel rotary input is mapped to. This rotary input is usually performed by rotating the physical or virtual (touch-based) bezel on a smartwatch."},{"name":"input_devices/pointing/emulate_mouse_from_touch","type":"bool","description":"If [code]true[/code], sends mouse input events when tapping or swiping on the touchscreen."},{"name":"input_devices/pointing/emulate_touch_from_mouse","type":"bool","description":"If [code]true[/code], sends touch input events when clicking or dragging the mouse."},{"name":"input_devices/sensors/enable_accelerometer","type":"bool","description":"If [code]true[/code], the accelerometer sensor is enabled and [method Input.get_accelerometer] returns valid data."},{"name":"input_devices/sensors/enable_gravity","type":"bool","description":"If [code]true[/code], the gravity sensor is enabled and [method Input.get_gravity] returns valid data."},{"name":"input_devices/sensors/enable_gyroscope","type":"bool","description":"If [code]true[/code], the gyroscope sensor is enabled and [method Input.get_gyroscope] returns valid data."},{"name":"input_devices/sensors/enable_magnetometer","type":"bool","description":"If [code]true[/code], the magnetometer sensor is enabled and [method Input.get_magnetometer] returns valid data."},{"name":"internationalization/locale/fallback","type":"String","description":"The locale to fall back to if a translation isn't available in a given language. If left empty, [code]en[/code] (English) will be used.\n\t\t\t[b]Note:[/b] Not to be confused with [TextServerFallback]."},{"name":"internationalization/locale/include_text_server_data","type":"bool","description":"If [code]true[/code], text server break iteration rule sets, dictionaries and other optional data are included in the exported project.\n\t\t\t[b]Note:[/b] \"ICU / HarfBuzz / Graphite\" text server data includes dictionaries for Burmese, Chinese, Japanese, Khmer, Lao and Thai as well as Unicode Standard Annex #29 and Unicode Standard Annex #14 word and line breaking rules. Data is about 4 MB large.\n\t\t\t[b]Note:[/b] [TextServerFallback] does not use additional data."},{"name":"internationalization/locale/test","type":"String","description":"If non-empty, this locale will be used instead of the automatically detected system locale.\n\t\t\t[b]Note:[/b] This setting also applies to the exported project. To only affect testing within the editor, override this setting with an [code]editor[/code] [url=$DOCS_URL/tutorials/export/feature_tags.html]feature tag[/url] for localization testing purposes."},{"name":"internationalization/pseudolocalization/double_vowels","type":"bool","description":"Double vowels in strings during pseudolocalization to simulate the lengthening of text due to localization."},{"name":"internationalization/pseudolocalization/expansion_ratio","type":"float","description":"The expansion ratio to use during pseudolocalization. A value of [code]0.3[/code] is sufficient for most practical purposes, and will increase the length of each string by 30%."},{"name":"internationalization/pseudolocalization/fake_bidi","type":"bool","description":"If [code]true[/code], emulate bidirectional (right-to-left) text when pseudolocalization is enabled. This can be used to spot issues with RTL layout and UI mirroring that will crop up if the project is localized to RTL languages such as Arabic or Hebrew. See also [member internationalization/rendering/force_right_to_left_layout_direction]."},{"name":"internationalization/pseudolocalization/override","type":"bool","description":"Replace all characters in the string with [code]*[/code]. Useful for finding non-localizable strings."},{"name":"internationalization/pseudolocalization/prefix","type":"String","description":"Prefix that will be prepended to the pseudolocalized string."},{"name":"internationalization/pseudolocalization/replace_with_accents","type":"bool","description":"Replace all characters with their accented variants during pseudolocalization."},{"name":"internationalization/pseudolocalization/skip_placeholders","type":"bool","description":"Skip placeholders for string formatting like [code]%s[/code] or [code]%f[/code] during pseudolocalization. Useful to identify strings which need additional control characters to display correctly."},{"name":"internationalization/pseudolocalization/suffix","type":"String","description":"Suffix that will be appended to the pseudolocalized string."},{"name":"internationalization/pseudolocalization/use_pseudolocalization","type":"bool","description":"If [code]true[/code], enables pseudolocalization for the project. This can be used to spot untranslatable strings or layout issues that may occur once the project is localized to languages that have longer strings than the source language.\n\t\t\t[b]Note:[/b] This property is only read when the project starts. To toggle pseudolocalization at run-time, use [member TranslationServer.pseudolocalization_enabled] instead."},{"name":"internationalization/rendering/force_right_to_left_layout_direction","type":"bool","description":"Force layout direction and text writing direction to RTL for all controls, even if the current locale is intended to use a left-to-right layout and text writing direction. This should be enabled for testing purposes only. See also [member internationalization/pseudolocalization/fake_bidi]."},{"name":"internationalization/rendering/root_node_auto_translate","type":"bool","description":"If [code]true[/code], root node will use [constant Node.AUTO_TRANSLATE_MODE_ALWAYS], otherwise [constant Node.AUTO_TRANSLATE_MODE_DISABLED] will be used.\n\t\t\t[b]Note:[/b] This property is only read when the project starts. To change the auto translate mode at runtime, set [member Node.auto_translate_mode] of [member SceneTree.root] instead."},{"name":"internationalization/rendering/root_node_layout_direction","type":"int","description":"Root node default layout direction."},{"name":"internationalization/rendering/text_driver","type":"String","description":"Specifies the [TextServer] to use. If left empty, the default will be used.\n\t\t\t\"ICU / HarfBuzz / Graphite\" ([TextServerAdvanced]) is the most advanced text driver, supporting right-to-left typesetting and complex scripts (for languages like Arabic, Hebrew, etc.). The \"Fallback\" text driver ([TextServerFallback]) does not support right-to-left typesetting and complex scripts.\n\t\t\t[b]Note:[/b] The driver in use can be overridden at runtime via the [code]--text-driver[/code] [url=$DOCS_URL/tutorials/editor/command_line_tutorial.html]command line argument[/url].\n\t\t\t[b]Note:[/b] There is an additional [code]Dummy[/code] text driver available, which disables all text rendering and font-related functionality. This driver is not listed in the project settings, but it can be enabled when running the editor or project using the [code]--text-driver Dummy[/code] [url=$DOCS_URL/tutorials/editor/command_line_tutorial.html]command line argument[/url]."},{"name":"layer_names/2d_navigation/layer_1","type":"String","description":"Optional name for the 2D navigation layer 1. If left empty, the layer will display as \"Layer 1\"."},{"name":"layer_names/2d_navigation/layer_2","type":"String","description":"Optional name for the 2D navigation layer 2. If left empty, the layer will display as \"Layer 2\"."},{"name":"layer_names/2d_navigation/layer_3","type":"String","description":"Optional name for the 2D navigation layer 3. If left empty, the layer will display as \"Layer 3\"."},{"name":"layer_names/2d_navigation/layer_4","type":"String","description":"Optional name for the 2D navigation layer 4. If left empty, the layer will display as \"Layer 4\"."},{"name":"layer_names/2d_navigation/layer_5","type":"String","description":"Optional name for the 2D navigation layer 5. If left empty, the layer will display as \"Layer 5\"."},{"name":"layer_names/2d_navigation/layer_6","type":"String","description":"Optional name for the 2D navigation layer 6. If left empty, the layer will display as \"Layer 6\"."},{"name":"layer_names/2d_navigation/layer_7","type":"String","description":"Optional name for the 2D navigation layer 7. If left empty, the layer will display as \"Layer 7\"."},{"name":"layer_names/2d_navigation/layer_8","type":"String","description":"Optional name for the 2D navigation layer 8. If left empty, the layer will display as \"Layer 8\"."},{"name":"layer_names/2d_navigation/layer_9","type":"String","description":"Optional name for the 2D navigation layer 9. If left empty, the layer will display as \"Layer 9\"."},{"name":"layer_names/2d_navigation/layer_10","type":"String","description":"Optional name for the 2D navigation layer 10. If left empty, the layer will display as \"Layer 10\"."},{"name":"layer_names/2d_navigation/layer_11","type":"String","description":"Optional name for the 2D navigation layer 11. If left empty, the layer will display as \"Layer 11\"."},{"name":"layer_names/2d_navigation/layer_12","type":"String","description":"Optional name for the 2D navigation layer 12. If left empty, the layer will display as \"Layer 12\"."},{"name":"layer_names/2d_navigation/layer_13","type":"String","description":"Optional name for the 2D navigation layer 13. If left empty, the layer will display as \"Layer 13\"."},{"name":"layer_names/2d_navigation/layer_14","type":"String","description":"Optional name for the 2D navigation layer 14. If left empty, the layer will display as \"Layer 14\"."},{"name":"layer_names/2d_navigation/layer_15","type":"String","description":"Optional name for the 2D navigation layer 15. If left empty, the layer will display as \"Layer 15\"."},{"name":"layer_names/2d_navigation/layer_16","type":"String","description":"Optional name for the 2D navigation layer 16. If left empty, the layer will display as \"Layer 16\"."},{"name":"layer_names/2d_navigation/layer_17","type":"String","description":"Optional name for the 2D navigation layer 17. If left empty, the layer will display as \"Layer 17\"."},{"name":"layer_names/2d_navigation/layer_18","type":"String","description":"Optional name for the 2D navigation layer 18. If left empty, the layer will display as \"Layer 18\"."},{"name":"layer_names/2d_navigation/layer_19","type":"String","description":"Optional name for the 2D navigation layer 19. If left empty, the layer will display as \"Layer 19\"."},{"name":"layer_names/2d_navigation/layer_20","type":"String","description":"Optional name for the 2D navigation layer 20. If left empty, the layer will display as \"Layer 20\"."},{"name":"layer_names/2d_navigation/layer_21","type":"String","description":"Optional name for the 2D navigation layer 21. If left empty, the layer will display as \"Layer 21\"."},{"name":"layer_names/2d_navigation/layer_22","type":"String","description":"Optional name for the 2D navigation layer 22. If left empty, the layer will display as \"Layer 22\"."},{"name":"layer_names/2d_navigation/layer_23","type":"String","description":"Optional name for the 2D navigation layer 23. If left empty, the layer will display as \"Layer 23\"."},{"name":"layer_names/2d_navigation/layer_24","type":"String","description":"Optional name for the 2D navigation layer 24. If left empty, the layer will display as \"Layer 24\"."},{"name":"layer_names/2d_navigation/layer_25","type":"String","description":"Optional name for the 2D navigation layer 25. If left empty, the layer will display as \"Layer 25\"."},{"name":"layer_names/2d_navigation/layer_26","type":"String","description":"Optional name for the 2D navigation layer 26. If left empty, the layer will display as \"Layer 26\"."},{"name":"layer_names/2d_navigation/layer_27","type":"String","description":"Optional name for the 2D navigation layer 27. If left empty, the layer will display as \"Layer 27\"."},{"name":"layer_names/2d_navigation/layer_28","type":"String","description":"Optional name for the 2D navigation layer 28. If left empty, the layer will display as \"Layer 28\"."},{"name":"layer_names/2d_navigation/layer_29","type":"String","description":"Optional name for the 2D navigation layer 29. If left empty, the layer will display as \"Layer 29\"."},{"name":"layer_names/2d_navigation/layer_30","type":"String","description":"Optional name for the 2D navigation layer 30. If left empty, the layer will display as \"Layer 30\"."},{"name":"layer_names/2d_navigation/layer_31","type":"String","description":"Optional name for the 2D navigation layer 31. If left empty, the layer will display as \"Layer 31\"."},{"name":"layer_names/2d_navigation/layer_32","type":"String","description":"Optional name for the 2D navigation layer 32. If left empty, the layer will display as \"Layer 32\"."},{"name":"layer_names/2d_physics/layer_1","type":"String","description":"Optional name for the 2D physics layer 1. If left empty, the layer will display as \"Layer 1\"."},{"name":"layer_names/2d_physics/layer_2","type":"String","description":"Optional name for the 2D physics layer 2. If left empty, the layer will display as \"Layer 2\"."},{"name":"layer_names/2d_physics/layer_3","type":"String","description":"Optional name for the 2D physics layer 3. If left empty, the layer will display as \"Layer 3\"."},{"name":"layer_names/2d_physics/layer_4","type":"String","description":"Optional name for the 2D physics layer 4. If left empty, the layer will display as \"Layer 4\"."},{"name":"layer_names/2d_physics/layer_5","type":"String","description":"Optional name for the 2D physics layer 5. If left empty, the layer will display as \"Layer 5\"."},{"name":"layer_names/2d_physics/layer_6","type":"String","description":"Optional name for the 2D physics layer 6. If left empty, the layer will display as \"Layer 6\"."},{"name":"layer_names/2d_physics/layer_7","type":"String","description":"Optional name for the 2D physics layer 7. If left empty, the layer will display as \"Layer 7\"."},{"name":"layer_names/2d_physics/layer_8","type":"String","description":"Optional name for the 2D physics layer 8. If left empty, the layer will display as \"Layer 8\"."},{"name":"layer_names/2d_physics/layer_9","type":"String","description":"Optional name for the 2D physics layer 9. If left empty, the layer will display as \"Layer 9\"."},{"name":"layer_names/2d_physics/layer_10","type":"String","description":"Optional name for the 2D physics layer 10. If left empty, the layer will display as \"Layer 10\"."},{"name":"layer_names/2d_physics/layer_11","type":"String","description":"Optional name for the 2D physics layer 11. If left empty, the layer will display as \"Layer 11\"."},{"name":"layer_names/2d_physics/layer_12","type":"String","description":"Optional name for the 2D physics layer 12. If left empty, the layer will display as \"Layer 12\"."},{"name":"layer_names/2d_physics/layer_13","type":"String","description":"Optional name for the 2D physics layer 13. If left empty, the layer will display as \"Layer 13\"."},{"name":"layer_names/2d_physics/layer_14","type":"String","description":"Optional name for the 2D physics layer 14. If left empty, the layer will display as \"Layer 14\"."},{"name":"layer_names/2d_physics/layer_15","type":"String","description":"Optional name for the 2D physics layer 15. If left empty, the layer will display as \"Layer 15\"."},{"name":"layer_names/2d_physics/layer_16","type":"String","description":"Optional name for the 2D physics layer 16. If left empty, the layer will display as \"Layer 16\"."},{"name":"layer_names/2d_physics/layer_17","type":"String","description":"Optional name for the 2D physics layer 17. If left empty, the layer will display as \"Layer 17\"."},{"name":"layer_names/2d_physics/layer_18","type":"String","description":"Optional name for the 2D physics layer 18. If left empty, the layer will display as \"Layer 18\"."},{"name":"layer_names/2d_physics/layer_19","type":"String","description":"Optional name for the 2D physics layer 19. If left empty, the layer will display as \"Layer 19\"."},{"name":"layer_names/2d_physics/layer_20","type":"String","description":"Optional name for the 2D physics layer 20. If left empty, the layer will display as \"Layer 20\"."},{"name":"layer_names/2d_physics/layer_21","type":"String","description":"Optional name for the 2D physics layer 21. If left empty, the layer will display as \"Layer 21\"."},{"name":"layer_names/2d_physics/layer_22","type":"String","description":"Optional name for the 2D physics layer 22. If left empty, the layer will display as \"Layer 22\"."},{"name":"layer_names/2d_physics/layer_23","type":"String","description":"Optional name for the 2D physics layer 23. If left empty, the layer will display as \"Layer 23\"."},{"name":"layer_names/2d_physics/layer_24","type":"String","description":"Optional name for the 2D physics layer 24. If left empty, the layer will display as \"Layer 24\"."},{"name":"layer_names/2d_physics/layer_25","type":"String","description":"Optional name for the 2D physics layer 25. If left empty, the layer will display as \"Layer 25\"."},{"name":"layer_names/2d_physics/layer_26","type":"String","description":"Optional name for the 2D physics layer 26. If left empty, the layer will display as \"Layer 26\"."},{"name":"layer_names/2d_physics/layer_27","type":"String","description":"Optional name for the 2D physics layer 27. If left empty, the layer will display as \"Layer 27\"."},{"name":"layer_names/2d_physics/layer_28","type":"String","description":"Optional name for the 2D physics layer 28. If left empty, the layer will display as \"Layer 28\"."},{"name":"layer_names/2d_physics/layer_29","type":"String","description":"Optional name for the 2D physics layer 29. If left empty, the layer will display as \"Layer 29\"."},{"name":"layer_names/2d_physics/layer_30","type":"String","description":"Optional name for the 2D physics layer 30. If left empty, the layer will display as \"Layer 30\"."},{"name":"layer_names/2d_physics/layer_31","type":"String","description":"Optional name for the 2D physics layer 31. If left empty, the layer will display as \"Layer 31\"."},{"name":"layer_names/2d_physics/layer_32","type":"String","description":"Optional name for the 2D physics layer 32. If left empty, the layer will display as \"Layer 32\"."},{"name":"layer_names/2d_render/layer_1","type":"String","description":"Optional name for the 2D render layer 1. If left empty, the layer will display as \"Layer 1\"."},{"name":"layer_names/2d_render/layer_2","type":"String","description":"Optional name for the 2D render layer 2. If left empty, the layer will display as \"Layer 2\"."},{"name":"layer_names/2d_render/layer_3","type":"String","description":"Optional name for the 2D render layer 3. If left empty, the layer will display as \"Layer 3\"."},{"name":"layer_names/2d_render/layer_4","type":"String","description":"Optional name for the 2D render layer 4. If left empty, the layer will display as \"Layer 4\"."},{"name":"layer_names/2d_render/layer_5","type":"String","description":"Optional name for the 2D render layer 5. If left empty, the layer will display as \"Layer 5\"."},{"name":"layer_names/2d_render/layer_6","type":"String","description":"Optional name for the 2D render layer 6. If left empty, the layer will display as \"Layer 6\"."},{"name":"layer_names/2d_render/layer_7","type":"String","description":"Optional name for the 2D render layer 7. If left empty, the layer will display as \"Layer 7\"."},{"name":"layer_names/2d_render/layer_8","type":"String","description":"Optional name for the 2D render layer 8. If left empty, the layer will display as \"Layer 8\"."},{"name":"layer_names/2d_render/layer_9","type":"String","description":"Optional name for the 2D render layer 9. If left empty, the layer will display as \"Layer 9\"."},{"name":"layer_names/2d_render/layer_10","type":"String","description":"Optional name for the 2D render layer 10. If left empty, the layer will display as \"Layer 10\"."},{"name":"layer_names/2d_render/layer_11","type":"String","description":"Optional name for the 2D render layer 11. If left empty, the layer will display as \"Layer 11\"."},{"name":"layer_names/2d_render/layer_12","type":"String","description":"Optional name for the 2D render layer 12. If left empty, the layer will display as \"Layer 12\"."},{"name":"layer_names/2d_render/layer_13","type":"String","description":"Optional name for the 2D render layer 13. If left empty, the layer will display as \"Layer 13\"."},{"name":"layer_names/2d_render/layer_14","type":"String","description":"Optional name for the 2D render layer 14. If left empty, the layer will display as \"Layer 14\"."},{"name":"layer_names/2d_render/layer_15","type":"String","description":"Optional name for the 2D render layer 15. If left empty, the layer will display as \"Layer 15\"."},{"name":"layer_names/2d_render/layer_16","type":"String","description":"Optional name for the 2D render layer 16. If left empty, the layer will display as \"Layer 16\"."},{"name":"layer_names/2d_render/layer_17","type":"String","description":"Optional name for the 2D render layer 17. If left empty, the layer will display as \"Layer 17\"."},{"name":"layer_names/2d_render/layer_18","type":"String","description":"Optional name for the 2D render layer 18. If left empty, the layer will display as \"Layer 18\"."},{"name":"layer_names/2d_render/layer_19","type":"String","description":"Optional name for the 2D render layer 19. If left empty, the layer will display as \"Layer 19\"."},{"name":"layer_names/2d_render/layer_20","type":"String","description":"Optional name for the 2D render layer 20. If left empty, the layer will display as \"Layer 20\"."},{"name":"layer_names/3d_navigation/layer_1","type":"String","description":"Optional name for the 3D navigation layer 1. If left empty, the layer will display as \"Layer 1\"."},{"name":"layer_names/3d_navigation/layer_2","type":"String","description":"Optional name for the 3D navigation layer 2. If left empty, the layer will display as \"Layer 2\"."},{"name":"layer_names/3d_navigation/layer_3","type":"String","description":"Optional name for the 3D navigation layer 3. If left empty, the layer will display as \"Layer 3\"."},{"name":"layer_names/3d_navigation/layer_4","type":"String","description":"Optional name for the 3D navigation layer 4. If left empty, the layer will display as \"Layer 4\"."},{"name":"layer_names/3d_navigation/layer_5","type":"String","description":"Optional name for the 3D navigation layer 5. If left empty, the layer will display as \"Layer 5\"."},{"name":"layer_names/3d_navigation/layer_6","type":"String","description":"Optional name for the 3D navigation layer 6. If left empty, the layer will display as \"Layer 6\"."},{"name":"layer_names/3d_navigation/layer_7","type":"String","description":"Optional name for the 3D navigation layer 7. If left empty, the layer will display as \"Layer 7\"."},{"name":"layer_names/3d_navigation/layer_8","type":"String","description":"Optional name for the 3D navigation layer 8. If left empty, the layer will display as \"Layer 8\"."},{"name":"layer_names/3d_navigation/layer_9","type":"String","description":"Optional name for the 3D navigation layer 9. If left empty, the layer will display as \"Layer 9\"."},{"name":"layer_names/3d_navigation/layer_10","type":"String","description":"Optional name for the 3D navigation layer 10. If left empty, the layer will display as \"Layer 10\"."},{"name":"layer_names/3d_navigation/layer_11","type":"String","description":"Optional name for the 3D navigation layer 11. If left empty, the layer will display as \"Layer 11\"."},{"name":"layer_names/3d_navigation/layer_12","type":"String","description":"Optional name for the 3D navigation layer 12. If left empty, the layer will display as \"Layer 12\"."},{"name":"layer_names/3d_navigation/layer_13","type":"String","description":"Optional name for the 3D navigation layer 13. If left empty, the layer will display as \"Layer 13\"."},{"name":"layer_names/3d_navigation/layer_14","type":"String","description":"Optional name for the 3D navigation layer 14. If left empty, the layer will display as \"Layer 14\"."},{"name":"layer_names/3d_navigation/layer_15","type":"String","description":"Optional name for the 3D navigation layer 15. If left empty, the layer will display as \"Layer 15\"."},{"name":"layer_names/3d_navigation/layer_16","type":"String","description":"Optional name for the 3D navigation layer 16. If left empty, the layer will display as \"Layer 16\"."},{"name":"layer_names/3d_navigation/layer_17","type":"String","description":"Optional name for the 3D navigation layer 17. If left empty, the layer will display as \"Layer 17\"."},{"name":"layer_names/3d_navigation/layer_18","type":"String","description":"Optional name for the 3D navigation layer 18. If left empty, the layer will display as \"Layer 18\"."},{"name":"layer_names/3d_navigation/layer_19","type":"String","description":"Optional name for the 3D navigation layer 19. If left empty, the layer will display as \"Layer 19\"."},{"name":"layer_names/3d_navigation/layer_20","type":"String","description":"Optional name for the 3D navigation layer 20. If left empty, the layer will display as \"Layer 20\"."},{"name":"layer_names/3d_navigation/layer_21","type":"String","description":"Optional name for the 3D navigation layer 21. If left empty, the layer will display as \"Layer 21\"."},{"name":"layer_names/3d_navigation/layer_22","type":"String","description":"Optional name for the 3D navigation layer 22. If left empty, the layer will display as \"Layer 22\"."},{"name":"layer_names/3d_navigation/layer_23","type":"String","description":"Optional name for the 3D navigation layer 23. If left empty, the layer will display as \"Layer 23\"."},{"name":"layer_names/3d_navigation/layer_24","type":"String","description":"Optional name for the 3D navigation layer 24. If left empty, the layer will display as \"Layer 24\"."},{"name":"layer_names/3d_navigation/layer_25","type":"String","description":"Optional name for the 3D navigation layer 25. If left empty, the layer will display as \"Layer 25\"."},{"name":"layer_names/3d_navigation/layer_26","type":"String","description":"Optional name for the 3D navigation layer 26. If left empty, the layer will display as \"Layer 26\"."},{"name":"layer_names/3d_navigation/layer_27","type":"String","description":"Optional name for the 3D navigation layer 27. If left empty, the layer will display as \"Layer 27\"."},{"name":"layer_names/3d_navigation/layer_28","type":"String","description":"Optional name for the 3D navigation layer 28. If left empty, the layer will display as \"Layer 28\"."},{"name":"layer_names/3d_navigation/layer_29","type":"String","description":"Optional name for the 3D navigation layer 29. If left empty, the layer will display as \"Layer 29\"."},{"name":"layer_names/3d_navigation/layer_30","type":"String","description":"Optional name for the 3D navigation layer 30. If left empty, the layer will display as \"Layer 30\"."},{"name":"layer_names/3d_navigation/layer_31","type":"String","description":"Optional name for the 3D navigation layer 31. If left empty, the layer will display as \"Layer 31\"."},{"name":"layer_names/3d_navigation/layer_32","type":"String","description":"Optional name for the 3D navigation layer 32. If left empty, the layer will display as \"Layer 32\"."},{"name":"layer_names/3d_physics/layer_1","type":"String","description":"Optional name for the 3D physics layer 1. If left empty, the layer will display as \"Layer 1\"."},{"name":"layer_names/3d_physics/layer_2","type":"String","description":"Optional name for the 3D physics layer 2. If left empty, the layer will display as \"Layer 2\"."},{"name":"layer_names/3d_physics/layer_3","type":"String","description":"Optional name for the 3D physics layer 3. If left empty, the layer will display as \"Layer 3\"."},{"name":"layer_names/3d_physics/layer_4","type":"String","description":"Optional name for the 3D physics layer 4. If left empty, the layer will display as \"Layer 4\"."},{"name":"layer_names/3d_physics/layer_5","type":"String","description":"Optional name for the 3D physics layer 5. If left empty, the layer will display as \"Layer 5\"."},{"name":"layer_names/3d_physics/layer_6","type":"String","description":"Optional name for the 3D physics layer 6. If left empty, the layer will display as \"Layer 6\"."},{"name":"layer_names/3d_physics/layer_7","type":"String","description":"Optional name for the 3D physics layer 7. If left empty, the layer will display as \"Layer 7\"."},{"name":"layer_names/3d_physics/layer_8","type":"String","description":"Optional name for the 3D physics layer 8. If left empty, the layer will display as \"Layer 8\"."},{"name":"layer_names/3d_physics/layer_9","type":"String","description":"Optional name for the 3D physics layer 9. If left empty, the layer will display as \"Layer 9\"."},{"name":"layer_names/3d_physics/layer_10","type":"String","description":"Optional name for the 3D physics layer 10. If left empty, the layer will display as \"Layer 10\"."},{"name":"layer_names/3d_physics/layer_11","type":"String","description":"Optional name for the 3D physics layer 11. If left empty, the layer will display as \"Layer 11\"."},{"name":"layer_names/3d_physics/layer_12","type":"String","description":"Optional name for the 3D physics layer 12. If left empty, the layer will display as \"Layer 12\"."},{"name":"layer_names/3d_physics/layer_13","type":"String","description":"Optional name for the 3D physics layer 13. If left empty, the layer will display as \"Layer 13\"."},{"name":"layer_names/3d_physics/layer_14","type":"String","description":"Optional name for the 3D physics layer 14. If left empty, the layer will display as \"Layer 14\"."},{"name":"layer_names/3d_physics/layer_15","type":"String","description":"Optional name for the 3D physics layer 15. If left empty, the layer will display as \"Layer 15\"."},{"name":"layer_names/3d_physics/layer_16","type":"String","description":"Optional name for the 3D physics layer 16. If left empty, the layer will display as \"Layer 16\"."},{"name":"layer_names/3d_physics/layer_17","type":"String","description":"Optional name for the 3D physics layer 17. If left empty, the layer will display as \"Layer 17\"."},{"name":"layer_names/3d_physics/layer_18","type":"String","description":"Optional name for the 3D physics layer 18. If left empty, the layer will display as \"Layer 18\"."},{"name":"layer_names/3d_physics/layer_19","type":"String","description":"Optional name for the 3D physics layer 19. If left empty, the layer will display as \"Layer 19\"."},{"name":"layer_names/3d_physics/layer_20","type":"String","description":"Optional name for the 3D physics layer 20. If left empty, the layer will display as \"Layer 20\"."},{"name":"layer_names/3d_physics/layer_21","type":"String","description":"Optional name for the 3D physics layer 21. If left empty, the layer will display as \"Layer 21\"."},{"name":"layer_names/3d_physics/layer_22","type":"String","description":"Optional name for the 3D physics layer 22. If left empty, the layer will display as \"Layer 22\"."},{"name":"layer_names/3d_physics/layer_23","type":"String","description":"Optional name for the 3D physics layer 23. If left empty, the layer will display as \"Layer 23\"."},{"name":"layer_names/3d_physics/layer_24","type":"String","description":"Optional name for the 3D physics layer 24. If left empty, the layer will display as \"Layer 24\"."},{"name":"layer_names/3d_physics/layer_25","type":"String","description":"Optional name for the 3D physics layer 25. If left empty, the layer will display as \"Layer 25\"."},{"name":"layer_names/3d_physics/layer_26","type":"String","description":"Optional name for the 3D physics layer 26. If left empty, the layer will display as \"Layer 26\"."},{"name":"layer_names/3d_physics/layer_27","type":"String","description":"Optional name for the 3D physics layer 27. If left empty, the layer will display as \"Layer 27\"."},{"name":"layer_names/3d_physics/layer_28","type":"String","description":"Optional name for the 3D physics layer 28. If left empty, the layer will display as \"Layer 28\"."},{"name":"layer_names/3d_physics/layer_29","type":"String","description":"Optional name for the 3D physics layer 29. If left empty, the layer will display as \"Layer 29\"."},{"name":"layer_names/3d_physics/layer_30","type":"String","description":"Optional name for the 3D physics layer 30. If left empty, the layer will display as \"Layer 30\"."},{"name":"layer_names/3d_physics/layer_31","type":"String","description":"Optional name for the 3D physics layer 31. If left empty, the layer will display as \"Layer 31\"."},{"name":"layer_names/3d_physics/layer_32","type":"String","description":"Optional name for the 3D physics layer 32. If left empty, the layer will display as \"Layer 32\"."},{"name":"layer_names/3d_render/layer_1","type":"String","description":"Optional name for the 3D render layer 1. If left empty, the layer will display as \"Layer 1\"."},{"name":"layer_names/3d_render/layer_2","type":"String","description":"Optional name for the 3D render layer 2. If left empty, the layer will display as \"Layer 2\"."},{"name":"layer_names/3d_render/layer_3","type":"String","description":"Optional name for the 3D render layer 3. If left empty, the layer will display as \"Layer 3\"."},{"name":"layer_names/3d_render/layer_4","type":"String","description":"Optional name for the 3D render layer 4. If left empty, the layer will display as \"Layer 4\"."},{"name":"layer_names/3d_render/layer_5","type":"String","description":"Optional name for the 3D render layer 5. If left empty, the layer will display as \"Layer 5\"."},{"name":"layer_names/3d_render/layer_6","type":"String","description":"Optional name for the 3D render layer 6. If left empty, the layer will display as \"Layer 6\"."},{"name":"layer_names/3d_render/layer_7","type":"String","description":"Optional name for the 3D render layer 7. If left empty, the layer will display as \"Layer 7\"."},{"name":"layer_names/3d_render/layer_8","type":"String","description":"Optional name for the 3D render layer 8. If left empty, the layer will display as \"Layer 8\"."},{"name":"layer_names/3d_render/layer_9","type":"String","description":"Optional name for the 3D render layer 9. If left empty, the layer will display as \"Layer 9\"."},{"name":"layer_names/3d_render/layer_10","type":"String","description":"Optional name for the 3D render layer 10. If left empty, the layer will display as \"Layer 10\"."},{"name":"layer_names/3d_render/layer_11","type":"String","description":"Optional name for the 3D render layer 11. If left empty, the layer will display as \"Layer 11\"."},{"name":"layer_names/3d_render/layer_12","type":"String","description":"Optional name for the 3D render layer 12. If left empty, the layer will display as \"Layer 12\"."},{"name":"layer_names/3d_render/layer_13","type":"String","description":"Optional name for the 3D render layer 13. If left empty, the layer will display as \"Layer 13\"."},{"name":"layer_names/3d_render/layer_14","type":"String","description":"Optional name for the 3D render layer 14. If left empty, the layer will display as \"Layer 14\"."},{"name":"layer_names/3d_render/layer_15","type":"String","description":"Optional name for the 3D render layer 15. If left empty, the layer will display as \"Layer 15\"."},{"name":"layer_names/3d_render/layer_16","type":"String","description":"Optional name for the 3D render layer 16. If left empty, the layer will display as \"Layer 16\"."},{"name":"layer_names/3d_render/layer_17","type":"String","description":"Optional name for the 3D render layer 17. If left empty, the layer will display as \"Layer 17\"."},{"name":"layer_names/3d_render/layer_18","type":"String","description":"Optional name for the 3D render layer 18. If left empty, the layer will display as \"Layer 18\"."},{"name":"layer_names/3d_render/layer_19","type":"String","description":"Optional name for the 3D render layer 19. If left empty, the layer will display as \"Layer 19\"."},{"name":"layer_names/3d_render/layer_20","type":"String","description":"Optional name for the 3D render layer 20. If left empty, the layer will display as \"Layer 20\"."},{"name":"layer_names/avoidance/layer_1","type":"String","description":"Optional name for the navigation avoidance layer 1. If left empty, the layer will display as \"Layer 1\"."},{"name":"layer_names/avoidance/layer_2","type":"String","description":"Optional name for the navigation avoidance layer 2. If left empty, the layer will display as \"Layer 2\"."},{"name":"layer_names/avoidance/layer_3","type":"String","description":"Optional name for the navigation avoidance layer 3. If left empty, the layer will display as \"Layer 3\"."},{"name":"layer_names/avoidance/layer_4","type":"String","description":"Optional name for the navigation avoidance layer 4. If left empty, the layer will display as \"Layer 4\"."},{"name":"layer_names/avoidance/layer_5","type":"String","description":"Optional name for the navigation avoidance layer 5. If left empty, the layer will display as \"Layer 5\"."},{"name":"layer_names/avoidance/layer_6","type":"String","description":"Optional name for the navigation avoidance layer 6. If left empty, the layer will display as \"Layer 6\"."},{"name":"layer_names/avoidance/layer_7","type":"String","description":"Optional name for the navigation avoidance layer 7. If left empty, the layer will display as \"Layer 7\"."},{"name":"layer_names/avoidance/layer_8","type":"String","description":"Optional name for the navigation avoidance layer 8. If left empty, the layer will display as \"Layer 8\"."},{"name":"layer_names/avoidance/layer_9","type":"String","description":"Optional name for the navigation avoidance layer 9. If left empty, the layer will display as \"Layer 9\"."},{"name":"layer_names/avoidance/layer_10","type":"String","description":"Optional name for the navigation avoidance layer 10. If left empty, the layer will display as \"Layer 10\"."},{"name":"layer_names/avoidance/layer_11","type":"String","description":"Optional name for the navigation avoidance layer 11. If left empty, the layer will display as \"Layer 11\"."},{"name":"layer_names/avoidance/layer_12","type":"String","description":"Optional name for the navigation avoidance layer 12. If left empty, the layer will display as \"Layer 12\"."},{"name":"layer_names/avoidance/layer_13","type":"String","description":"Optional name for the navigation avoidance layer 13. If left empty, the layer will display as \"Layer 13\"."},{"name":"layer_names/avoidance/layer_14","type":"String","description":"Optional name for the navigation avoidance layer 14. If left empty, the layer will display as \"Layer 14\"."},{"name":"layer_names/avoidance/layer_15","type":"String","description":"Optional name for the navigation avoidance layer 15. If left empty, the layer will display as \"Layer 15\"."},{"name":"layer_names/avoidance/layer_16","type":"String","description":"Optional name for the navigation avoidance layer 16. If left empty, the layer will display as \"Layer 16\"."},{"name":"layer_names/avoidance/layer_17","type":"String","description":"Optional name for the navigation avoidance layer 17. If left empty, the layer will display as \"Layer 17\"."},{"name":"layer_names/avoidance/layer_18","type":"String","description":"Optional name for the navigation avoidance layer 18. If left empty, the layer will display as \"Layer 18\"."},{"name":"layer_names/avoidance/layer_19","type":"String","description":"Optional name for the navigation avoidance layer 19. If left empty, the layer will display as \"Layer 19\"."},{"name":"layer_names/avoidance/layer_20","type":"String","description":"Optional name for the navigation avoidance layer 20. If left empty, the layer will display as \"Layer 20\"."},{"name":"layer_names/avoidance/layer_21","type":"String","description":"Optional name for the navigation avoidance layer 21. If left empty, the layer will display as \"Layer 21\"."},{"name":"layer_names/avoidance/layer_22","type":"String","description":"Optional name for the navigation avoidance layer 22. If left empty, the layer will display as \"Layer 22\"."},{"name":"layer_names/avoidance/layer_23","type":"String","description":"Optional name for the navigation avoidance layer 23. If left empty, the layer will display as \"Layer 23\"."},{"name":"layer_names/avoidance/layer_24","type":"String","description":"Optional name for the navigation avoidance layer 24. If left empty, the layer will display as \"Layer 24\"."},{"name":"layer_names/avoidance/layer_25","type":"String","description":"Optional name for the navigation avoidance layer 25. If left empty, the layer will display as \"Layer 25\"."},{"name":"layer_names/avoidance/layer_26","type":"String","description":"Optional name for the navigation avoidance layer 26. If left empty, the layer will display as \"Layer 26\"."},{"name":"layer_names/avoidance/layer_27","type":"String","description":"Optional name for the navigation avoidance layer 27. If left empty, the layer will display as \"Layer 27\"."},{"name":"layer_names/avoidance/layer_28","type":"String","description":"Optional name for the navigation avoidance layer 28. If left empty, the layer will display as \"Layer 28\"."},{"name":"layer_names/avoidance/layer_29","type":"String","description":"Optional name for the navigation avoidance layer 29. If left empty, the layer will display as \"Layer 29\"."},{"name":"layer_names/avoidance/layer_30","type":"String","description":"Optional name for the navigation avoidance layer 30. If left empty, the layer will display as \"Layer 30\"."},{"name":"layer_names/avoidance/layer_31","type":"String","description":"Optional name for the navigation avoidance layer 31. If left empty, the layer will display as \"Layer 31\"."},{"name":"layer_names/avoidance/layer_32","type":"String","description":"Optional name for the navigation avoidance layer 32. If left empty, the layer will display as \"Layer 32\"."},{"name":"memory/limits/message_queue/max_size_mb","type":"int","description":"Godot uses a message queue to defer some function calls. If you run out of space on it (you will see an error), you can increase the size here."},{"name":"navigation/2d/default_cell_size","type":"float","description":"Default cell size for 2D navigation maps. See [method NavigationServer2D.map_set_cell_size]."},{"name":"navigation/2d/default_edge_connection_margin","type":"float","description":"Default edge connection margin for 2D navigation maps. See [method NavigationServer2D.map_set_edge_connection_margin]."},{"name":"navigation/2d/default_link_connection_radius","type":"float","description":"Default link connection radius for 2D navigation maps. See [method NavigationServer2D.map_set_link_connection_radius]."},{"name":"navigation/2d/use_edge_connections","type":"bool","description":"If enabled 2D navigation regions will use edge connections to connect with other navigation regions within proximity of the navigation map edge connection margin. This setting only affects World2D default navigation maps."},{"name":"navigation/3d/default_cell_height","type":"float","description":"Default cell height for 3D navigation maps. See [method NavigationServer3D.map_set_cell_height]."},{"name":"navigation/3d/default_cell_size","type":"float","description":"Default cell size for 3D navigation maps. See [method NavigationServer3D.map_set_cell_size]."},{"name":"navigation/3d/default_edge_connection_margin","type":"float","description":"Default edge connection margin for 3D navigation maps. See [method NavigationServer3D.map_set_edge_connection_margin]."},{"name":"navigation/3d/default_link_connection_radius","type":"float","description":"Default link connection radius for 3D navigation maps. See [method NavigationServer3D.map_set_link_connection_radius]."},{"name":"navigation/3d/default_up","type":"Vector3","description":"Default up orientation for 3D navigation maps. See [method NavigationServer3D.map_set_up]."},{"name":"navigation/3d/merge_rasterizer_cell_scale","type":"float","description":"Default merge rasterizer cell scale for 3D navigation maps. See [method NavigationServer3D.map_set_merge_rasterizer_cell_scale]."},{"name":"navigation/3d/use_edge_connections","type":"bool","description":"If enabled 3D navigation regions will use edge connections to connect with other navigation regions within proximity of the navigation map edge connection margin. This setting only affects World3D default navigation maps."},{"name":"navigation/avoidance/thread_model/avoidance_use_high_priority_threads","type":"bool","description":"If enabled and avoidance calculations use multiple threads the threads run with high priority."},{"name":"navigation/avoidance/thread_model/avoidance_use_multiple_threads","type":"bool","description":"If enabled the avoidance calculations use multiple threads."},{"name":"navigation/baking/thread_model/baking_use_high_priority_threads","type":"bool","description":"If enabled and async navmesh baking uses multiple threads the threads run with high priority."},{"name":"navigation/baking/thread_model/baking_use_multiple_threads","type":"bool","description":"If enabled the async navmesh baking uses multiple threads."},{"name":"navigation/baking/use_crash_prevention_checks","type":"bool","description":"If enabled, and baking would potentially lead to an engine crash, the baking will be interrupted and an error message with explanation will be raised."},{"name":"navigation/pathfinding/max_threads","type":"int","description":"Maximum number of threads that can run pathfinding queries simultaneously on the same pathfinding graph, for example the same navigation map. Additional threads increase memory consumption and synchronization time due to the need for extra data copies prepared for each thread. A value of [code]-1[/code] means unlimited and the maximum available OS processor count is used. Defaults to [code]1[/code] when the OS does not support threads."},{"name":"navigation/world/map_use_async_iterations","type":"bool","description":"If enabled, navigation map synchronization uses an async process that runs on a background thread. This avoids stalling the main thread but adds an additional delay to any navigation map change."},{"name":"network/limits/debugger/max_chars_per_second","type":"int","description":"Maximum number of characters allowed to send as output from the debugger. Over this value, content is dropped. This helps not to stall the debugger connection."},{"name":"network/limits/debugger/max_errors_per_second","type":"int","description":"Maximum number of errors allowed to be sent from the debugger. Over this value, content is dropped. This helps not to stall the debugger connection."},{"name":"network/limits/debugger/max_queued_messages","type":"int","description":"Maximum number of messages in the debugger queue. Over this value, content is dropped. This helps to limit the debugger memory usage."},{"name":"network/limits/debugger/max_warnings_per_second","type":"int","description":"Maximum number of warnings allowed to be sent from the debugger. Over this value, content is dropped. This helps not to stall the debugger connection."},{"name":"network/limits/packet_peer_stream/max_buffer_po2","type":"int","description":"Default size of packet peer stream for deserializing Godot data (in bytes, specified as a power of two). The default value [code]16[/code] is equal to 65,536 bytes. Over this size, data is dropped."},{"name":"network/limits/tcp/connect_timeout_seconds","type":"int","description":"Timeout (in seconds) for connection attempts using TCP."},{"name":"network/limits/webrtc/max_channel_in_buffer_kb","type":"int","description":"Maximum size (in kiB) for the [WebRTCDataChannel] input buffer."},{"name":"network/tls/certificate_bundle_override","type":"String","description":"The CA certificates bundle to use for TLS connections. If this is set to a non-empty value, this will [i]override[/i] Godot's default [url=https://github.com/godotengine/godot/blob/master/thirdparty/certs/ca-certificates.crt]Mozilla certificate bundle[/url]. If left empty, the default certificate bundle will be used.\n\t\t\tIf in doubt, leave this setting empty."},{"name":"network/tls/enable_tls_v1.3","type":"bool","description":"If [code]true[/code], enable TLSv1.3 negotiation.\n\t\t\t[b]Note:[/b] Only supported when using Mbed TLS 3.0 or later (Linux distribution packages may be compiled against older system Mbed TLS packages), otherwise the maximum supported TLS version is always TLSv1.2."},{"name":"physics/2d/default_angular_damp","type":"float","description":"The default rotational motion damping in 2D. Damping is used to gradually slow down physical objects over time. RigidBodies will fall back to this value when combining their own damping values and no area damping value is present.\n\t\t\tSuggested values are in the range [code]0[/code] to [code]30[/code]. At value [code]0[/code] objects will keep moving with the same velocity. Greater values will stop the object faster. A value equal to or greater than the physics tick rate ([member physics/common/physics_ticks_per_second]) will bring the object to a stop in one iteration.\n\t\t\t[b]Note:[/b] Godot damping calculations are velocity-dependent, meaning bodies moving faster will take a longer time to come to rest. They do not simulate inertia, friction, or air resistance. Therefore heavier or larger bodies will lose speed at the same proportional rate as lighter or smaller bodies.\n\t\t\tDuring each physics tick, Godot will multiply the linear velocity of RigidBodies by [code]1.0 - combined_damp / physics_ticks_per_second[/code]. By default, bodies combine damp factors: [code]combined_damp[/code] is the sum of the damp value of the body and this value or the area's value the body is in. See [enum RigidBody2D.DampMode].\n\t\t\t[b]Warning:[/b] Godot's damping calculations are simulation tick rate dependent. Changing [member physics/common/physics_ticks_per_second] may significantly change the outcomes and feel of your simulation. This is true for the entire range of damping values greater than 0. To get back to a similar feel, you also need to change your damp values. This needed change is not proportional and differs from case to case."},{"name":"physics/2d/default_gravity","type":"float","description":"The default gravity strength in 2D (in pixels per second squared).\n\t\t\t[b]Note:[/b] This property is only read when the project starts. To change the default gravity at runtime, use the following code sample:\n\t\t\t[codeblocks]\n\t\t\t[gdscript]\n\t\t\t# Set the default gravity strength to 980.\n\t\t\tPhysicsServer2D.area_set_param(get_viewport().find_world_2d().space, PhysicsServer2D.AREA_PARAM_GRAVITY, 980)\n\t\t\t[/gdscript]\n\t\t\t[csharp]\n\t\t\t// Set the default gravity strength to 980.\n\t\t\tPhysicsServer2D.AreaSetParam(GetViewport().FindWorld2D().Space, PhysicsServer2D.AreaParameter.Gravity, 980);\n\t\t\t[/csharp]\n\t\t\t[/codeblocks]"},{"name":"physics/2d/default_gravity_vector","type":"Vector2","description":"The default gravity direction in 2D.\n\t\t\t[b]Note:[/b] This property is only read when the project starts. To change the default gravity vector at runtime, use the following code sample:\n\t\t\t[codeblocks]\n\t\t\t[gdscript]\n\t\t\t# Set the default gravity direction to `Vector2(0, 1)`.\n\t\t\tPhysicsServer2D.area_set_param(get_viewport().find_world_2d().space, PhysicsServer2D.AREA_PARAM_GRAVITY_VECTOR, Vector2.DOWN)\n\t\t\t[/gdscript]\n\t\t\t[csharp]\n\t\t\t// Set the default gravity direction to `Vector2(0, 1)`.\n\t\t\tPhysicsServer2D.AreaSetParam(GetViewport().FindWorld2D().Space, PhysicsServer2D.AreaParameter.GravityVector, Vector2.Down)\n\t\t\t[/csharp]\n\t\t\t[/codeblocks]"},{"name":"physics/2d/default_linear_damp","type":"float","description":"The default linear motion damping in 2D. Damping is used to gradually slow down physical objects over time. RigidBodies will fall back to this value when combining their own damping values and no area damping value is present.\n\t\t\tSuggested values are in the range [code]0[/code] to [code]30[/code]. At value [code]0[/code] objects will keep moving with the same velocity. Greater values will stop the object faster. A value equal to or greater than the physics tick rate ([member physics/common/physics_ticks_per_second]) will bring the object to a stop in one iteration.\n\t\t\t[b]Note:[/b] Godot damping calculations are velocity-dependent, meaning bodies moving faster will take a longer time to come to rest. They do not simulate inertia, friction, or air resistance. Therefore heavier or larger bodies will lose speed at the same proportional rate as lighter or smaller bodies.\n\t\t\tDuring each physics tick, Godot will multiply the linear velocity of RigidBodies by [code]1.0 - combined_damp / physics_ticks_per_second[/code], where [code]combined_damp[/code] is the sum of the linear damp of the body and this value, or the area's value the body is in, assuming the body defaults to combine damp values. See [enum RigidBody2D.DampMode].\n\t\t\t[b]Warning:[/b] Godot's damping calculations are simulation tick rate dependent. Changing [member physics/common/physics_ticks_per_second] may significantly change the outcomes and feel of your simulation. This is true for the entire range of damping values greater than 0. To get back to a similar feel, you also need to change your damp values. This needed change is not proportional and differs from case to case."},{"name":"physics/2d/physics_engine","type":"String","description":"Sets which physics engine to use for 2D physics.\n\t\t\t[b]DEFAULT[/b] is currently equivalent to [b]GodotPhysics2D[/b], but may change in future releases. Select an explicit implementation if you want to ensure that your project stays on the same engine.\n\t\t\t[b]GodotPhysics2D[/b] is Godot's internal 2D physics engine.\n\t\t\t[b]Dummy[/b] is a 2D physics server that does nothing and returns only dummy values, effectively disabling all 2D physics functionality.\n\t\t\tThird-party extensions and modules can add other physics engines to select with this setting."},{"name":"physics/2d/run_on_separate_thread","type":"bool","description":"If [code]true[/code], the 2D physics server runs on a separate thread, making better use of multi-core CPUs. If [code]false[/code], the 2D physics server runs on the main thread. Running the physics server on a separate thread can increase performance, but restricts API access to only physics process."},{"name":"physics/2d/sleep_threshold_angular","type":"float","description":"Threshold angular velocity under which a 2D physics body will be considered inactive. See [constant PhysicsServer2D.SPACE_PARAM_BODY_ANGULAR_VELOCITY_SLEEP_THRESHOLD]."},{"name":"physics/2d/sleep_threshold_linear","type":"float","description":"Threshold linear velocity under which a 2D physics body will be considered inactive. See [constant PhysicsServer2D.SPACE_PARAM_BODY_LINEAR_VELOCITY_SLEEP_THRESHOLD]."},{"name":"physics/2d/solver/contact_max_allowed_penetration","type":"float","description":"Maximum distance a shape can penetrate another shape before it is considered a collision. See [constant PhysicsServer2D.SPACE_PARAM_CONTACT_MAX_ALLOWED_PENETRATION]."},{"name":"physics/2d/solver/contact_max_separation","type":"float","description":"Maximum distance a shape can be from another before they are considered separated and the contact is discarded. See [constant PhysicsServer2D.SPACE_PARAM_CONTACT_MAX_SEPARATION]."},{"name":"physics/2d/solver/contact_recycle_radius","type":"float","description":"Maximum distance a pair of bodies has to move before their collision status has to be recalculated. See [constant PhysicsServer2D.SPACE_PARAM_CONTACT_RECYCLE_RADIUS]."},{"name":"physics/2d/solver/default_constraint_bias","type":"float","description":"Default solver bias for all physics constraints. Defines how much bodies react to enforce constraints. See [constant PhysicsServer2D.SPACE_PARAM_CONSTRAINT_DEFAULT_BIAS].\n\t\t\tIndividual constraints can have a specific bias value (see [member Joint2D.bias])."},{"name":"physics/2d/solver/default_contact_bias","type":"float","description":"Default solver bias for all physics contacts. Defines how much bodies react to enforce contact separation. See [constant PhysicsServer2D.SPACE_PARAM_CONTACT_DEFAULT_BIAS].\n\t\t\tIndividual shapes can have a specific bias value (see [member Shape2D.custom_solver_bias])."},{"name":"physics/2d/solver/solver_iterations","type":"int","description":"Number of solver iterations for all contacts and constraints. The greater the number of iterations, the more accurate the collisions will be. However, a greater number of iterations requires more CPU power, which can decrease performance. See [constant PhysicsServer2D.SPACE_PARAM_SOLVER_ITERATIONS]."},{"name":"physics/2d/time_before_sleep","type":"float","description":"Time (in seconds) of inactivity before which a 2D physics body will put to sleep. See [constant PhysicsServer2D.SPACE_PARAM_BODY_TIME_TO_SLEEP]."},{"name":"physics/3d/default_angular_damp","type":"float","description":"The default rotational motion damping in 3D. Damping is used to gradually slow down physical objects over time. RigidBodies will fall back to this value when combining their own damping values and no area damping value is present.\n\t\t\tSuggested values are in the range [code]0[/code] to [code]30[/code]. At value [code]0[/code] objects will keep moving with the same velocity. Greater values will stop the object faster. A value equal to or greater than the physics tick rate ([member physics/common/physics_ticks_per_second]) will bring the object to a stop in one iteration.\n\t\t\t[b]Note:[/b] Godot damping calculations are velocity-dependent, meaning bodies moving faster will take a longer time to come to rest. They do not simulate inertia, friction, or air resistance. Therefore heavier or larger bodies will lose speed at the same proportional rate as lighter or smaller bodies.\n\t\t\tDuring each physics tick, Godot will multiply the angular velocity of RigidBodies by [code]1.0 - combined_damp / physics_ticks_per_second[/code]. By default, bodies combine damp factors: [code]combined_damp[/code] is the sum of the damp value of the body and this value or the area's value the body is in. See [enum RigidBody3D.DampMode].\n\t\t\t[b]Warning:[/b] Godot's damping calculations are simulation tick rate dependent. Changing [member physics/common/physics_ticks_per_second] may significantly change the outcomes and feel of your simulation. This is true for the entire range of damping values greater than 0. To get back to a similar feel, you also need to change your damp values. This needed change is not proportional and differs from case to case."},{"name":"physics/3d/default_gravity","type":"float","description":"The default gravity strength in 3D (in meters per second squared).\n\t\t\t[b]Note:[/b] This property is only read when the project starts. To change the default gravity at runtime, use the following code sample:\n\t\t\t[codeblocks]\n\t\t\t[gdscript]\n\t\t\t# Set the default gravity strength to 9.8.\n\t\t\tPhysicsServer3D.area_set_param(get_viewport().find_world_3d().space, PhysicsServer3D.AREA_PARAM_GRAVITY, 9.8)\n\t\t\t[/gdscript]\n\t\t\t[csharp]\n\t\t\t// Set the default gravity strength to 9.8.\n\t\t\tPhysicsServer3D.AreaSetParam(GetViewport().FindWorld3D().Space, PhysicsServer3D.AreaParameter.Gravity, 9.8);\n\t\t\t[/csharp]\n\t\t\t[/codeblocks]"},{"name":"physics/3d/default_gravity_vector","type":"Vector3","description":"The default gravity direction in 3D.\n\t\t\t[b]Note:[/b] This property is only read when the project starts. To change the default gravity vector at runtime, use the following code sample:\n\t\t\t[codeblocks]\n\t\t\t[gdscript]\n\t\t\t# Set the default gravity direction to `Vector3(0, -1, 0)`.\n\t\t\tPhysicsServer3D.area_set_param(get_viewport().find_world_3d().space, PhysicsServer3D.AREA_PARAM_GRAVITY_VECTOR, Vector3.DOWN)\n\t\t\t[/gdscript]\n\t\t\t[csharp]\n\t\t\t// Set the default gravity direction to `Vector3(0, -1, 0)`.\n\t\t\tPhysicsServer3D.AreaSetParam(GetViewport().FindWorld3D().Space, PhysicsServer3D.AreaParameter.GravityVector, Vector3.Down)\n\t\t\t[/csharp]\n\t\t\t[/codeblocks]"},{"name":"physics/3d/default_linear_damp","type":"float","description":"The default linear motion damping in 3D. Damping is used to gradually slow down physical objects over time. RigidBodies will fall back to this value when combining their own damping values and no area damping value is present.\n\t\t\tSuggested values are in the range [code]0[/code] to [code]30[/code]. At value [code]0[/code] objects will keep moving with the same velocity. Greater values will stop the object faster. A value equal to or greater than the physics tick rate ([member physics/common/physics_ticks_per_second]) will bring the object to a stop in one iteration.\n\t\t\t[b]Note:[/b] Godot damping calculations are velocity-dependent, meaning bodies moving faster will take a longer time to come to rest. They do not simulate inertia, friction, or air resistance. Therefore heavier or larger bodies will lose speed at the same proportional rate as lighter or smaller bodies.\n\t\t\tDuring each physics tick, Godot will multiply the linear velocity of RigidBodies by [code]1.0 - combined_damp / physics_ticks_per_second[/code]. By default, bodies combine damp factors: [code]combined_damp[/code] is the sum of the damp value of the body and this value or the area's value the body is in. See [enum RigidBody3D.DampMode].\n\t\t\t[b]Warning:[/b] Godot's damping calculations are simulation tick rate dependent. Changing [member physics/common/physics_ticks_per_second] may significantly change the outcomes and feel of your simulation. This is true for the entire range of damping values greater than 0. To get back to a similar feel, you also need to change your damp values. This needed change is not proportional and differs from case to case."},{"name":"physics/3d/physics_engine","type":"String","description":"Sets which physics engine to use for 3D physics.\n\t\t\t[b]DEFAULT[/b] is currently equivalent to [b]GodotPhysics3D[/b], but may change in future releases. Select an explicit implementation if you want to ensure that your project stays on the same engine.\n\t\t\t[b]GodotPhysics3D[/b] is Godot's internal 3D physics engine.\n\t\t\t[b]Jolt Physics[/b] is an alternative physics engine that is generally faster and more reliable than [b]GodotPhysics3D[/b]. As it was recently implemented, it is currently considered experimental and its behavior may change in future releases.\n\t\t\t[b]Dummy[/b] is a 3D physics server that does nothing and returns only dummy values, effectively disabling all 3D physics functionality.\n\t\t\tThird-party extensions and modules can add other physics engines to select with this setting."},{"name":"physics/3d/run_on_separate_thread","type":"bool","description":"If [code]true[/code], the 3D physics server runs on a separate thread, making better use of multi-core CPUs. If [code]false[/code], the 3D physics server runs on the main thread. Running the physics server on a separate thread can increase performance, but restricts API access to only physics process.\n\t\t\t[b]Note:[/b] When [member physics/3d/physics_engine] is set to [code]Jolt Physics[/code], enabling this setting will prevent the 3D physics server from being able to provide any context when reporting errors and warnings, and will instead always refer to nodes as [code]&lt;unknown&gt;[/code]."},{"name":"physics/3d/sleep_threshold_angular","type":"float","description":"Threshold angular velocity under which a 3D physics body will be considered inactive. See [constant PhysicsServer3D.SPACE_PARAM_BODY_ANGULAR_VELOCITY_SLEEP_THRESHOLD]."},{"name":"physics/3d/sleep_threshold_linear","type":"float","description":"Threshold linear velocity under which a 3D physics body will be considered inactive. See [constant PhysicsServer3D.SPACE_PARAM_BODY_LINEAR_VELOCITY_SLEEP_THRESHOLD]."},{"name":"physics/3d/solver/contact_max_allowed_penetration","type":"float","description":"Maximum distance a shape can penetrate another shape before it is considered a collision. See [constant PhysicsServer3D.SPACE_PARAM_CONTACT_MAX_ALLOWED_PENETRATION]."},{"name":"physics/3d/solver/contact_max_separation","type":"float","description":"Maximum distance a shape can be from another before they are considered separated and the contact is discarded. See [constant PhysicsServer3D.SPACE_PARAM_CONTACT_MAX_SEPARATION]."},{"name":"physics/3d/solver/contact_recycle_radius","type":"float","description":"Maximum distance a pair of bodies has to move before their collision status has to be recalculated. See [constant PhysicsServer3D.SPACE_PARAM_CONTACT_RECYCLE_RADIUS]."},{"name":"physics/3d/solver/default_contact_bias","type":"float","description":"Default solver bias for all physics contacts. Defines how much bodies react to enforce contact separation. See [constant PhysicsServer3D.SPACE_PARAM_CONTACT_DEFAULT_BIAS].\n\t\t\tIndividual shapes can have a specific bias value (see [member Shape3D.custom_solver_bias])."},{"name":"physics/3d/solver/solver_iterations","type":"int","description":"Number of solver iterations for all contacts and constraints. The greater the number of iterations, the more accurate the collisions will be. However, a greater number of iterations requires more CPU power, which can decrease performance. See [constant PhysicsServer3D.SPACE_PARAM_SOLVER_ITERATIONS]."},{"name":"physics/3d/time_before_sleep","type":"float","description":"Time (in seconds) of inactivity before which a 3D physics body will put to sleep. See [constant PhysicsServer3D.SPACE_PARAM_BODY_TIME_TO_SLEEP]."},{"name":"physics/common/enable_object_picking","type":"bool","description":"Enables [member Viewport.physics_object_picking] on the root viewport."},{"name":"physics/common/max_physics_steps_per_frame","type":"int","description":"Controls the maximum number of physics steps that can be simulated each rendered frame. The default value is tuned to avoid \"spiral of death\" situations where expensive physics simulations trigger more expensive simulations indefinitely. However, the game will appear to slow down if the rendering FPS is less than [code]1 / max_physics_steps_per_frame[/code] of [member physics/common/physics_ticks_per_second]. This occurs even if [code]delta[/code] is consistently used in physics calculations. To avoid this, increase [member physics/common/max_physics_steps_per_frame] if you have increased [member physics/common/physics_ticks_per_second] significantly above its default value.\n\t\t\t[b]Note:[/b] This property is only read when the project starts. To change the maximum number of simulated physics steps per frame at runtime, set [member Engine.max_physics_steps_per_frame] instead."},{"name":"physics/common/physics_interpolation","type":"bool","description":"If [code]true[/code], the renderer will interpolate the transforms of physics objects between the last two transforms, so that smooth motion is seen even when physics ticks do not coincide with rendered frames. See also [member Node.physics_interpolation_mode] and [method Node.reset_physics_interpolation].\n\t\t\t[b]Note:[/b] If [code]true[/code], the physics jitter fix should be disabled by setting [member physics/common/physics_jitter_fix] to [code]0.0[/code].\n\t\t\t[b]Note:[/b] This property is only read when the project starts. To toggle physics interpolation at runtime, set [member SceneTree.physics_interpolation] instead."},{"name":"physics/common/physics_jitter_fix","type":"float","description":"Controls how much physics ticks are synchronized with real time. For 0 or less, the ticks are synchronized. Such values are recommended for network games, where clock synchronization matters. Higher values cause higher deviation of in-game clock and real clock, but allows smoothing out framerate jitters. The default value of 0.5 should be good enough for most; values above 2 could cause the game to react to dropped frames with a noticeable delay and are not recommended.\n\t\t\t[b]Note:[/b] Jitter fix is automatically disabled at runtime when [member physics/common/physics_interpolation] is enabled.\n\t\t\t[b]Note:[/b] When using a custom physics interpolation solution, the physics jitter fix should be disabled by setting [member physics/common/physics_jitter_fix] to [code]0.0[/code].\n\t\t\t[b]Note:[/b] This property is only read when the project starts. To change the physics jitter fix at runtime, set [member Engine.physics_jitter_fix] instead."},{"name":"physics/common/physics_ticks_per_second","type":"int","description":"The number of fixed iterations per second. This controls how often physics simulation and [method Node._physics_process] methods are run. See also [member application/run/max_fps].\n\t\t\t[b]Note:[/b] This property is only read when the project starts. To change the physics FPS at runtime, set [member Engine.physics_ticks_per_second] instead.\n\t\t\t[b]Note:[/b] Only [member physics/common/max_physics_steps_per_frame] physics ticks may be simulated per rendered frame at most. If more physics ticks have to be simulated per rendered frame to keep up with rendering, the project will appear to slow down (even if [code]delta[/code] is used consistently in physics calculations). Therefore, it is recommended to also increase [member physics/common/max_physics_steps_per_frame] if increasing [member physics/common/physics_ticks_per_second] significantly above its default value."},{"name":"physics/jolt_physics_3d/collisions/active_edge_threshold","type":"float","description":"The maximum angle, in radians, between two adjacent triangles in a [ConcavePolygonShape3D] or [HeightMapShape3D] for which the edge between those triangles is considered inactive.\n\t\t\tCollisions against an inactive edge will have its normal overridden to instead be the surface normal of the triangle. This can help alleviate ghost collisions.\n\t\t\t[b]Note:[/b] Setting this too high can result in objects not depenetrating properly.\n\t\t\t[b]Note:[/b] This applies to all shape queries, as well as physics bodies within the simulation.\n\t\t\t[b]Note:[/b] This does not apply when enabling Jolt's enhanced internal edge removal, which supersedes this.\n\t\t\t[b]Note:[/b] This setting will only be read once during the lifetime of the application."},{"name":"physics/jolt_physics_3d/collisions/collision_margin_fraction","type":"float","description":"The amount of collision margin to use for certain convex collision shapes, such as [BoxShape3D], [CylinderShape3D] and [ConvexPolygonShape3D], as a fraction of the shape's shortest axis, with [member Shape3D.margin] as the upper bound. This is mainly used to speed up collision detection with convex shapes.\n\t\t\t[b]Note:[/b] Collision margins in Jolt do not add any extra size to the shape. Instead the shape is first shrunk by the margin and then expanded by the same amount, resulting in a shape with rounded corners.\n\t\t\t[b]Note:[/b] Setting this value too close to [code]0.0[/code] may also negatively affect the accuracy of the collision detection with convex shapes.\n\t\t\t[b]Note:[/b] This setting will only be read once during the lifetime of the application."},{"name":"physics/jolt_physics_3d/joints/world_node","type":"int","description":"Which of the two nodes bound by a joint should represent the world when one of the two is omitted, as either [member Joint3D.node_a] or [member Joint3D.node_b]. This can be thought of as having the omitted node be a [StaticBody3D] at the joint's position. Joint limits are more easily expressed when [member Joint3D.node_a] represents the world.\n\t\t\t[b]Note:[/b] In Godot Physics, only [member Joint3D.node_b] can represent the world."},{"name":"physics/jolt_physics_3d/limits/max_angular_velocity","type":"float","description":"The maximum angular velocity that a [RigidBody3D] can reach, in radians per second.\n\t\t\tThis is mainly used as a fail-safe, to prevent the simulation from exploding, as fast-moving objects colliding with complex physics structures can otherwise cause them to go out of control. Fast-moving objects can also cause a lot of stress on the collision detection system, which can slow down the simulation considerably."},{"name":"physics/jolt_physics_3d/limits/max_bodies","type":"int","description":"The maximum number of [PhysicsBody3D] to support at the same time, awake or sleeping. When this limit is exceeded, an error is reported and anything past that point is undefined behavior.\n\t\t\t[b]Note:[/b] This limit also applies within the editor."},{"name":"physics/jolt_physics_3d/limits/max_body_pairs","type":"int","description":"The maximum number of body pairs to allow processing of. When this limit is exceeded, a warning is reported and collisions will randomly be ignored while bodies pass through each other."},{"name":"physics/jolt_physics_3d/limits/max_contact_constraints","type":"int","description":"The maximum number of contact constraints to allow processing of. When this limit is exceeded, a warning is reported and collisions will randomly be ignored while bodies pass through each other."},{"name":"physics/jolt_physics_3d/limits/max_linear_velocity","type":"float","description":"The maximum linear velocity that a [RigidBody3D] can reach, in meters per second.\n\t\t\tThis is mainly used as a fail-safe, to prevent the simulation from exploding, as fast-moving objects colliding with complex physics structures can otherwise cause them to go out of control. Fast-moving objects can also cause a lot of stress on the collision detection system, which can slow down the simulation considerably."},{"name":"physics/jolt_physics_3d/limits/temporary_memory_buffer_size","type":"int","description":"The amount of memory to pre-allocate for the stack allocator used within Jolt, in MiB. This allocator is used within the physics step to store things that are only needed during it, like which bodies are in contact, how they form islands and the data needed to solve the contacts."},{"name":"physics/jolt_physics_3d/limits/world_boundary_shape_size","type":"float","description":"The size of [WorldBoundaryShape3D] boundaries, for all three dimensions. The plane is effectively centered within a box of this size, and anything outside of the box will not collide with it. This is necessary as [WorldBoundaryShape3D] is not unbounded when using Jolt, in order to prevent precision issues.\n\t\t\t[b]Note:[/b] Setting this value too high can make collision detection less accurate.\n\t\t\t[b]Note:[/b] Collisions against the effective edges of a [WorldBoundaryShape3D] will be inconsistent."},{"name":"physics/jolt_physics_3d/motion_queries/recovery_amount","type":"float","description":"Fraction of the total penetration to depenetrate per iteration during motion queries.\n\t\t\t[b]Note:[/b] This affects methods [method CharacterBody3D.move_and_slide], [method PhysicsBody3D.move_and_collide], [method PhysicsBody3D.test_move] and [method PhysicsServer3D.body_test_motion].\n\t\t\t[b]Note:[/b] This setting will only be read once during the lifetime of the application."},{"name":"physics/jolt_physics_3d/motion_queries/recovery_iterations","type":"int","description":"The number of iterations to run when depenetrating during motion queries.\n\t\t\t[b]Note:[/b] This affects methods [method CharacterBody3D.move_and_slide], [method PhysicsBody3D.move_and_collide], [method PhysicsBody3D.test_move] and [method PhysicsServer3D.body_test_motion].\n\t\t\t[b]Note:[/b] This setting will only be read once during the lifetime of the application."},{"name":"physics/jolt_physics_3d/motion_queries/use_enhanced_internal_edge_removal","type":"bool","description":"If [code]true[/code], enables Jolt's enhanced internal edge removal during motion queries. This can help alleviate ghost collisions, but only with edges within a single body, meaning edges between separate bodies can still cause ghost collisions.\n\t\t\t[b]Note:[/b] This affects methods [method CharacterBody3D.move_and_slide], [method PhysicsBody3D.move_and_collide], [method PhysicsBody3D.test_move] and [method PhysicsServer3D.body_test_motion].\n\t\t\t[b]Note:[/b] This setting will only be read once during the lifetime of the application."},{"name":"physics/jolt_physics_3d/queries/enable_ray_cast_face_index","type":"bool","description":"If [code]true[/code], populates the [code]face_index[/code] field in the results of [method PhysicsDirectSpaceState3D.intersect_ray], also accessed through [method RayCast3D.get_collision_face_index]. If [code]false[/code], the [code]face_index[/code] field will be left at its default value of [code]-1[/code].\n\t\t\t[b]Note:[/b] Enabling this setting will increase Jolt's memory usage for [ConcavePolygonShape3D] by around 25%.\n\t\t\t[b]Note:[/b] This setting will only be read once during the lifetime of the application."},{"name":"physics/jolt_physics_3d/queries/use_enhanced_internal_edge_removal","type":"bool","description":"If [code]true[/code], enables Jolt's enhanced internal edge removal during shape queries. This can help alleviate ghost collisions when using shape queries for things like character movement, but only with edges within a single body, meaning edges between separate bodies can still cause ghost collisions.\n\t\t\t[b]Note:[/b] This affects methods [method PhysicsDirectSpaceState3D.cast_motion], [method PhysicsDirectSpaceState3D.collide_shape], [method PhysicsDirectSpaceState3D.get_rest_info] and [method PhysicsDirectSpaceState3D.intersect_shape].\n\t\t\t[b]Note:[/b] Enabling this setting can cause certain shapes to be culled from the results entirely, but you will get at least one intersection per body.\n\t\t\t[b]Note:[/b] This setting will only be read once during the lifetime of the application."},{"name":"physics/jolt_physics_3d/simulation/allow_sleep","type":"bool","description":"If [code]true[/code], [RigidBody3D] nodes are allowed to go to sleep if their velocity is below the threshold defined in [member physics/jolt_physics_3d/simulation/sleep_velocity_threshold] for the duration set in [member physics/jolt_physics_3d/simulation/sleep_time_threshold]. This can improve physics simulation performance when there are non-moving [RigidBody3D] nodes, at the cost of some nodes possibly failing to wake up in certain scenarios. Consider disabling this temporarily to troubleshoot [RigidBody3D] nodes not moving when they should."},{"name":"physics/jolt_physics_3d/simulation/areas_detect_static_bodies","type":"bool","description":"If [code]true[/code], [Area3D] nodes are able to detect overlaps with [StaticBody3D] nodes.\n\t\t\t[b]Note:[/b] Enabling this setting can come at a heavy CPU and memory cost if you allow many/large [Area3D] to overlap with complex static geometry, such as [ConcavePolygonShape3D] or [HeightMapShape3D]. It is strongly recommended that you set up your collision layers and masks in such a way that only a few small [Area3D] nodes can detect [StaticBody3D] nodes.\n\t\t\t[b]Note:[/b] This also applies to overlaps with a [RigidBody3D] frozen with [constant RigidBody3D.FREEZE_MODE_STATIC].\n\t\t\t[b]Note:[/b] This is not needed to detect overlaps with [AnimatableBody3D], as it is a kinematic body, despite inheriting from [StaticBody3D]."},{"name":"physics/jolt_physics_3d/simulation/baumgarte_stabilization_factor","type":"float","description":"How much of the position error of a [RigidBody3D] to fix during a physics step, where [code]0.0[/code] is none and [code]1.0[/code] is the full amount. This affects things like how quickly bodies depenetrate.\n\t\t\t[b]Note:[/b] Setting this value too high can make [RigidBody3D] nodes unstable."},{"name":"physics/jolt_physics_3d/simulation/body_pair_contact_cache_angle_threshold","type":"float","description":"The maximum relative angle by which a body pair can move and still reuse the collision results from the previous physics step, in radians."},{"name":"physics/jolt_physics_3d/simulation/body_pair_contact_cache_distance_threshold","type":"float","description":"The maximum relative distance by which a body pair can move and still reuse the collision results from the previous physics step, in meters."},{"name":"physics/jolt_physics_3d/simulation/body_pair_contact_cache_enabled","type":"bool","description":"If [code]true[/code], enables the body pair contact cache, which removes the need for potentially expensive collision detection when the relative orientation between two bodies hasn't changed much."},{"name":"physics/jolt_physics_3d/simulation/bounce_velocity_threshold","type":"float","description":"The minimum velocity needed before a collision can be bouncy, in meters per second.\n\t\t\t[b]Note:[/b] This setting will only be read once during the lifetime of the application."},{"name":"physics/jolt_physics_3d/simulation/continuous_cd_max_penetration","type":"float","description":"Fraction of a body's inner radius that may penetrate another body while using continuous collision detection."},{"name":"physics/jolt_physics_3d/simulation/continuous_cd_movement_threshold","type":"float","description":"Fraction of a body's inner radius that the body must move per step to make use of continuous collision detection."},{"name":"physics/jolt_physics_3d/simulation/generate_all_kinematic_contacts","type":"bool","description":"If [code]true[/code], a [RigidBody3D] frozen with [constant RigidBody3D.FREEZE_MODE_KINEMATIC] is able to collide with other kinematic and static bodies, and therefore generate contacts for them.\n\t\t\t[b]Note:[/b] This setting can come at a heavy CPU and memory cost if you allow many/large frozen kinematic bodies with a non-zero [member RigidBody3D.max_contacts_reported] to overlap with complex static geometry, such as [ConcavePolygonShape3D] or [HeightMapShape3D]."},{"name":"physics/jolt_physics_3d/simulation/penetration_slop","type":"float","description":"How much bodies are allowed to penetrate each other, in meters."},{"name":"physics/jolt_physics_3d/simulation/position_steps","type":"int","description":"Number of solver position iterations. The greater the number of iterations, the more accurate the simulation will be, at the cost of CPU performance."},{"name":"physics/jolt_physics_3d/simulation/sleep_time_threshold","type":"float","description":"Time in seconds a [RigidBody3D] will spend below the sleep velocity threshold before going to sleep."},{"name":"physics/jolt_physics_3d/simulation/sleep_velocity_threshold","type":"float","description":"The linear velocity of specific points on the bounding box of a [RigidBody3D], below which it can be put to sleep, in meters per second. These points help capture both the linear and angular motion of a [RigidBody3D]."},{"name":"physics/jolt_physics_3d/simulation/soft_body_point_radius","type":"float","description":"How big the points of a [SoftBody3D] are, in meters. A higher value can prevent behavior such as cloth laying perfectly flush against other surfaces and causing Z-fighting."},{"name":"physics/jolt_physics_3d/simulation/speculative_contact_distance","type":"float","description":"Radius around physics bodies, inside which speculative contact points will be detected, in meters. This is mainly used to prevent tunneling/penetration for [RigidBody3D] nodes during simulation.\n\t\t\t[b]Note:[/b] Setting this too high may result in ghost collisions, as speculative contacts are based on the closest points during the collision detection step which may not be the actual closest points by the time the two bodies hit."},{"name":"physics/jolt_physics_3d/simulation/use_enhanced_internal_edge_removal","type":"bool","description":"If [code]true[/code], enables Jolt's enhanced internal edge removal for [RigidBody3D]. This can help alleviate ghost collisions when, for example, a [RigidBody3D] collides with the edges of two perfectly joined [BoxShape3D]. The removal only applies to edges internal to a single body, meaning edges between separate bodies can still cause ghost collisions."},{"name":"physics/jolt_physics_3d/simulation/velocity_steps","type":"int","description":"Number of solver velocity iterations. The greater the number of iterations, the more accurate the simulation will be, at the cost of CPU performance.\n\t\t\t[b]Note:[/b] This needs to be at least [code]2[/code] in order for friction to work, as friction is applied using the non-penetration impulse from the previous iteration."},{"name":"rendering/2d/batching/item_buffer_size","type":"int","description":"Maximum number of canvas item commands that can be batched into a single draw call."},{"name":"rendering/2d/batching/uniform_set_cache_size","type":"int","description":"Maximum number of uniform sets that will be cached by the 2D renderer when batching draw calls.\n\t\t\t[b]Note:[/b] A project that uses a large number of unique sprite textures per frame may benefit from increasing this value."},{"name":"rendering/2d/sdf/oversize","type":"int","description":"Controls how much of the original viewport size should be covered by the 2D signed distance field. This SDF can be sampled in [CanvasItem] shaders and is used for [GPUParticles2D] collision. Higher values allow portions of occluders located outside the viewport to still be taken into account in the generated signed distance field, at the cost of performance. If you notice particles falling through [LightOccluder2D]s as the occluders leave the viewport, increase this setting.\n\t\t\tThe percentage specified is added on each axis and on both sides. For example, with the default setting of 120%, the signed distance field will cover 20% of the viewport's size outside the viewport on each side (top, right, bottom, left).\n\t\t\t[b]Note:[/b] This property is only read when the project starts. To change the 2D SDF oversizing percentage at runtime, use [method RenderingServer.viewport_set_sdf_oversize_and_scale] instead."},{"name":"rendering/2d/sdf/scale","type":"int","description":"The resolution scale to use for the 2D signed distance field. Higher values lead to a more precise and more stable signed distance field as the camera moves, at the cost of performance. The default value (50%) renders at half the resolution of the viewport size on each axis, which means the SDF is generated with 25% of the viewport's pixel count.\n\t\t\t[b]Note:[/b] This property is only read when the project starts. To change the 2D SDF resolution scale at runtime, use [method RenderingServer.viewport_set_sdf_oversize_and_scale] instead."},{"name":"rendering/2d/shadow_atlas/size","type":"int","description":"The size of the 2D shadow atlas in pixels. Higher values result in more precise [Light2D] shadows, at the cost of performance and video memory usage. The specified value is rounded up to the nearest power of 2.\n\t\t\t[b]Note:[/b] This property is only read when the project starts. To change the 2D shadow atlas size at runtime, use [method RenderingServer.canvas_set_shadow_texture_size] instead."},{"name":"rendering/2d/snap/snap_2d_transforms_to_pixel","type":"bool","description":"If [code]true[/code], [CanvasItem] nodes will internally snap to full pixels. Useful for low-resolution pixel art games. Their position can still be sub-pixel, but the decimals will not have effect as the position is rounded. This can lead to a crisper appearance at the cost of less smooth movement, especially when [Camera2D] smoothing is enabled.\n\t\t\t[b]Note:[/b] This property is only read when the project starts. To toggle 2D transform snapping at runtime, use [method RenderingServer.viewport_set_snap_2d_transforms_to_pixel] on the root [Viewport] instead.\n\t\t\t[b]Note:[/b] [Control] nodes are snapped to the nearest pixel by default. This is controlled by [member gui/common/snap_controls_to_pixels].\n\t\t\t[b]Note:[/b] It is not recommended to use this setting together with [member rendering/2d/snap/snap_2d_vertices_to_pixel], as movement may appear even less smooth. Prefer only enabling this setting instead."},{"name":"rendering/2d/snap/snap_2d_vertices_to_pixel","type":"bool","description":"If [code]true[/code], vertices of [CanvasItem] nodes will snap to full pixels. Useful for low-resolution pixel art games. Only affects the final vertex positions, not the transforms. This can lead to a crisper appearance at the cost of less smooth movement, especially when [Camera2D] smoothing is enabled.\n\t\t\t[b]Note:[/b] This property is only read when the project starts. To toggle 2D vertex snapping at runtime, use [method RenderingServer.viewport_set_snap_2d_vertices_to_pixel] on the root [Viewport] instead.\n\t\t\t[b]Note:[/b] [Control] nodes are snapped to the nearest pixel by default. This is controlled by [member gui/common/snap_controls_to_pixels].\n\t\t\t[b]Note:[/b] It is not recommended to use this setting together with [member rendering/2d/snap/snap_2d_transforms_to_pixel], as movement may appear even less smooth. Prefer only enabling that setting instead."},{"name":"rendering/anti_aliasing/quality/msaa_2d","type":"int","description":"Sets the number of multisample antialiasing (MSAA) samples to use for 2D/Canvas rendering (as a power of two). MSAA is used to reduce aliasing around the edges of polygons. A higher MSAA value results in smoother edges but can be significantly slower on some hardware, especially integrated graphics due to their limited memory bandwidth. This has no effect on shader-induced aliasing or texture aliasing.\n\t\t\t[b]Note:[/b] MSAA is only supported in the Forward+ and Mobile rendering methods, not Compatibility.\n\t\t\t[b]Note:[/b] This property is only read when the project starts. To set the number of 2D MSAA samples at runtime, set [member Viewport.msaa_2d] or use [method RenderingServer.viewport_set_msaa_2d]."},{"name":"rendering/anti_aliasing/quality/msaa_3d","type":"int","description":"Sets the number of multisample antialiasing (MSAA) samples to use for 3D rendering (as a power of two). MSAA is used to reduce aliasing around the edges of polygons. A higher MSAA value results in smoother edges but can be significantly slower on some hardware, especially integrated graphics due to their limited memory bandwidth. See also [member rendering/scaling_3d/mode] for supersampling, which provides higher quality but is much more expensive. This has no effect on shader-induced aliasing or texture aliasing.\n\t\t\t[b]Note:[/b] This property is only read when the project starts. To set the number of 3D MSAA samples at runtime, set [member Viewport.msaa_3d] or use [method RenderingServer.viewport_set_msaa_3d]."},{"name":"rendering/anti_aliasing/quality/screen_space_aa","type":"int","description":"Sets the screen-space antialiasing mode for the default screen [Viewport]. Screen-space antialiasing works by selectively blurring edges in a post-process shader. It differs from MSAA which takes multiple coverage samples while rendering objects. Screen-space AA methods are typically faster than MSAA and will smooth out specular aliasing, but tend to make scenes appear blurry. The blurriness is partially counteracted by automatically using a negative mipmap LOD bias (see [member rendering/textures/default_filters/texture_mipmap_bias]).\n\t\t\tAnother way to combat specular aliasing is to enable [member rendering/anti_aliasing/screen_space_roughness_limiter/enabled].\n\t\t\t[b]Note:[/b] Screen-space antialiasing is only supported in the Forward+ and Mobile rendering methods, not Compatibility.\n\t\t\t[b]Note:[/b] This property is only read when the project starts. To set the screen-space antialiasing mode at runtime, set [member Viewport.screen_space_aa] on the root [Viewport] instead, or use [method RenderingServer.viewport_set_screen_space_aa]."},{"name":"rendering/anti_aliasing/quality/use_debanding","type":"bool","description":"If [code]true[/code], uses a fast post-processing filter to make banding significantly less visible in 3D. 2D rendering is [i]not[/i] affected by debanding unless the [member Environment.background_mode] is [constant Environment.BG_CANVAS].\n\t\t\tIn some cases, debanding may introduce a slightly noticeable dithering pattern. It's recommended to enable debanding only when actually needed since the dithering pattern will make lossless-compressed screenshots larger.\n\t\t\t[b]Note:[/b] This property is only read when the project starts. To set debanding at runtime, set [member Viewport.use_debanding] on the root [Viewport] instead, or use [method RenderingServer.viewport_set_use_debanding]."},{"name":"rendering/anti_aliasing/quality/use_taa","type":"bool","description":"Enables temporal antialiasing for the default screen [Viewport]. TAA works by jittering the camera and accumulating the images of the last rendered frames, motion vector rendering is used to account for camera and object motion. Enabling TAA can make the image blurrier, which is partially counteracted by automatically using a negative mipmap LOD bias (see [member rendering/textures/default_filters/texture_mipmap_bias]).\n\t\t\t[b]Note:[/b] The implementation is not complete yet. Some visual instances such as particles and skinned meshes may show ghosting artifacts in motion.\n\t\t\t[b]Note:[/b] TAA is only supported in the Forward+ rendering method, not Mobile or Compatibility.\n\t\t\t[b]Note:[/b] This property is only read when the project starts. To set TAA at runtime, set [member Viewport.use_taa] on the root [Viewport] instead, or use [method RenderingServer.viewport_set_use_taa]."},{"name":"rendering/anti_aliasing/screen_space_roughness_limiter/amount","type":"float","description":"[b]Note:[/b] This property is only read when the project starts. To control the screen-space roughness limiter at runtime, call [method RenderingServer.screen_space_roughness_limiter_set_active] instead."},{"name":"rendering/anti_aliasing/screen_space_roughness_limiter/enabled","type":"bool","description":"If [code]true[/code], enables a spatial filter to limit roughness in areas with high-frequency detail. This can help reduce specular aliasing to an extent, though not as much as enabling [member rendering/anti_aliasing/quality/use_taa]. This filter has a small performance cost, so consider disabling it if it doesn't benefit your scene noticeably.\n\t\t\t[b]Note:[/b] The screen-space roughness limiter is only supported in the Forward+ and Mobile rendering methods, not Compatibility.\n\t\t\t[b]Note:[/b] This property is only read when the project starts. To control the screen-space roughness limiter at runtime, call [method RenderingServer.screen_space_roughness_limiter_set_active] instead."},{"name":"rendering/anti_aliasing/screen_space_roughness_limiter/limit","type":"float","description":"[b]Note:[/b] This property is only read when the project starts. To control the screen-space roughness limiter at runtime, call [method RenderingServer.screen_space_roughness_limiter_set_active] instead."},{"name":"rendering/camera/depth_of_field/depth_of_field_bokeh_quality","type":"int","description":"Sets the quality of the depth of field effect. Higher quality takes more samples, which is slower but looks smoother."},{"name":"rendering/camera/depth_of_field/depth_of_field_bokeh_shape","type":"int","description":"Sets the depth of field shape. Can be Box, Hexagon, or Circle. Box is the fastest. Circle is the most realistic, but also the most expensive to compute."},{"name":"rendering/camera/depth_of_field/depth_of_field_use_jitter","type":"bool","description":"If [code]true[/code], jitters DOF samples to make effect slightly blurrier and hide lines created from low sample rates. This can result in a slightly grainy appearance when used with a low number of samples."},{"name":"rendering/driver/depth_prepass/disable_for_vendors","type":"String","description":"Disables [member rendering/driver/depth_prepass/enable] conditionally for certain vendors. By default, disables the depth prepass for mobile devices as mobile devices do not benefit from the depth prepass due to their unique architecture."},{"name":"rendering/driver/depth_prepass/enable","type":"bool","description":"If [code]true[/code], performs a previous depth pass before rendering 3D materials. This increases performance significantly in scenes with high overdraw, when complex materials and lighting are used. However, in scenes with few occluded surfaces, the depth prepass may reduce performance. If your game is viewed from a fixed angle that makes it easy to avoid overdraw (such as top-down or side-scrolling perspective), consider disabling the depth prepass to improve performance. This setting can be changed at run-time to optimize performance depending on the scene currently being viewed.\n\t\t\t[b]Note:[/b] Depth prepass is only supported when using the Forward+ or Compatibility rendering method. When using the Mobile rendering method, there is no depth prepass performed."},{"name":"rendering/driver/threads/thread_model","type":"int","description":"The thread model to use for rendering. Rendering on a thread may improve performance, but synchronizing to the main thread can cause a bit more jitter."},{"name":"rendering/environment/defaults/default_clear_color","type":"Color","description":"Default background clear color. Overridable per [Viewport] using its [Environment]. See [member Environment.background_mode] and [member Environment.background_color] in particular. To change this default color programmatically, use [method RenderingServer.set_default_clear_color]."},{"name":"rendering/environment/defaults/default_environment","type":"String","description":"[Environment] that will be used as a fallback environment in case a scene does not specify its own environment. The default environment is loaded in at scene load time regardless of whether you have set an environment or not. If you do not rely on the fallback environment, you do not need to set this property."},{"name":"rendering/environment/glow/upscale_mode","type":"int","description":"Sets how the glow effect is upscaled before being copied onto the screen. Linear is faster, but looks blocky. Bicubic is slower but looks smooth."},{"name":"rendering/environment/glow/upscale_mode.mobile","type":"int","description":"Lower-end override for [member rendering/environment/glow/upscale_mode] on mobile devices, due to performance concerns or driver support."},{"name":"rendering/environment/screen_space_reflection/roughness_quality","type":"int","description":"Sets the quality for rough screen-space reflections. Turning off will make all screen space reflections sharp, while higher values make rough reflections look better."},{"name":"rendering/environment/ssao/adaptive_target","type":"float","description":"Quality target to use when [member rendering/environment/ssao/quality] is set to [code]Ultra[/code]. A value of [code]0.0[/code] provides a quality and speed similar to [code]Medium[/code] while a value of [code]1.0[/code] provides much higher quality than any of the other settings at the cost of performance."},{"name":"rendering/environment/ssao/blur_passes","type":"int","description":"Number of blur passes to use when computing screen-space ambient occlusion. A higher number will result in a smoother look, but will be slower to compute and will have less high-frequency detail."},{"name":"rendering/environment/ssao/fadeout_from","type":"float","description":"Distance at which the screen-space ambient occlusion effect starts to fade out. Use this hide ambient occlusion from far away."},{"name":"rendering/environment/ssao/fadeout_to","type":"float","description":"Distance at which the screen-space ambient occlusion is fully faded out. Use this hide ambient occlusion from far away."},{"name":"rendering/environment/ssao/half_size","type":"bool","description":"If [code]true[/code], screen-space ambient occlusion will be rendered at half size and then upscaled before being added to the scene. This is significantly faster but may miss small details. If [code]false[/code], screen-space ambient occlusion will be rendered at full size."},{"name":"rendering/environment/ssao/quality","type":"int","description":"Sets the quality of the screen-space ambient occlusion effect. Higher values take more samples and so will result in better quality, at the cost of performance. Setting to [code]Ultra[/code] will use the [member rendering/environment/ssao/adaptive_target] setting."},{"name":"rendering/environment/ssil/adaptive_target","type":"float","description":"Quality target to use when [member rendering/environment/ssil/quality] is set to [code]Ultra[/code]. A value of [code]0.0[/code] provides a quality and speed similar to [code]Medium[/code] while a value of [code]1.0[/code] provides much higher quality than any of the other settings at the cost of performance. When using the adaptive target, the performance cost scales with the complexity of the scene."},{"name":"rendering/environment/ssil/blur_passes","type":"int","description":"Number of blur passes to use when computing screen-space indirect lighting. A higher number will result in a smoother look, but will be slower to compute and will have less high-frequency detail."},{"name":"rendering/environment/ssil/fadeout_from","type":"float","description":"Distance at which the screen-space indirect lighting effect starts to fade out. Use this to hide screen-space indirect lighting from far away."},{"name":"rendering/environment/ssil/fadeout_to","type":"float","description":"Distance at which the screen-space indirect lighting is fully faded out. Use this to hide screen-space indirect lighting from far away."},{"name":"rendering/environment/ssil/half_size","type":"bool","description":"If [code]true[/code], screen-space indirect lighting will be rendered at half size and then upscaled before being added to the scene. This is significantly faster but may miss small details and may result in some objects appearing to glow at their edges."},{"name":"rendering/environment/ssil/quality","type":"int","description":"Sets the quality of the screen-space indirect lighting effect. Higher values take more samples and so will result in better quality, at the cost of performance. Setting to [code]Ultra[/code] will use the [member rendering/environment/ssil/adaptive_target] setting."},{"name":"rendering/environment/subsurface_scattering/subsurface_scattering_depth_scale","type":"float","description":"Scales the depth over which the subsurface scattering effect is applied. A high value may allow light to scatter into a part of the mesh or another mesh that is close in screen space but far in depth. See also [member rendering/environment/subsurface_scattering/subsurface_scattering_scale].\n\t\t\t[b]Note:[/b] This property is only read when the project starts. To set the subsurface scattering depth scale at runtime, call [method RenderingServer.sub_surface_scattering_set_scale] instead."},{"name":"rendering/environment/subsurface_scattering/subsurface_scattering_quality","type":"int","description":"Sets the quality of the subsurface scattering effect. Higher values are slower but look nicer. This affects the rendering of materials that have [member BaseMaterial3D.subsurf_scatter_enabled] set to [code]true[/code], along with [ShaderMaterial]s that set [code]SSS_STRENGTH[/code].\n\t\t\t[b]Note:[/b] This property is only read when the project starts. To set the subsurface scattering quality at runtime, call [method RenderingServer.sub_surface_scattering_set_quality] instead."},{"name":"rendering/environment/subsurface_scattering/subsurface_scattering_scale","type":"float","description":"Scales the distance over which samples are taken for subsurface scattering effect. Changing this does not impact performance, but higher values will result in significant artifacts as the samples will become obviously spread out. A lower value results in a smaller spread of scattered light. See also [member rendering/environment/subsurface_scattering/subsurface_scattering_depth_scale].\n\t\t\t[b]Note:[/b] This property is only read when the project starts. To set the subsurface scattering scale at runtime, call [method RenderingServer.sub_surface_scattering_set_scale] instead."},{"name":"rendering/environment/volumetric_fog/use_filter","type":"int","description":"Enables filtering of the volumetric fog effect prior to integration. This substantially blurs the fog which reduces fine details but also smooths out harsh edges and aliasing artifacts. Disable when more detail is required."},{"name":"rendering/environment/volumetric_fog/volume_depth","type":"int","description":"Number of slices to use along the depth of the froxel buffer for volumetric fog. A lower number will be more efficient but may result in artifacts appearing during camera movement. See also [member Environment.volumetric_fog_length]."},{"name":"rendering/environment/volumetric_fog/volume_size","type":"int","description":"Base size used to determine size of froxel buffer in the camera X-axis and Y-axis. The final size is scaled by the aspect ratio of the screen, so actual values may differ from what is set. Set a larger size for more detailed fog, set a smaller size for better performance."},{"name":"rendering/gl_compatibility/driver","type":"String","description":"Sets the driver to be used by the renderer when using the Compatibility renderer. Editing this property has no effect in the default configuration, as first-party platforms each have platform-specific overrides. Use those overrides to configure the driver for each platform.\n\t\t\tThis can be overridden using the [code]--rendering-driver &lt;driver&gt;[/code] command line argument.\n\t\t\tSupported values are:\n\t\t\t- [code]opengl3[/code], OpenGL 3.3 on desktop platforms, OpenGL ES 3.0 on mobile platforms, WebGL 2.0 on web.\n\t\t\t- [code]opengl3_angle[/code], OpenGL ES 3.0 using the ANGLE compatibility layer, supported on macOS (over native OpenGL) and Windows (over Direct3D 11).\n\t\t\t- [code]opengl3_es[/code], OpenGL ES 3.0 on Linux/BSD.\n\t\t\t[b]Note:[/b] The availability of these options depends on whether the engine was compiled with support for them (determined by SCons options [code]opengl3[/code] and [code]angle_libs[/code]).\n\t\t\t[b]Note:[/b] The actual rendering driver may be automatically changed by the engine as a result of a fallback, or a user-specified command line argument. To get the actual rendering driver that is used at runtime, use [method RenderingServer.get_current_rendering_driver_name] instead of reading this project setting's value."},{"name":"rendering/gl_compatibility/driver.android","type":"String","description":"Android override for [member rendering/gl_compatibility/driver].\n\t\t\tOnly one option is supported:\n\t\t\t- [code]opengl3[/code], OpenGL ES 3.0 from native drivers."},{"name":"rendering/gl_compatibility/driver.ios","type":"String","description":"iOS override for [member rendering/gl_compatibility/driver].\n\t\t\tOnly one option is supported:\n\t\t\t- [code]opengl3[/code], OpenGL ES 3.0 from native drivers."},{"name":"rendering/gl_compatibility/driver.linuxbsd","type":"String","description":"LinuxBSD override for [member rendering/gl_compatibility/driver].\n\t\t\tTwo options are supported:\n\t\t\t- [code]opengl3[/code] (default), OpenGL 3.3 from native drivers.\n\t\t\t- [code]opengl3_es[/code], OpenGL ES 3.0 from native drivers. If [member rendering/gl_compatibility/fallback_to_gles] is enabled, this is used as a fallback if OpenGL 3.3 is not supported."},{"name":"rendering/gl_compatibility/driver.macos","type":"String","description":"macOS override for [member rendering/gl_compatibility/driver].\n\t\t\tTwo options are supported:\n\t\t\t- [code]opengl3[/code] (default), OpenGL 3.3 from native drivers. If [member rendering/gl_compatibility/fallback_to_native] is enabled, this is used as a fallback if ANGLE is configured as the preferred driver but not supported.\n\t\t\t- [code]opengl3_angle[/code], OpenGL ES 3.0 using the ANGLE compatibility layer over native OpenGL drivers. If [member rendering/gl_compatibility/fallback_to_angle] is enabled, this is used as a fallback if OpenGL 3.3 is not supported."},{"name":"rendering/gl_compatibility/driver.web","type":"String","description":"Web override for [member rendering/gl_compatibility/driver].\n\t\t\tOnly one option is supported:\n\t\t\t- [code]opengl3[/code], WebGL 2.0. The underlying native API depends on the target OS, browser, and browser configuration."},{"name":"rendering/gl_compatibility/driver.windows","type":"String","description":"Windows override for [member rendering/gl_compatibility/driver].\n\t\t\tTwo options are supported:\n\t\t\t- [code]opengl3[/code] (default), OpenGL 3.3 from native drivers. If [member rendering/gl_compatibility/fallback_to_native] is enabled, this is used as a fallback if ANGLE is configured as the preferred driver but not supported.\n\t\t\t- [code]opengl3_angle[/code], OpenGL ES 3.0 using the ANGLE compatibility layer over native Direct3D 11 drivers. If [member rendering/gl_compatibility/fallback_to_angle] is enabled, this is used as a fallback if OpenGL 3.3 is not supported. By default, ANGLE is used as the default driver for some devices listed in [member rendering/gl_compatibility/force_angle_on_devices]."},{"name":"rendering/gl_compatibility/fallback_to_angle","type":"bool","description":"If [code]true[/code], the compatibility renderer will fall back to ANGLE if native OpenGL is not supported or the device is listed in [member rendering/gl_compatibility/force_angle_on_devices].\n\t\t\t[b]Note:[/b] This setting is implemented only on Windows."},{"name":"rendering/gl_compatibility/fallback_to_gles","type":"bool","description":"If [code]true[/code], the compatibility renderer will fall back to OpenGLES if desktop OpenGL is not supported.\n\t\t\t[b]Note:[/b] This setting is implemented only on Linux/X11."},{"name":"rendering/gl_compatibility/fallback_to_native","type":"bool","description":"If [code]true[/code], the compatibility renderer will fall back to native OpenGL if ANGLE is not supported, or ANGLE dynamic libraries aren't found.\n\t\t\t[b]Note:[/b] This setting is implemented on macOS and Windows."},{"name":"rendering/gl_compatibility/force_angle_on_devices","type":"Array","description":"An [Array] of devices which should always use the ANGLE renderer.\n\t\t\tEach entry is a [Dictionary] with the following keys: [code]vendor[/code] and [code]name[/code]. [code]name[/code] can be set to [code]*[/code] to add all devices with the specified [code]vendor[/code].\n\t\t\t[b]Note:[/b] This setting is implemented only on Windows."},{"name":"rendering/gl_compatibility/item_buffer_size","type":"int","description":"Maximum number of canvas items commands that can be drawn in a single viewport update. If more render commands are issued they will be ignored. Decreasing this limit may improve performance on bandwidth limited devices. Increase this limit if you find that not all objects are being drawn in a frame."},{"name":"rendering/gl_compatibility/nvidia_disable_threaded_optimization","type":"bool","description":"If [code]true[/code], disables the threaded optimization feature from the NVIDIA drivers, which are known to cause stuttering in most OpenGL applications.\n\t\t\t[b]Note:[/b] This setting only works on Windows, as threaded optimization is disabled by default on other platforms."},{"name":"rendering/global_illumination/gi/use_half_resolution","type":"bool","description":"If [code]true[/code], renders [VoxelGI] and SDFGI ([member Environment.sdfgi_enabled]) buffers at halved resolution (e.g. 960×540 when the viewport size is 1920×1080). This improves performance significantly when VoxelGI or SDFGI is enabled, at the cost of artifacts that may be visible on polygon edges. The loss in quality becomes less noticeable as the viewport resolution increases. [LightmapGI] rendering is not affected by this setting.\n\t\t\t[b]Note:[/b] This property is only read when the project starts. To set half-resolution GI at run-time, call [method RenderingServer.gi_set_use_half_resolution] instead."},{"name":"rendering/global_illumination/sdfgi/frames_to_converge","type":"int","description":"The number of frames to use for converging signed distance field global illumination. Higher values lead to a less noisy result, at the cost of taking a longer time to fully converge. This means the scene's global illumination will be too dark for a longer period of time, especially when the camera moves fast. The actual convergence speed depends on rendered framerate. For example, with the default setting of 30 frames, rendering at 60 FPS will make SDFGI fully converge after 0.5 seconds. See also [member rendering/global_illumination/sdfgi/frames_to_update_lights] and [member rendering/global_illumination/sdfgi/probe_ray_count].\n\t\t\t[b]Note:[/b] This property is only read when the project starts. To control SDFGI convergence speed at runtime, call [method RenderingServer.environment_set_sdfgi_frames_to_converge] instead."},{"name":"rendering/global_illumination/sdfgi/frames_to_update_lights","type":"int","description":"The number of frames over which dynamic lights should be updated in signed distance field global illumination. Higher values take more time to update indirect lighting coming from dynamic lights, but result in better performance when many dynamic lights are present. See also [member rendering/global_illumination/sdfgi/frames_to_converge] and [member rendering/global_illumination/sdfgi/probe_ray_count].\n\t\t\t[b]Note:[/b] This only affects [Light3D] nodes whose [member Light3D.light_bake_mode] is [constant Light3D.BAKE_DYNAMIC] (which is the default). Consider making non-moving lights use the [constant Light3D.BAKE_STATIC] bake mode to improve performance.\n\t\t\t[b]Note:[/b] This property is only read when the project starts. To control SDFGI light update speed at runtime, call [method RenderingServer.environment_set_sdfgi_frames_to_update_light] instead."},{"name":"rendering/global_illumination/sdfgi/probe_ray_count","type":"int","description":"The number of rays to throw per frame when computing signed distance field global illumination. Higher values lead to a less noisy result, at the cost of performance. See also [member rendering/global_illumination/sdfgi/frames_to_converge] and [member rendering/global_illumination/sdfgi/frames_to_update_lights].\n\t\t\t[b]Note:[/b] This property is only read when the project starts. To control SDFGI quality at runtime, call [method RenderingServer.environment_set_sdfgi_ray_count] instead."},{"name":"rendering/global_illumination/voxel_gi/quality","type":"int","description":"The VoxelGI quality to use. High quality leads to more precise lighting and better reflections, but is slower to render. This setting does not affect the baked data and doesn't require baking the [VoxelGI] again to apply.\n\t\t\t[b]Note:[/b] This property is only read when the project starts. To control VoxelGI quality at runtime, call [method RenderingServer.voxel_gi_set_quality] instead."},{"name":"rendering/lightmapping/bake_performance/max_rays_per_pass","type":"int","description":"The maximum number of rays that can be thrown per pass when baking lightmaps with [LightmapGI]. Depending on the scene, adjusting this value may result in higher GPU utilization when baking lightmaps, leading to faster bake times.\n\t\t\t[b]Note:[/b] Using a value that is too high for your system can cause crashes due to the GPU being unresponsive for long periods of time, and the graphics driver being reset by the OS."},{"name":"rendering/lightmapping/bake_performance/max_rays_per_probe_pass","type":"int","description":"The maximum number of rays that can be thrown per pass when baking dynamic object lighting in [LightmapProbe]s with [LightmapGI]. Depending on the scene, adjusting this value may result in higher GPU utilization when baking lightmaps, leading to faster bake times.\n\t\t\t[b]Note:[/b] Using a value that is too high for your system can cause crashes due to the GPU being unresponsive for long periods of time, and the graphics driver being reset by the OS."},{"name":"rendering/lightmapping/bake_performance/max_transparency_rays","type":"int","description":"The maximum number of retry rays that can be thrown per pass when hitting a transparent surface when baking lightmaps with [LightmapGI]. Depending on the scene, reducing this value may lead to faster bake times.\n\t\t\t[b]Note:[/b] Using a value that is too high for your system can cause crashes due to the GPU being unresponsive for long periods of time, and the graphics driver being reset by the OS."},{"name":"rendering/lightmapping/bake_performance/region_size","type":"int","description":"The region size to use when baking lightmaps with [LightmapGI]. The specified value is rounded up to the nearest power of 2.\n\t\t\t[b]Note:[/b] Using a value that is too high for your system can cause crashes due to the GPU being unresponsive for long periods of time, and the graphics driver being reset by the OS."},{"name":"rendering/lightmapping/bake_quality/high_quality_probe_ray_count","type":"int","description":"The number of rays to use for baking dynamic object lighting in [LightmapProbe]s when [member LightmapGI.quality] is [constant LightmapGI.BAKE_QUALITY_HIGH]."},{"name":"rendering/lightmapping/bake_quality/high_quality_ray_count","type":"int","description":"The number of rays to use for baking lightmaps with [LightmapGI] when [member LightmapGI.quality] is [constant LightmapGI.BAKE_QUALITY_HIGH]."},{"name":"rendering/lightmapping/bake_quality/low_quality_probe_ray_count","type":"int","description":"The number of rays to use for baking dynamic object lighting in [LightmapProbe]s when [member LightmapGI.quality] is [constant LightmapGI.BAKE_QUALITY_LOW]."},{"name":"rendering/lightmapping/bake_quality/low_quality_ray_count","type":"int","description":"The number of rays to use for baking lightmaps with [LightmapGI] when [member LightmapGI.quality] is [constant LightmapGI.BAKE_QUALITY_LOW]."},{"name":"rendering/lightmapping/bake_quality/medium_quality_probe_ray_count","type":"int","description":"The number of rays to use for baking dynamic object lighting in [LightmapProbe]s when [member LightmapGI.quality] is [constant LightmapGI.BAKE_QUALITY_MEDIUM]."},{"name":"rendering/lightmapping/bake_quality/medium_quality_ray_count","type":"int","description":"The number of rays to use for baking lightmaps with [LightmapGI] when [member LightmapGI.quality] is [constant LightmapGI.BAKE_QUALITY_MEDIUM]."},{"name":"rendering/lightmapping/bake_quality/ultra_quality_probe_ray_count","type":"int","description":"The number of rays to use for baking dynamic object lighting in [LightmapProbe]s when [member LightmapGI.quality] is [constant LightmapGI.BAKE_QUALITY_ULTRA]."},{"name":"rendering/lightmapping/bake_quality/ultra_quality_ray_count","type":"int","description":"The number of rays to use for baking lightmaps with [LightmapGI] when [member LightmapGI.quality] is [constant LightmapGI.BAKE_QUALITY_ULTRA]."},{"name":"rendering/lightmapping/denoising/denoiser","type":"int","description":"Denoiser tool used for denoising lightmaps.\n\t\t\tUsing [url=https://www.openimagedenoise.org/]OpenImageDenoise[/url] (OIDN) requires configuring a path to an OIDN executable in the editor settings at [member EditorSettings.filesystem/tools/oidn/oidn_denoise_path]. OIDN can be downloaded from [url=https://www.openimagedenoise.org/downloads.html]OpenImageDenoise's downloads page[/url].\n\t\t\tOIDN will use GPU acceleration when available. Unlike JNLM which uses compute shaders for acceleration, OIDN uses vendor-specific acceleration methods. For GPU acceleration to be available, the following libraries must be installed on the system depending on your GPU:\n\t\t\t- NVIDIA GPUs: CUDA libraries\n\t\t\t- AMD GPUs: HIP libraries\n\t\t\t- Intel GPUs: SYCL libraries\n\t\t\tIf no GPU acceleration is configured on the system, multi-threaded CPU-based denoising will be performed instead. This CPU-based denoising is significantly slower than the JNLM denoiser in most cases."},{"name":"rendering/lightmapping/lightmap_gi/use_bicubic_filter","type":"bool","description":"If [code]true[/code], applies a bicubic filter during lightmap sampling. This makes lightmaps look much smoother, at a moderate performance cost.\n\t\t\t[b]Note:[/b] The bicubic filter exaggerates the 'bleeding' effect that occurs when a lightmap's resolution is low enough."},{"name":"rendering/lightmapping/primitive_meshes/texel_size","type":"float","description":"The texel_size that is used to calculate the [member Mesh.lightmap_size_hint] on [PrimitiveMesh] resources if [member PrimitiveMesh.add_uv2] is enabled."},{"name":"rendering/lightmapping/probe_capture/update_speed","type":"float","description":"The framerate-independent update speed when representing dynamic object lighting from [LightmapProbe]s. Higher values make dynamic object lighting update faster. Higher values can prevent fast-moving objects from having \"outdated\" indirect lighting displayed on them, at the cost of possible flickering when an object moves from a bright area to a shaded area."},{"name":"rendering/lights_and_shadows/directional_shadow/16_bits","type":"bool","description":"Use 16 bits for the directional shadow depth map. Enabling this results in shadows having less precision and may result in shadow acne, but can lead to performance improvements on some devices."},{"name":"rendering/lights_and_shadows/directional_shadow/size","type":"int","description":"The directional shadow's size in pixels. Higher values will result in sharper shadows, at the cost of performance. The value is rounded up to the nearest power of 2."},{"name":"rendering/lights_and_shadows/directional_shadow/size.mobile","type":"int","description":"Lower-end override for [member rendering/lights_and_shadows/directional_shadow/size] on mobile devices, due to performance concerns or driver support."},{"name":"rendering/lights_and_shadows/directional_shadow/soft_shadow_filter_quality","type":"int","description":"Quality setting for shadows cast by [DirectionalLight3D]s. Higher quality settings use more samples when reading from shadow maps and are thus slower. Low quality settings may result in shadows looking grainy.\n\t\t\t[b]Note:[/b] The Soft Very Low setting will automatically multiply [i]constant[/i] shadow blur by 0.75x to reduce the amount of noise visible. This automatic blur change only affects the constant blur factor defined in [member Light3D.shadow_blur], not the variable blur performed by [DirectionalLight3D]s' [member Light3D.light_angular_distance].\n\t\t\t[b]Note:[/b] The Soft High and Soft Ultra settings will automatically multiply [i]constant[/i] shadow blur by 1.5× and 2× respectively to make better use of the increased sample count. This increased blur also improves stability of dynamic object shadows."},{"name":"rendering/lights_and_shadows/directional_shadow/soft_shadow_filter_quality.mobile","type":"int","description":"Lower-end override for [member rendering/lights_and_shadows/directional_shadow/soft_shadow_filter_quality] on mobile devices, due to performance concerns or driver support."},{"name":"rendering/lights_and_shadows/positional_shadow/atlas_16_bits","type":"bool","description":"Use 16 bits for the omni/spot shadow depth map. Enabling this results in shadows having less precision and may result in shadow acne, but can lead to performance improvements on some devices."},{"name":"rendering/lights_and_shadows/positional_shadow/atlas_quadrant_0_subdiv","type":"int","description":"Subdivision quadrant size for shadow mapping. See shadow mapping documentation."},{"name":"rendering/lights_and_shadows/positional_shadow/atlas_quadrant_1_subdiv","type":"int","description":"Subdivision quadrant size for shadow mapping. See shadow mapping documentation."},{"name":"rendering/lights_and_shadows/positional_shadow/atlas_quadrant_2_subdiv","type":"int","description":"Subdivision quadrant size for shadow mapping. See shadow mapping documentation."},{"name":"rendering/lights_and_shadows/positional_shadow/atlas_quadrant_3_subdiv","type":"int","description":"Subdivision quadrant size for shadow mapping. See shadow mapping documentation."},{"name":"rendering/lights_and_shadows/positional_shadow/atlas_size","type":"int","description":"Size for shadow atlas (used for OmniLights and SpotLights). See documentation."},{"name":"rendering/lights_and_shadows/positional_shadow/atlas_size.mobile","type":"int","description":"Lower-end override for [member rendering/lights_and_shadows/positional_shadow/atlas_size] on mobile devices, due to performance concerns or driver support."},{"name":"rendering/lights_and_shadows/positional_shadow/soft_shadow_filter_quality","type":"int","description":"Quality setting for shadows cast by [OmniLight3D]s and [SpotLight3D]s. Higher quality settings use more samples when reading from shadow maps and are thus slower. Low quality settings may result in shadows looking grainy.\n\t\t\t[b]Note:[/b] The Soft Very Low setting will automatically multiply [i]constant[/i] shadow blur by 0.75x to reduce the amount of noise visible. This automatic blur change only affects the constant blur factor defined in [member Light3D.shadow_blur], not the variable blur performed by [DirectionalLight3D]s' [member Light3D.light_angular_distance].\n\t\t\t[b]Note:[/b] The Soft High and Soft Ultra settings will automatically multiply shadow blur by 1.5× and 2× respectively to make better use of the increased sample count. This increased blur also improves stability of dynamic object shadows."},{"name":"rendering/lights_and_shadows/positional_shadow/soft_shadow_filter_quality.mobile","type":"int","description":"Lower-end override for [member rendering/lights_and_shadows/positional_shadow/soft_shadow_filter_quality] on mobile devices, due to performance concerns or driver support."},{"name":"rendering/lights_and_shadows/tighter_shadow_caster_culling","type":"bool","description":"If [code]true[/code], items that cannot cast shadows into the view frustum will not be rendered into shadow maps.\n\t\t\tThis can increase performance."},{"name":"rendering/lights_and_shadows/use_physical_light_units","type":"bool","description":"Enables the use of physically based units for light sources. Physically based units tend to be much larger than the arbitrary units used by Godot, but they can be used to match lighting within Godot to real-world lighting. Due to the large dynamic range of lighting conditions present in nature, Godot bakes exposure into the various lighting quantities before rendering. Most light sources bake exposure automatically at run time based on the active [CameraAttributes] resource, but [LightmapGI] and [VoxelGI] require a [CameraAttributes] resource to be set at bake time to reduce the dynamic range. At run time, Godot will automatically reconcile the baked exposure with the active exposure to ensure lighting remains consistent."},{"name":"rendering/limits/cluster_builder/max_clustered_elements","type":"float","description":"The maximum number of clustered elements ([OmniLight3D] + [SpotLight3D] + [Decal] + [ReflectionProbe]) that can be rendered at once in the camera view. If there are more clustered elements present in the camera view, some of them will not be rendered (leading to pop-in during camera movement). Enabling distance fade on lights and decals ([member Light3D.distance_fade_enabled], [member Decal.distance_fade_enabled]) can help avoid reaching this limit.\n\t\t\tDecreasing this value may improve GPU performance on certain setups, even if the maximum number of clustered elements is never reached in the project.\n\t\t\t[b]Note:[/b] This setting is only effective when using the Forward+ rendering method, not Mobile and Compatibility."},{"name":"rendering/limits/global_shader_variables/buffer_size","type":"int","description":"The maximum number of uniforms that can be used by the global shader uniform buffer. Each item takes up one slot. In other words, a single uniform float and a uniform vec4 will take the same amount of space in the buffer.\n\t\t\t[b]Note:[/b] When using the Compatibility renderer, most mobile devices (and all web exports) will be limited to a maximum size of 1024 due to hardware constraints."},{"name":"rendering/limits/opengl/max_lights_per_object","type":"int","description":"Max number of omnilights and spotlights renderable per object. At the default value of 8, this means that each surface can be affected by up to 8 omnilights and 8 spotlights. This is further limited by hardware support and [member rendering/limits/opengl/max_renderable_lights]. Setting this low will slightly reduce memory usage, may decrease shader compile times, and may result in faster rendering on low-end, mobile, or web devices.\n\t\t\t[b]Note:[/b] This setting is only effective when using the Compatibility rendering method, not Forward+ and Mobile."},{"name":"rendering/limits/opengl/max_renderable_elements","type":"int","description":"Max number of elements renderable in a frame. If more elements than this are visible per frame, they will not be drawn. Keep in mind elements refer to mesh surfaces and not meshes themselves. Setting this low will slightly reduce memory usage and may decrease shader compile times, particularly on web. For most uses, the default value is suitable, but consider lowering as much as possible on web export.\n\t\t\t[b]Note:[/b] This setting is only effective when using the Compatibility rendering method, not Forward+ and Mobile."},{"name":"rendering/limits/opengl/max_renderable_lights","type":"int","description":"Max number of positional lights renderable in a frame. If more lights than this number are used, they will be ignored. Setting this low will slightly reduce memory usage and may decrease shader compile times, particularly on web. For most uses, the default value is suitable, but consider lowering as much as possible on web export.\n\t\t\t[b]Note:[/b] This setting is only effective when using the Compatibility rendering method, not Forward+ and Mobile."},{"name":"rendering/limits/spatial_indexer/threaded_cull_minimum_instances","type":"int","description":"The minimum number of instances that must be present in a scene to enable culling computations on multiple threads. If a scene has fewer instances than this number, culling is done on a single thread."},{"name":"rendering/limits/spatial_indexer/update_iterations_per_frame","type":"int","description":""},{"name":"rendering/limits/time/time_rollover_secs","type":"float","description":"Maximum time (in seconds) before the [code]TIME[/code] shader built-in variable rolls over. The [code]TIME[/code] variable increments by [code]delta[/code] each frame, and when it exceeds this value, it rolls over to [code]0.0[/code]. Since large floating-point values are less precise than small floating-point values, this should be set as low as possible to maximize the precision of the [code]TIME[/code] built-in variable in shaders. This is especially important on mobile platforms where precision in shaders is significantly reduced. However, if this is set too low, shader animations may appear to restart from the beginning while the project is running.\n\t\t\tOn desktop platforms, values below [code]4096[/code] are recommended, ideally below [code]2048[/code]. On mobile platforms, values below [code]64[/code] are recommended, ideally below [code]32[/code]."},{"name":"rendering/mesh_lod/lod_change/threshold_pixels","type":"float","description":"The automatic LOD bias to use for meshes rendered within the [ReflectionProbe]. Higher values will use less detailed versions of meshes that have LOD variations generated. If set to [code]0.0[/code], automatic LOD is disabled. Increase [member rendering/mesh_lod/lod_change/threshold_pixels] to improve performance at the cost of geometry detail.\n\t\t\t[b]Note:[/b] [member rendering/mesh_lod/lod_change/threshold_pixels] does not affect [GeometryInstance3D] visibility ranges (also known as \"manual\" LOD or hierarchical LOD).\n\t\t\t[b]Note:[/b] This property is only read when the project starts. To adjust the automatic LOD threshold at runtime, set [member Viewport.mesh_lod_threshold] on the root [Viewport]."},{"name":"rendering/occlusion_culling/bvh_build_quality","type":"int","description":"The [url=https://en.wikipedia.org/wiki/Bounding_volume_hierarchy]Bounding Volume Hierarchy[/url] quality to use when rendering the occlusion culling buffer. Higher values will result in more accurate occlusion culling, at the cost of higher CPU usage. See also [member rendering/occlusion_culling/occlusion_rays_per_thread].\n\t\t\t[b]Note:[/b] This property is only read when the project starts. To adjust the BVH build quality at runtime, use [method RenderingServer.viewport_set_occlusion_culling_build_quality]."},{"name":"rendering/occlusion_culling/jitter_projection","type":"bool","description":"If [code]true[/code], the projection used for rendering the occlusion buffer will be jittered. This can help prevent objects being incorrectly culled when visible through small gaps."},{"name":"rendering/occlusion_culling/occlusion_rays_per_thread","type":"int","description":"The number of occlusion rays traced per CPU thread. Higher values will result in more accurate occlusion culling, at the cost of higher CPU usage. The occlusion culling buffer's pixel count is roughly equal to [code]occlusion_rays_per_thread * number_of_logical_cpu_cores[/code], so it will depend on the system's CPU. Therefore, CPUs with fewer cores will use a lower resolution to attempt keeping performance costs even across devices. See also [member rendering/occlusion_culling/bvh_build_quality].\n\t\t\t[b]Note:[/b] This property is only read when the project starts. To adjust the number of occlusion rays traced per thread at runtime, use [method RenderingServer.viewport_set_occlusion_rays_per_thread]."},{"name":"rendering/occlusion_culling/use_occlusion_culling","type":"bool","description":"If [code]true[/code], [OccluderInstance3D] nodes will be usable for occlusion culling in 3D in the root viewport. In custom viewports, [member Viewport.use_occlusion_culling] must be set to [code]true[/code] instead.\n\t\t\t[b]Note:[/b] Enabling occlusion culling has a cost on the CPU. Only enable occlusion culling if you actually plan to use it. Large open scenes with few or no objects blocking the view will generally not benefit much from occlusion culling. Large open scenes generally benefit more from mesh LOD and visibility ranges ([member GeometryInstance3D.visibility_range_begin] and [member GeometryInstance3D.visibility_range_end]) compared to occlusion culling.\n\t\t\t[b]Note:[/b] Due to memory constraints, occlusion culling is not supported by default in Web export templates. It can be enabled by compiling custom Web export templates with [code]module_raycast_enabled=yes[/code]."},{"name":"rendering/reflections/reflection_atlas/reflection_count","type":"int","description":"Number of cubemaps to store in the reflection atlas. The number of [ReflectionProbe]s in a scene will be limited by this amount. A higher number requires more VRAM."},{"name":"rendering/reflections/reflection_atlas/reflection_size","type":"int","description":"Size of cubemap faces for [ReflectionProbe]s. A higher number requires more VRAM and may make reflection probe updating slower."},{"name":"rendering/reflections/reflection_atlas/reflection_size.mobile","type":"int","description":"Lower-end override for [member rendering/reflections/reflection_atlas/reflection_size] on mobile devices, due to performance concerns or driver support."},{"name":"rendering/reflections/sky_reflections/fast_filter_high_quality","type":"bool","description":"Use a higher quality variant of the fast filtering algorithm. Significantly slower than using default quality, but results in smoother reflections. Should only be used when the scene is especially detailed."},{"name":"rendering/reflections/sky_reflections/ggx_samples","type":"int","description":"Sets the number of samples to take when using importance sampling for [Sky]s and [ReflectionProbe]s. A higher value will result in smoother, higher quality reflections, but increases time to calculate radiance maps. In general, fewer samples are needed for simpler, low dynamic range environments while more samples are needed for HDR environments and environments with a high level of detail."},{"name":"rendering/reflections/sky_reflections/ggx_samples.mobile","type":"int","description":"Lower-end override for [member rendering/reflections/sky_reflections/ggx_samples] on mobile devices, due to performance concerns or driver support."},{"name":"rendering/reflections/sky_reflections/roughness_layers","type":"int","description":"Limits the number of layers to use in radiance maps when using importance sampling. A lower number will be slightly faster and take up less VRAM."},{"name":"rendering/reflections/sky_reflections/texture_array_reflections","type":"bool","description":"If [code]true[/code], uses texture arrays instead of mipmaps for reflection probes and panorama backgrounds (sky). This reduces jitter noise and upscaling artifacts on reflections, but is significantly slower to compute and uses [member rendering/reflections/sky_reflections/roughness_layers] times more memory."},{"name":"rendering/reflections/sky_reflections/texture_array_reflections.mobile","type":"bool","description":"Lower-end override for [member rendering/reflections/sky_reflections/texture_array_reflections] on mobile devices, due to performance concerns or driver support."},{"name":"rendering/renderer/rendering_method","type":"String","description":"Sets the renderer that will be used by the project. Options are:\n\t\t\t[b]forward_plus[/b] (Forward+): High-end renderer designed for desktop devices. Has a higher base overhead, but scales well with complex scenes. Not suitable for older devices or mobile.\n\t\t\t[b]mobile[/b] (Mobile): Modern renderer designed for mobile devices. Has a lower base overhead than Forward+, but does not scale as well to large scenes with many elements.\n\t\t\t[b]gl_compatibility[/b] (Compatibility): Low-end renderer designed for older devices. Based on the limitations of the OpenGL 3.3 / OpenGL ES 3.0 / WebGL 2 APIs.\n\t\t\tThis can be overridden using the [code]--rendering-method &lt;method&gt;[/code] command line argument.\n\t\t\t[b]Note:[/b] The actual rendering method may be automatically changed by the engine as a result of a fallback, or a user-specified command line argument. To get the actual rendering method that is used at runtime, use [method RenderingServer.get_current_rendering_method] instead of reading this project setting's value."},{"name":"rendering/renderer/rendering_method.mobile","type":"String","description":"Override for [member rendering/renderer/rendering_method] on mobile devices."},{"name":"rendering/renderer/rendering_method.web","type":"String","description":"Override for [member rendering/renderer/rendering_method] on web."},{"name":"rendering/rendering_device/d3d12/agility_sdk_version","type":"int","description":"Version code of the [url=https://devblogs.microsoft.com/directx/directx12agility/]Direct3D 12 Agility SDK[/url] to use ([code]D3D12SDKVersion[/code]). This must match the [i]minor[/i] version that is installed next to the editor binary and in the export templates directory for the current editor version. For example, if you have [code]1.613.3[/code] installed, you need to input [code]613[/code] here."},{"name":"rendering/rendering_device/d3d12/max_misc_descriptors_per_frame","type":"int","description":"The number of entries in the miscellaneous descriptors heap the Direct3D 12 rendering driver uses each frame, used for various operations like clearing a texture.\n\t\t\tDepending on the complexity of scenes, this value may be lowered or may need to be raised."},{"name":"rendering/rendering_device/d3d12/max_resource_descriptors_per_frame","type":"int","description":"The number of entries in the resource descriptors heap the Direct3D 12 rendering driver uses each frame, used for most rendering operations.\n\t\t\tDepending on the complexity of scenes, this value may be lowered or may need to be raised."},{"name":"rendering/rendering_device/d3d12/max_sampler_descriptors_per_frame","type":"int","description":"The number of entries in the sampler descriptors heap the Direct3D 12 rendering driver uses each frame, used for most rendering operations.\n\t\t\tDepending on the complexity of scenes, this value may be lowered or may need to be raised."},{"name":"rendering/rendering_device/driver","type":"String","description":"Sets the driver to be used by the renderer when using a RenderingDevice-based renderer like the Forward+ or Mobile renderers. Editing this property has no effect in the default configuration, as first-party platforms each have platform-specific overrides. Use those overrides to configure the driver for each platform.\n\t\t\tThis can be overridden using the [code]--rendering-driver &lt;driver&gt;[/code] command line argument.\n\t\t\tSupported values are:\n\t\t\t- [code]metal[/code], Metal (supported on Apple Silicon Macs and iOS).\n\t\t\t- [code]vulkan[/code], Vulkan (supported on all desktop and mobile platforms).\n\t\t\t- [code]d3d12[/code], Direct3D 12 (supported on Windows).\n\t\t\t[b]Note:[/b] The availability of these options depends on whether the engine was compiled with support for them (determined by SCons options [code]vulkan[/code], [code]metal[/code], and [code]d3d12[/code]).\n\t\t\t[b]Note:[/b] If a given platform has no registered drivers, it can fall back to the Compatibility renderer (OpenGL 3) if [member rendering/rendering_device/fallback_to_opengl3] is enabled. This fallback happens automatically for the Web platform regardless of that property.\n\t\t\t[b]Note:[/b] The actual rendering driver may be automatically changed by the engine as a result of a fallback, or a user-specified command line argument. To get the actual rendering driver that is used at runtime, use [method RenderingServer.get_current_rendering_driver_name] instead of reading this project setting's value."},{"name":"rendering/rendering_device/driver.android","type":"String","description":"Android override for [member rendering/rendering_device/driver].\n\t\t\tOnly one option is supported:\n\t\t\t- [code]vulkan[/code], Vulkan from native drivers.\n\t\t\t[b]Note:[/b] If Vulkan was disabled at compile time, there is no alternative RenderingDevice driver."},{"name":"rendering/rendering_device/driver.ios","type":"String","description":"iOS override for [member rendering/rendering_device/driver].\n\t\t\tTwo options are supported:\n\t\t\t- [code]metal[/code] (default), Metal from native drivers.\n\t\t\t- [code]vulkan[/code], Vulkan over Metal via MoltenVK."},{"name":"rendering/rendering_device/driver.linuxbsd","type":"String","description":"LinuxBSD override for [member rendering/rendering_device/driver].\n\t\t\tOnly one option is supported:\n\t\t\t- [code]vulkan[/code], Vulkan from native drivers.\n\t\t\t[b]Note:[/b] If Vulkan was disabled at compile time, there is no alternative RenderingDevice driver."},{"name":"rendering/rendering_device/driver.macos","type":"String","description":"macOS override for [member rendering/rendering_device/driver].\n\t\t\tTwo options are supported:\n\t\t\t- [code]metal[/code] (default), Metal from native drivers, only supported on Apple Silicon Macs. On Intel Macs, it will automatically fall back to [code]vulkan[/code] as Metal support is not implemented.\n\t\t\t- [code]vulkan[/code], Vulkan over Metal via MoltenVK, supported on both Apple Silicon and Intel Macs."},{"name":"rendering/rendering_device/driver.windows","type":"String","description":"Windows override for [member rendering/rendering_device/driver].\n\t\t\tTwo options are supported:\n\t\t\t- [code]vulkan[/code] (default), Vulkan from native drivers. If [member rendering/rendering_device/fallback_to_vulkan] is enabled, this is used as a fallback if Direct3D 12 is not supported.\n\t\t\t- [code]d3d12[/code], Direct3D 12 from native drivers. If [member rendering/rendering_device/fallback_to_d3d12] is enabled, this is used as a fallback if Vulkan is not supported."},{"name":"rendering/rendering_device/fallback_to_d3d12","type":"bool","description":"If [code]true[/code], the forward renderer will fall back to Direct3D 12 if Vulkan is not supported. The fallback is always attempted regardless of this setting if Vulkan driver support was disabled at compile time.\n\t\t\t[b]Note:[/b] This setting is implemented only on Windows."},{"name":"rendering/rendering_device/fallback_to_opengl3","type":"bool","description":"If [code]true[/code], the forward renderer will fall back to OpenGL 3 if Direct3D 12, Metal, and Vulkan are not supported.\n\t\t\t[b]Note:[/b] This setting is implemented only on Windows, Android, macOS, iOS, and Linux/X11."},{"name":"rendering/rendering_device/fallback_to_vulkan","type":"bool","description":"If [code]true[/code], the forward renderer will fall back to Vulkan if Direct3D 12 (on Windows) or Metal (on macOS x86_64) are not supported. The fallback is always attempted regardless of this setting if Direct3D 12 (Windows) or Metal (macOS) driver support was disabled at compile time.\n\t\t\t[b]Note:[/b] This setting is implemented only on Windows and macOS."},{"name":"rendering/rendering_device/pipeline_cache/enable","type":"bool","description":"Enable the pipeline cache that is saved to disk if the graphics API supports it.\n\t\t\t[b]Note:[/b] This property is unable to control the pipeline caching the GPU driver itself does. Only turn this off along with deleting the contents of the driver's cache if you wish to simulate the experience a user will get when starting the game for the first time."},{"name":"rendering/rendering_device/pipeline_cache/save_chunk_size_mb","type":"float","description":"Determines at which interval pipeline cache is saved to disk. The lower the value, the more often it is saved."},{"name":"rendering/rendering_device/staging_buffer/block_size_kb","type":"int","description":"The size of a block allocated in the staging buffers. Staging buffers are the intermediate resources the engine uses to upload or download data to the GPU. This setting determines the max amount of data that can be transferred in a copy operation. Increasing this will result in faster data transfers at the cost of extra memory.\n\t\t\t[b]Note:[/b] This property is only read when the project starts. There is currently no way to change this value at run-time."},{"name":"rendering/rendering_device/staging_buffer/max_size_mb","type":"int","description":"The maximum amount of memory allowed to be used by staging buffers. If the amount of data being uploaded or downloaded exceeds this amount, the GPU will stall and wait for previous frames to finish.\n\t\t\t[b]Note:[/b] This property is only read when the project starts. There is currently no way to change this value at run-time."},{"name":"rendering/rendering_device/staging_buffer/texture_download_region_size_px","type":"int","description":"The region size in pixels used to download texture data from the GPU when using methods like [method RenderingDevice.texture_get_data_async].\n\t\t\t[b]Note:[/b] This property's upper limit is controlled by [member rendering/rendering_device/staging_buffer/block_size_kb] and whether it's possible to allocate a single block of texture data with this region size in the format that is requested.\n\t\t\t[b]Note:[/b] This property is only read when the project starts. There is currently no way to change this value at run-time."},{"name":"rendering/rendering_device/staging_buffer/texture_upload_region_size_px","type":"int","description":"The region size in pixels used to upload texture data from the GPU when using methods like [method RenderingDevice.texture_update].\n\t\t\t[b]Note:[/b] This property's upper limit is controlled by [member rendering/rendering_device/staging_buffer/block_size_kb] and whether it's possible to allocate a single block of texture data with this region size in the format that is requested.\n\t\t\t[b]Note:[/b] This property is only read when the project starts. There is currently no way to change this value at run-time."},{"name":"rendering/rendering_device/vsync/frame_queue_size","type":"int","description":"The number of frames to track on the CPU side before stalling to wait for the GPU.\n\t\t\tTry the [url=https://darksylinc.github.io/vsync_simulator/]V-Sync Simulator[/url], an interactive interface that simulates presentation to better understand how it is affected by different variables under various conditions.\n\t\t\t[b]Note:[/b] This property is only read when the project starts. There is currently no way to change this value at run-time."},{"name":"rendering/rendering_device/vsync/swapchain_image_count","type":"int","description":"The number of images the swapchain will consist of (back buffers + front buffer).\n\t\t\t[code]2[/code] corresponds to double-buffering and [code]3[/code] to triple-buffering.\n\t\t\tDouble-buffering may give you the lowest lag/latency but if V-Sync is on and the system can't render at 60 fps, the framerate will go down in multiples of it (e.g. 30 fps, 15, 7.5, etc.). Triple buffering gives you higher framerate (specially if the system can't reach a constant 60 fps) at the cost of up to 1 frame of latency, with [constant DisplayServer.VSYNC_ENABLED] (FIFO).\n\t\t\tUse double-buffering with [constant DisplayServer.VSYNC_ENABLED]. Triple-buffering is a must if you plan on using [constant DisplayServer.VSYNC_MAILBOX] mode.\n\t\t\tTry the [url=https://darksylinc.github.io/vsync_simulator/]V-Sync Simulator[/url], an interactive interface that simulates presentation to better understand how it is affected by different variables under various conditions.\n\t\t\t[b]Note:[/b] This property is only read when the project starts. There is currently no way to change this value at run-time.\n\t\t\t[b]Note:[/b] Some platforms may restrict the actual value."},{"name":"rendering/rendering_device/vulkan/max_descriptors_per_pool","type":"int","description":"The number of descriptors per pool. Godot's Vulkan backend uses linear pools for descriptors that will be created and destroyed within a single frame. Instead of destroying every single descriptor every frame, they all can be destroyed at once by resetting the pool they belong to.\n\t\t\tA larger number is more efficient up to a limit, after that it will only waste RAM (maximum efficiency is achieved when there is no more than 1 pool per frame). A small number could end up with one pool per descriptor, which negatively impacts performance.\n\t\t\t[b]Note:[/b] Changing this property requires a restart to take effect."},{"name":"rendering/scaling_3d/fsr_sharpness","type":"float","description":"Determines how sharp the upscaled image will be when using the FSR upscaling mode. Sharpness halves with every whole number. Values go from 0.0 (sharpest) to 2.0. Values above 2.0 won't make a visible difference."},{"name":"rendering/scaling_3d/mode","type":"int","description":"Sets the scaling 3D mode. Bilinear scaling renders at different resolution to either undersample or supersample the viewport. FidelityFX Super Resolution 1.0, abbreviated to FSR, is an upscaling technology that produces high quality images at fast framerates by using a spatially-aware upscaling algorithm. FSR is slightly more expensive than bilinear, but it produces significantly higher image quality. On particularly low-end GPUs, the added cost of FSR may not be worth it (compared to using bilinear scaling with a slightly higher resolution scale to match performance).\n\t\t\t[b]Note:[/b] FSR is only effective when using the Forward+ rendering method, not Mobile or Compatibility. If using an incompatible rendering method, FSR will fall back to bilinear scaling."},{"name":"rendering/scaling_3d/mode.ios","type":"int","description":"iOS override for [member rendering/scaling_3d/mode]. This allows selecting the MetalFX spatial and MetalFX temporal scaling modes, which are exclusive to platforms where the Metal rendering driver is used."},{"name":"rendering/scaling_3d/mode.macos","type":"int","description":"macOS override for [member rendering/scaling_3d/mode]. This allows selecting the MetalFX spatial and MetalFX temporal scaling modes, which are exclusive to platforms where the Metal rendering driver is used."},{"name":"rendering/scaling_3d/scale","type":"float","description":"Scales the 3D render buffer based on the viewport size uses an image filter specified in [member rendering/scaling_3d/mode] to scale the output image to the full viewport size. Values lower than [code]1.0[/code] can be used to speed up 3D rendering at the cost of quality (undersampling). Values greater than [code]1.0[/code] are only valid for bilinear mode and can be used to improve 3D rendering quality at a high performance cost (supersampling). See also [member rendering/anti_aliasing/quality/msaa_3d] for multi-sample antialiasing, which is significantly cheaper but only smooths the edges of polygons."},{"name":"rendering/shader_compiler/shader_cache/compress","type":"bool","description":""},{"name":"rendering/shader_compiler/shader_cache/enabled","type":"bool","description":"Enable the shader cache, which stores compiled shaders to disk to prevent stuttering from shader compilation the next time the shader is needed."},{"name":"rendering/shader_compiler/shader_cache/strip_debug","type":"bool","description":""},{"name":"rendering/shader_compiler/shader_cache/strip_debug.release","type":"bool","description":""},{"name":"rendering/shader_compiler/shader_cache/use_zstd_compression","type":"bool","description":""},{"name":"rendering/shading/overrides/force_lambert_over_burley","type":"bool","description":"If [code]true[/code], uses faster but lower-quality Lambert material lighting model instead of Burley."},{"name":"rendering/shading/overrides/force_lambert_over_burley.mobile","type":"bool","description":"Lower-end override for [member rendering/shading/overrides/force_lambert_over_burley] on mobile devices, due to performance concerns or driver support."},{"name":"rendering/shading/overrides/force_vertex_shading","type":"bool","description":"If [code]true[/code], forces vertex shading for all rendering. This can increase performance a lot, but also reduces quality immensely. Can be used to optimize performance on low-end mobile devices."},{"name":"rendering/textures/canvas_textures/default_texture_filter","type":"int","description":"The default texture filtering mode to use for [CanvasItem]s built-in texture. In shaders, this texture is accessed as [code]TEXTURE[/code].\n\t\t\t[b]Note:[/b] For pixel art aesthetics, see also [member rendering/2d/snap/snap_2d_vertices_to_pixel] and [member rendering/2d/snap/snap_2d_transforms_to_pixel]."},{"name":"rendering/textures/canvas_textures/default_texture_repeat","type":"int","description":"The default texture repeating mode to use for [CanvasItem]s built-in texture. In shaders, this texture is accessed as [code]TEXTURE[/code]."},{"name":"rendering/textures/decals/filter","type":"int","description":"The filtering quality to use for [Decal] nodes. When using one of the anisotropic filtering modes, the anisotropic filtering level is controlled by [member rendering/textures/default_filters/anisotropic_filtering_level]."},{"name":"rendering/textures/default_filters/anisotropic_filtering_level","type":"int","description":"Sets the maximum number of samples to take when using anisotropic filtering on textures (as a power of two). A higher sample count will result in sharper textures at oblique angles, but is more expensive to compute. A value of [code]0[/code] forcibly disables anisotropic filtering, even on materials where it is enabled.\n\t\t\tThe anisotropic filtering level also affects decals and light projectors if they are configured to use anisotropic filtering. See [member rendering/textures/decals/filter] and [member rendering/textures/light_projectors/filter].\n\t\t\t[b]Note:[/b] In 3D, for this setting to have an effect, set [member BaseMaterial3D.texture_filter] to [constant BaseMaterial3D.TEXTURE_FILTER_LINEAR_WITH_MIPMAPS_ANISOTROPIC] or [constant BaseMaterial3D.TEXTURE_FILTER_NEAREST_WITH_MIPMAPS_ANISOTROPIC] on materials.\n\t\t\t[b]Note:[/b] In 2D, for this setting to have an effect, set [member CanvasItem.texture_filter] to [constant CanvasItem.TEXTURE_FILTER_LINEAR_WITH_MIPMAPS_ANISOTROPIC] or [constant CanvasItem.TEXTURE_FILTER_NEAREST_WITH_MIPMAPS_ANISOTROPIC] on the [CanvasItem] node displaying the texture (or in [CanvasTexture]). However, anisotropic filtering is rarely useful in 2D, so only enable it for textures in 2D if it makes a meaningful visual difference.\n\t\t\t[b]Note:[/b] This property is only read when the project starts. To change the anisotropic filtering level at runtime, set [member Viewport.anisotropic_filtering_level] on the root [Viewport] instead."},{"name":"rendering/textures/default_filters/texture_mipmap_bias","type":"float","description":"Affects the final texture sharpness by reading from a lower or higher mipmap (also called \"texture LOD bias\"). Negative values make mipmapped textures sharper but grainier when viewed at a distance, while positive values make mipmapped textures blurrier (even when up close).\n\t\t\tEnabling temporal antialiasing ([member rendering/anti_aliasing/quality/use_taa]) will automatically apply a [code]-0.5[/code] offset to this value, while enabling FXAA ([member rendering/anti_aliasing/quality/screen_space_aa]) will automatically apply a [code]-0.25[/code] offset to this value. If both TAA and FXAA are enabled at the same time, an offset of [code]-0.75[/code] is applied to this value.\n\t\t\t[b]Note:[/b] If [member rendering/scaling_3d/scale] is lower than [code]1.0[/code] (exclusive), [member rendering/textures/default_filters/texture_mipmap_bias] is used to adjust the automatic mipmap bias which is calculated internally based on the scale factor. The formula for this is [code]log2(scaling_3d_scale) + mipmap_bias[/code]."},{"name":"rendering/textures/default_filters/use_nearest_mipmap_filter","type":"bool","description":"If [code]true[/code], uses nearest-neighbor mipmap filtering when using mipmaps (also called \"bilinear filtering\"), which will result in visible seams appearing between mipmap stages. This may increase performance in mobile as less memory bandwidth is used. If [code]false[/code], linear mipmap filtering (also called \"trilinear filtering\") is used.\n\t\t\t[b]Note:[/b] This property is only read when the project starts. There is currently no way to change this setting at run-time."},{"name":"rendering/textures/light_projectors/filter","type":"int","description":"The filtering quality to use for [OmniLight3D] and [SpotLight3D] projectors. When using one of the anisotropic filtering modes, the anisotropic filtering level is controlled by [member rendering/textures/default_filters/anisotropic_filtering_level]."},{"name":"rendering/textures/lossless_compression/force_png","type":"bool","description":"If [code]true[/code], the texture importer will import lossless textures using the PNG format. Otherwise, it will default to using WebP."},{"name":"rendering/textures/vram_compression/cache_gpu_compressor","type":"bool","description":"If [code]true[/code], the GPU texture compressor will cache the local RenderingDevice and its resources (shaders and pipelines), allowing for faster subsequent imports at a memory cost."},{"name":"rendering/textures/vram_compression/compress_with_gpu","type":"bool","description":"If [code]true[/code], the texture importer will utilize the GPU for compressing textures, improving the import time of large images.\n\t\t\t[b]Note:[/b] This only functions on a device which supports either Vulkan, Direct3D 12, or Metal as a rendering driver.\n\t\t\t[b]Note:[/b] Currently this only affects certain compressed formats (BC1, BC3, BC4, BC5, and BC6), all of which are exclusive to desktop platforms and consoles."},{"name":"rendering/textures/vram_compression/import_etc2_astc","type":"bool","description":"If [code]true[/code], the texture importer will import VRAM-compressed textures using the Ericsson Texture Compression 2 algorithm for lower quality textures and normal maps and Adaptable Scalable Texture Compression algorithm for high quality textures (in 4×4 block size).\n\t\t\t[b]Note:[/b] This setting is an override. The texture importer will always import the format the host platform needs, even if this is set to [code]false[/code].\n\t\t\t[b]Note:[/b] Changing this setting does [i]not[/i] impact textures that were already imported before. To make this setting apply to textures that were already imported, exit the editor, remove the [code].godot/imported/[/code] folder located inside the project folder then restart the editor (see [member application/config/use_hidden_project_data_directory])."},{"name":"rendering/textures/vram_compression/import_s3tc_bptc","type":"bool","description":"If [code]true[/code], the texture importer will import VRAM-compressed textures using the S3 Texture Compression algorithm (DXT1-5) for lower quality textures and the BPTC algorithm (BC6H and BC7) for high quality textures. This algorithm is only supported on PC desktop platforms and consoles.\n\t\t\t[b]Note:[/b] This setting is an override. The texture importer will always import the format the host platform needs, even if this is set to [code]false[/code].\n\t\t\t[b]Note:[/b] Changing this setting does [i]not[/i] impact textures that were already imported before. To make this setting apply to textures that were already imported, exit the editor, remove the [code].godot/imported/[/code] folder located inside the project folder then restart the editor (see [member application/config/use_hidden_project_data_directory])."},{"name":"rendering/textures/webp_compression/compression_method","type":"int","description":"The default compression method for WebP. Affects both lossy and lossless WebP. A higher value results in smaller files at the cost of compression speed. Decompression speed is mostly unaffected by the compression method. Supported values are 0 to 6. Note that compression methods above 4 are very slow and offer very little savings."},{"name":"rendering/textures/webp_compression/lossless_compression_factor","type":"float","description":"The default compression factor for lossless WebP. Decompression speed is mostly unaffected by the compression factor. Supported values are 0 to 100."},{"name":"rendering/viewport/hdr_2d","type":"bool","description":"If [code]true[/code], enables [member Viewport.use_hdr_2d] on the root viewport. 2D rendering will use an high dynamic range (HDR) format framebuffer matching the bit depth of the 3D framebuffer. When using the Forward+ renderer this will be an [code]RGBA16[/code] framebuffer, while when using the Mobile renderer it will be an [code]RGB10_A2[/code] framebuffer. Additionally, 2D rendering will take place in linear color space and will be converted to sRGB space immediately before blitting to the screen. Practically speaking, this means that the end result of the Viewport will not be clamped into the [code]0-1[/code] range and can be used in 3D rendering without color space adjustments. This allows 2D rendering to take advantage of effects requiring high dynamic range (e.g. 2D glow) as well as substantially improves the appearance of effects requiring highly detailed gradients.\n\t\t\t[b]Note:[/b] This setting will have no effect when using the Compatibility renderer, which always renders in low dynamic range for performance reasons.\n\t\t\t[b]Note:[/b] This property is only read when the project starts. To toggle HDR 2D at runtime, set [member Viewport.use_hdr_2d] on the root [Viewport]."},{"name":"rendering/viewport/transparent_background","type":"bool","description":"If [code]true[/code], enables [member Viewport.transparent_bg] on the root viewport. This allows per-pixel transparency to be effective after also enabling [member display/window/size/transparent] and [member display/window/per_pixel_transparency/allowed]."},{"name":"rendering/vrs/mode","type":"int","description":"Set the default Variable Rate Shading (VRS) mode for the main viewport. See [member Viewport.vrs_mode] to change this at runtime, and [enum Viewport.VRSMode] for possible values."},{"name":"rendering/vrs/texture","type":"String","description":"If [member rendering/vrs/mode] is set to [b]Texture[/b], this is the path to default texture loaded as the VRS image.\n\t\t\tThe texture [i]must[/i] use a lossless compression format so that colors can be matched precisely. The following VRS densities are mapped to various colors, with brighter colors representing a lower level of shading precision:\n\t\t\t[codeblock lang=text]\n\t\t\t- 1×1 = rgb(0, 0, 0)     - #000000\n\t\t\t- 1×2 = rgb(0, 85, 0)    - #005500\n\t\t\t- 2×1 = rgb(85, 0, 0)    - #550000\n\t\t\t- 2×2 = rgb(85, 85, 0)   - #555500\n\t\t\t- 2×4 = rgb(85, 170, 0)  - #55aa00\n\t\t\t- 4×2 = rgb(170, 85, 0)  - #aa5500\n\t\t\t- 4×4 = rgb(170, 170, 0) - #aaaa00\n\t\t\t- 4×8 = rgb(170, 255, 0) - #aaff00 - Not supported on most hardware\n\t\t\t- 8×4 = rgb(255, 170, 0) - #ffaa00 - Not supported on most hardware\n\t\t\t- 8×8 = rgb(255, 255, 0) - #ffff00 - Not supported on most hardware\n\t\t\t[/codeblock]"},{"name":"threading/worker_pool/low_priority_thread_ratio","type":"float","description":"The ratio of [WorkerThreadPool]'s threads that will be reserved for low-priority tasks. For example, if 10 threads are available and this value is set to [code]0.3[/code], 3 of the worker threads will be reserved for low-priority tasks. The actual value won't exceed the number of CPU cores minus one, and if possible, at least one worker thread will be dedicated to low-priority tasks."},{"name":"threading/worker_pool/max_threads","type":"int","description":"Maximum number of threads to be used by [WorkerThreadPool]. Value of [code]-1[/code] means no limit."},{"name":"xr/openxr/binding_modifiers/analog_threshold","type":"bool","description":"If [code]true[/code], enables the analog threshold binding modifier if supported by the XR runtime."},{"name":"xr/openxr/binding_modifiers/dpad_binding","type":"bool","description":"If [code]true[/code], enables the D-pad binding modifier if supported by the XR runtime."},{"name":"xr/openxr/default_action_map","type":"String","description":"Action map configuration to load by default."},{"name":"xr/openxr/enabled","type":"bool","description":"If [code]true[/code], Godot will setup and initialize OpenXR on startup."},{"name":"xr/openxr/environment_blend_mode","type":"int","description":"Specify how OpenXR should blend in the environment. This is specific to certain AR and passthrough devices where camera images are blended in by the XR compositor."},{"name":"xr/openxr/extensions/debug_message_types","type":"int","description":"Specifies the message types for which we request debug messages. Requires [member xr/openxr/extensions/debug_utils] to be set and the extension to be supported by the XR runtime."},{"name":"xr/openxr/extensions/debug_utils","type":"int","description":"Enables debug utilities on XR runtimes that supports the debug utils extension. Sets the maximum severity being reported (0 = disabled, 1 = error, 2 = warning, 3 = info, 4 = verbose)."},{"name":"xr/openxr/extensions/eye_gaze_interaction","type":"bool","description":"Specify whether to enable eye tracking for this project. Depending on the platform, additional export configuration may be needed."},{"name":"xr/openxr/extensions/hand_interaction_profile","type":"bool","description":"If [code]true[/code] the hand interaction profile extension will be activated if supported by the platform."},{"name":"xr/openxr/extensions/hand_tracking","type":"bool","description":"If [code]true[/code], the hand tracking extension is enabled if available.\n\t\t\t[b]Note:[/b] By default hand tracking will only work for data sources chosen by the XR runtime. For SteamVR this is the controller inferred data source, for most other runtimes this is the unobstructed data source. There is no way to query this. If a runtime supports the OpenXR data source extension you can use the [member xr/openxr/extensions/hand_tracking_controller_data_source] and/or [member xr/openxr/extensions/hand_tracking_unobstructed_data_source] to indicate you wish to enable these data sources. If neither is selected the data source extension is not enabled and the XR runtimes default behavior persists."},{"name":"xr/openxr/extensions/hand_tracking_controller_data_source","type":"bool","description":"If [code]true[/code], support for the controller inferred data source is requested. If supported, you will receive hand tracking data even if the user has a controller in hand, with finger positions automatically inferred from controller input and/or sensors.\n\t\t\t[b]Node:[/b] This requires the OpenXR data source extension and controller inferred handtracking to be supported by the XR runtime. If not supported this setting will be ignored. [member xr/openxr/extensions/hand_tracking] must be enabled for this setting to be used."},{"name":"xr/openxr/extensions/hand_tracking_unobstructed_data_source","type":"bool","description":"If [code]true[/code], support for the unobstructed data source is requested. If supported, you will receive hand tracking data based on the actual finger positions of the user often determined by optical tracking.\n\t\t\t[b]Node:[/b] This requires the OpenXR data source extension and unobstructed handtracking to be supported by the XR runtime. If not supported this setting will be ignored. [member xr/openxr/extensions/hand_tracking] must be enabled for this setting to be used."},{"name":"xr/openxr/form_factor","type":"int","description":"Specify whether OpenXR should be configured for an HMD or a hand held device."},{"name":"xr/openxr/foveation_dynamic","type":"bool","description":"If [code]true[/code] and foveation is supported, will automatically adjust foveation level based on framerate up to the level set on [member xr/openxr/foveation_level].\n\t\t\t[b]Note:[/b] Only works on the Compatibility rendering method."},{"name":"xr/openxr/foveation_level","type":"int","description":"Applied foveation level if supported: 0 = off, 1 = low, 2 = medium, 3 = high.\n\t\t\t[b]Note:[/b] Only works on the Compatibility rendering method. On platforms other than Android, if [member rendering/anti_aliasing/quality/msaa_3d] is enabled, this feature will be disabled."},{"name":"xr/openxr/reference_space","type":"int","description":"Specify the default reference space."},{"name":"xr/openxr/startup_alert","type":"bool","description":"If [code]true[/code], Godot will display an alert modal when OpenXR initialization fails on startup."},{"name":"xr/openxr/submit_depth_buffer","type":"bool","description":"If [code]true[/code], OpenXR will manage the depth buffer and use the depth buffer for advanced reprojection provided this is supported by the XR runtime. Note that some rendering features in Godot can't be used with this feature."},{"name":"xr/openxr/view_configuration","type":"int","description":"Specify the view configuration with which to configure OpenXR setting up either Mono or Stereo rendering."},{"name":"xr/shaders/enabled","type":"bool","description":"If [code]true[/code], Godot will compile shaders required for XR."}],"methods":[{"name":"add_property_info","signature":"add_property_info(hint: Dictionary) -> void","description":"Adds a custom property info to a property. The dictionary must contain:\n\t\t\t\t- \"name\":  (the property's name)\n\t\t\t\t- \"type\":  (see [enum Variant.Type])\n\t\t\t\t- optionally \"hint\":  (see [enum PropertyHint]) and \"hint_string\": \n\t\t\t\t\n\t\t\t\t\n\t\t\t\tProjectSettings.set(\"category/property_name\", 0)\n\n\t\t\t\tvar property_info = {\n\t\t\t\t    \"name\": \"category/property_name\",\n\t\t\t\t    \"type\": TYPE_INT,\n\t\t\t\t    \"hint\": PROPERTY_HINT_ENUM,\n\t\t\t\t    \"hint_string\": \"one,two,three\"\n\t\t\t\t}\n\n\t\t\t\tProjectSettings.add_property_info(property_info)\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tProjectSettings.Singleton.Set(\"category/property_name\", 0);\n\n\t\t\t\tvar propertyInfo = new Godot.Collections.Dictionary\n\t\t\t\t{\n\t\t\t\t    {\"name\", \"category/propertyName\"},\n\t\t\t\t    {\"type\", (int)Variant.Type.Int},\n\t\t\t\t    {\"hint\", (int)PropertyHint.Enum},\n\t\t\t\t    {\"hint_string\", \"one,two,three\"},\n\t\t\t\t};\n\n\t\t\t\tProjectSettings.AddPropertyInfo(propertyInfo);\n\t\t\t\t\n\t\t\t\t","returnType":"void"},{"name":"clear","signature":"clear(name: String) -> void","description":"Clears the whole configuration (not recommended, may break things).","returnType":"void"},{"name":"get_global_class_list","signature":"get_global_class_list() -> Dictionary[]","description":"Returns an  of registered global classes. Each global class is represented as a  that contains the following entries:\n\t\t\t\t- base is a name of the base class;\n\t\t\t\t- class is a name of the registered global class;\n\t\t\t\t- icon is a path to a custom icon of the global class, if it has any;\n\t\t\t\t- language is a name of a programming language in which the global class is written;\n\t\t\t\t- path is a path to a file containing the global class.\n\t\t\t\tNote: Both the script and the icon paths are local to the project filesystem, i.e. they start with res://.","returnType":"Dictionary[]"},{"name":"get_order","signature":"get_order(name: String) -> int","description":"Returns the order of a configuration value (influences when saved to the config file).","returnType":"int"},{"name":"get_setting","signature":"get_setting(name: String, default_value: Variant) -> Variant","description":"Returns the value of the setting identified by [param name]. If the setting doesn't exist and [param default_value] is specified, the value of [param default_value] is returned. Otherwise, null is returned.\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tprint(ProjectSettings.get_setting(\"application/config/name\"))\n\t\t\t\tprint(ProjectSettings.get_setting(\"application/config/custom_description\", \"No description specified.\"))\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tGD.Print(ProjectSettings.GetSetting(\"application/config/name\"));\n\t\t\t\tGD.Print(ProjectSettings.GetSetting(\"application/config/custom_description\", \"No description specified.\"));\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tNote: This method doesn't take potential feature overrides into account automatically. Use [method get_setting_with_override] to handle seamlessly.","returnType":"Variant"},{"name":"get_setting_with_override","signature":"get_setting_with_override(name: StringName) -> Variant","description":"Similar to [method get_setting], but applies feature tag overrides if any exists and is valid.\n\t\t\t\tExample: If the setting override \"application/config/name.windows\" exists, and the following code is executed on a Windows operating system, the overridden setting is printed instead:\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tprint(ProjectSettings.get_setting_with_override(\"application/config/name\"))\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tGD.Print(ProjectSettings.GetSettingWithOverride(\"application/config/name\"));\n\t\t\t\t\n\t\t\t\t","returnType":"Variant"},{"name":"globalize_path","signature":"globalize_path(path: String) -> String","description":"Returns the absolute, native OS path corresponding to the localized [param path] (starting with res:// or user://). The returned path will vary depending on the operating system and user preferences. See [url=$DOCS_URL/tutorials/io/data_paths.html]File paths in Godot projects to see what those paths convert to. See also [method localize_path].\n\t\t\t\tNote: [method globalize_path] with res:// will not work in an exported project. Instead, prepend the executable's base directory to the path when running from an exported project:\n\t\t\t\t\n\t\t\t\tvar path = \"\"\n\t\t\t\tif OS.has_feature(\"editor\"):\n\t\t\t\t    # Running from an editor binary.\n\t\t\t\t    # `path` will contain the absolute path to `hello.txt` located in the project root.\n\t\t\t\t    path = ProjectSettings.globalize_path(\"res://hello.txt\")\n\t\t\t\telse:\n\t\t\t\t    # Running from an exported project.\n\t\t\t\t    # `path` will contain the absolute path to `hello.txt` next to the executable.\n\t\t\t\t    # This is *not* identical to using `ProjectSettings.globalize_path()` with a `res://` path,\n\t\t\t\t    # but is close enough in spirit.\n\t\t\t\t    path = OS.get_executable_path().get_base_dir().path_join(\"hello.txt\")\n\t\t\t\t","returnType":"String"},{"name":"has_setting","signature":"has_setting(name: String) -> bool","description":"Returns true if a configuration value is present.","returnType":"bool"},{"name":"load_resource_pack","signature":"load_resource_pack(pack: String, replace_files: bool, offset: int) -> bool","description":"Loads the contents of the .pck or .zip file specified by [param pack] into the resource filesystem (res://). Returns true on success.\n\t\t\t\tNote: If a file from [param pack] shares the same path as a file already in the resource filesystem, any attempts to load that file will use the file from [param pack] unless [param replace_files] is set to false.\n\t\t\t\tNote: The optional [param offset] parameter can be used to specify the offset in bytes to the start of the resource pack. This is only supported for .pck files.\n\t\t\t\tNote:  will not show changes made to the contents of res:// after calling this function.","returnType":"bool"},{"name":"localize_path","signature":"localize_path(path: String) -> String","description":"Returns the localized path (starting with res://) corresponding to the absolute, native OS [param path]. See also [method globalize_path].","returnType":"String"},{"name":"save","signature":"save() -> int","description":"Saves the configuration to the project.godot file.\n\t\t\t\tNote: This method is intended to be used by editor plugins, as modified  can't be loaded back in the running app. If you want to change project settings in exported projects, use [method save_custom] to save override.cfg file.","returnType":"int"},{"name":"save_custom","signature":"save_custom(file: String) -> int","description":"Saves the configuration to a custom file. The file extension must be .godot (to save in text-based  format) or .binary (to save in binary format). You can also save override.cfg file, which is also text, but can be used in exported projects unlike other formats.","returnType":"int"},{"name":"set_as_basic","signature":"set_as_basic(name: String, basic: bool) -> void","description":"Defines if the specified setting is considered basic or advanced. Basic settings will always be shown in the project settings. Advanced settings will only be shown if the user enables the \"Advanced Settings\" option.","returnType":"void"},{"name":"set_as_internal","signature":"set_as_internal(name: String, internal: bool) -> void","description":"Defines if the specified setting is considered internal. An internal setting won't show up in the Project Settings dialog. This is mostly useful for addons that need to store their own internal settings without exposing them directly to the user.","returnType":"void"},{"name":"set_initial_value","signature":"set_initial_value(name: String, value: Variant) -> void","description":"Sets the specified setting's initial value. This is the value the setting reverts to.","returnType":"void"},{"name":"set_order","signature":"set_order(name: String, position: int) -> void","description":"Sets the order of a configuration value (influences when saved to the config file).","returnType":"void"},{"name":"set_restart_if_changed","signature":"set_restart_if_changed(name: String, restart: bool) -> void","description":"Sets whether a setting requires restarting the editor to properly take effect.\n\t\t\t\tNote: This is just a hint to display to the user that the editor must be restarted for changes to take effect. Enabling [method set_restart_if_changed] does not delay the setting being set when changed.","returnType":"void"},{"name":"set_setting","signature":"set_setting(name: String, value: Variant) -> void","description":"Sets the value of a setting.\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tProjectSettings.set_setting(\"application/config/name\", \"Example\")\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tProjectSettings.SetSetting(\"application/config/name\", \"Example\");\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tThis can also be used to erase custom project settings. To do this change the setting value to null.","returnType":"void"}],"signals":[{"name":"settings_changed","description":"Emitted when any setting is changed, up to once per process frame."}]},"Projection":{"name":"Projection","description":"A 4×4 matrix for 3D projective transformations.","inherits":"","properties":[{"name":"w","type":"Vector4","description":"The projection matrix's W vector (column 3). Equivalent to array index [code]3[/code]."},{"name":"x","type":"Vector4","description":"The projection matrix's X vector (column 0). Equivalent to array index [code]0[/code]."},{"name":"y","type":"Vector4","description":"The projection matrix's Y vector (column 1). Equivalent to array index [code]1[/code]."},{"name":"z","type":"Vector4","description":"The projection matrix's Z vector (column 2). Equivalent to array index [code]2[/code]."}],"methods":[{"name":"create_depth_correction","signature":"create_depth_correction(flip_y: bool) -> Projection","description":"Creates a new  that projects positions from a depth range of -1 to 1 to one that ranges from 0 to 1, and flips the projected positions vertically, according to [param flip_y].","returnType":"Projection"},{"name":"create_fit_aabb","signature":"create_fit_aabb(aabb: AABB) -> Projection","description":"Creates a new  that scales a given projection to fit around a given  in projection space.","returnType":"Projection"},{"name":"create_for_hmd","signature":"create_for_hmd(eye: int, aspect: float, intraocular_dist: float, display_width: float, display_to_lens: float, oversample: float, z_near: float, z_far: float) -> Projection","description":"Creates a new  for projecting positions onto a head-mounted display with the given X:Y aspect ratio, distance between eyes, display width, distance to lens, oversampling factor, and depth clipping planes.\n\t\t\t\t[param eye] creates the projection for the left eye when set to 1, or the right eye when set to 2.","returnType":"Projection"},{"name":"create_frustum","signature":"create_frustum(left: float, right: float, bottom: float, top: float, z_near: float, z_far: float) -> Projection","description":"Creates a new  that projects positions in a frustum with the given clipping planes.","returnType":"Projection"},{"name":"create_frustum_aspect","signature":"create_frustum_aspect(size: float, aspect: float, offset: Vector2, z_near: float, z_far: float, flip_fov: bool) -> Projection","description":"Creates a new  that projects positions in a frustum with the given size, X:Y aspect ratio, offset, and clipping planes.\n\t\t\t\t[param flip_fov] determines whether the projection's field of view is flipped over its diagonal.","returnType":"Projection"},{"name":"create_light_atlas_rect","signature":"create_light_atlas_rect(rect: Rect2) -> Projection","description":"Creates a new  that projects positions into the given .","returnType":"Projection"},{"name":"create_orthogonal","signature":"create_orthogonal(left: float, right: float, bottom: float, top: float, z_near: float, z_far: float) -> Projection","description":"Creates a new  that projects positions using an orthogonal projection with the given clipping planes.","returnType":"Projection"},{"name":"create_orthogonal_aspect","signature":"create_orthogonal_aspect(size: float, aspect: float, z_near: float, z_far: float, flip_fov: bool) -> Projection","description":"Creates a new  that projects positions using an orthogonal projection with the given size, X:Y aspect ratio, and clipping planes.\n\t\t\t\t[param flip_fov] determines whether the projection's field of view is flipped over its diagonal.","returnType":"Projection"},{"name":"create_perspective","signature":"create_perspective(fovy: float, aspect: float, z_near: float, z_far: float, flip_fov: bool) -> Projection","description":"Creates a new  that projects positions using a perspective projection with the given Y-axis field of view (in degrees), X:Y aspect ratio, and clipping planes.\n\t\t\t\t[param flip_fov] determines whether the projection's field of view is flipped over its diagonal.","returnType":"Projection"},{"name":"create_perspective_hmd","signature":"create_perspective_hmd(fovy: float, aspect: float, z_near: float, z_far: float, flip_fov: bool, eye: int, intraocular_dist: float, convergence_dist: float) -> Projection","description":"Creates a new  that projects positions using a perspective projection with the given Y-axis field of view (in degrees), X:Y aspect ratio, and clipping distances. The projection is adjusted for a head-mounted display with the given distance between eyes and distance to a point that can be focused on.\n\t\t\t\t[param eye] creates the projection for the left eye when set to 1, or the right eye when set to 2.\n\t\t\t\t[param flip_fov] determines whether the projection's field of view is flipped over its diagonal.","returnType":"Projection"},{"name":"determinant","signature":"determinant() -> float","description":"Returns a scalar value that is the signed factor by which areas are scaled by this matrix. If the sign is negative, the matrix flips the orientation of the area.\n\t\t\t\tThe determinant can be used to calculate the invertibility of a matrix or solve linear systems of equations involving the matrix, among other applications.","returnType":"float"},{"name":"flipped_y","signature":"flipped_y() -> Projection","description":"Returns a copy of this  with the signs of the values of the Y column flipped.","returnType":"Projection"},{"name":"get_aspect","signature":"get_aspect() -> float","description":"Returns the X:Y aspect ratio of this 's viewport.","returnType":"float"},{"name":"get_far_plane_half_extents","signature":"get_far_plane_half_extents() -> Vector2","description":"Returns the dimensions of the far clipping plane of the projection, divided by two.","returnType":"Vector2"},{"name":"get_fov","signature":"get_fov() -> float","description":"Returns the horizontal field of view of the projection (in degrees).","returnType":"float"},{"name":"get_fovy","signature":"get_fovy(fovx: float, aspect: float) -> float","description":"Returns the vertical field of view of the projection (in degrees) associated with the given horizontal field of view (in degrees) and aspect ratio.\n\t\t\t\tNote: Unlike most methods of , [param aspect] is expected to be 1 divided by the X:Y aspect ratio.","returnType":"float"},{"name":"get_lod_multiplier","signature":"get_lod_multiplier() -> float","description":"Returns the factor by which the visible level of detail is scaled by this .","returnType":"float"},{"name":"get_pixels_per_meter","signature":"get_pixels_per_meter(for_pixel_width: int) -> int","description":"Returns the number of pixels with the given pixel width displayed per meter, after this  is applied.","returnType":"int"},{"name":"get_projection_plane","signature":"get_projection_plane(plane: int) -> Plane","description":"Returns the clipping plane of this  whose index is given by [param plane].\n\t\t\t\t[param plane] should be equal to one of [constant PLANE_NEAR], [constant PLANE_FAR], [constant PLANE_LEFT], [constant PLANE_TOP], [constant PLANE_RIGHT], or [constant PLANE_BOTTOM].","returnType":"Plane"},{"name":"get_viewport_half_extents","signature":"get_viewport_half_extents() -> Vector2","description":"Returns the dimensions of the viewport plane that this  projects positions onto, divided by two.","returnType":"Vector2"},{"name":"get_z_far","signature":"get_z_far() -> float","description":"Returns the distance for this  beyond which positions are clipped.","returnType":"float"},{"name":"get_z_near","signature":"get_z_near() -> float","description":"Returns the distance for this  before which positions are clipped.","returnType":"float"},{"name":"inverse","signature":"inverse() -> Projection","description":"Returns a  that performs the inverse of this 's projective transformation.","returnType":"Projection"},{"name":"is_orthogonal","signature":"is_orthogonal() -> bool","description":"Returns true if this  performs an orthogonal projection.","returnType":"bool"},{"name":"jitter_offseted","signature":"jitter_offseted(offset: Vector2) -> Projection","description":"Returns a  with the X and Y values from the given  added to the first and second values of the final column respectively.","returnType":"Projection"},{"name":"perspective_znear_adjusted","signature":"perspective_znear_adjusted(new_znear: float) -> Projection","description":"Returns a  with the near clipping distance adjusted to be [param new_znear].\n\t\t\t\tNote: The original  must be a perspective projection.","returnType":"Projection"}],"signals":[]},"PropertyTweener":{"name":"PropertyTweener","description":"Interpolates an 's property over time.","inherits":"Tweener","properties":[],"methods":[{"name":"as_relative","signature":"as_relative() -> PropertyTweener","description":"When called, the final value will be used as a relative value instead.\n\t\t\t\tExample: Move the node by 100 pixels to the right.\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tvar tween = get_tree().create_tween()\n\t\t\t\ttween.tween_property(self, \"position\", Vector2.RIGHT * 100, 1).as_relative()\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tTween tween = GetTree().CreateTween();\n\t\t\t\ttween.TweenProperty(this, \"position\", Vector2.Right * 100.0f, 1.0f).AsRelative();\n\t\t\t\t\n\t\t\t\t","returnType":"PropertyTweener"},{"name":"from","signature":"from(value: Variant) -> PropertyTweener","description":"Sets a custom initial value to the .\n\t\t\t\tExample: Move the node from position (100, 100) to (200, 100).\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tvar tween = get_tree().create_tween()\n\t\t\t\ttween.tween_property(self, \"position\", Vector2(200, 100), 1).from(Vector2(100, 100))\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tTween tween = GetTree().CreateTween();\n\t\t\t\ttween.TweenProperty(this, \"position\", new Vector2(200.0f, 100.0f), 1.0f).From(new Vector2(100.0f, 100.0f));\n\t\t\t\t\n\t\t\t\t","returnType":"PropertyTweener"},{"name":"from_current","signature":"from_current() -> PropertyTweener","description":"Makes the  use the current property value (i.e. at the time of creating this ) as a starting point. This is equivalent of using [method from] with the current value. These two calls will do the same:\n\t\t\t\t\n\t\t\t\t\n\t\t\t\ttween.tween_property(self, \"position\", Vector2(200, 100), 1).from(position)\n\t\t\t\ttween.tween_property(self, \"position\", Vector2(200, 100), 1).from_current()\n\t\t\t\t\n\t\t\t\t\n\t\t\t\ttween.TweenProperty(this, \"position\", new Vector2(200.0f, 100.0f), 1.0f).From(Position);\n\t\t\t\ttween.TweenProperty(this, \"position\", new Vector2(200.0f, 100.0f), 1.0f).FromCurrent();\n\t\t\t\t\n\t\t\t\t","returnType":"PropertyTweener"},{"name":"set_custom_interpolator","signature":"set_custom_interpolator(interpolator_method: Callable) -> PropertyTweener","description":"Allows interpolating the value with a custom easing function. The provided [param interpolator_method] will be called with a value ranging from 0.0 to 1.0 and is expected to return a value within the same range (values outside the range can be used for overshoot). The return value of the method is then used for interpolation between initial and final value. Note that the parameter passed to the method is still subject to the tweener's own easing.\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t@export var curve: Curve\n\n\t\t\t\tfunc _ready():\n\t\t\t\t    var tween = create_tween()\n\t\t\t\t    # Interpolate the value using a custom curve.\n\t\t\t\t    tween.tween_property(self, \"position:x\", 300, 1).as_relative().set_custom_interpolator(tween_curve)\n\n\t\t\t\tfunc tween_curve(v):\n\t\t\t\t    return curve.sample_baked(v)\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tpublic Curve Curve { get; set; }\n\n\t\t\t\tpublic override void _Ready()\n\t\t\t\t{\n\t\t\t\t    Tween tween = CreateTween();\n\t\t\t\t    // Interpolate the value using a custom curve.\n\t\t\t\t    Callable tweenCurveCallable = Callable.From&lt;float, float&gt;(TweenCurve);\n\t\t\t\t    tween.TweenProperty(this, \"position:x\", 300.0f, 1.0f).AsRelative().SetCustomInterpolator(tweenCurveCallable);\n\t\t\t\t}\n\n\t\t\t\tprivate float TweenCurve(float value)\n\t\t\t\t{\n\t\t\t\t    return Curve.SampleBaked(value);\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t","returnType":"PropertyTweener"},{"name":"set_delay","signature":"set_delay(delay: float) -> PropertyTweener","description":"Sets the time in seconds after which the  will start interpolating. By default there's no delay.","returnType":"PropertyTweener"},{"name":"set_ease","signature":"set_ease(ease: int) -> PropertyTweener","description":"Sets the type of used easing from [enum Tween.EaseType]. If not set, the default easing is used from the  that contains this Tweener.","returnType":"PropertyTweener"},{"name":"set_trans","signature":"set_trans(trans: int) -> PropertyTweener","description":"Sets the type of used transition from [enum Tween.TransitionType]. If not set, the default transition is used from the  that contains this Tweener.","returnType":"PropertyTweener"}],"signals":[]},"QuadMesh":{"name":"QuadMesh","description":"Class representing a square mesh facing the camera.","inherits":"PlaneMesh","properties":[],"methods":[],"signals":[]},"QuadOccluder3D":{"name":"QuadOccluder3D","description":"Flat plane shape for use with occlusion culling in .","inherits":"Occluder3D","properties":[{"name":"size","type":"Vector2","description":"The quad's size in 3D units."}],"methods":[],"signals":[]},"Quaternion":{"name":"Quaternion","description":"A unit quaternion used for representing 3D rotations.","inherits":"","properties":[{"name":"w","type":"float","description":"W component of the quaternion. This is the \"real\" part.\n\t\t\t[b]Note:[/b] Quaternion components should usually not be manipulated directly."},{"name":"x","type":"float","description":"X component of the quaternion. This is the value along the \"imaginary\" [code]i[/code] axis.\n\t\t\t[b]Note:[/b] Quaternion components should usually not be manipulated directly."},{"name":"y","type":"float","description":"Y component of the quaternion. This is the value along the \"imaginary\" [code]j[/code] axis.\n\t\t\t[b]Note:[/b] Quaternion components should usually not be manipulated directly."},{"name":"z","type":"float","description":"Z component of the quaternion. This is the value along the \"imaginary\" [code]k[/code] axis.\n\t\t\t[b]Note:[/b] Quaternion components should usually not be manipulated directly."}],"methods":[{"name":"angle_to","signature":"angle_to(to: Quaternion) -> float","description":"Returns the angle between this quaternion and [param to]. This is the magnitude of the angle you would need to rotate by to get from one to the other.\n\t\t\t\tNote: The magnitude of the floating-point error for this method is abnormally high, so methods such as is_zero_approx will not work reliably.","returnType":"float"},{"name":"dot","signature":"dot(with: Quaternion) -> float","description":"Returns the dot product between this quaternion and [param with].\n\t\t\t\tThis is equivalent to (quat.x * with.x) + (quat.y * with.y) + (quat.z * with.z) + (quat.w * with.w).","returnType":"float"},{"name":"exp","signature":"exp() -> Quaternion","description":"Returns the exponential of this quaternion. The rotation axis of the result is the normalized rotation axis of this quaternion, the angle of the result is the length of the vector part of this quaternion.","returnType":"Quaternion"},{"name":"from_euler","signature":"from_euler(euler: Vector3) -> Quaternion","description":"Constructs a new  from the given  of [url=https://en.wikipedia.org/wiki/Euler_angles]Euler angles, in radians. This method always uses the YXZ convention ([constant EULER_ORDER_YXZ]).","returnType":"Quaternion"},{"name":"get_angle","signature":"get_angle() -> float","description":"Returns the angle of the rotation represented by this quaternion.\n\t\t\t\tNote: The quaternion must be normalized.","returnType":"float"},{"name":"get_axis","signature":"get_axis() -> Vector3","description":"Returns the rotation axis of the rotation represented by this quaternion.","returnType":"Vector3"},{"name":"get_euler","signature":"get_euler(order: int) -> Vector3","description":"Returns this quaternion's rotation as a  of [url=https://en.wikipedia.org/wiki/Euler_angles]Euler angles, in radians.\n\t\t\t\tThe order of each consecutive rotation can be changed with [param order] (see [enum EulerOrder] constants). By default, the YXZ convention is used ([constant EULER_ORDER_YXZ]): Z (roll) is calculated first, then X (pitch), and lastly Y (yaw). When using the opposite method [method from_euler], this order is reversed.","returnType":"Vector3"},{"name":"inverse","signature":"inverse() -> Quaternion","description":"Returns the inverse version of this quaternion, inverting the sign of every component except [member w].","returnType":"Quaternion"},{"name":"is_equal_approx","signature":"is_equal_approx(to: Quaternion) -> bool","description":"Returns true if this quaternion and [param to] are approximately equal, by calling [method @GlobalScope.is_equal_approx] on each component.","returnType":"bool"},{"name":"is_finite","signature":"is_finite() -> bool","description":"Returns true if this quaternion is finite, by calling [method @GlobalScope.is_finite] on each component.","returnType":"bool"},{"name":"is_normalized","signature":"is_normalized() -> bool","description":"Returns true if this quaternion is normalized. See also [method normalized].","returnType":"bool"},{"name":"length","signature":"length() -> float","description":"Returns this quaternion's length, also called magnitude.","returnType":"float"},{"name":"length_squared","signature":"length_squared() -> float","description":"Returns this quaternion's length, squared.\n\t\t\t\tNote: This method is faster than [method length], so prefer it if you only need to compare quaternion lengths.","returnType":"float"},{"name":"log","signature":"log() -> Quaternion","description":"Returns the logarithm of this quaternion. Multiplies this quaternion's rotation axis by its rotation angle, and stores the result in the returned quaternion's vector part ([member x], [member y], and [member z]). The returned quaternion's real part ([member w]) is always 0.0.","returnType":"Quaternion"},{"name":"normalized","signature":"normalized() -> Quaternion","description":"Returns a copy of this quaternion, normalized so that its length is 1.0. See also [method is_normalized].","returnType":"Quaternion"},{"name":"slerp","signature":"slerp(to: Quaternion, weight: float) -> Quaternion","description":"Performs a spherical-linear interpolation with the [param to] quaternion, given a [param weight] and returns the result. Both this quaternion and [param to] must be normalized.","returnType":"Quaternion"},{"name":"slerpni","signature":"slerpni(to: Quaternion, weight: float) -> Quaternion","description":"Performs a spherical-linear interpolation with the [param to] quaternion, given a [param weight] and returns the result. Unlike [method slerp], this method does not check if the rotation path is smaller than 90 degrees. Both this quaternion and [param to] must be normalized.","returnType":"Quaternion"},{"name":"spherical_cubic_interpolate","signature":"spherical_cubic_interpolate(b: Quaternion, pre_a: Quaternion, post_b: Quaternion, weight: float) -> Quaternion","description":"Performs a spherical cubic interpolation between quaternions [param pre_a], this vector, [param b], and [param post_b], by the given amount [param weight].","returnType":"Quaternion"},{"name":"spherical_cubic_interpolate_in_time","signature":"spherical_cubic_interpolate_in_time(b: Quaternion, pre_a: Quaternion, post_b: Quaternion, weight: float, b_t: float, pre_a_t: float, post_b_t: float) -> Quaternion","description":"Performs a spherical cubic interpolation between quaternions [param pre_a], this vector, [param b], and [param post_b], by the given amount [param weight].\n\t\t\t\tIt can perform smoother interpolation than [method spherical_cubic_interpolate] by the time values.","returnType":"Quaternion"}],"signals":[]},"RDAttachmentFormat":{"name":"RDAttachmentFormat","description":"Attachment format (used by ).","inherits":"RefCounted","properties":[{"name":"format","type":"int","description":"The attachment's data format."},{"name":"samples","type":"int","description":"The number of samples used when sampling the attachment."},{"name":"usage_flags","type":"int","description":"The attachment's usage flags, which determine what can be done with it."}],"methods":[],"signals":[]},"RDFramebufferPass":{"name":"RDFramebufferPass","description":"Framebuffer pass attachment description (used by ).","inherits":"RefCounted","properties":[{"name":"color_attachments","type":"PackedInt32Array","description":"Color attachments in order starting from 0. If this attachment is not used by the shader, pass ATTACHMENT_UNUSED to skip."},{"name":"depth_attachment","type":"int","description":"Depth attachment. ATTACHMENT_UNUSED should be used if no depth buffer is required for this pass."},{"name":"input_attachments","type":"PackedInt32Array","description":"Used for multipass framebuffers (more than one render pass). Converts an attachment to an input. Make sure to also supply it properly in the [RDUniform] for the uniform set."},{"name":"preserve_attachments","type":"PackedInt32Array","description":"Attachments to preserve in this pass (otherwise they are erased)."},{"name":"resolve_attachments","type":"PackedInt32Array","description":"If the color attachments are multisampled, non-multisampled resolve attachments can be provided."}],"methods":[],"signals":[]},"RDPipelineColorBlendState":{"name":"RDPipelineColorBlendState","description":"Pipeline color blend state (used by ).","inherits":"RefCounted","properties":[{"name":"attachments","type":"RDPipelineColorBlendStateAttachment[]","description":"The attachments that are blended together."},{"name":"blend_constant","type":"Color","description":"The constant color to blend with. See also [method RenderingDevice.draw_list_set_blend_constants]."},{"name":"enable_logic_op","type":"bool","description":"If [code]true[/code], performs the logic operation defined in [member logic_op]."},{"name":"logic_op","type":"int","description":"The logic operation to perform for blending. Only effective if [member enable_logic_op] is [code]true[/code]."}],"methods":[],"signals":[]},"RDPipelineColorBlendStateAttachment":{"name":"RDPipelineColorBlendStateAttachment","description":"Pipeline color blend state attachment (used by ).","inherits":"RefCounted","properties":[{"name":"alpha_blend_op","type":"int","description":"The blend mode to use for the alpha channel."},{"name":"color_blend_op","type":"int","description":"The blend mode to use for the red/green/blue color channels."},{"name":"dst_alpha_blend_factor","type":"int","description":"Controls how the blend factor for the alpha channel is determined based on the destination's fragments."},{"name":"dst_color_blend_factor","type":"int","description":"Controls how the blend factor for the color channels is determined based on the destination's fragments."},{"name":"enable_blend","type":"bool","description":"If [code]true[/code], performs blending between the source and destination according to the factors defined in [member src_color_blend_factor], [member dst_color_blend_factor], [member src_alpha_blend_factor] and [member dst_alpha_blend_factor]. The blend modes [member color_blend_op] and [member alpha_blend_op] are also taken into account, with [member write_r], [member write_g], [member write_b] and [member write_a] controlling the output."},{"name":"src_alpha_blend_factor","type":"int","description":"Controls how the blend factor for the alpha channel is determined based on the source's fragments."},{"name":"src_color_blend_factor","type":"int","description":"Controls how the blend factor for the color channels is determined based on the source's fragments."},{"name":"write_a","type":"bool","description":"If [code]true[/code], writes the new alpha channel to the final result."},{"name":"write_b","type":"bool","description":"If [code]true[/code], writes the new blue color channel to the final result."},{"name":"write_g","type":"bool","description":"If [code]true[/code], writes the new green color channel to the final result."},{"name":"write_r","type":"bool","description":"If [code]true[/code], writes the new red color channel to the final result."}],"methods":[{"name":"set_as_mix","signature":"set_as_mix() -> void","description":"Convenience method to perform standard mix blending with straight (non-premultiplied) alpha. This sets [member enable_blend] to true, [member src_color_blend_factor] to [constant RenderingDevice.BLEND_FACTOR_SRC_ALPHA], [member dst_color_blend_factor] to [constant RenderingDevice.BLEND_FACTOR_ONE_MINUS_SRC_ALPHA], [member src_alpha_blend_factor] to [constant RenderingDevice.BLEND_FACTOR_SRC_ALPHA] and [member dst_alpha_blend_factor] to [constant RenderingDevice.BLEND_FACTOR_ONE_MINUS_SRC_ALPHA].","returnType":"void"}],"signals":[]},"RDPipelineDepthStencilState":{"name":"RDPipelineDepthStencilState","description":"Pipeline depth/stencil state (used by ).","inherits":"RefCounted","properties":[{"name":"back_op_compare","type":"int","description":"The method used for comparing the previous back stencil value and [member back_op_reference]."},{"name":"back_op_compare_mask","type":"int","description":"Selects which bits from the back stencil value will be compared."},{"name":"back_op_depth_fail","type":"int","description":"The operation to perform on the stencil buffer for back pixels that pass the stencil test but fail the depth test."},{"name":"back_op_fail","type":"int","description":"The operation to perform on the stencil buffer for back pixels that fail the stencil test."},{"name":"back_op_pass","type":"int","description":"The operation to perform on the stencil buffer for back pixels that pass the stencil test."},{"name":"back_op_reference","type":"int","description":"The value the previous back stencil value will be compared to."},{"name":"back_op_write_mask","type":"int","description":"Selects which bits from the back stencil value will be changed."},{"name":"depth_compare_operator","type":"int","description":"The method used for comparing the previous and current depth values."},{"name":"depth_range_max","type":"float","description":"The maximum depth that returns [code]true[/code] for [member enable_depth_range]."},{"name":"depth_range_min","type":"float","description":"The minimum depth that returns [code]true[/code] for [member enable_depth_range]."},{"name":"enable_depth_range","type":"bool","description":"If [code]true[/code], each depth value will be tested to see if it is between [member depth_range_min] and [member depth_range_max]. If it is outside of these values, it is discarded."},{"name":"enable_depth_test","type":"bool","description":"If [code]true[/code], enables depth testing which allows objects to be automatically occluded by other objects based on their depth. This also allows objects to be partially occluded by other objects. If [code]false[/code], objects will appear in the order they were drawn (like in Godot's 2D renderer)."},{"name":"enable_depth_write","type":"bool","description":"If [code]true[/code], writes to the depth buffer whenever the depth test returns [code]true[/code]. Only works when enable_depth_test is also [code]true[/code]."},{"name":"enable_stencil","type":"bool","description":"If [code]true[/code], enables stencil testing. There are separate stencil buffers for front-facing triangles and back-facing triangles. See properties that begin with \"front_op\" and properties with \"back_op\" for each."},{"name":"front_op_compare","type":"int","description":"The method used for comparing the previous front stencil value and [member front_op_reference]."},{"name":"front_op_compare_mask","type":"int","description":"Selects which bits from the front stencil value will be compared."},{"name":"front_op_depth_fail","type":"int","description":"The operation to perform on the stencil buffer for front pixels that pass the stencil test but fail the depth test."},{"name":"front_op_fail","type":"int","description":"The operation to perform on the stencil buffer for front pixels that fail the stencil test."},{"name":"front_op_pass","type":"int","description":"The operation to perform on the stencil buffer for front pixels that pass the stencil test."},{"name":"front_op_reference","type":"int","description":"The value the previous front stencil value will be compared to."},{"name":"front_op_write_mask","type":"int","description":"Selects which bits from the front stencil value will be changed."}],"methods":[],"signals":[]},"RDPipelineMultisampleState":{"name":"RDPipelineMultisampleState","description":"Pipeline multisample state (used by ).","inherits":"RefCounted","properties":[{"name":"enable_alpha_to_coverage","type":"bool","description":"If [code]true[/code], alpha to coverage is enabled. This generates a temporary coverage value based on the alpha component of the fragment's first color output. This allows alpha transparency to make use of multisample antialiasing."},{"name":"enable_alpha_to_one","type":"bool","description":"If [code]true[/code], alpha is forced to either [code]0.0[/code] or [code]1.0[/code]. This allows hardening the edges of antialiased alpha transparencies. Only relevant if [member enable_alpha_to_coverage] is [code]true[/code]."},{"name":"enable_sample_shading","type":"bool","description":"If [code]true[/code], enables per-sample shading which replaces MSAA by SSAA. This provides higher quality antialiasing that works with transparent (alpha scissor) edges. This has a very high performance cost. See also [member min_sample_shading]. See the [url=https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#primsrast-sampleshading]per-sample shading Vulkan documentation[/url] for more details."},{"name":"min_sample_shading","type":"float","description":"The multiplier of [member sample_count] that determines how many samples are performed for each fragment. Must be between [code]0.0[/code] and [code]1.0[/code] (inclusive). Only effective if [member enable_sample_shading] is [code]true[/code]. If [member min_sample_shading] is [code]1.0[/code], fragment invocation must only read from the coverage index sample. Tile image access must not be used if [member enable_sample_shading] is [i]not[/i] [code]1.0[/code]."},{"name":"sample_count","type":"int","description":"The number of MSAA samples (or SSAA samples if [member enable_sample_shading] is [code]true[/code]) to perform. Higher values result in better antialiasing, at the cost of performance."},{"name":"sample_masks","type":"int[]","description":"The sample mask array. See the [url=https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#fragops-samplemask]sample mask Vulkan documentation[/url] for more details."}],"methods":[],"signals":[]},"RDPipelineRasterizationState":{"name":"RDPipelineRasterizationState","description":"Pipeline rasterization state (used by ).","inherits":"RefCounted","properties":[{"name":"cull_mode","type":"int","description":"The cull mode to use when drawing polygons, which determines whether front faces or backfaces are hidden."},{"name":"depth_bias_clamp","type":"float","description":"A limit for how much each depth value can be offset. If negative, it serves as a minimum value, but if positive, it serves as a maximum value."},{"name":"depth_bias_constant_factor","type":"float","description":"A constant offset added to each depth value. Applied after [member depth_bias_slope_factor]."},{"name":"depth_bias_enabled","type":"bool","description":"If [code]true[/code], each generated depth value will by offset by some amount. The specific amount is generated per polygon based on the values of [member depth_bias_slope_factor] and [member depth_bias_constant_factor]."},{"name":"depth_bias_slope_factor","type":"float","description":"A constant scale applied to the slope of each polygons' depth. Applied before [member depth_bias_constant_factor]."},{"name":"discard_primitives","type":"bool","description":"If [code]true[/code], primitives are discarded immediately before the rasterization stage."},{"name":"enable_depth_clamp","type":"bool","description":"If [code]true[/code], clamps depth values according to the minimum and maximum depth of the associated viewport."},{"name":"front_face","type":"int","description":"The winding order to use to determine which face of a triangle is considered its front face."},{"name":"line_width","type":"float","description":"The line width to use when drawing lines (in pixels). Thick lines may not be supported on all hardware."},{"name":"patch_control_points","type":"int","description":"The number of control points to use when drawing a patch with tessellation enabled. Higher values result in higher quality at the cost of performance."},{"name":"wireframe","type":"bool","description":"If [code]true[/code], performs wireframe rendering for triangles instead of flat or textured rendering."}],"methods":[],"signals":[]},"RDPipelineSpecializationConstant":{"name":"RDPipelineSpecializationConstant","description":"Pipeline specialization constant (used by ).","inherits":"RefCounted","properties":[{"name":"constant_id","type":"int","description":"The identifier of the specialization constant. This is a value starting from [code]0[/code] and that increments for every different specialization constant for a given shader."},{"name":"value","type":"Variant","description":"The specialization constant's value. Only [bool], [int] and [float] types are valid for specialization constants."}],"methods":[],"signals":[]},"RDSamplerState":{"name":"RDSamplerState","description":"Sampler state (used by ).","inherits":"RefCounted","properties":[{"name":"anisotropy_max","type":"float","description":"Maximum anisotropy that can be used when sampling. Only effective if [member use_anisotropy] is [code]true[/code]. Higher values result in a sharper sampler at oblique angles, at the cost of performance (due to memory bandwidth). This value may be limited by the graphics hardware in use. Most graphics hardware only supports values up to [code]16.0[/code].\n\t\t\tIf [member anisotropy_max] is [code]1.0[/code], forcibly disables anisotropy even if [member use_anisotropy] is [code]true[/code]."},{"name":"border_color","type":"int","description":"The border color that will be returned when sampling outside the sampler's bounds and the [member repeat_u], [member repeat_v] or [member repeat_w] modes have repeating disabled."},{"name":"compare_op","type":"int","description":"The compare operation to use. Only effective if [member enable_compare] is [code]true[/code]."},{"name":"enable_compare","type":"bool","description":"If [code]true[/code], returned values will be based on the comparison operation defined in [member compare_op]. This is a hardware-based approach and is therefore faster than performing this manually in a shader. For example, compare operations are used for shadow map rendering by comparing depth values from a shadow sampler."},{"name":"lod_bias","type":"float","description":"The mipmap LOD bias to use. Positive values will make the sampler blurrier at a given distance, while negative values will make the sampler sharper at a given distance (at the risk of looking grainy). Recommended values are between [code]-0.5[/code] and [code]0.0[/code]. Only effective if the sampler has mipmaps available."},{"name":"mag_filter","type":"int","description":"The sampler's magnification filter. It is the filtering method used when sampling texels that appear bigger than on-screen pixels."},{"name":"max_lod","type":"float","description":"The maximum mipmap LOD bias to display (lowest resolution). Only effective if the sampler has mipmaps available."},{"name":"min_filter","type":"int","description":"The sampler's minification filter. It is the filtering method used when sampling texels that appear smaller than on-screen pixels."},{"name":"min_lod","type":"float","description":"The minimum mipmap LOD bias to display (highest resolution). Only effective if the sampler has mipmaps available."},{"name":"mip_filter","type":"int","description":"The filtering method to use for mipmaps."},{"name":"repeat_u","type":"int","description":"The repeat mode to use along the U axis of UV coordinates. This affects the returned values if sampling outside the UV bounds."},{"name":"repeat_v","type":"int","description":"The repeat mode to use along the V axis of UV coordinates. This affects the returned values if sampling outside the UV bounds."},{"name":"repeat_w","type":"int","description":"The repeat mode to use along the W axis of UV coordinates. This affects the returned values if sampling outside the UV bounds. Only effective for 3D samplers."},{"name":"unnormalized_uvw","type":"bool","description":"If [code]true[/code], the texture will be sampled with coordinates ranging from 0 to the texture's resolution. Otherwise, the coordinates will be normalized and range from 0 to 1."},{"name":"use_anisotropy","type":"bool","description":"If [code]true[/code], perform anisotropic sampling. See [member anisotropy_max]."}],"methods":[],"signals":[]},"RDShaderFile":{"name":"RDShaderFile","description":"Compiled shader file in SPIR-V form (used by ). Not to be confused with Godot's own .","inherits":"Resource","properties":[{"name":"base_error","type":"String","description":"The base compilation error message, which indicates errors not related to a specific shader stage if non-empty. If empty, shader compilation is not necessarily successful (check [RDShaderSPIRV]'s error message members)."}],"methods":[{"name":"get_spirv","signature":"get_spirv(version: StringName) -> RDShaderSPIRV","description":"Returns the SPIR-V intermediate representation for the specified shader [param version].","returnType":"RDShaderSPIRV"},{"name":"get_version_list","signature":"get_version_list() -> StringName[]","description":"Returns the list of compiled versions for this shader.","returnType":"StringName[]"},{"name":"set_bytecode","signature":"set_bytecode(bytecode: RDShaderSPIRV, version: StringName) -> void","description":"Sets the SPIR-V [param bytecode] that will be compiled for the specified [param version].","returnType":"void"}],"signals":[]},"RDShaderSPIRV":{"name":"RDShaderSPIRV","description":"SPIR-V intermediate representation as part of a  (used by ).","inherits":"Resource","properties":[{"name":"bytecode_compute","type":"PackedByteArray","description":"The SPIR-V bytecode for the compute shader stage."},{"name":"bytecode_fragment","type":"PackedByteArray","description":"The SPIR-V bytecode for the fragment shader stage."},{"name":"bytecode_tesselation_control","type":"PackedByteArray","description":"The SPIR-V bytecode for the tessellation control shader stage."},{"name":"bytecode_tesselation_evaluation","type":"PackedByteArray","description":"The SPIR-V bytecode for the tessellation evaluation shader stage."},{"name":"bytecode_vertex","type":"PackedByteArray","description":"The SPIR-V bytecode for the vertex shader stage."},{"name":"compile_error_compute","type":"String","description":"The compilation error message for the compute shader stage (set by the SPIR-V compiler and Godot). If empty, shader compilation was successful."},{"name":"compile_error_fragment","type":"String","description":"The compilation error message for the fragment shader stage (set by the SPIR-V compiler and Godot). If empty, shader compilation was successful."},{"name":"compile_error_tesselation_control","type":"String","description":"The compilation error message for the tessellation control shader stage (set by the SPIR-V compiler and Godot). If empty, shader compilation was successful."},{"name":"compile_error_tesselation_evaluation","type":"String","description":"The compilation error message for the tessellation evaluation shader stage (set by the SPIR-V compiler and Godot). If empty, shader compilation was successful."},{"name":"compile_error_vertex","type":"String","description":"The compilation error message for the vertex shader stage (set by the SPIR-V compiler and Godot). If empty, shader compilation was successful."}],"methods":[{"name":"get_stage_bytecode","signature":"get_stage_bytecode(stage: int) -> PackedByteArray","description":"Equivalent to getting one of [member bytecode_compute], [member bytecode_fragment], [member bytecode_tesselation_control], [member bytecode_tesselation_evaluation], [member bytecode_vertex].","returnType":"PackedByteArray"},{"name":"get_stage_compile_error","signature":"get_stage_compile_error(stage: int) -> String","description":"Returns the compilation error message for the given shader [param stage]. Equivalent to getting one of [member compile_error_compute], [member compile_error_fragment], [member compile_error_tesselation_control], [member compile_error_tesselation_evaluation], [member compile_error_vertex].","returnType":"String"},{"name":"set_stage_bytecode","signature":"set_stage_bytecode(stage: int, bytecode: PackedByteArray) -> void","description":"Sets the SPIR-V [param bytecode] for the given shader [param stage]. Equivalent to setting one of [member bytecode_compute], [member bytecode_fragment], [member bytecode_tesselation_control], [member bytecode_tesselation_evaluation], [member bytecode_vertex].","returnType":"void"},{"name":"set_stage_compile_error","signature":"set_stage_compile_error(stage: int, compile_error: String) -> void","description":"Sets the compilation error message for the given shader [param stage] to [param compile_error]. Equivalent to setting one of [member compile_error_compute], [member compile_error_fragment], [member compile_error_tesselation_control], [member compile_error_tesselation_evaluation], [member compile_error_vertex].","returnType":"void"}],"signals":[]},"RDShaderSource":{"name":"RDShaderSource","description":"Shader source code (used by ).","inherits":"RefCounted","properties":[{"name":"language","type":"int","description":"The language the shader is written in."},{"name":"source_compute","type":"String","description":"Source code for the shader's compute stage."},{"name":"source_fragment","type":"String","description":"Source code for the shader's fragment stage."},{"name":"source_tesselation_control","type":"String","description":"Source code for the shader's tessellation control stage."},{"name":"source_tesselation_evaluation","type":"String","description":"Source code for the shader's tessellation evaluation stage."},{"name":"source_vertex","type":"String","description":"Source code for the shader's vertex stage."}],"methods":[{"name":"get_stage_source","signature":"get_stage_source(stage: int) -> String","description":"Returns source code for the specified shader [param stage]. Equivalent to getting one of [member source_compute], [member source_fragment], [member source_tesselation_control], [member source_tesselation_evaluation] or [member source_vertex].","returnType":"String"},{"name":"set_stage_source","signature":"set_stage_source(stage: int, source: String) -> void","description":"Sets [param source] code for the specified shader [param stage]. Equivalent to setting one of [member source_compute], [member source_fragment], [member source_tesselation_control], [member source_tesselation_evaluation] or [member source_vertex].\n\t\t\t\tNote: If you set the compute shader source code using this method directly, remember to remove the Godot-specific hint #.","returnType":"void"}],"signals":[]},"RDTextureFormat":{"name":"RDTextureFormat","description":"Texture format (used by ).","inherits":"RefCounted","properties":[{"name":"array_layers","type":"int","description":"The number of layers in the texture. Only relevant for 2D texture arrays."},{"name":"depth","type":"int","description":"The texture's depth (in pixels). This is always [code]1[/code] for 2D textures."},{"name":"format","type":"int","description":"The texture's pixel data format."},{"name":"height","type":"int","description":"The texture's height (in pixels)."},{"name":"is_discardable","type":"bool","description":"If a texture is discardable, its contents do not need to be preserved between frames. This flag is only relevant when the texture is used as target in a draw list.\n\t\t\tThis information is used by [RenderingDevice] to figure out if a texture's contents can be discarded, eliminating unnecessary writes to memory and boosting performance."},{"name":"is_resolve_buffer","type":"bool","description":"The texture will be used as the destination of a resolve operation."},{"name":"mipmaps","type":"int","description":"The number of mipmaps available in the texture."},{"name":"samples","type":"int","description":"The number of samples used when sampling the texture."},{"name":"texture_type","type":"int","description":"The texture type."},{"name":"usage_bits","type":"int","description":"The texture's usage bits, which determine what can be done using the texture."},{"name":"width","type":"int","description":"The texture's width (in pixels)."}],"methods":[{"name":"add_shareable_format","signature":"add_shareable_format(format: int) -> void","description":"Adds [param format] as a valid format for the corresponding 's [member RDTextureView.format_override] property. If any format is added as shareable, then the main [member format] must also be added.","returnType":"void"},{"name":"remove_shareable_format","signature":"remove_shareable_format(format: int) -> void","description":"Removes [param format] from the list of valid formats that the corresponding 's [member RDTextureView.format_override] property can be set to.","returnType":"void"}],"signals":[]},"RDTextureView":{"name":"RDTextureView","description":"Texture view (used by ).","inherits":"RefCounted","properties":[{"name":"format_override","type":"int","description":"Optional override for the data format to return sampled values in. The corresponding [RDTextureFormat] must have had this added as a shareable format. The default value of [constant RenderingDevice.DATA_FORMAT_MAX] does not override the format."},{"name":"swizzle_a","type":"int","description":"The channel to sample when sampling the alpha channel."},{"name":"swizzle_b","type":"int","description":"The channel to sample when sampling the blue color channel."},{"name":"swizzle_g","type":"int","description":"The channel to sample when sampling the green color channel."},{"name":"swizzle_r","type":"int","description":"The channel to sample when sampling the red color channel."}],"methods":[],"signals":[]},"RDUniform":{"name":"RDUniform","description":"Shader uniform (used by ).","inherits":"RefCounted","properties":[{"name":"binding","type":"int","description":"The uniform's binding."},{"name":"uniform_type","type":"int","description":"The uniform's data type."}],"methods":[{"name":"add_id","signature":"add_id(id: RID) -> void","description":"Binds the given id to the uniform. The data associated with the id is then used when the uniform is passed to a shader.","returnType":"void"},{"name":"clear_ids","signature":"clear_ids() -> void","description":"Unbinds all ids currently bound to the uniform.","returnType":"void"},{"name":"get_ids","signature":"get_ids() -> RID[]","description":"Returns an array of all ids currently bound to the uniform.","returnType":"RID[]"}],"signals":[]},"RDVertexAttribute":{"name":"RDVertexAttribute","description":"Vertex attribute (used by ).","inherits":"RefCounted","properties":[{"name":"format","type":"int","description":"The way that this attribute's data is interpreted when sent to a shader."},{"name":"frequency","type":"int","description":"The rate at which this attribute is pulled from its vertex buffer."},{"name":"location","type":"int","description":"The location in the shader that this attribute is bound to."},{"name":"offset","type":"int","description":"The number of bytes between the start of the vertex buffer and the first instance of this attribute."},{"name":"stride","type":"int","description":"The number of bytes between the starts of consecutive instances of this attribute."}],"methods":[],"signals":[]},"RID":{"name":"RID","description":"A handle for a 's unique identifier.","inherits":"","properties":[],"methods":[{"name":"get_id","signature":"get_id() -> int","description":"Returns the ID of the referenced low-level resource.","returnType":"int"},{"name":"is_valid","signature":"is_valid() -> bool","description":"Returns true if the  is not 0.","returnType":"bool"}],"signals":[]},"RandomNumberGenerator":{"name":"RandomNumberGenerator","description":"Provides methods for generating pseudo-random numbers.","inherits":"RefCounted","properties":[{"name":"seed","type":"int","description":"Initializes the random number generator state based on the given seed value. A given seed will give a reproducible sequence of pseudo-random numbers.\n\t\t\t[b]Note:[/b] The RNG does not have an avalanche effect, and can output similar random streams given similar seeds. Consider using a hash function to improve your seed quality if they're sourced externally.\n\t\t\t[b]Note:[/b] Setting this property produces a side effect of changing the internal [member state], so make sure to initialize the seed [i]before[/i] modifying the [member state]:\n\t\t\t[b]Note:[/b] The default value of this property is pseudo-random, and changes when calling [method randomize]. The [code]0[/code] value documented here is a placeholder, and not the actual default seed.\n\t\t\t[codeblock]\n\t\t\tvar rng = RandomNumberGenerator.new()\n\t\t\trng.seed = hash(\"Godot\")\n\t\t\trng.state = 100 # Restore to some previously saved state.\n\t\t\t[/codeblock]"},{"name":"state","type":"int","description":"The current state of the random number generator. Save and restore this property to restore the generator to a previous state:\n\t\t\t[codeblock]\n\t\t\tvar rng = RandomNumberGenerator.new()\n\t\t\tprint(rng.randf())\n\t\t\tvar saved_state = rng.state # Store current state.\n\t\t\tprint(rng.randf()) # Advance internal state.\n\t\t\trng.state = saved_state # Restore the state.\n\t\t\tprint(rng.randf()) # Prints the same value as previously.\n\t\t\t[/codeblock]\n\t\t\t[b]Note:[/b] Do not set state to arbitrary values, since the random number generator requires the state to have certain qualities to behave properly. It should only be set to values that came from the state property itself. To initialize the random number generator with arbitrary input, use [member seed] instead.\n\t\t\t[b]Note:[/b] The default value of this property is pseudo-random, and changes when calling [method randomize]. The [code]0[/code] value documented here is a placeholder, and not the actual default seed."}],"methods":[{"name":"rand_weighted","signature":"rand_weighted(weights: PackedFloat32Array) -> int","description":"Returns a random index with non-uniform weights. Prints an error and returns -1 if the array is empty.\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tvar rng = RandomNumberGenerator.new()\n\n\t\t\t\tvar my_array = [\"one\", \"two\", \"three\", \"four\"]\n\t\t\t\tvar weights = PackedFloat32Array([0.5, 1, 1, 2])\n\n\t\t\t\t# Prints one of the four elements in `my_array`.\n\t\t\t\t# It is more likely to print \"four\", and less likely to print \"one\".\n\t\t\t\tprint(my_array[rng.rand_weighted(weights)])\n\t\t\t\t\n\t\t\t\t","returnType":"int"},{"name":"randf","signature":"randf() -> float","description":"Returns a pseudo-random float between 0.0 and 1.0 (inclusive).","returnType":"float"},{"name":"randf_range","signature":"randf_range(from: float, to: float) -> float","description":"Returns a pseudo-random float between [param from] and [param to] (inclusive).","returnType":"float"},{"name":"randfn","signature":"randfn(mean: float, deviation: float) -> float","description":"Returns a [url=https://en.wikipedia.org/wiki/Normal_distribution]normally-distributed, pseudo-random floating-point number from the specified [param mean] and a standard [param deviation]. This is also known as a Gaussian distribution.\n\t\t\t\tNote: This method uses the [url=https://en.wikipedia.org/wiki/Box%E2%80%93Muller_transform]Box-Muller transform algorithm.","returnType":"float"},{"name":"randi","signature":"randi() -> int","description":"Returns a pseudo-random 32-bit unsigned integer between 0 and 4294967295 (inclusive).","returnType":"int"},{"name":"randi_range","signature":"randi_range(from: int, to: int) -> int","description":"Returns a pseudo-random 32-bit signed integer between [param from] and [param to] (inclusive).","returnType":"int"},{"name":"randomize","signature":"randomize() -> void","description":"Sets up a time-based seed for this  instance. Unlike the [@GlobalScope] random number generation functions, different  instances can use different seeds.","returnType":"void"}],"signals":[]},"Range":{"name":"Range","description":"Abstract base class for controls that represent a number within a range.","inherits":"Control","properties":[{"name":"allow_greater","type":"bool","description":"If [code]true[/code], [member value] may be greater than [member max_value]."},{"name":"allow_lesser","type":"bool","description":"If [code]true[/code], [member value] may be less than [member min_value]."},{"name":"exp_edit","type":"bool","description":"If [code]true[/code], and [member min_value] is greater than 0, [member value] will be represented exponentially rather than linearly."},{"name":"max_value","type":"float","description":"Maximum value. Range is clamped if [member value] is greater than [member max_value]."},{"name":"min_value","type":"float","description":"Minimum value. Range is clamped if [member value] is less than [member min_value]."},{"name":"page","type":"float","description":"Page size. Used mainly for [ScrollBar]. A [ScrollBar]'s grabber length is the [ScrollBar]'s size multiplied by [member page] over the difference between [member min_value] and [member max_value]."},{"name":"ratio","type":"float","description":"The value mapped between 0 and 1."},{"name":"rounded","type":"bool","description":"If [code]true[/code], [member value] will always be rounded to the nearest integer."},{"name":"step","type":"float","description":"If greater than 0, [member value] will always be rounded to a multiple of this property's value. If [member rounded] is also [code]true[/code], [member value] will first be rounded to a multiple of this property's value, then rounded to the nearest integer."},{"name":"value","type":"float","description":"Range's current value. Changing this property (even via code) will trigger [signal value_changed] signal. Use [method set_value_no_signal] if you want to avoid it."}],"methods":[{"name":"_value_changed","signature":"_value_changed(new_value: float) -> void","description":"Called when the 's value is changed (following the same conditions as [signal value_changed]).","returnType":"void"},{"name":"set_value_no_signal","signature":"set_value_no_signal(value: float) -> void","description":"Sets the 's current value to the specified [param value], without emitting the [signal value_changed] signal.","returnType":"void"},{"name":"share","signature":"share(with: Node) -> void","description":"Binds two s together along with any ranges previously grouped with either of them. When any of range's member variables change, it will share the new value with all other ranges in its group.","returnType":"void"},{"name":"unshare","signature":"unshare() -> void","description":"Stops the  from sharing its member variables with any other.","returnType":"void"}],"signals":[{"name":"changed","description":"Emitted when [member min_value], [member max_value], [member page], or [member step] change."},{"name":"value_changed","description":"Emitted when [member value] changes. When used on a [Slider], this is called continuously while dragging (potentially every frame). If you are performing an expensive operation in a function connected to [signal value_changed], consider using a [i]debouncing[/i] [Timer] to call the function less often.\n\t\t\t\t[b]Note:[/b] Unlike signals such as [signal LineEdit.text_changed], [signal value_changed] is also emitted when [param value] is set directly via code."}]},"RayCast2D":{"name":"RayCast2D","description":"A ray in 2D space, used to find the first  it intersects.","inherits":"Node2D","properties":[{"name":"collide_with_areas","type":"bool","description":"If [code]true[/code], collisions with [Area2D]s will be reported."},{"name":"collide_with_bodies","type":"bool","description":"If [code]true[/code], collisions with [PhysicsBody2D]s will be reported."},{"name":"collision_mask","type":"int","description":"The ray's collision mask. Only objects in at least one collision layer enabled in the mask will be detected. See [url=$DOCS_URL/tutorials/physics/physics_introduction.html#collision-layers-and-masks]Collision layers and masks[/url] in the documentation for more information."},{"name":"enabled","type":"bool","description":"If [code]true[/code], collisions will be reported."},{"name":"exclude_parent","type":"bool","description":"If [code]true[/code], the parent node will be excluded from collision detection."},{"name":"hit_from_inside","type":"bool","description":"If [code]true[/code], the ray will detect a hit when starting inside shapes. In this case the collision normal will be [code]Vector2(0, 0)[/code]. Does not affect concave polygon shapes."},{"name":"target_position","type":"Vector2","description":"The ray's destination point, relative to the RayCast's [code]position[/code]."}],"methods":[{"name":"add_exception","signature":"add_exception(node: CollisionObject2D) -> void","description":"Adds a collision exception so the ray does not report collisions with the specified  node.","returnType":"void"},{"name":"add_exception_rid","signature":"add_exception_rid(rid: RID) -> void","description":"Adds a collision exception so the ray does not report collisions with the specified .","returnType":"void"},{"name":"clear_exceptions","signature":"clear_exceptions() -> void","description":"Removes all collision exceptions for this ray.","returnType":"void"},{"name":"force_raycast_update","signature":"force_raycast_update() -> void","description":"Updates the collision information for the ray immediately, without waiting for the next _physics_process call. Use this method, for example, when the ray or its parent has changed state.\n\t\t\t\tNote: [member enabled] does not need to be true for this to work.","returnType":"void"},{"name":"get_collider","signature":"get_collider() -> Object","description":"Returns the first object that the ray intersects, or null if no object is intersecting the ray (i.e. [method is_colliding] returns false).","returnType":"Object"},{"name":"get_collider_rid","signature":"get_collider_rid() -> RID","description":"Returns the  of the first object that the ray intersects, or an empty  if no object is intersecting the ray (i.e. [method is_colliding] returns false).","returnType":"RID"},{"name":"get_collider_shape","signature":"get_collider_shape() -> int","description":"Returns the shape ID of the first object that the ray intersects, or 0 if no object is intersecting the ray (i.e. [method is_colliding] returns false).\n\t\t\t\tTo get the intersected shape node, for a  target, use:\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tvar target = get_collider() # A CollisionObject2D.\n\t\t\t\tvar shape_id = get_collider_shape() # The shape index in the collider.\n\t\t\t\tvar owner_id = target.shape_find_owner(shape_id) # The owner ID in the collider.\n\t\t\t\tvar shape = target.shape_owner_get_owner(owner_id)\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tvar target = (CollisionObject2D)GetCollider(); // A CollisionObject2D.\n\t\t\t\tvar shapeId = GetColliderShape(); // The shape index in the collider.\n\t\t\t\tvar ownerId = target.ShapeFindOwner(shapeId); // The owner ID in the collider.\n\t\t\t\tvar shape = target.ShapeOwnerGetOwner(ownerId);\n\t\t\t\t\n\t\t\t\t","returnType":"int"},{"name":"get_collision_mask_value","signature":"get_collision_mask_value(layer_number: int) -> bool","description":"Returns whether or not the specified layer of the [member collision_mask] is enabled, given a [param layer_number] between 1 and 32.","returnType":"bool"},{"name":"get_collision_normal","signature":"get_collision_normal() -> Vector2","description":"Returns the normal of the intersecting object's shape at the collision point, or Vector2(0, 0) if the ray starts inside the shape and [member hit_from_inside] is true.\n\t\t\t\tNote: Check that [method is_colliding] returns true before calling this method to ensure the returned normal is valid and up-to-date.","returnType":"Vector2"},{"name":"get_collision_point","signature":"get_collision_point() -> Vector2","description":"Returns the collision point at which the ray intersects the closest object, in the global coordinate system. If [member hit_from_inside] is true and the ray starts inside of a collision shape, this function will return the origin point of the ray.\n\t\t\t\tNote: Check that [method is_colliding] returns true before calling this method to ensure the returned point is valid and up-to-date.","returnType":"Vector2"},{"name":"is_colliding","signature":"is_colliding() -> bool","description":"Returns whether any object is intersecting with the ray's vector (considering the vector length).","returnType":"bool"},{"name":"remove_exception","signature":"remove_exception(node: CollisionObject2D) -> void","description":"Removes a collision exception so the ray does report collisions with the specified  node.","returnType":"void"},{"name":"remove_exception_rid","signature":"remove_exception_rid(rid: RID) -> void","description":"Removes a collision exception so the ray does report collisions with the specified .","returnType":"void"},{"name":"set_collision_mask_value","signature":"set_collision_mask_value(layer_number: int, value: bool) -> void","description":"Based on [param value], enables or disables the specified layer in the [member collision_mask], given a [param layer_number] between 1 and 32.","returnType":"void"}],"signals":[]},"RayCast3D":{"name":"RayCast3D","description":"A ray in 3D space, used to find the first object it intersects.","inherits":"Node3D","properties":[{"name":"collide_with_areas","type":"bool","description":"If [code]true[/code], collisions with [Area3D]s will be reported."},{"name":"collide_with_bodies","type":"bool","description":"If [code]true[/code], collisions with [PhysicsBody3D]s will be reported."},{"name":"collision_mask","type":"int","description":"The ray's collision mask. Only objects in at least one collision layer enabled in the mask will be detected. See [url=$DOCS_URL/tutorials/physics/physics_introduction.html#collision-layers-and-masks]Collision layers and masks[/url] in the documentation for more information."},{"name":"debug_shape_custom_color","type":"Color","description":"The custom color to use to draw the shape in the editor and at run-time if [b]Visible Collision Shapes[/b] is enabled in the [b]Debug[/b] menu. This color will be highlighted at run-time if the [RayCast3D] is colliding with something.\n\t\t\tIf set to [code]Color(0.0, 0.0, 0.0)[/code] (by default), the color set in [member ProjectSettings.debug/shapes/collision/shape_color] is used."},{"name":"debug_shape_thickness","type":"int","description":"If set to [code]1[/code], a line is used as the debug shape. Otherwise, a truncated pyramid is drawn to represent the [RayCast3D]. Requires [b]Visible Collision Shapes[/b] to be enabled in the [b]Debug[/b] menu for the debug shape to be visible at run-time."},{"name":"enabled","type":"bool","description":"If [code]true[/code], collisions will be reported."},{"name":"exclude_parent","type":"bool","description":"If [code]true[/code], collisions will be ignored for this RayCast3D's immediate parent."},{"name":"hit_back_faces","type":"bool","description":"If [code]true[/code], the ray will hit back faces with concave polygon shapes with back face enabled or heightmap shapes."},{"name":"hit_from_inside","type":"bool","description":"If [code]true[/code], the ray will detect a hit when starting inside shapes. In this case the collision normal will be [code]Vector3(0, 0, 0)[/code]. Does not affect shapes with no volume like concave polygon or heightmap."},{"name":"target_position","type":"Vector3","description":"The ray's destination point, relative to the RayCast's [code]position[/code]."}],"methods":[{"name":"add_exception","signature":"add_exception(node: CollisionObject3D) -> void","description":"Adds a collision exception so the ray does not report collisions with the specified  node.","returnType":"void"},{"name":"add_exception_rid","signature":"add_exception_rid(rid: RID) -> void","description":"Adds a collision exception so the ray does not report collisions with the specified .","returnType":"void"},{"name":"clear_exceptions","signature":"clear_exceptions() -> void","description":"Removes all collision exceptions for this ray.","returnType":"void"},{"name":"force_raycast_update","signature":"force_raycast_update() -> void","description":"Updates the collision information for the ray immediately, without waiting for the next _physics_process call. Use this method, for example, when the ray or its parent has changed state.\n\t\t\t\tNote: [member enabled] does not need to be true for this to work.","returnType":"void"},{"name":"get_collider","signature":"get_collider() -> Object","description":"Returns the first object that the ray intersects, or null if no object is intersecting the ray (i.e. [method is_colliding] returns false).\n\t\t\t\tNote: This object is not guaranteed to be a . For example, if the ray intersects a  or a , the method will return a  or  instance.","returnType":"Object"},{"name":"get_collider_rid","signature":"get_collider_rid() -> RID","description":"Returns the  of the first object that the ray intersects, or an empty  if no object is intersecting the ray (i.e. [method is_colliding] returns false).","returnType":"RID"},{"name":"get_collider_shape","signature":"get_collider_shape() -> int","description":"Returns the shape ID of the first object that the ray intersects, or 0 if no object is intersecting the ray (i.e. [method is_colliding] returns false).\n\t\t\t\tTo get the intersected shape node, for a  target, use:\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tvar target = get_collider() # A CollisionObject3D.\n\t\t\t\tvar shape_id = get_collider_shape() # The shape index in the collider.\n\t\t\t\tvar owner_id = target.shape_find_owner(shape_id) # The owner ID in the collider.\n\t\t\t\tvar shape = target.shape_owner_get_owner(owner_id)\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tvar target = (CollisionObject3D)GetCollider(); // A CollisionObject3D.\n\t\t\t\tvar shapeId = GetColliderShape(); // The shape index in the collider.\n\t\t\t\tvar ownerId = target.ShapeFindOwner(shapeId); // The owner ID in the collider.\n\t\t\t\tvar shape = target.ShapeOwnerGetOwner(ownerId);\n\t\t\t\t\n\t\t\t\t","returnType":"int"},{"name":"get_collision_face_index","signature":"get_collision_face_index() -> int","description":"Returns the collision object's face index at the collision point, or -1 if the shape intersecting the ray is not a .","returnType":"int"},{"name":"get_collision_mask_value","signature":"get_collision_mask_value(layer_number: int) -> bool","description":"Returns whether or not the specified layer of the [member collision_mask] is enabled, given a [param layer_number] between 1 and 32.","returnType":"bool"},{"name":"get_collision_normal","signature":"get_collision_normal() -> Vector3","description":"Returns the normal of the intersecting object's shape at the collision point, or Vector3(0, 0, 0) if the ray starts inside the shape and [member hit_from_inside] is true.\n\t\t\t\tNote: Check that [method is_colliding] returns true before calling this method to ensure the returned normal is valid and up-to-date.","returnType":"Vector3"},{"name":"get_collision_point","signature":"get_collision_point() -> Vector3","description":"Returns the collision point at which the ray intersects the closest object, in the global coordinate system. If [member hit_from_inside] is true and the ray starts inside of a collision shape, this function will return the origin point of the ray.\n\t\t\t\tNote: Check that [method is_colliding] returns true before calling this method to ensure the returned point is valid and up-to-date.","returnType":"Vector3"},{"name":"is_colliding","signature":"is_colliding() -> bool","description":"Returns whether any object is intersecting with the ray's vector (considering the vector length).","returnType":"bool"},{"name":"remove_exception","signature":"remove_exception(node: CollisionObject3D) -> void","description":"Removes a collision exception so the ray does report collisions with the specified  node.","returnType":"void"},{"name":"remove_exception_rid","signature":"remove_exception_rid(rid: RID) -> void","description":"Removes a collision exception so the ray does report collisions with the specified .","returnType":"void"},{"name":"set_collision_mask_value","signature":"set_collision_mask_value(layer_number: int, value: bool) -> void","description":"Based on [param value], enables or disables the specified layer in the [member collision_mask], given a [param layer_number] between 1 and 32.","returnType":"void"}],"signals":[]},"Rect2":{"name":"Rect2","description":"A 2D axis-aligned bounding box using floating-point coordinates.","inherits":"","properties":[{"name":"end","type":"Vector2","description":"The ending point. This is usually the bottom-right corner of the rectangle, and is equivalent to [code]position + size[/code]. Setting this point affects the [member size]."},{"name":"position","type":"Vector2","description":"The origin point. This is usually the top-left corner of the rectangle."},{"name":"size","type":"Vector2","description":"The rectangle's width and height, starting from [member position]. Setting this value also affects the [member end] point.\n\t\t\t[b]Note:[/b] It's recommended setting the width and height to non-negative values, as most methods in Godot assume that the [member position] is the top-left corner, and the [member end] is the bottom-right corner. To get an equivalent rectangle with non-negative size, use [method abs]."}],"methods":[{"name":"abs","signature":"abs() -> Rect2","description":"Returns a  equivalent to this rectangle, with its width and height modified to be non-negative values, and with its [member position] being the top-left corner of the rectangle.\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tvar rect = Rect2(25, 25, -100, -50)\n\t\t\t\tvar absolute = rect.abs() # absolute is Rect2(-75, -25, 100, 50)\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tvar rect = new Rect2(25, 25, -100, -50);\n\t\t\t\tvar absolute = rect.Abs(); // absolute is Rect2(-75, -25, 100, 50)\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tNote: It's recommended to use this method when [member size] is negative, as most other methods in Godot assume that the [member position] is the top-left corner, and the [member end] is the bottom-right corner.","returnType":"Rect2"},{"name":"encloses","signature":"encloses(b: Rect2) -> bool","description":"Returns true if this rectangle completely encloses the [param b] rectangle.","returnType":"bool"},{"name":"expand","signature":"expand(to: Vector2) -> Rect2","description":"Returns a copy of this rectangle expanded to align the edges with the given [param to] point, if necessary.\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tvar rect = Rect2(0, 0, 5, 2)\n\n\t\t\t\trect = rect.expand(Vector2(10, 0)) # rect is Rect2(0, 0, 10, 2)\n\t\t\t\trect = rect.expand(Vector2(-5, 5)) # rect is Rect2(-5, 0, 15, 5)\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tvar rect = new Rect2(0, 0, 5, 2);\n\n\t\t\t\trect = rect.Expand(new Vector2(10, 0)); // rect is Rect2(0, 0, 10, 2)\n\t\t\t\trect = rect.Expand(new Vector2(-5, 5)); // rect is Rect2(-5, 0, 15, 5)\n\t\t\t\t\n\t\t\t\t","returnType":"Rect2"},{"name":"get_area","signature":"get_area() -> float","description":"Returns the rectangle's area. This is equivalent to size.x * size.y. See also [method has_area].","returnType":"float"},{"name":"get_center","signature":"get_center() -> Vector2","description":"Returns the center point of the rectangle. This is the same as position + (size / 2.0).","returnType":"Vector2"},{"name":"get_support","signature":"get_support(direction: Vector2) -> Vector2","description":"Returns the vertex's position of this rect that's the farthest in the given direction. This point is commonly known as the support point in collision detection algorithms.","returnType":"Vector2"},{"name":"grow","signature":"grow(amount: float) -> Rect2","description":"Returns a copy of this rectangle extended on all sides by the given [param amount]. A negative [param amount] shrinks the rectangle instead. See also [method grow_individual] and [method grow_side].\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tvar a = Rect2(4, 4, 8, 8).grow(4) # a is Rect2(0, 0, 16, 16)\n\t\t\t\tvar b = Rect2(0, 0, 8, 4).grow(2) # b is Rect2(-2, -2, 12, 8)\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tvar a = new Rect2(4, 4, 8, 8).Grow(4); // a is Rect2(0, 0, 16, 16)\n\t\t\t\tvar b = new Rect2(0, 0, 8, 4).Grow(2); // b is Rect2(-2, -2, 12, 8)\n\t\t\t\t\n\t\t\t\t","returnType":"Rect2"},{"name":"grow_individual","signature":"grow_individual(left: float, top: float, right: float, bottom: float) -> Rect2","description":"Returns a copy of this rectangle with its [param left], [param top], [param right], and [param bottom] sides extended by the given amounts. Negative values shrink the sides, instead. See also [method grow] and [method grow_side].","returnType":"Rect2"},{"name":"grow_side","signature":"grow_side(side: int, amount: float) -> Rect2","description":"Returns a copy of this rectangle with its [param side] extended by the given [param amount] (see [enum Side] constants). A negative [param amount] shrinks the rectangle, instead. See also [method grow] and [method grow_individual].","returnType":"Rect2"},{"name":"has_area","signature":"has_area() -> bool","description":"Returns true if this rectangle has positive width and height. See also [method get_area].","returnType":"bool"},{"name":"has_point","signature":"has_point(point: Vector2) -> bool","description":"Returns true if the rectangle contains the given [param point]. By convention, points on the right and bottom edges are not included.\n\t\t\t\tNote: This method is not reliable for  with a negative [member size]. Use [method abs] first to get a valid rectangle.","returnType":"bool"},{"name":"intersection","signature":"intersection(b: Rect2) -> Rect2","description":"Returns the intersection between this rectangle and [param b]. If the rectangles do not intersect, returns an empty .\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tvar rect1 = Rect2(0, 0, 5, 10)\n\t\t\t\tvar rect2 = Rect2(2, 0, 8, 4)\n\n\t\t\t\tvar a = rect1.intersection(rect2) # a is Rect2(2, 0, 3, 4)\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tvar rect1 = new Rect2(0, 0, 5, 10);\n\t\t\t\tvar rect2 = new Rect2(2, 0, 8, 4);\n\n\t\t\t\tvar a = rect1.Intersection(rect2); // a is Rect2(2, 0, 3, 4)\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tNote: If you only need to know whether two rectangles are overlapping, use [method intersects], instead.","returnType":"Rect2"},{"name":"intersects","signature":"intersects(b: Rect2, include_borders: bool) -> bool","description":"Returns true if this rectangle overlaps with the [param b] rectangle. The edges of both rectangles are excluded, unless [param include_borders] is true.","returnType":"bool"},{"name":"is_equal_approx","signature":"is_equal_approx(rect: Rect2) -> bool","description":"Returns true if this rectangle and [param rect] are approximately equal, by calling [method Vector2.is_equal_approx] on the [member position] and the [member size].","returnType":"bool"},{"name":"is_finite","signature":"is_finite() -> bool","description":"Returns true if this rectangle's values are finite, by calling [method Vector2.is_finite] on the [member position] and the [member size].","returnType":"bool"},{"name":"merge","signature":"merge(b: Rect2) -> Rect2","description":"Returns a  that encloses both this rectangle and [param b] around the edges. See also [method encloses].","returnType":"Rect2"}],"signals":[]},"Rect2i":{"name":"Rect2i","description":"A 2D axis-aligned bounding box using integer coordinates.","inherits":"","properties":[{"name":"end","type":"Vector2i","description":"The ending point. This is usually the bottom-right corner of the rectangle, and is equivalent to [code]position + size[/code]. Setting this point affects the [member size]."},{"name":"position","type":"Vector2i","description":"The origin point. This is usually the top-left corner of the rectangle."},{"name":"size","type":"Vector2i","description":"The rectangle's width and height, starting from [member position]. Setting this value also affects the [member end] point.\n\t\t\t[b]Note:[/b] It's recommended setting the width and height to non-negative values, as most methods in Godot assume that the [member position] is the top-left corner, and the [member end] is the bottom-right corner. To get an equivalent rectangle with non-negative size, use [method abs]."}],"methods":[{"name":"abs","signature":"abs() -> Rect2i","description":"Returns a  equivalent to this rectangle, with its width and height modified to be non-negative values, and with its [member position] being the top-left corner of the rectangle.\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tvar rect = Rect2i(25, 25, -100, -50)\n\t\t\t\tvar absolute = rect.abs() # absolute is Rect2i(-75, -25, 100, 50)\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tvar rect = new Rect2I(25, 25, -100, -50);\n\t\t\t\tvar absolute = rect.Abs(); // absolute is Rect2I(-75, -25, 100, 50)\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tNote: It's recommended to use this method when [member size] is negative, as most other methods in Godot assume that the [member position] is the top-left corner, and the [member end] is the bottom-right corner.","returnType":"Rect2i"},{"name":"encloses","signature":"encloses(b: Rect2i) -> bool","description":"Returns true if this  completely encloses another one.","returnType":"bool"},{"name":"expand","signature":"expand(to: Vector2i) -> Rect2i","description":"Returns a copy of this rectangle expanded to align the edges with the given [param to] point, if necessary.\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tvar rect = Rect2i(0, 0, 5, 2)\n\n\t\t\t\trect = rect.expand(Vector2i(10, 0)) # rect is Rect2i(0, 0, 10, 2)\n\t\t\t\trect = rect.expand(Vector2i(-5, 5)) # rect is Rect2i(-5, 0, 15, 5)\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tvar rect = new Rect2I(0, 0, 5, 2);\n\n\t\t\t\trect = rect.Expand(new Vector2I(10, 0)); // rect is Rect2I(0, 0, 10, 2)\n\t\t\t\trect = rect.Expand(new Vector2I(-5, 5)); // rect is Rect2I(-5, 0, 15, 5)\n\t\t\t\t\n\t\t\t\t","returnType":"Rect2i"},{"name":"get_area","signature":"get_area() -> int","description":"Returns the rectangle's area. This is equivalent to size.x * size.y. See also [method has_area].","returnType":"int"},{"name":"get_center","signature":"get_center() -> Vector2i","description":"Returns the center point of the rectangle. This is the same as position + (size / 2).\n\t\t\t\tNote: If the [member size] is odd, the result will be rounded towards [member position].","returnType":"Vector2i"},{"name":"grow","signature":"grow(amount: int) -> Rect2i","description":"Returns a copy of this rectangle extended on all sides by the given [param amount]. A negative [param amount] shrinks the rectangle instead. See also [method grow_individual] and [method grow_side].\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tvar a = Rect2i(4, 4, 8, 8).grow(4) # a is Rect2i(0, 0, 16, 16)\n\t\t\t\tvar b = Rect2i(0, 0, 8, 4).grow(2) # b is Rect2i(-2, -2, 12, 8)\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tvar a = new Rect2I(4, 4, 8, 8).Grow(4); // a is Rect2I(0, 0, 16, 16)\n\t\t\t\tvar b = new Rect2I(0, 0, 8, 4).Grow(2); // b is Rect2I(-2, -2, 12, 8)\n\t\t\t\t\n\t\t\t\t","returnType":"Rect2i"},{"name":"grow_individual","signature":"grow_individual(left: int, top: int, right: int, bottom: int) -> Rect2i","description":"Returns a copy of this rectangle with its [param left], [param top], [param right], and [param bottom] sides extended by the given amounts. Negative values shrink the sides, instead. See also [method grow] and [method grow_side].","returnType":"Rect2i"},{"name":"grow_side","signature":"grow_side(side: int, amount: int) -> Rect2i","description":"Returns a copy of this rectangle with its [param side] extended by the given [param amount] (see [enum Side] constants). A negative [param amount] shrinks the rectangle, instead. See also [method grow] and [method grow_individual].","returnType":"Rect2i"},{"name":"has_area","signature":"has_area() -> bool","description":"Returns true if this rectangle has positive width and height. See also [method get_area].","returnType":"bool"},{"name":"has_point","signature":"has_point(point: Vector2i) -> bool","description":"Returns true if the rectangle contains the given [param point]. By convention, points on the right and bottom edges are not included.\n\t\t\t\tNote: This method is not reliable for  with a negative [member size]. Use [method abs] first to get a valid rectangle.","returnType":"bool"},{"name":"intersection","signature":"intersection(b: Rect2i) -> Rect2i","description":"Returns the intersection between this rectangle and [param b]. If the rectangles do not intersect, returns an empty .\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tvar a = Rect2i(0, 0, 5, 10)\n\t\t\t\tvar b = Rect2i(2, 0, 8, 4)\n\n\t\t\t\tvar c = a.intersection(b) # c is Rect2i(2, 0, 3, 4)\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tvar a = new Rect2I(0, 0, 5, 10);\n\t\t\t\tvar b = new Rect2I(2, 0, 8, 4);\n\n\t\t\t\tvar c = rect1.Intersection(rect2); // c is Rect2I(2, 0, 3, 4)\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tNote: If you only need to know whether two rectangles are overlapping, use [method intersects], instead.","returnType":"Rect2i"},{"name":"intersects","signature":"intersects(b: Rect2i) -> bool","description":"Returns true if this rectangle overlaps with the [param b] rectangle. The edges of both rectangles are excluded.","returnType":"bool"},{"name":"merge","signature":"merge(b: Rect2i) -> Rect2i","description":"Returns a  that encloses both this rectangle and [param b] around the edges. See also [method encloses].","returnType":"Rect2i"}],"signals":[]},"RectangleShape2D":{"name":"RectangleShape2D","description":"A 2D rectangle shape used for physics collision.","inherits":"Shape2D","properties":[{"name":"size","type":"Vector2","description":"The rectangle's width and height."}],"methods":[],"signals":[]},"RefCounted":{"name":"RefCounted","description":"Base class for reference-counted objects.","inherits":"Object","properties":[],"methods":[{"name":"get_reference_count","signature":"get_reference_count() -> int","description":"Returns the current reference count.","returnType":"int"},{"name":"init_ref","signature":"init_ref() -> bool","description":"Initializes the internal reference counter. Use this only if you really know what you are doing.\n\t\t\t\tReturns whether the initialization was successful.","returnType":"bool"},{"name":"reference","signature":"reference() -> bool","description":"Increments the internal reference counter. Use this only if you really know what you are doing.\n\t\t\t\tReturns true if the increment was successful, false otherwise.","returnType":"bool"},{"name":"unreference","signature":"unreference() -> bool","description":"Decrements the internal reference counter. Use this only if you really know what you are doing.\n\t\t\t\tReturns true if the object should be freed after the decrement, false otherwise.","returnType":"bool"}],"signals":[]},"ReferenceRect":{"name":"ReferenceRect","description":"A rectangle hint for designing UIs.","inherits":"Control","properties":[{"name":"border_color","type":"Color","description":"Sets the border color of the [ReferenceRect]."},{"name":"border_width","type":"float","description":"Sets the border width of the [ReferenceRect]. The border grows both inwards and outwards with respect to the rectangle box."},{"name":"editor_only","type":"bool","description":"If [code]true[/code], the [ReferenceRect] will only be visible while in editor. Otherwise, [ReferenceRect] will be visible in the running project."}],"methods":[],"signals":[]},"ReflectionProbe":{"name":"ReflectionProbe","description":"Captures its surroundings to create fast, accurate reflections from a given point.","inherits":"VisualInstance3D","properties":[{"name":"ambient_color","type":"Color","description":"The custom ambient color to use within the [ReflectionProbe]'s box defined by its [member size]. Only effective if [member ambient_mode] is [constant AMBIENT_COLOR]."},{"name":"ambient_color_energy","type":"float","description":"The custom ambient color energy to use within the [ReflectionProbe]'s box defined by its [member size]. Only effective if [member ambient_mode] is [constant AMBIENT_COLOR]."},{"name":"ambient_mode","type":"int","description":"The ambient color to use within the [ReflectionProbe]'s box defined by its [member size]. The ambient color will smoothly blend with other [ReflectionProbe]s and the rest of the scene (outside the [ReflectionProbe]'s box defined by its [member size])."},{"name":"blend_distance","type":"float","description":"Defines the distance in meters over which a probe blends into the scene."},{"name":"box_projection","type":"bool","description":"If [code]true[/code], enables box projection. This makes reflections look more correct in rectangle-shaped rooms by offsetting the reflection center depending on the camera's location.\n\t\t\t[b]Note:[/b] To better fit rectangle-shaped rooms that are not aligned to the grid, you can rotate the [ReflectionProbe] node."},{"name":"cull_mask","type":"int","description":"Sets the cull mask which determines what objects are drawn by this probe. Every [VisualInstance3D] with a layer included in this cull mask will be rendered by the probe. It is best to only include large objects which are likely to take up a lot of space in the reflection in order to save on rendering cost.\n\t\t\tThis can also be used to prevent an object from reflecting upon itself (for instance, a [ReflectionProbe] centered on a vehicle)."},{"name":"enable_shadows","type":"bool","description":"If [code]true[/code], computes shadows in the reflection probe. This makes the reflection probe slower to render; you may want to disable this if using the [constant UPDATE_ALWAYS] [member update_mode]."},{"name":"intensity","type":"float","description":"Defines the reflection intensity. Intensity modulates the strength of the reflection."},{"name":"interior","type":"bool","description":"If [code]true[/code], reflections will ignore sky contribution."},{"name":"max_distance","type":"float","description":"The maximum distance away from the [ReflectionProbe] an object can be before it is culled. Decrease this to improve performance, especially when using the [constant UPDATE_ALWAYS] [member update_mode].\n\t\t\t[b]Note:[/b] The maximum reflection distance is always at least equal to the probe's extents. This means that decreasing [member max_distance] will not always cull objects from reflections, especially if the reflection probe's box defined by its [member size] is already large."},{"name":"mesh_lod_threshold","type":"float","description":"The automatic LOD bias to use for meshes rendered within the [ReflectionProbe] (this is analog to [member Viewport.mesh_lod_threshold]). Higher values will use less detailed versions of meshes that have LOD variations generated. If set to [code]0.0[/code], automatic LOD is disabled. Increase [member mesh_lod_threshold] to improve performance at the cost of geometry detail, especially when using the [constant UPDATE_ALWAYS] [member update_mode].\n\t\t\t[b]Note:[/b] [member mesh_lod_threshold] does not affect [GeometryInstance3D] visibility ranges (also known as \"manual\" LOD or hierarchical LOD)."},{"name":"origin_offset","type":"Vector3","description":"Sets the origin offset to be used when this [ReflectionProbe] is in [member box_projection] mode. This can be set to a non-zero value to ensure a reflection fits a rectangle-shaped room, while reducing the number of objects that \"get in the way\" of the reflection."},{"name":"reflection_mask","type":"int","description":"Sets the reflection mask which determines what objects have reflections applied from this probe. Every [VisualInstance3D] with a layer included in this reflection mask will have reflections applied from this probe. See also [member cull_mask], which can be used to exclude objects from appearing in the reflection while still making them affected by the [ReflectionProbe]."},{"name":"size","type":"Vector3","description":"The size of the reflection probe. The larger the size, the more space covered by the probe, which will lower the perceived resolution. It is best to keep the size only as large as you need it.\n\t\t\t[b]Note:[/b] To better fit areas that are not aligned to the grid, you can rotate the [ReflectionProbe] node."},{"name":"update_mode","type":"int","description":"Sets how frequently the [ReflectionProbe] is updated. Can be [constant UPDATE_ONCE] or [constant UPDATE_ALWAYS]."}],"methods":[],"signals":[]},"RemoteTransform2D":{"name":"RemoteTransform2D","description":"RemoteTransform2D pushes its own  to another  derived node in the scene.","inherits":"Node2D","properties":[{"name":"remote_path","type":"NodePath","description":"The [NodePath] to the remote node, relative to the RemoteTransform2D's position in the scene."},{"name":"update_position","type":"bool","description":"If [code]true[/code], the remote node's position is updated."},{"name":"update_rotation","type":"bool","description":"If [code]true[/code], the remote node's rotation is updated."},{"name":"update_scale","type":"bool","description":"If [code]true[/code], the remote node's scale is updated."},{"name":"use_global_coordinates","type":"bool","description":"If [code]true[/code], global coordinates are used. If [code]false[/code], local coordinates are used."}],"methods":[{"name":"force_update_cache","signature":"force_update_cache() -> void","description":" caches the remote node. It may not notice if the remote node disappears; [method force_update_cache] forces it to update the cache again.","returnType":"void"}],"signals":[]},"RemoteTransform3D":{"name":"RemoteTransform3D","description":"RemoteTransform3D pushes its own  to another  derived Node in the scene.","inherits":"Node3D","properties":[{"name":"remote_path","type":"NodePath","description":"The [NodePath] to the remote node, relative to the RemoteTransform3D's position in the scene."},{"name":"update_position","type":"bool","description":"If [code]true[/code], the remote node's position is updated."},{"name":"update_rotation","type":"bool","description":"If [code]true[/code], the remote node's rotation is updated."},{"name":"update_scale","type":"bool","description":"If [code]true[/code], the remote node's scale is updated."},{"name":"use_global_coordinates","type":"bool","description":"If [code]true[/code], global coordinates are used. If [code]false[/code], local coordinates are used."}],"methods":[{"name":"force_update_cache","signature":"force_update_cache() -> void","description":" caches the remote node. It may not notice if the remote node disappears; [method force_update_cache] forces it to update the cache again.","returnType":"void"}],"signals":[]},"RenderData":{"name":"RenderData","description":"Abstract render data object, holds frame data related to rendering a single frame of a viewport.","inherits":"Object","properties":[],"methods":[{"name":"get_camera_attributes","signature":"get_camera_attributes() -> RID","description":"Returns the  of the camera attributes object in the  being used to render this viewport.","returnType":"RID"},{"name":"get_environment","signature":"get_environment() -> RID","description":"Returns the  of the environment object in the  being used to render this viewport.","returnType":"RID"},{"name":"get_render_scene_buffers","signature":"get_render_scene_buffers() -> RenderSceneBuffers","description":"Returns the  object managing the scene buffers for rendering this viewport.","returnType":"RenderSceneBuffers"},{"name":"get_render_scene_data","signature":"get_render_scene_data() -> RenderSceneData","description":"Returns the  object managing this frames scene data.","returnType":"RenderSceneData"}],"signals":[]},"RenderDataExtension":{"name":"RenderDataExtension","description":"This class allows for a RenderData implementation to be made in GDExtension.","inherits":"RenderData","properties":[],"methods":[{"name":"_get_camera_attributes","signature":"_get_camera_attributes() -> RID","description":"Implement this in GDExtension to return the  for the implementation's camera attributes object.","returnType":"RID"},{"name":"_get_environment","signature":"_get_environment() -> RID","description":"Implement this in GDExtension to return the  of the implementation's environment object.","returnType":"RID"},{"name":"_get_render_scene_buffers","signature":"_get_render_scene_buffers() -> RenderSceneBuffers","description":"Implement this in GDExtension to return the implementation's  object.","returnType":"RenderSceneBuffers"},{"name":"_get_render_scene_data","signature":"_get_render_scene_data() -> RenderSceneData","description":"Implement this in GDExtension to return the implementation's  object.","returnType":"RenderSceneData"}],"signals":[]},"RenderDataRD":{"name":"RenderDataRD","description":"Render data implementation for the RenderingDevice based renderers.\n\t\tNote: This is an internal rendering server object, do not instantiate this from script.","inherits":"RenderData","properties":[],"methods":[],"signals":[]},"RenderSceneBuffers":{"name":"RenderSceneBuffers","description":"Abstract scene buffers object, created for each viewport for which 3D rendering is done.","inherits":"RefCounted","properties":[],"methods":[{"name":"configure","signature":"configure(config: RenderSceneBuffersConfiguration) -> void","description":"This method is called by the rendering server when the associated viewports configuration is changed. It will discard the old buffers and recreate the internal buffers used.","returnType":"void"}],"signals":[]},"RenderSceneBuffersConfiguration":{"name":"RenderSceneBuffersConfiguration","description":"Configuration object used to setup a  object.","inherits":"RefCounted","properties":[{"name":"anisotropic_filtering_level","type":"int","description":"Level of the anisotropic filter."},{"name":"fsr_sharpness","type":"float","description":"FSR Sharpness applicable if FSR upscaling is used."},{"name":"internal_size","type":"Vector2i","description":"The size of the 3D render buffer used for rendering."},{"name":"msaa_3d","type":"int","description":"The MSAA mode we're using for 3D rendering."},{"name":"render_target","type":"RID","description":"The render target associated with these buffer."},{"name":"scaling_3d_mode","type":"int","description":"The requested scaling mode with which we upscale/downscale if [member internal_size] and [member target_size] are not equal."},{"name":"screen_space_aa","type":"int","description":"The requested screen space AA applied in post processing."},{"name":"target_size","type":"Vector2i","description":"The target (upscale) size if scaling is used."},{"name":"texture_mipmap_bias","type":"float","description":"Bias applied to mipmaps."},{"name":"view_count","type":"int","description":"The number of views we're rendering."}],"methods":[],"signals":[]},"RenderSceneBuffersExtension":{"name":"RenderSceneBuffersExtension","description":"This class allows for a RenderSceneBuffer implementation to be made in GDExtension.","inherits":"RenderSceneBuffers","properties":[],"methods":[{"name":"_configure","signature":"_configure(config: RenderSceneBuffersConfiguration) -> void","description":"Implement this in GDExtension to handle the (re)sizing of a viewport.","returnType":"void"},{"name":"_set_anisotropic_filtering_level","signature":"_set_anisotropic_filtering_level(anisotropic_filtering_level: int) -> void","description":"Implement this in GDExtension to change the anisotropic filtering level.","returnType":"void"},{"name":"_set_fsr_sharpness","signature":"_set_fsr_sharpness(fsr_sharpness: float) -> void","description":"Implement this in GDExtension to record a new FSR sharpness value.","returnType":"void"},{"name":"_set_texture_mipmap_bias","signature":"_set_texture_mipmap_bias(texture_mipmap_bias: float) -> void","description":"Implement this in GDExtension to change the texture mipmap bias.","returnType":"void"},{"name":"_set_use_debanding","signature":"_set_use_debanding(use_debanding: bool) -> void","description":"Implement this in GDExtension to react to the debanding flag changing.","returnType":"void"}],"signals":[]},"RenderSceneBuffersRD":{"name":"RenderSceneBuffersRD","description":"Render scene buffer implementation for the RenderingDevice based renderers.","inherits":"RenderSceneBuffers","properties":[],"methods":[{"name":"clear_context","signature":"clear_context(context: StringName) -> void","description":"Frees all buffers related to this context.","returnType":"void"},{"name":"create_texture","signature":"create_texture(context: StringName, name: StringName, data_format: int, usage_bits: int, texture_samples: int, size: Vector2i, layers: int, mipmaps: int, unique: bool, discardable: bool) -> RID","description":"Create a new texture with the given definition and cache this under the given name. Will return the existing texture if it already exists.","returnType":"RID"},{"name":"create_texture_from_format","signature":"create_texture_from_format(context: StringName, name: StringName, format: RDTextureFormat, view: RDTextureView, unique: bool) -> RID","description":"Create a new texture using the given format and view and cache this under the given name. Will return the existing texture if it already exists.","returnType":"RID"},{"name":"create_texture_view","signature":"create_texture_view(context: StringName, name: StringName, view_name: StringName, view: RDTextureView) -> RID","description":"Create a new texture view for an existing texture and cache this under the given [param view_name]. Will return the existing texture view if it already exists. Will error if the source texture doesn't exist.","returnType":"RID"},{"name":"get_color_layer","signature":"get_color_layer(layer: int, msaa: bool) -> RID","description":"Returns the specified layer from the color texture we are rendering 3D content to.\n\t\t\t\tIf [param msaa] is true and MSAA is enabled, this returns the MSAA variant of the buffer.","returnType":"RID"},{"name":"get_color_texture","signature":"get_color_texture(msaa: bool) -> RID","description":"Returns the color texture we are rendering 3D content to. If multiview is used this will be a texture array with all views.\n\t\t\t\tIf [param msaa] is true and MSAA is enabled, this returns the MSAA variant of the buffer.","returnType":"RID"},{"name":"get_depth_layer","signature":"get_depth_layer(layer: int, msaa: bool) -> RID","description":"Returns the specified layer from the depth texture we are rendering 3D content to.\n\t\t\t\tIf [param msaa] is true and MSAA is enabled, this returns the MSAA variant of the buffer.","returnType":"RID"},{"name":"get_depth_texture","signature":"get_depth_texture(msaa: bool) -> RID","description":"Returns the depth texture we are rendering 3D content to. If multiview is used this will be a texture array with all views.\n\t\t\t\tIf [param msaa] is true and MSAA is enabled, this returns the MSAA variant of the buffer.","returnType":"RID"},{"name":"get_fsr_sharpness","signature":"get_fsr_sharpness() -> float","description":"Returns the FSR sharpness value used while rendering the 3D content (if [method get_scaling_3d_mode] is an FSR mode).","returnType":"float"},{"name":"get_internal_size","signature":"get_internal_size() -> Vector2i","description":"Returns the internal size of the render buffer (size before upscaling) with which textures are created by default.","returnType":"Vector2i"},{"name":"get_msaa_3d","signature":"get_msaa_3d() -> int","description":"Returns the applied 3D MSAA mode for this viewport.","returnType":"int"},{"name":"get_render_target","signature":"get_render_target() -> RID","description":"Returns the render target associated with this buffers object.","returnType":"RID"},{"name":"get_scaling_3d_mode","signature":"get_scaling_3d_mode() -> int","description":"Returns the scaling mode used for upscaling.","returnType":"int"},{"name":"get_screen_space_aa","signature":"get_screen_space_aa() -> int","description":"Returns the screen-space antialiasing method applied.","returnType":"int"},{"name":"get_target_size","signature":"get_target_size() -> Vector2i","description":"Returns the target size of the render buffer (size after upscaling).","returnType":"Vector2i"},{"name":"get_texture","signature":"get_texture(context: StringName, name: StringName) -> RID","description":"Returns a cached texture with this name.","returnType":"RID"},{"name":"get_texture_format","signature":"get_texture_format(context: StringName, name: StringName) -> RDTextureFormat","description":"Returns the texture format information with which a cached texture was created.","returnType":"RDTextureFormat"},{"name":"get_texture_samples","signature":"get_texture_samples() -> int","description":"Returns the number of MSAA samples used.","returnType":"int"},{"name":"get_texture_slice","signature":"get_texture_slice(context: StringName, name: StringName, layer: int, mipmap: int, layers: int, mipmaps: int) -> RID","description":"Returns a specific slice (layer or mipmap) for a cached texture.","returnType":"RID"},{"name":"get_texture_slice_size","signature":"get_texture_slice_size(context: StringName, name: StringName, mipmap: int) -> Vector2i","description":"Returns the texture size of a given slice of a cached texture.","returnType":"Vector2i"},{"name":"get_texture_slice_view","signature":"get_texture_slice_view(context: StringName, name: StringName, layer: int, mipmap: int, layers: int, mipmaps: int, view: RDTextureView) -> RID","description":"Returns a specific view of a slice (layer or mipmap) for a cached texture.","returnType":"RID"},{"name":"get_use_debanding","signature":"get_use_debanding() -> bool","description":"Returns true if debanding is enabled.","returnType":"bool"},{"name":"get_use_taa","signature":"get_use_taa() -> bool","description":"Returns true if TAA is enabled.","returnType":"bool"},{"name":"get_velocity_layer","signature":"get_velocity_layer(layer: int, msaa: bool) -> RID","description":"Returns the specified layer from the velocity texture we are rendering 3D content to.","returnType":"RID"},{"name":"get_velocity_texture","signature":"get_velocity_texture(msaa: bool) -> RID","description":"Returns the velocity texture we are rendering 3D content to. If multiview is used this will be a texture array with all views.\n\t\t\t\tIf [param msaa] is true and MSAA is enabled, this returns the MSAA variant of the buffer.","returnType":"RID"},{"name":"get_view_count","signature":"get_view_count() -> int","description":"Returns the view count for the associated viewport.","returnType":"int"},{"name":"has_texture","signature":"has_texture(context: StringName, name: StringName) -> bool","description":"Returns true if a cached texture exists for this name.","returnType":"bool"}],"signals":[]},"RenderSceneData":{"name":"RenderSceneData","description":"Abstract render data object, holds scene data related to rendering a single frame of a viewport.","inherits":"Object","properties":[],"methods":[{"name":"get_cam_projection","signature":"get_cam_projection() -> Projection","description":"Returns the camera projection used to render this frame.\n\t\t\t\tNote: If more than one view is rendered, this will return a combined projection.","returnType":"Projection"},{"name":"get_cam_transform","signature":"get_cam_transform() -> Transform3D","description":"Returns the camera transform used to render this frame.\n\t\t\t\tNote: If more than one view is rendered, this will return a centered transform.","returnType":"Transform3D"},{"name":"get_uniform_buffer","signature":"get_uniform_buffer() -> RID","description":"Return the  of the uniform buffer containing the scene data as a UBO.","returnType":"RID"},{"name":"get_view_count","signature":"get_view_count() -> int","description":"Returns the number of views being rendered.","returnType":"int"},{"name":"get_view_eye_offset","signature":"get_view_eye_offset(view: int) -> Vector3","description":"Returns the eye offset per view used to render this frame. This is the offset between our camera transform and the eye transform.","returnType":"Vector3"},{"name":"get_view_projection","signature":"get_view_projection(view: int) -> Projection","description":"Returns the view projection per view used to render this frame.\n\t\t\t\tNote: If a single view is rendered, this returns the camera projection. If more than one view is rendered, this will return a projection for the given view including the eye offset.","returnType":"Projection"}],"signals":[]},"RenderSceneDataExtension":{"name":"RenderSceneDataExtension","description":"This class allows for a RenderSceneData implementation to be made in GDExtension.","inherits":"RenderSceneData","properties":[],"methods":[{"name":"_get_cam_projection","signature":"_get_cam_projection() -> Projection","description":"Implement this in GDExtension to return the camera .","returnType":"Projection"},{"name":"_get_cam_transform","signature":"_get_cam_transform() -> Transform3D","description":"Implement this in GDExtension to return the camera .","returnType":"Transform3D"},{"name":"_get_uniform_buffer","signature":"_get_uniform_buffer() -> RID","description":"Implement this in GDExtension to return the  of the uniform buffer containing the scene data as a UBO.","returnType":"RID"},{"name":"_get_view_count","signature":"_get_view_count() -> int","description":"Implement this in GDExtension to return the view count.","returnType":"int"},{"name":"_get_view_eye_offset","signature":"_get_view_eye_offset(view: int) -> Vector3","description":"Implement this in GDExtension to return the eye offset for the given [param view].","returnType":"Vector3"},{"name":"_get_view_projection","signature":"_get_view_projection(view: int) -> Projection","description":"Implement this in GDExtension to return the view  for the given [param view].","returnType":"Projection"}],"signals":[]},"RenderSceneDataRD":{"name":"RenderSceneDataRD","description":"Render scene data implementation for the RenderingDevice based renderers.","inherits":"RenderSceneData","properties":[],"methods":[],"signals":[]},"RenderingDevice":{"name":"RenderingDevice","description":"Abstraction for working with modern low-level graphics APIs.","inherits":"Object","properties":[],"methods":[{"name":"barrier","signature":"barrier(from: int, to: int) -> void","description":"This method does nothing.","returnType":"void"},{"name":"buffer_clear","signature":"buffer_clear(buffer: RID, offset: int, size_bytes: int) -> int","description":"Clears the contents of the [param buffer], clearing [param size_bytes] bytes, starting at [param offset].\n\t\t\t\tPrints an error if:\n\t\t\t\t- the size isn't a multiple of four\n\t\t\t\t- the region specified by [param offset] + [param size_bytes] exceeds the buffer\n\t\t\t\t- a draw list is currently active (created by [method draw_list_begin])\n\t\t\t\t- a compute list is currently active (created by [method compute_list_begin])","returnType":"int"},{"name":"buffer_copy","signature":"buffer_copy(src_buffer: RID, dst_buffer: RID, src_offset: int, dst_offset: int, size: int) -> int","description":"Copies [param size] bytes from the [param src_buffer] at [param src_offset] into [param dst_buffer] at [param dst_offset].\n\t\t\t\tPrints an error if:\n\t\t\t\t- [param size] exceeds the size of either [param src_buffer] or [param dst_buffer] at their corresponding offsets\n\t\t\t\t- a draw list is currently active (created by [method draw_list_begin])\n\t\t\t\t- a compute list is currently active (created by [method compute_list_begin])","returnType":"int"},{"name":"buffer_get_data","signature":"buffer_get_data(buffer: RID, offset_bytes: int, size_bytes: int) -> PackedByteArray","description":"Returns a copy of the data of the specified [param buffer], optionally [param offset_bytes] and [param size_bytes] can be set to copy only a portion of the buffer.\n\t\t\t\tNote: This method will block the GPU from working until the data is retrieved. Refer to [method buffer_get_data_async] for an alternative that returns the data in more performant way.","returnType":"PackedByteArray"},{"name":"buffer_get_data_async","signature":"buffer_get_data_async(buffer: RID, callback: Callable, offset_bytes: int, size_bytes: int) -> int","description":"Asynchronous version of [method buffer_get_data]. RenderingDevice will call [param callback] in a certain amount of frames with the data the buffer had at the time of the request.\n\t\t\t\tNote: At the moment, the delay corresponds to the amount of frames specified by [member ProjectSettings.rendering/rendering_device/vsync/frame_queue_size].\n\t\t\t\tNote: Downloading large buffers can have a prohibitive cost for real-time even when using the asynchronous method due to hardware bandwidth limitations. When dealing with large resources, you can adjust settings such as [member ProjectSettings.rendering/rendering_device/staging_buffer/block_size_kb] to improve the transfer speed at the cost of extra memory.\n\t\t\t\t\n\t\t\t\tfunc _buffer_get_data_callback(array):\n\t\t\t\t    value = array.decode_u32(0)\n\n\t\t\t\t...\n\n\t\t\t\trd.buffer_get_data_async(buffer, _buffer_get_data_callback)\n\t\t\t\t","returnType":"int"},{"name":"buffer_get_device_address","signature":"buffer_get_device_address(buffer: RID) -> int","description":"Returns the address of the given [param buffer] which can be passed to shaders in any way to access underlying data. Buffer must have been created with this feature enabled.\n\t\t\t\tNote: You must check that the GPU supports this functionality by calling [method has_feature] with [constant SUPPORTS_BUFFER_DEVICE_ADDRESS] as a parameter.","returnType":"int"},{"name":"buffer_update","signature":"buffer_update(buffer: RID, offset: int, size_bytes: int, data: PackedByteArray) -> int","description":"Updates a region of [param size_bytes] bytes, starting at [param offset], in the buffer, with the specified [param data].\n\t\t\t\tPrints an error if:\n\t\t\t\t- the region specified by [param offset] + [param size_bytes] exceeds the buffer\n\t\t\t\t- a draw list is currently active (created by [method draw_list_begin])\n\t\t\t\t- a compute list is currently active (created by [method compute_list_begin])","returnType":"int"},{"name":"capture_timestamp","signature":"capture_timestamp(name: String) -> void","description":"Creates a timestamp marker with the specified [param name]. This is used for performance reporting with the [method get_captured_timestamp_cpu_time], [method get_captured_timestamp_gpu_time] and [method get_captured_timestamp_name] methods.","returnType":"void"},{"name":"compute_list_add_barrier","signature":"compute_list_add_barrier(compute_list: int) -> void","description":"Raises a Vulkan compute barrier in the specified [param compute_list].","returnType":"void"},{"name":"compute_list_begin","signature":"compute_list_begin() -> int","description":"Starts a list of compute commands created with the compute_* methods. The returned value should be passed to other compute_list_* functions.\n\t\t\t\tMultiple compute lists cannot be created at the same time; you must finish the previous compute list first using [method compute_list_end].\n\t\t\t\tA simple compute operation might look like this (code is not a complete example):\n\t\t\t\t\n\t\t\t\tvar rd = RenderingDevice.new()\n\t\t\t\tvar compute_list = rd.compute_list_begin()\n\n\t\t\t\trd.compute_list_bind_compute_pipeline(compute_list, compute_shader_dilate_pipeline)\n\t\t\t\trd.compute_list_bind_uniform_set(compute_list, compute_base_uniform_set, 0)\n\t\t\t\trd.compute_list_bind_uniform_set(compute_list, dilate_uniform_set, 1)\n\n\t\t\t\tfor i in atlas_slices:\n\t\t\t\t    rd.compute_list_set_push_constant(compute_list, push_constant, push_constant.size())\n\t\t\t\t    rd.compute_list_dispatch(compute_list, group_size.x, group_size.y, group_size.z)\n\t\t\t\t    # No barrier, let them run all together.\n\n\t\t\t\trd.compute_list_end()\n\t\t\t\t","returnType":"int"},{"name":"compute_list_bind_compute_pipeline","signature":"compute_list_bind_compute_pipeline(compute_list: int, compute_pipeline: RID) -> void","description":"Tells the GPU what compute pipeline to use when processing the compute list. If the shader has changed since the last time this function was called, Godot will unbind all descriptor sets and will re-bind them inside [method compute_list_dispatch].","returnType":"void"},{"name":"compute_list_bind_uniform_set","signature":"compute_list_bind_uniform_set(compute_list: int, uniform_set: RID, set_index: int) -> void","description":"Binds the [param uniform_set] to this [param compute_list]. Godot ensures that all textures in the uniform set have the correct Vulkan access masks. If Godot had to change access masks of textures, it will raise a Vulkan image memory barrier.","returnType":"void"},{"name":"compute_list_dispatch","signature":"compute_list_dispatch(compute_list: int, x_groups: int, y_groups: int, z_groups: int) -> void","description":"Submits the compute list for processing on the GPU. This is the compute equivalent to [method draw_list_draw].","returnType":"void"},{"name":"compute_list_dispatch_indirect","signature":"compute_list_dispatch_indirect(compute_list: int, buffer: RID, offset: int) -> void","description":"Submits the compute list for processing on the GPU with the given group counts stored in the [param buffer] at [param offset]. Buffer must have been created with [constant STORAGE_BUFFER_USAGE_DISPATCH_INDIRECT] flag.","returnType":"void"},{"name":"compute_list_end","signature":"compute_list_end() -> void","description":"Finishes a list of compute commands created with the compute_* methods.","returnType":"void"},{"name":"compute_list_set_push_constant","signature":"compute_list_set_push_constant(compute_list: int, buffer: PackedByteArray, size_bytes: int) -> void","description":"Sets the push constant data to [param buffer] for the specified [param compute_list]. The shader determines how this binary data is used. The buffer's size in bytes must also be specified in [param size_bytes] (this can be obtained by calling the [method PackedByteArray.size] method on the passed [param buffer]).","returnType":"void"},{"name":"compute_pipeline_create","signature":"compute_pipeline_create(shader: RID, specialization_constants: RDPipelineSpecializationConstant[]) -> RID","description":"Creates a new compute pipeline. It can be accessed with the RID that is returned.\n\t\t\t\tOnce finished with your RID, you will want to free the RID using the RenderingDevice's [method free_rid] method.","returnType":"RID"},{"name":"compute_pipeline_is_valid","signature":"compute_pipeline_is_valid(compute_pipeline: RID) -> bool","description":"Returns true if the compute pipeline specified by the [param compute_pipeline] RID is valid, false otherwise.","returnType":"bool"},{"name":"create_local_device","signature":"create_local_device() -> RenderingDevice","description":"Create a new local . This is most useful for performing compute operations on the GPU independently from the rest of the engine.","returnType":"RenderingDevice"},{"name":"draw_command_begin_label","signature":"draw_command_begin_label(name: String, color: Color) -> void","description":"Create a command buffer debug label region that can be displayed in third-party tools such as [url=https://renderdoc.org/]RenderDoc. All regions must be ended with a [method draw_command_end_label] call. When viewed from the linear series of submissions to a single queue, calls to [method draw_command_begin_label] and [method draw_command_end_label] must be matched and balanced.\n\t\t\t\tThe VK_EXT_DEBUG_UTILS_EXTENSION_NAME Vulkan extension must be available and enabled for command buffer debug label region to work. See also [method draw_command_end_label].","returnType":"void"},{"name":"draw_command_end_label","signature":"draw_command_end_label() -> void","description":"Ends the command buffer debug label region started by a [method draw_command_begin_label] call.","returnType":"void"},{"name":"draw_command_insert_label","signature":"draw_command_insert_label(name: String, color: Color) -> void","description":"This method does nothing.","returnType":"void"},{"name":"draw_list_begin","signature":"draw_list_begin(framebuffer: RID, draw_flags: int, clear_color_values: PackedColorArray, clear_depth_value: float, clear_stencil_value: int, region: Rect2, breadcrumb: int) -> int","description":"Starts a list of raster drawing commands created with the draw_* methods. The returned value should be passed to other draw_list_* functions.\n\t\t\t\tMultiple draw lists cannot be created at the same time; you must finish the previous draw list first using [method draw_list_end].\n\t\t\t\tA simple drawing operation might look like this (code is not a complete example):\n\t\t\t\t\n\t\t\t\tvar rd = RenderingDevice.new()\n\t\t\t\tvar clear_colors = PackedColorArray([Color(0, 0, 0, 0), Color(0, 0, 0, 0), Color(0, 0, 0, 0)])\n\t\t\t\tvar draw_list = rd.draw_list_begin(framebuffers, RenderingDevice.CLEAR_COLOR_ALL, clear_colors, true, 1.0f, true, 0, Rect2(), RenderingDevice.OPAQUE_PASS)\n\n\t\t\t\t# Draw opaque.\n\t\t\t\trd.draw_list_bind_render_pipeline(draw_list, raster_pipeline)\n\t\t\t\trd.draw_list_bind_uniform_set(draw_list, raster_base_uniform, 0)\n\t\t\t\trd.draw_list_set_push_constant(draw_list, raster_push_constant, raster_push_constant.size())\n\t\t\t\trd.draw_list_draw(draw_list, false, 1, slice_triangle_count * 3)\n\t\t\t\t# Draw wire.\n\t\t\t\trd.draw_list_bind_render_pipeline(draw_list, raster_pipeline_wire)\n\t\t\t\trd.draw_list_bind_uniform_set(draw_list, raster_base_uniform, 0)\n\t\t\t\trd.draw_list_set_push_constant(draw_list, raster_push_constant, raster_push_constant.size())\n\t\t\t\trd.draw_list_draw(draw_list, false, 1, slice_triangle_count * 3)\n\n\t\t\t\trd.draw_list_end()\n\t\t\t\t\n\t\t\t\tThe [param draw_flags] indicates if the texture attachments of the framebuffer should be cleared or ignored. Only one of the two flags can be used for each individual attachment. Ignoring an attachment means that any contents that existed before the draw list will be completely discarded, reducing the memory bandwidth used by the render pass but producing garbage results if the pixels aren't replaced. The default behavior allows the engine to figure out the right operation to use if the texture is discardable, which can result in increased performance. See  or [method texture_set_discardable].\n\t\t\t\tThe [param breadcrumb] parameter can be an arbitrary 32-bit integer that is useful to diagnose GPU crashes. If Godot is built in dev or debug mode; when the GPU crashes Godot will dump all shaders that were being executed at the time of the crash and the breadcrumb is useful to diagnose what passes did those shaders belong to.\n\t\t\t\tIt does not affect rendering behavior and can be set to 0. It is recommended to use [enum BreadcrumbMarker] enumerations for consistency but it's not required. It is also possible to use bitwise operations to add extra data. e.g.\n\t\t\t\t\n\t\t\t\trd.draw_list_begin(fb, RenderingDevice.CLEAR_COLOR_ALL, clear_colors, true, 1.0f, true, 0, Rect2(), RenderingDevice.OPAQUE_PASS | 5)\n\t\t\t\t","returnType":"int"},{"name":"draw_list_begin_for_screen","signature":"draw_list_begin_for_screen(screen: int, clear_color: Color) -> int","description":"High-level variant of [method draw_list_begin], with the parameters automatically being adjusted for drawing onto the window specified by the [param screen] ID.\n\t\t\t\tNote: Cannot be used with local RenderingDevices, as these don't have a screen. If called on a local RenderingDevice, [method draw_list_begin_for_screen] returns [constant INVALID_ID].","returnType":"int"},{"name":"draw_list_begin_split","signature":"draw_list_begin_split(framebuffer: RID, splits: int, initial_color_action: int, final_color_action: int, initial_depth_action: int, final_depth_action: int, clear_color_values: PackedColorArray, clear_depth: float, clear_stencil: int, region: Rect2, storage_textures: RID[]) -> PackedInt64Array","description":"This method does nothing and always returns an empty .","returnType":"PackedInt64Array"},{"name":"draw_list_bind_index_array","signature":"draw_list_bind_index_array(draw_list: int, index_array: RID) -> void","description":"Binds [param index_array] to the specified [param draw_list].","returnType":"void"},{"name":"draw_list_bind_render_pipeline","signature":"draw_list_bind_render_pipeline(draw_list: int, render_pipeline: RID) -> void","description":"Binds [param render_pipeline] to the specified [param draw_list].","returnType":"void"},{"name":"draw_list_bind_uniform_set","signature":"draw_list_bind_uniform_set(draw_list: int, uniform_set: RID, set_index: int) -> void","description":"Binds [param uniform_set] to the specified [param draw_list]. A [param set_index] must also be specified, which is an identifier starting from 0 that must match the one expected by the draw list.","returnType":"void"},{"name":"draw_list_bind_vertex_array","signature":"draw_list_bind_vertex_array(draw_list: int, vertex_array: RID) -> void","description":"Binds [param vertex_array] to the specified [param draw_list].","returnType":"void"},{"name":"draw_list_disable_scissor","signature":"draw_list_disable_scissor(draw_list: int) -> void","description":"Removes and disables the scissor rectangle for the specified [param draw_list]. See also [method draw_list_enable_scissor].","returnType":"void"},{"name":"draw_list_draw","signature":"draw_list_draw(draw_list: int, use_indices: bool, instances: int, procedural_vertex_count: int) -> void","description":"Submits [param draw_list] for rendering on the GPU. This is the raster equivalent to [method compute_list_dispatch].","returnType":"void"},{"name":"draw_list_draw_indirect","signature":"draw_list_draw_indirect(draw_list: int, use_indices: bool, buffer: RID, offset: int, draw_count: int, stride: int) -> void","description":"Submits [param draw_list] for rendering on the GPU with the given parameters stored in the [param buffer] at [param offset]. Parameters being integers: vertex count, instance count, first vertex, first instance. And when using indices: index count, instance count, first index, vertex offset, first instance. Buffer must have been created with [constant STORAGE_BUFFER_USAGE_DISPATCH_INDIRECT] flag.","returnType":"void"},{"name":"draw_list_enable_scissor","signature":"draw_list_enable_scissor(draw_list: int, rect: Rect2) -> void","description":"Creates a scissor rectangle and enables it for the specified [param draw_list]. Scissor rectangles are used for clipping by discarding fragments that fall outside a specified rectangular portion of the screen. See also [method draw_list_disable_scissor].\n\t\t\t\tNote: The specified [param rect] is automatically intersected with the screen's dimensions, which means it cannot exceed the screen's dimensions.","returnType":"void"},{"name":"draw_list_end","signature":"draw_list_end() -> void","description":"Finishes a list of raster drawing commands created with the draw_* methods.","returnType":"void"},{"name":"draw_list_set_blend_constants","signature":"draw_list_set_blend_constants(draw_list: int, color: Color) -> void","description":"Sets blend constants for the specified [param draw_list] to [param color]. Blend constants are used only if the graphics pipeline is created with [constant DYNAMIC_STATE_BLEND_CONSTANTS] flag set.","returnType":"void"},{"name":"draw_list_set_push_constant","signature":"draw_list_set_push_constant(draw_list: int, buffer: PackedByteArray, size_bytes: int) -> void","description":"Sets the push constant data to [param buffer] for the specified [param draw_list]. The shader determines how this binary data is used. The buffer's size in bytes must also be specified in [param size_bytes] (this can be obtained by calling the [method PackedByteArray.size] method on the passed [param buffer]).","returnType":"void"},{"name":"draw_list_switch_to_next_pass","signature":"draw_list_switch_to_next_pass() -> int","description":"Switches to the next draw pass.","returnType":"int"},{"name":"draw_list_switch_to_next_pass_split","signature":"draw_list_switch_to_next_pass_split(splits: int) -> PackedInt64Array","description":"This method does nothing and always returns an empty .","returnType":"PackedInt64Array"},{"name":"framebuffer_create","signature":"framebuffer_create(textures: RID[], validate_with_format: int, view_count: int) -> RID","description":"Creates a new framebuffer. It can be accessed with the RID that is returned.\n\t\t\t\tOnce finished with your RID, you will want to free the RID using the RenderingDevice's [method free_rid] method.","returnType":"RID"},{"name":"framebuffer_create_empty","signature":"framebuffer_create_empty(size: Vector2i, samples: int, validate_with_format: int) -> RID","description":"Creates a new empty framebuffer. It can be accessed with the RID that is returned.\n\t\t\t\tOnce finished with your RID, you will want to free the RID using the RenderingDevice's [method free_rid] method.","returnType":"RID"},{"name":"framebuffer_create_multipass","signature":"framebuffer_create_multipass(textures: RID[], passes: RDFramebufferPass[], validate_with_format: int, view_count: int) -> RID","description":"Creates a new multipass framebuffer. It can be accessed with the RID that is returned.\n\t\t\t\tOnce finished with your RID, you will want to free the RID using the RenderingDevice's [method free_rid] method.","returnType":"RID"},{"name":"framebuffer_format_create","signature":"framebuffer_format_create(attachments: RDAttachmentFormat[], view_count: int) -> int","description":"Creates a new framebuffer format with the specified [param attachments] and [param view_count]. Returns the new framebuffer's unique framebuffer format ID.\n\t\t\t\tIf [param view_count] is greater than or equal to 2, enables multiview which is used for VR rendering. This requires support for the Vulkan multiview extension.","returnType":"int"},{"name":"framebuffer_format_create_empty","signature":"framebuffer_format_create_empty(samples: int) -> int","description":"Creates a new empty framebuffer format with the specified number of [param samples] and returns its ID.","returnType":"int"},{"name":"framebuffer_format_create_multipass","signature":"framebuffer_format_create_multipass(attachments: RDAttachmentFormat[], passes: RDFramebufferPass[], view_count: int) -> int","description":"Creates a multipass framebuffer format with the specified [param attachments], [param passes] and [param view_count] and returns its ID. If [param view_count] is greater than or equal to 2, enables multiview which is used for VR rendering. This requires support for the Vulkan multiview extension.","returnType":"int"},{"name":"framebuffer_format_get_texture_samples","signature":"framebuffer_format_get_texture_samples(format: int, render_pass: int) -> int","description":"Returns the number of texture samples used for the given framebuffer [param format] ID (returned by [method framebuffer_get_format]).","returnType":"int"},{"name":"framebuffer_get_format","signature":"framebuffer_get_format(framebuffer: RID) -> int","description":"Returns the format ID of the framebuffer specified by the [param framebuffer] RID. This ID is guaranteed to be unique for the same formats and does not need to be freed.","returnType":"int"},{"name":"framebuffer_is_valid","signature":"framebuffer_is_valid(framebuffer: RID) -> bool","description":"Returns true if the framebuffer specified by the [param framebuffer] RID is valid, false otherwise.","returnType":"bool"},{"name":"free_rid","signature":"free_rid(rid: RID) -> void","description":"Tries to free an object in the RenderingDevice. To avoid memory leaks, this should be called after using an object as memory management does not occur automatically when using RenderingDevice directly.","returnType":"void"},{"name":"full_barrier","signature":"full_barrier() -> void","description":"This method does nothing.","returnType":"void"},{"name":"get_captured_timestamp_cpu_time","signature":"get_captured_timestamp_cpu_time(index: int) -> int","description":"Returns the timestamp in CPU time for the rendering step specified by [param index] (in microseconds since the engine started). See also [method get_captured_timestamp_gpu_time] and [method capture_timestamp].","returnType":"int"},{"name":"get_captured_timestamp_gpu_time","signature":"get_captured_timestamp_gpu_time(index: int) -> int","description":"Returns the timestamp in GPU time for the rendering step specified by [param index] (in microseconds since the engine started). See also [method get_captured_timestamp_cpu_time] and [method capture_timestamp].","returnType":"int"},{"name":"get_captured_timestamp_name","signature":"get_captured_timestamp_name(index: int) -> String","description":"Returns the timestamp's name for the rendering step specified by [param index]. See also [method capture_timestamp].","returnType":"String"},{"name":"get_captured_timestamps_count","signature":"get_captured_timestamps_count() -> int","description":"Returns the total number of timestamps (rendering steps) available for profiling.","returnType":"int"},{"name":"get_captured_timestamps_frame","signature":"get_captured_timestamps_frame() -> int","description":"Returns the index of the last frame rendered that has rendering timestamps available for querying.","returnType":"int"},{"name":"get_device_allocation_count","signature":"get_device_allocation_count() -> int","description":"Returns how many allocations the GPU has performed for internal driver structures.\n\t\t\t\tThis is only used by Vulkan in debug builds and can return 0 when this information is not tracked or unknown.","returnType":"int"},{"name":"get_device_allocs_by_object_type","signature":"get_device_allocs_by_object_type(type: int) -> int","description":"Same as [method get_device_allocation_count] but filtered for a given object type.\n\t\t\t\tThe type argument must be in range [0; get_tracked_object_type_count - 1]. If [method get_tracked_object_type_count] is 0, then type argument is ignored and always returns 0.\n\t\t\t\tThis is only used by Vulkan in debug builds and can return 0 when this information is not tracked or unknown.","returnType":"int"},{"name":"get_device_memory_by_object_type","signature":"get_device_memory_by_object_type(type: int) -> int","description":"Same as [method get_device_total_memory] but filtered for a given object type.\n\t\t\t\tThe type argument must be in range [0; get_tracked_object_type_count - 1]. If [method get_tracked_object_type_count] is 0, then type argument is ignored and always returns 0.\n\t\t\t\tThis is only used by Vulkan in debug builds and can return 0 when this information is not tracked or unknown.","returnType":"int"},{"name":"get_device_name","signature":"get_device_name() -> String","description":"Returns the name of the video adapter (e.g. \"GeForce GTX 1080/PCIe/SSE2\"). Equivalent to [method RenderingServer.get_video_adapter_name]. See also [method get_device_vendor_name].","returnType":"String"},{"name":"get_device_pipeline_cache_uuid","signature":"get_device_pipeline_cache_uuid() -> String","description":"Returns the universally unique identifier for the pipeline cache. This is used to cache shader files on disk, which avoids shader recompilations on subsequent engine runs. This UUID varies depending on the graphics card model, but also the driver version. Therefore, updating graphics drivers will invalidate the shader cache.","returnType":"String"},{"name":"get_device_total_memory","signature":"get_device_total_memory() -> int","description":"Returns how much bytes the GPU is using.\n\t\t\t\tThis is only used by Vulkan in debug builds and can return 0 when this information is not tracked or unknown.","returnType":"int"},{"name":"get_device_vendor_name","signature":"get_device_vendor_name() -> String","description":"Returns the vendor of the video adapter (e.g. \"NVIDIA Corporation\"). Equivalent to [method RenderingServer.get_video_adapter_vendor]. See also [method get_device_name].","returnType":"String"},{"name":"get_driver_allocation_count","signature":"get_driver_allocation_count() -> int","description":"Returns how many allocations the GPU driver has performed for internal driver structures.\n\t\t\t\tThis is only used by Vulkan in debug builds and can return 0 when this information is not tracked or unknown.","returnType":"int"},{"name":"get_driver_allocs_by_object_type","signature":"get_driver_allocs_by_object_type(type: int) -> int","description":"Same as [method get_driver_allocation_count] but filtered for a given object type.\n\t\t\t\tThe type argument must be in range [0; get_tracked_object_type_count - 1]. If [method get_tracked_object_type_count] is 0, then type argument is ignored and always returns 0.\n\t\t\t\tThis is only used by Vulkan in debug builds and can return 0 when this information is not tracked or unknown.","returnType":"int"},{"name":"get_driver_and_device_memory_report","signature":"get_driver_and_device_memory_report() -> String","description":"Returns string report in CSV format using the following methods:\n\t\t\t\t- [method get_tracked_object_name]\n\t\t\t\t- [method get_tracked_object_type_count]\n\t\t\t\t- [method get_driver_total_memory]\n\t\t\t\t- [method get_driver_allocation_count]\n\t\t\t\t- [method get_driver_memory_by_object_type]\n\t\t\t\t- [method get_driver_allocs_by_object_type]\n\t\t\t\t- [method get_device_total_memory]\n\t\t\t\t- [method get_device_allocation_count]\n\t\t\t\t- [method get_device_memory_by_object_type]\n\t\t\t\t- [method get_device_allocs_by_object_type]\n\t\t\t\tThis is only used by Vulkan in debug builds. Godot must also be started with the --extra-gpu-memory-tracking [url=$DOCS_URL/tutorials/editor/command_line_tutorial.html]command line argument.","returnType":"String"},{"name":"get_driver_memory_by_object_type","signature":"get_driver_memory_by_object_type(type: int) -> int","description":"Same as [method get_driver_total_memory] but filtered for a given object type.\n\t\t\t\tThe type argument must be in range [0; get_tracked_object_type_count - 1]. If [method get_tracked_object_type_count] is 0, then type argument is ignored and always returns 0.\n\t\t\t\tThis is only used by Vulkan in debug builds and can return 0 when this information is not tracked or unknown.","returnType":"int"},{"name":"get_driver_resource","signature":"get_driver_resource(resource: int, rid: RID, index: int) -> int","description":"Returns the unique identifier of the driver [param resource] for the specified [param rid]. Some driver resource types ignore the specified [param rid] (see [enum DriverResource] descriptions). [param index] is always ignored but must be specified anyway.","returnType":"int"},{"name":"get_driver_total_memory","signature":"get_driver_total_memory() -> int","description":"Returns how much bytes the GPU driver is using for internal driver structures.\n\t\t\t\tThis is only used by Vulkan in debug builds and can return 0 when this information is not tracked or unknown.","returnType":"int"},{"name":"get_frame_delay","signature":"get_frame_delay() -> int","description":"Returns the frame count kept by the graphics API. Higher values result in higher input lag, but with more consistent throughput. For the main , frames are cycled (usually 3 with triple-buffered V-Sync enabled). However, local s only have 1 frame.","returnType":"int"},{"name":"get_memory_usage","signature":"get_memory_usage(type: int) -> int","description":"Returns the memory usage in bytes corresponding to the given [param type]. When using Vulkan, these statistics are calculated by [url=https://github.com/GPUOpen-LibrariesAndSDKs/VulkanMemoryAllocator]Vulkan Memory Allocator.","returnType":"int"},{"name":"get_perf_report","signature":"get_perf_report() -> String","description":"Returns a string with a performance report from the past frame. Updates every frame.","returnType":"String"},{"name":"get_tracked_object_name","signature":"get_tracked_object_name(type_index: int) -> String","description":"Returns the name of the type of object for the given [param type_index]. This value must be in range [0; get_tracked_object_type_count - 1]. If [method get_tracked_object_type_count] is 0, then type argument is ignored and always returns the same string.\n\t\t\t\tThe return value is important because it gives meaning to the types passed to [method get_driver_memory_by_object_type], [method get_driver_allocs_by_object_type], [method get_device_memory_by_object_type], and [method get_device_allocs_by_object_type]. Examples of strings it can return (not exhaustive):\n\t\t\t\t- DEVICE_MEMORY\n\t\t\t\t- PIPELINE_CACHE\n\t\t\t\t- SWAPCHAIN_KHR\n\t\t\t\t- COMMAND_POOL\n\t\t\t\tThus if e.g. get_tracked_object_name(5) returns \"COMMAND_POOL\", then get_device_memory_by_object_type(5) returns the bytes used by the GPU for command pools.\n\t\t\t\tThis is only used by Vulkan in debug builds. Godot must also be started with the --extra-gpu-memory-tracking [url=$DOCS_URL/tutorials/editor/command_line_tutorial.html]command line argument.","returnType":"String"},{"name":"get_tracked_object_type_count","signature":"get_tracked_object_type_count() -> int","description":"Returns how many types of trackable objects are.\n\t\t\t\tThis is only used by Vulkan in debug builds. Godot must also be started with the --extra-gpu-memory-tracking [url=$DOCS_URL/tutorials/editor/command_line_tutorial.html]command line argument.","returnType":"int"},{"name":"has_feature","signature":"has_feature(feature: int) -> bool","description":"Returns true if the [param feature] is supported by the GPU.","returnType":"bool"},{"name":"index_array_create","signature":"index_array_create(index_buffer: RID, index_offset: int, index_count: int) -> RID","description":"Creates a new index array. It can be accessed with the RID that is returned.\n\t\t\t\tOnce finished with your RID, you will want to free the RID using the RenderingDevice's [method free_rid] method.","returnType":"RID"},{"name":"index_buffer_create","signature":"index_buffer_create(size_indices: int, format: int, data: PackedByteArray, use_restart_indices: bool, creation_bits: int) -> RID","description":"Creates a new index buffer. It can be accessed with the RID that is returned.\n\t\t\t\tOnce finished with your RID, you will want to free the RID using the RenderingDevice's [method free_rid] method.","returnType":"RID"},{"name":"limit_get","signature":"limit_get(limit: int) -> int","description":"Returns the value of the specified [param limit]. This limit varies depending on the current graphics hardware (and sometimes the driver version). If the given limit is exceeded, rendering errors will occur.\n\t\t\t\tLimits for various graphics hardware can be found in the [url=https://vulkan.gpuinfo.org/]Vulkan Hardware Database.","returnType":"int"},{"name":"render_pipeline_create","signature":"render_pipeline_create(shader: RID, framebuffer_format: int, vertex_format: int, primitive: int, rasterization_state: RDPipelineRasterizationState, multisample_state: RDPipelineMultisampleState, stencil_state: RDPipelineDepthStencilState, color_blend_state: RDPipelineColorBlendState, dynamic_state_flags: int, for_render_pass: int, specialization_constants: RDPipelineSpecializationConstant[]) -> RID","description":"Creates a new render pipeline. It can be accessed with the RID that is returned.\n\t\t\t\tOnce finished with your RID, you will want to free the RID using the RenderingDevice's [method free_rid] method.","returnType":"RID"},{"name":"render_pipeline_is_valid","signature":"render_pipeline_is_valid(render_pipeline: RID) -> bool","description":"Returns true if the render pipeline specified by the [param render_pipeline] RID is valid, false otherwise.","returnType":"bool"},{"name":"sampler_create","signature":"sampler_create(state: RDSamplerState) -> RID","description":"Creates a new sampler. It can be accessed with the RID that is returned.\n\t\t\t\tOnce finished with your RID, you will want to free the RID using the RenderingDevice's [method free_rid] method.","returnType":"RID"},{"name":"sampler_is_format_supported_for_filter","signature":"sampler_is_format_supported_for_filter(format: int, sampler_filter: int) -> bool","description":"Returns true if implementation supports using a texture of [param format] with the given [param sampler_filter].","returnType":"bool"},{"name":"screen_get_framebuffer_format","signature":"screen_get_framebuffer_format(screen: int) -> int","description":"Returns the framebuffer format of the given screen.\n\t\t\t\tNote: Only the main  returned by [method RenderingServer.get_rendering_device] has a format. If called on a local , this method prints an error and returns [constant INVALID_ID].","returnType":"int"},{"name":"screen_get_height","signature":"screen_get_height(screen: int) -> int","description":"Returns the window height matching the graphics API context for the given window ID (in pixels). Despite the parameter being named [param screen], this returns the window size. See also [method screen_get_width].\n\t\t\t\tNote: Only the main  returned by [method RenderingServer.get_rendering_device] has a height. If called on a local , this method prints an error and returns [constant INVALID_ID].","returnType":"int"},{"name":"screen_get_width","signature":"screen_get_width(screen: int) -> int","description":"Returns the window width matching the graphics API context for the given window ID (in pixels). Despite the parameter being named [param screen], this returns the window size. See also [method screen_get_height].\n\t\t\t\tNote: Only the main  returned by [method RenderingServer.get_rendering_device] has a width. If called on a local , this method prints an error and returns [constant INVALID_ID].","returnType":"int"},{"name":"set_resource_name","signature":"set_resource_name(id: RID, name: String) -> void","description":"Sets the resource name for [param id] to [param name]. This is used for debugging with third-party tools such as [url=https://renderdoc.org/]RenderDoc.\n\t\t\t\tThe following types of resources can be named: texture, sampler, vertex buffer, index buffer, uniform buffer, texture buffer, storage buffer, uniform set buffer, shader, render pipeline and compute pipeline. Framebuffers cannot be named. Attempting to name an incompatible resource type will print an error.\n\t\t\t\tNote: Resource names are only set when the engine runs in verbose mode ([method OS.is_stdout_verbose] = true), or when using an engine build compiled with the dev_mode=yes SCons option. The graphics driver must also support the VK_EXT_DEBUG_UTILS_EXTENSION_NAME Vulkan extension for named resources to work.","returnType":"void"},{"name":"shader_compile_binary_from_spirv","signature":"shader_compile_binary_from_spirv(spirv_data: RDShaderSPIRV, name: String) -> PackedByteArray","description":"Compiles a binary shader from [param spirv_data] and returns the compiled binary data as a . This compiled shader is specific to the GPU model and driver version used; it will not work on different GPU models or even different driver versions. See also [method shader_compile_spirv_from_source].\n\t\t\t\t[param name] is an optional human-readable name that can be given to the compiled shader for organizational purposes.","returnType":"PackedByteArray"},{"name":"shader_compile_spirv_from_source","signature":"shader_compile_spirv_from_source(shader_source: RDShaderSource, allow_cache: bool) -> RDShaderSPIRV","description":"Compiles a SPIR-V from the shader source code in [param shader_source] and returns the SPIR-V as a . This intermediate language shader is portable across different GPU models and driver versions, but cannot be run directly by GPUs until compiled into a binary shader using [method shader_compile_binary_from_spirv].\n\t\t\t\tIf [param allow_cache] is true, make use of the shader cache generated by Godot. This avoids a potentially lengthy shader compilation step if the shader is already in cache. If [param allow_cache] is false, Godot's shader cache is ignored and the shader will always be recompiled.","returnType":"RDShaderSPIRV"},{"name":"shader_create_from_bytecode","signature":"shader_create_from_bytecode(binary_data: PackedByteArray, placeholder_rid: RID) -> RID","description":"Creates a new shader instance from a binary compiled shader. It can be accessed with the RID that is returned.\n\t\t\t\tOnce finished with your RID, you will want to free the RID using the RenderingDevice's [method free_rid] method. See also [method shader_compile_binary_from_spirv] and [method shader_create_from_spirv].","returnType":"RID"},{"name":"shader_create_from_spirv","signature":"shader_create_from_spirv(spirv_data: RDShaderSPIRV, name: String) -> RID","description":"Creates a new shader instance from SPIR-V intermediate code. It can be accessed with the RID that is returned.\n\t\t\t\tOnce finished with your RID, you will want to free the RID using the RenderingDevice's [method free_rid] method. See also [method shader_compile_spirv_from_source] and [method shader_create_from_bytecode].","returnType":"RID"},{"name":"shader_create_placeholder","signature":"shader_create_placeholder() -> RID","description":"Create a placeholder RID by allocating an RID without initializing it for use in [method shader_create_from_bytecode]. This allows you to create an RID for a shader and pass it around, but defer compiling the shader to a later time.","returnType":"RID"},{"name":"shader_get_vertex_input_attribute_mask","signature":"shader_get_vertex_input_attribute_mask(shader: RID) -> int","description":"Returns the internal vertex input mask. Internally, the vertex input mask is an unsigned integer consisting of the locations (specified in GLSL via. layout(location = ...)) of the input variables (specified in GLSL by the in keyword).","returnType":"int"},{"name":"storage_buffer_create","signature":"storage_buffer_create(size_bytes: int, data: PackedByteArray, usage: int, creation_bits: int) -> RID","description":"Creates a [url=https://vkguide.dev/docs/chapter-4/storage_buffers/]storage buffer with the specified [param data] and [param usage]. It can be accessed with the RID that is returned.\n\t\t\t\tOnce finished with your RID, you will want to free the RID using the RenderingDevice's [method free_rid] method.","returnType":"RID"},{"name":"submit","signature":"submit() -> void","description":"Pushes the frame setup and draw command buffers then marks the local device as currently processing (which allows calling [method sync]).\n\t\t\t\tNote: Only available in local RenderingDevices.","returnType":"void"},{"name":"sync","signature":"sync() -> void","description":"Forces a synchronization between the CPU and GPU, which may be required in certain cases. Only call this when needed, as CPU-GPU synchronization has a performance cost.\n\t\t\t\tNote: Only available in local RenderingDevices.\n\t\t\t\tNote: [method sync] can only be called after a [method submit].","returnType":"void"},{"name":"texture_buffer_create","signature":"texture_buffer_create(size_bytes: int, format: int, data: PackedByteArray) -> RID","description":"Creates a new texture buffer. It can be accessed with the RID that is returned.\n\t\t\t\tOnce finished with your RID, you will want to free the RID using the RenderingDevice's [method free_rid] method.","returnType":"RID"},{"name":"texture_clear","signature":"texture_clear(texture: RID, color: Color, base_mipmap: int, mipmap_count: int, base_layer: int, layer_count: int) -> int","description":"Clears the specified [param texture] by replacing all of its pixels with the specified [param color]. [param base_mipmap] and [param mipmap_count] determine which mipmaps of the texture are affected by this clear operation, while [param base_layer] and [param layer_count] determine which layers of a 3D texture (or texture array) are affected by this clear operation. For 2D textures (which only have one layer by design), [param base_layer] must be 0 and [param layer_count] must be 1.\n\t\t\t\tNote: [param texture] can't be cleared while a draw list that uses it as part of a framebuffer is being created. Ensure the draw list is finalized (and that the color/depth texture using it is not set to [constant FINAL_ACTION_CONTINUE]) to clear this texture.","returnType":"int"},{"name":"texture_copy","signature":"texture_copy(from_texture: RID, to_texture: RID, from_pos: Vector3, to_pos: Vector3, size: Vector3, src_mipmap: int, dst_mipmap: int, src_layer: int, dst_layer: int) -> int","description":"Copies the [param from_texture] to [param to_texture] with the specified [param from_pos], [param to_pos] and [param size] coordinates. The Z axis of the [param from_pos], [param to_pos] and [param size] must be 0 for 2-dimensional textures. Source and destination mipmaps/layers must also be specified, with these parameters being 0 for textures without mipmaps or single-layer textures. Returns [constant @GlobalScope.OK] if the texture copy was successful or [constant @GlobalScope.ERR_INVALID_PARAMETER] otherwise.\n\t\t\t\tNote: [param from_texture] texture can't be copied while a draw list that uses it as part of a framebuffer is being created. Ensure the draw list is finalized (and that the color/depth texture using it is not set to [constant FINAL_ACTION_CONTINUE]) to copy this texture.\n\t\t\t\tNote: [param from_texture] texture requires the [constant TEXTURE_USAGE_CAN_COPY_FROM_BIT] to be retrieved.\n\t\t\t\tNote: [param to_texture] can't be copied while a draw list that uses it as part of a framebuffer is being created. Ensure the draw list is finalized (and that the color/depth texture using it is not set to [constant FINAL_ACTION_CONTINUE]) to copy this texture.\n\t\t\t\tNote: [param to_texture] requires the [constant TEXTURE_USAGE_CAN_COPY_TO_BIT] to be retrieved.\n\t\t\t\tNote: [param from_texture] and [param to_texture] must be of the same type (color or depth).","returnType":"int"},{"name":"texture_create","signature":"texture_create(format: RDTextureFormat, view: RDTextureView, data: PackedByteArray[]) -> RID","description":"Creates a new texture. It can be accessed with the RID that is returned.\n\t\t\t\tOnce finished with your RID, you will want to free the RID using the RenderingDevice's [method free_rid] method.\n\t\t\t\tNote: Not to be confused with [method RenderingServer.texture_2d_create], which creates the Godot-specific  resource as opposed to the graphics API's own texture type.","returnType":"RID"},{"name":"texture_create_from_extension","signature":"texture_create_from_extension(type: int, format: int, samples: int, usage_flags: int, image: int, width: int, height: int, depth: int, layers: int) -> RID","description":"Returns an RID for an existing [param image] (VkImage) with the given [param type], [param format], [param samples], [param usage_flags], [param width], [param height], [param depth], and [param layers]. This can be used to allow Godot to render onto foreign images.","returnType":"RID"},{"name":"texture_create_shared","signature":"texture_create_shared(view: RDTextureView, with_texture: RID) -> RID","description":"Creates a shared texture using the specified [param view] and the texture information from [param with_texture].","returnType":"RID"},{"name":"texture_create_shared_from_slice","signature":"texture_create_shared_from_slice(view: RDTextureView, with_texture: RID, layer: int, mipmap: int, mipmaps: int, slice_type: int) -> RID","description":"Creates a shared texture using the specified [param view] and the texture information from [param with_texture]'s [param layer] and [param mipmap]. The number of included mipmaps from the original texture can be controlled using the [param mipmaps] parameter. Only relevant for textures with multiple layers, such as 3D textures, texture arrays and cubemaps. For single-layer textures, use [method texture_create_shared].\n\t\t\t\tFor 2D textures (which only have one layer), [param layer] must be 0.\n\t\t\t\tNote: Layer slicing is only supported for 2D texture arrays, not 3D textures or cubemaps.","returnType":"RID"},{"name":"texture_get_data","signature":"texture_get_data(texture: RID, layer: int) -> PackedByteArray","description":"Returns the [param texture] data for the specified [param layer] as raw binary data. For 2D textures (which only have one layer), [param layer] must be 0.\n\t\t\t\tNote: [param texture] can't be retrieved while a draw list that uses it as part of a framebuffer is being created. Ensure the draw list is finalized (and that the color/depth texture using it is not set to [constant FINAL_ACTION_CONTINUE]) to retrieve this texture. Otherwise, an error is printed and a empty  is returned.\n\t\t\t\tNote: [param texture] requires the [constant TEXTURE_USAGE_CAN_COPY_FROM_BIT] to be retrieved. Otherwise, an error is printed and a empty  is returned.\n\t\t\t\tNote: This method will block the GPU from working until the data is retrieved. Refer to [method texture_get_data_async] for an alternative that returns the data in more performant way.","returnType":"PackedByteArray"},{"name":"texture_get_data_async","signature":"texture_get_data_async(texture: RID, layer: int, callback: Callable) -> int","description":"Asynchronous version of [method texture_get_data]. RenderingDevice will call [param callback] in a certain amount of frames with the data the texture had at the time of the request.\n\t\t\t\tNote: At the moment, the delay corresponds to the amount of frames specified by [member ProjectSettings.rendering/rendering_device/vsync/frame_queue_size].\n\t\t\t\tNote: Downloading large textures can have a prohibitive cost for real-time even when using the asynchronous method due to hardware bandwidth limitations. When dealing with large resources, you can adjust settings such as [member ProjectSettings.rendering/rendering_device/staging_buffer/texture_download_region_size_px] and [member ProjectSettings.rendering/rendering_device/staging_buffer/block_size_kb] to improve the transfer speed at the cost of extra memory.\n\t\t\t\t\n\t\t\t\tfunc _texture_get_data_callback(array):\n\t\t\t\t    value = array.decode_u32(0)\n\n\t\t\t\t...\n\n\t\t\t\trd.texture_get_data_async(texture, 0, _texture_get_data_callback)\n\t\t\t\t","returnType":"int"},{"name":"texture_get_format","signature":"texture_get_format(texture: RID) -> RDTextureFormat","description":"Returns the data format used to create this texture.","returnType":"RDTextureFormat"},{"name":"texture_get_native_handle","signature":"texture_get_native_handle(texture: RID) -> int","description":"Returns the internal graphics handle for this texture object. For use when communicating with third-party APIs mostly with GDExtension.\n\t\t\t\tNote: This function returns a uint64_t which internally maps to a GLuint (OpenGL) or VkImage (Vulkan).","returnType":"int"},{"name":"texture_is_discardable","signature":"texture_is_discardable(texture: RID) -> bool","description":"Returns true if the [param texture] is discardable, false otherwise. See  or [method texture_set_discardable].","returnType":"bool"},{"name":"texture_is_format_supported_for_usage","signature":"texture_is_format_supported_for_usage(format: int, usage_flags: int) -> bool","description":"Returns true if the specified [param format] is supported for the given [param usage_flags], false otherwise.","returnType":"bool"},{"name":"texture_is_shared","signature":"texture_is_shared(texture: RID) -> bool","description":"Returns true if the [param texture] is shared, false otherwise. See .","returnType":"bool"},{"name":"texture_is_valid","signature":"texture_is_valid(texture: RID) -> bool","description":"Returns true if the [param texture] is valid, false otherwise.","returnType":"bool"},{"name":"texture_resolve_multisample","signature":"texture_resolve_multisample(from_texture: RID, to_texture: RID) -> int","description":"Resolves the [param from_texture] texture onto [param to_texture] with multisample antialiasing enabled. This must be used when rendering a framebuffer for MSAA to work. Returns [constant @GlobalScope.OK] if successful, [constant @GlobalScope.ERR_INVALID_PARAMETER] otherwise.\n\t\t\t\tNote: [param from_texture] and [param to_texture] textures must have the same dimension, format and type (color or depth).\n\t\t\t\tNote: [param from_texture] can't be copied while a draw list that uses it as part of a framebuffer is being created. Ensure the draw list is finalized (and that the color/depth texture using it is not set to [constant FINAL_ACTION_CONTINUE]) to resolve this texture.\n\t\t\t\tNote: [param from_texture] requires the [constant TEXTURE_USAGE_CAN_COPY_FROM_BIT] to be retrieved.\n\t\t\t\tNote: [param from_texture] must be multisampled and must also be 2D (or a slice of a 3D/cubemap texture).\n\t\t\t\tNote: [param to_texture] can't be copied while a draw list that uses it as part of a framebuffer is being created. Ensure the draw list is finalized (and that the color/depth texture using it is not set to [constant FINAL_ACTION_CONTINUE]) to resolve this texture.\n\t\t\t\tNote: [param to_texture] texture requires the [constant TEXTURE_USAGE_CAN_COPY_TO_BIT] to be retrieved.\n\t\t\t\tNote: [param to_texture] texture must not be multisampled and must also be 2D (or a slice of a 3D/cubemap texture).","returnType":"int"},{"name":"texture_set_discardable","signature":"texture_set_discardable(texture: RID, discardable: bool) -> void","description":"Updates the discardable property of [param texture].\n\t\t\t\tIf a texture is discardable, its contents do not need to be preserved between frames. This flag is only relevant when the texture is used as target in a draw list.\n\t\t\t\tThis information is used by  to figure out if a texture's contents can be discarded, eliminating unnecessary writes to memory and boosting performance.","returnType":"void"},{"name":"texture_update","signature":"texture_update(texture: RID, layer: int, data: PackedByteArray) -> int","description":"Updates texture data with new data, replacing the previous data in place. The updated texture data must have the same dimensions and format. For 2D textures (which only have one layer), [param layer] must be 0. Returns [constant @GlobalScope.OK] if the update was successful, [constant @GlobalScope.ERR_INVALID_PARAMETER] otherwise.\n\t\t\t\tNote: Updating textures is forbidden during creation of a draw or compute list.\n\t\t\t\tNote: The existing [param texture] can't be updated while a draw list that uses it as part of a framebuffer is being created. Ensure the draw list is finalized (and that the color/depth texture using it is not set to [constant FINAL_ACTION_CONTINUE]) to update this texture.\n\t\t\t\tNote: The existing [param texture] requires the [constant TEXTURE_USAGE_CAN_UPDATE_BIT] to be updatable.","returnType":"int"},{"name":"uniform_buffer_create","signature":"uniform_buffer_create(size_bytes: int, data: PackedByteArray, creation_bits: int) -> RID","description":"Creates a new uniform buffer. It can be accessed with the RID that is returned.\n\t\t\t\tOnce finished with your RID, you will want to free the RID using the RenderingDevice's [method free_rid] method.","returnType":"RID"},{"name":"uniform_set_create","signature":"uniform_set_create(uniforms: RDUniform[], shader: RID, shader_set: int) -> RID","description":"Creates a new uniform set. It can be accessed with the RID that is returned.\n\t\t\t\tOnce finished with your RID, you will want to free the RID using the RenderingDevice's [method free_rid] method.","returnType":"RID"},{"name":"uniform_set_is_valid","signature":"uniform_set_is_valid(uniform_set: RID) -> bool","description":"Checks if the [param uniform_set] is valid, i.e. is owned.","returnType":"bool"},{"name":"vertex_array_create","signature":"vertex_array_create(vertex_count: int, vertex_format: int, src_buffers: RID[], offsets: PackedInt64Array) -> RID","description":"Creates a vertex array based on the specified buffers. Optionally, [param offsets] (in bytes) may be defined for each buffer.","returnType":"RID"},{"name":"vertex_buffer_create","signature":"vertex_buffer_create(size_bytes: int, data: PackedByteArray, creation_bits: int) -> RID","description":"It can be accessed with the RID that is returned.\n\t\t\t\tOnce finished with your RID, you will want to free the RID using the RenderingDevice's [method free_rid] method.","returnType":"RID"},{"name":"vertex_format_create","signature":"vertex_format_create(vertex_descriptions: RDVertexAttribute[]) -> int","description":"Creates a new vertex format with the specified [param vertex_descriptions]. Returns a unique vertex format ID corresponding to the newly created vertex format.","returnType":"int"}],"signals":[]},"RenderingServer":{"name":"RenderingServer","description":"Server for anything visible.","inherits":"Object","properties":[{"name":"render_loop_enabled","type":"bool","description":"If [code]false[/code], disables rendering completely, but the engine logic is still being processed. You can call [method force_draw] to draw a frame even with rendering disabled."}],"methods":[{"name":"bake_render_uv2","signature":"bake_render_uv2(base: RID, material_overrides: RID[], image_size: Vector2i) -> Image[]","description":"Bakes the material data of the Mesh passed in the [param base] parameter with optional [param material_overrides] to a set of s of size [param image_size]. Returns an array of s containing material properties as specified in [enum BakeChannels].","returnType":"Image[]"},{"name":"call_on_render_thread","signature":"call_on_render_thread(callable: Callable) -> void","description":"As the RenderingServer actual logic may run on an separate thread, accessing its internals from the main (or any other) thread will result in errors. To make it easier to run code that can safely access the rendering internals (such as  and similar RD classes), push a callable via this function so it will be executed on the render thread.","returnType":"void"},{"name":"camera_attributes_create","signature":"camera_attributes_create() -> RID","description":"Creates a camera attributes object and adds it to the RenderingServer. It can be accessed with the RID that is returned. This RID will be used in all camera_attributes_ RenderingServer functions.\n\t\t\t\tOnce finished with your RID, you will want to free the RID using the RenderingServer's [method free_rid] method.\n\t\t\t\tNote: The equivalent resource is .","returnType":"RID"},{"name":"camera_attributes_set_auto_exposure","signature":"camera_attributes_set_auto_exposure(camera_attributes: RID, enable: bool, min_sensitivity: float, max_sensitivity: float, speed: float, scale: float) -> void","description":"Sets the parameters to use with the auto-exposure effect. These parameters take on the same meaning as their counterparts in  and .","returnType":"void"},{"name":"camera_attributes_set_dof_blur","signature":"camera_attributes_set_dof_blur(camera_attributes: RID, far_enable: bool, far_distance: float, far_transition: float, near_enable: bool, near_distance: float, near_transition: float, amount: float) -> void","description":"Sets the parameters to use with the DOF blur effect. These parameters take on the same meaning as their counterparts in .","returnType":"void"},{"name":"camera_attributes_set_dof_blur_bokeh_shape","signature":"camera_attributes_set_dof_blur_bokeh_shape(shape: int) -> void","description":"Sets the shape of the DOF bokeh pattern. Different shapes may be used to achieve artistic effect, or to meet performance targets. For more detail on available options see [enum DOFBokehShape].","returnType":"void"},{"name":"camera_attributes_set_dof_blur_quality","signature":"camera_attributes_set_dof_blur_quality(quality: int, use_jitter: bool) -> void","description":"Sets the quality level of the DOF blur effect to one of the options in [enum DOFBlurQuality]. [param use_jitter] can be used to jitter samples taken during the blur pass to hide artifacts at the cost of looking more fuzzy.","returnType":"void"},{"name":"camera_attributes_set_exposure","signature":"camera_attributes_set_exposure(camera_attributes: RID, multiplier: float, normalization: float) -> void","description":"Sets the exposure values that will be used by the renderers. The normalization amount is used to bake a given Exposure Value (EV) into rendering calculations to reduce the dynamic range of the scene.\n\t\t\t\tThe normalization factor can be calculated from exposure value (EV100) as follows:\n\t\t\t\t\n\t\t\t\tfunc get_exposure_normalization(ev100: float):\n\t\t\t\t    return 1.0 / (pow(2.0, ev100) * 1.2)\n\t\t\t\t\n\t\t\t\tThe exposure value can be calculated from aperture (in f-stops), shutter speed (in seconds), and sensitivity (in ISO) as follows:\n\t\t\t\t\n\t\t\t\tfunc get_exposure(aperture: float, shutter_speed: float, sensitivity: float):\n\t\t\t\t    return log((aperture * aperture) / shutter_speed * (100.0 / sensitivity)) / log(2)\n\t\t\t\t","returnType":"void"},{"name":"camera_create","signature":"camera_create() -> RID","description":"Creates a 3D camera and adds it to the RenderingServer. It can be accessed with the RID that is returned. This RID will be used in all camera_* RenderingServer functions.\n\t\t\t\tOnce finished with your RID, you will want to free the RID using the RenderingServer's [method free_rid] method.\n\t\t\t\tNote: The equivalent node is .","returnType":"RID"},{"name":"camera_set_camera_attributes","signature":"camera_set_camera_attributes(camera: RID, effects: RID) -> void","description":"Sets the camera_attributes created with [method camera_attributes_create] to the given camera.","returnType":"void"},{"name":"camera_set_compositor","signature":"camera_set_compositor(camera: RID, compositor: RID) -> void","description":"Sets the compositor used by this camera. Equivalent to [member Camera3D.compositor].","returnType":"void"},{"name":"camera_set_cull_mask","signature":"camera_set_cull_mask(camera: RID, layers: int) -> void","description":"Sets the cull mask associated with this camera. The cull mask describes which 3D layers are rendered by this camera. Equivalent to [member Camera3D.cull_mask].","returnType":"void"},{"name":"camera_set_environment","signature":"camera_set_environment(camera: RID, env: RID) -> void","description":"Sets the environment used by this camera. Equivalent to [member Camera3D.environment].","returnType":"void"},{"name":"camera_set_frustum","signature":"camera_set_frustum(camera: RID, size: float, offset: Vector2, z_near: float, z_far: float) -> void","description":"Sets camera to use frustum projection. This mode allows adjusting the [param offset] argument to create \"tilted frustum\" effects.","returnType":"void"},{"name":"camera_set_orthogonal","signature":"camera_set_orthogonal(camera: RID, size: float, z_near: float, z_far: float) -> void","description":"Sets camera to use orthogonal projection, also known as orthographic projection. Objects remain the same size on the screen no matter how far away they are.","returnType":"void"},{"name":"camera_set_perspective","signature":"camera_set_perspective(camera: RID, fovy_degrees: float, z_near: float, z_far: float) -> void","description":"Sets camera to use perspective projection. Objects on the screen becomes smaller when they are far away.","returnType":"void"},{"name":"camera_set_transform","signature":"camera_set_transform(camera: RID, transform: Transform3D) -> void","description":"Sets  of camera.","returnType":"void"},{"name":"camera_set_use_vertical_aspect","signature":"camera_set_use_vertical_aspect(camera: RID, enable: bool) -> void","description":"If true, preserves the horizontal aspect ratio which is equivalent to [constant Camera3D.KEEP_WIDTH]. If false, preserves the vertical aspect ratio which is equivalent to [constant Camera3D.KEEP_HEIGHT].","returnType":"void"},{"name":"canvas_create","signature":"canvas_create() -> RID","description":"Creates a canvas and returns the assigned . It can be accessed with the RID that is returned. This RID will be used in all canvas_* RenderingServer functions.\n\t\t\t\tOnce finished with your RID, you will want to free the RID using the RenderingServer's [method free_rid] method.\n\t\t\t\tCanvas has no  or  equivalent.","returnType":"RID"},{"name":"canvas_item_add_animation_slice","signature":"canvas_item_add_animation_slice(item: RID, animation_length: float, slice_begin: float, slice_end: float, offset: float) -> void","description":"Subsequent drawing commands will be ignored unless they fall within the specified animation slice. This is a faster way to implement animations that loop on background rather than redrawing constantly.","returnType":"void"},{"name":"canvas_item_add_circle","signature":"canvas_item_add_circle(item: RID, pos: Vector2, radius: float, color: Color, antialiased: bool) -> void","description":"Draws a circle on the  pointed to by the [param item] . See also [method CanvasItem.draw_circle].","returnType":"void"},{"name":"canvas_item_add_clip_ignore","signature":"canvas_item_add_clip_ignore(item: RID, ignore: bool) -> void","description":"If [param ignore] is true, ignore clipping on items drawn with this canvas item until this is called again with [param ignore] set to false.","returnType":"void"},{"name":"canvas_item_add_lcd_texture_rect_region","signature":"canvas_item_add_lcd_texture_rect_region(item: RID, rect: Rect2, texture: RID, src_rect: Rect2, modulate: Color) -> void","description":"See also [method CanvasItem.draw_lcd_texture_rect_region].","returnType":"void"},{"name":"canvas_item_add_line","signature":"canvas_item_add_line(item: RID, from: Vector2, to: Vector2, color: Color, width: float, antialiased: bool) -> void","description":"Draws a line on the  pointed to by the [param item] . See also [method CanvasItem.draw_line].","returnType":"void"},{"name":"canvas_item_add_mesh","signature":"canvas_item_add_mesh(item: RID, mesh: RID, transform: Transform2D, modulate: Color, texture: RID) -> void","description":"Draws a mesh created with [method mesh_create] with given [param transform], [param modulate] color, and [param texture]. This is used internally by .","returnType":"void"},{"name":"canvas_item_add_msdf_texture_rect_region","signature":"canvas_item_add_msdf_texture_rect_region(item: RID, rect: Rect2, texture: RID, src_rect: Rect2, modulate: Color, outline_size: int, px_range: float, scale: float) -> void","description":"See also [method CanvasItem.draw_msdf_texture_rect_region].","returnType":"void"},{"name":"canvas_item_add_multiline","signature":"canvas_item_add_multiline(item: RID, points: PackedVector2Array, colors: PackedColorArray, width: float, antialiased: bool) -> void","description":"Draws a 2D multiline on the  pointed to by the [param item] . See also [method CanvasItem.draw_multiline] and [method CanvasItem.draw_multiline_colors].","returnType":"void"},{"name":"canvas_item_add_multimesh","signature":"canvas_item_add_multimesh(item: RID, mesh: RID, texture: RID) -> void","description":"Draws a 2D  on the  pointed to by the [param item] . See also [method CanvasItem.draw_multimesh].","returnType":"void"},{"name":"canvas_item_add_nine_patch","signature":"canvas_item_add_nine_patch(item: RID, rect: Rect2, source: Rect2, texture: RID, topleft: Vector2, bottomright: Vector2, x_axis_mode: int, y_axis_mode: int, draw_center: bool, modulate: Color) -> void","description":"Draws a nine-patch rectangle on the  pointed to by the [param item] .","returnType":"void"},{"name":"canvas_item_add_particles","signature":"canvas_item_add_particles(item: RID, particles: RID, texture: RID) -> void","description":"Draws particles on the  pointed to by the [param item] .","returnType":"void"},{"name":"canvas_item_add_polygon","signature":"canvas_item_add_polygon(item: RID, points: PackedVector2Array, colors: PackedColorArray, uvs: PackedVector2Array, texture: RID) -> void","description":"Draws a 2D polygon on the  pointed to by the [param item] . If you need more flexibility (such as being able to use bones), use [method canvas_item_add_triangle_array] instead. See also [method CanvasItem.draw_polygon].\n\t\t\t\tNote: If you frequently redraw the same polygon with a large number of vertices, consider pre-calculating the triangulation with [method Geometry2D.triangulate_polygon] and using [method CanvasItem.draw_mesh], [method CanvasItem.draw_multimesh], or [method canvas_item_add_triangle_array].","returnType":"void"},{"name":"canvas_item_add_polyline","signature":"canvas_item_add_polyline(item: RID, points: PackedVector2Array, colors: PackedColorArray, width: float, antialiased: bool) -> void","description":"Draws a 2D polyline on the  pointed to by the [param item] . See also [method CanvasItem.draw_polyline] and [method CanvasItem.draw_polyline_colors].","returnType":"void"},{"name":"canvas_item_add_primitive","signature":"canvas_item_add_primitive(item: RID, points: PackedVector2Array, colors: PackedColorArray, uvs: PackedVector2Array, texture: RID) -> void","description":"Draws a 2D primitive on the  pointed to by the [param item] . See also [method CanvasItem.draw_primitive].","returnType":"void"},{"name":"canvas_item_add_rect","signature":"canvas_item_add_rect(item: RID, rect: Rect2, color: Color, antialiased: bool) -> void","description":"Draws a rectangle on the  pointed to by the [param item] . See also [method CanvasItem.draw_rect].","returnType":"void"},{"name":"canvas_item_add_set_transform","signature":"canvas_item_add_set_transform(item: RID, transform: Transform2D) -> void","description":"Sets a  that will be used to transform subsequent canvas item commands.","returnType":"void"},{"name":"canvas_item_add_texture_rect","signature":"canvas_item_add_texture_rect(item: RID, rect: Rect2, texture: RID, tile: bool, modulate: Color, transpose: bool) -> void","description":"Draws a 2D textured rectangle on the  pointed to by the [param item] . See also [method CanvasItem.draw_texture_rect] and [method Texture2D.draw_rect].","returnType":"void"},{"name":"canvas_item_add_texture_rect_region","signature":"canvas_item_add_texture_rect_region(item: RID, rect: Rect2, texture: RID, src_rect: Rect2, modulate: Color, transpose: bool, clip_uv: bool) -> void","description":"Draws the specified region of a 2D textured rectangle on the  pointed to by the [param item] . See also [method CanvasItem.draw_texture_rect_region] and [method Texture2D.draw_rect_region].","returnType":"void"},{"name":"canvas_item_add_triangle_array","signature":"canvas_item_add_triangle_array(item: RID, indices: PackedInt32Array, points: PackedVector2Array, colors: PackedColorArray, uvs: PackedVector2Array, bones: PackedInt32Array, weights: PackedFloat32Array, texture: RID, count: int) -> void","description":"Draws a triangle array on the  pointed to by the [param item] . This is internally used by  and  for rendering. [method canvas_item_add_triangle_array] is highly flexible, but more complex to use than [method canvas_item_add_polygon].\n\t\t\t\tNote: [param count] is unused and can be left unspecified.","returnType":"void"},{"name":"canvas_item_attach_skeleton","signature":"canvas_item_attach_skeleton(item: RID, skeleton: RID) -> void","description":"Attaches a skeleton to the . Removes the previous skeleton.","returnType":"void"},{"name":"canvas_item_clear","signature":"canvas_item_clear(item: RID) -> void","description":"Clears the  and removes all commands in it.","returnType":"void"},{"name":"canvas_item_create","signature":"canvas_item_create() -> RID","description":"Creates a new CanvasItem instance and returns its . It can be accessed with the RID that is returned. This RID will be used in all canvas_item_* RenderingServer functions.\n\t\t\t\tOnce finished with your RID, you will want to free the RID using the RenderingServer's [method free_rid] method.\n\t\t\t\tNote: The equivalent node is .","returnType":"RID"},{"name":"canvas_item_get_instance_shader_parameter","signature":"canvas_item_get_instance_shader_parameter(instance: RID, parameter: StringName) -> Variant","description":"Returns the value of the per-instance shader uniform from the specified canvas item instance. Equivalent to [method CanvasItem.get_instance_shader_parameter].","returnType":"Variant"},{"name":"canvas_item_get_instance_shader_parameter_default_value","signature":"canvas_item_get_instance_shader_parameter_default_value(instance: RID, parameter: StringName) -> Variant","description":"Returns the default value of the per-instance shader uniform from the specified canvas item instance. Equivalent to [method CanvasItem.get_instance_shader_parameter].","returnType":"Variant"},{"name":"canvas_item_get_instance_shader_parameter_list","signature":"canvas_item_get_instance_shader_parameter_list(instance: RID) -> Dictionary[]","description":"Returns a dictionary of per-instance shader uniform names of the per-instance shader uniform from the specified canvas item instance.\n\t\t\t\tThe returned dictionary is in PropertyInfo format, with the keys name, class_name, type, hint, hint_string, and usage.","returnType":"Dictionary[]"},{"name":"canvas_item_reset_physics_interpolation","signature":"canvas_item_reset_physics_interpolation(item: RID) -> void","description":"Prevents physics interpolation for the current physics tick.\n\t\t\t\tThis is useful when moving a canvas item to a new location, to give an instantaneous change rather than interpolation from the previous location.","returnType":"void"},{"name":"canvas_item_set_canvas_group_mode","signature":"canvas_item_set_canvas_group_mode(item: RID, mode: int, clear_margin: float, fit_empty: bool, fit_margin: float, blur_mipmaps: bool) -> void","description":"Sets the canvas group mode used during 2D rendering for the canvas item specified by the [param item] RID. For faster but more limited clipping, use [method canvas_item_set_clip] instead.\n\t\t\t\tNote: The equivalent node functionality is found in  and [member CanvasItem.clip_children].","returnType":"void"},{"name":"canvas_item_set_clip","signature":"canvas_item_set_clip(item: RID, clip: bool) -> void","description":"If [param clip] is true, makes the canvas item specified by the [param item] RID not draw anything outside of its rect's coordinates. This clipping is fast, but works only with axis-aligned rectangles. This means that rotation is ignored by the clipping rectangle. For more advanced clipping shapes, use [method canvas_item_set_canvas_group_mode] instead.\n\t\t\t\tNote: The equivalent node functionality is found in [member Label.clip_text],  (always enabled) and more.","returnType":"void"},{"name":"canvas_item_set_copy_to_backbuffer","signature":"canvas_item_set_copy_to_backbuffer(item: RID, enabled: bool, rect: Rect2) -> void","description":"Sets the  to copy a rect to the backbuffer.","returnType":"void"},{"name":"canvas_item_set_custom_rect","signature":"canvas_item_set_custom_rect(item: RID, use_custom_rect: bool, rect: Rect2) -> void","description":"If [param use_custom_rect] is true, sets the custom visibility rectangle (used for culling) to [param rect] for the canvas item specified by [param item]. Setting a custom visibility rect can reduce CPU load when drawing lots of 2D instances. If [param use_custom_rect] is false, automatically computes a visibility rectangle based on the canvas item's draw commands.","returnType":"void"},{"name":"canvas_item_set_default_texture_filter","signature":"canvas_item_set_default_texture_filter(item: RID, filter: int) -> void","description":"Sets the default texture filter mode for the canvas item specified by the [param item] RID. Equivalent to [member CanvasItem.texture_filter].","returnType":"void"},{"name":"canvas_item_set_default_texture_repeat","signature":"canvas_item_set_default_texture_repeat(item: RID, repeat: int) -> void","description":"Sets the default texture repeat mode for the canvas item specified by the [param item] RID. Equivalent to [member CanvasItem.texture_repeat].","returnType":"void"},{"name":"canvas_item_set_distance_field_mode","signature":"canvas_item_set_distance_field_mode(item: RID, enabled: bool) -> void","description":"If [param enabled] is true, enables multichannel signed distance field rendering mode for the canvas item specified by the [param item] RID. This is meant to be used for font rendering, or with specially generated images using [url=https://github.com/Chlumsky/msdfgen]msdfgen.","returnType":"void"},{"name":"canvas_item_set_draw_behind_parent","signature":"canvas_item_set_draw_behind_parent(item: RID, enabled: bool) -> void","description":"If [param enabled] is true, draws the canvas item specified by the [param item] RID behind its parent. Equivalent to [member CanvasItem.show_behind_parent].","returnType":"void"},{"name":"canvas_item_set_draw_index","signature":"canvas_item_set_draw_index(item: RID, index: int) -> void","description":"Sets the index for the .","returnType":"void"},{"name":"canvas_item_set_instance_shader_parameter","signature":"canvas_item_set_instance_shader_parameter(instance: RID, parameter: StringName, value: Variant) -> void","description":"Sets the per-instance shader uniform on the specified canvas item instance. Equivalent to [method CanvasItem.set_instance_shader_parameter].","returnType":"void"},{"name":"canvas_item_set_interpolated","signature":"canvas_item_set_interpolated(item: RID, interpolated: bool) -> void","description":"If [param interpolated] is true, turns on physics interpolation for the canvas item.","returnType":"void"},{"name":"canvas_item_set_light_mask","signature":"canvas_item_set_light_mask(item: RID, mask: int) -> void","description":"Sets the light [param mask] for the canvas item specified by the [param item] RID. Equivalent to [member CanvasItem.light_mask].","returnType":"void"},{"name":"canvas_item_set_material","signature":"canvas_item_set_material(item: RID, material: RID) -> void","description":"Sets a new [param material] to the canvas item specified by the [param item] RID. Equivalent to [member CanvasItem.material].","returnType":"void"},{"name":"canvas_item_set_modulate","signature":"canvas_item_set_modulate(item: RID, color: Color) -> void","description":"Multiplies the color of the canvas item specified by the [param item] RID, while affecting its children. See also [method canvas_item_set_self_modulate]. Equivalent to [member CanvasItem.modulate].","returnType":"void"},{"name":"canvas_item_set_parent","signature":"canvas_item_set_parent(item: RID, parent: RID) -> void","description":"Sets a parent  to the . The item will inherit transform, modulation and visibility from its parent, like  nodes in the scene tree.","returnType":"void"},{"name":"canvas_item_set_self_modulate","signature":"canvas_item_set_self_modulate(item: RID, color: Color) -> void","description":"Multiplies the color of the canvas item specified by the [param item] RID, without affecting its children. See also [method canvas_item_set_modulate]. Equivalent to [member CanvasItem.self_modulate].","returnType":"void"},{"name":"canvas_item_set_sort_children_by_y","signature":"canvas_item_set_sort_children_by_y(item: RID, enabled: bool) -> void","description":"If [param enabled] is true, child nodes with the lowest Y position are drawn before those with a higher Y position. Y-sorting only affects children that inherit from the canvas item specified by the [param item] RID, not the canvas item itself. Equivalent to [member CanvasItem.y_sort_enabled].","returnType":"void"},{"name":"canvas_item_set_transform","signature":"canvas_item_set_transform(item: RID, transform: Transform2D) -> void","description":"Sets the [param transform] of the canvas item specified by the [param item] RID. This affects where and how the item will be drawn. Child canvas items' transforms are multiplied by their parent's transform. Equivalent to [member Node2D.transform].","returnType":"void"},{"name":"canvas_item_set_use_parent_material","signature":"canvas_item_set_use_parent_material(item: RID, enabled: bool) -> void","description":"Sets if the  uses its parent's material.","returnType":"void"},{"name":"canvas_item_set_visibility_layer","signature":"canvas_item_set_visibility_layer(item: RID, visibility_layer: int) -> void","description":"Sets the rendering visibility layer associated with this . Only  nodes with a matching rendering mask will render this .","returnType":"void"},{"name":"canvas_item_set_visibility_notifier","signature":"canvas_item_set_visibility_notifier(item: RID, enable: bool, area: Rect2, enter_callable: Callable, exit_callable: Callable) -> void","description":"Sets the given  as visibility notifier. [param area] defines the area of detecting visibility. [param enter_callable] is called when the  enters the screen, [param exit_callable] is called when the  exits the screen. If [param enable] is false, the item will no longer function as notifier.\n\t\t\t\tThis method can be used to manually mimic .","returnType":"void"},{"name":"canvas_item_set_visible","signature":"canvas_item_set_visible(item: RID, visible: bool) -> void","description":"Sets the visibility of the .","returnType":"void"},{"name":"canvas_item_set_z_as_relative_to_parent","signature":"canvas_item_set_z_as_relative_to_parent(item: RID, enabled: bool) -> void","description":"If this is enabled, the Z index of the parent will be added to the children's Z index.","returnType":"void"},{"name":"canvas_item_set_z_index","signature":"canvas_item_set_z_index(item: RID, z_index: int) -> void","description":"Sets the 's Z index, i.e. its draw order (lower indexes are drawn first).","returnType":"void"},{"name":"canvas_item_transform_physics_interpolation","signature":"canvas_item_transform_physics_interpolation(item: RID, transform: Transform2D) -> void","description":"Transforms both the current and previous stored transform for a canvas item.\n\t\t\t\tThis allows transforming a canvas item without creating a \"glitch\" in the interpolation, which is particularly useful for large worlds utilizing a shifting origin.","returnType":"void"},{"name":"canvas_light_attach_to_canvas","signature":"canvas_light_attach_to_canvas(light: RID, canvas: RID) -> void","description":"Attaches the canvas light to the canvas. Removes it from its previous canvas.","returnType":"void"},{"name":"canvas_light_create","signature":"canvas_light_create() -> RID","description":"Creates a canvas light and adds it to the RenderingServer. It can be accessed with the RID that is returned. This RID will be used in all canvas_light_* RenderingServer functions.\n\t\t\t\tOnce finished with your RID, you will want to free the RID using the RenderingServer's [method free_rid] method.\n\t\t\t\tNote: The equivalent node is .","returnType":"RID"},{"name":"canvas_light_occluder_attach_to_canvas","signature":"canvas_light_occluder_attach_to_canvas(occluder: RID, canvas: RID) -> void","description":"Attaches a light occluder to the canvas. Removes it from its previous canvas.","returnType":"void"},{"name":"canvas_light_occluder_create","signature":"canvas_light_occluder_create() -> RID","description":"Creates a light occluder and adds it to the RenderingServer. It can be accessed with the RID that is returned. This RID will be used in all canvas_light_occluder_* RenderingServer functions.\n\t\t\t\tOnce finished with your RID, you will want to free the RID using the RenderingServer's [method free_rid] method.\n\t\t\t\tNote: The equivalent node is .","returnType":"RID"},{"name":"canvas_light_occluder_reset_physics_interpolation","signature":"canvas_light_occluder_reset_physics_interpolation(occluder: RID) -> void","description":"Prevents physics interpolation for the current physics tick.\n\t\t\t\tThis is useful when moving an occluder to a new location, to give an instantaneous change rather than interpolation from the previous location.","returnType":"void"},{"name":"canvas_light_occluder_set_as_sdf_collision","signature":"canvas_light_occluder_set_as_sdf_collision(occluder: RID, enable: bool) -> void","description":"","returnType":"void"},{"name":"canvas_light_occluder_set_enabled","signature":"canvas_light_occluder_set_enabled(occluder: RID, enabled: bool) -> void","description":"Enables or disables light occluder.","returnType":"void"},{"name":"canvas_light_occluder_set_interpolated","signature":"canvas_light_occluder_set_interpolated(occluder: RID, interpolated: bool) -> void","description":"If [param interpolated] is true, turns on physics interpolation for the light occluder.","returnType":"void"},{"name":"canvas_light_occluder_set_light_mask","signature":"canvas_light_occluder_set_light_mask(occluder: RID, mask: int) -> void","description":"The light mask. See  for more information on light masks.","returnType":"void"},{"name":"canvas_light_occluder_set_polygon","signature":"canvas_light_occluder_set_polygon(occluder: RID, polygon: RID) -> void","description":"Sets a light occluder's polygon.","returnType":"void"},{"name":"canvas_light_occluder_set_transform","signature":"canvas_light_occluder_set_transform(occluder: RID, transform: Transform2D) -> void","description":"Sets a light occluder's .","returnType":"void"},{"name":"canvas_light_occluder_transform_physics_interpolation","signature":"canvas_light_occluder_transform_physics_interpolation(occluder: RID, transform: Transform2D) -> void","description":"Transforms both the current and previous stored transform for a light occluder.\n\t\t\t\tThis allows transforming an occluder without creating a \"glitch\" in the interpolation, which is particularly useful for large worlds utilizing a shifting origin.","returnType":"void"},{"name":"canvas_light_reset_physics_interpolation","signature":"canvas_light_reset_physics_interpolation(light: RID) -> void","description":"Prevents physics interpolation for the current physics tick.\n\t\t\t\tThis is useful when moving a canvas item to a new location, to give an instantaneous change rather than interpolation from the previous location.","returnType":"void"},{"name":"canvas_light_set_blend_mode","signature":"canvas_light_set_blend_mode(light: RID, mode: int) -> void","description":"Sets the blend mode for the given canvas light. See [enum CanvasLightBlendMode] for options. Equivalent to [member Light2D.blend_mode].","returnType":"void"},{"name":"canvas_light_set_color","signature":"canvas_light_set_color(light: RID, color: Color) -> void","description":"Sets the color for a light.","returnType":"void"},{"name":"canvas_light_set_enabled","signature":"canvas_light_set_enabled(light: RID, enabled: bool) -> void","description":"Enables or disables a canvas light.","returnType":"void"},{"name":"canvas_light_set_energy","signature":"canvas_light_set_energy(light: RID, energy: float) -> void","description":"Sets a canvas light's energy.","returnType":"void"},{"name":"canvas_light_set_height","signature":"canvas_light_set_height(light: RID, height: float) -> void","description":"Sets a canvas light's height.","returnType":"void"},{"name":"canvas_light_set_interpolated","signature":"canvas_light_set_interpolated(light: RID, interpolated: bool) -> void","description":"If [param interpolated] is true, turns on physics interpolation for the canvas light.","returnType":"void"},{"name":"canvas_light_set_item_cull_mask","signature":"canvas_light_set_item_cull_mask(light: RID, mask: int) -> void","description":"The light mask. See  for more information on light masks.","returnType":"void"},{"name":"canvas_light_set_item_shadow_cull_mask","signature":"canvas_light_set_item_shadow_cull_mask(light: RID, mask: int) -> void","description":"The binary mask used to determine which layers this canvas light's shadows affects. See  for more information on light masks.","returnType":"void"},{"name":"canvas_light_set_layer_range","signature":"canvas_light_set_layer_range(light: RID, min_layer: int, max_layer: int) -> void","description":"The layer range that gets rendered with this light.","returnType":"void"},{"name":"canvas_light_set_mode","signature":"canvas_light_set_mode(light: RID, mode: int) -> void","description":"The mode of the light, see [enum CanvasLightMode] constants.","returnType":"void"},{"name":"canvas_light_set_shadow_color","signature":"canvas_light_set_shadow_color(light: RID, color: Color) -> void","description":"Sets the color of the canvas light's shadow.","returnType":"void"},{"name":"canvas_light_set_shadow_enabled","signature":"canvas_light_set_shadow_enabled(light: RID, enabled: bool) -> void","description":"Enables or disables the canvas light's shadow.","returnType":"void"},{"name":"canvas_light_set_shadow_filter","signature":"canvas_light_set_shadow_filter(light: RID, filter: int) -> void","description":"Sets the canvas light's shadow's filter, see [enum CanvasLightShadowFilter] constants.","returnType":"void"},{"name":"canvas_light_set_shadow_smooth","signature":"canvas_light_set_shadow_smooth(light: RID, smooth: float) -> void","description":"Smoothens the shadow. The lower, the smoother.","returnType":"void"},{"name":"canvas_light_set_texture","signature":"canvas_light_set_texture(light: RID, texture: RID) -> void","description":"Sets the texture to be used by a . Equivalent to [member PointLight2D.texture].","returnType":"void"},{"name":"canvas_light_set_texture_offset","signature":"canvas_light_set_texture_offset(light: RID, offset: Vector2) -> void","description":"Sets the offset of a 's texture. Equivalent to [member PointLight2D.offset].","returnType":"void"},{"name":"canvas_light_set_texture_scale","signature":"canvas_light_set_texture_scale(light: RID, scale: float) -> void","description":"Sets the scale factor of a 's texture. Equivalent to [member PointLight2D.texture_scale].","returnType":"void"},{"name":"canvas_light_set_transform","signature":"canvas_light_set_transform(light: RID, transform: Transform2D) -> void","description":"Sets the canvas light's .","returnType":"void"},{"name":"canvas_light_set_z_range","signature":"canvas_light_set_z_range(light: RID, min_z: int, max_z: int) -> void","description":"Sets the Z range of objects that will be affected by this light. Equivalent to [member Light2D.range_z_min] and [member Light2D.range_z_max].","returnType":"void"},{"name":"canvas_light_transform_physics_interpolation","signature":"canvas_light_transform_physics_interpolation(light: RID, transform: Transform2D) -> void","description":"Transforms both the current and previous stored transform for a canvas light.\n\t\t\t\tThis allows transforming a light without creating a \"glitch\" in the interpolation, which is particularly useful for large worlds utilizing a shifting origin.","returnType":"void"},{"name":"canvas_occluder_polygon_create","signature":"canvas_occluder_polygon_create() -> RID","description":"Creates a new light occluder polygon and adds it to the RenderingServer. It can be accessed with the RID that is returned. This RID will be used in all canvas_occluder_polygon_* RenderingServer functions.\n\t\t\t\tOnce finished with your RID, you will want to free the RID using the RenderingServer's [method free_rid] method.\n\t\t\t\tNote: The equivalent resource is .","returnType":"RID"},{"name":"canvas_occluder_polygon_set_cull_mode","signature":"canvas_occluder_polygon_set_cull_mode(occluder_polygon: RID, mode: int) -> void","description":"Sets an occluder polygons cull mode. See [enum CanvasOccluderPolygonCullMode] constants.","returnType":"void"},{"name":"canvas_occluder_polygon_set_shape","signature":"canvas_occluder_polygon_set_shape(occluder_polygon: RID, shape: PackedVector2Array, closed: bool) -> void","description":"Sets the shape of the occluder polygon.","returnType":"void"},{"name":"canvas_set_disable_scale","signature":"canvas_set_disable_scale(disable: bool) -> void","description":"","returnType":"void"},{"name":"canvas_set_item_mirroring","signature":"canvas_set_item_mirroring(canvas: RID, item: RID, mirroring: Vector2) -> void","description":"A copy of the canvas item will be drawn with a local offset of the [param mirroring].\n\t\t\t\tNote: This is equivalent to calling [method canvas_set_item_repeat] like canvas_set_item_repeat(item, mirroring, 1), with an additional check ensuring [param canvas] is a parent of [param item].","returnType":"void"},{"name":"canvas_set_item_repeat","signature":"canvas_set_item_repeat(item: RID, repeat_size: Vector2, repeat_times: int) -> void","description":"A copy of the canvas item will be drawn with a local offset of the [param repeat_size] by the number of times of the [param repeat_times]. As the [param repeat_times] increases, the copies will spread away from the origin texture.","returnType":"void"},{"name":"canvas_set_modulate","signature":"canvas_set_modulate(canvas: RID, color: Color) -> void","description":"Modulates all colors in the given canvas.","returnType":"void"},{"name":"canvas_set_shadow_texture_size","signature":"canvas_set_shadow_texture_size(size: int) -> void","description":"Sets the [member ProjectSettings.rendering/2d/shadow_atlas/size] to use for  shadow rendering (in pixels). The value is rounded up to the nearest power of 2.","returnType":"void"},{"name":"canvas_texture_create","signature":"canvas_texture_create() -> RID","description":"Creates a canvas texture and adds it to the RenderingServer. It can be accessed with the RID that is returned. This RID will be used in all canvas_texture_* RenderingServer functions.\n\t\t\t\tOnce finished with your RID, you will want to free the RID using the RenderingServer's [method free_rid] method. See also [method texture_2d_create].\n\t\t\t\tNote: The equivalent resource is  and is only meant to be used in 2D rendering, not 3D.","returnType":"RID"},{"name":"canvas_texture_set_channel","signature":"canvas_texture_set_channel(canvas_texture: RID, channel: int, texture: RID) -> void","description":"Sets the [param channel]'s [param texture] for the canvas texture specified by the [param canvas_texture] RID. Equivalent to [member CanvasTexture.diffuse_texture], [member CanvasTexture.normal_texture] and [member CanvasTexture.specular_texture].","returnType":"void"},{"name":"canvas_texture_set_shading_parameters","signature":"canvas_texture_set_shading_parameters(canvas_texture: RID, base_color: Color, shininess: float) -> void","description":"Sets the [param base_color] and [param shininess] to use for the canvas texture specified by the [param canvas_texture] RID. Equivalent to [member CanvasTexture.specular_color] and [member CanvasTexture.specular_shininess].","returnType":"void"},{"name":"canvas_texture_set_texture_filter","signature":"canvas_texture_set_texture_filter(canvas_texture: RID, filter: int) -> void","description":"Sets the texture [param filter] mode to use for the canvas texture specified by the [param canvas_texture] RID.","returnType":"void"},{"name":"canvas_texture_set_texture_repeat","signature":"canvas_texture_set_texture_repeat(canvas_texture: RID, repeat: int) -> void","description":"Sets the texture [param repeat] mode to use for the canvas texture specified by the [param canvas_texture] RID.","returnType":"void"},{"name":"compositor_create","signature":"compositor_create() -> RID","description":"Creates a new compositor and adds it to the RenderingServer. It can be accessed with the RID that is returned.\n\t\t\t\tOnce finished with your RID, you will want to free the RID using the RenderingServer's [method free_rid] method.","returnType":"RID"},{"name":"compositor_effect_create","signature":"compositor_effect_create() -> RID","description":"Creates a new rendering effect and adds it to the RenderingServer. It can be accessed with the RID that is returned.\n\t\t\t\tOnce finished with your RID, you will want to free the RID using the RenderingServer's [method free_rid] method.","returnType":"RID"},{"name":"compositor_effect_set_callback","signature":"compositor_effect_set_callback(effect: RID, callback_type: int, callback: Callable) -> void","description":"Sets the callback type ([param callback_type]) and callback method([param callback]) for this rendering effect.","returnType":"void"},{"name":"compositor_effect_set_enabled","signature":"compositor_effect_set_enabled(effect: RID, enabled: bool) -> void","description":"Enables/disables this rendering effect.","returnType":"void"},{"name":"compositor_effect_set_flag","signature":"compositor_effect_set_flag(effect: RID, flag: int, set: bool) -> void","description":"Sets the flag ([param flag]) for this rendering effect to true or false ([param set]).","returnType":"void"},{"name":"compositor_set_compositor_effects","signature":"compositor_set_compositor_effects(compositor: RID, effects: RID[]) -> void","description":"Sets the compositor effects for the specified compositor RID. [param effects] should be an array containing RIDs created with [method compositor_effect_create].","returnType":"void"},{"name":"create_local_rendering_device","signature":"create_local_rendering_device() -> RenderingDevice","description":"Creates a RenderingDevice that can be used to do draw and compute operations on a separate thread. Cannot draw to the screen nor share data with the global RenderingDevice.\n\t\t\t\tNote: When using the OpenGL rendering driver or when running in headless mode, this function always returns null.","returnType":"RenderingDevice"},{"name":"debug_canvas_item_get_rect","signature":"debug_canvas_item_get_rect(item: RID) -> Rect2","description":"Returns the bounding rectangle for a canvas item in local space, as calculated by the renderer. This bound is used internally for culling.\n\t\t\t\tWarning: This function is intended for debugging in the editor, and will pass through and return a zero  in exported projects.","returnType":"Rect2"},{"name":"decal_create","signature":"decal_create() -> RID","description":"Creates a decal and adds it to the RenderingServer. It can be accessed with the RID that is returned. This RID will be used in all decal_* RenderingServer functions.\n\t\t\t\tOnce finished with your RID, you will want to free the RID using the RenderingServer's [method free_rid] method.\n\t\t\t\tTo place in a scene, attach this decal to an instance using [method instance_set_base] using the returned RID.\n\t\t\t\tNote: The equivalent node is .","returnType":"RID"},{"name":"decal_set_albedo_mix","signature":"decal_set_albedo_mix(decal: RID, albedo_mix: float) -> void","description":"Sets the [param albedo_mix] in the decal specified by the [param decal] RID. Equivalent to [member Decal.albedo_mix].","returnType":"void"},{"name":"decal_set_cull_mask","signature":"decal_set_cull_mask(decal: RID, mask: int) -> void","description":"Sets the cull [param mask] in the decal specified by the [param decal] RID. Equivalent to [member Decal.cull_mask].","returnType":"void"},{"name":"decal_set_distance_fade","signature":"decal_set_distance_fade(decal: RID, enabled: bool, begin: float, length: float) -> void","description":"Sets the distance fade parameters in the decal specified by the [param decal] RID. Equivalent to [member Decal.distance_fade_enabled], [member Decal.distance_fade_begin] and [member Decal.distance_fade_length].","returnType":"void"},{"name":"decal_set_emission_energy","signature":"decal_set_emission_energy(decal: RID, energy: float) -> void","description":"Sets the emission [param energy] in the decal specified by the [param decal] RID. Equivalent to [member Decal.emission_energy].","returnType":"void"},{"name":"decal_set_fade","signature":"decal_set_fade(decal: RID, above: float, below: float) -> void","description":"Sets the upper fade ([param above]) and lower fade ([param below]) in the decal specified by the [param decal] RID. Equivalent to [member Decal.upper_fade] and [member Decal.lower_fade].","returnType":"void"},{"name":"decal_set_modulate","signature":"decal_set_modulate(decal: RID, color: Color) -> void","description":"Sets the color multiplier in the decal specified by the [param decal] RID to [param color]. Equivalent to [member Decal.modulate].","returnType":"void"},{"name":"decal_set_normal_fade","signature":"decal_set_normal_fade(decal: RID, fade: float) -> void","description":"Sets the normal [param fade] in the decal specified by the [param decal] RID. Equivalent to [member Decal.normal_fade].","returnType":"void"},{"name":"decal_set_size","signature":"decal_set_size(decal: RID, size: Vector3) -> void","description":"Sets the [param size] of the decal specified by the [param decal] RID. Equivalent to [member Decal.size].","returnType":"void"},{"name":"decal_set_texture","signature":"decal_set_texture(decal: RID, type: int, texture: RID) -> void","description":"Sets the [param texture] in the given texture [param type] slot for the specified decal. Equivalent to [method Decal.set_texture].","returnType":"void"},{"name":"decals_set_filter","signature":"decals_set_filter(filter: int) -> void","description":"Sets the texture [param filter] mode to use when rendering decals. This parameter is global and cannot be set on a per-decal basis.","returnType":"void"},{"name":"directional_light_create","signature":"directional_light_create() -> RID","description":"Creates a directional light and adds it to the RenderingServer. It can be accessed with the RID that is returned. This RID can be used in most light_* RenderingServer functions.\n\t\t\t\tOnce finished with your RID, you will want to free the RID using the RenderingServer's [method free_rid] method.\n\t\t\t\tTo place in a scene, attach this directional light to an instance using [method instance_set_base] using the returned RID.\n\t\t\t\tNote: The equivalent node is .","returnType":"RID"},{"name":"directional_shadow_atlas_set_size","signature":"directional_shadow_atlas_set_size(size: int, is_16bits: bool) -> void","description":"Sets the [param size] of the directional light shadows in 3D. See also [member ProjectSettings.rendering/lights_and_shadows/directional_shadow/size]. This parameter is global and cannot be set on a per-viewport basis.","returnType":"void"},{"name":"directional_soft_shadow_filter_set_quality","signature":"directional_soft_shadow_filter_set_quality(quality: int) -> void","description":"Sets the filter [param quality] for directional light shadows in 3D. See also [member ProjectSettings.rendering/lights_and_shadows/directional_shadow/soft_shadow_filter_quality]. This parameter is global and cannot be set on a per-viewport basis.","returnType":"void"},{"name":"environment_bake_panorama","signature":"environment_bake_panorama(environment: RID, bake_irradiance: bool, size: Vector2i) -> Image","description":"Generates and returns an  containing the radiance map for the specified [param environment] RID's sky. This supports built-in sky material and custom sky shaders. If [param bake_irradiance] is true, the irradiance map is saved instead of the radiance map. The radiance map is used to render reflected light, while the irradiance map is used to render ambient light. See also [method sky_bake_panorama].\n\t\t\t\tNote: The image is saved in linear color space without any tonemapping performed, which means it will look too dark if viewed directly in an image editor.\n\t\t\t\tNote: [param size] should be a 2:1 aspect ratio for the generated panorama to have square pixels. For radiance maps, there is no point in using a height greater than [member Sky.radiance_size], as it won't increase detail. Irradiance maps only contain low-frequency data, so there is usually no point in going past a size of 128×64 pixels when saving an irradiance map.","returnType":"Image"},{"name":"environment_create","signature":"environment_create() -> RID","description":"Creates an environment and adds it to the RenderingServer. It can be accessed with the RID that is returned. This RID will be used in all environment_* RenderingServer functions.\n\t\t\t\tOnce finished with your RID, you will want to free the RID using the RenderingServer's [method free_rid] method.\n\t\t\t\tNote: The equivalent resource is .","returnType":"RID"},{"name":"environment_glow_set_use_bicubic_upscale","signature":"environment_glow_set_use_bicubic_upscale(enable: bool) -> void","description":"If [param enable] is true, enables bicubic upscaling for glow which improves quality at the cost of performance. Equivalent to [member ProjectSettings.rendering/environment/glow/upscale_mode].","returnType":"void"},{"name":"environment_set_adjustment","signature":"environment_set_adjustment(env: RID, enable: bool, brightness: float, contrast: float, saturation: float, use_1d_color_correction: bool, color_correction: RID) -> void","description":"Sets the values to be used with the \"adjustments\" post-process effect. See  for more details.","returnType":"void"},{"name":"environment_set_ambient_light","signature":"environment_set_ambient_light(env: RID, color: Color, ambient: int, energy: float, sky_contribution: float, reflection_source: int) -> void","description":"Sets the values to be used for ambient light rendering. See  for more details.","returnType":"void"},{"name":"environment_set_background","signature":"environment_set_background(env: RID, bg: int) -> void","description":"Sets the environment's background mode. Equivalent to [member Environment.background_mode].","returnType":"void"},{"name":"environment_set_bg_color","signature":"environment_set_bg_color(env: RID, color: Color) -> void","description":"Color displayed for clear areas of the scene. Only effective if using the [constant ENV_BG_COLOR] background mode.","returnType":"void"},{"name":"environment_set_bg_energy","signature":"environment_set_bg_energy(env: RID, multiplier: float, exposure_value: float) -> void","description":"Sets the intensity of the background color.","returnType":"void"},{"name":"environment_set_camera_id","signature":"environment_set_camera_id(env: RID, id: int) -> void","description":"Sets the camera ID to be used as environment background.","returnType":"void"},{"name":"environment_set_canvas_max_layer","signature":"environment_set_canvas_max_layer(env: RID, max_layer: int) -> void","description":"Sets the maximum layer to use if using Canvas background mode.","returnType":"void"},{"name":"environment_set_fog","signature":"environment_set_fog(env: RID, enable: bool, light_color: Color, light_energy: float, sun_scatter: float, density: float, height: float, height_density: float, aerial_perspective: float, sky_affect: float, fog_mode: int) -> void","description":"Configures fog for the specified environment RID. See fog_* properties in  for more information.","returnType":"void"},{"name":"environment_set_glow","signature":"environment_set_glow(env: RID, enable: bool, levels: PackedFloat32Array, intensity: float, strength: float, mix: float, bloom_threshold: float, blend_mode: int, hdr_bleed_threshold: float, hdr_bleed_scale: float, hdr_luminance_cap: float, glow_map_strength: float, glow_map: RID) -> void","description":"Configures glow for the specified environment RID. See glow_* properties in  for more information.","returnType":"void"},{"name":"environment_set_sdfgi","signature":"environment_set_sdfgi(env: RID, enable: bool, cascades: int, min_cell_size: float, y_scale: int, use_occlusion: bool, bounce_feedback: float, read_sky: bool, energy: float, normal_bias: float, probe_bias: float) -> void","description":"Configures signed distance field global illumination for the specified environment RID. See sdfgi_* properties in  for more information.","returnType":"void"},{"name":"environment_set_sdfgi_frames_to_converge","signature":"environment_set_sdfgi_frames_to_converge(frames: int) -> void","description":"Sets the number of frames to use for converging signed distance field global illumination. Equivalent to [member ProjectSettings.rendering/global_illumination/sdfgi/frames_to_converge].","returnType":"void"},{"name":"environment_set_sdfgi_frames_to_update_light","signature":"environment_set_sdfgi_frames_to_update_light(frames: int) -> void","description":"Sets the update speed for dynamic lights' indirect lighting when computing signed distance field global illumination. Equivalent to [member ProjectSettings.rendering/global_illumination/sdfgi/frames_to_update_lights].","returnType":"void"},{"name":"environment_set_sdfgi_ray_count","signature":"environment_set_sdfgi_ray_count(ray_count: int) -> void","description":"Sets the number of rays to throw per frame when computing signed distance field global illumination. Equivalent to [member ProjectSettings.rendering/global_illumination/sdfgi/probe_ray_count].","returnType":"void"},{"name":"environment_set_sky","signature":"environment_set_sky(env: RID, sky: RID) -> void","description":"Sets the  to be used as the environment's background when using BGMode sky. Equivalent to [member Environment.sky].","returnType":"void"},{"name":"environment_set_sky_custom_fov","signature":"environment_set_sky_custom_fov(env: RID, scale: float) -> void","description":"Sets a custom field of view for the background . Equivalent to [member Environment.sky_custom_fov].","returnType":"void"},{"name":"environment_set_sky_orientation","signature":"environment_set_sky_orientation(env: RID, orientation: Basis) -> void","description":"Sets the rotation of the background  expressed as a . Equivalent to [member Environment.sky_rotation], where the rotation vector is used to construct the .","returnType":"void"},{"name":"environment_set_ssao","signature":"environment_set_ssao(env: RID, enable: bool, radius: float, intensity: float, power: float, detail: float, horizon: float, sharpness: float, light_affect: float, ao_channel_affect: float) -> void","description":"Sets the variables to be used with the screen-space ambient occlusion (SSAO) post-process effect. See  for more details.","returnType":"void"},{"name":"environment_set_ssao_quality","signature":"environment_set_ssao_quality(quality: int, half_size: bool, adaptive_target: float, blur_passes: int, fadeout_from: float, fadeout_to: float) -> void","description":"Sets the quality level of the screen-space ambient occlusion (SSAO) post-process effect. See  for more details.","returnType":"void"},{"name":"environment_set_ssil_quality","signature":"environment_set_ssil_quality(quality: int, half_size: bool, adaptive_target: float, blur_passes: int, fadeout_from: float, fadeout_to: float) -> void","description":"Sets the quality level of the screen-space indirect lighting (SSIL) post-process effect. See  for more details.","returnType":"void"},{"name":"environment_set_ssr","signature":"environment_set_ssr(env: RID, enable: bool, max_steps: int, fade_in: float, fade_out: float, depth_tolerance: float) -> void","description":"Sets the variables to be used with the screen-space reflections (SSR) post-process effect. See  for more details.","returnType":"void"},{"name":"environment_set_ssr_roughness_quality","signature":"environment_set_ssr_roughness_quality(quality: int) -> void","description":"","returnType":"void"},{"name":"environment_set_tonemap","signature":"environment_set_tonemap(env: RID, tone_mapper: int, exposure: float, white: float) -> void","description":"Sets the variables to be used with the \"tonemap\" post-process effect. See  for more details.","returnType":"void"},{"name":"environment_set_volumetric_fog","signature":"environment_set_volumetric_fog(env: RID, enable: bool, density: float, albedo: Color, emission: Color, emission_energy: float, anisotropy: float, length: float, p_detail_spread: float, gi_inject: float, temporal_reprojection: bool, temporal_reprojection_amount: float, ambient_inject: float, sky_affect: float) -> void","description":"Sets the variables to be used with the volumetric fog post-process effect. See  for more details.","returnType":"void"},{"name":"environment_set_volumetric_fog_filter_active","signature":"environment_set_volumetric_fog_filter_active(active: bool) -> void","description":"Enables filtering of the volumetric fog scattering buffer. This results in much smoother volumes with very few under-sampling artifacts.","returnType":"void"},{"name":"environment_set_volumetric_fog_volume_size","signature":"environment_set_volumetric_fog_volume_size(size: int, depth: int) -> void","description":"Sets the resolution of the volumetric fog's froxel buffer. [param size] is modified by the screen's aspect ratio and then used to set the width and height of the buffer. While [param depth] is directly used to set the depth of the buffer.","returnType":"void"},{"name":"fog_volume_create","signature":"fog_volume_create() -> RID","description":"Creates a new fog volume and adds it to the RenderingServer. It can be accessed with the RID that is returned. This RID will be used in all fog_volume_* RenderingServer functions.\n\t\t\t\tOnce finished with your RID, you will want to free the RID using the RenderingServer's [method free_rid] method.\n\t\t\t\tNote: The equivalent node is .","returnType":"RID"},{"name":"fog_volume_set_material","signature":"fog_volume_set_material(fog_volume: RID, material: RID) -> void","description":"Sets the  of the fog volume. Can be either a  or a custom .","returnType":"void"},{"name":"fog_volume_set_shape","signature":"fog_volume_set_shape(fog_volume: RID, shape: int) -> void","description":"Sets the shape of the fog volume to either [constant RenderingServer.FOG_VOLUME_SHAPE_ELLIPSOID], [constant RenderingServer.FOG_VOLUME_SHAPE_CONE], [constant RenderingServer.FOG_VOLUME_SHAPE_CYLINDER], [constant RenderingServer.FOG_VOLUME_SHAPE_BOX] or [constant RenderingServer.FOG_VOLUME_SHAPE_WORLD].","returnType":"void"},{"name":"fog_volume_set_size","signature":"fog_volume_set_size(fog_volume: RID, size: Vector3) -> void","description":"Sets the size of the fog volume when shape is [constant RenderingServer.FOG_VOLUME_SHAPE_ELLIPSOID], [constant RenderingServer.FOG_VOLUME_SHAPE_CONE], [constant RenderingServer.FOG_VOLUME_SHAPE_CYLINDER] or [constant RenderingServer.FOG_VOLUME_SHAPE_BOX].","returnType":"void"},{"name":"force_draw","signature":"force_draw(swap_buffers: bool, frame_step: float) -> void","description":"Forces redrawing of all viewports at once. Must be called from the main thread.","returnType":"void"},{"name":"force_sync","signature":"force_sync() -> void","description":"Forces a synchronization between the CPU and GPU, which may be required in certain cases. Only call this when needed, as CPU-GPU synchronization has a performance cost.","returnType":"void"},{"name":"free_rid","signature":"free_rid(rid: RID) -> void","description":"Tries to free an object in the RenderingServer. To avoid memory leaks, this should be called after using an object as memory management does not occur automatically when using RenderingServer directly.","returnType":"void"},{"name":"get_current_rendering_driver_name","signature":"get_current_rendering_driver_name() -> String","description":"Returns the name of the current rendering driver. This can be vulkan, d3d12, metal, opengl3, opengl3_es, or opengl3_angle. See also [method get_current_rendering_method].\n\t\t\t\tThe rendering driver is determined by [member ProjectSettings.rendering/rendering_device/driver], the --rendering-driver command line argument that overrides this project setting, or an automatic fallback that is applied depending on the hardware.","returnType":"String"},{"name":"get_current_rendering_method","signature":"get_current_rendering_method() -> String","description":"Returns the name of the current rendering method. This can be forward_plus, mobile, or gl_compatibility. See also [method get_current_rendering_driver_name].\n\t\t\t\tThe rendering method is determined by [member ProjectSettings.rendering/renderer/rendering_method], the --rendering-method command line argument that overrides this project setting, or an automatic fallback that is applied depending on the hardware.","returnType":"String"},{"name":"get_default_clear_color","signature":"get_default_clear_color() -> Color","description":"Returns the default clear color which is used when a specific clear color has not been selected. See also [method set_default_clear_color].","returnType":"Color"},{"name":"get_frame_setup_time_cpu","signature":"get_frame_setup_time_cpu() -> float","description":"Returns the time taken to setup rendering on the CPU in milliseconds. This value is shared across all viewports and does not require [method viewport_set_measure_render_time] to be enabled on a viewport to be queried. See also [method viewport_get_measured_render_time_cpu].","returnType":"float"},{"name":"get_rendering_device","signature":"get_rendering_device() -> RenderingDevice","description":"Returns the global RenderingDevice.\n\t\t\t\tNote: When using the OpenGL rendering driver or when running in headless mode, this function always returns null.","returnType":"RenderingDevice"},{"name":"get_rendering_info","signature":"get_rendering_info(info: int) -> int","description":"Returns a statistic about the rendering engine which can be used for performance profiling. See [enum RenderingServer.RenderingInfo] for a list of values that can be queried. See also [method viewport_get_render_info], which returns information specific to a viewport.\n\t\t\t\tNote: Only 3D rendering is currently taken into account by some of these values, such as the number of draw calls.\n\t\t\t\tNote: Rendering information is not available until at least 2 frames have been rendered by the engine. If rendering information is not available, [method get_rendering_info] returns 0. To print rendering information in _ready() successfully, use the following:\n\t\t\t\t\n\t\t\t\tfunc _ready():\n\t\t\t\t    for _i in 2:\n\t\t\t\t        await get_tree().process_frame\n\n\t\t\t\t    print(RenderingServer.get_rendering_info(RENDERING_INFO_TOTAL_DRAW_CALLS_IN_FRAME))\n\t\t\t\t","returnType":"int"},{"name":"get_shader_parameter_list","signature":"get_shader_parameter_list(shader: RID) -> Dictionary[]","description":"Returns the parameters of a shader.","returnType":"Dictionary[]"},{"name":"get_test_cube","signature":"get_test_cube() -> RID","description":"Returns the RID of the test cube. This mesh will be created and returned on the first call to [method get_test_cube], then it will be cached for subsequent calls. See also [method make_sphere_mesh].","returnType":"RID"},{"name":"get_test_texture","signature":"get_test_texture() -> RID","description":"Returns the RID of a 256×256 texture with a testing pattern on it (in [constant Image.FORMAT_RGB8] format). This texture will be created and returned on the first call to [method get_test_texture], then it will be cached for subsequent calls. See also [method get_white_texture].\n\t\t\t\tExample: Get the test texture and apply it to a  node:\n\t\t\t\t\n\t\t\t\tvar texture_rid = RenderingServer.get_test_texture()\n\t\t\t\tvar texture = ImageTexture.create_from_image(RenderingServer.texture_2d_get(texture_rid))\n\t\t\t\t$Sprite2D.texture = texture\n\t\t\t\t","returnType":"RID"},{"name":"get_video_adapter_api_version","signature":"get_video_adapter_api_version() -> String","description":"Returns the version of the graphics video adapter currently in use (e.g. \"1.2.189\" for Vulkan, \"3.3.0 NVIDIA 510.60.02\" for OpenGL). This version may be different from the actual latest version supported by the hardware, as Godot may not always request the latest version. See also [method OS.get_video_adapter_driver_info].\n\t\t\t\tNote: When running a headless or server binary, this function returns an empty string.","returnType":"String"},{"name":"get_video_adapter_name","signature":"get_video_adapter_name() -> String","description":"Returns the name of the video adapter (e.g. \"GeForce GTX 1080/PCIe/SSE2\").\n\t\t\t\tNote: When running a headless or server binary, this function returns an empty string.\n\t\t\t\tNote: On the web platform, some browsers such as Firefox may report a different, fixed GPU name such as \"GeForce GTX 980\" (regardless of the user's actual GPU model). This is done to make fingerprinting more difficult.","returnType":"String"},{"name":"get_video_adapter_type","signature":"get_video_adapter_type() -> int","description":"Returns the type of the video adapter. Since dedicated graphics cards from a given generation will usually be significantly faster than integrated graphics made in the same generation, the device type can be used as a basis for automatic graphics settings adjustment. However, this is not always true, so make sure to provide users with a way to manually override graphics settings.\n\t\t\t\tNote: When using the OpenGL rendering driver or when running in headless mode, this function always returns [constant RenderingDevice.DEVICE_TYPE_OTHER].","returnType":"int"},{"name":"get_video_adapter_vendor","signature":"get_video_adapter_vendor() -> String","description":"Returns the vendor of the video adapter (e.g. \"NVIDIA Corporation\").\n\t\t\t\tNote: When running a headless or server binary, this function returns an empty string.","returnType":"String"},{"name":"get_white_texture","signature":"get_white_texture() -> RID","description":"Returns the ID of a 4×4 white texture (in [constant Image.FORMAT_RGB8] format). This texture will be created and returned on the first call to [method get_white_texture], then it will be cached for subsequent calls. See also [method get_test_texture].\n\t\t\t\tExample: Get the white texture and apply it to a  node:\n\t\t\t\t\n\t\t\t\tvar texture_rid = RenderingServer.get_white_texture()\n\t\t\t\tvar texture = ImageTexture.create_from_image(RenderingServer.texture_2d_get(texture_rid))\n\t\t\t\t$Sprite2D.texture = texture\n\t\t\t\t","returnType":"RID"},{"name":"gi_set_use_half_resolution","signature":"gi_set_use_half_resolution(half_resolution: bool) -> void","description":"If [param half_resolution] is true, renders  and SDFGI ([member Environment.sdfgi_enabled]) buffers at halved resolution on each axis (e.g. 960×540 when the viewport size is 1920×1080). This improves performance significantly when VoxelGI or SDFGI is enabled, at the cost of artifacts that may be visible on polygon edges. The loss in quality becomes less noticeable as the viewport resolution increases.  rendering is not affected by this setting. Equivalent to [member ProjectSettings.rendering/global_illumination/gi/use_half_resolution].","returnType":"void"},{"name":"global_shader_parameter_add","signature":"global_shader_parameter_add(name: StringName, type: int, default_value: Variant) -> void","description":"Creates a new global shader uniform.\n\t\t\t\tNote: Global shader parameter names are case-sensitive.","returnType":"void"},{"name":"global_shader_parameter_get","signature":"global_shader_parameter_get(name: StringName) -> Variant","description":"Returns the value of the global shader uniform specified by [param name].\n\t\t\t\tNote: [method global_shader_parameter_get] has a large performance penalty as the rendering thread needs to synchronize with the calling thread, which is slow. Do not use this method during gameplay to avoid stuttering. If you need to read values in a script after setting them, consider creating an autoload where you store the values you need to query at the same time you're setting them as global parameters.","returnType":"Variant"},{"name":"global_shader_parameter_get_list","signature":"global_shader_parameter_get_list() -> StringName[]","description":"Returns the list of global shader uniform names.\n\t\t\t\tNote: [method global_shader_parameter_get] has a large performance penalty as the rendering thread needs to synchronize with the calling thread, which is slow. Do not use this method during gameplay to avoid stuttering. If you need to read values in a script after setting them, consider creating an autoload where you store the values you need to query at the same time you're setting them as global parameters.","returnType":"StringName[]"},{"name":"global_shader_parameter_get_type","signature":"global_shader_parameter_get_type(name: StringName) -> int","description":"Returns the type associated to the global shader uniform specified by [param name].\n\t\t\t\tNote: [method global_shader_parameter_get] has a large performance penalty as the rendering thread needs to synchronize with the calling thread, which is slow. Do not use this method during gameplay to avoid stuttering. If you need to read values in a script after setting them, consider creating an autoload where you store the values you need to query at the same time you're setting them as global parameters.","returnType":"int"},{"name":"global_shader_parameter_remove","signature":"global_shader_parameter_remove(name: StringName) -> void","description":"Removes the global shader uniform specified by [param name].","returnType":"void"},{"name":"global_shader_parameter_set","signature":"global_shader_parameter_set(name: StringName, value: Variant) -> void","description":"Sets the global shader uniform [param name] to [param value].","returnType":"void"},{"name":"global_shader_parameter_set_override","signature":"global_shader_parameter_set_override(name: StringName, value: Variant) -> void","description":"Overrides the global shader uniform [param name] with [param value]. Equivalent to the  node.","returnType":"void"},{"name":"has_changed","signature":"has_changed() -> bool","description":"Returns true if changes have been made to the RenderingServer's data. [method force_draw] is usually called if this happens.","returnType":"bool"},{"name":"has_feature","signature":"has_feature(feature: int) -> bool","description":"This method does nothing and always returns false.","returnType":"bool"},{"name":"has_os_feature","signature":"has_os_feature(feature: String) -> bool","description":"Returns true if the OS supports a certain [param feature]. Features might be s3tc, etc, and etc2.","returnType":"bool"},{"name":"instance_attach_object_instance_id","signature":"instance_attach_object_instance_id(instance: RID, id: int) -> void","description":"Attaches a unique Object ID to instance. Object ID must be attached to instance for proper culling with [method instances_cull_aabb], [method instances_cull_convex], and [method instances_cull_ray].","returnType":"void"},{"name":"instance_attach_skeleton","signature":"instance_attach_skeleton(instance: RID, skeleton: RID) -> void","description":"Attaches a skeleton to an instance. Removes the previous skeleton from the instance.","returnType":"void"},{"name":"instance_create","signature":"instance_create() -> RID","description":"Creates a visual instance and adds it to the RenderingServer. It can be accessed with the RID that is returned. This RID will be used in all instance_* RenderingServer functions.\n\t\t\t\tOnce finished with your RID, you will want to free the RID using the RenderingServer's [method free_rid] method.\n\t\t\t\tAn instance is a way of placing a 3D object in the scenario. Objects like particles, meshes, reflection probes and decals need to be associated with an instance to be visible in the scenario using [method instance_set_base].\n\t\t\t\tNote: The equivalent node is .","returnType":"RID"},{"name":"instance_create2","signature":"instance_create2(base: RID, scenario: RID) -> RID","description":"Creates a visual instance, adds it to the RenderingServer, and sets both base and scenario. It can be accessed with the RID that is returned. This RID will be used in all instance_* RenderingServer functions.\n\t\t\t\tOnce finished with your RID, you will want to free the RID using the RenderingServer's [method free_rid] method. This is a shorthand for using [method instance_create] and setting the base and scenario manually.","returnType":"RID"},{"name":"instance_geometry_get_shader_parameter","signature":"instance_geometry_get_shader_parameter(instance: RID, parameter: StringName) -> Variant","description":"Returns the value of the per-instance shader uniform from the specified 3D geometry instance. Equivalent to [method GeometryInstance3D.get_instance_shader_parameter].\n\t\t\t\tNote: Per-instance shader parameter names are case-sensitive.","returnType":"Variant"},{"name":"instance_geometry_get_shader_parameter_default_value","signature":"instance_geometry_get_shader_parameter_default_value(instance: RID, parameter: StringName) -> Variant","description":"Returns the default value of the per-instance shader uniform from the specified 3D geometry instance. Equivalent to [method GeometryInstance3D.get_instance_shader_parameter].","returnType":"Variant"},{"name":"instance_geometry_get_shader_parameter_list","signature":"instance_geometry_get_shader_parameter_list(instance: RID) -> Dictionary[]","description":"Returns a dictionary of per-instance shader uniform names of the per-instance shader uniform from the specified 3D geometry instance. The returned dictionary is in PropertyInfo format, with the keys name, class_name, type, hint, hint_string and usage. Equivalent to [method GeometryInstance3D.get_instance_shader_parameter].","returnType":"Dictionary[]"},{"name":"instance_geometry_set_cast_shadows_setting","signature":"instance_geometry_set_cast_shadows_setting(instance: RID, shadow_casting_setting: int) -> void","description":"Sets the shadow casting setting to one of [enum ShadowCastingSetting]. Equivalent to [member GeometryInstance3D.cast_shadow].","returnType":"void"},{"name":"instance_geometry_set_flag","signature":"instance_geometry_set_flag(instance: RID, flag: int, enabled: bool) -> void","description":"Sets the flag for a given [enum InstanceFlags]. See [enum InstanceFlags] for more details.","returnType":"void"},{"name":"instance_geometry_set_lightmap","signature":"instance_geometry_set_lightmap(instance: RID, lightmap: RID, lightmap_uv_scale: Rect2, lightmap_slice: int) -> void","description":"Sets the lightmap GI instance to use for the specified 3D geometry instance. The lightmap UV scale for the specified instance (equivalent to [member GeometryInstance3D.gi_lightmap_scale]) and lightmap atlas slice must also be specified.","returnType":"void"},{"name":"instance_geometry_set_lod_bias","signature":"instance_geometry_set_lod_bias(instance: RID, lod_bias: float) -> void","description":"Sets the level of detail bias to use when rendering the specified 3D geometry instance. Higher values result in higher detail from further away. Equivalent to [member GeometryInstance3D.lod_bias].","returnType":"void"},{"name":"instance_geometry_set_material_overlay","signature":"instance_geometry_set_material_overlay(instance: RID, material: RID) -> void","description":"Sets a material that will be rendered for all surfaces on top of active materials for the mesh associated with this instance. Equivalent to [member GeometryInstance3D.material_overlay].","returnType":"void"},{"name":"instance_geometry_set_material_override","signature":"instance_geometry_set_material_override(instance: RID, material: RID) -> void","description":"Sets a material that will override the material for all surfaces on the mesh associated with this instance. Equivalent to [member GeometryInstance3D.material_override].","returnType":"void"},{"name":"instance_geometry_set_shader_parameter","signature":"instance_geometry_set_shader_parameter(instance: RID, parameter: StringName, value: Variant) -> void","description":"Sets the per-instance shader uniform on the specified 3D geometry instance. Equivalent to [method GeometryInstance3D.set_instance_shader_parameter].","returnType":"void"},{"name":"instance_geometry_set_transparency","signature":"instance_geometry_set_transparency(instance: RID, transparency: float) -> void","description":"Sets the transparency for the given geometry instance. Equivalent to [member GeometryInstance3D.transparency].\n\t\t\t\tA transparency of 0.0 is fully opaque, while 1.0 is fully transparent. Values greater than 0.0 (exclusive) will force the geometry's materials to go through the transparent pipeline, which is slower to render and can exhibit rendering issues due to incorrect transparency sorting. However, unlike using a transparent material, setting [param transparency] to a value greater than 0.0 (exclusive) will not disable shadow rendering.\n\t\t\t\tIn spatial shaders, 1.0 - transparency is set as the default value of the ALPHA built-in.\n\t\t\t\tNote: [param transparency] is clamped between 0.0 and 1.0, so this property cannot be used to make transparent materials more opaque than they originally are.","returnType":"void"},{"name":"instance_geometry_set_visibility_range","signature":"instance_geometry_set_visibility_range(instance: RID, min: float, max: float, min_margin: float, max_margin: float, fade_mode: int) -> void","description":"Sets the visibility range values for the given geometry instance. Equivalent to [member GeometryInstance3D.visibility_range_begin] and related properties.","returnType":"void"},{"name":"instance_reset_physics_interpolation","signature":"instance_reset_physics_interpolation(instance: RID) -> void","description":"Prevents physics interpolation for the current physics tick.\n\t\t\t\tThis is useful when moving an instance to a new location, to give an instantaneous change rather than interpolation from the previous location.","returnType":"void"},{"name":"instance_set_base","signature":"instance_set_base(instance: RID, base: RID) -> void","description":"Sets the base of the instance. A base can be any of the 3D objects that are created in the RenderingServer that can be displayed. For example, any of the light types, mesh, multimesh, particle system, reflection probe, decal, lightmap, voxel GI and visibility notifiers are all types that can be set as the base of an instance in order to be displayed in the scenario.","returnType":"void"},{"name":"instance_set_blend_shape_weight","signature":"instance_set_blend_shape_weight(instance: RID, shape: int, weight: float) -> void","description":"Sets the weight for a given blend shape associated with this instance.","returnType":"void"},{"name":"instance_set_custom_aabb","signature":"instance_set_custom_aabb(instance: RID, aabb: AABB) -> void","description":"Sets a custom AABB to use when culling objects from the view frustum. Equivalent to setting [member GeometryInstance3D.custom_aabb].","returnType":"void"},{"name":"instance_set_extra_visibility_margin","signature":"instance_set_extra_visibility_margin(instance: RID, margin: float) -> void","description":"Sets a margin to increase the size of the AABB when culling objects from the view frustum. This allows you to avoid culling objects that fall outside the view frustum. Equivalent to [member GeometryInstance3D.extra_cull_margin].","returnType":"void"},{"name":"instance_set_ignore_culling","signature":"instance_set_ignore_culling(instance: RID, enabled: bool) -> void","description":"If true, ignores both frustum and occlusion culling on the specified 3D geometry instance. This is not the same as [member GeometryInstance3D.ignore_occlusion_culling], which only ignores occlusion culling and leaves frustum culling intact.","returnType":"void"},{"name":"instance_set_interpolated","signature":"instance_set_interpolated(instance: RID, interpolated: bool) -> void","description":"Turns on and off physics interpolation for the instance.","returnType":"void"},{"name":"instance_set_layer_mask","signature":"instance_set_layer_mask(instance: RID, mask: int) -> void","description":"Sets the render layers that this instance will be drawn to. Equivalent to [member VisualInstance3D.layers].","returnType":"void"},{"name":"instance_set_pivot_data","signature":"instance_set_pivot_data(instance: RID, sorting_offset: float, use_aabb_center: bool) -> void","description":"Sets the sorting offset and switches between using the bounding box or instance origin for depth sorting.","returnType":"void"},{"name":"instance_set_scenario","signature":"instance_set_scenario(instance: RID, scenario: RID) -> void","description":"Sets the scenario that the instance is in. The scenario is the 3D world that the objects will be displayed in.","returnType":"void"},{"name":"instance_set_surface_override_material","signature":"instance_set_surface_override_material(instance: RID, surface: int, material: RID) -> void","description":"Sets the override material of a specific surface. Equivalent to [method MeshInstance3D.set_surface_override_material].","returnType":"void"},{"name":"instance_set_transform","signature":"instance_set_transform(instance: RID, transform: Transform3D) -> void","description":"Sets the world space transform of the instance. Equivalent to [member Node3D.global_transform].","returnType":"void"},{"name":"instance_set_visibility_parent","signature":"instance_set_visibility_parent(instance: RID, parent: RID) -> void","description":"Sets the visibility parent for the given instance. Equivalent to [member Node3D.visibility_parent].","returnType":"void"},{"name":"instance_set_visible","signature":"instance_set_visible(instance: RID, visible: bool) -> void","description":"Sets whether an instance is drawn or not. Equivalent to [member Node3D.visible].","returnType":"void"},{"name":"instances_cull_aabb","signature":"instances_cull_aabb(aabb: AABB, scenario: RID) -> PackedInt64Array","description":"Returns an array of object IDs intersecting with the provided AABB. Only 3D nodes that inherit from  are considered, such as  or . Use [method @GlobalScope.instance_from_id] to obtain the actual nodes. A scenario RID must be provided, which is available in the  you want to query. This forces an update for all resources queued to update.\n\t\t\t\tWarning: This function is primarily intended for editor usage. For in-game use cases, prefer physics collision.","returnType":"PackedInt64Array"},{"name":"instances_cull_convex","signature":"instances_cull_convex(convex: Plane[], scenario: RID) -> PackedInt64Array","description":"Returns an array of object IDs intersecting with the provided convex shape. Only 3D nodes that inherit from  are considered, such as  or . Use [method @GlobalScope.instance_from_id] to obtain the actual nodes. A scenario RID must be provided, which is available in the  you want to query. This forces an update for all resources queued to update.\n\t\t\t\tWarning: This function is primarily intended for editor usage. For in-game use cases, prefer physics collision.","returnType":"PackedInt64Array"},{"name":"instances_cull_ray","signature":"instances_cull_ray(from: Vector3, to: Vector3, scenario: RID) -> PackedInt64Array","description":"Returns an array of object IDs intersecting with the provided 3D ray. Only 3D nodes that inherit from  are considered, such as  or . Use [method @GlobalScope.instance_from_id] to obtain the actual nodes. A scenario RID must be provided, which is available in the  you want to query. This forces an update for all resources queued to update.\n\t\t\t\tWarning: This function is primarily intended for editor usage. For in-game use cases, prefer physics collision.","returnType":"PackedInt64Array"},{"name":"is_on_render_thread","signature":"is_on_render_thread() -> bool","description":"Returns true if our code is currently executing on the rendering thread.","returnType":"bool"},{"name":"light_directional_set_blend_splits","signature":"light_directional_set_blend_splits(light: RID, enable: bool) -> void","description":"If true, this directional light will blend between shadow map splits resulting in a smoother transition between them. Equivalent to [member DirectionalLight3D.directional_shadow_blend_splits].","returnType":"void"},{"name":"light_directional_set_shadow_mode","signature":"light_directional_set_shadow_mode(light: RID, mode: int) -> void","description":"Sets the shadow mode for this directional light. Equivalent to [member DirectionalLight3D.directional_shadow_mode]. See [enum LightDirectionalShadowMode] for options.","returnType":"void"},{"name":"light_directional_set_sky_mode","signature":"light_directional_set_sky_mode(light: RID, mode: int) -> void","description":"If true, this light will not be used for anything except sky shaders. Use this for lights that impact your sky shader that you may want to hide from affecting the rest of the scene. For example, you may want to enable this when the sun in your sky shader falls below the horizon.","returnType":"void"},{"name":"light_omni_set_shadow_mode","signature":"light_omni_set_shadow_mode(light: RID, mode: int) -> void","description":"Sets whether to use a dual paraboloid or a cubemap for the shadow map. Dual paraboloid is faster but may suffer from artifacts. Equivalent to [member OmniLight3D.omni_shadow_mode].","returnType":"void"},{"name":"light_projectors_set_filter","signature":"light_projectors_set_filter(filter: int) -> void","description":"Sets the texture filter mode to use when rendering light projectors. This parameter is global and cannot be set on a per-light basis.","returnType":"void"},{"name":"light_set_bake_mode","signature":"light_set_bake_mode(light: RID, bake_mode: int) -> void","description":"Sets the bake mode to use for the specified 3D light. Equivalent to [member Light3D.light_bake_mode].","returnType":"void"},{"name":"light_set_color","signature":"light_set_color(light: RID, color: Color) -> void","description":"Sets the color of the light. Equivalent to [member Light3D.light_color].","returnType":"void"},{"name":"light_set_cull_mask","signature":"light_set_cull_mask(light: RID, mask: int) -> void","description":"Sets the cull mask for this 3D light. Lights only affect objects in the selected layers. Equivalent to [member Light3D.light_cull_mask].","returnType":"void"},{"name":"light_set_distance_fade","signature":"light_set_distance_fade(decal: RID, enabled: bool, begin: float, shadow: float, length: float) -> void","description":"Sets the distance fade for this 3D light. This acts as a form of level of detail (LOD) and can be used to improve performance. Equivalent to [member Light3D.distance_fade_enabled], [member Light3D.distance_fade_begin], [member Light3D.distance_fade_shadow], and [member Light3D.distance_fade_length].","returnType":"void"},{"name":"light_set_max_sdfgi_cascade","signature":"light_set_max_sdfgi_cascade(light: RID, cascade: int) -> void","description":"Sets the maximum SDFGI cascade in which the 3D light's indirect lighting is rendered. Higher values allow the light to be rendered in SDFGI further away from the camera.","returnType":"void"},{"name":"light_set_negative","signature":"light_set_negative(light: RID, enable: bool) -> void","description":"If true, the 3D light will subtract light instead of adding light. Equivalent to [member Light3D.light_negative].","returnType":"void"},{"name":"light_set_param","signature":"light_set_param(light: RID, param: int, value: float) -> void","description":"Sets the specified 3D light parameter. See [enum LightParam] for options. Equivalent to [method Light3D.set_param].","returnType":"void"},{"name":"light_set_projector","signature":"light_set_projector(light: RID, texture: RID) -> void","description":"Sets the projector texture to use for the specified 3D light. Equivalent to [member Light3D.light_projector].","returnType":"void"},{"name":"light_set_reverse_cull_face_mode","signature":"light_set_reverse_cull_face_mode(light: RID, enabled: bool) -> void","description":"If true, reverses the backface culling of the mesh. This can be useful when you have a flat mesh that has a light behind it. If you need to cast a shadow on both sides of the mesh, set the mesh to use double-sided shadows with [method instance_geometry_set_cast_shadows_setting]. Equivalent to [member Light3D.shadow_reverse_cull_face].","returnType":"void"},{"name":"light_set_shadow","signature":"light_set_shadow(light: RID, enabled: bool) -> void","description":"If true, light will cast shadows. Equivalent to [member Light3D.shadow_enabled].","returnType":"void"},{"name":"light_set_shadow_caster_mask","signature":"light_set_shadow_caster_mask(light: RID, mask: int) -> void","description":"Sets the shadow caster mask for this 3D light. Shadows will only be cast using objects in the selected layers. Equivalent to [member Light3D.shadow_caster_mask].","returnType":"void"},{"name":"lightmap_create","signature":"lightmap_create() -> RID","description":"Creates a new lightmap global illumination instance and adds it to the RenderingServer. It can be accessed with the RID that is returned. This RID will be used in all lightmap_* RenderingServer functions.\n\t\t\t\tOnce finished with your RID, you will want to free the RID using the RenderingServer's [method free_rid] method.\n\t\t\t\tNote: The equivalent node is .","returnType":"RID"},{"name":"lightmap_get_probe_capture_bsp_tree","signature":"lightmap_get_probe_capture_bsp_tree(lightmap: RID) -> PackedInt32Array","description":"","returnType":"PackedInt32Array"},{"name":"lightmap_get_probe_capture_points","signature":"lightmap_get_probe_capture_points(lightmap: RID) -> PackedVector3Array","description":"","returnType":"PackedVector3Array"},{"name":"lightmap_get_probe_capture_sh","signature":"lightmap_get_probe_capture_sh(lightmap: RID) -> PackedColorArray","description":"","returnType":"PackedColorArray"},{"name":"lightmap_get_probe_capture_tetrahedra","signature":"lightmap_get_probe_capture_tetrahedra(lightmap: RID) -> PackedInt32Array","description":"","returnType":"PackedInt32Array"},{"name":"lightmap_set_baked_exposure_normalization","signature":"lightmap_set_baked_exposure_normalization(lightmap: RID, baked_exposure: float) -> void","description":"Used to inform the renderer what exposure normalization value was used while baking the lightmap. This value will be used and modulated at run time to ensure that the lightmap maintains a consistent level of exposure even if the scene-wide exposure normalization is changed at run time. For more information see [method camera_attributes_set_exposure].","returnType":"void"},{"name":"lightmap_set_probe_bounds","signature":"lightmap_set_probe_bounds(lightmap: RID, bounds: AABB) -> void","description":"","returnType":"void"},{"name":"lightmap_set_probe_capture_data","signature":"lightmap_set_probe_capture_data(lightmap: RID, points: PackedVector3Array, point_sh: PackedColorArray, tetrahedra: PackedInt32Array, bsp_tree: PackedInt32Array) -> void","description":"","returnType":"void"},{"name":"lightmap_set_probe_capture_update_speed","signature":"lightmap_set_probe_capture_update_speed(speed: float) -> void","description":"","returnType":"void"},{"name":"lightmap_set_probe_interior","signature":"lightmap_set_probe_interior(lightmap: RID, interior: bool) -> void","description":"","returnType":"void"},{"name":"lightmap_set_textures","signature":"lightmap_set_textures(lightmap: RID, light: RID, uses_sh: bool) -> void","description":"Set the textures on the given [param lightmap] GI instance to the texture array pointed to by the [param light] RID. If the lightmap texture was baked with [member LightmapGI.directional] set to true, then [param uses_sh] must also be true.","returnType":"void"},{"name":"lightmaps_set_bicubic_filter","signature":"lightmaps_set_bicubic_filter(enable: bool) -> void","description":"Toggles whether a bicubic filter should be used when lightmaps are sampled. This smoothens their appearance at a performance cost.","returnType":"void"},{"name":"make_sphere_mesh","signature":"make_sphere_mesh(latitudes: int, longitudes: int, radius: float) -> RID","description":"Returns a mesh of a sphere with the given number of horizontal subdivisions, vertical subdivisions and radius. See also [method get_test_cube].","returnType":"RID"},{"name":"material_create","signature":"material_create() -> RID","description":"Creates an empty material and adds it to the RenderingServer. It can be accessed with the RID that is returned. This RID will be used in all material_* RenderingServer functions.\n\t\t\t\tOnce finished with your RID, you will want to free the RID using the RenderingServer's [method free_rid] method.\n\t\t\t\tNote: The equivalent resource is .","returnType":"RID"},{"name":"material_get_param","signature":"material_get_param(material: RID, parameter: StringName) -> Variant","description":"Returns the value of a certain material's parameter.","returnType":"Variant"},{"name":"material_set_next_pass","signature":"material_set_next_pass(material: RID, next_material: RID) -> void","description":"Sets an object's next material.","returnType":"void"},{"name":"material_set_param","signature":"material_set_param(material: RID, parameter: StringName, value: Variant) -> void","description":"Sets a material's parameter.","returnType":"void"},{"name":"material_set_render_priority","signature":"material_set_render_priority(material: RID, priority: int) -> void","description":"Sets a material's render priority.","returnType":"void"},{"name":"material_set_shader","signature":"material_set_shader(shader_material: RID, shader: RID) -> void","description":"Sets a shader material's shader.","returnType":"void"},{"name":"mesh_add_surface","signature":"mesh_add_surface(mesh: RID, surface: Dictionary) -> void","description":"","returnType":"void"},{"name":"mesh_add_surface_from_arrays","signature":"mesh_add_surface_from_arrays(mesh: RID, primitive: int, arrays: Array, blend_shapes: Array, lods: Dictionary, compress_format: int) -> void","description":"","returnType":"void"},{"name":"mesh_clear","signature":"mesh_clear(mesh: RID) -> void","description":"Removes all surfaces from a mesh.","returnType":"void"},{"name":"mesh_create","signature":"mesh_create() -> RID","description":"Creates a new mesh and adds it to the RenderingServer. It can be accessed with the RID that is returned. This RID will be used in all mesh_* RenderingServer functions.\n\t\t\t\tOnce finished with your RID, you will want to free the RID using the RenderingServer's [method free_rid] method.\n\t\t\t\tTo place in a scene, attach this mesh to an instance using [method instance_set_base] using the returned RID.\n\t\t\t\tNote: The equivalent resource is .","returnType":"RID"},{"name":"mesh_create_from_surfaces","signature":"mesh_create_from_surfaces(surfaces: Dictionary[], blend_shape_count: int) -> RID","description":"","returnType":"RID"},{"name":"mesh_get_blend_shape_count","signature":"mesh_get_blend_shape_count(mesh: RID) -> int","description":"Returns a mesh's blend shape count.","returnType":"int"},{"name":"mesh_get_blend_shape_mode","signature":"mesh_get_blend_shape_mode(mesh: RID) -> int","description":"Returns a mesh's blend shape mode.","returnType":"int"},{"name":"mesh_get_custom_aabb","signature":"mesh_get_custom_aabb(mesh: RID) -> AABB","description":"Returns a mesh's custom aabb.","returnType":"AABB"},{"name":"mesh_get_surface","signature":"mesh_get_surface(mesh: RID, surface: int) -> Dictionary","description":"","returnType":"Dictionary"},{"name":"mesh_get_surface_count","signature":"mesh_get_surface_count(mesh: RID) -> int","description":"Returns a mesh's number of surfaces.","returnType":"int"},{"name":"mesh_set_blend_shape_mode","signature":"mesh_set_blend_shape_mode(mesh: RID, mode: int) -> void","description":"Sets a mesh's blend shape mode.","returnType":"void"},{"name":"mesh_set_custom_aabb","signature":"mesh_set_custom_aabb(mesh: RID, aabb: AABB) -> void","description":"Sets a mesh's custom aabb.","returnType":"void"},{"name":"mesh_set_shadow_mesh","signature":"mesh_set_shadow_mesh(mesh: RID, shadow_mesh: RID) -> void","description":"","returnType":"void"},{"name":"mesh_surface_get_arrays","signature":"mesh_surface_get_arrays(mesh: RID, surface: int) -> Array","description":"Returns a mesh's surface's buffer arrays.","returnType":"Array"},{"name":"mesh_surface_get_blend_shape_arrays","signature":"mesh_surface_get_blend_shape_arrays(mesh: RID, surface: int) -> Array[]","description":"Returns a mesh's surface's arrays for blend shapes.","returnType":"Array[]"},{"name":"mesh_surface_get_format_attribute_stride","signature":"mesh_surface_get_format_attribute_stride(format: int, vertex_count: int) -> int","description":"Returns the stride of the attribute buffer for a mesh with given [param format].","returnType":"int"},{"name":"mesh_surface_get_format_normal_tangent_stride","signature":"mesh_surface_get_format_normal_tangent_stride(format: int, vertex_count: int) -> int","description":"Returns the stride of the combined normals and tangents for a mesh with given [param format]. Note importantly that, while normals and tangents are in the vertex buffer with vertices, they are only interleaved with each other and so have a different stride than vertex positions.","returnType":"int"},{"name":"mesh_surface_get_format_offset","signature":"mesh_surface_get_format_offset(format: int, vertex_count: int, array_index: int) -> int","description":"Returns the offset of a given attribute by [param array_index] in the start of its respective buffer.","returnType":"int"},{"name":"mesh_surface_get_format_skin_stride","signature":"mesh_surface_get_format_skin_stride(format: int, vertex_count: int) -> int","description":"Returns the stride of the skin buffer for a mesh with given [param format].","returnType":"int"},{"name":"mesh_surface_get_format_vertex_stride","signature":"mesh_surface_get_format_vertex_stride(format: int, vertex_count: int) -> int","description":"Returns the stride of the vertex positions for a mesh with given [param format]. Note importantly that vertex positions are stored consecutively and are not interleaved with the other attributes in the vertex buffer (normals and tangents).","returnType":"int"},{"name":"mesh_surface_get_material","signature":"mesh_surface_get_material(mesh: RID, surface: int) -> RID","description":"Returns a mesh's surface's material.","returnType":"RID"},{"name":"mesh_surface_remove","signature":"mesh_surface_remove(mesh: RID, surface: int) -> void","description":"Removes the surface at the given index from the Mesh, shifting surfaces with higher index down by one.","returnType":"void"},{"name":"mesh_surface_set_material","signature":"mesh_surface_set_material(mesh: RID, surface: int, material: RID) -> void","description":"Sets a mesh's surface's material.","returnType":"void"},{"name":"mesh_surface_update_attribute_region","signature":"mesh_surface_update_attribute_region(mesh: RID, surface: int, offset: int, data: PackedByteArray) -> void","description":"","returnType":"void"},{"name":"mesh_surface_update_skin_region","signature":"mesh_surface_update_skin_region(mesh: RID, surface: int, offset: int, data: PackedByteArray) -> void","description":"","returnType":"void"},{"name":"mesh_surface_update_vertex_region","signature":"mesh_surface_update_vertex_region(mesh: RID, surface: int, offset: int, data: PackedByteArray) -> void","description":"","returnType":"void"},{"name":"multimesh_allocate_data","signature":"multimesh_allocate_data(multimesh: RID, instances: int, transform_format: int, color_format: bool, custom_data_format: bool, use_indirect: bool) -> void","description":"","returnType":"void"},{"name":"multimesh_create","signature":"multimesh_create() -> RID","description":"Creates a new multimesh on the RenderingServer and returns an  handle. This RID will be used in all multimesh_* RenderingServer functions.\n\t\t\t\tOnce finished with your RID, you will want to free the RID using the RenderingServer's [method free_rid] method.\n\t\t\t\tTo place in a scene, attach this multimesh to an instance using [method instance_set_base] using the returned RID.\n\t\t\t\tNote: The equivalent resource is .","returnType":"RID"},{"name":"multimesh_get_aabb","signature":"multimesh_get_aabb(multimesh: RID) -> AABB","description":"Calculates and returns the axis-aligned bounding box that encloses all instances within the multimesh.","returnType":"AABB"},{"name":"multimesh_get_buffer","signature":"multimesh_get_buffer(multimesh: RID) -> PackedFloat32Array","description":"Returns the MultiMesh data (such as instance transforms, colors, etc.). See [method multimesh_set_buffer] for details on the returned data.\n\t\t\t\tNote: If the buffer is in the engine's internal cache, it will have to be fetched from GPU memory and possibly decompressed. This means [method multimesh_get_buffer] is potentially a slow operation and should be avoided whenever possible.","returnType":"PackedFloat32Array"},{"name":"multimesh_get_buffer_rd_rid","signature":"multimesh_get_buffer_rd_rid(multimesh: RID) -> RID","description":"Returns the   handle of the , which can be used as any other buffer on the Rendering Device.","returnType":"RID"},{"name":"multimesh_get_command_buffer_rd_rid","signature":"multimesh_get_command_buffer_rd_rid(multimesh: RID) -> RID","description":"Returns the   handle of the  command buffer. This  is only valid if use_indirect is set to true when allocating data through [method multimesh_allocate_data]. It can be used to directly modify the instance count via buffer.\n\t\t\t\tThe data structure is dependent on both how many surfaces the mesh contains and whether it is indexed or not, the buffer has 5 integers in it, with the last unused if the mesh is not indexed.\n\t\t\t\tEach of the values in the buffer correspond to these options:\n\t\t\t\t[codeblock lang=text]\n\t\t\t\tIndexed:\n\t\t\t\t  0 - indexCount;\n\t\t\t\t  1 - instanceCount;\n\t\t\t\t  2 - firstIndex;\n\t\t\t\t  3 - vertexOffset;\n\t\t\t\t  4 - firstInstance;\n\t\t\t\tNon Indexed:\n\t\t\t\t  0 - vertexCount;\n\t\t\t\t  1 - instanceCount;\n\t\t\t\t  2 - firstVertex;\n\t\t\t\t  3 - firstInstance;\n\t\t\t\t  4 - unused;\n\t\t\t\t","returnType":"RID"},{"name":"multimesh_get_custom_aabb","signature":"multimesh_get_custom_aabb(multimesh: RID) -> AABB","description":"Returns the custom AABB defined for this MultiMesh resource.","returnType":"AABB"},{"name":"multimesh_get_instance_count","signature":"multimesh_get_instance_count(multimesh: RID) -> int","description":"Returns the number of instances allocated for this multimesh.","returnType":"int"},{"name":"multimesh_get_mesh","signature":"multimesh_get_mesh(multimesh: RID) -> RID","description":"Returns the RID of the mesh that will be used in drawing this multimesh.","returnType":"RID"},{"name":"multimesh_get_visible_instances","signature":"multimesh_get_visible_instances(multimesh: RID) -> int","description":"Returns the number of visible instances for this multimesh.","returnType":"int"},{"name":"multimesh_instance_get_color","signature":"multimesh_instance_get_color(multimesh: RID, index: int) -> Color","description":"Returns the color by which the specified instance will be modulated.","returnType":"Color"},{"name":"multimesh_instance_get_custom_data","signature":"multimesh_instance_get_custom_data(multimesh: RID, index: int) -> Color","description":"Returns the custom data associated with the specified instance.","returnType":"Color"},{"name":"multimesh_instance_get_transform","signature":"multimesh_instance_get_transform(multimesh: RID, index: int) -> Transform3D","description":"Returns the  of the specified instance.","returnType":"Transform3D"},{"name":"multimesh_instance_get_transform_2d","signature":"multimesh_instance_get_transform_2d(multimesh: RID, index: int) -> Transform2D","description":"Returns the  of the specified instance. For use when the multimesh is set to use 2D transforms.","returnType":"Transform2D"},{"name":"multimesh_instance_reset_physics_interpolation","signature":"multimesh_instance_reset_physics_interpolation(multimesh: RID, index: int) -> void","description":"Prevents physics interpolation for the specified instance during the current physics tick.\n\t\t\t\tThis is useful when moving an instance to a new location, to give an instantaneous change rather than interpolation from the previous location.","returnType":"void"},{"name":"multimesh_instance_set_color","signature":"multimesh_instance_set_color(multimesh: RID, index: int, color: Color) -> void","description":"Sets the color by which this instance will be modulated. Equivalent to [method MultiMesh.set_instance_color].","returnType":"void"},{"name":"multimesh_instance_set_custom_data","signature":"multimesh_instance_set_custom_data(multimesh: RID, index: int, custom_data: Color) -> void","description":"Sets the custom data for this instance. Custom data is passed as a , but is interpreted as a vec4 in the shader. Equivalent to [method MultiMesh.set_instance_custom_data].","returnType":"void"},{"name":"multimesh_instance_set_transform","signature":"multimesh_instance_set_transform(multimesh: RID, index: int, transform: Transform3D) -> void","description":"Sets the  for this instance. Equivalent to [method MultiMesh.set_instance_transform].","returnType":"void"},{"name":"multimesh_instance_set_transform_2d","signature":"multimesh_instance_set_transform_2d(multimesh: RID, index: int, transform: Transform2D) -> void","description":"Sets the  for this instance. For use when multimesh is used in 2D. Equivalent to [method MultiMesh.set_instance_transform_2d].","returnType":"void"},{"name":"multimesh_set_buffer","signature":"multimesh_set_buffer(multimesh: RID, buffer: PackedFloat32Array) -> void","description":"Set the entire data to use for drawing the [param multimesh] at once to [param buffer] (such as instance transforms and colors). [param buffer]'s size must match the number of instances multiplied by the per-instance data size (which depends on the enabled MultiMesh fields). Otherwise, an error message is printed and nothing is rendered. See also [method multimesh_get_buffer].\n\t\t\t\tThe per-instance data size and expected data order is:\n\t\t\t\t[codeblock lang=text]\n\t\t\t\t2D:\n\t\t\t\t  - Position: 8 floats (8 floats for Transform2D)\n\t\t\t\t  - Position + Vertex color: 12 floats (8 floats for Transform2D, 4 floats for Color)\n\t\t\t\t  - Position + Custom data: 12 floats (8 floats for Transform2D, 4 floats of custom data)\n\t\t\t\t  - Position + Vertex color + Custom data: 16 floats (8 floats for Transform2D, 4 floats for Color, 4 floats of custom data)\n\t\t\t\t3D:\n\t\t\t\t  - Position: 12 floats (12 floats for Transform3D)\n\t\t\t\t  - Position + Vertex color: 16 floats (12 floats for Transform3D, 4 floats for Color)\n\t\t\t\t  - Position + Custom data: 16 floats (12 floats for Transform3D, 4 floats of custom data)\n\t\t\t\t  - Position + Vertex color + Custom data: 20 floats (12 floats for Transform3D, 4 floats for Color, 4 floats of custom data)\n\t\t\t\t\n\t\t\t\tInstance transforms are in row-major order. Specifically:\n\t\t\t\t- For  the float-order is: (x.x, y.x, padding_float, origin.x, x.y, y.y, padding_float, origin.y).\n\t\t\t\t- For  the float-order is: (basis.x.x, basis.y.x, basis.z.x, origin.x, basis.x.y, basis.y.y, basis.z.y, origin.y, basis.x.z, basis.y.z, basis.z.z, origin.z).","returnType":"void"},{"name":"multimesh_set_buffer_interpolated","signature":"multimesh_set_buffer_interpolated(multimesh: RID, buffer: PackedFloat32Array, buffer_previous: PackedFloat32Array) -> void","description":"Alternative version of [method multimesh_set_buffer] for use with physics interpolation.\n\t\t\t\tTakes both an array of current data and an array of data for the previous physics tick.","returnType":"void"},{"name":"multimesh_set_custom_aabb","signature":"multimesh_set_custom_aabb(multimesh: RID, aabb: AABB) -> void","description":"Sets the custom AABB for this MultiMesh resource.","returnType":"void"},{"name":"multimesh_set_mesh","signature":"multimesh_set_mesh(multimesh: RID, mesh: RID) -> void","description":"Sets the mesh to be drawn by the multimesh. Equivalent to [member MultiMesh.mesh].","returnType":"void"},{"name":"multimesh_set_physics_interpolated","signature":"multimesh_set_physics_interpolated(multimesh: RID, interpolated: bool) -> void","description":"Turns on and off physics interpolation for this MultiMesh resource.","returnType":"void"},{"name":"multimesh_set_physics_interpolation_quality","signature":"multimesh_set_physics_interpolation_quality(multimesh: RID, quality: int) -> void","description":"Sets the physics interpolation quality for the .\n\t\t\t\tA value of [constant MULTIMESH_INTERP_QUALITY_FAST] gives fast but low quality interpolation, a value of [constant MULTIMESH_INTERP_QUALITY_HIGH] gives slower but higher quality interpolation.","returnType":"void"},{"name":"multimesh_set_visible_instances","signature":"multimesh_set_visible_instances(multimesh: RID, visible: int) -> void","description":"Sets the number of instances visible at a given time. If -1, all instances that have been allocated are drawn. Equivalent to [member MultiMesh.visible_instance_count].","returnType":"void"},{"name":"occluder_create","signature":"occluder_create() -> RID","description":"Creates an occluder instance and adds it to the RenderingServer. It can be accessed with the RID that is returned. This RID will be used in all occluder_* RenderingServer functions.\n\t\t\t\tOnce finished with your RID, you will want to free the RID using the RenderingServer's [method free_rid] method.\n\t\t\t\tNote: The equivalent resource is  (not to be confused with the  node).","returnType":"RID"},{"name":"occluder_set_mesh","signature":"occluder_set_mesh(occluder: RID, vertices: PackedVector3Array, indices: PackedInt32Array) -> void","description":"Sets the mesh data for the given occluder RID, which controls the shape of the occlusion culling that will be performed.","returnType":"void"},{"name":"omni_light_create","signature":"omni_light_create() -> RID","description":"Creates a new omni light and adds it to the RenderingServer. It can be accessed with the RID that is returned. This RID can be used in most light_* RenderingServer functions.\n\t\t\t\tOnce finished with your RID, you will want to free the RID using the RenderingServer's [method free_rid] method.\n\t\t\t\tTo place in a scene, attach this omni light to an instance using [method instance_set_base] using the returned RID.\n\t\t\t\tNote: The equivalent node is .","returnType":"RID"},{"name":"particles_collision_create","signature":"particles_collision_create() -> RID","description":"Creates a new 3D GPU particle collision or attractor and adds it to the RenderingServer. It can be accessed with the RID that is returned. This RID can be used in most particles_collision_* RenderingServer functions.\n\t\t\t\tNote: The equivalent nodes are  and .","returnType":"RID"},{"name":"particles_collision_height_field_update","signature":"particles_collision_height_field_update(particles_collision: RID) -> void","description":"Requests an update for the 3D GPU particle collision heightfield. This may be automatically called by the 3D GPU particle collision heightfield depending on its [member GPUParticlesCollisionHeightField3D.update_mode].","returnType":"void"},{"name":"particles_collision_set_attractor_attenuation","signature":"particles_collision_set_attractor_attenuation(particles_collision: RID, curve: float) -> void","description":"Sets the attenuation [param curve] for the 3D GPU particles attractor specified by the [param particles_collision] RID. Only used for attractors, not colliders. Equivalent to [member GPUParticlesAttractor3D.attenuation].","returnType":"void"},{"name":"particles_collision_set_attractor_directionality","signature":"particles_collision_set_attractor_directionality(particles_collision: RID, amount: float) -> void","description":"Sets the directionality [param amount] for the 3D GPU particles attractor specified by the [param particles_collision] RID. Only used for attractors, not colliders. Equivalent to [member GPUParticlesAttractor3D.directionality].","returnType":"void"},{"name":"particles_collision_set_attractor_strength","signature":"particles_collision_set_attractor_strength(particles_collision: RID, strength: float) -> void","description":"Sets the [param strength] for the 3D GPU particles attractor specified by the [param particles_collision] RID. Only used for attractors, not colliders. Equivalent to [member GPUParticlesAttractor3D.strength].","returnType":"void"},{"name":"particles_collision_set_box_extents","signature":"particles_collision_set_box_extents(particles_collision: RID, extents: Vector3) -> void","description":"Sets the [param extents] for the 3D GPU particles collision by the [param particles_collision] RID. Equivalent to [member GPUParticlesCollisionBox3D.size], [member GPUParticlesCollisionSDF3D.size], [member GPUParticlesCollisionHeightField3D.size], [member GPUParticlesAttractorBox3D.size] or [member GPUParticlesAttractorVectorField3D.size] depending on the [param particles_collision] type.","returnType":"void"},{"name":"particles_collision_set_collision_type","signature":"particles_collision_set_collision_type(particles_collision: RID, type: int) -> void","description":"Sets the collision or attractor shape [param type] for the 3D GPU particles collision or attractor specified by the [param particles_collision] RID.","returnType":"void"},{"name":"particles_collision_set_cull_mask","signature":"particles_collision_set_cull_mask(particles_collision: RID, mask: int) -> void","description":"Sets the cull [param mask] for the 3D GPU particles collision or attractor specified by the [param particles_collision] RID. Equivalent to [member GPUParticlesCollision3D.cull_mask] or [member GPUParticlesAttractor3D.cull_mask] depending on the [param particles_collision] type.","returnType":"void"},{"name":"particles_collision_set_field_texture","signature":"particles_collision_set_field_texture(particles_collision: RID, texture: RID) -> void","description":"Sets the signed distance field [param texture] for the 3D GPU particles collision specified by the [param particles_collision] RID. Equivalent to [member GPUParticlesCollisionSDF3D.texture] or [member GPUParticlesAttractorVectorField3D.texture] depending on the [param particles_collision] type.","returnType":"void"},{"name":"particles_collision_set_height_field_mask","signature":"particles_collision_set_height_field_mask(particles_collision: RID, mask: int) -> void","description":"Sets the heightfield [param mask] for the 3D GPU particles heightfield collision specified by the [param particles_collision] RID. Equivalent to [member GPUParticlesCollisionHeightField3D.heightfield_mask].","returnType":"void"},{"name":"particles_collision_set_height_field_resolution","signature":"particles_collision_set_height_field_resolution(particles_collision: RID, resolution: int) -> void","description":"Sets the heightmap [param resolution] for the 3D GPU particles heightfield collision specified by the [param particles_collision] RID. Equivalent to [member GPUParticlesCollisionHeightField3D.resolution].","returnType":"void"},{"name":"particles_collision_set_sphere_radius","signature":"particles_collision_set_sphere_radius(particles_collision: RID, radius: float) -> void","description":"Sets the [param radius] for the 3D GPU particles sphere collision or attractor specified by the [param particles_collision] RID. Equivalent to [member GPUParticlesCollisionSphere3D.radius] or [member GPUParticlesAttractorSphere3D.radius] depending on the [param particles_collision] type.","returnType":"void"},{"name":"particles_create","signature":"particles_create() -> RID","description":"Creates a GPU-based particle system and adds it to the RenderingServer. It can be accessed with the RID that is returned. This RID will be used in all particles_* RenderingServer functions.\n\t\t\t\tOnce finished with your RID, you will want to free the RID using the RenderingServer's [method free_rid] method.\n\t\t\t\tTo place in a scene, attach these particles to an instance using [method instance_set_base] using the returned RID.\n\t\t\t\tNote: The equivalent nodes are  and .\n\t\t\t\tNote: All particles_* methods only apply to GPU-based particles, not CPU-based particles.  and  do not have equivalent RenderingServer functions available, as these use  and  under the hood (see multimesh_* methods).","returnType":"RID"},{"name":"particles_emit","signature":"particles_emit(particles: RID, transform: Transform3D, velocity: Vector3, color: Color, custom: Color, emit_flags: int) -> void","description":"Manually emits particles from the [param particles] instance.","returnType":"void"},{"name":"particles_get_current_aabb","signature":"particles_get_current_aabb(particles: RID) -> AABB","description":"Calculates and returns the axis-aligned bounding box that contains all the particles. Equivalent to [method GPUParticles3D.capture_aabb].","returnType":"AABB"},{"name":"particles_get_emitting","signature":"particles_get_emitting(particles: RID) -> bool","description":"Returns true if particles are currently set to emitting.","returnType":"bool"},{"name":"particles_is_inactive","signature":"particles_is_inactive(particles: RID) -> bool","description":"Returns true if particles are not emitting and particles are set to inactive.","returnType":"bool"},{"name":"particles_request_process","signature":"particles_request_process(particles: RID) -> void","description":"Add particle system to list of particle systems that need to be updated. Update will take place on the next frame, or on the next call to [method instances_cull_aabb], [method instances_cull_convex], or [method instances_cull_ray].","returnType":"void"},{"name":"particles_request_process_time","signature":"particles_request_process_time(particles: RID, time: float) -> void","description":"Requests particles to process for extra process time during a single frame.","returnType":"void"},{"name":"particles_restart","signature":"particles_restart(particles: RID) -> void","description":"Reset the particles on the next update. Equivalent to [method GPUParticles3D.restart].","returnType":"void"},{"name":"particles_set_amount","signature":"particles_set_amount(particles: RID, amount: int) -> void","description":"Sets the number of particles to be drawn and allocates the memory for them. Equivalent to [member GPUParticles3D.amount].","returnType":"void"},{"name":"particles_set_amount_ratio","signature":"particles_set_amount_ratio(particles: RID, ratio: float) -> void","description":"Sets the amount ratio for particles to be emitted. Equivalent to [member GPUParticles3D.amount_ratio].","returnType":"void"},{"name":"particles_set_collision_base_size","signature":"particles_set_collision_base_size(particles: RID, size: float) -> void","description":"","returnType":"void"},{"name":"particles_set_custom_aabb","signature":"particles_set_custom_aabb(particles: RID, aabb: AABB) -> void","description":"Sets a custom axis-aligned bounding box for the particle system. Equivalent to [member GPUParticles3D.visibility_aabb].","returnType":"void"},{"name":"particles_set_draw_order","signature":"particles_set_draw_order(particles: RID, order: int) -> void","description":"Sets the draw order of the particles to one of the named enums from [enum ParticlesDrawOrder]. See [enum ParticlesDrawOrder] for options. Equivalent to [member GPUParticles3D.draw_order].","returnType":"void"},{"name":"particles_set_draw_pass_mesh","signature":"particles_set_draw_pass_mesh(particles: RID, pass: int, mesh: RID) -> void","description":"Sets the mesh to be used for the specified draw pass. Equivalent to [member GPUParticles3D.draw_pass_1], [member GPUParticles3D.draw_pass_2], [member GPUParticles3D.draw_pass_3], and [member GPUParticles3D.draw_pass_4].","returnType":"void"},{"name":"particles_set_draw_passes","signature":"particles_set_draw_passes(particles: RID, count: int) -> void","description":"Sets the number of draw passes to use. Equivalent to [member GPUParticles3D.draw_passes].","returnType":"void"},{"name":"particles_set_emission_transform","signature":"particles_set_emission_transform(particles: RID, transform: Transform3D) -> void","description":"Sets the  that will be used by the particles when they first emit.","returnType":"void"},{"name":"particles_set_emitter_velocity","signature":"particles_set_emitter_velocity(particles: RID, velocity: Vector3) -> void","description":"Sets the velocity of a particle node, that will be used by [member ParticleProcessMaterial.inherit_velocity_ratio].","returnType":"void"},{"name":"particles_set_emitting","signature":"particles_set_emitting(particles: RID, emitting: bool) -> void","description":"If true, particles will emit over time. Setting to false does not reset the particles, but only stops their emission. Equivalent to [member GPUParticles3D.emitting].","returnType":"void"},{"name":"particles_set_explosiveness_ratio","signature":"particles_set_explosiveness_ratio(particles: RID, ratio: float) -> void","description":"Sets the explosiveness ratio. Equivalent to [member GPUParticles3D.explosiveness].","returnType":"void"},{"name":"particles_set_fixed_fps","signature":"particles_set_fixed_fps(particles: RID, fps: int) -> void","description":"Sets the frame rate that the particle system rendering will be fixed to. Equivalent to [member GPUParticles3D.fixed_fps].","returnType":"void"},{"name":"particles_set_fractional_delta","signature":"particles_set_fractional_delta(particles: RID, enable: bool) -> void","description":"If true, uses fractional delta which smooths the movement of the particles. Equivalent to [member GPUParticles3D.fract_delta].","returnType":"void"},{"name":"particles_set_interp_to_end","signature":"particles_set_interp_to_end(particles: RID, factor: float) -> void","description":"Sets the value that informs a  to rush all particles towards the end of their lifetime.","returnType":"void"},{"name":"particles_set_interpolate","signature":"particles_set_interpolate(particles: RID, enable: bool) -> void","description":"","returnType":"void"},{"name":"particles_set_lifetime","signature":"particles_set_lifetime(particles: RID, lifetime: float) -> void","description":"Sets the lifetime of each particle in the system. Equivalent to [member GPUParticles3D.lifetime].","returnType":"void"},{"name":"particles_set_mode","signature":"particles_set_mode(particles: RID, mode: int) -> void","description":"Sets whether the GPU particles specified by the [param particles] RID should be rendered in 2D or 3D according to [param mode].","returnType":"void"},{"name":"particles_set_one_shot","signature":"particles_set_one_shot(particles: RID, one_shot: bool) -> void","description":"If true, particles will emit once and then stop. Equivalent to [member GPUParticles3D.one_shot].","returnType":"void"},{"name":"particles_set_pre_process_time","signature":"particles_set_pre_process_time(particles: RID, time: float) -> void","description":"Sets the preprocess time for the particles' animation. This lets you delay starting an animation until after the particles have begun emitting. Equivalent to [member GPUParticles3D.preprocess].","returnType":"void"},{"name":"particles_set_process_material","signature":"particles_set_process_material(particles: RID, material: RID) -> void","description":"Sets the material for processing the particles.\n\t\t\t\tNote: This is not the material used to draw the materials. Equivalent to [member GPUParticles3D.process_material].","returnType":"void"},{"name":"particles_set_randomness_ratio","signature":"particles_set_randomness_ratio(particles: RID, ratio: float) -> void","description":"Sets the emission randomness ratio. This randomizes the emission of particles within their phase. Equivalent to [member GPUParticles3D.randomness].","returnType":"void"},{"name":"particles_set_speed_scale","signature":"particles_set_speed_scale(particles: RID, scale: float) -> void","description":"Sets the speed scale of the particle system. Equivalent to [member GPUParticles3D.speed_scale].","returnType":"void"},{"name":"particles_set_subemitter","signature":"particles_set_subemitter(particles: RID, subemitter_particles: RID) -> void","description":"","returnType":"void"},{"name":"particles_set_trail_bind_poses","signature":"particles_set_trail_bind_poses(particles: RID, bind_poses: Transform3D[]) -> void","description":"","returnType":"void"},{"name":"particles_set_trails","signature":"particles_set_trails(particles: RID, enable: bool, length_sec: float) -> void","description":"If [param enable] is true, enables trails for the [param particles] with the specified [param length_sec] in seconds. Equivalent to [member GPUParticles3D.trail_enabled] and [member GPUParticles3D.trail_lifetime].","returnType":"void"},{"name":"particles_set_transform_align","signature":"particles_set_transform_align(particles: RID, align: int) -> void","description":"","returnType":"void"},{"name":"particles_set_use_local_coordinates","signature":"particles_set_use_local_coordinates(particles: RID, enable: bool) -> void","description":"If true, particles use local coordinates. If false they use global coordinates. Equivalent to [member GPUParticles3D.local_coords].","returnType":"void"},{"name":"positional_soft_shadow_filter_set_quality","signature":"positional_soft_shadow_filter_set_quality(quality: int) -> void","description":"Sets the filter quality for omni and spot light shadows in 3D. See also [member ProjectSettings.rendering/lights_and_shadows/positional_shadow/soft_shadow_filter_quality]. This parameter is global and cannot be set on a per-viewport basis.","returnType":"void"},{"name":"reflection_probe_create","signature":"reflection_probe_create() -> RID","description":"Creates a reflection probe and adds it to the RenderingServer. It can be accessed with the RID that is returned. This RID will be used in all reflection_probe_* RenderingServer functions.\n\t\t\t\tOnce finished with your RID, you will want to free the RID using the RenderingServer's [method free_rid] method.\n\t\t\t\tTo place in a scene, attach this reflection probe to an instance using [method instance_set_base] using the returned RID.\n\t\t\t\tNote: The equivalent node is .","returnType":"RID"},{"name":"reflection_probe_set_ambient_color","signature":"reflection_probe_set_ambient_color(probe: RID, color: Color) -> void","description":"Sets the reflection probe's custom ambient light color. Equivalent to [member ReflectionProbe.ambient_color].","returnType":"void"},{"name":"reflection_probe_set_ambient_energy","signature":"reflection_probe_set_ambient_energy(probe: RID, energy: float) -> void","description":"Sets the reflection probe's custom ambient light energy. Equivalent to [member ReflectionProbe.ambient_color_energy].","returnType":"void"},{"name":"reflection_probe_set_ambient_mode","signature":"reflection_probe_set_ambient_mode(probe: RID, mode: int) -> void","description":"Sets the reflection probe's ambient light mode. Equivalent to [member ReflectionProbe.ambient_mode].","returnType":"void"},{"name":"reflection_probe_set_as_interior","signature":"reflection_probe_set_as_interior(probe: RID, enable: bool) -> void","description":"If true, reflections will ignore sky contribution. Equivalent to [member ReflectionProbe.interior].","returnType":"void"},{"name":"reflection_probe_set_blend_distance","signature":"reflection_probe_set_blend_distance(probe: RID, blend_distance: float) -> void","description":"Sets the distance in meters over which a probe blends into the scene.","returnType":"void"},{"name":"reflection_probe_set_cull_mask","signature":"reflection_probe_set_cull_mask(probe: RID, layers: int) -> void","description":"Sets the render cull mask for this reflection probe. Only instances with a matching layer will be reflected by this probe. Equivalent to [member ReflectionProbe.cull_mask].","returnType":"void"},{"name":"reflection_probe_set_enable_box_projection","signature":"reflection_probe_set_enable_box_projection(probe: RID, enable: bool) -> void","description":"If true, uses box projection. This can make reflections look more correct in certain situations. Equivalent to [member ReflectionProbe.box_projection].","returnType":"void"},{"name":"reflection_probe_set_enable_shadows","signature":"reflection_probe_set_enable_shadows(probe: RID, enable: bool) -> void","description":"If true, computes shadows in the reflection probe. This makes the reflection much slower to compute. Equivalent to [member ReflectionProbe.enable_shadows].","returnType":"void"},{"name":"reflection_probe_set_intensity","signature":"reflection_probe_set_intensity(probe: RID, intensity: float) -> void","description":"Sets the intensity of the reflection probe. Intensity modulates the strength of the reflection. Equivalent to [member ReflectionProbe.intensity].","returnType":"void"},{"name":"reflection_probe_set_max_distance","signature":"reflection_probe_set_max_distance(probe: RID, distance: float) -> void","description":"Sets the max distance away from the probe an object can be before it is culled. Equivalent to [member ReflectionProbe.max_distance].","returnType":"void"},{"name":"reflection_probe_set_mesh_lod_threshold","signature":"reflection_probe_set_mesh_lod_threshold(probe: RID, pixels: float) -> void","description":"Sets the mesh level of detail to use in the reflection probe rendering. Higher values will use less detailed versions of meshes that have LOD variations generated, which can improve performance. Equivalent to [member ReflectionProbe.mesh_lod_threshold].","returnType":"void"},{"name":"reflection_probe_set_origin_offset","signature":"reflection_probe_set_origin_offset(probe: RID, offset: Vector3) -> void","description":"Sets the origin offset to be used when this reflection probe is in box project mode. Equivalent to [member ReflectionProbe.origin_offset].","returnType":"void"},{"name":"reflection_probe_set_reflection_mask","signature":"reflection_probe_set_reflection_mask(probe: RID, layers: int) -> void","description":"Sets the render reflection mask for this reflection probe. Only instances with a matching layer will have reflections applied from this probe. Equivalent to [member ReflectionProbe.reflection_mask].","returnType":"void"},{"name":"reflection_probe_set_resolution","signature":"reflection_probe_set_resolution(probe: RID, resolution: int) -> void","description":"Sets the resolution to use when rendering the specified reflection probe. The [param resolution] is specified for each cubemap face: for instance, specifying 512 will allocate 6 faces of 512×512 each (plus mipmaps for roughness levels).","returnType":"void"},{"name":"reflection_probe_set_size","signature":"reflection_probe_set_size(probe: RID, size: Vector3) -> void","description":"Sets the size of the area that the reflection probe will capture. Equivalent to [member ReflectionProbe.size].","returnType":"void"},{"name":"reflection_probe_set_update_mode","signature":"reflection_probe_set_update_mode(probe: RID, mode: int) -> void","description":"Sets how often the reflection probe updates. Can either be once or every frame. See [enum ReflectionProbeUpdateMode] for options.","returnType":"void"},{"name":"request_frame_drawn_callback","signature":"request_frame_drawn_callback(callable: Callable) -> void","description":"Schedules a callback to the given callable after a frame has been drawn.","returnType":"void"},{"name":"scenario_create","signature":"scenario_create() -> RID","description":"Creates a scenario and adds it to the RenderingServer. It can be accessed with the RID that is returned. This RID will be used in all scenario_* RenderingServer functions.\n\t\t\t\tOnce finished with your RID, you will want to free the RID using the RenderingServer's [method free_rid] method.\n\t\t\t\tThe scenario is the 3D world that all the visual instances exist in.","returnType":"RID"},{"name":"scenario_set_camera_attributes","signature":"scenario_set_camera_attributes(scenario: RID, effects: RID) -> void","description":"Sets the camera attributes ([param effects]) that will be used with this scenario. See also .","returnType":"void"},{"name":"scenario_set_compositor","signature":"scenario_set_compositor(scenario: RID, compositor: RID) -> void","description":"Sets the compositor ([param compositor]) that will be used with this scenario. See also .","returnType":"void"},{"name":"scenario_set_environment","signature":"scenario_set_environment(scenario: RID, environment: RID) -> void","description":"Sets the environment that will be used with this scenario. See also .","returnType":"void"},{"name":"scenario_set_fallback_environment","signature":"scenario_set_fallback_environment(scenario: RID, environment: RID) -> void","description":"Sets the fallback environment to be used by this scenario. The fallback environment is used if no environment is set. Internally, this is used by the editor to provide a default environment.","returnType":"void"},{"name":"screen_space_roughness_limiter_set_active","signature":"screen_space_roughness_limiter_set_active(enable: bool, amount: float, limit: float) -> void","description":"Sets the screen-space roughness limiter parameters, such as whether it should be enabled and its thresholds. Equivalent to [member ProjectSettings.rendering/anti_aliasing/screen_space_roughness_limiter/enabled], [member ProjectSettings.rendering/anti_aliasing/screen_space_roughness_limiter/amount] and [member ProjectSettings.rendering/anti_aliasing/screen_space_roughness_limiter/limit].","returnType":"void"},{"name":"set_boot_image","signature":"set_boot_image(image: Image, color: Color, scale: bool, use_filter: bool) -> void","description":"Sets a boot image. The color defines the background color. If [param scale] is true, the image will be scaled to fit the screen size. If [param use_filter] is true, the image will be scaled with linear interpolation. If [param use_filter] is false, the image will be scaled with nearest-neighbor interpolation.","returnType":"void"},{"name":"set_debug_generate_wireframes","signature":"set_debug_generate_wireframes(generate: bool) -> void","description":"If [param generate] is true, generates debug wireframes for all meshes that are loaded when using the Compatibility renderer. By default, the engine does not generate debug wireframes at runtime, since they slow down loading of assets and take up VRAM.\n\t\t\t\tNote: You must call this method before loading any meshes when using the Compatibility renderer, otherwise wireframes will not be used.","returnType":"void"},{"name":"set_default_clear_color","signature":"set_default_clear_color(color: Color) -> void","description":"Sets the default clear color which is used when a specific clear color has not been selected. See also [method get_default_clear_color].","returnType":"void"},{"name":"shader_create","signature":"shader_create() -> RID","description":"Creates an empty shader and adds it to the RenderingServer. It can be accessed with the RID that is returned. This RID will be used in all shader_* RenderingServer functions.\n\t\t\t\tOnce finished with your RID, you will want to free the RID using the RenderingServer's [method free_rid] method.\n\t\t\t\tNote: The equivalent resource is .","returnType":"RID"},{"name":"shader_get_code","signature":"shader_get_code(shader: RID) -> String","description":"Returns a shader's source code as a string.","returnType":"String"},{"name":"shader_get_default_texture_parameter","signature":"shader_get_default_texture_parameter(shader: RID, name: StringName, index: int) -> RID","description":"Returns a default texture from a shader searched by name.\n\t\t\t\tNote: If the sampler array is used use [param index] to access the specified texture.","returnType":"RID"},{"name":"shader_get_parameter_default","signature":"shader_get_parameter_default(shader: RID, name: StringName) -> Variant","description":"Returns the default value for the specified shader uniform. This is usually the value written in the shader source code.","returnType":"Variant"},{"name":"shader_set_code","signature":"shader_set_code(shader: RID, code: String) -> void","description":"Sets the shader's source code (which triggers recompilation after being changed).","returnType":"void"},{"name":"shader_set_default_texture_parameter","signature":"shader_set_default_texture_parameter(shader: RID, name: StringName, texture: RID, index: int) -> void","description":"Sets a shader's default texture. Overwrites the texture given by name.\n\t\t\t\tNote: If the sampler array is used use [param index] to access the specified texture.","returnType":"void"},{"name":"shader_set_path_hint","signature":"shader_set_path_hint(shader: RID, path: String) -> void","description":"Sets the path hint for the specified shader. This should generally match the  resource's [member Resource.resource_path].","returnType":"void"},{"name":"skeleton_allocate_data","signature":"skeleton_allocate_data(skeleton: RID, bones: int, is_2d_skeleton: bool) -> void","description":"","returnType":"void"},{"name":"skeleton_bone_get_transform","signature":"skeleton_bone_get_transform(skeleton: RID, bone: int) -> Transform3D","description":"Returns the  set for a specific bone of this skeleton.","returnType":"Transform3D"},{"name":"skeleton_bone_get_transform_2d","signature":"skeleton_bone_get_transform_2d(skeleton: RID, bone: int) -> Transform2D","description":"Returns the  set for a specific bone of this skeleton.","returnType":"Transform2D"},{"name":"skeleton_bone_set_transform","signature":"skeleton_bone_set_transform(skeleton: RID, bone: int, transform: Transform3D) -> void","description":"Sets the  for a specific bone of this skeleton.","returnType":"void"},{"name":"skeleton_bone_set_transform_2d","signature":"skeleton_bone_set_transform_2d(skeleton: RID, bone: int, transform: Transform2D) -> void","description":"Sets the  for a specific bone of this skeleton.","returnType":"void"},{"name":"skeleton_create","signature":"skeleton_create() -> RID","description":"Creates a skeleton and adds it to the RenderingServer. It can be accessed with the RID that is returned. This RID will be used in all skeleton_* RenderingServer functions.\n\t\t\t\tOnce finished with your RID, you will want to free the RID using the RenderingServer's [method free_rid] method.","returnType":"RID"},{"name":"skeleton_get_bone_count","signature":"skeleton_get_bone_count(skeleton: RID) -> int","description":"Returns the number of bones allocated for this skeleton.","returnType":"int"},{"name":"skeleton_set_base_transform_2d","signature":"skeleton_set_base_transform_2d(skeleton: RID, base_transform: Transform2D) -> void","description":"","returnType":"void"},{"name":"sky_bake_panorama","signature":"sky_bake_panorama(sky: RID, energy: float, bake_irradiance: bool, size: Vector2i) -> Image","description":"Generates and returns an  containing the radiance map for the specified [param sky] RID. This supports built-in sky material and custom sky shaders. If [param bake_irradiance] is true, the irradiance map is saved instead of the radiance map. The radiance map is used to render reflected light, while the irradiance map is used to render ambient light. See also [method environment_bake_panorama].\n\t\t\t\tNote: The image is saved in linear color space without any tonemapping performed, which means it will look too dark if viewed directly in an image editor. [param energy] values above 1.0 can be used to brighten the resulting image.\n\t\t\t\tNote: [param size] should be a 2:1 aspect ratio for the generated panorama to have square pixels. For radiance maps, there is no point in using a height greater than [member Sky.radiance_size], as it won't increase detail. Irradiance maps only contain low-frequency data, so there is usually no point in going past a size of 128×64 pixels when saving an irradiance map.","returnType":"Image"},{"name":"sky_create","signature":"sky_create() -> RID","description":"Creates an empty sky and adds it to the RenderingServer. It can be accessed with the RID that is returned. This RID will be used in all sky_* RenderingServer functions.\n\t\t\t\tOnce finished with your RID, you will want to free the RID using the RenderingServer's [method free_rid] method.","returnType":"RID"},{"name":"sky_set_material","signature":"sky_set_material(sky: RID, material: RID) -> void","description":"Sets the material that the sky uses to render the background, ambient and reflection maps.","returnType":"void"},{"name":"sky_set_mode","signature":"sky_set_mode(sky: RID, mode: int) -> void","description":"Sets the process [param mode] of the sky specified by the [param sky] RID. Equivalent to [member Sky.process_mode].","returnType":"void"},{"name":"sky_set_radiance_size","signature":"sky_set_radiance_size(sky: RID, radiance_size: int) -> void","description":"Sets the [param radiance_size] of the sky specified by the [param sky] RID (in pixels). Equivalent to [member Sky.radiance_size].","returnType":"void"},{"name":"spot_light_create","signature":"spot_light_create() -> RID","description":"Creates a spot light and adds it to the RenderingServer. It can be accessed with the RID that is returned. This RID can be used in most light_* RenderingServer functions.\n\t\t\t\tOnce finished with your RID, you will want to free the RID using the RenderingServer's [method free_rid] method.\n\t\t\t\tTo place in a scene, attach this spot light to an instance using [method instance_set_base] using the returned RID.","returnType":"RID"},{"name":"sub_surface_scattering_set_quality","signature":"sub_surface_scattering_set_quality(quality: int) -> void","description":"Sets [member ProjectSettings.rendering/environment/subsurface_scattering/subsurface_scattering_quality] to use when rendering materials that have subsurface scattering enabled.","returnType":"void"},{"name":"sub_surface_scattering_set_scale","signature":"sub_surface_scattering_set_scale(scale: float, depth_scale: float) -> void","description":"Sets the [member ProjectSettings.rendering/environment/subsurface_scattering/subsurface_scattering_scale] and [member ProjectSettings.rendering/environment/subsurface_scattering/subsurface_scattering_depth_scale] to use when rendering materials that have subsurface scattering enabled.","returnType":"void"},{"name":"texture_2d_create","signature":"texture_2d_create(image: Image) -> RID","description":"Creates a 2-dimensional texture and adds it to the RenderingServer. It can be accessed with the RID that is returned. This RID will be used in all texture_2d_* RenderingServer functions.\n\t\t\t\tOnce finished with your RID, you will want to free the RID using the RenderingServer's [method free_rid] method.\n\t\t\t\tNote: The equivalent resource is .\n\t\t\t\tNote: Not to be confused with [method RenderingDevice.texture_create], which creates the graphics API's own texture type as opposed to the Godot-specific  resource.","returnType":"RID"},{"name":"texture_2d_get","signature":"texture_2d_get(texture: RID) -> Image","description":"Returns an  instance from the given [param texture] .\n\t\t\t\tExample: Get the test texture from [method get_test_texture] and apply it to a  node:\n\t\t\t\t\n\t\t\t\tvar texture_rid = RenderingServer.get_test_texture()\n\t\t\t\tvar texture = ImageTexture.create_from_image(RenderingServer.texture_2d_get(texture_rid))\n\t\t\t\t$Sprite2D.texture = texture\n\t\t\t\t","returnType":"Image"},{"name":"texture_2d_layer_get","signature":"texture_2d_layer_get(texture: RID, layer: int) -> Image","description":"Returns an  instance from the given [param texture]  and [param layer].","returnType":"Image"},{"name":"texture_2d_layered_create","signature":"texture_2d_layered_create(layers: Image[], layered_type: int) -> RID","description":"Creates a 2-dimensional layered texture and adds it to the RenderingServer. It can be accessed with the RID that is returned. This RID will be used in all texture_2d_layered_* RenderingServer functions.\n\t\t\t\tOnce finished with your RID, you will want to free the RID using the RenderingServer's [method free_rid] method.\n\t\t\t\tNote: The equivalent resource is .","returnType":"RID"},{"name":"texture_2d_layered_placeholder_create","signature":"texture_2d_layered_placeholder_create(layered_type: int) -> RID","description":"Creates a placeholder for a 2-dimensional layered texture and adds it to the RenderingServer. It can be accessed with the RID that is returned. This RID will be used in all texture_2d_layered_* RenderingServer functions, although it does nothing when used. See also [method texture_2d_placeholder_create].\n\t\t\t\tNote: The equivalent resource is .","returnType":"RID"},{"name":"texture_2d_placeholder_create","signature":"texture_2d_placeholder_create() -> RID","description":"Creates a placeholder for a 2-dimensional layered texture and adds it to the RenderingServer. It can be accessed with the RID that is returned. This RID will be used in all texture_2d_layered_* RenderingServer functions, although it does nothing when used. See also [method texture_2d_layered_placeholder_create].\n\t\t\t\tOnce finished with your RID, you will want to free the RID using the RenderingServer's [method free_rid] method.\n\t\t\t\tNote: The equivalent resource is .","returnType":"RID"},{"name":"texture_2d_update","signature":"texture_2d_update(texture: RID, image: Image, layer: int) -> void","description":"Updates the texture specified by the [param texture]  with the data in [param image]. A [param layer] must also be specified, which should be 0 when updating a single-layer texture ().\n\t\t\t\tNote: The [param image] must have the same width, height and format as the current [param texture] data. Otherwise, an error will be printed and the original texture won't be modified. If you need to use different width, height or format, use [method texture_replace] instead.","returnType":"void"},{"name":"texture_3d_create","signature":"texture_3d_create(format: int, width: int, height: int, depth: int, mipmaps: bool, data: Image[]) -> RID","description":"Note: The equivalent resource is .","returnType":"RID"},{"name":"texture_3d_get","signature":"texture_3d_get(texture: RID) -> Image[]","description":"Returns 3D texture data as an array of s for the specified texture .","returnType":"Image[]"},{"name":"texture_3d_placeholder_create","signature":"texture_3d_placeholder_create() -> RID","description":"Creates a placeholder for a 3-dimensional texture and adds it to the RenderingServer. It can be accessed with the RID that is returned. This RID will be used in all texture_3d_* RenderingServer functions, although it does nothing when used.\n\t\t\t\tOnce finished with your RID, you will want to free the RID using the RenderingServer's [method free_rid] method.\n\t\t\t\tNote: The equivalent resource is .","returnType":"RID"},{"name":"texture_3d_update","signature":"texture_3d_update(texture: RID, data: Image[]) -> void","description":"Updates the texture specified by the [param texture] 's data with the data in [param data]. All the texture's layers must be replaced at once.\n\t\t\t\tNote: The [param texture] must have the same width, height, depth and format as the current texture data. Otherwise, an error will be printed and the original texture won't be modified. If you need to use different width, height, depth or format, use [method texture_replace] instead.","returnType":"void"},{"name":"texture_create_from_native_handle","signature":"texture_create_from_native_handle(type: int, format: int, native_handle: int, width: int, height: int, depth: int, layers: int, layered_type: int) -> RID","description":"Creates a texture based on a native handle that was created outside of Godot's renderer.\n\t\t\t\tNote: If using only the rendering device renderer, it's recommend to use [method RenderingDevice.texture_create_from_extension] together with [method RenderingServer.texture_rd_create], rather than this method. It will give you much more control over the texture's format and usage.","returnType":"RID"},{"name":"texture_get_format","signature":"texture_get_format(texture: RID) -> int","description":"Returns the format for the texture.","returnType":"int"},{"name":"texture_get_native_handle","signature":"texture_get_native_handle(texture: RID, srgb: bool) -> int","description":"Returns the internal graphics handle for this texture object. For use when communicating with third-party APIs mostly with GDExtension.\n\t\t\t\tNote: This function returns a uint64_t which internally maps to a GLuint (OpenGL) or VkImage (Vulkan).","returnType":"int"},{"name":"texture_get_path","signature":"texture_get_path(texture: RID) -> String","description":"","returnType":"String"},{"name":"texture_get_rd_texture","signature":"texture_get_rd_texture(texture: RID, srgb: bool) -> RID","description":"Returns a texture  that can be used with .","returnType":"RID"},{"name":"texture_proxy_create","signature":"texture_proxy_create(base: RID) -> RID","description":"This method does nothing and always returns an invalid .","returnType":"RID"},{"name":"texture_proxy_update","signature":"texture_proxy_update(texture: RID, proxy_to: RID) -> void","description":"This method does nothing.","returnType":"void"},{"name":"texture_rd_create","signature":"texture_rd_create(rd_texture: RID, layer_type: int) -> RID","description":"Creates a new texture object based on a texture created directly on the . If the texture contains layers, [param layer_type] is used to define the layer type.","returnType":"RID"},{"name":"texture_replace","signature":"texture_replace(texture: RID, by_texture: RID) -> void","description":"Replaces [param texture]'s texture data by the texture specified by the [param by_texture] RID, without changing [param texture]'s RID.","returnType":"void"},{"name":"texture_set_force_redraw_if_visible","signature":"texture_set_force_redraw_if_visible(texture: RID, enable: bool) -> void","description":"","returnType":"void"},{"name":"texture_set_path","signature":"texture_set_path(texture: RID, path: String) -> void","description":"","returnType":"void"},{"name":"texture_set_size_override","signature":"texture_set_size_override(texture: RID, width: int, height: int) -> void","description":"","returnType":"void"},{"name":"viewport_attach_camera","signature":"viewport_attach_camera(viewport: RID, camera: RID) -> void","description":"Sets a viewport's camera.","returnType":"void"},{"name":"viewport_attach_canvas","signature":"viewport_attach_canvas(viewport: RID, canvas: RID) -> void","description":"Sets a viewport's canvas.","returnType":"void"},{"name":"viewport_attach_to_screen","signature":"viewport_attach_to_screen(viewport: RID, rect: Rect2, screen: int) -> void","description":"Copies the viewport to a region of the screen specified by [param rect]. If [method viewport_set_render_direct_to_screen] is true, then the viewport does not use a framebuffer and the contents of the viewport are rendered directly to screen. However, note that the root viewport is drawn last, therefore it will draw over the screen. Accordingly, you must set the root viewport to an area that does not cover the area that you have attached this viewport to.\n\t\t\t\tFor example, you can set the root viewport to not render at all with the following code:\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tfunc _ready():\n\t\t\t\t    RenderingServer.viewport_attach_to_screen(get_viewport().get_viewport_rid(), Rect2())\n\t\t\t\t    RenderingServer.viewport_attach_to_screen($Viewport.get_viewport_rid(), Rect2(0, 0, 600, 600))\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tUsing this can result in significant optimization, especially on lower-end devices. However, it comes at the cost of having to manage your viewports manually. For further optimization, see [method viewport_set_render_direct_to_screen].","returnType":"void"},{"name":"viewport_create","signature":"viewport_create() -> RID","description":"Creates an empty viewport and adds it to the RenderingServer. It can be accessed with the RID that is returned. This RID will be used in all viewport_* RenderingServer functions.\n\t\t\t\tOnce finished with your RID, you will want to free the RID using the RenderingServer's [method free_rid] method.\n\t\t\t\tNote: The equivalent node is .","returnType":"RID"},{"name":"viewport_get_measured_render_time_cpu","signature":"viewport_get_measured_render_time_cpu(viewport: RID) -> float","description":"Returns the CPU time taken to render the last frame in milliseconds. This only includes time spent in rendering-related operations; scripts' _process functions and other engine subsystems are not included in this readout. To get a complete readout of CPU time spent to render the scene, sum the render times of all viewports that are drawn every frame plus [method get_frame_setup_time_cpu]. Unlike [method Engine.get_frames_per_second], this method will accurately reflect CPU utilization even if framerate is capped via V-Sync or [member Engine.max_fps]. See also [method viewport_get_measured_render_time_gpu].\n\t\t\t\tNote: Requires measurements to be enabled on the specified [param viewport] using [method viewport_set_measure_render_time]. Otherwise, this method returns 0.0.","returnType":"float"},{"name":"viewport_get_measured_render_time_gpu","signature":"viewport_get_measured_render_time_gpu(viewport: RID) -> float","description":"Returns the GPU time taken to render the last frame in milliseconds. To get a complete readout of GPU time spent to render the scene, sum the render times of all viewports that are drawn every frame. Unlike [method Engine.get_frames_per_second], this method accurately reflects GPU utilization even if framerate is capped via V-Sync or [member Engine.max_fps]. See also [method viewport_get_measured_render_time_cpu].\n\t\t\t\tNote: Requires measurements to be enabled on the specified [param viewport] using [method viewport_set_measure_render_time]. Otherwise, this method returns 0.0.\n\t\t\t\tNote: When GPU utilization is low enough during a certain period of time, GPUs will decrease their power state (which in turn decreases core and memory clock speeds). This can cause the reported GPU time to increase if GPU utilization is kept low enough by a framerate cap (compared to what it would be at the GPU's highest power state). Keep this in mind when benchmarking using [method viewport_get_measured_render_time_gpu]. This behavior can be overridden in the graphics driver settings at the cost of higher power usage.","returnType":"float"},{"name":"viewport_get_render_info","signature":"viewport_get_render_info(viewport: RID, type: int, info: int) -> int","description":"Returns a statistic about the rendering engine which can be used for performance profiling. This is separated into render pass [param type]s, each of them having the same [param info]s you can query (different passes will return different values). See [enum RenderingServer.ViewportRenderInfoType] for a list of render pass types and [enum RenderingServer.ViewportRenderInfo] for a list of information that can be queried.\n\t\t\t\tSee also [method get_rendering_info], which returns global information across all viewports.\n\t\t\t\tNote: Viewport rendering information is not available until at least 2 frames have been rendered by the engine. If rendering information is not available, [method viewport_get_render_info] returns 0. To print rendering information in _ready() successfully, use the following:\n\t\t\t\t\n\t\t\t\tfunc _ready():\n\t\t\t\t    for _i in 2:\n\t\t\t\t        await get_tree().process_frame\n\n\t\t\t\t    print(\n\t\t\t\t            RenderingServer.viewport_get_render_info(get_viewport().get_viewport_rid(),\n\t\t\t\t            RenderingServer.VIEWPORT_RENDER_INFO_TYPE_VISIBLE,\n\t\t\t\t            RenderingServer.VIEWPORT_RENDER_INFO_DRAW_CALLS_IN_FRAME)\n\t\t\t\t    )\n\t\t\t\t","returnType":"int"},{"name":"viewport_get_render_target","signature":"viewport_get_render_target(viewport: RID) -> RID","description":"Returns the render target for the viewport.","returnType":"RID"},{"name":"viewport_get_texture","signature":"viewport_get_texture(viewport: RID) -> RID","description":"Returns the viewport's last rendered frame.","returnType":"RID"},{"name":"viewport_get_update_mode","signature":"viewport_get_update_mode(viewport: RID) -> int","description":"Returns the viewport's update mode. See [enum ViewportUpdateMode] constants for options.\n\t\t\t\tWarning: Calling this from any thread other than the rendering thread will be detrimental to performance.","returnType":"int"},{"name":"viewport_remove_canvas","signature":"viewport_remove_canvas(viewport: RID, canvas: RID) -> void","description":"Detaches a viewport from a canvas.","returnType":"void"},{"name":"viewport_set_active","signature":"viewport_set_active(viewport: RID, active: bool) -> void","description":"If true, sets the viewport active, else sets it inactive.","returnType":"void"},{"name":"viewport_set_anisotropic_filtering_level","signature":"viewport_set_anisotropic_filtering_level(viewport: RID, anisotropic_filtering_level: int) -> void","description":"Sets the maximum number of samples to take when using anisotropic filtering on textures (as a power of two). A higher sample count will result in sharper textures at oblique angles, but is more expensive to compute. A value of 0 forcibly disables anisotropic filtering, even on materials where it is enabled.\n\t\t\t\tThe anisotropic filtering level also affects decals and light projectors if they are configured to use anisotropic filtering. See [member ProjectSettings.rendering/textures/decals/filter] and [member ProjectSettings.rendering/textures/light_projectors/filter].\n\t\t\t\tNote: In 3D, for this setting to have an effect, set [member BaseMaterial3D.texture_filter] to [constant BaseMaterial3D.TEXTURE_FILTER_LINEAR_WITH_MIPMAPS_ANISOTROPIC] or [constant BaseMaterial3D.TEXTURE_FILTER_NEAREST_WITH_MIPMAPS_ANISOTROPIC] on materials.\n\t\t\t\tNote: In 2D, for this setting to have an effect, set [member CanvasItem.texture_filter] to [constant CanvasItem.TEXTURE_FILTER_LINEAR_WITH_MIPMAPS_ANISOTROPIC] or [constant CanvasItem.TEXTURE_FILTER_NEAREST_WITH_MIPMAPS_ANISOTROPIC] on the  node displaying the texture (or in ). However, anisotropic filtering is rarely useful in 2D, so only enable it for textures in 2D if it makes a meaningful visual difference.","returnType":"void"},{"name":"viewport_set_canvas_cull_mask","signature":"viewport_set_canvas_cull_mask(viewport: RID, canvas_cull_mask: int) -> void","description":"Sets the rendering mask associated with this . Only  nodes with a matching rendering visibility layer will be rendered by this .","returnType":"void"},{"name":"viewport_set_canvas_stacking","signature":"viewport_set_canvas_stacking(viewport: RID, canvas: RID, layer: int, sublayer: int) -> void","description":"Sets the stacking order for a viewport's canvas.\n\t\t\t\t[param layer] is the actual canvas layer, while [param sublayer] specifies the stacking order of the canvas among those in the same layer.","returnType":"void"},{"name":"viewport_set_canvas_transform","signature":"viewport_set_canvas_transform(viewport: RID, canvas: RID, offset: Transform2D) -> void","description":"Sets the transformation of a viewport's canvas.","returnType":"void"},{"name":"viewport_set_clear_mode","signature":"viewport_set_clear_mode(viewport: RID, clear_mode: int) -> void","description":"Sets the clear mode of a viewport. See [enum ViewportClearMode] for options.","returnType":"void"},{"name":"viewport_set_debug_draw","signature":"viewport_set_debug_draw(viewport: RID, draw: int) -> void","description":"Sets the debug draw mode of a viewport. See [enum ViewportDebugDraw] for options.","returnType":"void"},{"name":"viewport_set_default_canvas_item_texture_filter","signature":"viewport_set_default_canvas_item_texture_filter(viewport: RID, filter: int) -> void","description":"Sets the default texture filtering mode for the specified [param viewport] RID. See [enum CanvasItemTextureFilter] for options.","returnType":"void"},{"name":"viewport_set_default_canvas_item_texture_repeat","signature":"viewport_set_default_canvas_item_texture_repeat(viewport: RID, repeat: int) -> void","description":"Sets the default texture repeat mode for the specified [param viewport] RID. See [enum CanvasItemTextureRepeat] for options.","returnType":"void"},{"name":"viewport_set_disable_2d","signature":"viewport_set_disable_2d(viewport: RID, disable: bool) -> void","description":"If true, the viewport's canvas (i.e. 2D and GUI elements) is not rendered.","returnType":"void"},{"name":"viewport_set_disable_3d","signature":"viewport_set_disable_3d(viewport: RID, disable: bool) -> void","description":"If true, the viewport's 3D elements are not rendered.","returnType":"void"},{"name":"viewport_set_environment_mode","signature":"viewport_set_environment_mode(viewport: RID, mode: int) -> void","description":"Sets the viewport's environment mode which allows enabling or disabling rendering of 3D environment over 2D canvas. When disabled, 2D will not be affected by the environment. When enabled, 2D will be affected by the environment if the environment background mode is [constant ENV_BG_CANVAS]. The default behavior is to inherit the setting from the viewport's parent. If the topmost parent is also set to [constant VIEWPORT_ENVIRONMENT_INHERIT], then the behavior will be the same as if it was set to [constant VIEWPORT_ENVIRONMENT_ENABLED].","returnType":"void"},{"name":"viewport_set_fsr_sharpness","signature":"viewport_set_fsr_sharpness(viewport: RID, sharpness: float) -> void","description":"Determines how sharp the upscaled image will be when using the FSR upscaling mode. Sharpness halves with every whole number. Values go from 0.0 (sharpest) to 2.0. Values above 2.0 won't make a visible difference.","returnType":"void"},{"name":"viewport_set_global_canvas_transform","signature":"viewport_set_global_canvas_transform(viewport: RID, transform: Transform2D) -> void","description":"Sets the viewport's global transformation matrix.","returnType":"void"},{"name":"viewport_set_measure_render_time","signature":"viewport_set_measure_render_time(viewport: RID, enable: bool) -> void","description":"Sets the measurement for the given [param viewport] RID (obtained using [method Viewport.get_viewport_rid]). Once enabled, [method viewport_get_measured_render_time_cpu] and [method viewport_get_measured_render_time_gpu] will return values greater than 0.0 when queried with the given [param viewport].","returnType":"void"},{"name":"viewport_set_msaa_2d","signature":"viewport_set_msaa_2d(viewport: RID, msaa: int) -> void","description":"Sets the multisample antialiasing mode for 2D/Canvas on the specified [param viewport] RID. See [enum ViewportMSAA] for options. Equivalent to [member ProjectSettings.rendering/anti_aliasing/quality/msaa_2d] or [member Viewport.msaa_2d].","returnType":"void"},{"name":"viewport_set_msaa_3d","signature":"viewport_set_msaa_3d(viewport: RID, msaa: int) -> void","description":"Sets the multisample antialiasing mode for 3D on the specified [param viewport] RID. See [enum ViewportMSAA] for options. Equivalent to [member ProjectSettings.rendering/anti_aliasing/quality/msaa_3d] or [member Viewport.msaa_3d].","returnType":"void"},{"name":"viewport_set_occlusion_culling_build_quality","signature":"viewport_set_occlusion_culling_build_quality(quality: int) -> void","description":"Sets the [member ProjectSettings.rendering/occlusion_culling/bvh_build_quality] to use for occlusion culling. This parameter is global and cannot be set on a per-viewport basis.","returnType":"void"},{"name":"viewport_set_occlusion_rays_per_thread","signature":"viewport_set_occlusion_rays_per_thread(rays_per_thread: int) -> void","description":"Sets the [member ProjectSettings.rendering/occlusion_culling/occlusion_rays_per_thread] to use for occlusion culling. This parameter is global and cannot be set on a per-viewport basis.","returnType":"void"},{"name":"viewport_set_parent_viewport","signature":"viewport_set_parent_viewport(viewport: RID, parent_viewport: RID) -> void","description":"Sets the viewport's parent to the viewport specified by the [param parent_viewport] RID.","returnType":"void"},{"name":"viewport_set_positional_shadow_atlas_quadrant_subdivision","signature":"viewport_set_positional_shadow_atlas_quadrant_subdivision(viewport: RID, quadrant: int, subdivision: int) -> void","description":"Sets the number of subdivisions to use in the specified shadow atlas [param quadrant] for omni and spot shadows. See also [method Viewport.set_positional_shadow_atlas_quadrant_subdiv].","returnType":"void"},{"name":"viewport_set_positional_shadow_atlas_size","signature":"viewport_set_positional_shadow_atlas_size(viewport: RID, size: int, use_16_bits: bool) -> void","description":"Sets the [param size] of the shadow atlas's images (used for omni and spot lights) on the viewport specified by the [param viewport] RID. The value is rounded up to the nearest power of 2. If [param use_16_bits] is true, use 16 bits for the omni/spot shadow depth map. Enabling this results in shadows having less precision and may result in shadow acne, but can lead to performance improvements on some devices.\n\t\t\t\tNote: If this is set to 0, no positional shadows will be visible at all. This can improve performance significantly on low-end systems by reducing both the CPU and GPU load (as fewer draw calls are needed to draw the scene without shadows).","returnType":"void"},{"name":"viewport_set_render_direct_to_screen","signature":"viewport_set_render_direct_to_screen(viewport: RID, enabled: bool) -> void","description":"If true, render the contents of the viewport directly to screen. This allows a low-level optimization where you can skip drawing a viewport to the root viewport. While this optimization can result in a significant increase in speed (especially on older devices), it comes at a cost of usability. When this is enabled, you cannot read from the viewport or from the screen_texture. You also lose the benefit of certain window settings, such as the various stretch modes. Another consequence to be aware of is that in 2D the rendering happens in window coordinates, so if you have a viewport that is double the size of the window, and you set this, then only the portion that fits within the window will be drawn, no automatic scaling is possible, even if your game scene is significantly larger than the window size.","returnType":"void"},{"name":"viewport_set_scaling_3d_mode","signature":"viewport_set_scaling_3d_mode(viewport: RID, scaling_3d_mode: int) -> void","description":"Sets the 3D resolution scaling mode. Bilinear scaling renders at different resolution to either undersample or supersample the viewport. FidelityFX Super Resolution 1.0, abbreviated to FSR, is an upscaling technology that produces high quality images at fast framerates by using a spatially aware upscaling algorithm. FSR is slightly more expensive than bilinear, but it produces significantly higher image quality. FSR should be used where possible.","returnType":"void"},{"name":"viewport_set_scaling_3d_scale","signature":"viewport_set_scaling_3d_scale(viewport: RID, scale: float) -> void","description":"Scales the 3D render buffer based on the viewport size uses an image filter specified in [enum ViewportScaling3DMode] to scale the output image to the full viewport size. Values lower than 1.0 can be used to speed up 3D rendering at the cost of quality (undersampling). Values greater than 1.0 are only valid for bilinear mode and can be used to improve 3D rendering quality at a high performance cost (supersampling). See also [enum ViewportMSAA] for multi-sample antialiasing, which is significantly cheaper but only smoothens the edges of polygons.\n\t\t\t\tWhen using FSR upscaling, AMD recommends exposing the following values as preset options to users \"Ultra Quality: 0.77\", \"Quality: 0.67\", \"Balanced: 0.59\", \"Performance: 0.5\" instead of exposing the entire scale.","returnType":"void"},{"name":"viewport_set_scenario","signature":"viewport_set_scenario(viewport: RID, scenario: RID) -> void","description":"Sets a viewport's scenario. The scenario contains information about environment information, reflection atlas, etc.","returnType":"void"},{"name":"viewport_set_screen_space_aa","signature":"viewport_set_screen_space_aa(viewport: RID, mode: int) -> void","description":"Sets the viewport's screen-space antialiasing mode. Equivalent to [member ProjectSettings.rendering/anti_aliasing/quality/screen_space_aa] or [member Viewport.screen_space_aa].","returnType":"void"},{"name":"viewport_set_sdf_oversize_and_scale","signature":"viewport_set_sdf_oversize_and_scale(viewport: RID, oversize: int, scale: int) -> void","description":"Sets the viewport's 2D signed distance field [member ProjectSettings.rendering/2d/sdf/oversize] and [member ProjectSettings.rendering/2d/sdf/scale]. This is used when sampling the signed distance field in  shaders as well as  collision. This is not used by SDFGI in 3D rendering.","returnType":"void"},{"name":"viewport_set_size","signature":"viewport_set_size(viewport: RID, width: int, height: int) -> void","description":"Sets the viewport's width and height in pixels.","returnType":"void"},{"name":"viewport_set_snap_2d_transforms_to_pixel","signature":"viewport_set_snap_2d_transforms_to_pixel(viewport: RID, enabled: bool) -> void","description":"If true, canvas item transforms (i.e. origin position) are snapped to the nearest pixel when rendering. This can lead to a crisper appearance at the cost of less smooth movement, especially when  smoothing is enabled. Equivalent to [member ProjectSettings.rendering/2d/snap/snap_2d_transforms_to_pixel].","returnType":"void"},{"name":"viewport_set_snap_2d_vertices_to_pixel","signature":"viewport_set_snap_2d_vertices_to_pixel(viewport: RID, enabled: bool) -> void","description":"If true, canvas item vertices (i.e. polygon points) are snapped to the nearest pixel when rendering. This can lead to a crisper appearance at the cost of less smooth movement, especially when  smoothing is enabled. Equivalent to [member ProjectSettings.rendering/2d/snap/snap_2d_vertices_to_pixel].","returnType":"void"},{"name":"viewport_set_texture_mipmap_bias","signature":"viewport_set_texture_mipmap_bias(viewport: RID, mipmap_bias: float) -> void","description":"Affects the final texture sharpness by reading from a lower or higher mipmap (also called \"texture LOD bias\"). Negative values make mipmapped textures sharper but grainier when viewed at a distance, while positive values make mipmapped textures blurrier (even when up close). To get sharper textures at a distance without introducing too much graininess, set this between -0.75 and 0.0. Enabling temporal antialiasing ([member ProjectSettings.rendering/anti_aliasing/quality/use_taa]) can help reduce the graininess visible when using negative mipmap bias.\n\t\t\t\tNote: When the 3D scaling mode is set to FSR 1.0, this value is used to adjust the automatic mipmap bias which is calculated internally based on the scale factor. The formula for this is -log2(1.0 / scale) + mipmap_bias.","returnType":"void"},{"name":"viewport_set_transparent_background","signature":"viewport_set_transparent_background(viewport: RID, enabled: bool) -> void","description":"If true, the viewport renders its background as transparent.","returnType":"void"},{"name":"viewport_set_update_mode","signature":"viewport_set_update_mode(viewport: RID, update_mode: int) -> void","description":"Sets when the viewport should be updated. See [enum ViewportUpdateMode] constants for options.","returnType":"void"},{"name":"viewport_set_use_debanding","signature":"viewport_set_use_debanding(viewport: RID, enable: bool) -> void","description":"If true, enables debanding on the specified viewport. Equivalent to [member ProjectSettings.rendering/anti_aliasing/quality/use_debanding] or [member Viewport.use_debanding].","returnType":"void"},{"name":"viewport_set_use_hdr_2d","signature":"viewport_set_use_hdr_2d(viewport: RID, enabled: bool) -> void","description":"If true, 2D rendering will use a high dynamic range (HDR) format framebuffer matching the bit depth of the 3D framebuffer. When using the Forward+ renderer this will be an RGBA16 framebuffer, while when using the Mobile renderer it will be an RGB10_A2 framebuffer. Additionally, 2D rendering will take place in linear color space and will be converted to sRGB space immediately before blitting to the screen (if the Viewport is attached to the screen). Practically speaking, this means that the end result of the Viewport will not be clamped into the 0-1 range and can be used in 3D rendering without color space adjustments. This allows 2D rendering to take advantage of effects requiring high dynamic range (e.g. 2D glow) as well as substantially improves the appearance of effects requiring highly detailed gradients. This setting has the same effect as [member Viewport.use_hdr_2d].\n\t\t\t\tNote: This setting will have no effect when using the Compatibility renderer, which always renders in low dynamic range for performance reasons.","returnType":"void"},{"name":"viewport_set_use_occlusion_culling","signature":"viewport_set_use_occlusion_culling(viewport: RID, enable: bool) -> void","description":"If true, enables occlusion culling on the specified viewport. Equivalent to [member ProjectSettings.rendering/occlusion_culling/use_occlusion_culling].","returnType":"void"},{"name":"viewport_set_use_taa","signature":"viewport_set_use_taa(viewport: RID, enable: bool) -> void","description":"If true, use temporal antialiasing. Equivalent to [member ProjectSettings.rendering/anti_aliasing/quality/use_taa] or [member Viewport.use_taa].","returnType":"void"},{"name":"viewport_set_use_xr","signature":"viewport_set_use_xr(viewport: RID, use_xr: bool) -> void","description":"If true, the viewport uses augmented or virtual reality technologies. See .","returnType":"void"},{"name":"viewport_set_vrs_mode","signature":"viewport_set_vrs_mode(viewport: RID, mode: int) -> void","description":"Sets the Variable Rate Shading (VRS) mode for the viewport. If the GPU does not support VRS, this property is ignored. Equivalent to [member ProjectSettings.rendering/vrs/mode].","returnType":"void"},{"name":"viewport_set_vrs_texture","signature":"viewport_set_vrs_texture(viewport: RID, texture: RID) -> void","description":"The texture to use when the VRS mode is set to [constant RenderingServer.VIEWPORT_VRS_TEXTURE]. Equivalent to [member ProjectSettings.rendering/vrs/texture].","returnType":"void"},{"name":"viewport_set_vrs_update_mode","signature":"viewport_set_vrs_update_mode(viewport: RID, mode: int) -> void","description":"Sets the update mode for Variable Rate Shading (VRS) for the viewport. VRS requires the input texture to be converted to the format usable by the VRS method supported by the hardware. The update mode defines how often this happens. If the GPU does not support VRS, or VRS is not enabled, this property is ignored.\n\t\t\t\tIf set to [constant RenderingServer.VIEWPORT_VRS_UPDATE_ONCE], the input texture is copied once and the mode is changed to [constant RenderingServer.VIEWPORT_VRS_UPDATE_DISABLED].","returnType":"void"},{"name":"visibility_notifier_create","signature":"visibility_notifier_create() -> RID","description":"Creates a new 3D visibility notifier object and adds it to the RenderingServer. It can be accessed with the RID that is returned. This RID will be used in all visibility_notifier_* RenderingServer functions.\n\t\t\t\tOnce finished with your RID, you will want to free the RID using the RenderingServer's [method free_rid] method.\n\t\t\t\tTo place in a scene, attach this notifier to an instance using [method instance_set_base] using the returned RID.\n\t\t\t\tNote: The equivalent node is .","returnType":"RID"},{"name":"visibility_notifier_set_aabb","signature":"visibility_notifier_set_aabb(notifier: RID, aabb: AABB) -> void","description":"","returnType":"void"},{"name":"visibility_notifier_set_callbacks","signature":"visibility_notifier_set_callbacks(notifier: RID, enter_callable: Callable, exit_callable: Callable) -> void","description":"","returnType":"void"},{"name":"voxel_gi_allocate_data","signature":"voxel_gi_allocate_data(voxel_gi: RID, to_cell_xform: Transform3D, aabb: AABB, octree_size: Vector3i, octree_cells: PackedByteArray, data_cells: PackedByteArray, distance_field: PackedByteArray, level_counts: PackedInt32Array) -> void","description":"","returnType":"void"},{"name":"voxel_gi_create","signature":"voxel_gi_create() -> RID","description":"Creates a new voxel-based global illumination object and adds it to the RenderingServer. It can be accessed with the RID that is returned. This RID will be used in all voxel_gi_* RenderingServer functions.\n\t\t\t\tOnce finished with your RID, you will want to free the RID using the RenderingServer's [method free_rid] method.\n\t\t\t\tNote: The equivalent node is .","returnType":"RID"},{"name":"voxel_gi_get_data_cells","signature":"voxel_gi_get_data_cells(voxel_gi: RID) -> PackedByteArray","description":"","returnType":"PackedByteArray"},{"name":"voxel_gi_get_distance_field","signature":"voxel_gi_get_distance_field(voxel_gi: RID) -> PackedByteArray","description":"","returnType":"PackedByteArray"},{"name":"voxel_gi_get_level_counts","signature":"voxel_gi_get_level_counts(voxel_gi: RID) -> PackedInt32Array","description":"","returnType":"PackedInt32Array"},{"name":"voxel_gi_get_octree_cells","signature":"voxel_gi_get_octree_cells(voxel_gi: RID) -> PackedByteArray","description":"","returnType":"PackedByteArray"},{"name":"voxel_gi_get_octree_size","signature":"voxel_gi_get_octree_size(voxel_gi: RID) -> Vector3i","description":"","returnType":"Vector3i"},{"name":"voxel_gi_get_to_cell_xform","signature":"voxel_gi_get_to_cell_xform(voxel_gi: RID) -> Transform3D","description":"","returnType":"Transform3D"},{"name":"voxel_gi_set_baked_exposure_normalization","signature":"voxel_gi_set_baked_exposure_normalization(voxel_gi: RID, baked_exposure: float) -> void","description":"Used to inform the renderer what exposure normalization value was used while baking the voxel gi. This value will be used and modulated at run time to ensure that the voxel gi maintains a consistent level of exposure even if the scene-wide exposure normalization is changed at run time. For more information see [method camera_attributes_set_exposure].","returnType":"void"},{"name":"voxel_gi_set_bias","signature":"voxel_gi_set_bias(voxel_gi: RID, bias: float) -> void","description":"Sets the [member VoxelGIData.bias] value to use on the specified [param voxel_gi]'s .","returnType":"void"},{"name":"voxel_gi_set_dynamic_range","signature":"voxel_gi_set_dynamic_range(voxel_gi: RID, range: float) -> void","description":"Sets the [member VoxelGIData.dynamic_range] value to use on the specified [param voxel_gi]'s .","returnType":"void"},{"name":"voxel_gi_set_energy","signature":"voxel_gi_set_energy(voxel_gi: RID, energy: float) -> void","description":"Sets the [member VoxelGIData.energy] value to use on the specified [param voxel_gi]'s .","returnType":"void"},{"name":"voxel_gi_set_interior","signature":"voxel_gi_set_interior(voxel_gi: RID, enable: bool) -> void","description":"Sets the [member VoxelGIData.interior] value to use on the specified [param voxel_gi]'s .","returnType":"void"},{"name":"voxel_gi_set_normal_bias","signature":"voxel_gi_set_normal_bias(voxel_gi: RID, bias: float) -> void","description":"Sets the [member VoxelGIData.normal_bias] value to use on the specified [param voxel_gi]'s .","returnType":"void"},{"name":"voxel_gi_set_propagation","signature":"voxel_gi_set_propagation(voxel_gi: RID, amount: float) -> void","description":"Sets the [member VoxelGIData.propagation] value to use on the specified [param voxel_gi]'s .","returnType":"void"},{"name":"voxel_gi_set_quality","signature":"voxel_gi_set_quality(quality: int) -> void","description":"Sets the [member ProjectSettings.rendering/global_illumination/voxel_gi/quality] value to use when rendering. This parameter is global and cannot be set on a per-VoxelGI basis.","returnType":"void"},{"name":"voxel_gi_set_use_two_bounces","signature":"voxel_gi_set_use_two_bounces(voxel_gi: RID, enable: bool) -> void","description":"Sets the [member VoxelGIData.use_two_bounces] value to use on the specified [param voxel_gi]'s .","returnType":"void"}],"signals":[{"name":"frame_post_draw","description":"Emitted at the end of the frame, after the RenderingServer has finished updating all the Viewports."},{"name":"frame_pre_draw","description":"Emitted at the beginning of the frame, before the RenderingServer updates all the Viewports."}]},"Resource":{"name":"Resource","description":"Base class for serializable objects.","inherits":"RefCounted","properties":[{"name":"resource_local_to_scene","type":"bool","description":"If [code]true[/code], the resource is duplicated for each instance of all scenes using it. At run-time, the resource can be modified in one scene without affecting other instances (see [method PackedScene.instantiate]).\n\t\t\t[b]Note:[/b] Changing this property at run-time has no effect on already created duplicate resources."},{"name":"resource_name","type":"String","description":"An optional name for this resource. When defined, its value is displayed to represent the resource in the Inspector dock. For built-in scripts, the name is displayed as part of the tab name in the script editor.\n\t\t\t[b]Note:[/b] Some resource formats do not support resource names. You can still set the name in the editor or via code, but it will be lost when the resource is reloaded. For example, only built-in scripts can have a resource name, while scripts stored in separate files cannot."},{"name":"resource_path","type":"String","description":"The unique path to this resource. If it has been saved to disk, the value will be its filepath. If the resource is exclusively contained within a scene, the value will be the [PackedScene]'s filepath, followed by a unique identifier.\n\t\t\t[b]Note:[/b] Setting this property manually may fail if a resource with the same path has already been previously loaded. If necessary, use [method take_over_path]."},{"name":"resource_scene_unique_id","type":"String","description":"An unique identifier relative to the this resource's scene. If left empty, the ID is automatically generated when this resource is saved inside a [PackedScene]. If the resource is not inside a scene, this property is empty by default.\n\t\t\t[b]Note:[/b] When the [PackedScene] is saved, if multiple resources in the same scene use the same ID, only the earliest resource in the scene hierarchy keeps the original ID. The other resources are assigned new IDs from [method generate_scene_unique_id].\n\t\t\t[b]Note:[/b] Setting this property does not emit the [signal changed] signal.\n\t\t\t[b]Warning:[/b] When setting, the ID must only consist of letters, numbers, and underscores. Otherwise, it will fail and default to a randomly generated ID."}],"methods":[{"name":"_get_rid","signature":"_get_rid() -> RID","description":"Override this method to return a custom  when [method get_rid] is called.","returnType":"RID"},{"name":"_reset_state","signature":"_reset_state() -> void","description":"For resources that use a variable number of properties, either via [method Object._validate_property] or [method Object._get_property_list], this method should be implemented to correctly clear the resource's state.","returnType":"void"},{"name":"_set_path_cache","signature":"_set_path_cache(path: String) -> void","description":"Sets the resource's path to [param path] without involving the resource cache.","returnType":"void"},{"name":"_setup_local_to_scene","signature":"_setup_local_to_scene() -> void","description":"Override this method to customize the newly duplicated resource created from [method PackedScene.instantiate], if the original's [member resource_local_to_scene] is set to true.\n\t\t\t\tExample: Set a random damage value to every local resource from an instantiated scene:\n\t\t\t\t\n\t\t\t\textends Resource\n\n\t\t\t\tvar damage = 0\n\n\t\t\t\tfunc _setup_local_to_scene():\n\t\t\t\t    damage = randi_range(10, 40)\n\t\t\t\t","returnType":"void"},{"name":"duplicate","signature":"duplicate(subresources: bool) -> Resource","description":"Duplicates this resource, returning a new resource with its exported or [constant PROPERTY_USAGE_STORAGE] properties copied from the original.\n\t\t\t\tIf [param subresources] is false, a shallow copy is returned; nested resources within subresources are not duplicated and are shared with the original resource (with one exception; see below). If [param subresources] is true, a deep copy is returned; nested subresources will be duplicated and are not shared (with two exceptions; see below).\n\t\t\t\t[param subresources] is usually respected, with the following exceptions:\n\t\t\t\t- Subresource properties with the [constant PROPERTY_USAGE_ALWAYS_DUPLICATE] flag are always duplicated.\n\t\t\t\t- Subresource properties with the [constant PROPERTY_USAGE_NEVER_DUPLICATE] flag are never duplicated.\n\t\t\t\t- Subresources inside  and  properties are never duplicated.\n\t\t\t\tNote: For custom resources, this method will fail if [method Object._init] has been defined with required parameters.","returnType":"Resource"},{"name":"emit_changed","signature":"emit_changed() -> void","description":"Emits the [signal changed] signal. This method is called automatically for some built-in resources.\n\t\t\t\tNote: For custom resources, it's recommended to call this method whenever a meaningful change occurs, such as a modified property. This ensures that custom s depending on the resource are properly updated.\n\t\t\t\t\n\t\t\t\tvar damage:\n\t\t\t\t    set(new_value):\n\t\t\t\t        if damage != new_value:\n\t\t\t\t            damage = new_value\n\t\t\t\t            emit_changed()\n\t\t\t\t","returnType":"void"},{"name":"generate_scene_unique_id","signature":"generate_scene_unique_id() -> String","description":"Generates a unique identifier for a resource to be contained inside a , based on the current date, time, and a random value. The returned string is only composed of letters (a to y) and numbers (0 to 8). See also [member resource_scene_unique_id].","returnType":"String"},{"name":"get_id_for_path","signature":"get_id_for_path(path: String) -> String","description":"Returns the unique identifier for the resource with the given [param path] from the resource cache. If the resource is not loaded and cached, an empty string is returned.\n\t\t\t\tNote: This method is only implemented when running in an editor context. At runtime, it returns an empty string.","returnType":"String"},{"name":"get_local_scene","signature":"get_local_scene() -> Node","description":"If [member resource_local_to_scene] is set to true and the resource has been loaded from a  instantiation, returns the root  of the scene where this resource is used. Otherwise, returns null.","returnType":"Node"},{"name":"get_rid","signature":"get_rid() -> RID","description":"Returns the  of this resource (or an empty RID). Many resources (such as , , and so on) are high-level abstractions of resources stored in a specialized server (, , etc.), so this function will return the original .","returnType":"RID"},{"name":"is_built_in","signature":"is_built_in() -> bool","description":"Returns true if the resource is built-in (from the engine) or false if it is user-defined.","returnType":"bool"},{"name":"reset_state","signature":"reset_state() -> void","description":"For resources that use a variable number of properties, either via [method Object._validate_property] or [method Object._get_property_list], override [method _reset_state] to correctly clear the resource's state.","returnType":"void"},{"name":"set_id_for_path","signature":"set_id_for_path(path: String, id: String) -> void","description":"Sets the unique identifier to [param id] for the resource with the given [param path] in the resource cache. If the unique identifier is empty, the cache entry using [param path] is removed if it exists.\n\t\t\t\tNote: This method is only implemented when running in an editor context.","returnType":"void"},{"name":"set_path_cache","signature":"set_path_cache(path: String) -> void","description":"Sets the resource's path to [param path] without involving the resource cache.","returnType":"void"},{"name":"setup_local_to_scene","signature":"setup_local_to_scene() -> void","description":"Calls [method _setup_local_to_scene]. If [member resource_local_to_scene] is set to true, this method is automatically called from [method PackedScene.instantiate] by the newly duplicated resource within the scene instance.","returnType":"void"},{"name":"take_over_path","signature":"take_over_path(path: String) -> void","description":"Sets the [member resource_path] to [param path], potentially overriding an existing cache entry for this path. Further attempts to load an overridden resource by path will instead return this resource.","returnType":"void"}],"signals":[{"name":"changed","description":"Emitted when the resource changes, usually when one of its properties is modified. See also [method emit_changed].\n\t\t\t\t[b]Note:[/b] This signal is not emitted automatically for properties of custom resources. If necessary, a setter needs to be created to emit the signal."},{"name":"setup_local_to_scene_requested","description":"Emitted by a newly duplicated resource with [member resource_local_to_scene] set to [code]true[/code]."}]},"ResourceFormatLoader":{"name":"ResourceFormatLoader","description":"Loads a specific resource type from a file.","inherits":"RefCounted","properties":[],"methods":[{"name":"_exists","signature":"_exists(path: String) -> bool","description":"","returnType":"bool"},{"name":"_get_classes_used","signature":"_get_classes_used(path: String) -> PackedStringArray","description":"","returnType":"PackedStringArray"},{"name":"_get_dependencies","signature":"_get_dependencies(path: String, add_types: bool) -> PackedStringArray","description":"If implemented, gets the dependencies of a given resource. If [param add_types] is true, paths should be appended ::TypeName, where TypeName is the class name of the dependency.\n\t\t\t\tNote: Custom resource types defined by scripts aren't known by the , so you might just return \"Resource\" for them.","returnType":"PackedStringArray"},{"name":"_get_recognized_extensions","signature":"_get_recognized_extensions() -> PackedStringArray","description":"Gets the list of extensions for files this loader is able to read.","returnType":"PackedStringArray"},{"name":"_get_resource_script_class","signature":"_get_resource_script_class(path: String) -> String","description":"Returns the script class name associated with the  under the given [param path]. If the resource has no script or the script isn't a named class, it should return \"\".","returnType":"String"},{"name":"_get_resource_type","signature":"_get_resource_type(path: String) -> String","description":"Gets the class name of the resource associated with the given path. If the loader cannot handle it, it should return \"\".\n\t\t\t\tNote: Custom resource types defined by scripts aren't known by the , so you might just return \"Resource\" for them.","returnType":"String"},{"name":"_get_resource_uid","signature":"_get_resource_uid(path: String) -> int","description":"Should return the unique ID for the resource associated with the given path. If this method is not overridden, a .uid file is generated along with the resource file, containing the unique ID.","returnType":"int"},{"name":"_handles_type","signature":"_handles_type(type: StringName) -> bool","description":"Tells which resource class this loader can load.\n\t\t\t\tNote: Custom resource types defined by scripts aren't known by the , so you might just handle \"Resource\" for them.","returnType":"bool"},{"name":"_load","signature":"_load(path: String, original_path: String, use_sub_threads: bool, cache_mode: int) -> Variant","description":"Loads a resource when the engine finds this loader to be compatible. If the loaded resource is the result of an import, [param original_path] will target the source file. Returns a  object on success, or an [enum Error] constant in case of failure.\n\t\t\t\tThe [param cache_mode] property defines whether and how the cache should be used or updated when loading the resource. See [enum CacheMode] for details.","returnType":"Variant"},{"name":"_recognize_path","signature":"_recognize_path(path: String, type: StringName) -> bool","description":"Tells whether or not this loader should load a resource from its resource path for a given type.\n\t\t\t\tIf it is not implemented, the default behavior returns whether the path's extension is within the ones provided by [method _get_recognized_extensions], and if the type is within the ones provided by [method _get_resource_type].","returnType":"bool"},{"name":"_rename_dependencies","signature":"_rename_dependencies(path: String, renames: Dictionary) -> int","description":"If implemented, renames dependencies within the given resource and saves it. [param renames] is a dictionary { String =&gt; String } mapping old dependency paths to new paths.\n\t\t\t\tReturns [constant OK] on success, or an [enum Error] constant in case of failure.","returnType":"int"}],"signals":[]},"ResourceFormatSaver":{"name":"ResourceFormatSaver","description":"Saves a specific resource type to a file.","inherits":"RefCounted","properties":[],"methods":[{"name":"_get_recognized_extensions","signature":"_get_recognized_extensions(resource: Resource) -> PackedStringArray","description":"Returns the list of extensions available for saving the resource object, provided it is recognized (see [method _recognize]).","returnType":"PackedStringArray"},{"name":"_recognize","signature":"_recognize(resource: Resource) -> bool","description":"Returns whether the given resource object can be saved by this saver.","returnType":"bool"},{"name":"_recognize_path","signature":"_recognize_path(resource: Resource, path: String) -> bool","description":"Returns true if this saver handles a given save path and false otherwise.\n\t\t\t\tIf this method is not implemented, the default behavior returns whether the path's extension is within the ones provided by [method _get_recognized_extensions].","returnType":"bool"},{"name":"_save","signature":"_save(resource: Resource, path: String, flags: int) -> int","description":"Saves the given resource object to a file at the target [param path]. [param flags] is a bitmask composed with [enum ResourceSaver.SaverFlags] constants.\n\t\t\t\tReturns [constant OK] on success, or an [enum Error] constant in case of failure.","returnType":"int"},{"name":"_set_uid","signature":"_set_uid(path: String, uid: int) -> int","description":"Sets a new UID for the resource at the given [param path]. Returns [constant OK] on success, or an [enum Error] constant in case of failure.","returnType":"int"}],"signals":[]},"ResourceImporter":{"name":"ResourceImporter","description":"Base class for resource importers.","inherits":"RefCounted","properties":[],"methods":[],"signals":[]},"ResourceImporterBMFont":{"name":"ResourceImporterBMFont","description":"Imports a bitmap font in the BMFont (.fnt) format.","inherits":"ResourceImporter","properties":[{"name":"compress","type":"bool","description":"If [code]true[/code], uses lossless compression for the resulting font."},{"name":"fallbacks","type":"Array","description":"List of font fallbacks to use if a glyph isn't found in this bitmap font. Fonts at the beginning of the array are attempted first."},{"name":"scaling_mode","type":"int","description":"Font scaling mode."}],"methods":[],"signals":[]},"ResourceImporterBitMap":{"name":"ResourceImporterBitMap","description":"Imports a  resource (2D array of boolean values).","inherits":"ResourceImporter","properties":[{"name":"create_from","type":"int","description":"The data source to use for generating the bitmap.\n\t\t\t[b]Black &amp; White:[/b] Pixels whose HSV value is greater than the [member threshold] will be considered as \"enabled\" (bit is [code]true[/code]). If the pixel is lower than or equal to the threshold, it will be considered as \"disabled\" (bit is [code]false[/code]).\n\t\t\t[b]Alpha:[/b] Pixels whose alpha value is greater than the [member threshold] will be considered as \"enabled\" (bit is [code]true[/code]). If the pixel is lower than or equal to the threshold, it will be considered as \"disabled\" (bit is [code]false[/code])."},{"name":"threshold","type":"float","description":"The threshold to use to determine which bits should be considered enabled or disabled. See also [member create_from]."}],"methods":[],"signals":[]},"ResourceImporterCSVTranslation":{"name":"ResourceImporterCSVTranslation","description":"Imports comma-separated values","inherits":"ResourceImporter","properties":[{"name":"compress","type":"bool","description":"If [code]true[/code], creates an [OptimizedTranslation] instead of a [Translation]. This makes the resulting file smaller at the cost of a small CPU overhead."},{"name":"delimiter","type":"int","description":"The delimiter to use in the CSV file. The default value matches the common CSV convention. Tab-separated values are sometimes called TSV files."}],"methods":[],"signals":[]},"ResourceImporterDynamicFont":{"name":"ResourceImporterDynamicFont","description":"Imports a TTF, TTC, OTF, OTC, WOFF or WOFF2 font file for font rendering that adapts to any size.","inherits":"ResourceImporter","properties":[{"name":"allow_system_fallback","type":"bool","description":"If [code]true[/code], automatically use system fonts as a fallback if a glyph isn't found in this dynamic font. This makes supporting CJK characters or emoji more straightforward, as you don't need to include a CJK/emoji font in your project. See also [member fallbacks].\n\t\t\t[b]Note:[/b] The appearance of system fonts varies across platforms. Loading system fonts is only supported on Windows, macOS, Linux, Android and iOS."},{"name":"antialiasing","type":"int","description":"The font antialiasing method to use.\n\t\t\t[b]Disabled:[/b] Most suited for pixel art fonts, although you do not [i]have[/i] to change the antialiasing from the default [b]Grayscale[/b] if the font file was well-created and the font is used at an integer multiple of its intended size. If pixel art fonts have a bad appearance at their intended size, try setting [member subpixel_positioning] to [b]Disabled[/b] instead.\n\t\t\t[b]Grayscale:[/b] Use grayscale antialiasing. This is the approach used by the operating system on macOS, Android and iOS.\n\t\t\t[b]LCD Subpixel:[/b] Use antialiasing with subpixel patterns to make fonts sharper on LCD displays. This is the approach used by the operating system on Windows and most Linux distributions. The downside is that this can introduce \"fringing\" on edges, especially on display technologies that don't use standard RGB subpixels (such as OLED displays). The LCD subpixel layout is globally controlled by [member ProjectSettings.gui/theme/lcd_subpixel_layout], which also allows falling back to grayscale antialiasing."},{"name":"compress","type":"bool","description":"If [code]true[/code], uses lossless compression for the resulting font."},{"name":"disable_embedded_bitmaps","type":"bool","description":"If set to [code]true[/code], embedded font bitmap loading is disabled (bitmap-only and color fonts ignore this property)."},{"name":"fallbacks","type":"Array","description":"List of font fallbacks to use if a glyph isn't found in this dynamic font. Fonts at the beginning of the array are attempted first, but fallback fonts that don't support the glyph's language and script are attempted last (see [member language_support] and [member script_support]). See also [member allow_system_fallback]."},{"name":"force_autohinter","type":"bool","description":"If [code]true[/code], forces generation of hinting data for the font using [url=https://freetype.org/]FreeType[/url]'s autohinter. This will make [member hinting] effective with fonts that don't include hinting data."},{"name":"generate_mipmaps","type":"bool","description":"If [code]true[/code], this font will have mipmaps generated. This prevents text from looking grainy when a [Control] is scaled down, or when a [Label3D] is viewed from a long distance (if [member Label3D.texture_filter] is set to a mode that displays mipmaps).\n\t\t\tEnabling [member generate_mipmaps] increases font generation time and memory usage. Only enable this setting if you actually need it."},{"name":"hinting","type":"int","description":"The hinting mode to use. This controls how aggressively glyph edges should be snapped to pixels when rasterizing the font. Depending on personal preference, you may prefer using one hinting mode over the other. Hinting modes other than [b]None[/b] are only effective if the font contains hinting data (see [member force_autohinter]).\n\t\t\t[b]None:[/b] Smoothest appearance, which can make the font look blurry at small sizes.\n\t\t\t[b]Light:[/b] Sharp result by snapping glyph edges to pixels on the Y axis only.\n\t\t\t[b]Full:[/b] Sharpest by snapping glyph edges to pixels on both X and Y axes."},{"name":"keep_rounding_remainders","type":"bool","description":"If set to [code]true[/code], when aligning glyphs to the pixel boundaries rounding remainders are accumulated to ensure more uniform glyph distribution. This setting has no effect if subpixel positioning is enabled."},{"name":"language_support","type":"Dictionary","description":"Override the list of languages supported by this font. If left empty, this is supplied by the font metadata. There is usually no need to change this. See also [member script_support]."},{"name":"msdf_pixel_range","type":"int","description":"The width of the range around the shape between the minimum and maximum representable signed distance. If using font outlines, [member msdf_pixel_range] must be set to at least [i]twice[/i] the size of the largest font outline. The default [member msdf_pixel_range] value of [code]8[/code] allows outline sizes up to [code]4[/code] to look correct."},{"name":"msdf_size","type":"int","description":"Source font size used to generate MSDF textures. Higher values allow for more precision, but are slower to render and require more memory. Only increase this value if you notice a visible lack of precision in glyph rendering. Only effective if [member multichannel_signed_distance_field] is [code]true[/code]."},{"name":"multichannel_signed_distance_field","type":"bool","description":"If set to [code]true[/code], the font will use multichannel signed distance field (MSDF) for crisp rendering at any size. Since this approach does not rely on rasterizing the font every time its size changes, this allows for resizing the font in real-time without any performance penalty. Text will also not look grainy for [Control]s that are scaled down (or for [Label3D]s viewed from a long distance).\n\t\t\tMSDF font rendering can be combined with [member generate_mipmaps] to further improve font rendering quality when scaled down."},{"name":"opentype_features","type":"Dictionary","description":"The OpenType features to enable, disable or set a value for this font. This can be used to enable optional features provided by the font, such as ligatures or alternative glyphs. The list of supported OpenType features varies on a per-font basis."},{"name":"oversampling","type":"float","description":"If set to a value greater than [code]0.0[/code], overrides the oversampling factor for the font. This can be used to render the font at a higher or lower resolution than intended without affecting its physical size. In most cases, this should be left at [code]0.0[/code]."},{"name":"preload","type":"Array","description":"The glyph ranges to prerender. This can avoid stuttering during gameplay when new characters need to be rendered, especially if [member subpixel_positioning] is enabled. The downside of using preloading is that initial project load times will increase, as well as memory usage."},{"name":"script_support","type":"Dictionary","description":"Override the list of language scripts supported by this font. If left empty, this is supplied by the font metadata. There is usually no need to change this. See also [member language_support]."},{"name":"subpixel_positioning","type":"int","description":"Subpixel positioning improves font rendering appearance, especially at smaller font sizes. The downside is that it takes more time to initially render the font, which can cause stuttering during gameplay, especially if used with large font sizes. This should be set to [b]Disabled[/b] for fonts with a pixel art appearance.\n\t\t\t[b]Disabled:[/b] No subpixel positioning. Lowest quality, fastest rendering.\n\t\t\t[b]Auto:[/b] Use subpixel positioning at small font sizes (the chosen quality varies depending on font size). Large fonts will not use subpixel positioning. This is a good tradeoff between performance and quality.\n\t\t\t[b]One Half of a Pixel:[/b] Always perform intermediate subpixel positioning regardless of font size. High quality, slow rendering.\n\t\t\t[b]One Quarter of a Pixel:[/b] Always perform precise subpixel positioning regardless of font size. Highest quality, slowest rendering.\n\t\t\t[b]Auto (Except Pixel Fonts):[/b] [b]Disabled[/b] for the pixel style fonts (each glyph contours contain only straight horizontal and vertical lines), [b]Auto[/b] for the other fonts."}],"methods":[],"signals":[]},"ResourceImporterImage":{"name":"ResourceImporterImage","description":"Imports a image for use in scripting, with no rendering capabilities.","inherits":"ResourceImporter","properties":[],"methods":[],"signals":[]},"ResourceImporterImageFont":{"name":"ResourceImporterImageFont","description":"Imports a bitmap font where all glyphs have the same width and height.","inherits":"ResourceImporter","properties":[{"name":"ascent","type":"int","description":"Font ascent (number of pixels above the baseline). If set to [code]0[/code], half of the character height is used."},{"name":"character_margin","type":"Rect2i","description":"Margin applied around every imported glyph. If your font image contains guides (in the form of lines between glyphs) or if spacing between characters appears incorrect, try adjusting [member character_margin]."},{"name":"character_ranges","type":"PackedStringArray","description":"The character ranges to import from the font image. This is an array that maps each position on the image (in tile coordinates, not pixels). The font atlas is traversed from left to right and top to bottom. Characters can be specified with decimal numbers (127), hexadecimal numbers ([code]0x007f[/code], or [code]U+007f[/code]) or between single quotes ([code]'~'[/code]). Ranges can be specified with a hyphen between characters.\n\t\t\tFor example, [code]0-127[/code] represents the full ASCII range. It can also be written as [code]0x0000-0x007f[/code] (or [code]U+0000-U+007f[/code]). As another example, [code]' '-'~'[/code] is equivalent to [code]32-127[/code] and represents the range of printable (visible) ASCII characters.\n\t\t\tFor any range, the character advance and offset can be customized by appending three space-separated integer values (additional advance, x offset, y offset) to the end. For example [code]'a'-'b' 4 5 2[/code] sets the advance to [code]char_width + 4[/code] and offset to [code]Vector2(5, 2)[/code] for both `a` and `b` characters.\n\t\t\tMake sure [member character_ranges] doesn't exceed the number of [member columns] * [member rows] defined. Otherwise, the font will fail to import."},{"name":"columns","type":"int","description":"Number of columns in the font image. See also [member rows]."},{"name":"compress","type":"bool","description":"If [code]true[/code], uses lossless compression for the resulting font."},{"name":"descent","type":"int","description":"Font descent (number of pixels below the baseline). If set to [code]0[/code], half of the character height is used."},{"name":"fallbacks","type":"Array","description":"List of font fallbacks to use if a glyph isn't found in this bitmap font. Fonts at the beginning of the array are attempted first."},{"name":"image_margin","type":"Rect2i","description":"Margin to cut on the sides of the entire image. This can be used to cut parts of the image that contain attribution information or similar."},{"name":"kerning_pairs","type":"PackedStringArray","description":"Kerning pairs for the font. Kerning pair adjust the spacing between two characters.\n\t\t\tEach string consist of three space separated values: \"from\" string, \"to\" string and integer offset. Each combination form the two string for a kerning pair, e.g, [code]ab cd -3[/code] will create kerning pairs [code]ac[/code], [code]ad[/code], [code]bc[/code], and [code]bd[/code] with offset [code]-3[/code]. [code]\\uXXXX[/code] escape sequences can be used to add Unicode characters."},{"name":"rows","type":"int","description":"Number of rows in the font image. See also [member columns]."},{"name":"scaling_mode","type":"int","description":"Font scaling mode."}],"methods":[],"signals":[]},"ResourceImporterLayeredTexture":{"name":"ResourceImporterLayeredTexture","description":"Imports a 3-dimensional texture (), a , a  or a .","inherits":"ResourceImporter","properties":[{"name":"compress/channel_pack","type":"int","description":"Controls how color channels should be used in the imported texture.\n\t\t\t[b]sRGB Friendly:[/b], prevents the RG color format from being used, as it does not support sRGB color.\n\t\t\t[b]Optimized:[/b], allows the RG color format to be used if the texture does not use the blue channel. This reduces memory usage if the texture's blue channel can be discarded (all pixels must have a blue value of [code]0[/code]).\n\t\t\t[b]Normal Map (RG Channels):[/b] This forces all layers from the texture to be imported with the RG color format, with only the red and green channels preserved. RGTC (Red-Green Texture Compression) compression is able to preserve its detail much better, while using the same amount of memory as a standard RGBA VRAM-compressed texture. This only has an effect on textures with the VRAM Compressed or Basis Universal compression modes. This mode is only available in layered textures ([Cubemap], [CubemapArray], [Texture2DArray] and [Texture3D])."},{"name":"compress/hdr_compression","type":"int","description":"Controls how VRAM compression should be performed for HDR images.\n\t\t\t[b]Disabled:[/b] Never use VRAM compression for HDR textures, regardless of whether they're opaque or transparent. Instead, the texture is converted to RGBE9995 (9-bits per channel + 5-bit exponent = 32 bits per pixel) to reduce memory usage compared to a half-float or single-precision float image format.\n\t\t\t[b]Opaque Only:[/b] Only uses VRAM compression for opaque HDR textures. This is due to a limitation of HDR formats, as there is no VRAM-compressed HDR format that supports transparency at the same time.\n\t\t\t[b]Always:[/b] Force VRAM compression even for HDR textures with an alpha channel. To perform this, the alpha channel is discarded on import.\n\t\t\t[b]Note:[/b] Only effective on Radiance HDR ([code].hdr[/code]) and OpenEXR ([code].exr[/code]) images."},{"name":"compress/high_quality","type":"bool","description":"If [code]true[/code], uses BPTC compression on desktop platforms and ASTC compression on mobile platforms. When using BPTC, BC7 is used for SDR textures and BC6H is used for HDR textures.\n\t\t\tIf [code]false[/code], uses the faster but lower-quality S3TC compression on desktop platforms and ETC2 on mobile/web platforms. When using S3TC, DXT1 (BC1) is used for opaque textures and DXT5 (BC3) is used for transparent or normal map (RGTC) textures.\n\t\t\tBPTC and ASTC support VRAM compression for HDR textures, but S3TC and ETC2 do not (see [member compress/hdr_compression])."},{"name":"compress/lossy_quality","type":"float","description":"The quality to use when using the [b]Lossy[/b] compression mode. Higher values result in better quality, at the cost of larger file sizes. Lossy quality does not affect memory usage of the imported texture, only its file size on disk."},{"name":"compress/mode","type":"int","description":"The compression mode to use. Each compression mode provides a different tradeoff:\n\t\t\t[b]Lossless[/b]: Original quality, high memory usage, high size on disk, fast import.\n\t\t\t[b]Lossy:[/b] Reduced quality, high memory usage, low size on disk, fast import.\n\t\t\t[b]VRAM Compressed:[/b] Reduced quality, low memory usage, low size on disk, slowest import. Only use for textures in 3D scenes, not for 2D elements.\n\t\t\t[b]VRAM Uncompressed:[/b] Original quality, high memory usage, highest size on disk, fastest import.\n\t\t\t[b]Basis Universal:[/b] Reduced quality, low memory usage, lowest size on disk, slow import. Only use for textures in 3D scenes, not for 2D elements.\n\t\t\tSee [url=$DOCS_URL/tutorials/assets_pipeline/importing_images.html#compress-mode]Compress mode[/url] in the manual for more details."},{"name":"mipmaps/generate","type":"bool","description":"If [code]true[/code], smaller versions of the texture are generated on import. For example, a 64×64 texture will generate 6 mipmaps (32×32, 16×16, 8×8, 4×4, 2×2, 1×1). This has several benefits:\n\t\t\t- Textures will not become grainy in the distance (in 3D), or if scaled down due to [Camera2D] zoom or [CanvasItem] scale (in 2D).\n\t\t\t- Performance will improve if the texture is displayed in the distance, since sampling smaller versions of the original texture is faster and requires less memory bandwidth.\n\t\t\tThe downside of mipmaps is that they increase memory usage by roughly 33% (for [Texture2DArray], [Cubemap] and [CubemapArray]) or 14% (for [Texture3D]).\n\t\t\tIt's recommended to enable mipmaps in 3D. However, in 2D, this should only be enabled if your project visibly benefits from having mipmaps enabled. If the camera never zooms out significantly, there won't be a benefit to enabling mipmaps but memory usage will increase."},{"name":"mipmaps/limit","type":"int","description":"Unimplemented. This currently has no effect when changed."},{"name":"slices/arrangement","type":"int","description":"Controls how the cubemap's texture is internally laid out. When using high-resolution cubemaps, [b]2×3[/b] and [b]3×2[/b] are less prone to exceeding hardware texture size limits compared to [b]1×6[/b] and [b]6×1[/b]."}],"methods":[],"signals":[]},"ResourceImporterOBJ":{"name":"ResourceImporterOBJ","description":"Imports an OBJ 3D model as an independent  or scene.","inherits":"ResourceImporter","properties":[{"name":"force_disable_mesh_compression","type":"bool","description":"If [code]true[/code], mesh compression will not be used. Consider enabling if you notice blocky artifacts in your mesh normals or UVs, or if you have meshes that are larger than a few thousand meters in each direction."},{"name":"generate_lightmap_uv2","type":"bool","description":"If [code]true[/code], generates UV2 on import for [LightmapGI] baking."},{"name":"generate_lightmap_uv2_texel_size","type":"float","description":"Controls the size of each texel on the baked lightmap. A smaller value results in more precise lightmaps, at the cost of larger lightmap sizes and longer bake times.\n\t\t\t[b]Note:[/b] Only effective if [member generate_lightmap_uv2] is [code]true[/code]."},{"name":"generate_lods","type":"bool","description":"If [code]true[/code], generates lower detail variants of the mesh which will be displayed in the distance to improve rendering performance. Not all meshes benefit from LOD, especially if they are never rendered from far away. Disabling this can reduce output file size and speed up importing. See [url=$DOCS_URL/tutorials/3d/mesh_lod.html#doc-mesh-lod]Mesh level of detail (LOD)[/url] for more information."},{"name":"generate_shadow_mesh","type":"bool","description":"If [code]true[/code], enables the generation of shadow meshes on import. This optimizes shadow rendering without reducing quality by welding vertices together when possible. This in turn reduces the memory bandwidth required to render shadows. Shadow mesh generation currently doesn't support using a lower detail level than the source mesh (but shadow rendering will make use of LODs when relevant)."},{"name":"generate_tangents","type":"bool","description":"If [code]true[/code], generate vertex tangents using [url=http://www.mikktspace.com/]Mikktspace[/url] if the source mesh doesn't have tangent data. When possible, it's recommended to let the 3D modeling software generate tangents on export instead on relying on this option. Tangents are required for correct display of normal and height maps, along with any material/shader features that require tangents.\n\t\t\tIf you don't need material features that require tangents, disabling this can reduce output file size and speed up importing if the source 3D file doesn't contain tangents."},{"name":"offset_mesh","type":"Vector3","description":"Offsets the mesh's data by the specified value. This can be used to work around misaligned meshes without having to modify the source file."},{"name":"scale_mesh","type":"Vector3","description":"Scales the mesh's data by the specified value. This can be used to work around misscaled meshes without having to modify the source file."}],"methods":[],"signals":[]},"ResourceImporterScene":{"name":"ResourceImporterScene","description":"Imports a glTF, FBX, Collada or Blender 3D scene.","inherits":"ResourceImporter","properties":[{"name":"_subresources","type":"Dictionary","description":"Contains properties for the scene's subresources. This is an internal option which is not visible in the Import dock."},{"name":"animation/fps","type":"float","description":"The number of frames per second to use for baking animation curves to a series of points with linear interpolation. It's recommended to configure this value to match the value you're using as a baseline in your 3D modeling software. Higher values result in more precise animation with fast movement changes, at the cost of higher file sizes and memory usage. Thanks to interpolation, there is usually not much benefit in going above 30 FPS (as the animation will still appear smooth at higher rendering framerates)."},{"name":"animation/import","type":"bool","description":"If [code]true[/code], import animations from the 3D scene."},{"name":"animation/import_rest_as_RESET","type":"bool","description":"If [code]true[/code], adds an [Animation] named [code]RESET[/code], containing the [method Skeleton3D.get_bone_rest] from [Skeleton3D] nodes. This can be useful to extract an animation in the reference pose."},{"name":"animation/remove_immutable_tracks","type":"bool","description":"If [code]true[/code], remove animation tracks that only contain default values. This can reduce output file size and memory usage with certain 3D scenes, depending on the contents of their animation tracks."},{"name":"animation/trimming","type":"bool","description":"If [code]true[/code], trim the beginning and end of animations if there are no keyframe changes. This can reduce output file size and memory usage with certain 3D scenes, depending on the contents of their animation tracks."},{"name":"import_script/path","type":"String","description":"Path to an import script, which can run code after the import process has completed for custom processing. See [url=$DOCS_URL/tutorials/assets_pipeline/importing_3d_scenes/import_configuration.html#using-import-scripts-for-automation]Using import scripts for automation[/url] for more information."},{"name":"meshes/create_shadow_meshes","type":"bool","description":"If [code]true[/code], enables the generation of shadow meshes on import. This optimizes shadow rendering without reducing quality by welding vertices together when possible. This in turn reduces the memory bandwidth required to render shadows. Shadow mesh generation currently doesn't support using a lower detail level than the source mesh (but shadow rendering will make use of LODs when relevant)."},{"name":"meshes/ensure_tangents","type":"bool","description":"If [code]true[/code], generate vertex tangents using [url=http://www.mikktspace.com/]Mikktspace[/url] if the input meshes don't have tangent data. When possible, it's recommended to let the 3D modeling software generate tangents on export instead on relying on this option. Tangents are required for correct display of normal and height maps, along with any material/shader features that require tangents.\n\t\t\tIf you don't need material features that require tangents, disabling this can reduce output file size and speed up importing if the source 3D file doesn't contain tangents."},{"name":"meshes/force_disable_compression","type":"bool","description":"If [code]true[/code], mesh compression will not be used. Consider enabling if you notice blocky artifacts in your mesh normals or UVs, or if you have meshes that are larger than a few thousand meters in each direction."},{"name":"meshes/generate_lods","type":"bool","description":"If [code]true[/code], generates lower detail variants of the mesh which will be displayed in the distance to improve rendering performance. Not all meshes benefit from LOD, especially if they are never rendered from far away. Disabling this can reduce output file size and speed up importing. See [url=$DOCS_URL/tutorials/3d/mesh_lod.html#doc-mesh-lod]Mesh level of detail (LOD)[/url] for more information."},{"name":"meshes/light_baking","type":"int","description":"Configures the meshes' [member GeometryInstance3D.gi_mode] in the 3D scene. If set to [b]Static Lightmaps[/b], sets the meshes' GI mode to Static and generates UV2 on import for [LightmapGI] baking."},{"name":"meshes/lightmap_texel_size","type":"float","description":"Controls the size of each texel on the baked lightmap. A smaller value results in more precise lightmaps, at the cost of larger lightmap sizes and longer bake times.\n\t\t\t[b]Note:[/b] Only effective if [member meshes/light_baking] is set to [b]Static Lightmaps[/b]."},{"name":"nodes/apply_root_scale","type":"bool","description":"If [code]true[/code], [member nodes/root_scale] will be applied to the descendant nodes, meshes, animations, bones, etc. This means that if you add a child node later on within the imported scene, it won't be scaled. If [code]false[/code], [member nodes/root_scale] will multiply the scale of the root node instead."},{"name":"nodes/import_as_skeleton_bones","type":"bool","description":"Treat all nodes in the imported scene as if they are bones within a single [Skeleton3D]. Can be used to guarantee that imported animations target skeleton bones rather than nodes. May also be used to assign the [code]\"Root\"[/code] bone in a [BoneMap]. See [url=$DOCS_URL/tutorials/assets_pipeline/retargeting_3d_skeletons.html]Retargeting 3D Skeletons[/url] for more information."},{"name":"nodes/root_name","type":"String","description":"Override for the root node name. If empty, the root node will use what the scene specifies, or the file name if the scene does not specify a root name."},{"name":"nodes/root_scale","type":"float","description":"The uniform scale to use for the scene root. The default value of [code]1.0[/code] will not perform any rescaling. See [member nodes/apply_root_scale] for details of how this scale is applied."},{"name":"nodes/root_type","type":"String","description":"Override for the root node type. If empty, the root node will use what the scene specifies, or [Node3D] if the scene does not specify a root type. Using a node type that inherits from [Node3D] is recommended. Otherwise, you'll lose the ability to position the node directly in the 3D editor."},{"name":"nodes/use_node_type_suffixes","type":"bool","description":"If [code]true[/code], use suffixes in the node names to determine the node type, such as [code]-col[/code] for collision shapes. Disabling this makes editor-imported files more similar to the original files, and more similar to importing files at runtime. See [url=$DOCS_URL/tutorials/assets_pipeline/importing_3d_scenes/node_type_customization.html]Node type customization using name suffixes[/url] for more information."},{"name":"skins/use_named_skins","type":"bool","description":"If checked, use named [Skin]s for animation. The [MeshInstance3D] node contains 3 properties of relevance here: a skeleton [NodePath] pointing to the [Skeleton3D] node (usually [code]..[/code]), a mesh, and a skin:\n\t\t\t- The [Skeleton3D] node contains a list of bones with names, their pose and rest, a name and a parent bone.\n\t\t\t- The mesh is all of the raw vertex data needed to display a mesh. In terms of the mesh, it knows how vertices are weight-painted and uses some internal numbering often imported from 3D modeling software.\n\t\t\t- The skin contains the information necessary to bind this mesh onto this Skeleton3D. For every one of the internal bone IDs chosen by the 3D modeling software, it contains two things. Firstly, a matrix known as the Bind Pose Matrix, Inverse Bind Matrix, or IBM for short. Secondly, the [Skin] contains each bone's name (if [member skins/use_named_skins] is [code]true[/code]), or the bone's index within the [Skeleton3D] list (if [member skins/use_named_skins] is [code]false[/code]).\n\t\t\tTogether, this information is enough to tell Godot how to use the bone poses in the [Skeleton3D] node to render the mesh from each [MeshInstance3D]. Note that each [MeshInstance3D] may share binds, as is common in models exported from Blender, or each [MeshInstance3D] may use a separate [Skin] object, as is common in models exported from other tools such as Maya."}],"methods":[],"signals":[]},"ResourceImporterShaderFile":{"name":"ResourceImporterShaderFile","description":"Imports native GLSL shaders (not Godot shaders) as a .","inherits":"ResourceImporter","properties":[],"methods":[],"signals":[]},"ResourceImporterTexture":{"name":"ResourceImporterTexture","description":"Imports an image for use in 2D or 3D rendering.","inherits":"ResourceImporter","properties":[{"name":"compress/channel_pack","type":"int","description":"Controls how color channels should be used in the imported texture.\n\t\t\t[b]sRGB Friendly:[/b] Prevents the RG color format from being used, as it does not support sRGB color.\n\t\t\t[b]Optimized:[/b] Allows the RG color format to be used if the texture does not use the blue channel. This reduces memory usage if the texture's blue channel can be discarded (all pixels must have a blue value of [code]0[/code])."},{"name":"compress/hdr_compression","type":"int","description":"Controls how VRAM compression should be performed for HDR images.\n\t\t\t[b]Disabled:[/b] Never use VRAM compression for HDR textures, regardless of whether they're opaque or transparent. Instead, the texture is converted to RGBE9995 (9-bits per channel + 5-bit exponent = 32 bits per pixel) to reduce memory usage compared to a half-float or single-precision float image format.\n\t\t\t[b]Opaque Only:[/b] Only uses VRAM compression for opaque HDR textures. This is due to a limitation of HDR formats, as there is no VRAM-compressed HDR format that supports transparency at the same time.\n\t\t\t[b]Always:[/b] Force VRAM compression even for HDR textures with an alpha channel. To perform this, the alpha channel is discarded on import.\n\t\t\t[b]Note:[/b] Only effective on Radiance HDR ([code].hdr[/code]) and OpenEXR ([code].exr[/code]) images."},{"name":"compress/high_quality","type":"bool","description":"If [code]true[/code], uses BPTC compression on desktop platforms and ASTC compression on mobile platforms. When using BPTC, BC7 is used for SDR textures and BC6H is used for HDR textures.\n\t\t\tIf [code]false[/code], uses the faster but lower-quality S3TC compression on desktop platforms and ETC2 on mobile/web platforms. When using S3TC, DXT1 (BC1) is used for opaque textures and DXT5 (BC3) is used for transparent or normal map (RGTC) textures.\n\t\t\tBPTC and ASTC support VRAM compression for HDR textures, but S3TC and ETC2 do not (see [member compress/hdr_compression])."},{"name":"compress/lossy_quality","type":"float","description":"The quality to use when using the [b]Lossy[/b] compression mode. Higher values result in better quality, at the cost of larger file sizes. Lossy quality does not affect memory usage of the imported texture, only its file size on disk."},{"name":"compress/mode","type":"int","description":"The compression mode to use. Each compression mode provides a different tradeoff:\n\t\t\t[b]Lossless[/b]: Original quality, high memory usage, high size on disk, fast import.\n\t\t\t[b]Lossy:[/b] Reduced quality, high memory usage, low size on disk, fast import.\n\t\t\t[b]VRAM Compressed:[/b] Reduced quality, low memory usage, low size on disk, slowest import. Only use for textures in 3D scenes, not for 2D elements.\n\t\t\t[b]VRAM Uncompressed:[/b] Original quality, high memory usage, highest size on disk, fastest import.\n\t\t\t[b]Basis Universal:[/b] Reduced quality, low memory usage, lowest size on disk, slow import. Only use for textures in 3D scenes, not for 2D elements.\n\t\t\tSee [url=$DOCS_URL/tutorials/assets_pipeline/importing_images.html#compress-mode]Compress mode[/url] in the manual for more details."},{"name":"compress/normal_map","type":"int","description":"When using a texture as normal map, only the red and green channels are required. Given regular texture compression algorithms produce artifacts that don't look that nice in normal maps, the RGTC compression format is the best fit for this data. Forcing this option to Enable will make Godot import the image as RGTC compressed. By default, it's set to Detect. This means that if the texture is ever detected to be used as a normal map, it will be changed to Enable and reimported automatically.\n\t\t\tNote that RGTC compression affects the resulting normal map image. You will have to adjust custom shaders that use the normal map's blue channel to take this into account. Built-in material shaders already ignore the blue channel in a normal map (regardless of the actual normal map's contents)."},{"name":"detect_3d/compress_to","type":"int","description":"This changes the [member compress/mode] option that is used when a texture is detected as being used in 3D.\n\t\t\tChanging this import option only has an effect if a texture is detected as being used in 3D. Changing this to [b]Disabled[/b] then reimporting will not change the existing compress mode on a texture (if it's detected to be used in 3D), but choosing [b]VRAM Compressed[/b] or [b]Basis Universal[/b] will."},{"name":"editor/convert_colors_with_editor_theme","type":"bool","description":"If [code]true[/code], converts the imported image's colors to match [member EditorSettings.interface/theme/icon_and_font_color]. This assumes the image uses the exact same colors as [url=$DOCS_URL/contributing/development/editor/creating_icons.html]Godot's own color palette for editor icons[/url], with the source file designed for a dark editor theme. This should be enabled for editor plugin icons and custom class icons, but should be left disabled otherwise.\n\t\t\t[b]Note:[/b] Only available for SVG images."},{"name":"editor/scale_with_editor_scale","type":"bool","description":"If [code]true[/code], scales the imported image to match [member EditorSettings.interface/editor/custom_display_scale]. This should be enabled for editor plugin icons and custom class icons, but should be left disabled otherwise.\n\t\t\t[b]Note:[/b] Only available for SVG images."},{"name":"mipmaps/generate","type":"bool","description":"If [code]true[/code], smaller versions of the texture are generated on import. For example, a 64×64 texture will generate 6 mipmaps (32×32, 16×16, 8×8, 4×4, 2×2, 1×1). This has several benefits:\n\t\t\t- Textures will not become grainy in the distance (in 3D), or if scaled down due to [Camera2D] zoom or [CanvasItem] scale (in 2D).\n\t\t\t- Performance will improve if the texture is displayed in the distance, since sampling smaller versions of the original texture is faster and requires less memory bandwidth.\n\t\t\tThe downside of mipmaps is that they increase memory usage by roughly 33%.\n\t\t\tIt's recommended to enable mipmaps in 3D. However, in 2D, this should only be enabled if your project visibly benefits from having mipmaps enabled. If the camera never zooms out significantly, there won't be a benefit to enabling mipmaps but memory usage will increase."},{"name":"mipmaps/limit","type":"int","description":"Unimplemented. This currently has no effect when changed."},{"name":"process/fix_alpha_border","type":"bool","description":"If [code]true[/code], puts pixels of the same surrounding color in transition from transparent to opaque areas. For textures displayed with bilinear filtering, this helps to reduce the outline effect when exporting images from an image editor.\n\t\t\tIt's recommended to leave this enabled (as it is by default), unless this causes issues for a particular image."},{"name":"process/hdr_as_srgb","type":"bool","description":"Some HDR images you can find online may be broken and contain sRGB color data (instead of linear color data). It is advised not to use those files. If you absolutely have to, enabling [member process/hdr_as_srgb] will make them look correct.\n\t\t\t[b]Warning:[/b] Enabling [member process/hdr_as_srgb] on well-formatted HDR images will cause the resulting image to look too dark, so leave this on [code]false[/code] if unsure."},{"name":"process/hdr_clamp_exposure","type":"bool","description":"If [code]true[/code], clamps exposure in the imported high dynamic range images using a smart clamping formula (without introducing [i]visible[/i] clipping).\n\t\t\tSome HDR panorama images you can find online may contain extremely bright pixels, due to being taken from real life sources without any clipping.\n\t\t\tWhile these HDR panorama images are accurate to real life, this can cause the radiance map generated by Godot to contain sparkles when used as a background sky. This can be seen in material reflections (even on rough materials in extreme cases). Enabling [member process/hdr_clamp_exposure] can resolve this."},{"name":"process/normal_map_invert_y","type":"bool","description":"If [code]true[/code], convert the normal map from Y- (DirectX-style) to Y+ (OpenGL-style) by inverting its green color channel. This is the normal map convention expected by Godot.\n\t\t\tMore information about normal maps (including a coordinate order table for popular engines) can be found [url=http://wiki.polycount.com/wiki/Normal_Map_Technical_Details]here[/url]."},{"name":"process/premult_alpha","type":"bool","description":"An alternative to fixing darkened borders with [member process/fix_alpha_border] is to use premultiplied alpha. By enabling this option, the texture will be converted to this format. A premultiplied alpha texture requires specific materials to be displayed correctly:\n\t\t\t- In 2D, a [CanvasItemMaterial] will need to be created and configured to use the [constant CanvasItemMaterial.BLEND_MODE_PREMULT_ALPHA] blend mode on [CanvasItem]s that use this texture. In custom [code]@canvas_item[/code] shaders, [code]render_mode blend_premul_alpha;[/code] should be used.\n\t\t\t- In 3D, a [BaseMaterial3D] will need to be created and configured to use the [constant BaseMaterial3D.BLEND_MODE_PREMULT_ALPHA] blend mode on materials that use this texture. In custom [code]spatial[/code] shaders, [code]render_mode blend_premul_alpha;[/code] should be used."},{"name":"process/size_limit","type":"int","description":"If set to a value greater than [code]0[/code], the size of the texture is limited on import to a value smaller than or equal to the value specified here. For non-square textures, the size limit affects the longer dimension, with the shorter dimension scaled to preserve aspect ratio. Resizing is performed using cubic interpolation.\n\t\t\tThis can be used to reduce memory usage without affecting the source images, or avoid issues with textures not displaying on mobile/web platforms (as these usually can't display textures larger than 4096×4096).\n\t\t\t[b]Note:[/b] Even if this is set to [code]0[/code], import size is limited to the following dimensions for technical reasons. Depending on [member compress/mode], textures will be downsampled on import if necessary:\n\t\t\t- [b]Lossy:[/b] 16383 pixels width or height, whichever is larger;\n\t\t\t- [b]Basis Universal:[/b] 16384 pixels width or height, whichever is larger;\n\t\t\t- [b]All other modes:[/b] 32768 pixels width or height, whichever is larger."},{"name":"roughness/mode","type":"int","description":"The color channel to consider as a roughness map in this texture. Only effective if [member roughness/src_normal] is not empty."},{"name":"roughness/src_normal","type":"String","description":"The path to the texture to consider as a normal map for roughness filtering on import. Specifying this can help decrease specular aliasing slightly in 3D.\n\t\t\tRoughness filtering on import is only used in 3D rendering, not 2D."},{"name":"svg/scale","type":"float","description":"The scale the SVG should be rendered at, with [code]1.0[/code] being the original design size. Higher values result in a larger image. Note that unlike font oversampling, this affects the size the SVG is rendered at in 2D. See also [member editor/scale_with_editor_scale].\n\t\t\t[b]Note:[/b] Only available for SVG images."}],"methods":[],"signals":[]},"ResourceImporterTextureAtlas":{"name":"ResourceImporterTextureAtlas","description":"Imports a collection of textures from a PNG image into an optimized  for 2D rendering.","inherits":"ResourceImporter","properties":[{"name":"atlas_file","type":"String","description":"Path to the atlas spritesheet. This [i]must[/i] be set to valid path to a PNG image. Otherwise, the atlas will fail to import."},{"name":"crop_to_region","type":"bool","description":"If [code]true[/code], discards empty areas from the atlas. This only affects final sprite positioning, not storage. See also [member trim_alpha_border_from_region].\n\t\t\t[b]Note:[/b] Only effective if [member import_mode] is [b]Region[/b]."},{"name":"import_mode","type":"int","description":"[b]Region:[/b] Imports the atlas in an [AtlasTexture] resource, which is rendered as a rectangle. This is fast to render, but transparent areas still have to be rendered if they can't be trimmed effectively by [member trim_alpha_border_from_region]. This can reduce performance when rendering large sprites on screen.\n\t\t\t[b]Mesh:[/b] Imports the atlas as an [ArrayMesh] resource, keeping the original bitmap visible (but rendered as a polygon). This can be used to reduce fill rate when rendering large transparent sprites, at the cost of slower rendering if there are little to no transparent areas in the sprite."},{"name":"trim_alpha_border_from_region","type":"bool","description":"If [code]true[/code], trims the region to exclude fully transparent pixels using a clipping rectangle (which is never rotated). This can be used to save memory. See also [member crop_to_region].\n\t\t\t[b]Note:[/b] Only effective if [member import_mode] is [b]Region[/b]."}],"methods":[],"signals":[]},"ResourceImporterWAV":{"name":"ResourceImporterWAV","description":"Imports a WAV audio file for playback.","inherits":"ResourceImporter","properties":[{"name":"compress/mode","type":"int","description":"The compression mode to use on import.\n\t\t\t- [b]PCM (Uncompressed):[/b] Imports audio data without any form of compression, preserving the highest possible quality. It has the lowest CPU cost, but the highest memory usage.\n\t\t\t- [b]IMA ADPCM:[/b] Applies fast, lossy compression during import, noticeably decreasing the quality, but with low CPU cost and memory usage. Does not support seeking and only Forward loop mode is supported.\n\t\t\t- [b][url=https://qoaformat.org/]Quite OK Audio[/url]:[/b] Also applies lossy compression on import, having a slightly higher CPU cost compared to IMA ADPCM, but much higher quality and the lowest memory usage."},{"name":"edit/loop_begin","type":"int","description":"The begin loop point to use when [member edit/loop_mode] is [b]Forward[/b], [b]Ping-Pong[/b], or [b]Backward[/b]. This is set in samples after the beginning of the audio file."},{"name":"edit/loop_end","type":"int","description":"The end loop point to use when [member edit/loop_mode] is [b]Forward[/b], [b]Ping-Pong[/b], or [b]Backward[/b]. This is set in samples after the beginning of the audio file. A value of [code]-1[/code] uses the end of the audio file as the end loop point."},{"name":"edit/loop_mode","type":"int","description":"Controls how audio should loop.\n\t\t\t- [b]Detect From WAV:[/b] Uses loop information from the WAV metadata.\n\t\t\t- [b]Disabled:[/b] Don't loop audio, even if the metadata indicates the file playback should loop.\n\t\t\t- [b]Forward:[/b] Standard audio looping. Plays the audio forward from the beginning to [member edit/loop_end], then returns to [member edit/loop_begin] and repeats.\n\t\t\t- [b]Ping-Pong:[/b] Plays the audio forward until [member edit/loop_end], then backwards to [member edit/loop_begin], repeating this cycle.\n\t\t\t- [b]Backward:[/b] Plays the audio backwards from [member edit/loop_end] to [member edit/loop_begin], then repeats.\n\t\t\t[b]Note:[/b] In [AudioStreamPlayer], the [signal AudioStreamPlayer.finished] signal won't be emitted for looping audio when it reaches the end of the audio file, as the audio will keep playing indefinitely."},{"name":"edit/normalize","type":"bool","description":"If [code]true[/code], normalize the audio volume so that its peak volume is equal to 0 dB. When enabled, normalization will make audio sound louder depending on its original peak volume."},{"name":"edit/trim","type":"bool","description":"If [code]true[/code], automatically trim the beginning and end of the audio if it's lower than -50 dB after normalization (see [member edit/normalize]). This prevents having files with silence at the beginning or end, which increases their size unnecessarily and adds latency to the moment they are played back. A fade-in/fade-out period of 500 samples is also used during trimming to avoid audible pops."},{"name":"force/8_bit","type":"bool","description":"If [code]true[/code], forces the imported audio to use 8-bit quantization if the source file is 16-bit or higher.\n\t\t\tEnabling this is generally not recommended, as 8-bit quantization decreases audio quality significantly. If you need smaller file sizes, consider using Ogg Vorbis or MP3 audio instead."},{"name":"force/max_rate","type":"bool","description":"If set to a value greater than [code]0[/code], forces the audio's sample rate to be reduced to a value lower than or equal to the value specified in [member force/max_rate_hz].\n\t\t\tThis can decrease file size noticeably on certain sounds, without impacting quality depending on the actual sound's contents. See [url=$DOCS_URL/tutorials/assets_pipeline/importing_audio_samples.html#doc-importing-audio-samples-best-practices]Best practices[/url] for more information."},{"name":"force/max_rate_hz","type":"float","description":"The frequency to limit the imported audio sample to (in Hz). Only effective if [member force/max_rate] is [code]true[/code]."},{"name":"force/mono","type":"bool","description":"If [code]true[/code], forces the imported audio to be mono if the source file is stereo. This decreases the file size by 50% by merging the two channels into one."}],"methods":[],"signals":[]},"ResourceLoader":{"name":"ResourceLoader","description":"A singleton for loading resource files.","inherits":"Object","properties":[],"methods":[{"name":"add_resource_format_loader","signature":"add_resource_format_loader(format_loader: ResourceFormatLoader, at_front: bool) -> void","description":"Registers a new . The ResourceLoader will use the ResourceFormatLoader as described in [method load].\n\t\t\t\tThis method is performed implicitly for ResourceFormatLoaders written in GDScript (see  for more information).","returnType":"void"},{"name":"exists","signature":"exists(path: String, type_hint: String) -> bool","description":"Returns whether a recognized resource exists for the given [param path].\n\t\t\t\tAn optional [param type_hint] can be used to further specify the  type that should be handled by the . Anything that inherits from  can be used as a type hint, for example .\n\t\t\t\tNote: If you use [method Resource.take_over_path], this method will return true for the taken path even if the resource wasn't saved (i.e. exists only in resource cache).","returnType":"bool"},{"name":"get_cached_ref","signature":"get_cached_ref(path: String) -> Resource","description":"Returns the cached resource reference for the given [param path].\n\t\t\t\tNote: If the resource is not cached, the returned  will be invalid.","returnType":"Resource"},{"name":"get_dependencies","signature":"get_dependencies(path: String) -> PackedStringArray","description":"Returns the dependencies for the resource at the given [param path].\n\t\t\t\tNote: The dependencies are returned with slices separated by ::. You can use [method String.get_slice] to get their components.\n\t\t\t\t\n\t\t\t\tfor dependency in ResourceLoader.get_dependencies(path):\n\t\t\t\t    print(dependency.get_slice(\"::\", 0)) # Prints the UID.\n\t\t\t\t    print(dependency.get_slice(\"::\", 2)) # Prints the path.\n\t\t\t\t","returnType":"PackedStringArray"},{"name":"get_recognized_extensions_for_type","signature":"get_recognized_extensions_for_type(type: String) -> PackedStringArray","description":"Returns the list of recognized extensions for a resource type.","returnType":"PackedStringArray"},{"name":"get_resource_uid","signature":"get_resource_uid(path: String) -> int","description":"Returns the ID associated with a given resource path, or -1 when no such ID exists.","returnType":"int"},{"name":"has_cached","signature":"has_cached(path: String) -> bool","description":"Returns whether a cached resource is available for the given [param path].\n\t\t\t\tOnce a resource has been loaded by the engine, it is cached in memory for faster access, and future calls to the [method load] method will use the cached version. The cached resource can be overridden by using [method Resource.take_over_path] on a new resource for that same path.","returnType":"bool"},{"name":"list_directory","signature":"list_directory(directory_path: String) -> PackedStringArray","description":"Lists a directory (as example: \"res://assets/enemies\"), returning all resources contained within. The resource files are the original file names as visible in the editor before exporting.","returnType":"PackedStringArray"},{"name":"load","signature":"load(path: String, type_hint: String, cache_mode: int) -> Resource","description":"Loads a resource at the given [param path], caching the result for further access.\n\t\t\t\tThe registered s are queried sequentially to find the first one which can handle the file's extension, and then attempt loading. If loading fails, the remaining ResourceFormatLoaders are also attempted.\n\t\t\t\tAn optional [param type_hint] can be used to further specify the  type that should be handled by the . Anything that inherits from  can be used as a type hint, for example .\n\t\t\t\tThe [param cache_mode] property defines whether and how the cache should be used or updated when loading the resource. See [enum CacheMode] for details.\n\t\t\t\tReturns an empty resource if no  could handle the file, and prints an error if no file is found at the specified path.\n\t\t\t\tGDScript has a simplified [method @GDScript.load] built-in method which can be used in most situations, leaving the use of  for more advanced scenarios.\n\t\t\t\tNote: If [member ProjectSettings.editor/export/convert_text_resources_to_binary] is true, [method @GDScript.load] will not be able to read converted files in an exported project. If you rely on run-time loading of files present within the PCK, set [member ProjectSettings.editor/export/convert_text_resources_to_binary] to false.\n\t\t\t\tNote: Relative paths will be prefixed with \"res://\" before loading, to avoid unexpected results make sure your paths are absolute.","returnType":"Resource"},{"name":"load_threaded_get","signature":"load_threaded_get(path: String) -> Resource","description":"Returns the resource loaded by [method load_threaded_request].\n\t\t\t\tIf this is called before the loading thread is done (i.e. [method load_threaded_get_status] is not [constant THREAD_LOAD_LOADED]), the calling thread will be blocked until the resource has finished loading. However, it's recommended to use [method load_threaded_get_status] to known when the load has actually completed.","returnType":"Resource"},{"name":"load_threaded_get_status","signature":"load_threaded_get_status(path: String, progress: Array) -> int","description":"Returns the status of a threaded loading operation started with [method load_threaded_request] for the resource at [param path]. See [enum ThreadLoadStatus] for possible return values.\n\t\t\t\tAn array variable can optionally be passed via [param progress], and will return a one-element array containing the ratio of completion of the threaded loading (between 0.0 and 1.0).\n\t\t\t\tNote: The recommended way of using this method is to call it during different frames (e.g., in [method Node._process], instead of a loop).","returnType":"int"},{"name":"load_threaded_request","signature":"load_threaded_request(path: String, type_hint: String, use_sub_threads: bool, cache_mode: int) -> int","description":"Loads the resource using threads. If [param use_sub_threads] is true, multiple threads will be used to load the resource, which makes loading faster, but may affect the main thread (and thus cause game slowdowns).\n\t\t\t\tThe [param cache_mode] property defines whether and how the cache should be used or updated when loading the resource. See [enum CacheMode] for details.","returnType":"int"},{"name":"remove_resource_format_loader","signature":"remove_resource_format_loader(format_loader: ResourceFormatLoader) -> void","description":"Unregisters the given .","returnType":"void"},{"name":"set_abort_on_missing_resources","signature":"set_abort_on_missing_resources(abort: bool) -> void","description":"Changes the behavior on missing sub-resources. The default behavior is to abort loading.","returnType":"void"}],"signals":[]},"ResourcePreloader":{"name":"ResourcePreloader","description":"A node used to preload sub-resources inside a scene.","inherits":"Node","properties":[],"methods":[{"name":"add_resource","signature":"add_resource(name: StringName, resource: Resource) -> void","description":"Adds a resource to the preloader with the given [param name]. If a resource with the given [param name] already exists, the new resource will be renamed to \"[param name] N\" where N is an incrementing number starting from 2.","returnType":"void"},{"name":"get_resource","signature":"get_resource(name: StringName) -> Resource","description":"Returns the resource associated to [param name].","returnType":"Resource"},{"name":"get_resource_list","signature":"get_resource_list() -> PackedStringArray","description":"Returns the list of resources inside the preloader.","returnType":"PackedStringArray"},{"name":"has_resource","signature":"has_resource(name: StringName) -> bool","description":"Returns true if the preloader contains a resource associated to [param name].","returnType":"bool"},{"name":"remove_resource","signature":"remove_resource(name: StringName) -> void","description":"Removes the resource associated to [param name] from the preloader.","returnType":"void"},{"name":"rename_resource","signature":"rename_resource(name: StringName, newname: StringName) -> void","description":"Renames a resource inside the preloader from [param name] to [param newname].","returnType":"void"}],"signals":[]},"ResourceSaver":{"name":"ResourceSaver","description":"A singleton for saving s to the filesystem.","inherits":"Object","properties":[],"methods":[{"name":"add_resource_format_saver","signature":"add_resource_format_saver(format_saver: ResourceFormatSaver, at_front: bool) -> void","description":"Registers a new . The ResourceSaver will use the ResourceFormatSaver as described in [method save].\n\t\t\t\tThis method is performed implicitly for ResourceFormatSavers written in GDScript (see  for more information).","returnType":"void"},{"name":"get_recognized_extensions","signature":"get_recognized_extensions(type: Resource) -> PackedStringArray","description":"Returns the list of extensions available for saving a resource of a given type.","returnType":"PackedStringArray"},{"name":"get_resource_id_for_path","signature":"get_resource_id_for_path(path: String, generate: bool) -> int","description":"Returns the resource ID for the given path. If [param generate] is true, a new resource ID will be generated if one for the path is not found. If [param generate] is false and the path is not found, [constant ResourceUID.INVALID_ID] is returned.","returnType":"int"},{"name":"remove_resource_format_saver","signature":"remove_resource_format_saver(format_saver: ResourceFormatSaver) -> void","description":"Unregisters the given .","returnType":"void"},{"name":"save","signature":"save(resource: Resource, path: String, flags: int) -> int","description":"Saves a resource to disk to the given path, using a  that recognizes the resource object. If [param path] is empty,  will try to use [member Resource.resource_path].\n\t\t\t\tThe [param flags] bitmask can be specified to customize the save behavior using [enum SaverFlags] flags.\n\t\t\t\tReturns [constant OK] on success.\n\t\t\t\tNote: When the project is running, any generated UID associated with the resource will not be saved as the required code is only executed in editor mode.","returnType":"int"}],"signals":[]},"ResourceUID":{"name":"ResourceUID","description":"A singleton that manages the unique identifiers of all resources within a project.","inherits":"Object","properties":[],"methods":[{"name":"add_id","signature":"add_id(id: int, path: String) -> void","description":"Adds a new UID value which is mapped to the given resource path.\n\t\t\t\tFails with an error if the UID already exists, so be sure to check [method has_id] beforehand, or use [method set_id] instead.","returnType":"void"},{"name":"create_id","signature":"create_id() -> int","description":"Generates a random resource UID which is guaranteed to be unique within the list of currently loaded UIDs.\n\t\t\t\tIn order for this UID to be registered, you must call [method add_id] or [method set_id].","returnType":"int"},{"name":"get_id_path","signature":"get_id_path(id: int) -> String","description":"Returns the path that the given UID value refers to.\n\t\t\t\tFails with an error if the UID does not exist, so be sure to check [method has_id] beforehand.","returnType":"String"},{"name":"has_id","signature":"has_id(id: int) -> bool","description":"Returns whether the given UID value is known to the cache.","returnType":"bool"},{"name":"id_to_text","signature":"id_to_text(id: int) -> String","description":"Converts the given UID to a uid:// string value.","returnType":"String"},{"name":"remove_id","signature":"remove_id(id: int) -> void","description":"Removes a loaded UID value from the cache.\n\t\t\t\tFails with an error if the UID does not exist, so be sure to check [method has_id] beforehand.","returnType":"void"},{"name":"set_id","signature":"set_id(id: int, path: String) -> void","description":"Updates the resource path of an existing UID.\n\t\t\t\tFails with an error if the UID does not exist, so be sure to check [method has_id] beforehand, or use [method add_id] instead.","returnType":"void"},{"name":"text_to_id","signature":"text_to_id(text_id: String) -> int","description":"Extracts the UID value from the given uid:// string.","returnType":"int"}],"signals":[]},"RetargetModifier3D":{"name":"RetargetModifier3D","description":"A modifier to transfer parent skeleton poses (or global poses) to child skeletons in model space with different rests.","inherits":"SkeletonModifier3D","properties":[{"name":"enable","type":"int","description":"Flags to control the process of the transform elements individually when [member use_global_pose] is disabled."},{"name":"profile","type":"SkeletonProfile","description":"[SkeletonProfile] for retargeting bones with names matching the bone list."},{"name":"use_global_pose","type":"bool","description":"If [code]false[/code], in case the target skeleton has fewer bones than the source skeleton, the source bone parent's transform will be ignored.\n\t\t\tInstead, it is possible to retarget between models with different body shapes, and position, rotation, and scale can be retargeted separately.\n\t\t\tIf [code]true[/code], retargeting is performed taking into account global pose.\n\t\t\tIn case the target skeleton has fewer bones than the source skeleton, the source bone parent's transform is taken into account. However, bone length between skeletons must match exactly, if not, the bones will be forced to expand or shrink.\n\t\t\tThis is useful for using dummy bone with length [code]0[/code] to match postures when retargeting between models with different number of bones."}],"methods":[{"name":"is_position_enabled","signature":"is_position_enabled() -> bool","description":"Returns true if [member enable] has [constant TRANSFORM_FLAG_POSITION].","returnType":"bool"},{"name":"is_rotation_enabled","signature":"is_rotation_enabled() -> bool","description":"Returns true if [member enable] has [constant TRANSFORM_FLAG_ROTATION].","returnType":"bool"},{"name":"is_scale_enabled","signature":"is_scale_enabled() -> bool","description":"Returns true if [member enable] has [constant TRANSFORM_FLAG_SCALE].","returnType":"bool"},{"name":"set_position_enabled","signature":"set_position_enabled(enabled: bool) -> void","description":"Sets [constant TRANSFORM_FLAG_POSITION] into [member enable].","returnType":"void"},{"name":"set_rotation_enabled","signature":"set_rotation_enabled(enabled: bool) -> void","description":"Sets [constant TRANSFORM_FLAG_ROTATION] into [member enable].","returnType":"void"},{"name":"set_scale_enabled","signature":"set_scale_enabled(enabled: bool) -> void","description":"Sets [constant TRANSFORM_FLAG_SCALE] into [member enable].","returnType":"void"}],"signals":[]},"RibbonTrailMesh":{"name":"RibbonTrailMesh","description":"Represents a straight ribbon-shaped  with variable width.","inherits":"PrimitiveMesh","properties":[{"name":"curve","type":"Curve","description":"Determines the size of the ribbon along its length. The size of a particular section segment is obtained by multiplying the baseline [member size] by the value of this curve at the given distance. For values smaller than [code]0[/code], the faces will be inverted. Should be a unit [Curve]."},{"name":"section_length","type":"float","description":"The length of a section of the ribbon."},{"name":"section_segments","type":"int","description":"The number of segments in a section. The [member curve] is sampled on each segment to determine its size. Higher values result in a more detailed ribbon at the cost of performance."},{"name":"sections","type":"int","description":"The total number of sections on the ribbon."},{"name":"shape","type":"int","description":"Determines the shape of the ribbon."},{"name":"size","type":"float","description":"The baseline size of the ribbon. The size of a particular section segment is obtained by multiplying this size by the value of the [member curve] at the given distance."}],"methods":[],"signals":[]},"RichTextEffect":{"name":"RichTextEffect","description":"A custom effect for a .","inherits":"Resource","properties":[],"methods":[{"name":"_process_custom_fx","signature":"_process_custom_fx(char_fx: CharFXTransform) -> bool","description":"Override this method to modify properties in [param char_fx]. The method must return true if the character could be transformed successfully. If the method returns false, it will skip transformation to avoid displaying broken text.","returnType":"bool"}],"signals":[]},"RichTextLabel":{"name":"RichTextLabel","description":"A control for displaying text that can contain different font styles, images, and basic formatting.","inherits":"Control","properties":[{"name":"autowrap_mode","type":"int","description":"If set to something other than [constant TextServer.AUTOWRAP_OFF], the text gets wrapped inside the node's bounding rectangle. To see how each mode behaves, see [enum TextServer.AutowrapMode]."},{"name":"bbcode_enabled","type":"bool","description":"If [code]true[/code], the label uses BBCode formatting.\n\t\t\t[b]Note:[/b] This only affects the contents of [member text], not the tag stack."},{"name":"context_menu_enabled","type":"bool","description":"If [code]true[/code], a right-click displays the context menu."},{"name":"custom_effects","type":"Array","description":"The currently installed custom effects. This is an array of [RichTextEffect]s.\n\t\t\tTo add a custom effect, it's more convenient to use [method install_effect]."},{"name":"deselect_on_focus_loss_enabled","type":"bool","description":"If [code]true[/code], the selected text will be deselected when focus is lost."},{"name":"drag_and_drop_selection_enabled","type":"bool","description":"If [code]true[/code], allow drag and drop of selected text."},{"name":"fit_content","type":"bool","description":"If [code]true[/code], the label's minimum size will be automatically updated to fit its content, matching the behavior of [Label]."},{"name":"hint_underlined","type":"bool","description":"If [code]true[/code], the label underlines hint tags such as [code skip-lint][hint=description]{text}[/hint][/code]."},{"name":"horizontal_alignment","type":"int","description":"Controls the text's horizontal alignment. Supports left, center, right, and fill, or justify. Set it to one of the [enum HorizontalAlignment] constants."},{"name":"justification_flags","type":"int","description":"Line fill alignment rules. See [enum TextServer.JustificationFlag] for more information."},{"name":"language","type":"String","description":"Language code used for line-breaking and text shaping algorithms, if left empty current locale is used instead."},{"name":"meta_underlined","type":"bool","description":"If [code]true[/code], the label underlines meta tags such as [code skip-lint][url]{text}[/url][/code]. These tags can call a function when clicked if [signal meta_clicked] is connected to a function."},{"name":"progress_bar_delay","type":"int","description":"The delay after which the loading progress bar is displayed, in milliseconds. Set to [code]-1[/code] to disable progress bar entirely.\n\t\t\t[b]Note:[/b] Progress bar is displayed only if [member threaded] is enabled."},{"name":"scroll_active","type":"bool","description":"If [code]true[/code], the scrollbar is visible. Setting this to [code]false[/code] does not block scrolling completely. See [method scroll_to_line]."},{"name":"scroll_following","type":"bool","description":"If [code]true[/code], the window scrolls down to display new content automatically."},{"name":"selection_enabled","type":"bool","description":"If [code]true[/code], the label allows text selection."},{"name":"shortcut_keys_enabled","type":"bool","description":"If [code]true[/code], shortcut keys for context menu items are enabled, even if the context menu is disabled."},{"name":"structured_text_bidi_override","type":"int","description":"Set BiDi algorithm override for the structured text."},{"name":"structured_text_bidi_override_options","type":"Array","description":"Set additional options for BiDi override."},{"name":"tab_size","type":"int","description":"The number of spaces associated with a single tab length. Does not affect [code]\\t[/code] in text tags, only indent tags."},{"name":"tab_stops","type":"PackedFloat32Array","description":"Aligns text to the given tab-stops."},{"name":"text","type":"String","description":"The label's text in BBCode format. Is not representative of manual modifications to the internal tag stack. Erases changes made by other methods when edited.\n\t\t\t[b]Note:[/b] If [member bbcode_enabled] is [code]true[/code], it is unadvised to use the [code]+=[/code] operator with [member text] (e.g. [code]text += \"some string\"[/code]) as it replaces the whole text and can cause slowdowns. It will also erase all BBCode that was added to stack using [code]push_*[/code] methods. Use [method append_text] for adding text instead, unless you absolutely need to close a tag that was opened in an earlier method call."},{"name":"text_direction","type":"int","description":"Base text writing direction."},{"name":"threaded","type":"bool","description":"If [code]true[/code], text processing is done in a background thread."},{"name":"vertical_alignment","type":"int","description":"Controls the text's vertical alignment. Supports top, center, bottom, and fill. Set it to one of the [enum VerticalAlignment] constants."},{"name":"visible_characters","type":"int","description":"The number of characters to display. If set to [code]-1[/code], all characters are displayed. This can be useful when animating the text appearing in a dialog box.\n\t\t\t[b]Note:[/b] Setting this property updates [member visible_ratio] accordingly."},{"name":"visible_characters_behavior","type":"int","description":"Sets the clipping behavior when [member visible_characters] or [member visible_ratio] is set. See [enum TextServer.VisibleCharactersBehavior] for more info."},{"name":"visible_ratio","type":"float","description":"The fraction of characters to display, relative to the total number of characters (see [method get_total_character_count]). If set to [code]1.0[/code], all characters are displayed. If set to [code]0.5[/code], only half of the characters will be displayed. This can be useful when animating the text appearing in a dialog box.\n\t\t\t[b]Note:[/b] Setting this property updates [member visible_characters] accordingly."}],"methods":[{"name":"add_image","signature":"add_image(image: Texture2D, width: int, height: int, color: Color, inline_align: int, region: Rect2, key: Variant, pad: bool, tooltip: String, size_in_percent: bool) -> void","description":"Adds an image's opening and closing tags to the tag stack, optionally providing a [param width] and [param height] to resize the image, a [param color] to tint the image and a [param region] to only use parts of the image.\n\t\t\t\tIf [param width] or [param height] is set to 0, the image size will be adjusted in order to keep the original aspect ratio.\n\t\t\t\tIf [param width] and [param height] are not set, but [param region] is, the region's rect will be used.\n\t\t\t\t[param key] is an optional identifier, that can be used to modify the image via [method update_image].\n\t\t\t\tIf [param pad] is set, and the image is smaller than the size specified by [param width] and [param height], the image padding is added to match the size instead of upscaling.\n\t\t\t\tIf [param size_in_percent] is set, [param width] and [param height] values are percentages of the control width instead of pixels.","returnType":"void"},{"name":"add_text","signature":"add_text(text: String) -> void","description":"Adds raw non-BBCode-parsed text to the tag stack.","returnType":"void"},{"name":"append_text","signature":"append_text(bbcode: String) -> void","description":"Parses [param bbcode] and adds tags to the tag stack as needed.\n\t\t\t\tNote: Using this method, you can't close a tag that was opened in a previous [method append_text] call. This is done to improve performance, especially when updating large RichTextLabels since rebuilding the whole BBCode every time would be slower. If you absolutely need to close a tag in a future method call, append the [member text] instead of using [method append_text].","returnType":"void"},{"name":"clear","signature":"clear() -> void","description":"Clears the tag stack, causing the label to display nothing.\n\t\t\t\tNote: This method does not affect [member text], and its contents will show again if the label is redrawn. However, setting [member text] to an empty  also clears the stack.","returnType":"void"},{"name":"deselect","signature":"deselect() -> void","description":"Clears the current selection.","returnType":"void"},{"name":"get_character_line","signature":"get_character_line(character: int) -> int","description":"Returns the line number of the character position provided. Line and character numbers are both zero-indexed.\n\t\t\t\tNote: If [member threaded] is enabled, this method returns a value for the loaded part of the document. Use [method is_finished] or [signal finished] to determine whether document is fully loaded.","returnType":"int"},{"name":"get_character_paragraph","signature":"get_character_paragraph(character: int) -> int","description":"Returns the paragraph number of the character position provided. Paragraph and character numbers are both zero-indexed.\n\t\t\t\tNote: If [member threaded] is enabled, this method returns a value for the loaded part of the document. Use [method is_finished] or [signal finished] to determine whether document is fully loaded.","returnType":"int"},{"name":"get_content_height","signature":"get_content_height() -> int","description":"Returns the height of the content.\n\t\t\t\tNote: If [member threaded] is enabled, this method returns a value for the loaded part of the document. Use [method is_finished] or [signal finished] to determine whether document is fully loaded.","returnType":"int"},{"name":"get_content_width","signature":"get_content_width() -> int","description":"Returns the width of the content.\n\t\t\t\tNote: If [member threaded] is enabled, this method returns a value for the loaded part of the document. Use [method is_finished] or [signal finished] to determine whether document is fully loaded.","returnType":"int"},{"name":"get_line_count","signature":"get_line_count() -> int","description":"Returns the total number of lines in the text. Wrapped text is counted as multiple lines.\n\t\t\t\tNote: If [member visible_characters_behavior] is set to [constant TextServer.VC_CHARS_BEFORE_SHAPING] only visible wrapped lines are counted.\n\t\t\t\tNote: If [member threaded] is enabled, this method returns a value for the loaded part of the document. Use [method is_finished] or [signal finished] to determine whether document is fully loaded.","returnType":"int"},{"name":"get_line_offset","signature":"get_line_offset(line: int) -> float","description":"Returns the vertical offset of the line found at the provided index.\n\t\t\t\tNote: If [member threaded] is enabled, this method returns a value for the loaded part of the document. Use [method is_finished] or [signal finished] to determine whether document is fully loaded.","returnType":"float"},{"name":"get_line_range","signature":"get_line_range(line: int) -> Vector2i","description":"Returns the indexes of the first and last visible characters for the given [param line], as a .\n\t\t\t\tNote: If [member visible_characters_behavior] is set to [constant TextServer.VC_CHARS_BEFORE_SHAPING] only visible wrapped lines are counted.\n\t\t\t\tNote: If [member threaded] is enabled, this method returns a value for the loaded part of the document. Use [method is_finished] or [signal finished] to determine whether document is fully loaded.","returnType":"Vector2i"},{"name":"get_menu","signature":"get_menu() -> PopupMenu","description":"Returns the  of this . By default, this menu is displayed when right-clicking on the .\n\t\t\t\tYou can add custom menu items or remove standard ones. Make sure your IDs don't conflict with the standard ones (see [enum MenuItems]). For example:\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tfunc _ready():\n\t\t\t\t    var menu = get_menu()\n\t\t\t\t    # Remove \"Select All\" item.\n\t\t\t\t    menu.remove_item(MENU_SELECT_ALL)\n\t\t\t\t    # Add custom items.\n\t\t\t\t    menu.add_separator()\n\t\t\t\t    menu.add_item(\"Duplicate Text\", MENU_MAX + 1)\n\t\t\t\t    # Connect callback.\n\t\t\t\t    menu.id_pressed.connect(_on_item_pressed)\n\n\t\t\t\tfunc _on_item_pressed(id):\n\t\t\t\t    if id == MENU_MAX + 1:\n\t\t\t\t        add_text(\"\\n\" + get_parsed_text())\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tpublic override void _Ready()\n\t\t\t\t{\n\t\t\t\t    var menu = GetMenu();\n\t\t\t\t    // Remove \"Select All\" item.\n\t\t\t\t    menu.RemoveItem(RichTextLabel.MenuItems.SelectAll);\n\t\t\t\t    // Add custom items.\n\t\t\t\t    menu.AddSeparator();\n\t\t\t\t    menu.AddItem(\"Duplicate Text\", RichTextLabel.MenuItems.Max + 1);\n\t\t\t\t    // Add event handler.\n\t\t\t\t    menu.IdPressed += OnItemPressed;\n\t\t\t\t}\n\n\t\t\t\tpublic void OnItemPressed(int id)\n\t\t\t\t{\n\t\t\t\t    if (id == TextEdit.MenuItems.Max + 1)\n\t\t\t\t    {\n\t\t\t\t        AddText(\"\\n\" + GetParsedText());\n\t\t\t\t    }\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tWarning: This is a required internal node, removing and freeing it may cause a crash. If you wish to hide it or any of its children, use their [member Window.visible] property.","returnType":"PopupMenu"},{"name":"get_paragraph_count","signature":"get_paragraph_count() -> int","description":"Returns the total number of paragraphs (newlines or p tags in the tag stack's text tags). Considers wrapped text as one paragraph.","returnType":"int"},{"name":"get_paragraph_offset","signature":"get_paragraph_offset(paragraph: int) -> float","description":"Returns the vertical offset of the paragraph found at the provided index.\n\t\t\t\tNote: If [member threaded] is enabled, this method returns a value for the loaded part of the document. Use [method is_finished] or [signal finished] to determine whether document is fully loaded.","returnType":"float"},{"name":"get_parsed_text","signature":"get_parsed_text() -> String","description":"Returns the text without BBCode mark-up.","returnType":"String"},{"name":"get_selected_text","signature":"get_selected_text() -> String","description":"Returns the current selection text. Does not include BBCodes.","returnType":"String"},{"name":"get_selection_from","signature":"get_selection_from() -> int","description":"Returns the current selection first character index if a selection is active, -1 otherwise. Does not include BBCodes.","returnType":"int"},{"name":"get_selection_line_offset","signature":"get_selection_line_offset() -> float","description":"Returns the current selection vertical line offset if a selection is active, -1.0 otherwise.","returnType":"float"},{"name":"get_selection_to","signature":"get_selection_to() -> int","description":"Returns the current selection last character index if a selection is active, -1 otherwise. Does not include BBCodes.","returnType":"int"},{"name":"get_total_character_count","signature":"get_total_character_count() -> int","description":"Returns the total number of characters from text tags. Does not include BBCodes.","returnType":"int"},{"name":"get_v_scroll_bar","signature":"get_v_scroll_bar() -> VScrollBar","description":"Returns the vertical scrollbar.\n\t\t\t\tWarning: This is a required internal node, removing and freeing it may cause a crash. If you wish to hide it or any of its children, use their [member CanvasItem.visible] property.","returnType":"VScrollBar"},{"name":"get_visible_line_count","signature":"get_visible_line_count() -> int","description":"Returns the number of visible lines.\n\t\t\t\tNote: If [member threaded] is enabled, this method returns a value for the loaded part of the document. Use [method is_finished] or [signal finished] to determine whether document is fully loaded.","returnType":"int"},{"name":"get_visible_paragraph_count","signature":"get_visible_paragraph_count() -> int","description":"Returns the number of visible paragraphs. A paragraph is considered visible if at least one of its lines is visible.\n\t\t\t\tNote: If [member threaded] is enabled, this method returns a value for the loaded part of the document. Use [method is_finished] or [signal finished] to determine whether document is fully loaded.","returnType":"int"},{"name":"install_effect","signature":"install_effect(effect: Variant) -> void","description":"Installs a custom effect. This can also be done in the Inspector through the [member custom_effects] property. [param effect] should be a valid .\n\t\t\t\tExample: With the following script extending from :\n\t\t\t\t\n\t\t\t\t# effect.gd\n\t\t\t\tclass_name MyCustomEffect\n\t\t\t\textends RichTextEffect\n\n\t\t\t\tvar bbcode = \"my_custom_effect\"\n\n\t\t\t\t# ...\n\t\t\t\t\n\t\t\t\tThe above effect can be installed in  from a script:\n\t\t\t\t\n\t\t\t\t# rich_text_label.gd\n\t\t\t\textends RichTextLabel\n\n\t\t\t\tfunc _ready():\n\t\t\t\t    install_effect(MyCustomEffect.new())\n\n\t\t\t\t    # Alternatively, if not using `class_name` in the script that extends RichTextEffect:\n\t\t\t\t    install_effect(preload(\"res://effect.gd\").new())\n\t\t\t\t","returnType":"void"},{"name":"invalidate_paragraph","signature":"invalidate_paragraph(paragraph: int) -> bool","description":"Invalidates [param paragraph] and all subsequent paragraphs cache.","returnType":"bool"},{"name":"is_finished","signature":"is_finished() -> bool","description":"If [member threaded] is enabled, returns true if the background thread has finished text processing, otherwise always return true.","returnType":"bool"},{"name":"is_menu_visible","signature":"is_menu_visible() -> bool","description":"Returns whether the menu is visible. Use this instead of get_menu().visible to improve performance (so the creation of the menu is avoided).","returnType":"bool"},{"name":"is_ready","signature":"is_ready() -> bool","description":"If [member threaded] is enabled, returns true if the background thread has finished text processing, otherwise always return true.","returnType":"bool"},{"name":"menu_option","signature":"menu_option(option: int) -> void","description":"Executes a given action as defined in the [enum MenuItems] enum.","returnType":"void"},{"name":"newline","signature":"newline() -> void","description":"Adds a newline tag to the tag stack.","returnType":"void"},{"name":"parse_bbcode","signature":"parse_bbcode(bbcode: String) -> void","description":"The assignment version of [method append_text]. Clears the tag stack and inserts the new content.","returnType":"void"},{"name":"parse_expressions_for_values","signature":"parse_expressions_for_values(expressions: PackedStringArray) -> Dictionary","description":"Parses BBCode parameter [param expressions] into a dictionary.","returnType":"Dictionary"},{"name":"pop","signature":"pop() -> void","description":"Terminates the current tag. Use after push_* methods to close BBCodes manually. Does not need to follow add_* methods.","returnType":"void"},{"name":"pop_all","signature":"pop_all() -> void","description":"Terminates all tags opened by push_* methods.","returnType":"void"},{"name":"pop_context","signature":"pop_context() -> void","description":"Terminates tags opened after the last [method push_context] call (including context marker), or all tags if there's no context marker on the stack.","returnType":"void"},{"name":"push_bgcolor","signature":"push_bgcolor(bgcolor: Color) -> void","description":"Adds a [code skip-lint] tag to the tag stack.","returnType":"void"},{"name":"push_bold","signature":"push_bold() -> void","description":"Adds a [code skip-lint] tag with a bold font to the tag stack. This is the same as adding a [code skip-lint] tag if not currently in a [code skip-lint] tag.","returnType":"void"},{"name":"push_bold_italics","signature":"push_bold_italics() -> void","description":"Adds a [code skip-lint] tag with a bold italics font to the tag stack.","returnType":"void"},{"name":"push_cell","signature":"push_cell() -> void","description":"Adds a [code skip-lint] tag to the tag stack. Must be inside a [code skip-lint] tag. See [method push_table] for details. Use [method set_table_column_expand] to set column expansion ratio, [method set_cell_border_color] to set cell border, [method set_cell_row_background_color] to set cell background, [method set_cell_size_override] to override cell size, and [method set_cell_padding] to set padding.","returnType":"void"},{"name":"push_color","signature":"push_color(color: Color) -> void","description":"Adds a [code skip-lint] tag to the tag stack.","returnType":"void"},{"name":"push_context","signature":"push_context() -> void","description":"Adds a context marker to the tag stack. See [method pop_context].","returnType":"void"},{"name":"push_customfx","signature":"push_customfx(effect: RichTextEffect, env: Dictionary) -> void","description":"Adds a custom effect tag to the tag stack. The effect does not need to be in [member custom_effects]. The environment is directly passed to the effect.","returnType":"void"},{"name":"push_dropcap","signature":"push_dropcap(string: String, font: Font, size: int, dropcap_margins: Rect2, color: Color, outline_size: int, outline_color: Color) -> void","description":"Adds a [code skip-lint] tag to the tag stack. Drop cap (dropped capital) is a decorative element at the beginning of a paragraph that is larger than the rest of the text.","returnType":"void"},{"name":"push_fgcolor","signature":"push_fgcolor(fgcolor: Color) -> void","description":"Adds a [code skip-lint] tag to the tag stack.","returnType":"void"},{"name":"push_font","signature":"push_font(font: Font, font_size: int) -> void","description":"Adds a [code skip-lint] tag to the tag stack. Overrides default fonts for its duration.\n\t\t\t\tPassing 0 to [param font_size] will use the existing default font size.","returnType":"void"},{"name":"push_font_size","signature":"push_font_size(font_size: int) -> void","description":"Adds a [code skip-lint] tag to the tag stack. Overrides default font size for its duration.","returnType":"void"},{"name":"push_hint","signature":"push_hint(description: String) -> void","description":"Adds a [code skip-lint] tag to the tag stack. Same as BBCode [code skip-lint][hint=something]{text}.","returnType":"void"},{"name":"push_indent","signature":"push_indent(level: int) -> void","description":"Adds an [code skip-lint] tag to the tag stack. Multiplies [param level] by current [member tab_size] to determine new margin length.","returnType":"void"},{"name":"push_italics","signature":"push_italics() -> void","description":"Adds a [code skip-lint] tag with an italics font to the tag stack. This is the same as adding an [code skip-lint] tag if not currently in a [code skip-lint] tag.","returnType":"void"},{"name":"push_language","signature":"push_language(language: String) -> void","description":"Adds language code used for text shaping algorithm and Open-Type font features.","returnType":"void"},{"name":"push_list","signature":"push_list(level: int, type: int, capitalize: bool, bullet: String) -> void","description":"Adds [code skip-lint] or [code skip-lint] tag to the tag stack. Multiplies [param level] by current [member tab_size] to determine new margin length.","returnType":"void"},{"name":"push_meta","signature":"push_meta(data: Variant, underline_mode: int, tooltip: String) -> void","description":"Adds a meta tag to the tag stack. Similar to the BBCode [code skip-lint][url=something]{text}, but supports non- metadata types.\n\t\t\t\tIf [member meta_underlined] is true, meta tags display an underline. This behavior can be customized with [param underline_mode].\n\t\t\t\tNote: Meta tags do nothing by default when clicked. To assign behavior when clicked, connect [signal meta_clicked] to a function that is called when the meta tag is clicked.","returnType":"void"},{"name":"push_mono","signature":"push_mono() -> void","description":"Adds a [code skip-lint] tag with a monospace font to the tag stack.","returnType":"void"},{"name":"push_normal","signature":"push_normal() -> void","description":"Adds a [code skip-lint] tag with a normal font to the tag stack.","returnType":"void"},{"name":"push_outline_color","signature":"push_outline_color(color: Color) -> void","description":"Adds a [code skip-lint] tag to the tag stack. Adds text outline for its duration.","returnType":"void"},{"name":"push_outline_size","signature":"push_outline_size(outline_size: int) -> void","description":"Adds a [code skip-lint] tag to the tag stack. Overrides default text outline size for its duration.","returnType":"void"},{"name":"push_paragraph","signature":"push_paragraph(alignment: int, base_direction: int, language: String, st_parser: int, justification_flags: int, tab_stops: PackedFloat32Array) -> void","description":"Adds a [code skip-lint] tag to the tag stack.","returnType":"void"},{"name":"push_strikethrough","signature":"push_strikethrough() -> void","description":"Adds a [code skip-lint] tag to the tag stack.","returnType":"void"},{"name":"push_table","signature":"push_table(columns: int, inline_align: int, align_to_row: int) -> void","description":"Adds a [code skip-lint][table=columns,inline_align] tag to the tag stack. Use [method set_table_column_expand] to set column expansion ratio. Use [method push_cell] to add cells.","returnType":"void"},{"name":"push_underline","signature":"push_underline() -> void","description":"Adds a [code skip-lint] tag to the tag stack.","returnType":"void"},{"name":"remove_paragraph","signature":"remove_paragraph(paragraph: int, no_invalidate: bool) -> bool","description":"Removes a paragraph of content from the label. Returns true if the paragraph exists.\n\t\t\t\tThe [param paragraph] argument is the index of the paragraph to remove, it can take values in the interval [0, get_paragraph_count() - 1].\n\t\t\t\tIf [param no_invalidate] is set to true, cache for the subsequent paragraphs is not invalidated. Use it for faster updates if deleted paragraph is fully self-contained (have no unclosed tags), or this call is part of the complex edit operation and [method invalidate_paragraph] will be called at the end of operation.","returnType":"bool"},{"name":"scroll_to_line","signature":"scroll_to_line(line: int) -> void","description":"Scrolls the window's top line to match [param line].","returnType":"void"},{"name":"scroll_to_paragraph","signature":"scroll_to_paragraph(paragraph: int) -> void","description":"Scrolls the window's top line to match first line of the [param paragraph].","returnType":"void"},{"name":"scroll_to_selection","signature":"scroll_to_selection() -> void","description":"Scrolls to the beginning of the current selection.","returnType":"void"},{"name":"select_all","signature":"select_all() -> void","description":"Select all the text.\n\t\t\t\tIf [member selection_enabled] is false, no selection will occur.","returnType":"void"},{"name":"set_cell_border_color","signature":"set_cell_border_color(color: Color) -> void","description":"Sets color of a table cell border.","returnType":"void"},{"name":"set_cell_padding","signature":"set_cell_padding(padding: Rect2) -> void","description":"Sets inner padding of a table cell.","returnType":"void"},{"name":"set_cell_row_background_color","signature":"set_cell_row_background_color(odd_row_bg: Color, even_row_bg: Color) -> void","description":"Sets color of a table cell. Separate colors for alternating rows can be specified.","returnType":"void"},{"name":"set_cell_size_override","signature":"set_cell_size_override(min_size: Vector2, max_size: Vector2) -> void","description":"Sets minimum and maximum size overrides for a table cell.","returnType":"void"},{"name":"set_table_column_expand","signature":"set_table_column_expand(column: int, expand: bool, ratio: int, shrink: bool) -> void","description":"Edits the selected column's expansion options. If [param expand] is true, the column expands in proportion to its expansion ratio versus the other columns' ratios.\n\t\t\t\tFor example, 2 columns with ratios 3 and 4 plus 70 pixels in available width would expand 30 and 40 pixels, respectively.\n\t\t\t\tIf [param expand] is false, the column will not contribute to the total ratio.","returnType":"void"},{"name":"update_image","signature":"update_image(key: Variant, mask: int, image: Texture2D, width: int, height: int, color: Color, inline_align: int, region: Rect2, pad: bool, tooltip: String, size_in_percent: bool) -> void","description":"Updates the existing images with the key [param key]. Only properties specified by [param mask] bits are updated. See [method add_image].","returnType":"void"}],"signals":[{"name":"finished","description":"Triggered when the document is fully loaded.\n\t\t\t\t[b]Note:[/b] This can happen before the text is processed for drawing. Scrolling values may not be valid until the document is drawn for the first time after this signal."},{"name":"meta_clicked","description":"Triggered when the user clicks on content between meta (URL) tags. If the meta is defined in BBCode, e.g. [code skip-lint][url={\"key\": \"value\"}]Text[/url][/code], then the parameter for this signal will always be a [String] type. If a particular type or an object is desired, the [method push_meta] method must be used to manually insert the data into the tag stack. Alternatively, you can convert the [String] input to the desired type based on its contents (such as calling [method JSON.parse] on it).\n\t\t\t\tFor example, the following method can be connected to [signal meta_clicked] to open clicked URLs using the user's default web browser:\n\t\t\t\t[codeblocks]\n\t\t\t\t[gdscript]\n\t\t\t\t# This assumes RichTextLabel's `meta_clicked` signal was connected to\n\t\t\t\t# the function below using the signal connection dialog.\n\t\t\t\tfunc _richtextlabel_on_meta_clicked(meta):\n\t\t\t\t    # `meta` is of Variant type, so convert it to a String to avoid script errors at run-time.\n\t\t\t\t    OS.shell_open(str(meta))\n\t\t\t\t[/gdscript]\n\t\t\t\t[/codeblocks]"},{"name":"meta_hover_ended","description":"Triggers when the mouse exits a meta tag."},{"name":"meta_hover_started","description":"Triggers when the mouse enters a meta tag."}]},"RigidBody2D":{"name":"RigidBody2D","description":"A 2D physics body that is moved by a physics simulation.","inherits":"PhysicsBody2D","properties":[{"name":"angular_damp","type":"float","description":"Damps the body's rotation. By default, the body will use the [member ProjectSettings.physics/2d/default_angular_damp] setting or any value override set by an [Area2D] the body is in. Depending on [member angular_damp_mode], you can set [member angular_damp] to be added to or to replace the body's damping value.\n\t\t\tSee [member ProjectSettings.physics/2d/default_angular_damp] for more details about damping."},{"name":"angular_damp_mode","type":"int","description":"Defines how [member angular_damp] is applied. See [enum DampMode] for possible values."},{"name":"angular_velocity","type":"float","description":"The body's rotational velocity in [i]radians[/i] per second."},{"name":"can_sleep","type":"bool","description":"If [code]true[/code], the body can enter sleep mode when there is no movement. See [member sleeping]."},{"name":"center_of_mass","type":"Vector2","description":"The body's custom center of mass, relative to the body's origin position, when [member center_of_mass_mode] is set to [constant CENTER_OF_MASS_MODE_CUSTOM]. This is the balanced point of the body, where applied forces only cause linear acceleration. Applying forces outside of the center of mass causes angular acceleration.\n\t\t\tWhen [member center_of_mass_mode] is set to [constant CENTER_OF_MASS_MODE_AUTO] (default value), the center of mass is automatically computed."},{"name":"center_of_mass_mode","type":"int","description":"Defines the way the body's center of mass is set. See [enum CenterOfMassMode] for possible values."},{"name":"constant_force","type":"Vector2","description":"The body's total constant positional forces applied during each physics update.\n\t\t\tSee [method add_constant_force] and [method add_constant_central_force]."},{"name":"constant_torque","type":"float","description":"The body's total constant rotational forces applied during each physics update.\n\t\t\tSee [method add_constant_torque]."},{"name":"contact_monitor","type":"bool","description":"If [code]true[/code], the RigidBody2D will emit signals when it collides with another body.\n\t\t\t[b]Note:[/b] By default the maximum contacts reported is set to 0, meaning nothing will be recorded, see [member max_contacts_reported]."},{"name":"continuous_cd","type":"int","description":"Continuous collision detection mode.\n\t\t\tContinuous collision detection tries to predict where a moving body will collide instead of moving it and correcting its movement after collision. Continuous collision detection is slower, but more precise and misses fewer collisions with small, fast-moving objects. Raycasting and shapecasting methods are available. See [enum CCDMode] for details."},{"name":"custom_integrator","type":"bool","description":"If [code]true[/code], the standard force integration (like gravity or damping) will be disabled for this body. Other than collision response, the body will only move as determined by the [method _integrate_forces] method, if that virtual method is overridden.\n\t\t\tSetting this property will call the method [method PhysicsServer2D.body_set_omit_force_integration] internally."},{"name":"freeze","type":"bool","description":"If [code]true[/code], the body is frozen. Gravity and forces are not applied anymore.\n\t\t\tSee [member freeze_mode] to set the body's behavior when frozen.\n\t\t\tFor a body that is always frozen, use [StaticBody2D] or [AnimatableBody2D] instead."},{"name":"freeze_mode","type":"int","description":"The body's freeze mode. Can be used to set the body's behavior when [member freeze] is enabled. See [enum FreezeMode] for possible values.\n\t\t\tFor a body that is always frozen, use [StaticBody2D] or [AnimatableBody2D] instead."},{"name":"gravity_scale","type":"float","description":"Multiplies the gravity applied to the body. The body's gravity is calculated from the [member ProjectSettings.physics/2d/default_gravity] project setting and/or any additional gravity vector applied by [Area2D]s."},{"name":"inertia","type":"float","description":"The body's moment of inertia. This is like mass, but for rotation: it determines how much torque it takes to rotate the body. The moment of inertia is usually computed automatically from the mass and the shapes, but this property allows you to set a custom value.\n\t\t\tIf set to [code]0[/code], inertia is automatically computed (default value).\n\t\t\t[b]Note:[/b] This value does not change when inertia is automatically computed. Use [PhysicsServer2D] to get the computed inertia.\n\t\t\t[codeblocks]\n\t\t\t[gdscript]\n\t\t\t@onready var ball = $Ball\n\n\t\t\tfunc get_ball_inertia():\n\t\t\t    return 1.0 / PhysicsServer2D.body_get_direct_state(ball.get_rid()).inverse_inertia\n\t\t\t[/gdscript]\n\t\t\t[csharp]\n\t\t\tprivate RigidBody2D _ball;\n\n\t\t\tpublic override void _Ready()\n\t\t\t{\n\t\t\t    _ball = GetNode&lt;RigidBody2D&gt;(\"Ball\");\n\t\t\t}\n\n\t\t\tprivate float GetBallInertia()\n\t\t\t{\n\t\t\t    return 1.0f / PhysicsServer2D.BodyGetDirectState(_ball.GetRid()).InverseInertia;\n\t\t\t}\n\t\t\t[/csharp]\n\t\t\t[/codeblocks]"},{"name":"linear_damp","type":"float","description":"Damps the body's movement. By default, the body will use the [member ProjectSettings.physics/2d/default_linear_damp] setting or any value override set by an [Area2D] the body is in. Depending on [member linear_damp_mode], you can set [member linear_damp] to be added to or to replace the body's damping value.\n\t\t\tSee [member ProjectSettings.physics/2d/default_linear_damp] for more details about damping."},{"name":"linear_damp_mode","type":"int","description":"Defines how [member linear_damp] is applied. See [enum DampMode] for possible values."},{"name":"linear_velocity","type":"Vector2","description":"The body's linear velocity in pixels per second. Can be used sporadically, but [b]don't set this every frame[/b], because physics may run in another thread and runs at a different granularity. Use [method _integrate_forces] as your process loop for precise control of the body state."},{"name":"lock_rotation","type":"bool","description":"If [code]true[/code], the body cannot rotate. Gravity and forces only apply linear movement."},{"name":"mass","type":"float","description":"The body's mass."},{"name":"max_contacts_reported","type":"int","description":"The maximum number of contacts that will be recorded. Requires a value greater than 0 and [member contact_monitor] to be set to [code]true[/code] to start to register contacts. Use [method get_contact_count] to retrieve the count or [method get_colliding_bodies] to retrieve bodies that have been collided with.\n\t\t\t[b]Note:[/b] The number of contacts is different from the number of collisions. Collisions between parallel edges will result in two contacts (one at each end), and collisions between parallel faces will result in four contacts (one at each corner)."},{"name":"physics_material_override","type":"PhysicsMaterial","description":"The physics material override for the body.\n\t\t\tIf a material is assigned to this property, it will be used instead of any other physics material, such as an inherited one."},{"name":"sleeping","type":"bool","description":"If [code]true[/code], the body will not move and will not calculate forces until woken up by another body through, for example, a collision, or by using the [method apply_impulse] or [method apply_force] methods."}],"methods":[{"name":"_integrate_forces","signature":"_integrate_forces(state: PhysicsDirectBodyState2D) -> void","description":"Called during physics processing, allowing you to read and safely modify the simulation state for the object. By default, it is called before the standard force integration, but the [member custom_integrator] property allows you to disable the standard force integration and do fully custom force integration for a body.","returnType":"void"},{"name":"add_constant_central_force","signature":"add_constant_central_force(force: Vector2) -> void","description":"Adds a constant directional force without affecting rotation that keeps being applied over time until cleared with constant_force = Vector2(0, 0).\n\t\t\t\tThis is equivalent to using [method add_constant_force] at the body's center of mass.","returnType":"void"},{"name":"add_constant_force","signature":"add_constant_force(force: Vector2, position: Vector2) -> void","description":"Adds a constant positioned force to the body that keeps being applied over time until cleared with constant_force = Vector2(0, 0).\n\t\t\t\t[param position] is the offset from the body origin in global coordinates.","returnType":"void"},{"name":"add_constant_torque","signature":"add_constant_torque(torque: float) -> void","description":"Adds a constant rotational force without affecting position that keeps being applied over time until cleared with constant_torque = 0.","returnType":"void"},{"name":"apply_central_force","signature":"apply_central_force(force: Vector2) -> void","description":"Applies a directional force without affecting rotation. A force is time dependent and meant to be applied every physics update.\n\t\t\t\tThis is equivalent to using [method apply_force] at the body's center of mass.","returnType":"void"},{"name":"apply_central_impulse","signature":"apply_central_impulse(impulse: Vector2) -> void","description":"Applies a directional impulse without affecting rotation.\n\t\t\t\tAn impulse is time-independent! Applying an impulse every frame would result in a framerate-dependent force. For this reason, it should only be used when simulating one-time impacts (use the \"_force\" functions otherwise).\n\t\t\t\tThis is equivalent to using [method apply_impulse] at the body's center of mass.","returnType":"void"},{"name":"apply_force","signature":"apply_force(force: Vector2, position: Vector2) -> void","description":"Applies a positioned force to the body. A force is time dependent and meant to be applied every physics update.\n\t\t\t\t[param position] is the offset from the body origin in global coordinates.","returnType":"void"},{"name":"apply_impulse","signature":"apply_impulse(impulse: Vector2, position: Vector2) -> void","description":"Applies a positioned impulse to the body.\n\t\t\t\tAn impulse is time-independent! Applying an impulse every frame would result in a framerate-dependent force. For this reason, it should only be used when simulating one-time impacts (use the \"_force\" functions otherwise).\n\t\t\t\t[param position] is the offset from the body origin in global coordinates.","returnType":"void"},{"name":"apply_torque","signature":"apply_torque(torque: float) -> void","description":"Applies a rotational force without affecting position. A force is time dependent and meant to be applied every physics update.\n\t\t\t\tNote: [member inertia] is required for this to work. To have [member inertia], an active  must be a child of the node, or you can manually set [member inertia].","returnType":"void"},{"name":"apply_torque_impulse","signature":"apply_torque_impulse(torque: float) -> void","description":"Applies a rotational impulse to the body without affecting the position.\n\t\t\t\tAn impulse is time-independent! Applying an impulse every frame would result in a framerate-dependent force. For this reason, it should only be used when simulating one-time impacts (use the \"_force\" functions otherwise).\n\t\t\t\tNote: [member inertia] is required for this to work. To have [member inertia], an active  must be a child of the node, or you can manually set [member inertia].","returnType":"void"},{"name":"get_colliding_bodies","signature":"get_colliding_bodies() -> Node2D[]","description":"Returns a list of the bodies colliding with this one. Requires [member contact_monitor] to be set to true and [member max_contacts_reported] to be set high enough to detect all the collisions.\n\t\t\t\tNote: The result of this test is not immediate after moving objects. For performance, list of collisions is updated once per frame and before the physics step. Consider using signals instead.","returnType":"Node2D[]"},{"name":"get_contact_count","signature":"get_contact_count() -> int","description":"Returns the number of contacts this body has with other bodies. By default, this returns 0 unless bodies are configured to monitor contacts (see [member contact_monitor]).\n\t\t\t\tNote: To retrieve the colliding bodies, use [method get_colliding_bodies].","returnType":"int"},{"name":"set_axis_velocity","signature":"set_axis_velocity(axis_velocity: Vector2) -> void","description":"Sets the body's velocity on the given axis. The velocity in the given vector axis will be set as the given vector length. This is useful for jumping behavior.","returnType":"void"}],"signals":[{"name":"body_entered","description":"Emitted when a collision with another [PhysicsBody2D] or [TileMap] occurs. Requires [member contact_monitor] to be set to [code]true[/code] and [member max_contacts_reported] to be set high enough to detect all the collisions. [TileMap]s are detected if the [TileSet] has Collision [Shape2D]s.\n\t\t\t\t[param body] the [Node], if it exists in the tree, of the other [PhysicsBody2D] or [TileMap]."},{"name":"body_exited","description":"Emitted when the collision with another [PhysicsBody2D] or [TileMap] ends. Requires [member contact_monitor] to be set to [code]true[/code] and [member max_contacts_reported] to be set high enough to detect all the collisions. [TileMap]s are detected if the [TileSet] has Collision [Shape2D]s.\n\t\t\t\t[param body] the [Node], if it exists in the tree, of the other [PhysicsBody2D] or [TileMap]."},{"name":"body_shape_entered","description":"Emitted when one of this RigidBody2D's [Shape2D]s collides with another [PhysicsBody2D] or [TileMap]'s [Shape2D]s. Requires [member contact_monitor] to be set to [code]true[/code] and [member max_contacts_reported] to be set high enough to detect all the collisions. [TileMap]s are detected if the [TileSet] has Collision [Shape2D]s.\n\t\t\t\t[param body_rid] the [RID] of the other [PhysicsBody2D] or [TileSet]'s [CollisionObject2D] used by the [PhysicsServer2D].\n\t\t\t\t[param body] the [Node], if it exists in the tree, of the other [PhysicsBody2D] or [TileMap].\n\t\t\t\t[param body_shape_index] the index of the [Shape2D] of the other [PhysicsBody2D] or [TileMap] used by the [PhysicsServer2D]. Get the [CollisionShape2D] node with [code]body.shape_owner_get_owner(body.shape_find_owner(body_shape_index))[/code].\n\t\t\t\t[param local_shape_index] the index of the [Shape2D] of this RigidBody2D used by the [PhysicsServer2D]. Get the [CollisionShape2D] node with [code]self.shape_owner_get_owner(self.shape_find_owner(local_shape_index))[/code]."},{"name":"body_shape_exited","description":"Emitted when the collision between one of this RigidBody2D's [Shape2D]s and another [PhysicsBody2D] or [TileMap]'s [Shape2D]s ends. Requires [member contact_monitor] to be set to [code]true[/code] and [member max_contacts_reported] to be set high enough to detect all the collisions. [TileMap]s are detected if the [TileSet] has Collision [Shape2D]s.\n\t\t\t\t[param body_rid] the [RID] of the other [PhysicsBody2D] or [TileSet]'s [CollisionObject2D] used by the [PhysicsServer2D].\n\t\t\t\t[param body] the [Node], if it exists in the tree, of the other [PhysicsBody2D] or [TileMap].\n\t\t\t\t[param body_shape_index] the index of the [Shape2D] of the other [PhysicsBody2D] or [TileMap] used by the [PhysicsServer2D]. Get the [CollisionShape2D] node with [code]body.shape_owner_get_owner(body.shape_find_owner(body_shape_index))[/code].\n\t\t\t\t[param local_shape_index] the index of the [Shape2D] of this RigidBody2D used by the [PhysicsServer2D]. Get the [CollisionShape2D] node with [code]self.shape_owner_get_owner(self.shape_find_owner(local_shape_index))[/code]."},{"name":"sleeping_state_changed","description":"Emitted when the physics engine changes the body's sleeping state.\n\t\t\t\t[b]Note:[/b] Changing the value [member sleeping] will not trigger this signal. It is only emitted if the sleeping state is changed by the physics engine or [code]emit_signal(\"sleeping_state_changed\")[/code] is used."}]},"RigidBody3D":{"name":"RigidBody3D","description":"A 3D physics body that is moved by a physics simulation.","inherits":"PhysicsBody3D","properties":[{"name":"angular_damp","type":"float","description":"Damps the body's rotation. By default, the body will use the [member ProjectSettings.physics/3d/default_angular_damp] project setting or any value override set by an [Area3D] the body is in. Depending on [member angular_damp_mode], you can set [member angular_damp] to be added to or to replace the body's damping value.\n\t\t\tSee [member ProjectSettings.physics/3d/default_angular_damp] for more details about damping."},{"name":"angular_damp_mode","type":"int","description":"Defines how [member angular_damp] is applied. See [enum DampMode] for possible values."},{"name":"angular_velocity","type":"Vector3","description":"The RigidBody3D's rotational velocity in [i]radians[/i] per second."},{"name":"can_sleep","type":"bool","description":"If [code]true[/code], the body can enter sleep mode when there is no movement. See [member sleeping]."},{"name":"center_of_mass","type":"Vector3","description":"The body's custom center of mass, relative to the body's origin position, when [member center_of_mass_mode] is set to [constant CENTER_OF_MASS_MODE_CUSTOM]. This is the balanced point of the body, where applied forces only cause linear acceleration. Applying forces outside of the center of mass causes angular acceleration.\n\t\t\tWhen [member center_of_mass_mode] is set to [constant CENTER_OF_MASS_MODE_AUTO] (default value), the center of mass is automatically computed."},{"name":"center_of_mass_mode","type":"int","description":"Defines the way the body's center of mass is set. See [enum CenterOfMassMode] for possible values."},{"name":"constant_force","type":"Vector3","description":"The body's total constant positional forces applied during each physics update.\n\t\t\tSee [method add_constant_force] and [method add_constant_central_force]."},{"name":"constant_torque","type":"Vector3","description":"The body's total constant rotational forces applied during each physics update.\n\t\t\tSee [method add_constant_torque]."},{"name":"contact_monitor","type":"bool","description":"If [code]true[/code], the RigidBody3D will emit signals when it collides with another body.\n\t\t\t[b]Note:[/b] By default the maximum contacts reported is set to 0, meaning nothing will be recorded, see [member max_contacts_reported]."},{"name":"continuous_cd","type":"bool","description":"If [code]true[/code], continuous collision detection is used.\n\t\t\tContinuous collision detection tries to predict where a moving body will collide, instead of moving it and correcting its movement if it collided. Continuous collision detection is more precise, and misses fewer impacts by small, fast-moving objects. Not using continuous collision detection is faster to compute, but can miss small, fast-moving objects."},{"name":"custom_integrator","type":"bool","description":"If [code]true[/code], the standard force integration (like gravity or damping) will be disabled for this body. Other than collision response, the body will only move as determined by the [method _integrate_forces] method, if that virtual method is overridden.\n\t\t\tSetting this property will call the method [method PhysicsServer3D.body_set_omit_force_integration] internally."},{"name":"freeze","type":"bool","description":"If [code]true[/code], the body is frozen. Gravity and forces are not applied anymore.\n\t\t\tSee [member freeze_mode] to set the body's behavior when frozen.\n\t\t\tFor a body that is always frozen, use [StaticBody3D] or [AnimatableBody3D] instead."},{"name":"freeze_mode","type":"int","description":"The body's freeze mode. Can be used to set the body's behavior when [member freeze] is enabled. See [enum FreezeMode] for possible values.\n\t\t\tFor a body that is always frozen, use [StaticBody3D] or [AnimatableBody3D] instead."},{"name":"gravity_scale","type":"float","description":"This is multiplied by [member ProjectSettings.physics/3d/default_gravity] to produce this body's gravity. For example, a value of [code]1.0[/code] will apply normal gravity, [code]2.0[/code] will apply double the gravity, and [code]0.5[/code] will apply half the gravity to this body."},{"name":"inertia","type":"Vector3","description":"The body's moment of inertia. This is like mass, but for rotation: it determines how much torque it takes to rotate the body on each axis. The moment of inertia is usually computed automatically from the mass and the shapes, but this property allows you to set a custom value.\n\t\t\tIf set to [constant Vector3.ZERO], inertia is automatically computed (default value).\n\t\t\t[b]Note:[/b] This value does not change when inertia is automatically computed. Use [PhysicsServer3D] to get the computed inertia.\n\t\t\t[codeblocks]\n\t\t\t[gdscript]\n\t\t\t@onready var ball = $Ball\n\n\t\t\tfunc get_ball_inertia():\n\t\t\t    return PhysicsServer3D.body_get_direct_state(ball.get_rid()).inverse_inertia.inverse()\n\t\t\t[/gdscript]\n\t\t\t[csharp]\n\t\t\tprivate RigidBody3D _ball;\n\n\t\t\tpublic override void _Ready()\n\t\t\t{\n\t\t\t    _ball = GetNode&lt;RigidBody3D&gt;(\"Ball\");\n\t\t\t}\n\n\t\t\tprivate Vector3 GetBallInertia()\n\t\t\t{\n\t\t\t    return PhysicsServer3D.BodyGetDirectState(_ball.GetRid()).InverseInertia.Inverse();\n\t\t\t}\n\t\t\t[/csharp]\n\t\t\t[/codeblocks]"},{"name":"linear_damp","type":"float","description":"Damps the body's movement. By default, the body will use the [member ProjectSettings.physics/3d/default_linear_damp] project setting or any value override set by an [Area3D] the body is in. Depending on [member linear_damp_mode], you can set [member linear_damp] to be added to or to replace the body's damping value.\n\t\t\tSee [member ProjectSettings.physics/3d/default_linear_damp] for more details about damping."},{"name":"linear_damp_mode","type":"int","description":"Defines how [member linear_damp] is applied. See [enum DampMode] for possible values."},{"name":"linear_velocity","type":"Vector3","description":"The body's linear velocity in units per second. Can be used sporadically, but [b]don't set this every frame[/b], because physics may run in another thread and runs at a different granularity. Use [method _integrate_forces] as your process loop for precise control of the body state."},{"name":"lock_rotation","type":"bool","description":"If [code]true[/code], the body cannot rotate. Gravity and forces only apply linear movement."},{"name":"mass","type":"float","description":"The body's mass."},{"name":"max_contacts_reported","type":"int","description":"The maximum number of contacts that will be recorded. Requires a value greater than 0 and [member contact_monitor] to be set to [code]true[/code] to start to register contacts. Use [method get_contact_count] to retrieve the count or [method get_colliding_bodies] to retrieve bodies that have been collided with.\n\t\t\t[b]Note:[/b] The number of contacts is different from the number of collisions. Collisions between parallel edges will result in two contacts (one at each end), and collisions between parallel faces will result in four contacts (one at each corner)."},{"name":"physics_material_override","type":"PhysicsMaterial","description":"The physics material override for the body.\n\t\t\tIf a material is assigned to this property, it will be used instead of any other physics material, such as an inherited one."},{"name":"sleeping","type":"bool","description":"If [code]true[/code], the body will not move and will not calculate forces until woken up by another body through, for example, a collision, or by using the [method apply_impulse] or [method apply_force] methods."}],"methods":[{"name":"_integrate_forces","signature":"_integrate_forces(state: PhysicsDirectBodyState3D) -> void","description":"Called during physics processing, allowing you to read and safely modify the simulation state for the object. By default, it is called before the standard force integration, but the [member custom_integrator] property allows you to disable the standard force integration and do fully custom force integration for a body.","returnType":"void"},{"name":"add_constant_central_force","signature":"add_constant_central_force(force: Vector3) -> void","description":"Adds a constant directional force without affecting rotation that keeps being applied over time until cleared with constant_force = Vector3(0, 0, 0).\n\t\t\t\tThis is equivalent to using [method add_constant_force] at the body's center of mass.","returnType":"void"},{"name":"add_constant_force","signature":"add_constant_force(force: Vector3, position: Vector3) -> void","description":"Adds a constant positioned force to the body that keeps being applied over time until cleared with constant_force = Vector3(0, 0, 0).\n\t\t\t\t[param position] is the offset from the body origin in global coordinates.","returnType":"void"},{"name":"add_constant_torque","signature":"add_constant_torque(torque: Vector3) -> void","description":"Adds a constant rotational force without affecting position that keeps being applied over time until cleared with constant_torque = Vector3(0, 0, 0).","returnType":"void"},{"name":"apply_central_force","signature":"apply_central_force(force: Vector3) -> void","description":"Applies a directional force without affecting rotation. A force is time dependent and meant to be applied every physics update.\n\t\t\t\tThis is equivalent to using [method apply_force] at the body's center of mass.","returnType":"void"},{"name":"apply_central_impulse","signature":"apply_central_impulse(impulse: Vector3) -> void","description":"Applies a directional impulse without affecting rotation.\n\t\t\t\tAn impulse is time-independent! Applying an impulse every frame would result in a framerate-dependent force. For this reason, it should only be used when simulating one-time impacts (use the \"_force\" functions otherwise).\n\t\t\t\tThis is equivalent to using [method apply_impulse] at the body's center of mass.","returnType":"void"},{"name":"apply_force","signature":"apply_force(force: Vector3, position: Vector3) -> void","description":"Applies a positioned force to the body. A force is time dependent and meant to be applied every physics update.\n\t\t\t\t[param position] is the offset from the body origin in global coordinates.","returnType":"void"},{"name":"apply_impulse","signature":"apply_impulse(impulse: Vector3, position: Vector3) -> void","description":"Applies a positioned impulse to the body.\n\t\t\t\tAn impulse is time-independent! Applying an impulse every frame would result in a framerate-dependent force. For this reason, it should only be used when simulating one-time impacts (use the \"_force\" functions otherwise).\n\t\t\t\t[param position] is the offset from the body origin in global coordinates.","returnType":"void"},{"name":"apply_torque","signature":"apply_torque(torque: Vector3) -> void","description":"Applies a rotational force without affecting position. A force is time dependent and meant to be applied every physics update.\n\t\t\t\tNote: [member inertia] is required for this to work. To have [member inertia], an active  must be a child of the node, or you can manually set [member inertia].","returnType":"void"},{"name":"apply_torque_impulse","signature":"apply_torque_impulse(impulse: Vector3) -> void","description":"Applies a rotational impulse to the body without affecting the position.\n\t\t\t\tAn impulse is time-independent! Applying an impulse every frame would result in a framerate-dependent force. For this reason, it should only be used when simulating one-time impacts (use the \"_force\" functions otherwise).\n\t\t\t\tNote: [member inertia] is required for this to work. To have [member inertia], an active  must be a child of the node, or you can manually set [member inertia].","returnType":"void"},{"name":"get_colliding_bodies","signature":"get_colliding_bodies() -> Node3D[]","description":"Returns a list of the bodies colliding with this one. Requires [member contact_monitor] to be set to true and [member max_contacts_reported] to be set high enough to detect all the collisions.\n\t\t\t\tNote: The result of this test is not immediate after moving objects. For performance, list of collisions is updated once per frame and before the physics step. Consider using signals instead.","returnType":"Node3D[]"},{"name":"get_contact_count","signature":"get_contact_count() -> int","description":"Returns the number of contacts this body has with other bodies. By default, this returns 0 unless bodies are configured to monitor contacts (see [member contact_monitor]).\n\t\t\t\tNote: To retrieve the colliding bodies, use [method get_colliding_bodies].","returnType":"int"},{"name":"get_inverse_inertia_tensor","signature":"get_inverse_inertia_tensor() -> Basis","description":"Returns the inverse inertia tensor basis. This is used to calculate the angular acceleration resulting from a torque applied to the .","returnType":"Basis"},{"name":"set_axis_velocity","signature":"set_axis_velocity(axis_velocity: Vector3) -> void","description":"Sets an axis velocity. The velocity in the given vector axis will be set as the given vector length. This is useful for jumping behavior.","returnType":"void"}],"signals":[{"name":"body_entered","description":"Emitted when a collision with another [PhysicsBody3D] or [GridMap] occurs. Requires [member contact_monitor] to be set to [code]true[/code] and [member max_contacts_reported] to be set high enough to detect all the collisions. [GridMap]s are detected if the [MeshLibrary] has Collision [Shape3D]s.\n\t\t\t\t[param body] the [Node], if it exists in the tree, of the other [PhysicsBody3D] or [GridMap]."},{"name":"body_exited","description":"Emitted when the collision with another [PhysicsBody3D] or [GridMap] ends. Requires [member contact_monitor] to be set to [code]true[/code] and [member max_contacts_reported] to be set high enough to detect all the collisions. [GridMap]s are detected if the [MeshLibrary] has Collision [Shape3D]s.\n\t\t\t\t[param body] the [Node], if it exists in the tree, of the other [PhysicsBody3D] or [GridMap]."},{"name":"body_shape_entered","description":"Emitted when one of this RigidBody3D's [Shape3D]s collides with another [PhysicsBody3D] or [GridMap]'s [Shape3D]s. Requires [member contact_monitor] to be set to [code]true[/code] and [member max_contacts_reported] to be set high enough to detect all the collisions. [GridMap]s are detected if the [MeshLibrary] has Collision [Shape3D]s.\n\t\t\t\t[param body_rid] the [RID] of the other [PhysicsBody3D] or [MeshLibrary]'s [CollisionObject3D] used by the [PhysicsServer3D].\n\t\t\t\t[param body] the [Node], if it exists in the tree, of the other [PhysicsBody3D] or [GridMap].\n\t\t\t\t[param body_shape_index] the index of the [Shape3D] of the other [PhysicsBody3D] or [GridMap] used by the [PhysicsServer3D]. Get the [CollisionShape3D] node with [code]body.shape_owner_get_owner(body.shape_find_owner(body_shape_index))[/code].\n\t\t\t\t[param local_shape_index] the index of the [Shape3D] of this RigidBody3D used by the [PhysicsServer3D]. Get the [CollisionShape3D] node with [code]self.shape_owner_get_owner(self.shape_find_owner(local_shape_index))[/code]."},{"name":"body_shape_exited","description":"Emitted when the collision between one of this RigidBody3D's [Shape3D]s and another [PhysicsBody3D] or [GridMap]'s [Shape3D]s ends. Requires [member contact_monitor] to be set to [code]true[/code] and [member max_contacts_reported] to be set high enough to detect all the collisions. [GridMap]s are detected if the [MeshLibrary] has Collision [Shape3D]s.\n\t\t\t\t[param body_rid] the [RID] of the other [PhysicsBody3D] or [MeshLibrary]'s [CollisionObject3D] used by the [PhysicsServer3D]. [GridMap]s are detected if the Meshes have [Shape3D]s.\n\t\t\t\t[param body] the [Node], if it exists in the tree, of the other [PhysicsBody3D] or [GridMap].\n\t\t\t\t[param body_shape_index] the index of the [Shape3D] of the other [PhysicsBody3D] or [GridMap] used by the [PhysicsServer3D]. Get the [CollisionShape3D] node with [code]body.shape_owner_get_owner(body.shape_find_owner(body_shape_index))[/code].\n\t\t\t\t[param local_shape_index] the index of the [Shape3D] of this RigidBody3D used by the [PhysicsServer3D]. Get the [CollisionShape3D] node with [code]self.shape_owner_get_owner(self.shape_find_owner(local_shape_index))[/code]."},{"name":"sleeping_state_changed","description":"Emitted when the physics engine changes the body's sleeping state.\n\t\t\t\t[b]Note:[/b] Changing the value [member sleeping] will not trigger this signal. It is only emitted if the sleeping state is changed by the physics engine or [code]emit_signal(\"sleeping_state_changed\")[/code] is used."}]},"RootMotionView":{"name":"RootMotionView","description":"Editor-only helper for setting up root motion in .","inherits":"VisualInstance3D","properties":[{"name":"animation_path","type":"NodePath","description":"Path to an [AnimationMixer] node to use as a basis for root motion."},{"name":"cell_size","type":"float","description":"The grid's cell size in 3D units."},{"name":"color","type":"Color","description":"The grid's color."},{"name":"radius","type":"float","description":"The grid's radius in 3D units. The grid's opacity will fade gradually as the distance from the origin increases until this [member radius] is reached."},{"name":"zero_y","type":"bool","description":"If [code]true[/code], the grid's points will all be on the same Y coordinate ([i]local[/i] Y = 0). If [code]false[/code], the points' original Y coordinate is preserved."}],"methods":[],"signals":[]},"SceneState":{"name":"SceneState","description":"Provides access to a scene file's information.","inherits":"RefCounted","properties":[],"methods":[{"name":"get_connection_binds","signature":"get_connection_binds(idx: int) -> Array","description":"Returns the list of bound parameters for the signal at [param idx].","returnType":"Array"},{"name":"get_connection_count","signature":"get_connection_count() -> int","description":"Returns the number of signal connections in the scene.\n\t\t\t\tThe idx argument used to query connection metadata in other get_connection_* methods in the interval [0, get_connection_count() - 1].","returnType":"int"},{"name":"get_connection_flags","signature":"get_connection_flags(idx: int) -> int","description":"Returns the connection flags for the signal at [param idx]. See [enum Object.ConnectFlags] constants.","returnType":"int"},{"name":"get_connection_method","signature":"get_connection_method(idx: int) -> StringName","description":"Returns the method connected to the signal at [param idx].","returnType":"StringName"},{"name":"get_connection_signal","signature":"get_connection_signal(idx: int) -> StringName","description":"Returns the name of the signal at [param idx].","returnType":"StringName"},{"name":"get_connection_source","signature":"get_connection_source(idx: int) -> NodePath","description":"Returns the path to the node that owns the signal at [param idx], relative to the root node.","returnType":"NodePath"},{"name":"get_connection_target","signature":"get_connection_target(idx: int) -> NodePath","description":"Returns the path to the node that owns the method connected to the signal at [param idx], relative to the root node.","returnType":"NodePath"},{"name":"get_connection_unbinds","signature":"get_connection_unbinds(idx: int) -> int","description":"Returns the number of unbound parameters for the signal at [param idx].","returnType":"int"},{"name":"get_node_count","signature":"get_node_count() -> int","description":"Returns the number of nodes in the scene.\n\t\t\t\tThe idx argument used to query node data in other get_node_* methods in the interval [0, get_node_count() - 1].","returnType":"int"},{"name":"get_node_groups","signature":"get_node_groups(idx: int) -> PackedStringArray","description":"Returns the list of group names associated with the node at [param idx].","returnType":"PackedStringArray"},{"name":"get_node_index","signature":"get_node_index(idx: int) -> int","description":"Returns the node's index, which is its position relative to its siblings. This is only relevant and saved in scenes for cases where new nodes are added to an instantiated or inherited scene among siblings from the base scene. Despite the name, this index is not related to the [param idx] argument used here and in other methods.","returnType":"int"},{"name":"get_node_instance","signature":"get_node_instance(idx: int) -> PackedScene","description":"Returns a  for the node at [param idx] (i.e. the whole branch starting at this node, with its child nodes and resources), or null if the node is not an instance.","returnType":"PackedScene"},{"name":"get_node_instance_placeholder","signature":"get_node_instance_placeholder(idx: int) -> String","description":"Returns the path to the represented scene file if the node at [param idx] is an .","returnType":"String"},{"name":"get_node_name","signature":"get_node_name(idx: int) -> StringName","description":"Returns the name of the node at [param idx].","returnType":"StringName"},{"name":"get_node_owner_path","signature":"get_node_owner_path(idx: int) -> NodePath","description":"Returns the path to the owner of the node at [param idx], relative to the root node.","returnType":"NodePath"},{"name":"get_node_path","signature":"get_node_path(idx: int, for_parent: bool) -> NodePath","description":"Returns the path to the node at [param idx].\n\t\t\t\tIf [param for_parent] is true, returns the path of the [param idx] node's parent instead.","returnType":"NodePath"},{"name":"get_node_property_count","signature":"get_node_property_count(idx: int) -> int","description":"Returns the number of exported or overridden properties for the node at [param idx].\n\t\t\t\tThe prop_idx argument used to query node property data in other get_node_property_* methods in the interval [0, get_node_property_count() - 1].","returnType":"int"},{"name":"get_node_property_name","signature":"get_node_property_name(idx: int, prop_idx: int) -> StringName","description":"Returns the name of the property at [param prop_idx] for the node at [param idx].","returnType":"StringName"},{"name":"get_node_property_value","signature":"get_node_property_value(idx: int, prop_idx: int) -> Variant","description":"Returns the value of the property at [param prop_idx] for the node at [param idx].","returnType":"Variant"},{"name":"get_node_type","signature":"get_node_type(idx: int) -> StringName","description":"Returns the type of the node at [param idx].","returnType":"StringName"},{"name":"is_node_instance_placeholder","signature":"is_node_instance_placeholder(idx: int) -> bool","description":"Returns true if the node at [param idx] is an .","returnType":"bool"}],"signals":[]},"SceneTree":{"name":"SceneTree","description":"Manages the game loop via a hierarchy of nodes.","inherits":"MainLoop","properties":[{"name":"auto_accept_quit","type":"bool","description":"If [code]true[/code], the application automatically accepts quitting requests.\n\t\t\tFor mobile platforms, see [member quit_on_go_back]."},{"name":"current_scene","type":"Node","description":"The root node of the currently loaded main scene, usually as a direct child of [member root]. See also [method change_scene_to_file], [method change_scene_to_packed], and [method reload_current_scene].\n\t\t\t[b]Warning:[/b] Setting this property directly may not work as expected, as it does [i]not[/i] add or remove any nodes from this tree."},{"name":"debug_collisions_hint","type":"bool","description":"If [code]true[/code], collision shapes will be visible when running the game from the editor for debugging purposes.\n\t\t\t[b]Note:[/b] This property is not designed to be changed at run-time. Changing the value of [member debug_collisions_hint] while the project is running will not have the desired effect."},{"name":"debug_navigation_hint","type":"bool","description":"If [code]true[/code], navigation polygons will be visible when running the game from the editor for debugging purposes.\n\t\t\t[b]Note:[/b] This property is not designed to be changed at run-time. Changing the value of [member debug_navigation_hint] while the project is running will not have the desired effect."},{"name":"debug_paths_hint","type":"bool","description":"If [code]true[/code], curves from [Path2D] and [Path3D] nodes will be visible when running the game from the editor for debugging purposes.\n\t\t\t[b]Note:[/b] This property is not designed to be changed at run-time. Changing the value of [member debug_paths_hint] while the project is running will not have the desired effect."},{"name":"edited_scene_root","type":"Node","description":"The root of the scene currently being edited in the editor. This is usually a direct child of [member root].\n\t\t\t[b]Note:[/b] This property does nothing in release builds."},{"name":"multiplayer_poll","type":"bool","description":"If [code]true[/code] (default value), enables automatic polling of the [MultiplayerAPI] for this SceneTree during [signal process_frame].\n\t\t\tIf [code]false[/code], you need to manually call [method MultiplayerAPI.poll] to process network packets and deliver RPCs. This allows running RPCs in a different loop (e.g. physics, thread, specific time step) and for manual [Mutex] protection when accessing the [MultiplayerAPI] from threads."},{"name":"paused","type":"bool","description":"If [code]true[/code], the scene tree is considered paused. This causes the following behavior:\n\t\t\t- 2D and 3D physics will be stopped, as well as collision detection and related signals.\n\t\t\t- Depending on each node's [member Node.process_mode], their [method Node._process], [method Node._physics_process] and [method Node._input] callback methods may not called anymore."},{"name":"physics_interpolation","type":"bool","description":"If [code]true[/code], the renderer will interpolate the transforms of physics objects between the last two transforms, so that smooth motion is seen even when physics ticks do not coincide with rendered frames.\n\t\t\tThe default value of this property is controlled by [member ProjectSettings.physics/common/physics_interpolation]."},{"name":"quit_on_go_back","type":"bool","description":"If [code]true[/code], the application quits automatically when navigating back (e.g. using the system \"Back\" button on Android).\n\t\t\tTo handle 'Go Back' button when this option is disabled, use [constant DisplayServer.WINDOW_EVENT_GO_BACK_REQUEST]."},{"name":"root","type":"Window","description":"The tree's root [Window]. This is top-most [Node] of the scene tree, and is always present. An absolute [NodePath] always starts from this node. Children of the root node may include the loaded [member current_scene], as well as any [url=$DOCS_URL/tutorials/scripting/singletons_autoload.html]AutoLoad[/url] configured in the Project Settings.\n\t\t\t[b]Warning:[/b] Do not delete this node. This will result in unstable behavior, followed by a crash."}],"methods":[{"name":"call_group","signature":"call_group(group: StringName, method: StringName) -> void","description":"Calls [param method] on each node inside this tree added to the given [param group]. You can pass arguments to [param method] by specifying them at the end of this method call. Nodes that cannot call [param method] (either because the method doesn't exist or the arguments do not match) are ignored. See also [method set_group] and [method notify_group].\n\t\t\t\tNote: This method acts immediately on all selected nodes at once, which may cause stuttering in some performance-intensive situations.\n\t\t\t\tNote: In C#, [param method] must be in snake_case when referring to built-in Godot methods. Prefer using the names exposed in the MethodName class to avoid allocating a new  on each call.","returnType":"void"},{"name":"call_group_flags","signature":"call_group_flags(flags: int, group: StringName, method: StringName) -> void","description":"Calls the given [param method] on each node inside this tree added to the given [param group]. Use [param flags] to customize this method's behavior (see [enum GroupCallFlags]). Additional arguments for [param method] can be passed at the end of this method. Nodes that cannot call [param method] (either because the method doesn't exist or the arguments do not match) are ignored.\n\t\t\t\t\n\t\t\t\t# Calls \"hide\" to all nodes of the \"enemies\" group, at the end of the frame and in reverse tree order.\n\t\t\t\tget_tree().call_group_flags(\n\t\t\t\t        SceneTree.GROUP_CALL_DEFERRED | SceneTree.GROUP_CALL_REVERSE,\n\t\t\t\t        \"enemies\", \"hide\")\n\t\t\t\t\n\t\t\t\tNote: In C#, [param method] must be in snake_case when referring to built-in Godot methods. Prefer using the names exposed in the MethodName class to avoid allocating a new  on each call.","returnType":"void"},{"name":"change_scene_to_file","signature":"change_scene_to_file(path: String) -> int","description":"Changes the running scene to the one at the given [param path], after loading it into a  and creating a new instance.\n\t\t\t\tReturns [constant OK] on success, [constant ERR_CANT_OPEN] if the [param path] cannot be loaded into a , or [constant ERR_CANT_CREATE] if that scene cannot be instantiated.\n\t\t\t\tNote: See [method change_scene_to_packed] for details on the order of operations.","returnType":"int"},{"name":"change_scene_to_packed","signature":"change_scene_to_packed(packed_scene: PackedScene) -> int","description":"Changes the running scene to a new instance of the given  (which must be valid).\n\t\t\t\tReturns [constant OK] on success, [constant ERR_CANT_CREATE] if the scene cannot be instantiated, or [constant ERR_INVALID_PARAMETER] if the scene is invalid.\n\t\t\t\tNote: Operations happen in the following order when [method change_scene_to_packed] is called:\n\t\t\t\t1. The current scene node is immediately removed from the tree. From that point, [method Node.get_tree] called on the current (outgoing) scene will return null. [member current_scene] will be null, too, because the new scene is not available yet.\n\t\t\t\t2. At the end of the frame, the formerly current scene, already removed from the tree, will be deleted (freed from memory) and then the new scene will be instantiated and added to the tree. [method Node.get_tree] and [member current_scene] will be back to working as usual.\n\t\t\t\tThis ensures that both scenes aren't running at the same time, while still freeing the previous scene in a safe way similar to [method Node.queue_free].","returnType":"int"},{"name":"create_timer","signature":"create_timer(time_sec: float, process_always: bool, process_in_physics: bool, ignore_time_scale: bool) -> SceneTreeTimer","description":"Returns a new . After [param time_sec] in seconds have passed, the timer will emit [signal SceneTreeTimer.timeout] and will be automatically freed.\n\t\t\t\tIf [param process_always] is false, the timer will be paused when setting [member SceneTree.paused] to true.\n\t\t\t\tIf [param process_in_physics] is true, the timer will update at the end of the physics frame, instead of the process frame.\n\t\t\t\tIf [param ignore_time_scale] is true, the timer will ignore [member Engine.time_scale] and update with the real, elapsed time.\n\t\t\t\tThis method is commonly used to create a one-shot delay timer, as in the following example:\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tfunc some_function():\n\t\t\t\t    print(\"start\")\n\t\t\t\t    await get_tree().create_timer(1.0).timeout\n\t\t\t\t    print(\"end\")\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tpublic async Task SomeFunction()\n\t\t\t\t{\n\t\t\t\t    GD.Print(\"start\");\n\t\t\t\t    await ToSignal(GetTree().CreateTimer(1.0f), SceneTreeTimer.SignalName.Timeout);\n\t\t\t\t    GD.Print(\"end\");\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tNote: The timer is always updated after all of the nodes in the tree. A node's [method Node._process] method would be called before the timer updates (or [method Node._physics_process] if [param process_in_physics] is set to true).","returnType":"SceneTreeTimer"},{"name":"create_tween","signature":"create_tween() -> Tween","description":"Creates and returns a new  processed in this tree. The Tween will start automatically on the next process frame or physics frame (depending on its [enum Tween.TweenProcessMode]).\n\t\t\t\tNote: A  created using this method is not bound to any . It may keep working until there is nothing left to animate. If you want the  to be automatically killed when the  is freed, use [method Node.create_tween] or [method Tween.bind_node].","returnType":"Tween"},{"name":"get_first_node_in_group","signature":"get_first_node_in_group(group: StringName) -> Node","description":"Returns the first  found inside the tree, that has been added to the given [param group], in scene hierarchy order. Returns null if no match is found. See also [method get_nodes_in_group].","returnType":"Node"},{"name":"get_frame","signature":"get_frame() -> int","description":"Returns how many frames have been processed, since the application started. This is not a measurement of elapsed time.","returnType":"int"},{"name":"get_multiplayer","signature":"get_multiplayer(for_path: NodePath) -> MultiplayerAPI","description":"Searches for the  configured for the given path, if one does not exist it searches the parent paths until one is found. If the path is empty, or none is found, the default one is returned. See [method set_multiplayer].","returnType":"MultiplayerAPI"},{"name":"get_node_count","signature":"get_node_count() -> int","description":"Returns the number of nodes inside this tree.","returnType":"int"},{"name":"get_node_count_in_group","signature":"get_node_count_in_group(group: StringName) -> int","description":"Returns the number of nodes assigned to the given group.","returnType":"int"},{"name":"get_nodes_in_group","signature":"get_nodes_in_group(group: StringName) -> Node[]","description":"Returns an  containing all nodes inside this tree, that have been added to the given [param group], in scene hierarchy order.","returnType":"Node[]"},{"name":"get_processed_tweens","signature":"get_processed_tweens() -> Tween[]","description":"Returns an  of currently existing s in the tree, including paused tweens.","returnType":"Tween[]"},{"name":"has_group","signature":"has_group(name: StringName) -> bool","description":"Returns true if a node added to the given group [param name] exists in the tree.","returnType":"bool"},{"name":"notify_group","signature":"notify_group(group: StringName, notification: int) -> void","description":"Calls [method Object.notification] with the given [param notification] to all nodes inside this tree added to the [param group]. See also [url=$DOCS_URL/tutorials/best_practices/godot_notifications.html]Godot notifications and [method call_group] and [method set_group].\n\t\t\t\tNote: This method acts immediately on all selected nodes at once, which may cause stuttering in some performance-intensive situations.","returnType":"void"},{"name":"notify_group_flags","signature":"notify_group_flags(call_flags: int, group: StringName, notification: int) -> void","description":"Calls [method Object.notification] with the given [param notification] to all nodes inside this tree added to the [param group]. Use [param call_flags] to customize this method's behavior (see [enum GroupCallFlags]).","returnType":"void"},{"name":"queue_delete","signature":"queue_delete(obj: Object) -> void","description":"Queues the given [param obj] to be deleted, calling its [method Object.free] at the end of the current frame. This method is similar to [method Node.queue_free].","returnType":"void"},{"name":"quit","signature":"quit(exit_code: int) -> void","description":"Quits the application at the end of the current iteration, with the given [param exit_code].\n\t\t\t\tBy convention, an exit code of 0 indicates success, whereas any other exit code indicates an error. For portability reasons, it should be between 0 and 125 (inclusive).\n\t\t\t\tNote: On iOS this method doesn't work. Instead, as recommended by the [url=https://developer.apple.com/library/archive/qa/qa1561/_index.html]iOS Human Interface Guidelines, the user is expected to close apps via the Home button.","returnType":"void"},{"name":"reload_current_scene","signature":"reload_current_scene() -> int","description":"Reloads the currently active scene, replacing [member current_scene] with a new instance of its original .\n\t\t\t\tReturns [constant OK] on success, [constant ERR_UNCONFIGURED] if no [member current_scene] is defined, [constant ERR_CANT_OPEN] if [member current_scene] cannot be loaded into a , or [constant ERR_CANT_CREATE] if the scene cannot be instantiated.","returnType":"int"},{"name":"set_group","signature":"set_group(group: StringName, property: String, value: Variant) -> void","description":"Sets the given [param property] to [param value] on all nodes inside this tree added to the given [param group]. Nodes that do not have the [param property] are ignored. See also [method call_group] and [method notify_group].\n\t\t\t\tNote: This method acts immediately on all selected nodes at once, which may cause stuttering in some performance-intensive situations.\n\t\t\t\tNote: In C#, [param property] must be in snake_case when referring to built-in Godot properties. Prefer using the names exposed in the PropertyName class to avoid allocating a new  on each call.","returnType":"void"},{"name":"set_group_flags","signature":"set_group_flags(call_flags: int, group: StringName, property: String, value: Variant) -> void","description":"Sets the given [param property] to [param value] on all nodes inside this tree added to the given [param group]. Nodes that do not have the [param property] are ignored. Use [param call_flags] to customize this method's behavior (see [enum GroupCallFlags]).\n\t\t\t\tNote: In C#, [param property] must be in snake_case when referring to built-in Godot properties. Prefer using the names exposed in the PropertyName class to avoid allocating a new  on each call.","returnType":"void"},{"name":"set_multiplayer","signature":"set_multiplayer(multiplayer: MultiplayerAPI, root_path: NodePath) -> void","description":"Sets a custom  with the given [param root_path] (controlling also the relative subpaths), or override the default one if [param root_path] is empty.\n\t\t\t\tNote: No  must be configured for the subpath containing [param root_path], nested custom multiplayers are not allowed. I.e. if one is configured for \"/root/Foo\" setting one for \"/root/Foo/Bar\" will cause an error.","returnType":"void"},{"name":"unload_current_scene","signature":"unload_current_scene() -> void","description":"If a current scene is loaded, calling this method will unload it.","returnType":"void"}],"signals":[{"name":"node_added","description":"Emitted when the [param node] enters this tree."},{"name":"node_configuration_warning_changed","description":"Emitted when the [param node]'s [method Node.update_configuration_warnings] is called. Only emitted in the editor."},{"name":"node_removed","description":"Emitted when the [param node] exits this tree."},{"name":"node_renamed","description":"Emitted when the [param node]'s [member Node.name] is changed."},{"name":"physics_frame","description":"Emitted immediately before [method Node._physics_process] is called on every node in this tree."},{"name":"process_frame","description":"Emitted immediately before [method Node._process] is called on every node in this tree."},{"name":"tree_changed","description":"Emitted any time the tree's hierarchy changes (nodes being moved, renamed, etc.)."},{"name":"tree_process_mode_changed","description":"Emitted when the [member Node.process_mode] of any node inside the tree is changed. Only emitted in the editor, to update the visibility of disabled nodes."}]},"SceneTreeTimer":{"name":"SceneTreeTimer","description":"One-shot timer.","inherits":"RefCounted","properties":[{"name":"time_left","type":"float","description":"The time remaining (in seconds)."}],"methods":[],"signals":[{"name":"timeout","description":"Emitted when the timer reaches 0."}]},"Script":{"name":"Script","description":"A class stored as a resource.","inherits":"Resource","properties":[{"name":"source_code","type":"String","description":"The script source code or an empty string if source code is not available. When set, does not reload the class implementation automatically."}],"methods":[{"name":"can_instantiate","signature":"can_instantiate() -> bool","description":"Returns true if the script can be instantiated.","returnType":"bool"},{"name":"get_base_script","signature":"get_base_script() -> Script","description":"Returns the script directly inherited by this script.","returnType":"Script"},{"name":"get_global_name","signature":"get_global_name() -> StringName","description":"Returns the class name associated with the script, if there is one. Returns an empty string otherwise.\n\t\t\t\tTo give the script a global name, you can use the class_name keyword in GDScript and the  attribute in C#.\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tclass_name MyNode\n\t\t\t\textends Node\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tusing Godot;\n\n\t\t\t\t\n\t\t\t\tpublic partial class MyNode : Node\n\t\t\t\t{\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t","returnType":"StringName"},{"name":"get_instance_base_type","signature":"get_instance_base_type() -> StringName","description":"Returns the script's base type.","returnType":"StringName"},{"name":"get_property_default_value","signature":"get_property_default_value(property: StringName) -> Variant","description":"Returns the default value of the specified property.","returnType":"Variant"},{"name":"get_rpc_config","signature":"get_rpc_config() -> Variant","description":"Returns a  mapping method names to their RPC configuration defined by this script.","returnType":"Variant"},{"name":"get_script_constant_map","signature":"get_script_constant_map() -> Dictionary","description":"Returns a dictionary containing constant names and their values.","returnType":"Dictionary"},{"name":"get_script_method_list","signature":"get_script_method_list() -> Dictionary[]","description":"Returns the list of methods in this .","returnType":"Dictionary[]"},{"name":"get_script_property_list","signature":"get_script_property_list() -> Dictionary[]","description":"Returns the list of properties in this .","returnType":"Dictionary[]"},{"name":"get_script_signal_list","signature":"get_script_signal_list() -> Dictionary[]","description":"Returns the list of user signals defined in this .","returnType":"Dictionary[]"},{"name":"has_script_signal","signature":"has_script_signal(signal_name: StringName) -> bool","description":"Returns true if the script, or a base class, defines a signal with the given name.","returnType":"bool"},{"name":"has_source_code","signature":"has_source_code() -> bool","description":"Returns true if the script contains non-empty source code.\n\t\t\t\tNote: If a script does not have source code, this does not mean that it is invalid or unusable. For example, a  that was exported with binary tokenization has no source code, but still behaves as expected and could be instantiated. This can be checked with [method can_instantiate].","returnType":"bool"},{"name":"instance_has","signature":"instance_has(base_object: Object) -> bool","description":"Returns true if [param base_object] is an instance of this script.","returnType":"bool"},{"name":"is_abstract","signature":"is_abstract() -> bool","description":"Returns true if the script is an abstract script. An abstract script does not have a constructor and cannot be instantiated.","returnType":"bool"},{"name":"is_tool","signature":"is_tool() -> bool","description":"Returns true if the script is a tool script. A tool script can run in the editor.","returnType":"bool"},{"name":"reload","signature":"reload(keep_state: bool) -> int","description":"Reloads the script's class implementation. Returns an error code.","returnType":"int"}],"signals":[]},"ScriptCreateDialog":{"name":"ScriptCreateDialog","description":"Godot editor's popup dialog for creating new  files.","inherits":"ConfirmationDialog","properties":[],"methods":[{"name":"config","signature":"config(inherits: String, path: String, built_in_enabled: bool, load_enabled: bool) -> void","description":"Prefills required fields to configure the ScriptCreateDialog for use.","returnType":"void"}],"signals":[{"name":"script_created","description":"Emitted when the user clicks the OK button."}]},"ScriptEditor":{"name":"ScriptEditor","description":"Godot editor's script editor.","inherits":"PanelContainer","properties":[],"methods":[{"name":"get_breakpoints","signature":"get_breakpoints() -> PackedStringArray","description":"Returns array of breakpoints.","returnType":"PackedStringArray"},{"name":"get_current_editor","signature":"get_current_editor() -> ScriptEditorBase","description":"Returns the  object that the user is currently editing.","returnType":"ScriptEditorBase"},{"name":"get_current_script","signature":"get_current_script() -> Script","description":"Returns a  that is currently active in editor.","returnType":"Script"},{"name":"get_open_script_editors","signature":"get_open_script_editors() -> ScriptEditorBase[]","description":"Returns an array with all  objects which are currently open in editor.","returnType":"ScriptEditorBase[]"},{"name":"get_open_scripts","signature":"get_open_scripts() -> Script[]","description":"Returns an array with all  objects which are currently open in editor.","returnType":"Script[]"},{"name":"goto_help","signature":"goto_help(topic: String) -> void","description":"Opens help for the given topic. The [param topic] is an encoded string that controls which class, method, constant, signal, annotation, property, or theme item should be focused.\n\t\t\t\tThe supported [param topic] formats include class_name:class, class_method:class:method, class_constant:class:constant, class_signal:class:signal, class_annotation:class:@annotation, class_property:class:property, and class_theme_item:class:item, where class is the class name, method is the method name, constant is the constant name, signal is the signal name, annotation is the annotation name, property is the property name, and item is the theme item.\n\t\t\t\t\n\t\t\t\t# Shows help for the Node class.\n\t\t\t\tclass_name:Node\n\t\t\t\t# Shows help for the global min function.\n\t\t\t\t# Global objects are accessible in the `@GlobalScope` namespace, shown here.\n\t\t\t\tclass_method:@GlobalScope:min\n\t\t\t\t# Shows help for get_viewport in the Node class.\n\t\t\t\tclass_method:Node:get_viewport\n\t\t\t\t# Shows help for the Input constant MOUSE_BUTTON_MIDDLE.\n\t\t\t\tclass_constant:Input:MOUSE_BUTTON_MIDDLE\n\t\t\t\t# Shows help for the BaseButton signal pressed.\n\t\t\t\tclass_signal:BaseButton:pressed\n\t\t\t\t# Shows help for the CanvasItem property visible.\n\t\t\t\tclass_property:CanvasItem:visible\n\t\t\t\t# Shows help for the GDScript annotation export.\n\t\t\t\t# Annotations should be prefixed with the `@` symbol in the descriptor, as shown here.\n\t\t\t\tclass_annotation:@GDScript:@export\n\t\t\t\t# Shows help for the GraphNode theme item named panel_selected.\n\t\t\t\tclass_theme_item:GraphNode:panel_selected\n\t\t\t\t","returnType":"void"},{"name":"goto_line","signature":"goto_line(line_number: int) -> void","description":"Goes to the specified line in the current script.","returnType":"void"},{"name":"open_script_create_dialog","signature":"open_script_create_dialog(base_name: String, base_path: String) -> void","description":"Opens the script create dialog. The script will extend [param base_name]. The file extension can be omitted from [param base_path]. It will be added based on the selected scripting language.","returnType":"void"},{"name":"register_syntax_highlighter","signature":"register_syntax_highlighter(syntax_highlighter: EditorSyntaxHighlighter) -> void","description":"Registers the  to the editor, the  will be available on all open scripts.\n\t\t\t\tNote: Does not apply to scripts that are already opened.","returnType":"void"},{"name":"unregister_syntax_highlighter","signature":"unregister_syntax_highlighter(syntax_highlighter: EditorSyntaxHighlighter) -> void","description":"Unregisters the  from the editor.\n\t\t\t\tNote: The  will still be applied to scripts that are already opened.","returnType":"void"},{"name":"update_docs_from_script","signature":"update_docs_from_script(script: Script) -> void","description":"Updates the documentation for the given [param script] if the script's documentation is currently open.\n\t\t\t\tNote: This should be called whenever the script is changed to keep the open documentation state up to date.","returnType":"void"}],"signals":[{"name":"editor_script_changed","description":"Emitted when user changed active script. Argument is a freshly activated [Script]."},{"name":"script_close","description":"Emitted when editor is about to close the active script. Argument is a [Script] that is going to be closed."}]},"ScriptEditorBase":{"name":"ScriptEditorBase","description":"Base editor for editing scripts in the .","inherits":"VBoxContainer","properties":[],"methods":[{"name":"add_syntax_highlighter","signature":"add_syntax_highlighter(highlighter: EditorSyntaxHighlighter) -> void","description":"Adds a  to the open script.","returnType":"void"},{"name":"get_base_editor","signature":"get_base_editor() -> Control","description":"Returns the underlying  used for editing scripts. For text scripts, this is a .","returnType":"Control"}],"signals":[{"name":"edited_script_changed","description":"Emitted after script validation."},{"name":"go_to_help","description":"Emitted when the user requests a specific documentation page."},{"name":"go_to_method","description":"Emitted when the user requests to view a specific method of a script, similar to [signal request_open_script_at_line]."},{"name":"name_changed","description":"Emitted after script validation or when the edited resource has changed."},{"name":"replace_in_files_requested","description":"Emitted when the user request to find and replace text in the file system."},{"name":"request_help","description":"Emitted when the user requests contextual help."},{"name":"request_open_script_at_line","description":"Emitted when the user requests to view a specific line of a script, similar to [signal go_to_method]."},{"name":"request_save_history","description":"Emitted when the user contextual goto and the item is in the same script."},{"name":"request_save_previous_state","description":"Emitted when the user changes current script or moves caret by 10 or more columns within the same script."},{"name":"search_in_files_requested","description":"Emitted when the user request to search text in the file system."}]},"ScriptExtension":{"name":"ScriptExtension","description":"","inherits":"Script","properties":[],"methods":[{"name":"_can_instantiate","signature":"_can_instantiate() -> bool","description":"","returnType":"bool"},{"name":"_editor_can_reload_from_file","signature":"_editor_can_reload_from_file() -> bool","description":"","returnType":"bool"},{"name":"_get_base_script","signature":"_get_base_script() -> Script","description":"","returnType":"Script"},{"name":"_get_class_icon_path","signature":"_get_class_icon_path() -> String","description":"","returnType":"String"},{"name":"_get_constants","signature":"_get_constants() -> Dictionary","description":"","returnType":"Dictionary"},{"name":"_get_doc_class_name","signature":"_get_doc_class_name() -> StringName","description":"","returnType":"StringName"},{"name":"_get_documentation","signature":"_get_documentation() -> Dictionary[]","description":"","returnType":"Dictionary[]"},{"name":"_get_global_name","signature":"_get_global_name() -> StringName","description":"","returnType":"StringName"},{"name":"_get_instance_base_type","signature":"_get_instance_base_type() -> StringName","description":"","returnType":"StringName"},{"name":"_get_language","signature":"_get_language() -> ScriptLanguage","description":"","returnType":"ScriptLanguage"},{"name":"_get_member_line","signature":"_get_member_line(member: StringName) -> int","description":"","returnType":"int"},{"name":"_get_members","signature":"_get_members() -> StringName[]","description":"","returnType":"StringName[]"},{"name":"_get_method_info","signature":"_get_method_info(method: StringName) -> Dictionary","description":"","returnType":"Dictionary"},{"name":"_get_property_default_value","signature":"_get_property_default_value(property: StringName) -> Variant","description":"","returnType":"Variant"},{"name":"_get_rpc_config","signature":"_get_rpc_config() -> Variant","description":"","returnType":"Variant"},{"name":"_get_script_method_argument_count","signature":"_get_script_method_argument_count(method: StringName) -> Variant","description":"Return the expected argument count for the given [param method], or null if it can't be determined (which will then fall back to the default behavior).","returnType":"Variant"},{"name":"_get_script_method_list","signature":"_get_script_method_list() -> Dictionary[]","description":"","returnType":"Dictionary[]"},{"name":"_get_script_property_list","signature":"_get_script_property_list() -> Dictionary[]","description":"","returnType":"Dictionary[]"},{"name":"_get_script_signal_list","signature":"_get_script_signal_list() -> Dictionary[]","description":"","returnType":"Dictionary[]"},{"name":"_get_source_code","signature":"_get_source_code() -> String","description":"","returnType":"String"},{"name":"_has_method","signature":"_has_method(method: StringName) -> bool","description":"","returnType":"bool"},{"name":"_has_property_default_value","signature":"_has_property_default_value(property: StringName) -> bool","description":"","returnType":"bool"},{"name":"_has_script_signal","signature":"_has_script_signal(signal: StringName) -> bool","description":"","returnType":"bool"},{"name":"_has_source_code","signature":"_has_source_code() -> bool","description":"","returnType":"bool"},{"name":"_has_static_method","signature":"_has_static_method(method: StringName) -> bool","description":"","returnType":"bool"},{"name":"_inherits_script","signature":"_inherits_script(script: Script) -> bool","description":"","returnType":"bool"},{"name":"_instance_create","signature":"_instance_create(for_object: Object) -> void*","description":"","returnType":"void*"},{"name":"_instance_has","signature":"_instance_has(object: Object) -> bool","description":"","returnType":"bool"},{"name":"_is_abstract","signature":"_is_abstract() -> bool","description":"Returns true if the script is an abstract script. An abstract script does not have a constructor and cannot be instantiated.","returnType":"bool"},{"name":"_is_placeholder_fallback_enabled","signature":"_is_placeholder_fallback_enabled() -> bool","description":"","returnType":"bool"},{"name":"_is_tool","signature":"_is_tool() -> bool","description":"","returnType":"bool"},{"name":"_is_valid","signature":"_is_valid() -> bool","description":"","returnType":"bool"},{"name":"_placeholder_erased","signature":"_placeholder_erased(placeholder: void*) -> void","description":"","returnType":"void"},{"name":"_placeholder_instance_create","signature":"_placeholder_instance_create(for_object: Object) -> void*","description":"","returnType":"void*"},{"name":"_reload","signature":"_reload(keep_state: bool) -> int","description":"","returnType":"int"},{"name":"_set_source_code","signature":"_set_source_code(code: String) -> void","description":"","returnType":"void"},{"name":"_update_exports","signature":"_update_exports() -> void","description":"","returnType":"void"}],"signals":[]},"ScriptLanguage":{"name":"ScriptLanguage","description":"","inherits":"Object","properties":[],"methods":[],"signals":[]},"ScriptLanguageExtension":{"name":"ScriptLanguageExtension","description":"","inherits":"ScriptLanguage","properties":[],"methods":[{"name":"_add_global_constant","signature":"_add_global_constant(name: StringName, value: Variant) -> void","description":"","returnType":"void"},{"name":"_add_named_global_constant","signature":"_add_named_global_constant(name: StringName, value: Variant) -> void","description":"","returnType":"void"},{"name":"_auto_indent_code","signature":"_auto_indent_code(code: String, from_line: int, to_line: int) -> String","description":"","returnType":"String"},{"name":"_can_inherit_from_file","signature":"_can_inherit_from_file() -> bool","description":"","returnType":"bool"},{"name":"_can_make_function","signature":"_can_make_function() -> bool","description":"","returnType":"bool"},{"name":"_complete_code","signature":"_complete_code(code: String, path: String, owner: Object) -> Dictionary","description":"","returnType":"Dictionary"},{"name":"_create_script","signature":"_create_script() -> Object","description":"","returnType":"Object"},{"name":"_debug_get_current_stack_info","signature":"_debug_get_current_stack_info() -> Dictionary[]","description":"","returnType":"Dictionary[]"},{"name":"_debug_get_error","signature":"_debug_get_error() -> String","description":"","returnType":"String"},{"name":"_debug_get_globals","signature":"_debug_get_globals(max_subitems: int, max_depth: int) -> Dictionary","description":"","returnType":"Dictionary"},{"name":"_debug_get_stack_level_count","signature":"_debug_get_stack_level_count() -> int","description":"","returnType":"int"},{"name":"_debug_get_stack_level_function","signature":"_debug_get_stack_level_function(level: int) -> String","description":"","returnType":"String"},{"name":"_debug_get_stack_level_instance","signature":"_debug_get_stack_level_instance(level: int) -> void*","description":"","returnType":"void*"},{"name":"_debug_get_stack_level_line","signature":"_debug_get_stack_level_line(level: int) -> int","description":"","returnType":"int"},{"name":"_debug_get_stack_level_locals","signature":"_debug_get_stack_level_locals(level: int, max_subitems: int, max_depth: int) -> Dictionary","description":"","returnType":"Dictionary"},{"name":"_debug_get_stack_level_members","signature":"_debug_get_stack_level_members(level: int, max_subitems: int, max_depth: int) -> Dictionary","description":"","returnType":"Dictionary"},{"name":"_debug_get_stack_level_source","signature":"_debug_get_stack_level_source(level: int) -> String","description":"Returns the source associated with a given debug stack position.","returnType":"String"},{"name":"_debug_parse_stack_level_expression","signature":"_debug_parse_stack_level_expression(level: int, expression: String, max_subitems: int, max_depth: int) -> String","description":"","returnType":"String"},{"name":"_find_function","signature":"_find_function(function: String, code: String) -> int","description":"Returns the line where the function is defined in the code, or -1 if the function is not present.","returnType":"int"},{"name":"_finish","signature":"_finish() -> void","description":"","returnType":"void"},{"name":"_frame","signature":"_frame() -> void","description":"","returnType":"void"},{"name":"_get_built_in_templates","signature":"_get_built_in_templates(object: StringName) -> Dictionary[]","description":"","returnType":"Dictionary[]"},{"name":"_get_comment_delimiters","signature":"_get_comment_delimiters() -> PackedStringArray","description":"","returnType":"PackedStringArray"},{"name":"_get_doc_comment_delimiters","signature":"_get_doc_comment_delimiters() -> PackedStringArray","description":"","returnType":"PackedStringArray"},{"name":"_get_extension","signature":"_get_extension() -> String","description":"","returnType":"String"},{"name":"_get_global_class_name","signature":"_get_global_class_name(path: String) -> Dictionary","description":"","returnType":"Dictionary"},{"name":"_get_name","signature":"_get_name() -> String","description":"","returnType":"String"},{"name":"_get_public_annotations","signature":"_get_public_annotations() -> Dictionary[]","description":"","returnType":"Dictionary[]"},{"name":"_get_public_constants","signature":"_get_public_constants() -> Dictionary","description":"","returnType":"Dictionary"},{"name":"_get_public_functions","signature":"_get_public_functions() -> Dictionary[]","description":"","returnType":"Dictionary[]"},{"name":"_get_recognized_extensions","signature":"_get_recognized_extensions() -> PackedStringArray","description":"","returnType":"PackedStringArray"},{"name":"_get_reserved_words","signature":"_get_reserved_words() -> PackedStringArray","description":"","returnType":"PackedStringArray"},{"name":"_get_string_delimiters","signature":"_get_string_delimiters() -> PackedStringArray","description":"","returnType":"PackedStringArray"},{"name":"_get_type","signature":"_get_type() -> String","description":"","returnType":"String"},{"name":"_handles_global_class_type","signature":"_handles_global_class_type(type: String) -> bool","description":"","returnType":"bool"},{"name":"_has_named_classes","signature":"_has_named_classes() -> bool","description":"","returnType":"bool"},{"name":"_init","signature":"_init() -> void","description":"","returnType":"void"},{"name":"_is_control_flow_keyword","signature":"_is_control_flow_keyword(keyword: String) -> bool","description":"","returnType":"bool"},{"name":"_is_using_templates","signature":"_is_using_templates() -> bool","description":"","returnType":"bool"},{"name":"_lookup_code","signature":"_lookup_code(code: String, symbol: String, path: String, owner: Object) -> Dictionary","description":"","returnType":"Dictionary"},{"name":"_make_function","signature":"_make_function(class_name: String, function_name: String, function_args: PackedStringArray) -> String","description":"","returnType":"String"},{"name":"_make_template","signature":"_make_template(template: String, class_name: String, base_class_name: String) -> Script","description":"","returnType":"Script"},{"name":"_open_in_external_editor","signature":"_open_in_external_editor(script: Script, line: int, column: int) -> int","description":"","returnType":"int"},{"name":"_overrides_external_editor","signature":"_overrides_external_editor() -> bool","description":"","returnType":"bool"},{"name":"_preferred_file_name_casing","signature":"_preferred_file_name_casing() -> int","description":"","returnType":"int"},{"name":"_profiling_get_accumulated_data","signature":"_profiling_get_accumulated_data(info_array: ScriptLanguageExtensionProfilingInfo*, info_max: int) -> int","description":"","returnType":"int"},{"name":"_profiling_get_frame_data","signature":"_profiling_get_frame_data(info_array: ScriptLanguageExtensionProfilingInfo*, info_max: int) -> int","description":"","returnType":"int"},{"name":"_profiling_set_save_native_calls","signature":"_profiling_set_save_native_calls(enable: bool) -> void","description":"","returnType":"void"},{"name":"_profiling_start","signature":"_profiling_start() -> void","description":"","returnType":"void"},{"name":"_profiling_stop","signature":"_profiling_stop() -> void","description":"","returnType":"void"},{"name":"_reload_all_scripts","signature":"_reload_all_scripts() -> void","description":"","returnType":"void"},{"name":"_reload_scripts","signature":"_reload_scripts(scripts: Array, soft_reload: bool) -> void","description":"","returnType":"void"},{"name":"_reload_tool_script","signature":"_reload_tool_script(script: Script, soft_reload: bool) -> void","description":"","returnType":"void"},{"name":"_remove_named_global_constant","signature":"_remove_named_global_constant(name: StringName) -> void","description":"","returnType":"void"},{"name":"_supports_builtin_mode","signature":"_supports_builtin_mode() -> bool","description":"","returnType":"bool"},{"name":"_supports_documentation","signature":"_supports_documentation() -> bool","description":"","returnType":"bool"},{"name":"_thread_enter","signature":"_thread_enter() -> void","description":"","returnType":"void"},{"name":"_thread_exit","signature":"_thread_exit() -> void","description":"","returnType":"void"},{"name":"_validate","signature":"_validate(script: String, path: String, validate_functions: bool, validate_errors: bool, validate_warnings: bool, validate_safe_lines: bool) -> Dictionary","description":"","returnType":"Dictionary"},{"name":"_validate_path","signature":"_validate_path(path: String) -> String","description":"","returnType":"String"}],"signals":[]},"ScrollBar":{"name":"ScrollBar","description":"Abstract base class for scrollbars.","inherits":"Range","properties":[{"name":"custom_step","type":"float","description":"Overrides the step used when clicking increment and decrement buttons or when using arrow keys when the [ScrollBar] is focused."}],"methods":[],"signals":[{"name":"scrolling","description":"Emitted when the scrollbar is being scrolled."}]},"ScrollContainer":{"name":"ScrollContainer","description":"A container used to provide scrollbars to a child control when needed.","inherits":"Container","properties":[{"name":"draw_focus_border","type":"bool","description":"If [code]true[/code], [theme_item focus] is drawn when the ScrollContainer or one of its descendant nodes is focused."},{"name":"follow_focus","type":"bool","description":"If [code]true[/code], the ScrollContainer will automatically scroll to focused children (including indirect children) to make sure they are fully visible."},{"name":"horizontal_scroll_mode","type":"int","description":"Controls whether horizontal scrollbar can be used and when it should be visible. See [enum ScrollMode] for options."},{"name":"scroll_deadzone","type":"int","description":"Deadzone for touch scrolling. Lower deadzone makes the scrolling more sensitive."},{"name":"scroll_horizontal","type":"int","description":"The current horizontal scroll value.\n\t\t\t[b]Note:[/b] If you are setting this value in the [method Node._ready] function or earlier, it needs to be wrapped with [method Object.set_deferred], since scroll bar's [member Range.max_value] is not initialized yet.\n\t\t\t[codeblock]\n\t\t\tfunc _ready():\n\t\t\t    set_deferred(\"scroll_horizontal\", 600)\n\t\t\t[/codeblock]"},{"name":"scroll_horizontal_custom_step","type":"float","description":"Overrides the [member ScrollBar.custom_step] used when clicking the internal scroll bar's horizontal increment and decrement buttons or when using arrow keys when the [ScrollBar] is focused."},{"name":"scroll_vertical","type":"int","description":"The current vertical scroll value.\n\t\t\t[b]Note:[/b] Setting it early needs to be deferred, just like in [member scroll_horizontal].\n\t\t\t[codeblock]\n\t\t\tfunc _ready():\n\t\t\t    set_deferred(\"scroll_vertical\", 600)\n\t\t\t[/codeblock]"},{"name":"scroll_vertical_custom_step","type":"float","description":"Overrides the [member ScrollBar.custom_step] used when clicking the internal scroll bar's vertical increment and decrement buttons or when using arrow keys when the [ScrollBar] is focused."},{"name":"vertical_scroll_mode","type":"int","description":"Controls whether vertical scrollbar can be used and when it should be visible. See [enum ScrollMode] for options."}],"methods":[{"name":"ensure_control_visible","signature":"ensure_control_visible(control: Control) -> void","description":"Ensures the given [param control] is visible (must be a direct or indirect child of the ScrollContainer). Used by [member follow_focus].\n\t\t\t\tNote: This will not work on a node that was just added during the same frame. If you want to scroll to a newly added child, you must wait until the next frame using [signal SceneTree.process_frame]:\n\t\t\t\t\n\t\t\t\tadd_child(child_node)\n\t\t\t\tawait get_tree().process_frame\n\t\t\t\tensure_control_visible(child_node)\n\t\t\t\t","returnType":"void"},{"name":"get_h_scroll_bar","signature":"get_h_scroll_bar() -> HScrollBar","description":"Returns the horizontal scrollbar  of this .\n\t\t\t\tWarning: This is a required internal node, removing and freeing it may cause a crash. If you wish to disable or hide a scrollbar, you can use [member horizontal_scroll_mode].","returnType":"HScrollBar"},{"name":"get_v_scroll_bar","signature":"get_v_scroll_bar() -> VScrollBar","description":"Returns the vertical scrollbar  of this .\n\t\t\t\tWarning: This is a required internal node, removing and freeing it may cause a crash. If you wish to disable or hide a scrollbar, you can use [member vertical_scroll_mode].","returnType":"VScrollBar"}],"signals":[{"name":"scroll_ended","description":"Emitted when scrolling stops when dragging the scrollable area [i]with a touch event[/i]. This signal is [i]not[/i] emitted when scrolling by dragging the scrollbar, scrolling with the mouse wheel or scrolling with keyboard/gamepad events.\n\t\t\t\t[b]Note:[/b] This signal is only emitted on Android or iOS, or on desktop/web platforms when [member ProjectSettings.input_devices/pointing/emulate_touch_from_mouse] is enabled."},{"name":"scroll_started","description":"Emitted when scrolling starts when dragging the scrollable area w[i]ith a touch event[/i]. This signal is [i]not[/i] emitted when scrolling by dragging the scrollbar, scrolling with the mouse wheel or scrolling with keyboard/gamepad events.\n\t\t\t\t[b]Note:[/b] This signal is only emitted on Android or iOS, or on desktop/web platforms when [member ProjectSettings.input_devices/pointing/emulate_touch_from_mouse] is enabled."}]},"SegmentShape2D":{"name":"SegmentShape2D","description":"A 2D line segment shape used for physics collision.","inherits":"Shape2D","properties":[{"name":"a","type":"Vector2","description":"The segment's first point position."},{"name":"b","type":"Vector2","description":"The segment's second point position."}],"methods":[],"signals":[]},"Semaphore":{"name":"Semaphore","description":"A synchronization mechanism used to control access to a shared resource by s.","inherits":"RefCounted","properties":[],"methods":[{"name":"post","signature":"post(count: int) -> void","description":"Lowers the , allowing one thread in, or more if [param count] is specified.","returnType":"void"},{"name":"try_wait","signature":"try_wait() -> bool","description":"Like [method wait], but won't block, so if the value is zero, fails immediately and returns false. If non-zero, it returns true to report success.","returnType":"bool"},{"name":"wait","signature":"wait() -> void","description":"Waits for the , if its value is zero, blocks until non-zero.","returnType":"void"}],"signals":[]},"SeparationRayShape2D":{"name":"SeparationRayShape2D","description":"A 2D ray shape used for physics collision that tries to separate itself from any collider.","inherits":"Shape2D","properties":[{"name":"length","type":"float","description":"The ray's length."},{"name":"slide_on_slope","type":"bool","description":"If [code]false[/code] (default), the shape always separates and returns a normal along its own direction.\n\t\t\tIf [code]true[/code], the shape can return the correct normal and separate in any direction, allowing sliding motion on slopes."}],"methods":[],"signals":[]},"SeparationRayShape3D":{"name":"SeparationRayShape3D","description":"A 3D ray shape used for physics collision that tries to separate itself from any collider.","inherits":"Shape3D","properties":[{"name":"length","type":"float","description":"The ray's length."},{"name":"slide_on_slope","type":"bool","description":"If [code]false[/code] (default), the shape always separates and returns a normal along its own direction.\n\t\t\tIf [code]true[/code], the shape can return the correct normal and separate in any direction, allowing sliding motion on slopes."}],"methods":[],"signals":[]},"Separator":{"name":"Separator","description":"Abstract base class for separators.","inherits":"Control","properties":[],"methods":[],"signals":[]},"Shader":{"name":"Shader","description":"A shader implemented in the Godot shading language.","inherits":"Resource","properties":[{"name":"code","type":"String","description":"Returns the shader's code as the user has written it, not the full generated code used internally."}],"methods":[{"name":"get_default_texture_parameter","signature":"get_default_texture_parameter(name: StringName, index: int) -> Texture","description":"Returns the texture that is set as default for the specified parameter.\n\t\t\t\tNote: [param name] must match the name of the uniform in the code exactly.\n\t\t\t\tNote: If the sampler array is used use [param index] to access the specified texture.","returnType":"Texture"},{"name":"get_mode","signature":"get_mode() -> int","description":"Returns the shader mode for the shader.","returnType":"int"},{"name":"get_shader_uniform_list","signature":"get_shader_uniform_list(get_groups: bool) -> Array","description":"Returns the list of shader uniforms that can be assigned to a , for use with [method ShaderMaterial.set_shader_parameter] and [method ShaderMaterial.get_shader_parameter]. The parameters returned are contained in dictionaries in a similar format to the ones returned by [method Object.get_property_list].\n\t\t\t\tIf argument [param get_groups] is true, parameter grouping hints are also included in the list.","returnType":"Array"},{"name":"inspect_native_shader_code","signature":"inspect_native_shader_code() -> void","description":"Only available when running in the editor. Opens a popup that visualizes the generated shader code, including all variants and internal shader code. See also [method Material.inspect_native_shader_code].","returnType":"void"},{"name":"set_default_texture_parameter","signature":"set_default_texture_parameter(name: StringName, texture: Texture, index: int) -> void","description":"Sets the default texture to be used with a texture uniform. The default is used if a texture is not set in the .\n\t\t\t\tNote: [param name] must match the name of the uniform in the code exactly.\n\t\t\t\tNote: If the sampler array is used use [param index] to access the specified texture.","returnType":"void"}],"signals":[]},"ShaderGlobalsOverride":{"name":"ShaderGlobalsOverride","description":"A node used to override global shader parameters' values in a scene.","inherits":"Node","properties":[],"methods":[],"signals":[]},"ShaderInclude":{"name":"ShaderInclude","description":"A snippet of shader code to be included in a  with #include.","inherits":"Resource","properties":[{"name":"code","type":"String","description":"Returns the code of the shader include file. The returned text is what the user has written, not the full generated code used internally."}],"methods":[],"signals":[]},"ShaderIncludeDB":{"name":"ShaderIncludeDB","description":"Internal database of built in shader include files.","inherits":"Object","properties":[],"methods":[{"name":"get_built_in_include_file","signature":"get_built_in_include_file(filename: String) -> String","description":"Returns the code for the built-in shader fragment. You can also access this in your shader code through #include \"filename\".","returnType":"String"},{"name":"has_built_in_include_file","signature":"has_built_in_include_file(filename: String) -> bool","description":"Returns true if an include file with this name exists.","returnType":"bool"},{"name":"list_built_in_include_files","signature":"list_built_in_include_files() -> PackedStringArray","description":"Returns a list of built-in include files that are currently registered.","returnType":"PackedStringArray"}],"signals":[]},"ShaderMaterial":{"name":"ShaderMaterial","description":"A material defined by a custom  program and the values of its shader parameters.","inherits":"Material","properties":[{"name":"shader","type":"Shader","description":"The [Shader] program used to render this material."}],"methods":[{"name":"get_shader_parameter","signature":"get_shader_parameter(param: StringName) -> Variant","description":"Returns the current value set for this material of a uniform in the shader.","returnType":"Variant"},{"name":"set_shader_parameter","signature":"set_shader_parameter(param: StringName, value: Variant) -> void","description":"Changes the value set for this material of a uniform in the shader.\n\t\t\t\tNote: [param param] is case-sensitive and must match the name of the uniform in the code exactly (not the capitalized name in the inspector).\n\t\t\t\tNote: Changes to the shader uniform will be effective on all instances using this . To prevent this, use per-instance uniforms with [method GeometryInstance3D.set_instance_shader_parameter] or duplicate the  resource using [method Resource.duplicate]. Per-instance uniforms allow for better shader reuse and are therefore faster, so they should be preferred over duplicating the  when possible.","returnType":"void"}],"signals":[]},"Shape2D":{"name":"Shape2D","description":"Abstract base class for 2D shapes used for physics collision.","inherits":"Resource","properties":[{"name":"custom_solver_bias","type":"float","description":"The shape's custom solver bias. Defines how much bodies react to enforce contact separation when this shape is involved.\n\t\t\tWhen set to [code]0[/code], the default value from [member ProjectSettings.physics/2d/solver/default_contact_bias] is used."}],"methods":[{"name":"collide","signature":"collide(local_xform: Transform2D, with_shape: Shape2D, shape_xform: Transform2D) -> bool","description":"Returns true if this shape is colliding with another.\n\t\t\t\tThis method needs the transformation matrix for this shape ([param local_xform]), the shape to check collisions with ([param with_shape]), and the transformation matrix of that shape ([param shape_xform]).","returnType":"bool"},{"name":"collide_and_get_contacts","signature":"collide_and_get_contacts(local_xform: Transform2D, with_shape: Shape2D, shape_xform: Transform2D) -> PackedVector2Array","description":"Returns a list of contact point pairs where this shape touches another.\n\t\t\t\tIf there are no collisions, the returned list is empty. Otherwise, the returned list contains contact points arranged in pairs, with entries alternating between points on the boundary of this shape and points on the boundary of [param with_shape].\n\t\t\t\tA collision pair A, B can be used to calculate the collision normal with (B - A).normalized(), and the collision depth with (B - A).length(). This information is typically used to separate shapes, particularly in collision solvers.\n\t\t\t\tThis method needs the transformation matrix for this shape ([param local_xform]), the shape to check collisions with ([param with_shape]), and the transformation matrix of that shape ([param shape_xform]).","returnType":"PackedVector2Array"},{"name":"collide_with_motion","signature":"collide_with_motion(local_xform: Transform2D, local_motion: Vector2, with_shape: Shape2D, shape_xform: Transform2D, shape_motion: Vector2) -> bool","description":"Returns whether this shape would collide with another, if a given movement was applied.\n\t\t\t\tThis method needs the transformation matrix for this shape ([param local_xform]), the movement to test on this shape ([param local_motion]), the shape to check collisions with ([param with_shape]), the transformation matrix of that shape ([param shape_xform]), and the movement to test onto the other object ([param shape_motion]).","returnType":"bool"},{"name":"collide_with_motion_and_get_contacts","signature":"collide_with_motion_and_get_contacts(local_xform: Transform2D, local_motion: Vector2, with_shape: Shape2D, shape_xform: Transform2D, shape_motion: Vector2) -> PackedVector2Array","description":"Returns a list of contact point pairs where this shape would touch another, if a given movement was applied.\n\t\t\t\tIf there would be no collisions, the returned list is empty. Otherwise, the returned list contains contact points arranged in pairs, with entries alternating between points on the boundary of this shape and points on the boundary of [param with_shape].\n\t\t\t\tA collision pair A, B can be used to calculate the collision normal with (B - A).normalized(), and the collision depth with (B - A).length(). This information is typically used to separate shapes, particularly in collision solvers.\n\t\t\t\tThis method needs the transformation matrix for this shape ([param local_xform]), the movement to test on this shape ([param local_motion]), the shape to check collisions with ([param with_shape]), the transformation matrix of that shape ([param shape_xform]), and the movement to test onto the other object ([param shape_motion]).","returnType":"PackedVector2Array"},{"name":"draw","signature":"draw(canvas_item: RID, color: Color) -> void","description":"Draws a solid shape onto a  with the  API filled with the specified [param color]. The exact drawing method is specific for each shape and cannot be configured.","returnType":"void"},{"name":"get_rect","signature":"get_rect() -> Rect2","description":"Returns a  representing the shapes boundary.","returnType":"Rect2"}],"signals":[]},"Shape3D":{"name":"Shape3D","description":"Abstract base class for 3D shapes used for physics collision.","inherits":"Resource","properties":[{"name":"custom_solver_bias","type":"float","description":"The shape's custom solver bias. Defines how much bodies react to enforce contact separation when this shape is involved.\n\t\t\tWhen set to [code]0[/code], the default value from [member ProjectSettings.physics/3d/solver/default_contact_bias] is used."},{"name":"margin","type":"float","description":"The collision margin for the shape. This is not used in Godot Physics.\n\t\t\tCollision margins allow collision detection to be more efficient by adding an extra shell around shapes. Collision algorithms are more expensive when objects overlap by more than their margin, so a higher value for margins is better for performance, at the cost of accuracy around edges as it makes them less sharp."}],"methods":[{"name":"get_debug_mesh","signature":"get_debug_mesh() -> ArrayMesh","description":"Returns the  used to draw the debug collision for this .","returnType":"ArrayMesh"}],"signals":[]},"ShapeCast2D":{"name":"ShapeCast2D","description":"A 2D shape that sweeps a region of space to detect s.","inherits":"Node2D","properties":[{"name":"collide_with_areas","type":"bool","description":"If [code]true[/code], collisions with [Area2D]s will be reported."},{"name":"collide_with_bodies","type":"bool","description":"If [code]true[/code], collisions with [PhysicsBody2D]s will be reported."},{"name":"collision_mask","type":"int","description":"The shape's collision mask. Only objects in at least one collision layer enabled in the mask will be detected. See [url=$DOCS_URL/tutorials/physics/physics_introduction.html#collision-layers-and-masks]Collision layers and masks[/url] in the documentation for more information."},{"name":"collision_result","type":"Array","description":"Returns the complete collision information from the collision sweep. The data returned is the same as in the [method PhysicsDirectSpaceState2D.get_rest_info] method."},{"name":"enabled","type":"bool","description":"If [code]true[/code], collisions will be reported."},{"name":"exclude_parent","type":"bool","description":"If [code]true[/code], the parent node will be excluded from collision detection."},{"name":"margin","type":"float","description":"The collision margin for the shape. A larger margin helps detecting collisions more consistently, at the cost of precision."},{"name":"max_results","type":"int","description":"The number of intersections can be limited with this parameter, to reduce the processing time."},{"name":"shape","type":"Shape2D","description":"The shape to be used for collision queries."},{"name":"target_position","type":"Vector2","description":"The shape's destination point, relative to this node's [member Node2D.position]."}],"methods":[{"name":"add_exception","signature":"add_exception(node: CollisionObject2D) -> void","description":"Adds a collision exception so the shape does not report collisions with the specified node.","returnType":"void"},{"name":"add_exception_rid","signature":"add_exception_rid(rid: RID) -> void","description":"Adds a collision exception so the shape does not report collisions with the specified .","returnType":"void"},{"name":"clear_exceptions","signature":"clear_exceptions() -> void","description":"Removes all collision exceptions for this shape.","returnType":"void"},{"name":"force_shapecast_update","signature":"force_shapecast_update() -> void","description":"Updates the collision information for the shape immediately, without waiting for the next _physics_process call. Use this method, for example, when the shape or its parent has changed state.\n\t\t\t\tNote: Setting [member enabled] to true is not required for this to work.","returnType":"void"},{"name":"get_closest_collision_safe_fraction","signature":"get_closest_collision_safe_fraction() -> float","description":"Returns the fraction from this cast's origin to its [member target_position] of how far the shape can move without triggering a collision, as a value between 0.0 and 1.0.","returnType":"float"},{"name":"get_closest_collision_unsafe_fraction","signature":"get_closest_collision_unsafe_fraction() -> float","description":"Returns the fraction from this cast's origin to its [member target_position] of how far the shape must move to trigger a collision, as a value between 0.0 and 1.0.\n\t\t\t\tIn ideal conditions this would be the same as [method get_closest_collision_safe_fraction], however shape casting is calculated in discrete steps, so the precise point of collision can occur between two calculated positions.","returnType":"float"},{"name":"get_collider","signature":"get_collider(index: int) -> Object","description":"Returns the collided  of one of the multiple collisions at [param index], or null if no object is intersecting the shape (i.e. [method is_colliding] returns false).","returnType":"Object"},{"name":"get_collider_rid","signature":"get_collider_rid(index: int) -> RID","description":"Returns the  of the collided object of one of the multiple collisions at [param index].","returnType":"RID"},{"name":"get_collider_shape","signature":"get_collider_shape(index: int) -> int","description":"Returns the shape ID of the colliding shape of one of the multiple collisions at [param index], or 0 if no object is intersecting the shape (i.e. [method is_colliding] returns false).","returnType":"int"},{"name":"get_collision_count","signature":"get_collision_count() -> int","description":"The number of collisions detected at the point of impact. Use this to iterate over multiple collisions as provided by [method get_collider], [method get_collider_shape], [method get_collision_point], and [method get_collision_normal] methods.","returnType":"int"},{"name":"get_collision_mask_value","signature":"get_collision_mask_value(layer_number: int) -> bool","description":"Returns whether or not the specified layer of the [member collision_mask] is enabled, given a [param layer_number] between 1 and 32.","returnType":"bool"},{"name":"get_collision_normal","signature":"get_collision_normal(index: int) -> Vector2","description":"Returns the normal of one of the multiple collisions at [param index] of the intersecting object.","returnType":"Vector2"},{"name":"get_collision_point","signature":"get_collision_point(index: int) -> Vector2","description":"Returns the collision point of one of the multiple collisions at [param index] where the shape intersects the colliding object.\n\t\t\t\tNote: This point is in the global coordinate system.","returnType":"Vector2"},{"name":"is_colliding","signature":"is_colliding() -> bool","description":"Returns whether any object is intersecting with the shape's vector (considering the vector length).","returnType":"bool"},{"name":"remove_exception","signature":"remove_exception(node: CollisionObject2D) -> void","description":"Removes a collision exception so the shape does report collisions with the specified node.","returnType":"void"},{"name":"remove_exception_rid","signature":"remove_exception_rid(rid: RID) -> void","description":"Removes a collision exception so the shape does report collisions with the specified .","returnType":"void"},{"name":"set_collision_mask_value","signature":"set_collision_mask_value(layer_number: int, value: bool) -> void","description":"Based on [param value], enables or disables the specified layer in the [member collision_mask], given a [param layer_number] between 1 and 32.","returnType":"void"}],"signals":[]},"ShapeCast3D":{"name":"ShapeCast3D","description":"A 3D shape that sweeps a region of space to detect s.","inherits":"Node3D","properties":[{"name":"collide_with_areas","type":"bool","description":"If [code]true[/code], collisions with [Area3D]s will be reported."},{"name":"collide_with_bodies","type":"bool","description":"If [code]true[/code], collisions with [PhysicsBody3D]s will be reported."},{"name":"collision_mask","type":"int","description":"The shape's collision mask. Only objects in at least one collision layer enabled in the mask will be detected. See [url=$DOCS_URL/tutorials/physics/physics_introduction.html#collision-layers-and-masks]Collision layers and masks[/url] in the documentation for more information."},{"name":"collision_result","type":"Array","description":"Returns the complete collision information from the collision sweep. The data returned is the same as in the [method PhysicsDirectSpaceState3D.get_rest_info] method."},{"name":"debug_shape_custom_color","type":"Color","description":"The custom color to use to draw the shape in the editor and at run-time if [b]Visible Collision Shapes[/b] is enabled in the [b]Debug[/b] menu. This color will be highlighted at run-time if the [ShapeCast3D] is colliding with something.\n\t\t\tIf set to [code]Color(0.0, 0.0, 0.0)[/code] (by default), the color set in [member ProjectSettings.debug/shapes/collision/shape_color] is used."},{"name":"enabled","type":"bool","description":"If [code]true[/code], collisions will be reported."},{"name":"exclude_parent","type":"bool","description":"If [code]true[/code], the parent node will be excluded from collision detection."},{"name":"margin","type":"float","description":"The collision margin for the shape. A larger margin helps detecting collisions more consistently, at the cost of precision."},{"name":"max_results","type":"int","description":"The number of intersections can be limited with this parameter, to reduce the processing time."},{"name":"shape","type":"Shape3D","description":"The shape to be used for collision queries."},{"name":"target_position","type":"Vector3","description":"The shape's destination point, relative to this node's [member Node3D.position]."}],"methods":[{"name":"add_exception","signature":"add_exception(node: CollisionObject3D) -> void","description":"Adds a collision exception so the shape does not report collisions with the specified node.","returnType":"void"},{"name":"add_exception_rid","signature":"add_exception_rid(rid: RID) -> void","description":"Adds a collision exception so the shape does not report collisions with the specified .","returnType":"void"},{"name":"clear_exceptions","signature":"clear_exceptions() -> void","description":"Removes all collision exceptions for this shape.","returnType":"void"},{"name":"force_shapecast_update","signature":"force_shapecast_update() -> void","description":"Updates the collision information for the shape immediately, without waiting for the next _physics_process call. Use this method, for example, when the shape or its parent has changed state.\n\t\t\t\tNote: Setting [member enabled] to true is not required for this to work.","returnType":"void"},{"name":"get_closest_collision_safe_fraction","signature":"get_closest_collision_safe_fraction() -> float","description":"Returns the fraction from this cast's origin to its [member target_position] of how far the shape can move without triggering a collision, as a value between 0.0 and 1.0.","returnType":"float"},{"name":"get_closest_collision_unsafe_fraction","signature":"get_closest_collision_unsafe_fraction() -> float","description":"Returns the fraction from this cast's origin to its [member target_position] of how far the shape must move to trigger a collision, as a value between 0.0 and 1.0.\n\t\t\t\tIn ideal conditions this would be the same as [method get_closest_collision_safe_fraction], however shape casting is calculated in discrete steps, so the precise point of collision can occur between two calculated positions.","returnType":"float"},{"name":"get_collider","signature":"get_collider(index: int) -> Object","description":"Returns the collided  of one of the multiple collisions at [param index], or null if no object is intersecting the shape (i.e. [method is_colliding] returns false).","returnType":"Object"},{"name":"get_collider_rid","signature":"get_collider_rid(index: int) -> RID","description":"Returns the  of the collided object of one of the multiple collisions at [param index].","returnType":"RID"},{"name":"get_collider_shape","signature":"get_collider_shape(index: int) -> int","description":"Returns the shape ID of the colliding shape of one of the multiple collisions at [param index], or 0 if no object is intersecting the shape (i.e. [method is_colliding] returns false).","returnType":"int"},{"name":"get_collision_count","signature":"get_collision_count() -> int","description":"The number of collisions detected at the point of impact. Use this to iterate over multiple collisions as provided by [method get_collider], [method get_collider_shape], [method get_collision_point], and [method get_collision_normal] methods.","returnType":"int"},{"name":"get_collision_mask_value","signature":"get_collision_mask_value(layer_number: int) -> bool","description":"Returns whether or not the specified layer of the [member collision_mask] is enabled, given a [param layer_number] between 1 and 32.","returnType":"bool"},{"name":"get_collision_normal","signature":"get_collision_normal(index: int) -> Vector3","description":"Returns the normal of one of the multiple collisions at [param index] of the intersecting object.","returnType":"Vector3"},{"name":"get_collision_point","signature":"get_collision_point(index: int) -> Vector3","description":"Returns the collision point of one of the multiple collisions at [param index] where the shape intersects the colliding object.\n\t\t\t\tNote: This point is in the global coordinate system.","returnType":"Vector3"},{"name":"is_colliding","signature":"is_colliding() -> bool","description":"Returns whether any object is intersecting with the shape's vector (considering the vector length).","returnType":"bool"},{"name":"remove_exception","signature":"remove_exception(node: CollisionObject3D) -> void","description":"Removes a collision exception so the shape does report collisions with the specified node.","returnType":"void"},{"name":"remove_exception_rid","signature":"remove_exception_rid(rid: RID) -> void","description":"Removes a collision exception so the shape does report collisions with the specified .","returnType":"void"},{"name":"resource_changed","signature":"resource_changed(resource: Resource) -> void","description":"This method does nothing.","returnType":"void"},{"name":"set_collision_mask_value","signature":"set_collision_mask_value(layer_number: int, value: bool) -> void","description":"Based on [param value], enables or disables the specified layer in the [member collision_mask], given a [param layer_number] between 1 and 32.","returnType":"void"}],"signals":[]},"Shortcut":{"name":"Shortcut","description":"A shortcut for binding input.","inherits":"Resource","properties":[{"name":"events","type":"Array","description":"The shortcut's [InputEvent] array.\n\t\t\tGenerally the [InputEvent] used is an [InputEventKey], though it can be any [InputEvent], including an [InputEventAction]."}],"methods":[{"name":"get_as_text","signature":"get_as_text() -> String","description":"Returns the shortcut's first valid  as a .","returnType":"String"},{"name":"has_valid_event","signature":"has_valid_event() -> bool","description":"Returns whether [member events] contains an  which is valid.","returnType":"bool"},{"name":"matches_event","signature":"matches_event(event: InputEvent) -> bool","description":"Returns whether any  in [member events] equals [param event]. This uses [method InputEvent.is_match] to compare events.","returnType":"bool"}],"signals":[]},"Signal":{"name":"Signal","description":"A built-in type representing a signal of an .","inherits":"","properties":[],"methods":[{"name":"connect","signature":"connect(callable: Callable, flags: int) -> int","description":"Connects this signal to the specified [param callable]. Optional [param flags] can be also added to configure the connection's behavior (see [enum Object.ConnectFlags] constants). You can provide additional arguments to the connected [param callable] by using [method Callable.bind].\n\t\t\t\tA signal can only be connected once to the same . If the signal is already connected, returns [constant ERR_INVALID_PARAMETER] and pushes an error message, unless the signal is connected with [constant Object.CONNECT_REFERENCE_COUNTED]. To prevent this, use [method is_connected] first to check for existing connections.\n\t\t\t\t\n\t\t\t\tfor button in $Buttons.get_children():\n\t\t\t\t    button.pressed.connect(_on_pressed.bind(button))\n\n\t\t\t\tfunc _on_pressed(button):\n\t\t\t\t    print(button.name, \" was pressed\")\n\t\t\t\t","returnType":"int"},{"name":"disconnect","signature":"disconnect(callable: Callable) -> void","description":"Disconnects this signal from the specified . If the connection does not exist, generates an error. Use [method is_connected] to make sure that the connection exists.","returnType":"void"},{"name":"emit","signature":"emit() -> void","description":"Emits this signal. All s connected to this signal will be triggered. This method supports a variable number of arguments, so parameters can be passed as a comma separated list.","returnType":"void"},{"name":"get_connections","signature":"get_connections() -> Array","description":"Returns an  of connections for this signal. Each connection is represented as a  that contains three entries:\n\t\t\t\t- signal is a reference to this signal;\n\t\t\t\t- callable is a reference to the connected ;\n\t\t\t\t- flags is a combination of [enum Object.ConnectFlags].","returnType":"Array"},{"name":"get_name","signature":"get_name() -> StringName","description":"Returns the name of this signal.","returnType":"StringName"},{"name":"get_object","signature":"get_object() -> Object","description":"Returns the object emitting this signal.","returnType":"Object"},{"name":"get_object_id","signature":"get_object_id() -> int","description":"Returns the ID of the object emitting this signal (see [method Object.get_instance_id]).","returnType":"int"},{"name":"has_connections","signature":"has_connections() -> bool","description":"Returns true if any  is connected to this signal.","returnType":"bool"},{"name":"is_connected","signature":"is_connected(callable: Callable) -> bool","description":"Returns true if the specified  is connected to this signal.","returnType":"bool"},{"name":"is_null","signature":"is_null() -> bool","description":"Returns true if this  has no object and the signal name is empty. Equivalent to signal == Signal().","returnType":"bool"}],"signals":[]},"Skeleton2D":{"name":"Skeleton2D","description":"The parent of a hierarchy of s, used to create a 2D skeletal animation.","inherits":"Node2D","properties":[],"methods":[{"name":"execute_modifications","signature":"execute_modifications(delta: float, execution_mode: int) -> void","description":"Executes all the modifications on the , if the Skeleton2D has one assigned.","returnType":"void"},{"name":"get_bone","signature":"get_bone(idx: int) -> Bone2D","description":"Returns a  from the node hierarchy parented by Skeleton2D. The object to return is identified by the parameter [param idx]. Bones are indexed by descending the node hierarchy from top to bottom, adding the children of each branch before moving to the next sibling.","returnType":"Bone2D"},{"name":"get_bone_count","signature":"get_bone_count() -> int","description":"Returns the number of  nodes in the node hierarchy parented by Skeleton2D.","returnType":"int"},{"name":"get_bone_local_pose_override","signature":"get_bone_local_pose_override(bone_idx: int) -> Transform2D","description":"Returns the local pose override transform for [param bone_idx].","returnType":"Transform2D"},{"name":"get_modification_stack","signature":"get_modification_stack() -> SkeletonModificationStack2D","description":"Returns the  attached to this skeleton, if one exists.","returnType":"SkeletonModificationStack2D"},{"name":"get_skeleton","signature":"get_skeleton() -> RID","description":"Returns the  of a Skeleton2D instance.","returnType":"RID"},{"name":"set_bone_local_pose_override","signature":"set_bone_local_pose_override(bone_idx: int, override_pose: Transform2D, strength: float, persistent: bool) -> void","description":"Sets the local pose transform, [param override_pose], for the bone at [param bone_idx].\n\t\t\t\t[param strength] is the interpolation strength that will be used when applying the pose, and [param persistent] determines if the applied pose will remain.\n\t\t\t\tNote: The pose transform needs to be a local transform relative to the  node at [param bone_idx]!","returnType":"void"},{"name":"set_modification_stack","signature":"set_modification_stack(modification_stack: SkeletonModificationStack2D) -> void","description":"Sets the  attached to this skeleton.","returnType":"void"}],"signals":[{"name":"bone_setup_changed","description":"Emitted when the [Bone2D] setup attached to this skeletons changes. This is primarily used internally within the skeleton."}]},"Skeleton3D":{"name":"Skeleton3D","description":"A node containing a bone hierarchy, used to create a 3D skeletal animation.","inherits":"Node3D","properties":[{"name":"animate_physical_bones","type":"bool","description":"If you follow the recommended workflow and explicitly have [PhysicalBoneSimulator3D] as a child of [Skeleton3D], you can control whether it is affected by raycasting without running [method physical_bones_start_simulation], by its [member SkeletonModifier3D.active].\n\t\t\tHowever, for old (deprecated) configurations, [Skeleton3D] has an internal virtual [PhysicalBoneSimulator3D] for compatibility. This property controls the internal virtual [PhysicalBoneSimulator3D]'s [member SkeletonModifier3D.active]."},{"name":"modifier_callback_mode_process","type":"int","description":"Sets the processing timing for the Modifier."},{"name":"motion_scale","type":"float","description":"Multiplies the 3D position track animation.\n\t\t\t[b]Note:[/b] Unless this value is [code]1.0[/code], the key value in animation will not match the actual position value."},{"name":"show_rest_only","type":"bool","description":"If [code]true[/code], forces the bones in their default rest pose, regardless of their values. In the editor, this also prevents the bones from being edited."}],"methods":[{"name":"add_bone","signature":"add_bone(name: String) -> int","description":"Adds a new bone with the given name. Returns the new bone's index, or -1 if this method fails.\n\t\t\t\tNote: Bone names should be unique, non empty, and cannot include the : and / characters.","returnType":"int"},{"name":"clear_bones","signature":"clear_bones() -> void","description":"Clear all the bones in this skeleton.","returnType":"void"},{"name":"clear_bones_global_pose_override","signature":"clear_bones_global_pose_override() -> void","description":"Removes the global pose override on all bones in the skeleton.","returnType":"void"},{"name":"create_skin_from_rest_transforms","signature":"create_skin_from_rest_transforms() -> Skin","description":"","returnType":"Skin"},{"name":"find_bone","signature":"find_bone(name: String) -> int","description":"Returns the bone index that matches [param name] as its name. Returns -1 if no bone with this name exists.","returnType":"int"},{"name":"force_update_all_bone_transforms","signature":"force_update_all_bone_transforms() -> void","description":"Force updates the bone transforms/poses for all bones in the skeleton.","returnType":"void"},{"name":"force_update_bone_child_transform","signature":"force_update_bone_child_transform(bone_idx: int) -> void","description":"Force updates the bone transform for the bone at [param bone_idx] and all of its children.","returnType":"void"},{"name":"get_bone_children","signature":"get_bone_children(bone_idx: int) -> PackedInt32Array","description":"Returns an array containing the bone indexes of all the child node of the passed in bone, [param bone_idx].","returnType":"PackedInt32Array"},{"name":"get_bone_count","signature":"get_bone_count() -> int","description":"Returns the number of bones in the skeleton.","returnType":"int"},{"name":"get_bone_global_pose","signature":"get_bone_global_pose(bone_idx: int) -> Transform3D","description":"Returns the overall transform of the specified bone, with respect to the skeleton. Being relative to the skeleton frame, this is not the actual \"global\" transform of the bone.\n\t\t\t\tNote: This is the global pose you set to the skeleton in the process, the final global pose can get overridden by modifiers in the deferred process, if you want to access the final global pose, use [signal SkeletonModifier3D.modification_processed].","returnType":"Transform3D"},{"name":"get_bone_global_pose_no_override","signature":"get_bone_global_pose_no_override(bone_idx: int) -> Transform3D","description":"Returns the overall transform of the specified bone, with respect to the skeleton, but without any global pose overrides. Being relative to the skeleton frame, this is not the actual \"global\" transform of the bone.","returnType":"Transform3D"},{"name":"get_bone_global_pose_override","signature":"get_bone_global_pose_override(bone_idx: int) -> Transform3D","description":"Returns the global pose override transform for [param bone_idx].","returnType":"Transform3D"},{"name":"get_bone_global_rest","signature":"get_bone_global_rest(bone_idx: int) -> Transform3D","description":"Returns the global rest transform for [param bone_idx].","returnType":"Transform3D"},{"name":"get_bone_meta","signature":"get_bone_meta(bone_idx: int, key: StringName) -> Variant","description":"Returns bone metadata for [param bone_idx] with [param key].","returnType":"Variant"},{"name":"get_bone_meta_list","signature":"get_bone_meta_list(bone_idx: int) -> StringName[]","description":"Returns a list of all metadata keys for [param bone_idx].","returnType":"StringName[]"},{"name":"get_bone_name","signature":"get_bone_name(bone_idx: int) -> String","description":"Returns the name of the bone at index [param bone_idx].","returnType":"String"},{"name":"get_bone_parent","signature":"get_bone_parent(bone_idx: int) -> int","description":"Returns the bone index which is the parent of the bone at [param bone_idx]. If -1, then bone has no parent.\n\t\t\t\tNote: The parent bone returned will always be less than [param bone_idx].","returnType":"int"},{"name":"get_bone_pose","signature":"get_bone_pose(bone_idx: int) -> Transform3D","description":"Returns the pose transform of the specified bone.\n\t\t\t\tNote: This is the pose you set to the skeleton in the process, the final pose can get overridden by modifiers in the deferred process, if you want to access the final pose, use [signal SkeletonModifier3D.modification_processed].","returnType":"Transform3D"},{"name":"get_bone_pose_position","signature":"get_bone_pose_position(bone_idx: int) -> Vector3","description":"Returns the pose position of the bone at [param bone_idx]. The returned  is in the local coordinate space of the  node.","returnType":"Vector3"},{"name":"get_bone_pose_rotation","signature":"get_bone_pose_rotation(bone_idx: int) -> Quaternion","description":"Returns the pose rotation of the bone at [param bone_idx]. The returned  is local to the bone with respect to the rotation of any parent bones.","returnType":"Quaternion"},{"name":"get_bone_pose_scale","signature":"get_bone_pose_scale(bone_idx: int) -> Vector3","description":"Returns the pose scale of the bone at [param bone_idx].","returnType":"Vector3"},{"name":"get_bone_rest","signature":"get_bone_rest(bone_idx: int) -> Transform3D","description":"Returns the rest transform for a bone [param bone_idx].","returnType":"Transform3D"},{"name":"get_concatenated_bone_names","signature":"get_concatenated_bone_names() -> StringName","description":"Returns all bone names concatenated with commas (,) as a single .\n\t\t\t\tIt is useful to set it as a hint for the enum property.","returnType":"StringName"},{"name":"get_parentless_bones","signature":"get_parentless_bones() -> PackedInt32Array","description":"Returns an array with all of the bones that are parentless. Another way to look at this is that it returns the indexes of all the bones that are not dependent or modified by other bones in the Skeleton.","returnType":"PackedInt32Array"},{"name":"get_version","signature":"get_version() -> int","description":"Returns the number of times the bone hierarchy has changed within this skeleton, including renames.\n\t\t\t\tThe Skeleton version is not serialized: only use within a single instance of Skeleton3D.\n\t\t\t\tUse for invalidating caches in IK solvers and other nodes which process bones.","returnType":"int"},{"name":"has_bone_meta","signature":"has_bone_meta(bone_idx: int, key: StringName) -> bool","description":"Returns whether there exists any bone metadata for [param bone_idx] with key [param key].","returnType":"bool"},{"name":"is_bone_enabled","signature":"is_bone_enabled(bone_idx: int) -> bool","description":"Returns whether the bone pose for the bone at [param bone_idx] is enabled.","returnType":"bool"},{"name":"localize_rests","signature":"localize_rests() -> void","description":"Returns all bones in the skeleton to their rest poses.","returnType":"void"},{"name":"physical_bones_add_collision_exception","signature":"physical_bones_add_collision_exception(exception: RID) -> void","description":"Adds a collision exception to the physical bone.\n\t\t\t\tWorks just like the  node.","returnType":"void"},{"name":"physical_bones_remove_collision_exception","signature":"physical_bones_remove_collision_exception(exception: RID) -> void","description":"Removes a collision exception to the physical bone.\n\t\t\t\tWorks just like the  node.","returnType":"void"},{"name":"physical_bones_start_simulation","signature":"physical_bones_start_simulation(bones: StringName[]) -> void","description":"Tells the  nodes in the Skeleton to start simulating and reacting to the physics world.\n\t\t\t\tOptionally, a list of bone names can be passed-in, allowing only the passed-in bones to be simulated.","returnType":"void"},{"name":"physical_bones_stop_simulation","signature":"physical_bones_stop_simulation() -> void","description":"Tells the  nodes in the Skeleton to stop simulating.","returnType":"void"},{"name":"register_skin","signature":"register_skin(skin: Skin) -> SkinReference","description":"Binds the given Skin to the Skeleton.","returnType":"SkinReference"},{"name":"reset_bone_pose","signature":"reset_bone_pose(bone_idx: int) -> void","description":"Sets the bone pose to rest for [param bone_idx].","returnType":"void"},{"name":"reset_bone_poses","signature":"reset_bone_poses() -> void","description":"Sets all bone poses to rests.","returnType":"void"},{"name":"set_bone_enabled","signature":"set_bone_enabled(bone_idx: int, enabled: bool) -> void","description":"Disables the pose for the bone at [param bone_idx] if false, enables the bone pose if true.","returnType":"void"},{"name":"set_bone_global_pose","signature":"set_bone_global_pose(bone_idx: int, pose: Transform3D) -> void","description":"Sets the global pose transform, [param pose], for the bone at [param bone_idx].\n\t\t\t\tNote: If other bone poses have been changed, this method executes a dirty poses recalculation and will cause performance to deteriorate. If you know that multiple global poses will be applied, consider using [method set_bone_pose] with precalculation.","returnType":"void"},{"name":"set_bone_global_pose_override","signature":"set_bone_global_pose_override(bone_idx: int, pose: Transform3D, amount: float, persistent: bool) -> void","description":"Sets the global pose transform, [param pose], for the bone at [param bone_idx].\n\t\t\t\t[param amount] is the interpolation strength that will be used when applying the pose, and [param persistent] determines if the applied pose will remain.\n\t\t\t\tNote: The pose transform needs to be a global pose! To convert a world transform from a  to a global bone pose, multiply the [method Transform3D.affine_inverse] of the node's [member Node3D.global_transform] by the desired world transform.","returnType":"void"},{"name":"set_bone_meta","signature":"set_bone_meta(bone_idx: int, key: StringName, value: Variant) -> void","description":"Sets bone metadata for [param bone_idx], will set the [param key] meta to [param value].","returnType":"void"},{"name":"set_bone_name","signature":"set_bone_name(bone_idx: int, name: String) -> void","description":"Sets the bone name, [param name], for the bone at [param bone_idx].","returnType":"void"},{"name":"set_bone_parent","signature":"set_bone_parent(bone_idx: int, parent_idx: int) -> void","description":"Sets the bone index [param parent_idx] as the parent of the bone at [param bone_idx]. If -1, then bone has no parent.\n\t\t\t\tNote: [param parent_idx] must be less than [param bone_idx].","returnType":"void"},{"name":"set_bone_pose","signature":"set_bone_pose(bone_idx: int, pose: Transform3D) -> void","description":"Sets the pose transform, [param pose], for the bone at [param bone_idx].","returnType":"void"},{"name":"set_bone_pose_position","signature":"set_bone_pose_position(bone_idx: int, position: Vector3) -> void","description":"Sets the pose position of the bone at [param bone_idx] to [param position]. [param position] is a  describing a position local to the  node.","returnType":"void"},{"name":"set_bone_pose_rotation","signature":"set_bone_pose_rotation(bone_idx: int, rotation: Quaternion) -> void","description":"Sets the pose rotation of the bone at [param bone_idx] to [param rotation]. [param rotation] is a  describing a rotation in the bone's local coordinate space with respect to the rotation of any parent bones.","returnType":"void"},{"name":"set_bone_pose_scale","signature":"set_bone_pose_scale(bone_idx: int, scale: Vector3) -> void","description":"Sets the pose scale of the bone at [param bone_idx] to [param scale].","returnType":"void"},{"name":"set_bone_rest","signature":"set_bone_rest(bone_idx: int, rest: Transform3D) -> void","description":"Sets the rest transform for bone [param bone_idx].","returnType":"void"},{"name":"unparent_bone_and_rest","signature":"unparent_bone_and_rest(bone_idx: int) -> void","description":"Unparents the bone at [param bone_idx] and sets its rest position to that of its parent prior to being reset.","returnType":"void"}],"signals":[{"name":"bone_enabled_changed","description":"Emitted when the bone at [param bone_idx] is toggled with [method set_bone_enabled]. Use [method is_bone_enabled] to check the new value."},{"name":"bone_list_changed","description":""},{"name":"pose_updated","description":"Emitted when the pose is updated.\n\t\t\t\t[b]Note:[/b] During the update process, this signal is not fired, so modification by [SkeletonModifier3D] is not detected."},{"name":"rest_updated","description":"Emitted when the rest is updated."},{"name":"show_rest_only_changed","description":"Emitted when the value of [member show_rest_only] changes."},{"name":"skeleton_updated","description":"Emitted when the final pose has been calculated will be applied to the skin in the update process.\n\t\t\t\tThis means that all [SkeletonModifier3D] processing is complete. In order to detect the completion of the processing of each [SkeletonModifier3D], use [signal SkeletonModifier3D.modification_processed]."}]},"SkeletonIK3D":{"name":"SkeletonIK3D","description":"A node used to rotate all bones of a  bone chain a way that places the end bone at a desired 3D position.","inherits":"SkeletonModifier3D","properties":[{"name":"interpolation","type":"float","description":"Interpolation value for how much the IK results are applied to the current skeleton bone chain. A value of [code]1.0[/code] will overwrite all skeleton bone transforms completely while a value of [code]0.0[/code] will visually disable the SkeletonIK."},{"name":"magnet","type":"Vector3","description":"Secondary target position (first is [member target] property or [member target_node]) for the IK chain. Use magnet position (pole target) to control the bending of the IK chain. Only works if the bone chain has more than 2 bones. The middle chain bone position will be linearly interpolated with the magnet position."},{"name":"max_iterations","type":"int","description":"Number of iteration loops used by the IK solver to produce more accurate (and elegant) bone chain results."},{"name":"min_distance","type":"float","description":"The minimum distance between bone and goal target. If the distance is below this value, the IK solver stops further iterations."},{"name":"override_tip_basis","type":"bool","description":"If [code]true[/code] overwrites the rotation of the tip bone with the rotation of the [member target] (or [member target_node] if defined)."},{"name":"root_bone","type":"StringName","description":"The name of the current root bone, the first bone in the IK chain."},{"name":"target","type":"Transform3D","description":"First target of the IK chain where the tip bone is placed and, if [member override_tip_basis] is [code]true[/code], how the tip bone is rotated. If a [member target_node] path is available the nodes transform is used instead and this property is ignored."},{"name":"target_node","type":"NodePath","description":"Target node [NodePath] for the IK chain. If available, the node's current [Transform3D] is used instead of the [member target] property."},{"name":"tip_bone","type":"StringName","description":"The name of the current tip bone, the last bone in the IK chain placed at the [member target] transform (or [member target_node] if defined)."},{"name":"use_magnet","type":"bool","description":"If [code]true[/code], instructs the IK solver to consider the secondary magnet target (pole target) when calculating the bone chain. Use the magnet position (pole target) to control the bending of the IK chain."}],"methods":[{"name":"get_parent_skeleton","signature":"get_parent_skeleton() -> Skeleton3D","description":"Returns the parent  node that was present when SkeletonIK entered the scene tree. Returns null if the parent node was not a  node when SkeletonIK3D entered the scene tree.","returnType":"Skeleton3D"},{"name":"is_running","signature":"is_running() -> bool","description":"Returns true if SkeletonIK is applying IK effects on continues frames to the  bones. Returns false if SkeletonIK is stopped or [method start] was used with the one_time parameter set to true.","returnType":"bool"},{"name":"start","signature":"start(one_time: bool) -> void","description":"Starts applying IK effects on each frame to the  bones but will only take effect starting on the next frame. If [param one_time] is true, this will take effect immediately but also reset on the next frame.","returnType":"void"},{"name":"stop","signature":"stop() -> void","description":"Stops applying IK effects on each frame to the  bones and also calls [method Skeleton3D.clear_bones_global_pose_override] to remove existing overrides on all bones.","returnType":"void"}],"signals":[]},"SkeletonModification2D":{"name":"SkeletonModification2D","description":"Base class for resources that operate on s in a .","inherits":"Resource","properties":[{"name":"enabled","type":"bool","description":"If [code]true[/code], the modification's [method _execute] function will be called by the [SkeletonModificationStack2D]."},{"name":"execution_mode","type":"int","description":"The execution mode for the modification. This tells the modification stack when to execute the modification. Some modifications have settings that are only available in certain execution modes."}],"methods":[{"name":"_draw_editor_gizmo","signature":"_draw_editor_gizmo() -> void","description":"Used for drawing editor-only modification gizmos. This function will only be called in the Godot editor and can be overridden to draw custom gizmos.\n\t\t\t\tNote: You will need to use the Skeleton2D from [method SkeletonModificationStack2D.get_skeleton] and it's draw functions, as the  resource cannot draw on its own.","returnType":"void"},{"name":"_execute","signature":"_execute(delta: float) -> void","description":"Executes the given modification. This is where the modification performs whatever function it is designed to do.","returnType":"void"},{"name":"_setup_modification","signature":"_setup_modification(modification_stack: SkeletonModificationStack2D) -> void","description":"Called when the modification is setup. This is where the modification performs initialization.","returnType":"void"},{"name":"clamp_angle","signature":"clamp_angle(angle: float, min: float, max: float, invert: bool) -> float","description":"Takes an angle and clamps it so it is within the passed-in [param min] and [param max] range. [param invert] will inversely clamp the angle, clamping it to the range outside of the given bounds.","returnType":"float"},{"name":"get_editor_draw_gizmo","signature":"get_editor_draw_gizmo() -> bool","description":"Returns whether this modification will call [method _draw_editor_gizmo] in the Godot editor to draw modification-specific gizmos.","returnType":"bool"},{"name":"get_is_setup","signature":"get_is_setup() -> bool","description":"Returns whether this modification has been successfully setup or not.","returnType":"bool"},{"name":"get_modification_stack","signature":"get_modification_stack() -> SkeletonModificationStack2D","description":"Returns the  that this modification is bound to. Through the modification stack, you can access the Skeleton2D the modification is operating on.","returnType":"SkeletonModificationStack2D"},{"name":"set_editor_draw_gizmo","signature":"set_editor_draw_gizmo(draw_gizmo: bool) -> void","description":"Sets whether this modification will call [method _draw_editor_gizmo] in the Godot editor to draw modification-specific gizmos.","returnType":"void"},{"name":"set_is_setup","signature":"set_is_setup(is_setup: bool) -> void","description":"Manually allows you to set the setup state of the modification. This function should only rarely be used, as the  the modification is bound to should handle setting the modification up.","returnType":"void"}],"signals":[]},"SkeletonModification2DCCDIK":{"name":"SkeletonModification2DCCDIK","description":"A modification that uses CCDIK to manipulate a series of bones to reach a target in 2D.","inherits":"SkeletonModification2D","properties":[{"name":"ccdik_data_chain_length","type":"int","description":"The number of CCDIK joints in the CCDIK modification."},{"name":"target_nodepath","type":"NodePath","description":"The NodePath to the node that is the target for the CCDIK modification. This node is what the CCDIK chain will attempt to rotate the bone chain to."},{"name":"tip_nodepath","type":"NodePath","description":"The end position of the CCDIK chain. Typically, this should be a child of a [Bone2D] node attached to the final [Bone2D] in the CCDIK chain."}],"methods":[{"name":"get_ccdik_joint_bone2d_node","signature":"get_ccdik_joint_bone2d_node(joint_idx: int) -> NodePath","description":"Returns the  node assigned to the CCDIK joint at [param joint_idx].","returnType":"NodePath"},{"name":"get_ccdik_joint_bone_index","signature":"get_ccdik_joint_bone_index(joint_idx: int) -> int","description":"Returns the index of the  node assigned to the CCDIK joint at [param joint_idx].","returnType":"int"},{"name":"get_ccdik_joint_constraint_angle_invert","signature":"get_ccdik_joint_constraint_angle_invert(joint_idx: int) -> bool","description":"Returns whether the CCDIK joint at [param joint_idx] uses an inverted joint constraint. See [method set_ccdik_joint_constraint_angle_invert] for details.","returnType":"bool"},{"name":"get_ccdik_joint_constraint_angle_max","signature":"get_ccdik_joint_constraint_angle_max(joint_idx: int) -> float","description":"Returns the maximum angle constraint for the joint at [param joint_idx].","returnType":"float"},{"name":"get_ccdik_joint_constraint_angle_min","signature":"get_ccdik_joint_constraint_angle_min(joint_idx: int) -> float","description":"Returns the minimum angle constraint for the joint at [param joint_idx].","returnType":"float"},{"name":"get_ccdik_joint_enable_constraint","signature":"get_ccdik_joint_enable_constraint(joint_idx: int) -> bool","description":"Returns whether angle constraints on the CCDIK joint at [param joint_idx] are enabled.","returnType":"bool"},{"name":"get_ccdik_joint_rotate_from_joint","signature":"get_ccdik_joint_rotate_from_joint(joint_idx: int) -> bool","description":"Returns whether the joint at [param joint_idx] is set to rotate from the joint, true, or to rotate from the tip, false. The default is to rotate from the tip.","returnType":"bool"},{"name":"set_ccdik_joint_bone2d_node","signature":"set_ccdik_joint_bone2d_node(joint_idx: int, bone2d_nodepath: NodePath) -> void","description":"Sets the  node assigned to the CCDIK joint at [param joint_idx].","returnType":"void"},{"name":"set_ccdik_joint_bone_index","signature":"set_ccdik_joint_bone_index(joint_idx: int, bone_idx: int) -> void","description":"Sets the bone index, [param bone_idx], of the CCDIK joint at [param joint_idx]. When possible, this will also update the bone2d_node of the CCDIK joint based on data provided by the linked skeleton.","returnType":"void"},{"name":"set_ccdik_joint_constraint_angle_invert","signature":"set_ccdik_joint_constraint_angle_invert(joint_idx: int, invert: bool) -> void","description":"Sets whether the CCDIK joint at [param joint_idx] uses an inverted joint constraint.\n\t\t\t\tAn inverted joint constraint only constraints the CCDIK joint to the angles outside of the inputted minimum and maximum angles. For this reason, it is referred to as an inverted joint constraint, as it constraints the joint to the outside of the inputted values.","returnType":"void"},{"name":"set_ccdik_joint_constraint_angle_max","signature":"set_ccdik_joint_constraint_angle_max(joint_idx: int, angle_max: float) -> void","description":"Sets the maximum angle constraint for the joint at [param joint_idx].","returnType":"void"},{"name":"set_ccdik_joint_constraint_angle_min","signature":"set_ccdik_joint_constraint_angle_min(joint_idx: int, angle_min: float) -> void","description":"Sets the minimum angle constraint for the joint at [param joint_idx].","returnType":"void"},{"name":"set_ccdik_joint_enable_constraint","signature":"set_ccdik_joint_enable_constraint(joint_idx: int, enable_constraint: bool) -> void","description":"Determines whether angle constraints on the CCDIK joint at [param joint_idx] are enabled. When true, constraints will be enabled and taken into account when solving.","returnType":"void"},{"name":"set_ccdik_joint_rotate_from_joint","signature":"set_ccdik_joint_rotate_from_joint(joint_idx: int, rotate_from_joint: bool) -> void","description":"Sets whether the joint at [param joint_idx] is set to rotate from the joint, true, or to rotate from the tip, false.","returnType":"void"}],"signals":[]},"SkeletonModification2DFABRIK":{"name":"SkeletonModification2DFABRIK","description":"A modification that uses FABRIK to manipulate a series of  nodes to reach a target.","inherits":"SkeletonModification2D","properties":[{"name":"fabrik_data_chain_length","type":"int","description":"The number of FABRIK joints in the FABRIK modification."},{"name":"target_nodepath","type":"NodePath","description":"The NodePath to the node that is the target for the FABRIK modification. This node is what the FABRIK chain will attempt to rotate the bone chain to."}],"methods":[{"name":"get_fabrik_joint_bone2d_node","signature":"get_fabrik_joint_bone2d_node(joint_idx: int) -> NodePath","description":"Returns the  node assigned to the FABRIK joint at [param joint_idx].","returnType":"NodePath"},{"name":"get_fabrik_joint_bone_index","signature":"get_fabrik_joint_bone_index(joint_idx: int) -> int","description":"Returns the index of the  node assigned to the FABRIK joint at [param joint_idx].","returnType":"int"},{"name":"get_fabrik_joint_magnet_position","signature":"get_fabrik_joint_magnet_position(joint_idx: int) -> Vector2","description":"Returns the magnet position vector for the joint at [param joint_idx].","returnType":"Vector2"},{"name":"get_fabrik_joint_use_target_rotation","signature":"get_fabrik_joint_use_target_rotation(joint_idx: int) -> bool","description":"Returns whether the joint is using the target's rotation rather than allowing FABRIK to rotate the joint. This option only applies to the tip/final joint in the chain.","returnType":"bool"},{"name":"set_fabrik_joint_bone2d_node","signature":"set_fabrik_joint_bone2d_node(joint_idx: int, bone2d_nodepath: NodePath) -> void","description":"Sets the  node assigned to the FABRIK joint at [param joint_idx].","returnType":"void"},{"name":"set_fabrik_joint_bone_index","signature":"set_fabrik_joint_bone_index(joint_idx: int, bone_idx: int) -> void","description":"Sets the bone index, [param bone_idx], of the FABRIK joint at [param joint_idx]. When possible, this will also update the bone2d_node of the FABRIK joint based on data provided by the linked skeleton.","returnType":"void"},{"name":"set_fabrik_joint_magnet_position","signature":"set_fabrik_joint_magnet_position(joint_idx: int, magnet_position: Vector2) -> void","description":"Sets the magnet position vector for the joint at [param joint_idx].","returnType":"void"},{"name":"set_fabrik_joint_use_target_rotation","signature":"set_fabrik_joint_use_target_rotation(joint_idx: int, use_target_rotation: bool) -> void","description":"Sets whether the joint at [param joint_idx] will use the target node's rotation rather than letting FABRIK rotate the node.\n\t\t\t\tNote: This option only works for the tip/final joint in the chain. For all other nodes, this option will be ignored.","returnType":"void"}],"signals":[]},"SkeletonModification2DJiggle":{"name":"SkeletonModification2DJiggle","description":"A modification that jiggles  nodes as they move towards a target.","inherits":"SkeletonModification2D","properties":[{"name":"damping","type":"float","description":"The default amount of damping applied to the Jiggle joints, if they are not overridden. Higher values lead to more of the calculated velocity being applied."},{"name":"gravity","type":"Vector2","description":"The default amount of gravity applied to the Jiggle joints, if they are not overridden."},{"name":"jiggle_data_chain_length","type":"int","description":"The amount of Jiggle joints in the Jiggle modification."},{"name":"mass","type":"float","description":"The default amount of mass assigned to the Jiggle joints, if they are not overridden. Higher values lead to faster movements and more overshooting."},{"name":"stiffness","type":"float","description":"The default amount of stiffness assigned to the Jiggle joints, if they are not overridden. Higher values act more like springs, quickly moving into the correct position."},{"name":"target_nodepath","type":"NodePath","description":"The NodePath to the node that is the target for the Jiggle modification. This node is what the Jiggle chain will attempt to rotate the bone chain to."},{"name":"use_gravity","type":"bool","description":"Whether the gravity vector, [member gravity], should be applied to the Jiggle joints, assuming they are not overriding the default settings."}],"methods":[{"name":"get_collision_mask","signature":"get_collision_mask() -> int","description":"Returns the collision mask used by the Jiggle modifier when collisions are enabled.","returnType":"int"},{"name":"get_jiggle_joint_bone2d_node","signature":"get_jiggle_joint_bone2d_node(joint_idx: int) -> NodePath","description":"Returns the  node assigned to the Jiggle joint at [param joint_idx].","returnType":"NodePath"},{"name":"get_jiggle_joint_bone_index","signature":"get_jiggle_joint_bone_index(joint_idx: int) -> int","description":"Returns the index of the  node assigned to the Jiggle joint at [param joint_idx].","returnType":"int"},{"name":"get_jiggle_joint_damping","signature":"get_jiggle_joint_damping(joint_idx: int) -> float","description":"Returns the amount of damping of the Jiggle joint at [param joint_idx].","returnType":"float"},{"name":"get_jiggle_joint_gravity","signature":"get_jiggle_joint_gravity(joint_idx: int) -> Vector2","description":"Returns a  representing the amount of gravity the Jiggle joint at [param joint_idx] is influenced by.","returnType":"Vector2"},{"name":"get_jiggle_joint_mass","signature":"get_jiggle_joint_mass(joint_idx: int) -> float","description":"Returns the amount of mass of the jiggle joint at [param joint_idx].","returnType":"float"},{"name":"get_jiggle_joint_override","signature":"get_jiggle_joint_override(joint_idx: int) -> bool","description":"Returns a boolean that indicates whether the joint at [param joint_idx] is overriding the default Jiggle joint data defined in the modification.","returnType":"bool"},{"name":"get_jiggle_joint_stiffness","signature":"get_jiggle_joint_stiffness(joint_idx: int) -> float","description":"Returns the stiffness of the Jiggle joint at [param joint_idx].","returnType":"float"},{"name":"get_jiggle_joint_use_gravity","signature":"get_jiggle_joint_use_gravity(joint_idx: int) -> bool","description":"Returns a boolean that indicates whether the joint at [param joint_idx] is using gravity or not.","returnType":"bool"},{"name":"get_use_colliders","signature":"get_use_colliders() -> bool","description":"Returns whether the jiggle modifier is taking physics colliders into account when solving.","returnType":"bool"},{"name":"set_collision_mask","signature":"set_collision_mask(collision_mask: int) -> void","description":"Sets the collision mask that the Jiggle modifier will use when reacting to colliders, if the Jiggle modifier is set to take colliders into account.","returnType":"void"},{"name":"set_jiggle_joint_bone2d_node","signature":"set_jiggle_joint_bone2d_node(joint_idx: int, bone2d_node: NodePath) -> void","description":"Sets the  node assigned to the Jiggle joint at [param joint_idx].","returnType":"void"},{"name":"set_jiggle_joint_bone_index","signature":"set_jiggle_joint_bone_index(joint_idx: int, bone_idx: int) -> void","description":"Sets the bone index, [param bone_idx], of the Jiggle joint at [param joint_idx]. When possible, this will also update the bone2d_node of the Jiggle joint based on data provided by the linked skeleton.","returnType":"void"},{"name":"set_jiggle_joint_damping","signature":"set_jiggle_joint_damping(joint_idx: int, damping: float) -> void","description":"Sets the amount of damping of the Jiggle joint at [param joint_idx].","returnType":"void"},{"name":"set_jiggle_joint_gravity","signature":"set_jiggle_joint_gravity(joint_idx: int, gravity: Vector2) -> void","description":"Sets the gravity vector of the Jiggle joint at [param joint_idx].","returnType":"void"},{"name":"set_jiggle_joint_mass","signature":"set_jiggle_joint_mass(joint_idx: int, mass: float) -> void","description":"Sets the of mass of the Jiggle joint at [param joint_idx].","returnType":"void"},{"name":"set_jiggle_joint_override","signature":"set_jiggle_joint_override(joint_idx: int, override: bool) -> void","description":"Sets whether the Jiggle joint at [param joint_idx] should override the default Jiggle joint settings. Setting this to true will make the joint use its own settings rather than the default ones attached to the modification.","returnType":"void"},{"name":"set_jiggle_joint_stiffness","signature":"set_jiggle_joint_stiffness(joint_idx: int, stiffness: float) -> void","description":"Sets the of stiffness of the Jiggle joint at [param joint_idx].","returnType":"void"},{"name":"set_jiggle_joint_use_gravity","signature":"set_jiggle_joint_use_gravity(joint_idx: int, use_gravity: bool) -> void","description":"Sets whether the Jiggle joint at [param joint_idx] should use gravity.","returnType":"void"},{"name":"set_use_colliders","signature":"set_use_colliders(use_colliders: bool) -> void","description":"If true, the Jiggle modifier will take colliders into account, keeping them from entering into these collision objects.","returnType":"void"}],"signals":[]},"SkeletonModification2DLookAt":{"name":"SkeletonModification2DLookAt","description":"A modification that rotates a  node to look at a target.","inherits":"SkeletonModification2D","properties":[{"name":"bone2d_node","type":"NodePath","description":"The [Bone2D] node that the modification will operate on."},{"name":"bone_index","type":"int","description":"The index of the [Bone2D] node that the modification will operate on."},{"name":"target_nodepath","type":"NodePath","description":"The NodePath to the node that is the target for the LookAt modification. This node is what the modification will rotate the [Bone2D] to."}],"methods":[{"name":"get_additional_rotation","signature":"get_additional_rotation() -> float","description":"Returns the amount of additional rotation that is applied after the LookAt modification executes.","returnType":"float"},{"name":"get_constraint_angle_invert","signature":"get_constraint_angle_invert() -> bool","description":"Returns whether the constraints to this modification are inverted or not.","returnType":"bool"},{"name":"get_constraint_angle_max","signature":"get_constraint_angle_max() -> float","description":"Returns the constraint's maximum allowed angle.","returnType":"float"},{"name":"get_constraint_angle_min","signature":"get_constraint_angle_min() -> float","description":"Returns the constraint's minimum allowed angle.","returnType":"float"},{"name":"get_enable_constraint","signature":"get_enable_constraint() -> bool","description":"Returns true if the LookAt modification is using constraints.","returnType":"bool"},{"name":"set_additional_rotation","signature":"set_additional_rotation(rotation: float) -> void","description":"Sets the amount of additional rotation that is to be applied after executing the modification. This allows for offsetting the results by the inputted rotation amount.","returnType":"void"},{"name":"set_constraint_angle_invert","signature":"set_constraint_angle_invert(invert: bool) -> void","description":"When true, the modification will use an inverted joint constraint.\n\t\t\t\tAn inverted joint constraint only constraints the  to the angles outside of the inputted minimum and maximum angles. For this reason, it is referred to as an inverted joint constraint, as it constraints the joint to the outside of the inputted values.","returnType":"void"},{"name":"set_constraint_angle_max","signature":"set_constraint_angle_max(angle_max: float) -> void","description":"Sets the constraint's maximum allowed angle.","returnType":"void"},{"name":"set_constraint_angle_min","signature":"set_constraint_angle_min(angle_min: float) -> void","description":"Sets the constraint's minimum allowed angle.","returnType":"void"},{"name":"set_enable_constraint","signature":"set_enable_constraint(enable_constraint: bool) -> void","description":"Sets whether this modification will use constraints or not. When true, constraints will be applied when solving the LookAt modification.","returnType":"void"}],"signals":[]},"SkeletonModification2DPhysicalBones":{"name":"SkeletonModification2DPhysicalBones","description":"A modification that applies the transforms of  nodes to  nodes.","inherits":"SkeletonModification2D","properties":[{"name":"physical_bone_chain_length","type":"int","description":"The number of [PhysicalBone2D] nodes linked in this modification."}],"methods":[{"name":"fetch_physical_bones","signature":"fetch_physical_bones() -> void","description":"Empties the list of  nodes and populates it with all  nodes that are children of the .","returnType":"void"},{"name":"get_physical_bone_node","signature":"get_physical_bone_node(joint_idx: int) -> NodePath","description":"Returns the  node at [param joint_idx].","returnType":"NodePath"},{"name":"set_physical_bone_node","signature":"set_physical_bone_node(joint_idx: int, physicalbone2d_node: NodePath) -> void","description":"Sets the  node at [param joint_idx].\n\t\t\t\tNote: This is just the index used for this modification, not the bone index used in the .","returnType":"void"},{"name":"start_simulation","signature":"start_simulation(bones: StringName[]) -> void","description":"Tell the  nodes to start simulating and interacting with the physics world.\n\t\t\t\tOptionally, an array of bone names can be passed to this function, and that will cause only  nodes with those names to start simulating.","returnType":"void"},{"name":"stop_simulation","signature":"stop_simulation(bones: StringName[]) -> void","description":"Tell the  nodes to stop simulating and interacting with the physics world.\n\t\t\t\tOptionally, an array of bone names can be passed to this function, and that will cause only  nodes with those names to stop simulating.","returnType":"void"}],"signals":[]},"SkeletonModification2DStackHolder":{"name":"SkeletonModification2DStackHolder","description":"A modification that holds and executes a .","inherits":"SkeletonModification2D","properties":[],"methods":[{"name":"get_held_modification_stack","signature":"get_held_modification_stack() -> SkeletonModificationStack2D","description":"Returns the  that this modification is holding.","returnType":"SkeletonModificationStack2D"},{"name":"set_held_modification_stack","signature":"set_held_modification_stack(held_modification_stack: SkeletonModificationStack2D) -> void","description":"Sets the  that this modification is holding. This modification stack will then be executed when this modification is executed.","returnType":"void"}],"signals":[]},"SkeletonModification2DTwoBoneIK":{"name":"SkeletonModification2DTwoBoneIK","description":"A modification that rotates two bones using the law of cosines to reach the target.","inherits":"SkeletonModification2D","properties":[{"name":"flip_bend_direction","type":"bool","description":"If [code]true[/code], the bones in the modification will bend outward as opposed to inwards when contracting. If [code]false[/code], the bones will bend inwards when contracting."},{"name":"target_maximum_distance","type":"float","description":"The maximum distance the target can be at. If the target is farther than this distance, the modification will solve as if it's at this maximum distance. When set to [code]0[/code], the modification will solve without distance constraints."},{"name":"target_minimum_distance","type":"float","description":"The minimum distance the target can be at. If the target is closer than this distance, the modification will solve as if it's at this minimum distance. When set to [code]0[/code], the modification will solve without distance constraints."},{"name":"target_nodepath","type":"NodePath","description":"The NodePath to the node that is the target for the TwoBoneIK modification. This node is what the modification will use when bending the [Bone2D] nodes."}],"methods":[{"name":"get_joint_one_bone2d_node","signature":"get_joint_one_bone2d_node() -> NodePath","description":"Returns the  node that is being used as the first bone in the TwoBoneIK modification.","returnType":"NodePath"},{"name":"get_joint_one_bone_idx","signature":"get_joint_one_bone_idx() -> int","description":"Returns the index of the  node that is being used as the first bone in the TwoBoneIK modification.","returnType":"int"},{"name":"get_joint_two_bone2d_node","signature":"get_joint_two_bone2d_node() -> NodePath","description":"Returns the  node that is being used as the second bone in the TwoBoneIK modification.","returnType":"NodePath"},{"name":"get_joint_two_bone_idx","signature":"get_joint_two_bone_idx() -> int","description":"Returns the index of the  node that is being used as the second bone in the TwoBoneIK modification.","returnType":"int"},{"name":"set_joint_one_bone2d_node","signature":"set_joint_one_bone2d_node(bone2d_node: NodePath) -> void","description":"Sets the  node that is being used as the first bone in the TwoBoneIK modification.","returnType":"void"},{"name":"set_joint_one_bone_idx","signature":"set_joint_one_bone_idx(bone_idx: int) -> void","description":"Sets the index of the  node that is being used as the first bone in the TwoBoneIK modification.","returnType":"void"},{"name":"set_joint_two_bone2d_node","signature":"set_joint_two_bone2d_node(bone2d_node: NodePath) -> void","description":"Sets the  node that is being used as the second bone in the TwoBoneIK modification.","returnType":"void"},{"name":"set_joint_two_bone_idx","signature":"set_joint_two_bone_idx(bone_idx: int) -> void","description":"Sets the index of the  node that is being used as the second bone in the TwoBoneIK modification.","returnType":"void"}],"signals":[]},"SkeletonModificationStack2D":{"name":"SkeletonModificationStack2D","description":"A resource that holds a stack of s.","inherits":"Resource","properties":[{"name":"enabled","type":"bool","description":"If [code]true[/code], the modification's in the stack will be called. This is handled automatically through the [Skeleton2D] node."},{"name":"modification_count","type":"int","description":"The number of modifications in the stack."},{"name":"strength","type":"float","description":"The interpolation strength of the modifications in stack. A value of [code]0[/code] will make it where the modifications are not applied, a strength of [code]0.5[/code] will be half applied, and a strength of [code]1[/code] will allow the modifications to be fully applied and override the [Skeleton2D] [Bone2D] poses."}],"methods":[{"name":"add_modification","signature":"add_modification(modification: SkeletonModification2D) -> void","description":"Adds the passed-in  to the stack.","returnType":"void"},{"name":"delete_modification","signature":"delete_modification(mod_idx: int) -> void","description":"Deletes the  at the index position [param mod_idx], if it exists.","returnType":"void"},{"name":"enable_all_modifications","signature":"enable_all_modifications(enabled: bool) -> void","description":"Enables all s in the stack.","returnType":"void"},{"name":"execute","signature":"execute(delta: float, execution_mode: int) -> void","description":"Executes all of the s in the stack that use the same execution mode as the passed-in [param execution_mode], starting from index 0 to [member modification_count].\n\t\t\t\tNote: The order of the modifications can matter depending on the modifications. For example, modifications on a spine should operate before modifications on the arms in order to get proper results.","returnType":"void"},{"name":"get_is_setup","signature":"get_is_setup() -> bool","description":"Returns a boolean that indicates whether the modification stack is setup and can execute.","returnType":"bool"},{"name":"get_modification","signature":"get_modification(mod_idx: int) -> SkeletonModification2D","description":"Returns the  at the passed-in index, [param mod_idx].","returnType":"SkeletonModification2D"},{"name":"get_skeleton","signature":"get_skeleton() -> Skeleton2D","description":"Returns the  node that the SkeletonModificationStack2D is bound to.","returnType":"Skeleton2D"},{"name":"set_modification","signature":"set_modification(mod_idx: int, modification: SkeletonModification2D) -> void","description":"Sets the modification at [param mod_idx] to the passed-in modification, [param modification].","returnType":"void"},{"name":"setup","signature":"setup() -> void","description":"Sets up the modification stack so it can execute. This function should be called by  and shouldn't be manually called unless you know what you are doing.","returnType":"void"}],"signals":[]},"SkeletonModifier3D":{"name":"SkeletonModifier3D","description":"A node that may modify Skeleton3D's bone.","inherits":"Node3D","properties":[{"name":"active","type":"bool","description":"If [code]true[/code], the [SkeletonModifier3D] will be processing."},{"name":"influence","type":"float","description":"Sets the influence of the modification.\n\t\t\t[b]Note:[/b] This value is used by [Skeleton3D] to blend, so the [SkeletonModifier3D] should always apply only 100% of the result without interpolation."}],"methods":[{"name":"_process_modification","signature":"_process_modification() -> void","description":"Override this virtual method to implement a custom skeleton modifier. You should do things like get the 's current pose and apply the pose here.\n\t\t\t\t[method _process_modification] must not apply [member influence] to bone poses because the  automatically applies influence to all bone poses set by the modifier.","returnType":"void"},{"name":"get_skeleton","signature":"get_skeleton() -> Skeleton3D","description":"Get parent  node if found.","returnType":"Skeleton3D"}],"signals":[{"name":"modification_processed","description":"Notifies when the modification have been finished.\n\t\t\t\t[b]Note:[/b] If you want to get the modified bone pose by the modifier, you must use [method Skeleton3D.get_bone_pose] or [method Skeleton3D.get_bone_global_pose] at the moment this signal is fired."}]},"SkeletonProfile":{"name":"SkeletonProfile","description":"Base class for a profile of a virtual skeleton used as a target for retargeting.","inherits":"Resource","properties":[{"name":"bone_size","type":"int","description":"The amount of bones in retargeting section's [BoneMap] editor. For example, [SkeletonProfileHumanoid] has 56 bones.\n\t\t\tThe size of elements in [BoneMap] updates when changing this property in it's assigned [SkeletonProfile]."},{"name":"group_size","type":"int","description":"The amount of groups of bones in retargeting section's [BoneMap] editor. For example, [SkeletonProfileHumanoid] has 4 groups.\n\t\t\tThis property exists to separate the bone list into several sections in the editor."},{"name":"root_bone","type":"StringName","description":"A bone name that will be used as the root bone in [AnimationTree]. This should be the bone of the parent of hips that exists at the world origin."},{"name":"scale_base_bone","type":"StringName","description":"A bone name which will use model's height as the coefficient for normalization. For example, [SkeletonProfileHumanoid] defines it as [code]Hips[/code]."}],"methods":[{"name":"find_bone","signature":"find_bone(bone_name: StringName) -> int","description":"Returns the bone index that matches [param bone_name] as its name.","returnType":"int"},{"name":"get_bone_name","signature":"get_bone_name(bone_idx: int) -> StringName","description":"Returns the name of the bone at [param bone_idx] that will be the key name in the .\n\t\t\t\tIn the retargeting process, the returned bone name is the bone name of the target skeleton.","returnType":"StringName"},{"name":"get_bone_parent","signature":"get_bone_parent(bone_idx: int) -> StringName","description":"Returns the name of the bone which is the parent to the bone at [param bone_idx]. The result is empty if the bone has no parent.","returnType":"StringName"},{"name":"get_bone_tail","signature":"get_bone_tail(bone_idx: int) -> StringName","description":"Returns the name of the bone which is the tail of the bone at [param bone_idx].","returnType":"StringName"},{"name":"get_group","signature":"get_group(bone_idx: int) -> StringName","description":"Returns the group of the bone at [param bone_idx].","returnType":"StringName"},{"name":"get_group_name","signature":"get_group_name(group_idx: int) -> StringName","description":"Returns the name of the group at [param group_idx] that will be the drawing group in the  editor.","returnType":"StringName"},{"name":"get_handle_offset","signature":"get_handle_offset(bone_idx: int) -> Vector2","description":"Returns the offset of the bone at [param bone_idx] that will be the button position in the  editor.\n\t\t\t\tThis is the offset with origin at the top left corner of the square.","returnType":"Vector2"},{"name":"get_reference_pose","signature":"get_reference_pose(bone_idx: int) -> Transform3D","description":"Returns the reference pose transform for bone [param bone_idx].","returnType":"Transform3D"},{"name":"get_tail_direction","signature":"get_tail_direction(bone_idx: int) -> int","description":"Returns the tail direction of the bone at [param bone_idx].","returnType":"int"},{"name":"get_texture","signature":"get_texture(group_idx: int) -> Texture2D","description":"Returns the texture of the group at [param group_idx] that will be the drawing group background image in the  editor.","returnType":"Texture2D"},{"name":"is_required","signature":"is_required(bone_idx: int) -> bool","description":"Returns whether the bone at [param bone_idx] is required for retargeting.\n\t\t\t\tThis value is used by the bone map editor. If this method returns true, and no bone is assigned, the handle color will be red on the bone map editor.","returnType":"bool"},{"name":"set_bone_name","signature":"set_bone_name(bone_idx: int, bone_name: StringName) -> void","description":"Sets the name of the bone at [param bone_idx] that will be the key name in the .\n\t\t\t\tIn the retargeting process, the setting bone name is the bone name of the target skeleton.","returnType":"void"},{"name":"set_bone_parent","signature":"set_bone_parent(bone_idx: int, bone_parent: StringName) -> void","description":"Sets the bone with name [param bone_parent] as the parent of the bone at [param bone_idx]. If an empty string is passed, then the bone has no parent.","returnType":"void"},{"name":"set_bone_tail","signature":"set_bone_tail(bone_idx: int, bone_tail: StringName) -> void","description":"Sets the bone with name [param bone_tail] as the tail of the bone at [param bone_idx].","returnType":"void"},{"name":"set_group","signature":"set_group(bone_idx: int, group: StringName) -> void","description":"Sets the group of the bone at [param bone_idx].","returnType":"void"},{"name":"set_group_name","signature":"set_group_name(group_idx: int, group_name: StringName) -> void","description":"Sets the name of the group at [param group_idx] that will be the drawing group in the  editor.","returnType":"void"},{"name":"set_handle_offset","signature":"set_handle_offset(bone_idx: int, handle_offset: Vector2) -> void","description":"Sets the offset of the bone at [param bone_idx] that will be the button position in the  editor.\n\t\t\t\tThis is the offset with origin at the top left corner of the square.","returnType":"void"},{"name":"set_reference_pose","signature":"set_reference_pose(bone_idx: int, bone_name: Transform3D) -> void","description":"Sets the reference pose transform for bone [param bone_idx].","returnType":"void"},{"name":"set_required","signature":"set_required(bone_idx: int, required: bool) -> void","description":"Sets the required status for bone [param bone_idx] to [param required].","returnType":"void"},{"name":"set_tail_direction","signature":"set_tail_direction(bone_idx: int, tail_direction: int) -> void","description":"Sets the tail direction of the bone at [param bone_idx].\n\t\t\t\tNote: This only specifies the method of calculation. The actual coordinates required should be stored in an external skeleton, so the calculation itself needs to be done externally.","returnType":"void"},{"name":"set_texture","signature":"set_texture(group_idx: int, texture: Texture2D) -> void","description":"Sets the texture of the group at [param group_idx] that will be the drawing group background image in the  editor.","returnType":"void"}],"signals":[{"name":"profile_updated","description":"This signal is emitted when change the value in profile. This is used to update key name in the [BoneMap] and to redraw the [BoneMap] editor.\n\t\t\t\t[b]Note:[/b] This signal is not connected directly to editor to simplify the reference, instead it is passed on to editor through the [BoneMap]."}]},"SkeletonProfileHumanoid":{"name":"SkeletonProfileHumanoid","description":"A humanoid  preset.","inherits":"SkeletonProfile","properties":[],"methods":[],"signals":[]},"Skin":{"name":"Skin","description":"","inherits":"Resource","properties":[],"methods":[{"name":"add_bind","signature":"add_bind(bone: int, pose: Transform3D) -> void","description":"","returnType":"void"},{"name":"add_named_bind","signature":"add_named_bind(name: String, pose: Transform3D) -> void","description":"","returnType":"void"},{"name":"clear_binds","signature":"clear_binds() -> void","description":"","returnType":"void"},{"name":"get_bind_bone","signature":"get_bind_bone(bind_index: int) -> int","description":"","returnType":"int"},{"name":"get_bind_count","signature":"get_bind_count() -> int","description":"","returnType":"int"},{"name":"get_bind_name","signature":"get_bind_name(bind_index: int) -> StringName","description":"","returnType":"StringName"},{"name":"get_bind_pose","signature":"get_bind_pose(bind_index: int) -> Transform3D","description":"","returnType":"Transform3D"},{"name":"set_bind_bone","signature":"set_bind_bone(bind_index: int, bone: int) -> void","description":"","returnType":"void"},{"name":"set_bind_count","signature":"set_bind_count(bind_count: int) -> void","description":"","returnType":"void"},{"name":"set_bind_name","signature":"set_bind_name(bind_index: int, name: StringName) -> void","description":"","returnType":"void"},{"name":"set_bind_pose","signature":"set_bind_pose(bind_index: int, pose: Transform3D) -> void","description":"","returnType":"void"}],"signals":[]},"SkinReference":{"name":"SkinReference","description":"A reference-counted holder object for a skeleton RID used in the .","inherits":"RefCounted","properties":[],"methods":[{"name":"get_skeleton","signature":"get_skeleton() -> RID","description":"Returns the  owned by this SkinReference, as returned by [method RenderingServer.skeleton_create].","returnType":"RID"},{"name":"get_skin","signature":"get_skin() -> Skin","description":"Returns the  connected to this SkinReference. In the case of  with no [member MeshInstance3D.skin] assigned, this will reference an internal default  owned by that .\n\t\t\t\tNote that a single  may have more than one  in the case that it is shared by meshes across multiple  nodes.","returnType":"Skin"}],"signals":[]},"Sky":{"name":"Sky","description":"Defines a 3D environment's background by using a .","inherits":"Resource","properties":[{"name":"process_mode","type":"int","description":"Sets the method for generating the radiance map from the sky. The radiance map is a cubemap with increasingly blurry versions of the sky corresponding to different levels of roughness. Radiance maps can be expensive to calculate. See [enum ProcessMode] for options."},{"name":"radiance_size","type":"int","description":"The [Sky]'s radiance map size. The higher the radiance map size, the more detailed the lighting from the [Sky] will be.\n\t\t\tSee [enum RadianceSize] constants for values.\n\t\t\t[b]Note:[/b] Some hardware will have trouble with higher radiance sizes, especially [constant RADIANCE_SIZE_512] and above. Only use such high values on high-end hardware."},{"name":"sky_material","type":"Material","description":"[Material] used to draw the background. Can be [PanoramaSkyMaterial], [ProceduralSkyMaterial], [PhysicalSkyMaterial], or even a [ShaderMaterial] if you want to use your own custom shader."}],"methods":[],"signals":[]},"Slider":{"name":"Slider","description":"Abstract base class for sliders.","inherits":"Range","properties":[{"name":"editable","type":"bool","description":"If [code]true[/code], the slider can be interacted with. If [code]false[/code], the value can be changed only by code."},{"name":"scrollable","type":"bool","description":"If [code]true[/code], the value can be changed using the mouse wheel."},{"name":"tick_count","type":"int","description":"Number of ticks displayed on the slider, including border ticks. Ticks are uniformly-distributed value markers."},{"name":"ticks_on_borders","type":"bool","description":"If [code]true[/code], the slider will display ticks for minimum and maximum values."}],"methods":[],"signals":[{"name":"drag_ended","description":"Emitted when the grabber stops being dragged. If [param value_changed] is [code]true[/code], [member Range.value] is different from the value when the dragging was started."},{"name":"drag_started","description":"Emitted when the grabber starts being dragged. This is emitted before the corresponding [signal Range.value_changed] signal."}]},"SliderJoint3D":{"name":"SliderJoint3D","description":"A physics joint that restricts the movement of a 3D physics body along an axis relative to another physics body.","inherits":"Joint3D","properties":[{"name":"angular_limit/damping","type":"float","description":"The amount of damping of the rotation when the limit is surpassed.\n\t\t\tA lower damping value allows a rotation initiated by body A to travel to body B slower."},{"name":"angular_limit/lower_angle","type":"float","description":"The lower limit of rotation in the slider."},{"name":"angular_limit/restitution","type":"float","description":"The amount of restitution of the rotation when the limit is surpassed.\n\t\t\tDoes not affect damping."},{"name":"angular_limit/softness","type":"float","description":"A factor applied to the all rotation once the limit is surpassed.\n\t\t\tMakes all rotation slower when between 0 and 1."},{"name":"angular_limit/upper_angle","type":"float","description":"The upper limit of rotation in the slider."},{"name":"angular_motion/damping","type":"float","description":"The amount of damping of the rotation in the limits."},{"name":"angular_motion/restitution","type":"float","description":"The amount of restitution of the rotation in the limits."},{"name":"angular_motion/softness","type":"float","description":"A factor applied to the all rotation in the limits."},{"name":"angular_ortho/damping","type":"float","description":"The amount of damping of the rotation across axes orthogonal to the slider."},{"name":"angular_ortho/restitution","type":"float","description":"The amount of restitution of the rotation across axes orthogonal to the slider."},{"name":"angular_ortho/softness","type":"float","description":"A factor applied to the all rotation across axes orthogonal to the slider."},{"name":"linear_limit/damping","type":"float","description":"The amount of damping that happens once the limit defined by [member linear_limit/lower_distance] and [member linear_limit/upper_distance] is surpassed."},{"name":"linear_limit/lower_distance","type":"float","description":"The minimum difference between the pivot points on their X axis before damping happens."},{"name":"linear_limit/restitution","type":"float","description":"The amount of restitution once the limits are surpassed. The lower, the more velocity-energy gets lost."},{"name":"linear_limit/softness","type":"float","description":"A factor applied to the movement across the slider axis once the limits get surpassed. The lower, the slower the movement."},{"name":"linear_limit/upper_distance","type":"float","description":"The maximum difference between the pivot points on their X axis before damping happens."},{"name":"linear_motion/damping","type":"float","description":"The amount of damping inside the slider limits."},{"name":"linear_motion/restitution","type":"float","description":"The amount of restitution inside the slider limits."},{"name":"linear_motion/softness","type":"float","description":"A factor applied to the movement across the slider axis as long as the slider is in the limits. The lower, the slower the movement."},{"name":"linear_ortho/damping","type":"float","description":"The amount of damping when movement is across axes orthogonal to the slider."},{"name":"linear_ortho/restitution","type":"float","description":"The amount of restitution when movement is across axes orthogonal to the slider."},{"name":"linear_ortho/softness","type":"float","description":"A factor applied to the movement across axes orthogonal to the slider."}],"methods":[{"name":"get_param","signature":"get_param(param: int) -> float","description":"Returns the value of the given parameter (see [enum Param] constants).","returnType":"float"},{"name":"set_param","signature":"set_param(param: int, value: float) -> void","description":"Assigns [param value] to the given parameter (see [enum Param] constants).","returnType":"void"}],"signals":[]},"SoftBody3D":{"name":"SoftBody3D","description":"A deformable 3D physics mesh.","inherits":"MeshInstance3D","properties":[{"name":"collision_layer","type":"int","description":"The physics layers this SoftBody3D [b]is in[/b]. Collision objects can exist in one or more of 32 different layers. See also [member collision_mask].\n\t\t\t[b]Note:[/b] Object A can detect a contact with object B only if object B is in any of the layers that object A scans. See [url=$DOCS_URL/tutorials/physics/physics_introduction.html#collision-layers-and-masks]Collision layers and masks[/url] in the documentation for more information."},{"name":"collision_mask","type":"int","description":"The physics layers this SoftBody3D [b]scans[/b]. Collision objects can scan one or more of 32 different layers. See also [member collision_layer].\n\t\t\t[b]Note:[/b] Object A can detect a contact with object B only if object B is in any of the layers that object A scans. See [url=$DOCS_URL/tutorials/physics/physics_introduction.html#collision-layers-and-masks]Collision layers and masks[/url] in the documentation for more information."},{"name":"damping_coefficient","type":"float","description":"The body's damping coefficient. Higher values will slow down the body more noticeably when forces are applied."},{"name":"disable_mode","type":"int","description":"Defines the behavior in physics when [member Node.process_mode] is set to [constant Node.PROCESS_MODE_DISABLED]. See [enum DisableMode] for more details about the different modes."},{"name":"drag_coefficient","type":"float","description":"The body's drag coefficient. Higher values increase this body's air resistance.\n\t\t\t[b]Note:[/b] This value is currently unused by Godot's default physics implementation."},{"name":"linear_stiffness","type":"float","description":"Higher values will result in a stiffer body, while lower values will increase the body's ability to bend. The value can be between [code]0.0[/code] and [code]1.0[/code] (inclusive)."},{"name":"parent_collision_ignore","type":"NodePath","description":"[NodePath] to a [CollisionObject3D] this SoftBody3D should avoid clipping."},{"name":"pressure_coefficient","type":"float","description":"The pressure coefficient of this soft body. Simulate pressure build-up from inside this body. Higher values increase the strength of this effect."},{"name":"ray_pickable","type":"bool","description":"If [code]true[/code], the [SoftBody3D] will respond to [RayCast3D]s."},{"name":"simulation_precision","type":"int","description":"Increasing this value will improve the resulting simulation, but can affect performance. Use with care."},{"name":"total_mass","type":"float","description":"The SoftBody3D's mass."}],"methods":[{"name":"add_collision_exception_with","signature":"add_collision_exception_with(body: Node) -> void","description":"Adds a body to the list of bodies that this body can't collide with.","returnType":"void"},{"name":"get_collision_exceptions","signature":"get_collision_exceptions() -> PhysicsBody3D[]","description":"Returns an array of nodes that were added as collision exceptions for this body.","returnType":"PhysicsBody3D[]"},{"name":"get_collision_layer_value","signature":"get_collision_layer_value(layer_number: int) -> bool","description":"Returns whether or not the specified layer of the [member collision_layer] is enabled, given a [param layer_number] between 1 and 32.","returnType":"bool"},{"name":"get_collision_mask_value","signature":"get_collision_mask_value(layer_number: int) -> bool","description":"Returns whether or not the specified layer of the [member collision_mask] is enabled, given a [param layer_number] between 1 and 32.","returnType":"bool"},{"name":"get_physics_rid","signature":"get_physics_rid() -> RID","description":"Returns the internal  used by the  for this body.","returnType":"RID"},{"name":"get_point_transform","signature":"get_point_transform(point_index: int) -> Vector3","description":"Returns local translation of a vertex in the surface array.","returnType":"Vector3"},{"name":"is_point_pinned","signature":"is_point_pinned(point_index: int) -> bool","description":"Returns true if vertex is set to pinned.","returnType":"bool"},{"name":"remove_collision_exception_with","signature":"remove_collision_exception_with(body: Node) -> void","description":"Removes a body from the list of bodies that this body can't collide with.","returnType":"void"},{"name":"set_collision_layer_value","signature":"set_collision_layer_value(layer_number: int, value: bool) -> void","description":"Based on [param value], enables or disables the specified layer in the [member collision_layer], given a [param layer_number] between 1 and 32.","returnType":"void"},{"name":"set_collision_mask_value","signature":"set_collision_mask_value(layer_number: int, value: bool) -> void","description":"Based on [param value], enables or disables the specified layer in the [member collision_mask], given a [param layer_number] between 1 and 32.","returnType":"void"},{"name":"set_point_pinned","signature":"set_point_pinned(point_index: int, pinned: bool, attachment_path: NodePath, insert_at: int) -> void","description":"Sets the pinned state of a surface vertex. When set to true, the optional [param attachment_path] can define a  the pinned vertex will be attached to.","returnType":"void"}],"signals":[]},"SphereMesh":{"name":"SphereMesh","description":"Class representing a spherical .","inherits":"PrimitiveMesh","properties":[{"name":"height","type":"float","description":"Full height of the sphere."},{"name":"is_hemisphere","type":"bool","description":"If [code]true[/code], a hemisphere is created rather than a full sphere.\n\t\t\t[b]Note:[/b] To get a regular hemisphere, the height and radius of the sphere must be equal."},{"name":"radial_segments","type":"int","description":"Number of radial segments on the sphere."},{"name":"radius","type":"float","description":"Radius of sphere."},{"name":"rings","type":"int","description":"Number of segments along the height of the sphere."}],"methods":[],"signals":[]},"SphereOccluder3D":{"name":"SphereOccluder3D","description":"Spherical shape for use with occlusion culling in .","inherits":"Occluder3D","properties":[{"name":"radius","type":"float","description":"The sphere's radius in 3D units."}],"methods":[],"signals":[]},"SphereShape3D":{"name":"SphereShape3D","description":"A 3D sphere shape used for physics collision.","inherits":"Shape3D","properties":[{"name":"radius","type":"float","description":"The sphere's radius. The shape's diameter is double the radius."}],"methods":[],"signals":[]},"SpinBox":{"name":"SpinBox","description":"An input field for numbers.","inherits":"Range","properties":[{"name":"alignment","type":"int","description":"Changes the alignment of the underlying [LineEdit]."},{"name":"custom_arrow_step","type":"float","description":"If not [code]0[/code], [member Range.value] will always be rounded to a multiple of [member custom_arrow_step] when interacting with the arrow buttons of the [SpinBox]."},{"name":"editable","type":"bool","description":"If [code]true[/code], the [SpinBox] will be editable. Otherwise, it will be read only."},{"name":"prefix","type":"String","description":"Adds the specified prefix string before the numerical value of the [SpinBox]."},{"name":"select_all_on_focus","type":"bool","description":"If [code]true[/code], the [SpinBox] will select the whole text when the [LineEdit] gains focus. Clicking the up and down arrows won't trigger this behavior."},{"name":"suffix","type":"String","description":"Adds the specified suffix string after the numerical value of the [SpinBox]."},{"name":"update_on_text_changed","type":"bool","description":"Sets the value of the [Range] for this [SpinBox] when the [LineEdit] text is [i]changed[/i] instead of [i]submitted[/i]. See [signal LineEdit.text_changed] and [signal LineEdit.text_submitted]."}],"methods":[{"name":"apply","signature":"apply() -> void","description":"Applies the current value of this .","returnType":"void"},{"name":"get_line_edit","signature":"get_line_edit() -> LineEdit","description":"Returns the  instance from this . You can use it to access properties and methods of .\n\t\t\t\tWarning: This is a required internal node, removing and freeing it may cause a crash. If you wish to hide it or any of its children, use their [member CanvasItem.visible] property.","returnType":"LineEdit"}],"signals":[]},"SplitContainer":{"name":"SplitContainer","description":"A container that splits two child controls horizontally or vertically and provides a grabber for adjusting the split ratio.","inherits":"Container","properties":[{"name":"collapsed","type":"bool","description":"If [code]true[/code], the dragger will be disabled and the children will be sized as if the [member split_offset] was [code]0[/code]."},{"name":"drag_area_highlight_in_editor","type":"bool","description":"Highlights the drag area [Rect2] so you can see where it is during development. The drag area is gold if [member dragging_enabled] is [code]true[/code], and red if [code]false[/code]."},{"name":"drag_area_margin_begin","type":"int","description":"Reduces the size of the drag area and split bar [theme_item split_bar_background] at the beginning of the container."},{"name":"drag_area_margin_end","type":"int","description":"Reduces the size of the drag area and split bar [theme_item split_bar_background] at the end of the container."},{"name":"drag_area_offset","type":"int","description":"Shifts the drag area in the axis of the container to prevent the drag area from overlapping the [ScrollBar] or other selectable [Control] of a child node."},{"name":"dragger_visibility","type":"int","description":"Determines the dragger's visibility. See [enum DraggerVisibility] for details. This property does not determine whether dragging is enabled or not. Use [member dragging_enabled] for that."},{"name":"dragging_enabled","type":"bool","description":"Enables or disables split dragging."},{"name":"split_offset","type":"int","description":"The initial offset of the splitting between the two [Control]s, with [code]0[/code] being at the end of the first [Control]."},{"name":"vertical","type":"bool","description":"If [code]true[/code], the [SplitContainer] will arrange its children vertically, rather than horizontally.\n\t\t\tCan't be changed when using [HSplitContainer] and [VSplitContainer]."}],"methods":[{"name":"clamp_split_offset","signature":"clamp_split_offset() -> void","description":"Clamps the [member split_offset] value to not go outside the currently possible minimal and maximum values.","returnType":"void"},{"name":"get_drag_area_control","signature":"get_drag_area_control() -> Control","description":"Returns the drag area . For example, you can move a pre-configured button into the drag area  so that it rides along with the split bar. Try setting the  anchors to center prior to the reparent() call.\n\t\t\t\t\n\t\t\t\t$BarnacleButton.reparent($SplitContainer.get_drag_area_control())\n\t\t\t\t\n\t\t\t\tNote: The drag area  is drawn over the 's children, so  draw objects called from the  and children added to the  will also appear over the 's children. Try setting [member Control.mouse_filter] of custom children to [constant Control.MOUSE_FILTER_IGNORE] to prevent blocking the mouse from dragging if desired.\n\t\t\t\tWarning: This is a required internal node, removing and freeing it may cause a crash.","returnType":"Control"}],"signals":[{"name":"drag_ended","description":"Emitted when the user ends dragging."},{"name":"drag_started","description":"Emitted when the user starts dragging."},{"name":"dragged","description":"Emitted when the dragger is dragged by user."}]},"SpotLight3D":{"name":"SpotLight3D","description":"A spotlight, such as a reflector spotlight or a lantern.","inherits":"Light3D","properties":[{"name":"spot_angle","type":"float","description":"The spotlight's angle in degrees.\n\t\t\t[b]Note:[/b] [member spot_angle] is not affected by [member Node3D.scale] (the light's scale or its parent's scale)."},{"name":"spot_angle_attenuation","type":"float","description":"The spotlight's [i]angular[/i] attenuation curve. See also [member spot_attenuation]."},{"name":"spot_attenuation","type":"float","description":"Controls the distance attenuation function for spotlights.\n\t\t\tA value of [code]0.0[/code] will maintain a constant brightness through most of the range, but smoothly attenuate the light at the edge of the range. Use a value of [code]2.0[/code] for physically accurate lights as it results in the proper inverse square attenutation.\n\t\t\t[b]Note:[/b] Setting attenuation to [code]2.0[/code] or higher may result in distant objects receiving minimal light, even within range. For example, with a range of [code]4096[/code], an object at [code]100[/code] units is attenuated by a factor of [code]0.0001[/code]. With a default brightness of [code]1[/code], the light would not be visible at that distance.\n\t\t\t[b]Note:[/b] Using negative or values higher than [code]10.0[/code] may lead to unexpected results."},{"name":"spot_range","type":"float","description":"The maximal range that can be reached by the spotlight. Note that the effectively lit area may appear to be smaller depending on the [member spot_attenuation] in use. No matter the [member spot_attenuation] in use, the light will never reach anything outside this range.\n\t\t\t[b]Note:[/b] [member spot_range] is not affected by [member Node3D.scale] (the light's scale or its parent's scale)."}],"methods":[],"signals":[]},"SpringArm3D":{"name":"SpringArm3D","description":"A 3D raycast that dynamically moves its children near the collision point.","inherits":"Node3D","properties":[{"name":"collision_mask","type":"int","description":"The layers against which the collision check shall be done. See [url=$DOCS_URL/tutorials/physics/physics_introduction.html#collision-layers-and-masks]Collision layers and masks[/url] in the documentation for more information."},{"name":"margin","type":"float","description":"When the collision check is made, a candidate length for the SpringArm3D is given.\n\t\t\tThe margin is then subtracted to this length and the translation is applied to the child objects of the SpringArm3D.\n\t\t\tThis margin is useful for when the SpringArm3D has a [Camera3D] as a child node: without the margin, the [Camera3D] would be placed on the exact point of collision, while with the margin the [Camera3D] would be placed close to the point of collision."},{"name":"shape","type":"Shape3D","description":"The [Shape3D] to use for the SpringArm3D.\n\t\t\tWhen the shape is set, the SpringArm3D will cast the [Shape3D] on its z axis instead of performing a ray cast."},{"name":"spring_length","type":"float","description":"The maximum extent of the SpringArm3D. This is used as a length for both the ray and the shape cast used internally to calculate the desired position of the SpringArm3D's child nodes.\n\t\t\tTo know more about how to perform a shape cast or a ray cast, please consult the [PhysicsDirectSpaceState3D] documentation."}],"methods":[{"name":"add_excluded_object","signature":"add_excluded_object(RID: RID) -> void","description":"Adds the  object with the given  to the list of  objects excluded from the collision check.","returnType":"void"},{"name":"clear_excluded_objects","signature":"clear_excluded_objects() -> void","description":"Clears the list of  objects excluded from the collision check.","returnType":"void"},{"name":"get_hit_length","signature":"get_hit_length() -> float","description":"Returns the spring arm's current length.","returnType":"float"},{"name":"remove_excluded_object","signature":"remove_excluded_object(RID: RID) -> bool","description":"Removes the given  from the list of  objects excluded from the collision check.","returnType":"bool"}],"signals":[]},"SpringBoneCollision3D":{"name":"SpringBoneCollision3D","description":"A base class of the collision that interacts with .","inherits":"Node3D","properties":[{"name":"bone","type":"int","description":"The index of the attached bone."},{"name":"bone_name","type":"String","description":"The name of the attached bone."},{"name":"position_offset","type":"Vector3","description":"The offset of the position from [Skeleton3D]'s [member bone] pose position."},{"name":"rotation_offset","type":"Quaternion","description":"The offset of the rotation from [Skeleton3D]'s [member bone] pose rotation."}],"methods":[{"name":"get_skeleton","signature":"get_skeleton() -> Skeleton3D","description":"Get parent  node of the parent  if found.","returnType":"Skeleton3D"}],"signals":[]},"SpringBoneCollisionCapsule3D":{"name":"SpringBoneCollisionCapsule3D","description":"A capsule shape collision that interacts with .","inherits":"SpringBoneCollision3D","properties":[{"name":"height","type":"float","description":"The capsule's height."},{"name":"inside","type":"bool","description":"If [code]true[/code], the collision acts to trap the joint within the collision."},{"name":"radius","type":"float","description":"The capsule's radius."}],"methods":[],"signals":[]},"SpringBoneCollisionPlane3D":{"name":"SpringBoneCollisionPlane3D","description":"A infinite plane collision that interacts with .","inherits":"SpringBoneCollision3D","properties":[],"methods":[],"signals":[]},"SpringBoneCollisionSphere3D":{"name":"SpringBoneCollisionSphere3D","description":"A sphere shape collision that interacts with .","inherits":"SpringBoneCollision3D","properties":[{"name":"inside","type":"bool","description":"If [code]true[/code], the collision acts to trap the joint within the collision."},{"name":"radius","type":"float","description":"The sphere's radius."}],"methods":[],"signals":[]},"SpringBoneSimulator3D":{"name":"SpringBoneSimulator3D","description":"A  to apply inertial wavering to bone chains.","inherits":"SkeletonModifier3D","properties":[{"name":"setting_count","type":"int","description":"The number of settings."}],"methods":[{"name":"are_all_child_collisions_enabled","signature":"are_all_child_collisions_enabled(index: int) -> bool","description":"Returns true if the all child s are contained in the collision list at [param index] in the settings.","returnType":"bool"},{"name":"clear_collisions","signature":"clear_collisions(index: int) -> void","description":"Clears all collisions from the collision list at [param index] in the settings when [method are_all_child_collisions_enabled] is false.","returnType":"void"},{"name":"clear_exclude_collisions","signature":"clear_exclude_collisions(index: int) -> void","description":"Clears all exclude collisions from the collision list at [param index] in the settings when [method are_all_child_collisions_enabled] is true.","returnType":"void"},{"name":"clear_settings","signature":"clear_settings() -> void","description":"Clears all settings.","returnType":"void"},{"name":"get_center_bone","signature":"get_center_bone(index: int) -> int","description":"Returns the center bone index of the bone chain.","returnType":"int"},{"name":"get_center_bone_name","signature":"get_center_bone_name(index: int) -> String","description":"Returns the center bone name of the bone chain.","returnType":"String"},{"name":"get_center_from","signature":"get_center_from(index: int) -> int","description":"Returns what the center originates from in the bone chain.","returnType":"int"},{"name":"get_center_node","signature":"get_center_node(index: int) -> NodePath","description":"Returns the center node path of the bone chain.","returnType":"NodePath"},{"name":"get_collision_count","signature":"get_collision_count(index: int) -> int","description":"Returns the collision count of the bone chain's collision list when [method are_all_child_collisions_enabled] is false.","returnType":"int"},{"name":"get_collision_path","signature":"get_collision_path(index: int, collision: int) -> NodePath","description":"Returns the node path of the  at [param collision] in the bone chain's collision list when [method are_all_child_collisions_enabled] is false.","returnType":"NodePath"},{"name":"get_drag","signature":"get_drag(index: int) -> float","description":"Returns the drag force damping curve of the bone chain.","returnType":"float"},{"name":"get_drag_damping_curve","signature":"get_drag_damping_curve(index: int) -> Curve","description":"Returns the drag force damping curve of the bone chain.","returnType":"Curve"},{"name":"get_end_bone","signature":"get_end_bone(index: int) -> int","description":"Returns the end bone index of the bone chain.","returnType":"int"},{"name":"get_end_bone_direction","signature":"get_end_bone_direction(index: int) -> int","description":"Returns the end bone's tail direction of the bone chain when [method is_end_bone_extended] is true.","returnType":"int"},{"name":"get_end_bone_length","signature":"get_end_bone_length(index: int) -> float","description":"Returns the end bone's tail length of the bone chain when [method is_end_bone_extended] is true.","returnType":"float"},{"name":"get_end_bone_name","signature":"get_end_bone_name(index: int) -> String","description":"Returns the end bone name of the bone chain.","returnType":"String"},{"name":"get_exclude_collision_count","signature":"get_exclude_collision_count(index: int) -> int","description":"Returns the exclude collision count of the bone chain's exclude collision list when [method are_all_child_collisions_enabled] is true.","returnType":"int"},{"name":"get_exclude_collision_path","signature":"get_exclude_collision_path(index: int, collision: int) -> NodePath","description":"Returns the node path of the  at [param collision] in the bone chain's exclude collision list when [method are_all_child_collisions_enabled] is true.","returnType":"NodePath"},{"name":"get_gravity","signature":"get_gravity(index: int) -> float","description":"Returns the gravity amount of the bone chain.","returnType":"float"},{"name":"get_gravity_damping_curve","signature":"get_gravity_damping_curve(index: int) -> Curve","description":"Returns the gravity amount damping curve of the bone chain.","returnType":"Curve"},{"name":"get_gravity_direction","signature":"get_gravity_direction(index: int) -> Vector3","description":"Returns the gravity direction of the bone chain.","returnType":"Vector3"},{"name":"get_joint_bone","signature":"get_joint_bone(index: int, joint: int) -> int","description":"Returns the bone index at [param joint] in the bone chain's joint list.","returnType":"int"},{"name":"get_joint_bone_name","signature":"get_joint_bone_name(index: int, joint: int) -> String","description":"Returns the bone name at [param joint] in the bone chain's joint list.","returnType":"String"},{"name":"get_joint_count","signature":"get_joint_count(index: int) -> int","description":"Returns the joint count of the bone chain's joint list.","returnType":"int"},{"name":"get_joint_drag","signature":"get_joint_drag(index: int, joint: int) -> float","description":"Returns the drag force at [param joint] in the bone chain's joint list.","returnType":"float"},{"name":"get_joint_gravity","signature":"get_joint_gravity(index: int, joint: int) -> float","description":"Returns the gravity amount at [param joint] in the bone chain's joint list.","returnType":"float"},{"name":"get_joint_gravity_direction","signature":"get_joint_gravity_direction(index: int, joint: int) -> Vector3","description":"Returns the gravity direction at [param joint] in the bone chain's joint list.","returnType":"Vector3"},{"name":"get_joint_radius","signature":"get_joint_radius(index: int, joint: int) -> float","description":"Returns the radius at [param joint] in the bone chain's joint list.","returnType":"float"},{"name":"get_joint_rotation_axis","signature":"get_joint_rotation_axis(index: int, joint: int) -> int","description":"Returns the rotation axis at [param joint] in the bone chain's joint list.","returnType":"int"},{"name":"get_joint_stiffness","signature":"get_joint_stiffness(index: int, joint: int) -> float","description":"Returns the stiffness force at [param joint] in the bone chain's joint list.","returnType":"float"},{"name":"get_radius","signature":"get_radius(index: int) -> float","description":"Returns the joint radius of the bone chain.","returnType":"float"},{"name":"get_radius_damping_curve","signature":"get_radius_damping_curve(index: int) -> Curve","description":"Returns the joint radius damping curve of the bone chain.","returnType":"Curve"},{"name":"get_root_bone","signature":"get_root_bone(index: int) -> int","description":"Returns the root bone index of the bone chain.","returnType":"int"},{"name":"get_root_bone_name","signature":"get_root_bone_name(index: int) -> String","description":"Returns the root bone name of the bone chain.","returnType":"String"},{"name":"get_rotation_axis","signature":"get_rotation_axis(index: int) -> int","description":"Returns the rotation axis of the bone chain.","returnType":"int"},{"name":"get_stiffness","signature":"get_stiffness(index: int) -> float","description":"Returns the stiffness force of the bone chain.","returnType":"float"},{"name":"get_stiffness_damping_curve","signature":"get_stiffness_damping_curve(index: int) -> Curve","description":"Returns the stiffness force damping curve of the bone chain.","returnType":"Curve"},{"name":"is_config_individual","signature":"is_config_individual(index: int) -> bool","description":"Returns true if the config can be edited individually for each joint.","returnType":"bool"},{"name":"is_end_bone_extended","signature":"is_end_bone_extended(index: int) -> bool","description":"Returns true if the end bone is extended to have the tail.","returnType":"bool"},{"name":"reset","signature":"reset() -> void","description":"Resets a simulating state with respect to the current bone pose.\n\t\t\t\tIt is useful to prevent the simulation result getting violent. For example, calling this immediately after a call to [method AnimationPlayer.play] without a fading, or within the previous [signal SkeletonModifier3D.modification_processed] signal if it's condition changes significantly.","returnType":"void"},{"name":"set_center_bone","signature":"set_center_bone(index: int, bone: int) -> void","description":"Sets the center bone index of the bone chain.","returnType":"void"},{"name":"set_center_bone_name","signature":"set_center_bone_name(index: int, bone_name: String) -> void","description":"Sets the center bone name of the bone chain.","returnType":"void"},{"name":"set_center_from","signature":"set_center_from(index: int, center_from: int) -> void","description":"Sets what the center originates from in the bone chain.\n\t\t\t\tBone movement is calculated based on the difference in relative distance between center and bone in the previous and next frames.\n\t\t\t\tFor example, if the parent  is used as the center, the bones are considered to have not moved if the  moves in the world.\n\t\t\t\tIn this case, only a change in the bone pose is considered to be a bone movement.","returnType":"void"},{"name":"set_center_node","signature":"set_center_node(index: int, node_path: NodePath) -> void","description":"Sets the center node path of the bone chain.","returnType":"void"},{"name":"set_collision_count","signature":"set_collision_count(index: int, count: int) -> void","description":"Sets the number of collisions in the collision list at [param index] in the settings when [method are_all_child_collisions_enabled] is false.","returnType":"void"},{"name":"set_collision_path","signature":"set_collision_path(index: int, collision: int, node_path: NodePath) -> void","description":"Sets the node path of the  at [param collision] in the bone chain's collision list when [method are_all_child_collisions_enabled] is false.","returnType":"void"},{"name":"set_drag","signature":"set_drag(index: int, drag: float) -> void","description":"Sets the drag force of the bone chain. The greater the value, the more suppressed the wiggling.\n\t\t\t\tThe value is scaled by [method set_drag_damping_curve] and cached in each joint setting in the joint list.","returnType":"void"},{"name":"set_drag_damping_curve","signature":"set_drag_damping_curve(index: int, curve: Curve) -> void","description":"Sets the drag force damping curve of the bone chain.","returnType":"void"},{"name":"set_enable_all_child_collisions","signature":"set_enable_all_child_collisions(index: int, enabled: bool) -> void","description":"If sets [param enabled] to true, the all child s are collided and [method set_exclude_collision_path] is enabled as an exclusion list at [param index] in the settings.\n\t\t\t\tIf sets [param enabled] to false, you need to manually register all valid collisions with [method set_collision_path].","returnType":"void"},{"name":"set_end_bone","signature":"set_end_bone(index: int, bone: int) -> void","description":"Sets the end bone index of the bone chain.","returnType":"void"},{"name":"set_end_bone_direction","signature":"set_end_bone_direction(index: int, bone_direction: int) -> void","description":"Sets the end bone tail direction of the bone chain when [method is_end_bone_extended] is true.","returnType":"void"},{"name":"set_end_bone_length","signature":"set_end_bone_length(index: int, length: float) -> void","description":"Sets the end bone tail length of the bone chain when [method is_end_bone_extended] is true.","returnType":"void"},{"name":"set_end_bone_name","signature":"set_end_bone_name(index: int, bone_name: String) -> void","description":"Sets the end bone name of the bone chain.\n\t\t\t\tNote: End bone must be the root bone or a child of the root bone. If they are the same, the tail must be extended by [method set_extend_end_bone] to jiggle the bone.","returnType":"void"},{"name":"set_exclude_collision_count","signature":"set_exclude_collision_count(index: int, count: int) -> void","description":"Sets the number of exclude collisions in the exclude collision list at [param index] in the settings when [method are_all_child_collisions_enabled] is true.","returnType":"void"},{"name":"set_exclude_collision_path","signature":"set_exclude_collision_path(index: int, collision: int, node_path: NodePath) -> void","description":"Sets the node path of the  at [param collision] in the bone chain's exclude collision list when [method are_all_child_collisions_enabled] is true.","returnType":"void"},{"name":"set_extend_end_bone","signature":"set_extend_end_bone(index: int, enabled: bool) -> void","description":"If [param enabled] is true, the end bone is extended to have the tail.\n\t\t\t\tThe extended tail config is allocated to the last element in the joint list.\n\t\t\t\tIn other words, if you set [param enabled] is false, the config of last element in the joint list has no effect in the simulated result.","returnType":"void"},{"name":"set_gravity","signature":"set_gravity(index: int, gravity: float) -> void","description":"Sets the gravity amount of the bone chain. This value is not an acceleration, but a constant velocity of movement in [method set_gravity_direction].\n\t\t\t\tIf [param gravity] is not 0, the modified pose will not return to the original pose since it is always affected by gravity.\n\t\t\t\tThe value is scaled by [method set_gravity_damping_curve] and cached in each joint setting in the joint list.","returnType":"void"},{"name":"set_gravity_damping_curve","signature":"set_gravity_damping_curve(index: int, curve: Curve) -> void","description":"Sets the gravity amount damping curve of the bone chain.","returnType":"void"},{"name":"set_gravity_direction","signature":"set_gravity_direction(index: int, gravity_direction: Vector3) -> void","description":"Sets the gravity direction of the bone chain. This value is internally normalized and then multiplied by [method set_gravity].\n\t\t\t\tThe value is cached in each joint setting in the joint list.","returnType":"void"},{"name":"set_individual_config","signature":"set_individual_config(index: int, enabled: bool) -> void","description":"If [param enabled] is true, the config can be edited individually for each joint.","returnType":"void"},{"name":"set_joint_drag","signature":"set_joint_drag(index: int, joint: int, drag: float) -> void","description":"Sets the drag force at [param joint] in the bone chain's joint list when [method is_config_individual] is true.","returnType":"void"},{"name":"set_joint_gravity","signature":"set_joint_gravity(index: int, joint: int, gravity: float) -> void","description":"Sets the gravity amount at [param joint] in the bone chain's joint list when [method is_config_individual] is true.","returnType":"void"},{"name":"set_joint_gravity_direction","signature":"set_joint_gravity_direction(index: int, joint: int, gravity_direction: Vector3) -> void","description":"Sets the gravity direction at [param joint] in the bone chain's joint list when [method is_config_individual] is true.","returnType":"void"},{"name":"set_joint_radius","signature":"set_joint_radius(index: int, joint: int, radius: float) -> void","description":"Sets the joint radius at [param joint] in the bone chain's joint list when [method is_config_individual] is true.","returnType":"void"},{"name":"set_joint_rotation_axis","signature":"set_joint_rotation_axis(index: int, joint: int, axis: int) -> void","description":"Sets the rotation axis at [param joint] in the bone chain's joint list when [method is_config_individual] is true.","returnType":"void"},{"name":"set_joint_stiffness","signature":"set_joint_stiffness(index: int, joint: int, stiffness: float) -> void","description":"Sets the stiffness force at [param joint] in the bone chain's joint list when [method is_config_individual] is true.","returnType":"void"},{"name":"set_radius","signature":"set_radius(index: int, radius: float) -> void","description":"Sets the joint radius of the bone chain. It is used to move and slide with the  in the collision list.\n\t\t\t\tThe value is scaled by [method set_radius_damping_curve] and cached in each joint setting in the joint list.","returnType":"void"},{"name":"set_radius_damping_curve","signature":"set_radius_damping_curve(index: int, curve: Curve) -> void","description":"Sets the joint radius damping curve of the bone chain.","returnType":"void"},{"name":"set_root_bone","signature":"set_root_bone(index: int, bone: int) -> void","description":"Sets the root bone index of the bone chain.","returnType":"void"},{"name":"set_root_bone_name","signature":"set_root_bone_name(index: int, bone_name: String) -> void","description":"Sets the root bone name of the bone chain.","returnType":"void"},{"name":"set_rotation_axis","signature":"set_rotation_axis(index: int, axis: int) -> void","description":"Sets the rotation axis of the bone chain. If sets a specific axis, it acts like a hinge joint.\n\t\t\t\tThe value is cached in each joint setting in the joint list.\n\t\t\t\tNote: The rotation axis and the forward vector shouldn't be colinear to avoid unintended rotation since  does not factor in twisting forces.","returnType":"void"},{"name":"set_stiffness","signature":"set_stiffness(index: int, stiffness: float) -> void","description":"Sets the stiffness force of the bone chain. The greater the value, the faster it recovers to its initial pose.\n\t\t\t\tIf [param stiffness] is 0, the modified pose will not return to the original pose.\n\t\t\t\tThe value is scaled by [method set_stiffness_damping_curve] and cached in each joint setting in the joint list.","returnType":"void"},{"name":"set_stiffness_damping_curve","signature":"set_stiffness_damping_curve(index: int, curve: Curve) -> void","description":"Sets the stiffness force damping curve of the bone chain.","returnType":"void"}],"signals":[]},"Sprite2D":{"name":"Sprite2D","description":"General-purpose sprite node.","inherits":"Node2D","properties":[{"name":"centered","type":"bool","description":"If [code]true[/code], texture is centered.\n\t\t\t[b]Note:[/b] For games with a pixel art aesthetic, textures may appear deformed when centered. This is caused by their position being between pixels. To prevent this, set this property to [code]false[/code], or consider enabling [member ProjectSettings.rendering/2d/snap/snap_2d_vertices_to_pixel] and [member ProjectSettings.rendering/2d/snap/snap_2d_transforms_to_pixel]."},{"name":"flip_h","type":"bool","description":"If [code]true[/code], texture is flipped horizontally."},{"name":"flip_v","type":"bool","description":"If [code]true[/code], texture is flipped vertically."},{"name":"frame","type":"int","description":"Current frame to display from sprite sheet. [member hframes] or [member vframes] must be greater than 1. This property is automatically adjusted when [member hframes] or [member vframes] are changed to keep pointing to the same visual frame (same column and row). If that's impossible, this value is reset to [code]0[/code]."},{"name":"frame_coords","type":"Vector2i","description":"Coordinates of the frame to display from sprite sheet. This is as an alias for the [member frame] property. [member hframes] or [member vframes] must be greater than 1."},{"name":"hframes","type":"int","description":"The number of columns in the sprite sheet. When this property is changed, [member frame] is adjusted so that the same visual frame is maintained (same row and column). If that's impossible, [member frame] is reset to [code]0[/code]."},{"name":"offset","type":"Vector2","description":"The texture's drawing offset."},{"name":"region_enabled","type":"bool","description":"If [code]true[/code], texture is cut from a larger atlas texture. See [member region_rect]."},{"name":"region_filter_clip_enabled","type":"bool","description":"If [code]true[/code], the area outside of the [member region_rect] is clipped to avoid bleeding of the surrounding texture pixels. [member region_enabled] must be [code]true[/code]."},{"name":"region_rect","type":"Rect2","description":"The region of the atlas texture to display. [member region_enabled] must be [code]true[/code]."},{"name":"texture","type":"Texture2D","description":"[Texture2D] object to draw."},{"name":"vframes","type":"int","description":"The number of rows in the sprite sheet. When this property is changed, [member frame] is adjusted so that the same visual frame is maintained (same row and column). If that's impossible, [member frame] is reset to [code]0[/code]."}],"methods":[{"name":"get_rect","signature":"get_rect() -> Rect2","description":"Returns a  representing the Sprite2D's boundary in local coordinates.\n\t\t\t\tExample: Detect if the Sprite2D was clicked:\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tfunc _input(event):\n\t\t\t\t    if event is InputEventMouseButton and event.pressed and event.button_index == MOUSE_BUTTON_LEFT:\n\t\t\t\t        if get_rect().has_point(to_local(event.position)):\n\t\t\t\t            print(\"A click!\")\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tpublic override void _Input(InputEvent @event)\n\t\t\t\t{\n\t\t\t\t    if (@event is InputEventMouseButton inputEventMouse)\n\t\t\t\t    {\n\t\t\t\t        if (inputEventMouse.Pressed &amp;&amp; inputEventMouse.ButtonIndex == MouseButton.Left)\n\t\t\t\t        {\n\t\t\t\t            if (GetRect().HasPoint(ToLocal(inputEventMouse.Position)))\n\t\t\t\t            {\n\t\t\t\t                GD.Print(\"A click!\");\n\t\t\t\t            }\n\t\t\t\t        }\n\t\t\t\t    }\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t","returnType":"Rect2"},{"name":"is_pixel_opaque","signature":"is_pixel_opaque(pos: Vector2) -> bool","description":"Returns true, if the pixel at the given position is opaque and false in other case. The position is in local coordinates.\n\t\t\t\tNote: It also returns false, if the sprite's texture is null or if the given position is invalid.","returnType":"bool"}],"signals":[{"name":"frame_changed","description":"Emitted when the [member frame] changes."},{"name":"texture_changed","description":"Emitted when the [member texture] changes."}]},"Sprite3D":{"name":"Sprite3D","description":"2D sprite node in a 3D world.","inherits":"SpriteBase3D","properties":[{"name":"frame","type":"int","description":"Current frame to display from sprite sheet. [member hframes] or [member vframes] must be greater than 1. This property is automatically adjusted when [member hframes] or [member vframes] are changed to keep pointing to the same visual frame (same column and row). If that's impossible, this value is reset to [code]0[/code]."},{"name":"frame_coords","type":"Vector2i","description":"Coordinates of the frame to display from sprite sheet. This is as an alias for the [member frame] property. [member hframes] or [member vframes] must be greater than 1."},{"name":"hframes","type":"int","description":"The number of columns in the sprite sheet. When this property is changed, [member frame] is adjusted so that the same visual frame is maintained (same row and column). If that's impossible, [member frame] is reset to [code]0[/code]."},{"name":"region_enabled","type":"bool","description":"If [code]true[/code], the sprite will use [member region_rect] and display only the specified part of its texture."},{"name":"region_rect","type":"Rect2","description":"The region of the atlas texture to display. [member region_enabled] must be [code]true[/code]."},{"name":"texture","type":"Texture2D","description":"[Texture2D] object to draw. If [member GeometryInstance3D.material_override] is used, this will be overridden. The size information is still used."},{"name":"vframes","type":"int","description":"The number of rows in the sprite sheet. When this property is changed, [member frame] is adjusted so that the same visual frame is maintained (same row and column). If that's impossible, [member frame] is reset to [code]0[/code]."}],"methods":[],"signals":[{"name":"frame_changed","description":"Emitted when the [member frame] changes."},{"name":"texture_changed","description":"Emitted when the [member texture] changes."}]},"SpriteBase3D":{"name":"SpriteBase3D","description":"2D sprite node in 3D environment.","inherits":"GeometryInstance3D","properties":[{"name":"alpha_antialiasing_edge","type":"float","description":"Threshold at which antialiasing will be applied on the alpha channel."},{"name":"alpha_antialiasing_mode","type":"int","description":"The type of alpha antialiasing to apply. See [enum BaseMaterial3D.AlphaAntiAliasing]."},{"name":"alpha_cut","type":"int","description":"The alpha cutting mode to use for the sprite. See [enum AlphaCutMode] for possible values."},{"name":"alpha_hash_scale","type":"float","description":"The hashing scale for Alpha Hash. Recommended values between [code]0[/code] and [code]2[/code]."},{"name":"alpha_scissor_threshold","type":"float","description":"Threshold at which the alpha scissor will discard values."},{"name":"axis","type":"int","description":"The direction in which the front of the texture faces."},{"name":"billboard","type":"int","description":"The billboard mode to use for the sprite. See [enum BaseMaterial3D.BillboardMode] for possible values.\n\t\t\t[b]Note:[/b] When billboarding is enabled and the material also casts shadows, billboards will face [b]the[/b] camera in the scene when rendering shadows. In scenes with multiple cameras, the intended shadow cannot be determined and this will result in undefined behavior. See [url=https://github.com/godotengine/godot/pull/72638]GitHub Pull Request #72638[/url] for details."},{"name":"centered","type":"bool","description":"If [code]true[/code], texture will be centered."},{"name":"double_sided","type":"bool","description":"If [code]true[/code], texture can be seen from the back as well, if [code]false[/code], it is invisible when looking at it from behind."},{"name":"fixed_size","type":"bool","description":"If [code]true[/code], the label is rendered at the same size regardless of distance."},{"name":"flip_h","type":"bool","description":"If [code]true[/code], texture is flipped horizontally."},{"name":"flip_v","type":"bool","description":"If [code]true[/code], texture is flipped vertically."},{"name":"modulate","type":"Color","description":"A color value used to [i]multiply[/i] the texture's colors. Can be used for mood-coloring or to simulate the color of ambient light.\n\t\t\t[b]Note:[/b] Unlike [member CanvasItem.modulate] for 2D, colors with values above [code]1.0[/code] (overbright) are not supported.\n\t\t\t[b]Note:[/b] If a [member GeometryInstance3D.material_override] is defined on the [SpriteBase3D], the material override must be configured to take vertex colors into account for albedo. Otherwise, the color defined in [member modulate] will be ignored. For a [BaseMaterial3D], [member BaseMaterial3D.vertex_color_use_as_albedo] must be [code]true[/code]. For a [ShaderMaterial], [code]ALBEDO *= COLOR.rgb;[/code] must be inserted in the shader's [code]fragment()[/code] function."},{"name":"no_depth_test","type":"bool","description":"If [code]true[/code], depth testing is disabled and the object will be drawn in render order."},{"name":"offset","type":"Vector2","description":"The texture's drawing offset."},{"name":"pixel_size","type":"float","description":"The size of one pixel's width on the sprite to scale it in 3D."},{"name":"render_priority","type":"int","description":"Sets the render priority for the sprite. Higher priority objects will be sorted in front of lower priority objects.\n\t\t\t[b]Note:[/b] This only applies if [member alpha_cut] is set to [constant ALPHA_CUT_DISABLED] (default value).\n\t\t\t[b]Note:[/b] This only applies to sorting of transparent objects. This will not impact how transparent objects are sorted relative to opaque objects. This is because opaque objects are not sorted, while transparent objects are sorted from back to front (subject to priority)."},{"name":"shaded","type":"bool","description":"If [code]true[/code], the [Light3D] in the [Environment] has effects on the sprite."},{"name":"texture_filter","type":"int","description":"Filter flags for the texture. See [enum BaseMaterial3D.TextureFilter] for options.\n\t\t\t[b]Note:[/b] Linear filtering may cause artifacts around the edges, which are especially noticeable on opaque textures. To prevent this, use textures with transparent or identical colors around the edges."},{"name":"transparent","type":"bool","description":"If [code]true[/code], the texture's transparency and the opacity are used to make those parts of the sprite invisible."}],"methods":[{"name":"generate_triangle_mesh","signature":"generate_triangle_mesh() -> TriangleMesh","description":"Returns a  with the sprite's vertices following its current configuration (such as its [member axis] and [member pixel_size]).","returnType":"TriangleMesh"},{"name":"get_draw_flag","signature":"get_draw_flag(flag: int) -> bool","description":"Returns the value of the specified flag.","returnType":"bool"},{"name":"get_item_rect","signature":"get_item_rect() -> Rect2","description":"Returns the rectangle representing this sprite.","returnType":"Rect2"},{"name":"set_draw_flag","signature":"set_draw_flag(flag: int, enabled: bool) -> void","description":"If true, the specified flag will be enabled. See [enum SpriteBase3D.DrawFlags] for a list of flags.","returnType":"void"}],"signals":[]},"SpriteFrames":{"name":"SpriteFrames","description":"Sprite frame library for AnimatedSprite2D and AnimatedSprite3D.","inherits":"Resource","properties":[],"methods":[{"name":"add_animation","signature":"add_animation(anim: StringName) -> void","description":"Adds a new [param anim] animation to the library.","returnType":"void"},{"name":"add_frame","signature":"add_frame(anim: StringName, texture: Texture2D, duration: float, at_position: int) -> void","description":"Adds a frame to the [param anim] animation. If [param at_position] is -1, the frame will be added to the end of the animation. [param duration] specifies the relative duration, see [method get_frame_duration] for details.","returnType":"void"},{"name":"clear","signature":"clear(anim: StringName) -> void","description":"Removes all frames from the [param anim] animation.","returnType":"void"},{"name":"clear_all","signature":"clear_all() -> void","description":"Removes all animations. An empty default animation will be created.","returnType":"void"},{"name":"duplicate_animation","signature":"duplicate_animation(anim_from: StringName, anim_to: StringName) -> void","description":"Duplicates the animation [param anim_from] to a new animation named [param anim_to]. Fails if [param anim_to] already exists, or if [param anim_from] does not exist.","returnType":"void"},{"name":"get_animation_loop","signature":"get_animation_loop(anim: StringName) -> bool","description":"Returns true if the given animation is configured to loop when it finishes playing. Otherwise, returns false.","returnType":"bool"},{"name":"get_animation_names","signature":"get_animation_names() -> PackedStringArray","description":"Returns an array containing the names associated to each animation. Values are placed in alphabetical order.","returnType":"PackedStringArray"},{"name":"get_animation_speed","signature":"get_animation_speed(anim: StringName) -> float","description":"Returns the speed in frames per second for the [param anim] animation.","returnType":"float"},{"name":"get_frame_count","signature":"get_frame_count(anim: StringName) -> int","description":"Returns the number of frames for the [param anim] animation.","returnType":"int"},{"name":"get_frame_duration","signature":"get_frame_duration(anim: StringName, idx: int) -> float","description":"Returns a relative duration of the frame [param idx] in the [param anim] animation (defaults to 1.0). For example, a frame with a duration of 2.0 is displayed twice as long as a frame with a duration of 1.0. You can calculate the absolute duration (in seconds) of a frame using the following formula:\n\t\t\t\t\n\t\t\t\tabsolute_duration = relative_duration / (animation_fps * abs(playing_speed))\n\t\t\t\t\n\t\t\t\tIn this example, playing_speed refers to either [method AnimatedSprite2D.get_playing_speed] or [method AnimatedSprite3D.get_playing_speed].","returnType":"float"},{"name":"get_frame_texture","signature":"get_frame_texture(anim: StringName, idx: int) -> Texture2D","description":"Returns the texture of the frame [param idx] in the [param anim] animation.","returnType":"Texture2D"},{"name":"has_animation","signature":"has_animation(anim: StringName) -> bool","description":"Returns true if the [param anim] animation exists.","returnType":"bool"},{"name":"remove_animation","signature":"remove_animation(anim: StringName) -> void","description":"Removes the [param anim] animation.","returnType":"void"},{"name":"remove_frame","signature":"remove_frame(anim: StringName, idx: int) -> void","description":"Removes the [param anim] animation's frame [param idx].","returnType":"void"},{"name":"rename_animation","signature":"rename_animation(anim: StringName, newname: StringName) -> void","description":"Changes the [param anim] animation's name to [param newname].","returnType":"void"},{"name":"set_animation_loop","signature":"set_animation_loop(anim: StringName, loop: bool) -> void","description":"If [param loop] is true, the [param anim] animation will loop when it reaches the end, or the start if it is played in reverse.","returnType":"void"},{"name":"set_animation_speed","signature":"set_animation_speed(anim: StringName, fps: float) -> void","description":"Sets the speed for the [param anim] animation in frames per second.","returnType":"void"},{"name":"set_frame","signature":"set_frame(anim: StringName, idx: int, texture: Texture2D, duration: float) -> void","description":"Sets the [param texture] and the [param duration] of the frame [param idx] in the [param anim] animation. [param duration] specifies the relative duration, see [method get_frame_duration] for details.","returnType":"void"}],"signals":[]},"StandardMaterial3D":{"name":"StandardMaterial3D","description":"A PBR (Physically Based Rendering) material to be used on 3D objects.","inherits":"BaseMaterial3D","properties":[],"methods":[],"signals":[]},"StaticBody2D":{"name":"StaticBody2D","description":"A 2D physics body that can't be moved by external forces. When moved manually, it doesn't affect other bodies in its path.","inherits":"PhysicsBody2D","properties":[{"name":"constant_angular_velocity","type":"float","description":"The body's constant angular velocity. This does not rotate the body, but affects touching bodies, as if it were rotating."},{"name":"constant_linear_velocity","type":"Vector2","description":"The body's constant linear velocity. This does not move the body, but affects touching bodies, as if it were moving."},{"name":"physics_material_override","type":"PhysicsMaterial","description":"The physics material override for the body.\n\t\t\tIf a material is assigned to this property, it will be used instead of any other physics material, such as an inherited one."}],"methods":[],"signals":[]},"StaticBody3D":{"name":"StaticBody3D","description":"A 3D physics body that can't be moved by external forces. When moved manually, it doesn't affect other bodies in its path.","inherits":"PhysicsBody3D","properties":[{"name":"constant_angular_velocity","type":"Vector3","description":"The body's constant angular velocity. This does not rotate the body, but affects touching bodies, as if it were rotating."},{"name":"constant_linear_velocity","type":"Vector3","description":"The body's constant linear velocity. This does not move the body, but affects touching bodies, as if it were moving."},{"name":"physics_material_override","type":"PhysicsMaterial","description":"The physics material override for the body.\n\t\t\tIf a material is assigned to this property, it will be used instead of any other physics material, such as an inherited one."}],"methods":[],"signals":[]},"StatusIndicator":{"name":"StatusIndicator","description":"Application status indicator (aka notification area icon).\n\t\tNote: Status indicator is implemented on macOS and Windows.","inherits":"Node","properties":[{"name":"icon","type":"Texture2D","description":"Status indicator icon."},{"name":"menu","type":"NodePath","description":"Status indicator native popup menu. If this is set, the [signal pressed] signal is not emitted.\n\t\t\t[b]Note:[/b] Native popup is only supported if [NativeMenu] supports [constant NativeMenu.FEATURE_POPUP_MENU] feature."},{"name":"tooltip","type":"String","description":"Status indicator tooltip."},{"name":"visible","type":"bool","description":"If [code]true[/code], the status indicator is visible."}],"methods":[{"name":"get_rect","signature":"get_rect() -> Rect2","description":"Returns the status indicator rectangle in screen coordinates. If this status indicator is not visible, returns an empty .","returnType":"Rect2"}],"signals":[{"name":"pressed","description":"Emitted when the status indicator is pressed."}]},"StreamPeer":{"name":"StreamPeer","description":"Abstract base class for interacting with streams.","inherits":"RefCounted","properties":[{"name":"big_endian","type":"bool","description":"If [code]true[/code], this [StreamPeer] will using big-endian format for encoding and decoding."}],"methods":[{"name":"get_8","signature":"get_8() -> int","description":"Gets a signed byte from the stream.","returnType":"int"},{"name":"get_16","signature":"get_16() -> int","description":"Gets a signed 16-bit value from the stream.","returnType":"int"},{"name":"get_32","signature":"get_32() -> int","description":"Gets a signed 32-bit value from the stream.","returnType":"int"},{"name":"get_64","signature":"get_64() -> int","description":"Gets a signed 64-bit value from the stream.","returnType":"int"},{"name":"get_available_bytes","signature":"get_available_bytes() -> int","description":"Returns the number of bytes this  has available.","returnType":"int"},{"name":"get_data","signature":"get_data(bytes: int) -> Array","description":"Returns a chunk data with the received bytes. The number of bytes to be received can be requested in the [param bytes] argument. If not enough bytes are available, the function will block until the desired amount is received. This function returns two values, an [enum Error] code and a data array.","returnType":"Array"},{"name":"get_double","signature":"get_double() -> float","description":"Gets a double-precision float from the stream.","returnType":"float"},{"name":"get_float","signature":"get_float() -> float","description":"Gets a single-precision float from the stream.","returnType":"float"},{"name":"get_half","signature":"get_half() -> float","description":"Gets a half-precision float from the stream.","returnType":"float"},{"name":"get_partial_data","signature":"get_partial_data(bytes: int) -> Array","description":"Returns a chunk data with the received bytes. The number of bytes to be received can be requested in the \"bytes\" argument. If not enough bytes are available, the function will return how many were actually received. This function returns two values, an [enum Error] code, and a data array.","returnType":"Array"},{"name":"get_string","signature":"get_string(bytes: int) -> String","description":"Gets an ASCII string with byte-length [param bytes] from the stream. If [param bytes] is negative (default) the length will be read from the stream using the reverse process of [method put_string].","returnType":"String"},{"name":"get_u8","signature":"get_u8() -> int","description":"Gets an unsigned byte from the stream.","returnType":"int"},{"name":"get_u16","signature":"get_u16() -> int","description":"Gets an unsigned 16-bit value from the stream.","returnType":"int"},{"name":"get_u32","signature":"get_u32() -> int","description":"Gets an unsigned 32-bit value from the stream.","returnType":"int"},{"name":"get_u64","signature":"get_u64() -> int","description":"Gets an unsigned 64-bit value from the stream.","returnType":"int"},{"name":"get_utf8_string","signature":"get_utf8_string(bytes: int) -> String","description":"Gets a UTF-8 string with byte-length [param bytes] from the stream (this decodes the string sent as UTF-8). If [param bytes] is negative (default) the length will be read from the stream using the reverse process of [method put_utf8_string].","returnType":"String"},{"name":"get_var","signature":"get_var(allow_objects: bool) -> Variant","description":"Gets a Variant from the stream. If [param allow_objects] is true, decoding objects is allowed.\n\t\t\t\tInternally, this uses the same decoding mechanism as the [method @GlobalScope.bytes_to_var] method.\n\t\t\t\tWarning: Deserialized objects can contain code which gets executed. Do not use this option if the serialized object comes from untrusted sources to avoid potential security threats such as remote code execution.","returnType":"Variant"},{"name":"put_8","signature":"put_8(value: int) -> void","description":"Puts a signed byte into the stream.","returnType":"void"},{"name":"put_16","signature":"put_16(value: int) -> void","description":"Puts a signed 16-bit value into the stream.","returnType":"void"},{"name":"put_32","signature":"put_32(value: int) -> void","description":"Puts a signed 32-bit value into the stream.","returnType":"void"},{"name":"put_64","signature":"put_64(value: int) -> void","description":"Puts a signed 64-bit value into the stream.","returnType":"void"},{"name":"put_data","signature":"put_data(data: PackedByteArray) -> int","description":"Sends a chunk of data through the connection, blocking if necessary until the data is done sending. This function returns an [enum Error] code.","returnType":"int"},{"name":"put_double","signature":"put_double(value: float) -> void","description":"Puts a double-precision float into the stream.","returnType":"void"},{"name":"put_float","signature":"put_float(value: float) -> void","description":"Puts a single-precision float into the stream.","returnType":"void"},{"name":"put_half","signature":"put_half(value: float) -> void","description":"Puts a half-precision float into the stream.","returnType":"void"},{"name":"put_partial_data","signature":"put_partial_data(data: PackedByteArray) -> Array","description":"Sends a chunk of data through the connection. If all the data could not be sent at once, only part of it will. This function returns two values, an [enum Error] code and an integer, describing how much data was actually sent.","returnType":"Array"},{"name":"put_string","signature":"put_string(value: String) -> void","description":"Puts a zero-terminated ASCII string into the stream prepended by a 32-bit unsigned integer representing its size.\n\t\t\t\tNote: To put an ASCII string without prepending its size, you can use [method put_data]:\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tput_data(\"Hello world\".to_ascii_buffer())\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tPutData(\"Hello World\".ToAsciiBuffer());\n\t\t\t\t\n\t\t\t\t","returnType":"void"},{"name":"put_u8","signature":"put_u8(value: int) -> void","description":"Puts an unsigned byte into the stream.","returnType":"void"},{"name":"put_u16","signature":"put_u16(value: int) -> void","description":"Puts an unsigned 16-bit value into the stream.","returnType":"void"},{"name":"put_u32","signature":"put_u32(value: int) -> void","description":"Puts an unsigned 32-bit value into the stream.","returnType":"void"},{"name":"put_u64","signature":"put_u64(value: int) -> void","description":"Puts an unsigned 64-bit value into the stream.","returnType":"void"},{"name":"put_utf8_string","signature":"put_utf8_string(value: String) -> void","description":"Puts a zero-terminated UTF-8 string into the stream prepended by a 32 bits unsigned integer representing its size.\n\t\t\t\tNote: To put a UTF-8 string without prepending its size, you can use [method put_data]:\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tput_data(\"Hello world\".to_utf8_buffer())\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tPutData(\"Hello World\".ToUtf8Buffer());\n\t\t\t\t\n\t\t\t\t","returnType":"void"},{"name":"put_var","signature":"put_var(value: Variant, full_objects: bool) -> void","description":"Puts a Variant into the stream. If [param full_objects] is true encoding objects is allowed (and can potentially include code).\n\t\t\t\tInternally, this uses the same encoding mechanism as the [method @GlobalScope.var_to_bytes] method.","returnType":"void"}],"signals":[]},"StreamPeerBuffer":{"name":"StreamPeerBuffer","description":"A stream peer used to handle binary data streams.","inherits":"StreamPeer","properties":[{"name":"data_array","type":"PackedByteArray","description":"The underlying data buffer. Setting this value resets the cursor."}],"methods":[{"name":"clear","signature":"clear() -> void","description":"Clears the [member data_array] and resets the cursor.","returnType":"void"},{"name":"duplicate","signature":"duplicate() -> StreamPeerBuffer","description":"Returns a new  with the same [member data_array] content.","returnType":"StreamPeerBuffer"},{"name":"get_position","signature":"get_position() -> int","description":"Returns the current cursor position.","returnType":"int"},{"name":"get_size","signature":"get_size() -> int","description":"Returns the size of [member data_array].","returnType":"int"},{"name":"resize","signature":"resize(size: int) -> void","description":"Resizes the [member data_array]. This doesn't update the cursor.","returnType":"void"},{"name":"seek","signature":"seek(position: int) -> void","description":"Moves the cursor to the specified position. [param position] must be a valid index of [member data_array].","returnType":"void"}],"signals":[]},"StreamPeerExtension":{"name":"StreamPeerExtension","description":"","inherits":"StreamPeer","properties":[],"methods":[{"name":"_get_available_bytes","signature":"_get_available_bytes() -> int","description":"","returnType":"int"},{"name":"_get_data","signature":"_get_data(r_buffer: uint8_t*, r_bytes: int, r_received: int32_t*) -> int","description":"","returnType":"int"},{"name":"_get_partial_data","signature":"_get_partial_data(r_buffer: uint8_t*, r_bytes: int, r_received: int32_t*) -> int","description":"","returnType":"int"},{"name":"_put_data","signature":"_put_data(p_data: const uint8_t*, p_bytes: int, r_sent: int32_t*) -> int","description":"","returnType":"int"},{"name":"_put_partial_data","signature":"_put_partial_data(p_data: const uint8_t*, p_bytes: int, r_sent: int32_t*) -> int","description":"","returnType":"int"}],"signals":[]},"StreamPeerGZIP":{"name":"StreamPeerGZIP","description":"A stream peer that handles GZIP and deflate compression/decompression.","inherits":"StreamPeer","properties":[],"methods":[{"name":"clear","signature":"clear() -> void","description":"Clears this stream, resetting the internal state.","returnType":"void"},{"name":"finish","signature":"finish() -> int","description":"Finalizes the stream, compressing or decompressing any buffered chunk left.","returnType":"int"},{"name":"start_compression","signature":"start_compression(use_deflate: bool, buffer_size: int) -> int","description":"Start the stream in compression mode with the given [param buffer_size], if [param use_deflate] is true uses deflate instead of GZIP.","returnType":"int"},{"name":"start_decompression","signature":"start_decompression(use_deflate: bool, buffer_size: int) -> int","description":"Start the stream in decompression mode with the given [param buffer_size], if [param use_deflate] is true uses deflate instead of GZIP.","returnType":"int"}],"signals":[]},"StreamPeerTCP":{"name":"StreamPeerTCP","description":"A stream peer that handles TCP connections.","inherits":"StreamPeer","properties":[],"methods":[{"name":"bind","signature":"bind(port: int, host: String) -> int","description":"Opens the TCP socket, and binds it to the specified local address.\n\t\t\t\tThis method is generally not needed, and only used to force the subsequent call to [method connect_to_host] to use the specified [param host] and [param port] as source address. This can be desired in some NAT punchthrough techniques, or when forcing the source network interface.","returnType":"int"},{"name":"connect_to_host","signature":"connect_to_host(host: String, port: int) -> int","description":"Connects to the specified host:port pair. A hostname will be resolved if valid. Returns [constant OK] on success.","returnType":"int"},{"name":"disconnect_from_host","signature":"disconnect_from_host() -> void","description":"Disconnects from host.","returnType":"void"},{"name":"get_connected_host","signature":"get_connected_host() -> String","description":"Returns the IP of this peer.","returnType":"String"},{"name":"get_connected_port","signature":"get_connected_port() -> int","description":"Returns the port of this peer.","returnType":"int"},{"name":"get_local_port","signature":"get_local_port() -> int","description":"Returns the local port to which this peer is bound.","returnType":"int"},{"name":"get_status","signature":"get_status() -> int","description":"Returns the status of the connection, see [enum Status].","returnType":"int"},{"name":"poll","signature":"poll() -> int","description":"Poll the socket, updating its state. See [method get_status].","returnType":"int"},{"name":"set_no_delay","signature":"set_no_delay(enabled: bool) -> void","description":"If [param enabled] is true, packets will be sent immediately. If [param enabled] is false (the default), packet transfers will be delayed and combined using [url=https://en.wikipedia.org/wiki/Nagle%27s_algorithm]Nagle's algorithm.\n\t\t\t\tNote: It's recommended to leave this disabled for applications that send large packets or need to transfer a lot of data, as enabling this can decrease the total available bandwidth.","returnType":"void"}],"signals":[]},"StreamPeerTLS":{"name":"StreamPeerTLS","description":"A stream peer that handles TLS connections.","inherits":"StreamPeer","properties":[],"methods":[{"name":"accept_stream","signature":"accept_stream(stream: StreamPeer, server_options: TLSOptions) -> int","description":"Accepts a peer connection as a server using the given [param server_options]. See [method TLSOptions.server].","returnType":"int"},{"name":"connect_to_stream","signature":"connect_to_stream(stream: StreamPeer, common_name: String, client_options: TLSOptions) -> int","description":"Connects to a peer using an underlying  [param stream] and verifying the remote certificate is correctly signed for the given [param common_name]. You can pass the optional [param client_options] parameter to customize the trusted certification authorities, or disable the common name verification. See [method TLSOptions.client] and [method TLSOptions.client_unsafe].","returnType":"int"},{"name":"disconnect_from_stream","signature":"disconnect_from_stream() -> void","description":"Disconnects from host.","returnType":"void"},{"name":"get_status","signature":"get_status() -> int","description":"Returns the status of the connection. See [enum Status] for values.","returnType":"int"},{"name":"get_stream","signature":"get_stream() -> StreamPeer","description":"Returns the underlying  connection, used in [method accept_stream] or [method connect_to_stream].","returnType":"StreamPeer"},{"name":"poll","signature":"poll() -> void","description":"Poll the connection to check for incoming bytes. Call this right before [method StreamPeer.get_available_bytes] for it to work properly.","returnType":"void"}],"signals":[]},"String":{"name":"String","description":"A built-in type for strings.","inherits":"","properties":[],"methods":[{"name":"begins_with","signature":"begins_with(text: String) -> bool","description":"Returns true if the string begins with the given [param text]. See also [method ends_with].","returnType":"bool"},{"name":"bigrams","signature":"bigrams() -> PackedStringArray","description":"Returns an array containing the bigrams (pairs of consecutive characters) of this string.\n\t\t\t\t\n\t\t\t\tprint(\"Get up!\".bigrams()) # Prints [\"Ge\", \"et\", \"t \", \" u\", \"up\", \"p!\"]\n\t\t\t\t","returnType":"PackedStringArray"},{"name":"bin_to_int","signature":"bin_to_int() -> int","description":"Converts the string representing a binary number into an . The string may optionally be prefixed with \"0b\", and an additional - prefix for negative numbers.\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tprint(\"101\".bin_to_int())   # Prints 5\n\t\t\t\tprint(\"0b101\".bin_to_int()) # Prints 5\n\t\t\t\tprint(\"-0b10\".bin_to_int()) # Prints -2\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tGD.Print(\"101\".BinToInt());   // Prints 5\n\t\t\t\tGD.Print(\"0b101\".BinToInt()); // Prints 5\n\t\t\t\tGD.Print(\"-0b10\".BinToInt()); // Prints -2\n\t\t\t\t\n\t\t\t\t","returnType":"int"},{"name":"c_escape","signature":"c_escape() -> String","description":"Returns a copy of the string with special characters escaped using the C language standard.","returnType":"String"},{"name":"c_unescape","signature":"c_unescape() -> String","description":"Returns a copy of the string with escaped characters replaced by their meanings. Supported escape sequences are \\', \\\", \\\\, \\a, \\b, \\f, \\n, \\r, \\t, \\v.\n\t\t\t\tNote: Unlike the GDScript parser, this method doesn't support the \\uXXXX escape sequence.","returnType":"String"},{"name":"capitalize","signature":"capitalize() -> String","description":"Changes the appearance of the string: replaces underscores (_) with spaces, adds spaces before uppercase letters in the middle of a word, converts all letters to lowercase, then converts the first one and each one following a space to uppercase.\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\"move_local_x\".capitalize()   # Returns \"Move Local X\"\n\t\t\t\t\"sceneFile_path\".capitalize() # Returns \"Scene File Path\"\n\t\t\t\t\"2D, FPS, PNG\".capitalize()   # Returns \"2d, Fps, Png\"\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\"move_local_x\".Capitalize();   // Returns \"Move Local X\"\n\t\t\t\t\"sceneFile_path\".Capitalize(); // Returns \"Scene File Path\"\n\t\t\t\t\"2D, FPS, PNG\".Capitalize();   // Returns \"2d, Fps, Png\"\n\t\t\t\t\n\t\t\t\t","returnType":"String"},{"name":"casecmp_to","signature":"casecmp_to(to: String) -> int","description":"Performs a case-sensitive comparison to another string. Returns -1 if less than, 1 if greater than, or 0 if equal. \"Less than\" and \"greater than\" are determined by the [url=https://en.wikipedia.org/wiki/List_of_Unicode_characters]Unicode code points of each string, which roughly matches the alphabetical order.\n\t\t\t\tWith different string lengths, returns 1 if this string is longer than the [param to] string, or -1 if shorter. Note that the length of empty strings is always 0.\n\t\t\t\tTo get a  result from a string comparison, use the == operator instead. See also [method nocasecmp_to], [method filecasecmp_to], and [method naturalcasecmp_to].","returnType":"int"},{"name":"chr","signature":"chr(char: int) -> String","description":"Returns a single Unicode character from the decimal [param char]. You may use [url=https://unicodelookup.com/]unicodelookup.com or [url=https://www.unicode.org/charts/]unicode.org as points of reference.\n\t\t\t\t\n\t\t\t\tprint(String.chr(65))     # Prints \"A\"\n\t\t\t\tprint(String.chr(129302)) # Prints \"🤖\" (robot face emoji)\n\t\t\t\t","returnType":"String"},{"name":"contains","signature":"contains(what: String) -> bool","description":"Returns true if the string contains [param what]. In GDScript, this corresponds to the in operator.\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tprint(\"Node\".contains(\"de\")) # Prints true\n\t\t\t\tprint(\"team\".contains(\"I\"))  # Prints false\n\t\t\t\tprint(\"I\" in \"team\")         # Prints false\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tGD.Print(\"Node\".Contains(\"de\")); // Prints True\n\t\t\t\tGD.Print(\"team\".Contains(\"I\"));  // Prints False\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tIf you need to know where [param what] is within the string, use [method find]. See also [method containsn].","returnType":"bool"},{"name":"containsn","signature":"containsn(what: String) -> bool","description":"Returns true if the string contains [param what], ignoring case.\n\t\t\t\tIf you need to know where [param what] is within the string, use [method findn]. See also [method contains].","returnType":"bool"},{"name":"count","signature":"count(what: String, from: int, to: int) -> int","description":"Returns the number of occurrences of the substring [param what] between [param from] and [param to] positions. If [param to] is 0, the search continues until the end of the string.","returnType":"int"},{"name":"countn","signature":"countn(what: String, from: int, to: int) -> int","description":"Returns the number of occurrences of the substring [param what] between [param from] and [param to] positions, ignoring case. If [param to] is 0, the search continues until the end of the string.","returnType":"int"},{"name":"dedent","signature":"dedent() -> String","description":"Returns a copy of the string with indentation (leading tabs and spaces) removed. See also [method indent] to add indentation.","returnType":"String"},{"name":"ends_with","signature":"ends_with(text: String) -> bool","description":"Returns true if the string ends with the given [param text]. See also [method begins_with].","returnType":"bool"},{"name":"erase","signature":"erase(position: int, chars: int) -> String","description":"Returns a string with [param chars] characters erased starting from [param position]. If [param chars] goes beyond the string's length given the specified [param position], fewer characters will be erased from the returned string. Returns an empty string if either [param position] or [param chars] is negative. Returns the original string unmodified if [param chars] is 0.","returnType":"String"},{"name":"filecasecmp_to","signature":"filecasecmp_to(to: String) -> int","description":"Like [method naturalcasecmp_to] but prioritizes strings that begin with periods (.) and underscores (_) before any other character. Useful when sorting folders or file names.\n\t\t\t\tTo get a  result from a string comparison, use the == operator instead. See also [method filenocasecmp_to], [method naturalcasecmp_to], and [method casecmp_to].","returnType":"int"},{"name":"filenocasecmp_to","signature":"filenocasecmp_to(to: String) -> int","description":"Like [method naturalnocasecmp_to] but prioritizes strings that begin with periods (.) and underscores (_) before any other character. Useful when sorting folders or file names.\n\t\t\t\tTo get a  result from a string comparison, use the == operator instead. See also [method filecasecmp_to], [method naturalnocasecmp_to], and [method nocasecmp_to].","returnType":"int"},{"name":"find","signature":"find(what: String, from: int) -> int","description":"Returns the index of the first occurrence of [param what] in this string, or -1 if there are none. The search's start can be specified with [param from], continuing to the end of the string.\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tprint(\"Team\".find(\"I\")) # Prints -1\n\n\t\t\t\tprint(\"Potato\".find(\"t\"))    # Prints 2\n\t\t\t\tprint(\"Potato\".find(\"t\", 3)) # Prints 4\n\t\t\t\tprint(\"Potato\".find(\"t\", 5)) # Prints -1\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tGD.Print(\"Team\".Find(\"I\")); // Prints -1\n\n\t\t\t\tGD.Print(\"Potato\".Find(\"t\"));    // Prints 2\n\t\t\t\tGD.Print(\"Potato\".Find(\"t\", 3)); // Prints 4\n\t\t\t\tGD.Print(\"Potato\".Find(\"t\", 5)); // Prints -1\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tNote: If you just want to know whether the string contains [param what], use [method contains]. In GDScript, you may also use the in operator.","returnType":"int"},{"name":"findn","signature":"findn(what: String, from: int) -> int","description":"Returns the index of the first case-insensitive occurrence of [param what] in this string, or -1 if there are none. The starting search index can be specified with [param from], continuing to the end of the string.","returnType":"int"},{"name":"format","signature":"format(values: Variant, placeholder: String) -> String","description":"Formats the string by replacing all occurrences of [param placeholder] with the elements of [param values].\n\t\t\t\t[param values] can be a , an , or an . Any underscores in [param placeholder] will be replaced with the corresponding keys in advance. Array elements use their index as keys.\n\t\t\t\t\n\t\t\t\t# Prints \"Waiting for Godot is a play by Samuel Beckett, and Godot Engine is named after it.\"\n\t\t\t\tvar use_array_values = \"Waiting for {0} is a play by {1}, and {0} Engine is named after it.\"\n\t\t\t\tprint(use_array_values.format([\"Godot\", \"Samuel Beckett\"]))\n\n\t\t\t\t# Prints \"User 42 is Godot.\"\n\t\t\t\tprint(\"User {id} is {name}.\".format({\"id\": 42, \"name\": \"Godot\"}))\n\t\t\t\t\n\t\t\t\tSome additional handling is performed when [param values] is an . If [param placeholder] does not contain an underscore, the elements of the [param values] array will be used to replace one occurrence of the placeholder in order; If an element of [param values] is another 2-element array, it'll be interpreted as a key-value pair.\n\t\t\t\t\n\t\t\t\t# Prints \"User 42 is Godot.\"\n\t\t\t\tprint(\"User {} is {}.\".format([42, \"Godot\"], \"{}\"))\n\t\t\t\tprint(\"User {id} is {name}.\".format([[\"id\", 42], [\"name\", \"Godot\"]]))\n\t\t\t\t\n\t\t\t\tWhen passing an , the property names from [method Object.get_property_list] are used as keys.\n\t\t\t\t\n\t\t\t\t# Prints \"Visible true, position (0, 0)\"\n\t\t\t\tvar node = Node2D.new()\n\t\t\t\tprint(\"Visible {visible}, position {position}\".format(node))\n\t\t\t\t\n\t\t\t\tSee also the [url=$DOCS_URL/tutorials/scripting/gdscript/gdscript_format_string.html]GDScript format string tutorial.\n\t\t\t\tNote: Each replacement is done sequentially for each element of [param values], not all at once. This means that if any element is inserted and it contains another placeholder, it may be changed by the next replacement. While this can be very useful, it often causes unexpected results. If not necessary, make sure [param values]'s elements do not contain placeholders.\n\t\t\t\t\n\t\t\t\tprint(\"{0} {1}\".format([\"{1}\", \"x\"]))           # Prints \"x x\"\n\t\t\t\tprint(\"{0} {1}\".format([\"x\", \"{0}\"]))           # Prints \"x {0}\"\n\t\t\t\tprint(\"{a} {b}\".format({\"a\": \"{b}\", \"b\": \"c\"})) # Prints \"c c\"\n\t\t\t\tprint(\"{a} {b}\".format({\"b\": \"c\", \"a\": \"{b}\"})) # Prints \"{b} c\"\n\t\t\t\t\n\t\t\t\tNote: In C#, it's recommended to [url=https://learn.microsoft.com/en-us/dotnet/csharp/language-reference/tokens/interpolated]interpolate strings with \"$\", instead.","returnType":"String"},{"name":"get_base_dir","signature":"get_base_dir() -> String","description":"If the string is a valid file path, returns the base directory name.\n\t\t\t\t\n\t\t\t\tvar dir_path = \"/path/to/file.txt\".get_base_dir() # dir_path is \"/path/to\"\n\t\t\t\t","returnType":"String"},{"name":"get_basename","signature":"get_basename() -> String","description":"If the string is a valid file path, returns the full file path, without the extension.\n\t\t\t\t\n\t\t\t\tvar base = \"/path/to/file.txt\".get_basename() # base is \"/path/to/file\"\n\t\t\t\t","returnType":"String"},{"name":"get_extension","signature":"get_extension() -> String","description":"If the string is a valid file name or path, returns the file extension without the leading period (.). Otherwise, returns an empty string.\n\t\t\t\t\n\t\t\t\tvar a = \"/path/to/file.txt\".get_extension() # a is \"txt\"\n\t\t\t\tvar b = \"cool.txt\".get_extension()          # b is \"txt\"\n\t\t\t\tvar c = \"cool.font.tres\".get_extension()    # c is \"tres\"\n\t\t\t\tvar d = \".pack1\".get_extension()            # d is \"pack1\"\n\n\t\t\t\tvar e = \"file.txt.\".get_extension()  # e is \"\"\n\t\t\t\tvar f = \"file.txt..\".get_extension() # f is \"\"\n\t\t\t\tvar g = \"txt\".get_extension()        # g is \"\"\n\t\t\t\tvar h = \"\".get_extension()           # h is \"\"\n\t\t\t\t","returnType":"String"},{"name":"get_file","signature":"get_file() -> String","description":"If the string is a valid file path, returns the file name, including the extension.\n\t\t\t\t\n\t\t\t\tvar file = \"/path/to/icon.png\".get_file() # file is \"icon.png\"\n\t\t\t\t","returnType":"String"},{"name":"get_slice","signature":"get_slice(delimiter: String, slice: int) -> String","description":"Splits the string using a [param delimiter] and returns the substring at index [param slice]. Returns the original string if [param delimiter] does not occur in the string. Returns an empty string if the [param slice] does not exist.\n\t\t\t\tThis is faster than [method split], if you only need one substring.\n\t\t\t\t\n\t\t\t\tprint(\"i/am/example/hi\".get_slice(\"/\", 2)) # Prints \"example\"\n\t\t\t\t","returnType":"String"},{"name":"get_slice_count","signature":"get_slice_count(delimiter: String) -> int","description":"Returns the total number of slices when the string is split with the given [param delimiter] (see [method split]).","returnType":"int"},{"name":"get_slicec","signature":"get_slicec(delimiter: int, slice: int) -> String","description":"Splits the string using a Unicode character with code [param delimiter] and returns the substring at index [param slice]. Returns an empty string if the [param slice] does not exist.\n\t\t\t\tThis is faster than [method split], if you only need one substring.","returnType":"String"},{"name":"hash","signature":"hash() -> int","description":"Returns the 32-bit hash value representing the string's contents.\n\t\t\t\tNote: Strings with equal hash values are not guaranteed to be the same, as a result of hash collisions. On the contrary, strings with different hash values are guaranteed to be different.","returnType":"int"},{"name":"hex_decode","signature":"hex_decode() -> PackedByteArray","description":"Decodes a hexadecimal string as a .\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tvar text = \"hello world\"\n\t\t\t\tvar encoded = text.to_utf8_buffer().hex_encode() # outputs \"68656c6c6f20776f726c64\"\n\t\t\t\tprint(buf.hex_decode().get_string_from_utf8())\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tvar text = \"hello world\";\n\t\t\t\tvar encoded = text.ToUtf8Buffer().HexEncode(); // outputs \"68656c6c6f20776f726c64\"\n\t\t\t\tGD.Print(buf.HexDecode().GetStringFromUtf8());\n\t\t\t\t\n\t\t\t\t","returnType":"PackedByteArray"},{"name":"hex_to_int","signature":"hex_to_int() -> int","description":"Converts the string representing a hexadecimal number into an . The string may be optionally prefixed with \"0x\", and an additional - prefix for negative numbers.\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tprint(\"0xff\".hex_to_int()) # Prints 255\n\t\t\t\tprint(\"ab\".hex_to_int())   # Prints 171\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tGD.Print(\"0xff\".HexToInt()); // Prints 255\n\t\t\t\tGD.Print(\"ab\".HexToInt());   // Prints 171\n\t\t\t\t\n\t\t\t\t","returnType":"int"},{"name":"humanize_size","signature":"humanize_size(size: int) -> String","description":"Converts [param size] which represents a number of bytes into a human-readable form.\n\t\t\t\tThe result is in [url=https://en.wikipedia.org/wiki/Binary_prefix#IEC_prefixes]IEC prefix format, which may end in either \"B\", \"KiB\", \"MiB\", \"GiB\", \"TiB\", \"PiB\", or \"EiB\".","returnType":"String"},{"name":"indent","signature":"indent(prefix: String) -> String","description":"Indents every line of the string with the given [param prefix]. Empty lines are not indented. See also [method dedent] to remove indentation.\n\t\t\t\tFor example, the string can be indented with two tabulations using \"\\t\\t\", or four spaces using \"    \".","returnType":"String"},{"name":"insert","signature":"insert(position: int, what: String) -> String","description":"Inserts [param what] at the given [param position] in the string.","returnType":"String"},{"name":"is_absolute_path","signature":"is_absolute_path() -> bool","description":"Returns true if the string is a path to a file or directory, and its starting point is explicitly defined. This method is the opposite of [method is_relative_path].\n\t\t\t\tThis includes all paths starting with \"res://\", \"user://\", \"C:\\\", \"/\", etc.","returnType":"bool"},{"name":"is_empty","signature":"is_empty() -> bool","description":"Returns true if the string's length is 0 (\"\"). See also [method length].","returnType":"bool"},{"name":"is_relative_path","signature":"is_relative_path() -> bool","description":"Returns true if the string is a path, and its starting point is dependent on context. The path could begin from the current directory, or the current  (if the string is derived from a ), and may sometimes be prefixed with \"./\". This method is the opposite of [method is_absolute_path].","returnType":"bool"},{"name":"is_subsequence_of","signature":"is_subsequence_of(text: String) -> bool","description":"Returns true if all characters of this string can be found in [param text] in their original order.\n\t\t\t\t\n\t\t\t\tvar text = \"Wow, incredible!\"\n\n\t\t\t\tprint(\"inedible\".is_subsequence_of(text)) # Prints true\n\t\t\t\tprint(\"Word!\".is_subsequence_of(text))    # Prints true\n\t\t\t\tprint(\"Window\".is_subsequence_of(text))   # Prints false\n\t\t\t\tprint(\"\".is_subsequence_of(text))         # Prints true\n\t\t\t\t","returnType":"bool"},{"name":"is_subsequence_ofn","signature":"is_subsequence_ofn(text: String) -> bool","description":"Returns true if all characters of this string can be found in [param text] in their original order, ignoring case.","returnType":"bool"},{"name":"is_valid_ascii_identifier","signature":"is_valid_ascii_identifier() -> bool","description":"Returns true if this string is a valid ASCII identifier. A valid ASCII identifier may contain only letters, digits, and underscores (_), and the first character may not be a digit.\n\t\t\t\t\n\t\t\t\tprint(\"node_2d\".is_valid_ascii_identifier())    # Prints true\n\t\t\t\tprint(\"TYPE_FLOAT\".is_valid_ascii_identifier()) # Prints true\n\t\t\t\tprint(\"1st_method\".is_valid_ascii_identifier()) # Prints false\n\t\t\t\tprint(\"MyMethod#2\".is_valid_ascii_identifier()) # Prints false\n\t\t\t\t\n\t\t\t\tSee also [method is_valid_unicode_identifier].","returnType":"bool"},{"name":"is_valid_filename","signature":"is_valid_filename() -> bool","description":"Returns true if this string does not contain characters that are not allowed in file names (: / \\ ? * \" | % &lt; &gt;).","returnType":"bool"},{"name":"is_valid_float","signature":"is_valid_float() -> bool","description":"Returns true if this string represents a valid floating-point number. A valid float may contain only digits, one decimal point (.), and the exponent letter (e). It may also be prefixed with a positive (+) or negative (-) sign. Any valid integer is also a valid float (see [method is_valid_int]). See also [method to_float].\n\t\t\t\t\n\t\t\t\tprint(\"1.7\".is_valid_float())   # Prints true\n\t\t\t\tprint(\"24\".is_valid_float())    # Prints true\n\t\t\t\tprint(\"7e3\".is_valid_float())   # Prints true\n\t\t\t\tprint(\"Hello\".is_valid_float()) # Prints false\n\t\t\t\t","returnType":"bool"},{"name":"is_valid_hex_number","signature":"is_valid_hex_number(with_prefix: bool) -> bool","description":"Returns true if this string is a valid hexadecimal number. A valid hexadecimal number only contains digits or letters A to F (either uppercase or lowercase), and may be prefixed with a positive (+) or negative (-) sign.\n\t\t\t\tIf [param with_prefix] is true, the hexadecimal number needs to prefixed by \"0x\" to be considered valid.\n\t\t\t\t\n\t\t\t\tprint(\"A08E\".is_valid_hex_number())    # Prints true\n\t\t\t\tprint(\"-AbCdEf\".is_valid_hex_number()) # Prints true\n\t\t\t\tprint(\"2.5\".is_valid_hex_number())     # Prints false\n\n\t\t\t\tprint(\"0xDEADC0DE\".is_valid_hex_number(true)) # Prints true\n\t\t\t\t","returnType":"bool"},{"name":"is_valid_html_color","signature":"is_valid_html_color() -> bool","description":"Returns true if this string is a valid color in hexadecimal HTML notation. The string must be a hexadecimal value (see [method is_valid_hex_number]) of either 3, 4, 6 or 8 digits, and may be prefixed by a hash sign (#). Other HTML notations for colors, such as names or hsl(), are not considered valid. See also [method Color.html].","returnType":"bool"},{"name":"is_valid_identifier","signature":"is_valid_identifier() -> bool","description":"Returns true if this string is a valid identifier. A valid identifier may contain only letters, digits and underscores (_), and the first character may not be a digit.\n\t\t\t\t\n\t\t\t\tprint(\"node_2d\".is_valid_identifier())    # Prints true\n\t\t\t\tprint(\"TYPE_FLOAT\".is_valid_identifier()) # Prints true\n\t\t\t\tprint(\"1st_method\".is_valid_identifier()) # Prints false\n\t\t\t\tprint(\"MyMethod#2\".is_valid_identifier()) # Prints false\n\t\t\t\t","returnType":"bool"},{"name":"is_valid_int","signature":"is_valid_int() -> bool","description":"Returns true if this string represents a valid integer. A valid integer only contains digits, and may be prefixed with a positive (+) or negative (-) sign. See also [method to_int].\n\t\t\t\t\n\t\t\t\tprint(\"7\".is_valid_int())    # Prints true\n\t\t\t\tprint(\"1.65\".is_valid_int()) # Prints false\n\t\t\t\tprint(\"Hi\".is_valid_int())   # Prints false\n\t\t\t\tprint(\"+3\".is_valid_int())   # Prints true\n\t\t\t\tprint(\"-12\".is_valid_int())  # Prints true\n\t\t\t\t","returnType":"bool"},{"name":"is_valid_ip_address","signature":"is_valid_ip_address() -> bool","description":"Returns true if this string represents a well-formatted IPv4 or IPv6 address. This method considers [url=https://en.wikipedia.org/wiki/Reserved_IP_addresses]reserved IP addresses such as \"0.0.0.0\" and \"ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff\" as valid.","returnType":"bool"},{"name":"is_valid_unicode_identifier","signature":"is_valid_unicode_identifier() -> bool","description":"Returns true if this string is a valid Unicode identifier.\n\t\t\t\tA valid Unicode identifier must begin with a Unicode character of class XID_Start or \"_\", and may contain Unicode characters of class XID_Continue in the other positions.\n\t\t\t\t\n\t\t\t\tprint(\"node_2d\".is_valid_unicode_identifier())      # Prints true\n\t\t\t\tprint(\"1st_method\".is_valid_unicode_identifier())   # Prints false\n\t\t\t\tprint(\"MyMethod#2\".is_valid_unicode_identifier())   # Prints false\n\t\t\t\tprint(\"állóképesség\".is_valid_unicode_identifier()) # Prints true\n\t\t\t\tprint(\"выносливость\".is_valid_unicode_identifier()) # Prints true\n\t\t\t\tprint(\"体力\".is_valid_unicode_identifier())         # Prints true\n\t\t\t\t\n\t\t\t\tSee also [method is_valid_ascii_identifier].\n\t\t\t\tNote: This method checks identifiers the same way as GDScript. See [method TextServer.is_valid_identifier] for more advanced checks.","returnType":"bool"},{"name":"join","signature":"join(parts: PackedStringArray) -> String","description":"Returns the concatenation of [param parts]' elements, with each element separated by the string calling this method. This method is the opposite of [method split].\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tvar fruits = [\"Apple\", \"Orange\", \"Pear\", \"Kiwi\"]\n\n\t\t\t\tprint(\", \".join(fruits))  # Prints \"Apple, Orange, Pear, Kiwi\"\n\t\t\t\tprint(\"---\".join(fruits)) # Prints \"Apple---Orange---Pear---Kiwi\"\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tstring[] fruits = [\"Apple\", \"Orange\", \"Pear\", \"Kiwi\"];\n\n\t\t\t\t// In C#, this method is static.\n\t\t\t\tGD.Print(string.Join(\", \", fruits));  // Prints \"Apple, Orange, Pear, Kiwi\"\n\t\t\t\tGD.Print(string.Join(\"---\", fruits)); // Prints \"Apple---Orange---Pear---Kiwi\"\n\t\t\t\t\n\t\t\t\t","returnType":"String"},{"name":"json_escape","signature":"json_escape() -> String","description":"Returns a copy of the string with special characters escaped using the JSON standard. Because it closely matches the C standard, it is possible to use [method c_unescape] to unescape the string, if necessary.","returnType":"String"},{"name":"left","signature":"left(length: int) -> String","description":"Returns the first [param length] characters from the beginning of the string. If [param length] is negative, strips the last [param length] characters from the string's end.\n\t\t\t\t\n\t\t\t\tprint(\"Hello World!\".left(3))  # Prints \"Hel\"\n\t\t\t\tprint(\"Hello World!\".left(-4)) # Prints \"Hello Wo\"\n\t\t\t\t","returnType":"String"},{"name":"length","signature":"length() -> int","description":"Returns the number of characters in the string. Empty strings (\"\") always return 0. See also [method is_empty].","returnType":"int"},{"name":"lpad","signature":"lpad(min_length: int, character: String) -> String","description":"Formats the string to be at least [param min_length] long by adding [param character]s to the left of the string, if necessary. See also [method rpad].","returnType":"String"},{"name":"lstrip","signature":"lstrip(chars: String) -> String","description":"Removes a set of characters defined in [param chars] from the string's beginning. See also [method rstrip].\n\t\t\t\tNote: [param chars] is not a prefix. Use [method trim_prefix] to remove a single prefix, rather than a set of characters.","returnType":"String"},{"name":"match","signature":"match(expr: String) -> bool","description":"Does a simple expression match (also called \"glob\" or \"globbing\"), where * matches zero or more arbitrary characters and ? matches any single character except a period (.). An empty string or empty expression always evaluates to false.","returnType":"bool"},{"name":"matchn","signature":"matchn(expr: String) -> bool","description":"Does a simple case-insensitive expression match, where * matches zero or more arbitrary characters and ? matches any single character except a period (.). An empty string or empty expression always evaluates to false.","returnType":"bool"},{"name":"md5_buffer","signature":"md5_buffer() -> PackedByteArray","description":"Returns the [url=https://en.wikipedia.org/wiki/MD5]MD5 hash of the string as a .","returnType":"PackedByteArray"},{"name":"md5_text","signature":"md5_text() -> String","description":"Returns the [url=https://en.wikipedia.org/wiki/MD5]MD5 hash of the string as another .","returnType":"String"},{"name":"naturalcasecmp_to","signature":"naturalcasecmp_to(to: String) -> int","description":"Performs a case-sensitive, natural order comparison to another string. Returns -1 if less than, 1 if greater than, or 0 if equal. \"Less than\" or \"greater than\" are determined by the [url=https://en.wikipedia.org/wiki/List_of_Unicode_characters]Unicode code points of each string, which roughly matches the alphabetical order.\n\t\t\t\tWhen used for sorting, natural order comparison orders sequences of numbers by the combined value of each digit as is often expected, instead of the single digit's value. A sorted sequence of numbered strings will be [\"1\", \"2\", \"3\", ...], not [\"1\", \"10\", \"2\", \"3\", ...].\n\t\t\t\tWith different string lengths, returns 1 if this string is longer than the [param to] string, or -1 if shorter. Note that the length of empty strings is always 0.\n\t\t\t\tTo get a  result from a string comparison, use the == operator instead. See also [method naturalnocasecmp_to], [method filecasecmp_to], and [method nocasecmp_to].","returnType":"int"},{"name":"naturalnocasecmp_to","signature":"naturalnocasecmp_to(to: String) -> int","description":"Performs a case-insensitive, natural order comparison to another string. Returns -1 if less than, 1 if greater than, or 0 if equal. \"Less than\" or \"greater than\" are determined by the [url=https://en.wikipedia.org/wiki/List_of_Unicode_characters]Unicode code points of each string, which roughly matches the alphabetical order. Internally, lowercase characters are converted to uppercase for the comparison.\n\t\t\t\tWhen used for sorting, natural order comparison orders sequences of numbers by the combined value of each digit as is often expected, instead of the single digit's value. A sorted sequence of numbered strings will be [\"1\", \"2\", \"3\", ...], not [\"1\", \"10\", \"2\", \"3\", ...].\n\t\t\t\tWith different string lengths, returns 1 if this string is longer than the [param to] string, or -1 if shorter. Note that the length of empty strings is always 0.\n\t\t\t\tTo get a  result from a string comparison, use the == operator instead. See also [method naturalcasecmp_to], [method filenocasecmp_to], and [method casecmp_to].","returnType":"int"},{"name":"nocasecmp_to","signature":"nocasecmp_to(to: String) -> int","description":"Performs a case-insensitive comparison to another string. Returns -1 if less than, 1 if greater than, or 0 if equal. \"Less than\" or \"greater than\" are determined by the [url=https://en.wikipedia.org/wiki/List_of_Unicode_characters]Unicode code points of each string, which roughly matches the alphabetical order. Internally, lowercase characters are converted to uppercase for the comparison.\n\t\t\t\tWith different string lengths, returns 1 if this string is longer than the [param to] string, or -1 if shorter. Note that the length of empty strings is always 0.\n\t\t\t\tTo get a  result from a string comparison, use the == operator instead. See also [method casecmp_to], [method filenocasecmp_to], and [method naturalnocasecmp_to].","returnType":"int"},{"name":"num","signature":"num(number: float, decimals: int) -> String","description":"Converts a  to a string representation of a decimal number, with the number of decimal places specified in [param decimals].\n\t\t\t\tIf [param decimals] is -1 as by default, the string representation may only have up to 14 significant digits, with digits before the decimal point having priority over digits after.\n\t\t\t\tTrailing zeros are not included in the string. The last digit is rounded, not truncated.\n\t\t\t\t\n\t\t\t\tString.num(3.141593)     # Returns \"3.141593\"\n\t\t\t\tString.num(3.141593, 3)  # Returns \"3.142\"\n\t\t\t\tString.num(3.14159300)   # Returns \"3.141593\"\n\n\t\t\t\t# Here, the last digit will be rounded up,\n\t\t\t\t# which reduces the total digit count, since trailing zeros are removed:\n\t\t\t\tString.num(42.129999, 5) # Returns \"42.13\"\n\n\t\t\t\t# If `decimals` is not specified, the maximum number of significant digits is 14:\n\t\t\t\tString.num(-0.0000012345432123454321)     # Returns \"-0.00000123454321\"\n\t\t\t\tString.num(-10000.0000012345432123454321) # Returns \"-10000.0000012345\"\n\t\t\t\t","returnType":"String"},{"name":"num_int64","signature":"num_int64(number: int, base: int, capitalize_hex: bool) -> String","description":"Converts the given [param number] to a string representation, with the given [param base].\n\t\t\t\tBy default, [param base] is set to decimal (10). Other common bases in programming include binary (2), [url=https://en.wikipedia.org/wiki/Octal]octal (8), hexadecimal (16).\n\t\t\t\tIf [param capitalize_hex] is true, digits higher than 9 are represented in uppercase.","returnType":"String"},{"name":"num_scientific","signature":"num_scientific(number: float) -> String","description":"Converts the given [param number] to a string representation, in scientific notation.\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tvar n = -5.2e8\n\t\t\t\tprint(n)                        # Prints -520000000\n\t\t\t\tprint(String.num_scientific(n)) # Prints -5.2e+08\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t// This method is not implemented in C#.\n\t\t\t\t// Use `string.ToString()` with \"e\" to achieve similar results.\n\t\t\t\tvar n = -5.2e8f;\n\t\t\t\tGD.Print(n);                // Prints -520000000\n\t\t\t\tGD.Print(n.ToString(\"e1\")); // Prints -5.2e+008\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tNote: In C#, this method is not implemented. To achieve similar results, see C#'s [url=https://learn.microsoft.com/en-us/dotnet/standard/base-types/standard-numeric-format-strings]Standard numeric format strings","returnType":"String"},{"name":"num_uint64","signature":"num_uint64(number: int, base: int, capitalize_hex: bool) -> String","description":"Converts the given unsigned  to a string representation, with the given [param base].\n\t\t\t\tBy default, [param base] is set to decimal (10). Other common bases in programming include binary (2), [url=https://en.wikipedia.org/wiki/Octal]octal (8), hexadecimal (16).\n\t\t\t\tIf [param capitalize_hex] is true, digits higher than 9 are represented in uppercase.","returnType":"String"},{"name":"pad_decimals","signature":"pad_decimals(digits: int) -> String","description":"Formats the string representing a number to have an exact number of [param digits] after the decimal point.","returnType":"String"},{"name":"pad_zeros","signature":"pad_zeros(digits: int) -> String","description":"Formats the string representing a number to have an exact number of [param digits] before the decimal point.","returnType":"String"},{"name":"path_join","signature":"path_join(file: String) -> String","description":"Concatenates [param file] at the end of the string as a subpath, adding / if necessary.\n\t\t\t\tExample: \"this/is\".path_join(\"path\") == \"this/is/path\".","returnType":"String"},{"name":"repeat","signature":"repeat(count: int) -> String","description":"Repeats this string a number of times. [param count] needs to be greater than 0. Otherwise, returns an empty string.","returnType":"String"},{"name":"replace","signature":"replace(what: String, forwhat: String) -> String","description":"Replaces all occurrences of [param what] inside the string with the given [param forwhat].","returnType":"String"},{"name":"replacen","signature":"replacen(what: String, forwhat: String) -> String","description":"Replaces all case-insensitive occurrences of [param what] inside the string with the given [param forwhat].","returnType":"String"},{"name":"reverse","signature":"reverse() -> String","description":"Returns the copy of this string in reverse order. This operation works on unicode codepoints, rather than sequences of codepoints, and may break things like compound letters or emojis.","returnType":"String"},{"name":"rfind","signature":"rfind(what: String, from: int) -> int","description":"Returns the index of the last occurrence of [param what] in this string, or -1 if there are none. The search's start can be specified with [param from], continuing to the beginning of the string. This method is the reverse of [method find].","returnType":"int"},{"name":"rfindn","signature":"rfindn(what: String, from: int) -> int","description":"Returns the index of the last case-insensitive occurrence of [param what] in this string, or -1 if there are none. The starting search index can be specified with [param from], continuing to the beginning of the string. This method is the reverse of [method findn].","returnType":"int"},{"name":"right","signature":"right(length: int) -> String","description":"Returns the last [param length] characters from the end of the string. If [param length] is negative, strips the first [param length] characters from the string's beginning.\n\t\t\t\t\n\t\t\t\tprint(\"Hello World!\".right(3))  # Prints \"ld!\"\n\t\t\t\tprint(\"Hello World!\".right(-4)) # Prints \"o World!\"\n\t\t\t\t","returnType":"String"},{"name":"rpad","signature":"rpad(min_length: int, character: String) -> String","description":"Formats the string to be at least [param min_length] long, by adding [param character]s to the right of the string, if necessary. See also [method lpad].","returnType":"String"},{"name":"rsplit","signature":"rsplit(delimiter: String, allow_empty: bool, maxsplit: int) -> PackedStringArray","description":"Splits the string using a [param delimiter] and returns an array of the substrings, starting from the end of the string. The splits in the returned array appear in the same order as the original string. If [param delimiter] is an empty string, each substring will be a single character.\n\t\t\t\tIf [param allow_empty] is false, empty strings between adjacent delimiters are excluded from the array.\n\t\t\t\tIf [param maxsplit] is greater than 0, the number of splits may not exceed [param maxsplit]. By default, the entire string is split, which is mostly identical to [method split].\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tvar some_string = \"One,Two,Three,Four\"\n\t\t\t\tvar some_array = some_string.rsplit(\",\", true, 1)\n\n\t\t\t\tprint(some_array.size()) # Prints 2\n\t\t\t\tprint(some_array)     # Prints \"One,Two,Three\"\n\t\t\t\tprint(some_array)     # Prints \"Four\"\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t// In C#, there is no String.RSplit() method.\n\t\t\t\t\n\t\t\t\t","returnType":"PackedStringArray"},{"name":"rstrip","signature":"rstrip(chars: String) -> String","description":"Removes a set of characters defined in [param chars] from the string's end. See also [method lstrip].\n\t\t\t\tNote: [param chars] is not a suffix. Use [method trim_suffix] to remove a single suffix, rather than a set of characters.","returnType":"String"},{"name":"sha1_buffer","signature":"sha1_buffer() -> PackedByteArray","description":"Returns the [url=https://en.wikipedia.org/wiki/SHA-1]SHA-1 hash of the string as a .","returnType":"PackedByteArray"},{"name":"sha1_text","signature":"sha1_text() -> String","description":"Returns the [url=https://en.wikipedia.org/wiki/SHA-1]SHA-1 hash of the string as another .","returnType":"String"},{"name":"sha256_buffer","signature":"sha256_buffer() -> PackedByteArray","description":"Returns the [url=https://en.wikipedia.org/wiki/SHA-2]SHA-256 hash of the string as a .","returnType":"PackedByteArray"},{"name":"sha256_text","signature":"sha256_text() -> String","description":"Returns the [url=https://en.wikipedia.org/wiki/SHA-2]SHA-256 hash of the string as another .","returnType":"String"},{"name":"similarity","signature":"similarity(text: String) -> float","description":"Returns the similarity index ([url=https://en.wikipedia.org/wiki/S%C3%B8rensen%E2%80%93Dice_coefficient]Sørensen-Dice coefficient) of this string compared to another. A result of 1.0 means totally similar, while 0.0 means totally dissimilar.\n\t\t\t\t\n\t\t\t\tprint(\"ABC123\".similarity(\"ABC123\")) # Prints 1.0\n\t\t\t\tprint(\"ABC123\".similarity(\"XYZ456\")) # Prints 0.0\n\t\t\t\tprint(\"ABC123\".similarity(\"123ABC\")) # Prints 0.8\n\t\t\t\tprint(\"ABC123\".similarity(\"abc123\")) # Prints 0.4\n\t\t\t\t","returnType":"float"},{"name":"simplify_path","signature":"simplify_path() -> String","description":"If the string is a valid file path, converts the string into a canonical path. This is the shortest possible path, without \"./\", and all the unnecessary \"..\" and \"/\".\n\t\t\t\t\n\t\t\t\tvar simple_path = \"./path/to///../file\".simplify_path()\n\t\t\t\tprint(simple_path) # Prints \"path/file\"\n\t\t\t\t","returnType":"String"},{"name":"split","signature":"split(delimiter: String, allow_empty: bool, maxsplit: int) -> PackedStringArray","description":"Splits the string using a [param delimiter] and returns an array of the substrings. If [param delimiter] is an empty string, each substring will be a single character. This method is the opposite of [method join].\n\t\t\t\tIf [param allow_empty] is false, empty strings between adjacent delimiters are excluded from the array.\n\t\t\t\tIf [param maxsplit] is greater than 0, the number of splits may not exceed [param maxsplit]. By default, the entire string is split.\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tvar some_array = \"One,Two,Three,Four\".split(\",\", true, 2)\n\n\t\t\t\tprint(some_array.size()) # Prints 3\n\t\t\t\tprint(some_array)     # Prints \"One\"\n\t\t\t\tprint(some_array)     # Prints \"Two\"\n\t\t\t\tprint(some_array)     # Prints \"Three,Four\"\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t// C#'s `Split()` does not support the `maxsplit` parameter.\n\t\t\t\tvar someArray = \"One,Two,Three\".Split(\",\");\n\n\t\t\t\tGD.Print(someArray); // Prints \"One\"\n\t\t\t\tGD.Print(someArray); // Prints \"Two\"\n\t\t\t\tGD.Print(someArray); // Prints \"Three\"\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tNote: If you only need one substring from the array, consider using [method get_slice] which is faster. If you need to split strings with more complex rules, use the  class instead.","returnType":"PackedStringArray"},{"name":"split_floats","signature":"split_floats(delimiter: String, allow_empty: bool) -> PackedFloat64Array","description":"Splits the string into floats by using a [param delimiter] and returns a .\n\t\t\t\tIf [param allow_empty] is false, empty or invalid  conversions between adjacent delimiters are excluded.\n\t\t\t\t\n\t\t\t\tvar a = \"1,2,4.5\".split_floats(\",\")         # a is [1.0, 2.0, 4.5]\n\t\t\t\tvar c = \"1| ||4.5\".split_floats(\"|\")        # c is [1.0, 0.0, 0.0, 4.5]\n\t\t\t\tvar b = \"1| ||4.5\".split_floats(\"|\", false) # b is [1.0, 4.5]\n\t\t\t\t","returnType":"PackedFloat64Array"},{"name":"strip_edges","signature":"strip_edges(left: bool, right: bool) -> String","description":"Strips all non-printable characters from the beginning and the end of the string. These include spaces, tabulations (\\t), and newlines (\\n \\r).\n\t\t\t\tIf [param left] is false, ignores the string's beginning. Likewise, if [param right] is false, ignores the string's end.","returnType":"String"},{"name":"strip_escapes","signature":"strip_escapes() -> String","description":"Strips all escape characters from the string. These include all non-printable control characters of the first page of the ASCII table (values from 0 to 31), such as tabulation (\\t) and newline (\\n, \\r) characters, but not spaces.","returnType":"String"},{"name":"substr","signature":"substr(from: int, len: int) -> String","description":"Returns part of the string from the position [param from] with length [param len]. If [param len] is -1 (as by default), returns the rest of the string starting from the given position.","returnType":"String"},{"name":"to_ascii_buffer","signature":"to_ascii_buffer() -> PackedByteArray","description":"Converts the string to an [url=https://en.wikipedia.org/wiki/ASCII]ASCII/Latin-1 encoded . This method is slightly faster than [method to_utf8_buffer], but replaces all unsupported characters with spaces. This is the inverse of [method PackedByteArray.get_string_from_ascii].","returnType":"PackedByteArray"},{"name":"to_camel_case","signature":"to_camel_case() -> String","description":"Returns the string converted to camelCase.","returnType":"String"},{"name":"to_float","signature":"to_float() -> float","description":"Converts the string representing a decimal number into a . This method stops on the first non-number character, except the first decimal point (.) and the exponent letter (e). See also [method is_valid_float].\n\t\t\t\t\n\t\t\t\tvar a = \"12.35\".to_float()  # a is 12.35\n\t\t\t\tvar b = \"1.2.3\".to_float()  # b is 1.2\n\t\t\t\tvar c = \"12xy3\".to_float()  # c is 12.0\n\t\t\t\tvar d = \"1e3\".to_float()    # d is 1000.0\n\t\t\t\tvar e = \"Hello!\".to_float() # e is 0.0\n\t\t\t\t","returnType":"float"},{"name":"to_int","signature":"to_int() -> int","description":"Converts the string representing an integer number into an . This method removes any non-number character and stops at the first decimal point (.). See also [method is_valid_int].\n\t\t\t\t\n\t\t\t\tvar a = \"123\".to_int()    # a is 123\n\t\t\t\tvar b = \"x1y2z3\".to_int() # b is 123\n\t\t\t\tvar c = \"-1.2.3\".to_int() # c is -1\n\t\t\t\tvar d = \"Hello!\".to_int() # d is 0\n\t\t\t\t","returnType":"int"},{"name":"to_lower","signature":"to_lower() -> String","description":"Returns the string converted to lowercase.","returnType":"String"},{"name":"to_pascal_case","signature":"to_pascal_case() -> String","description":"Returns the string converted to PascalCase.","returnType":"String"},{"name":"to_snake_case","signature":"to_snake_case() -> String","description":"Returns the string converted to snake_case.\n\t\t\t\tNote: Numbers followed by a single letter are not separated in the conversion to keep some words (such as \"2D\") together.\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\"Node2D\".to_snake_case()               # Returns \"node_2d\"\n\t\t\t\t\"2nd place\".to_snake_case()            # Returns \"2_nd_place\"\n\t\t\t\t\"Texture3DAssetFolder\".to_snake_case() # Returns \"texture_3d_asset_folder\"\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\"Node2D\".ToSnakeCase();               // Returns \"node_2d\"\n\t\t\t\t\"2nd place\".ToSnakeCase();            // Returns \"2_nd_place\"\n\t\t\t\t\"Texture3DAssetFolder\".ToSnakeCase(); // Returns \"texture_3d_asset_folder\"\n\t\t\t\t\n\t\t\t\t","returnType":"String"},{"name":"to_upper","signature":"to_upper() -> String","description":"Returns the string converted to UPPERCASE.","returnType":"String"},{"name":"to_utf8_buffer","signature":"to_utf8_buffer() -> PackedByteArray","description":"Converts the string to a [url=https://en.wikipedia.org/wiki/UTF-8]UTF-8 encoded . This method is slightly slower than [method to_ascii_buffer], but supports all UTF-8 characters. For most cases, prefer using this method. This is the inverse of [method PackedByteArray.get_string_from_utf8].","returnType":"PackedByteArray"},{"name":"to_utf16_buffer","signature":"to_utf16_buffer() -> PackedByteArray","description":"Converts the string to a [url=https://en.wikipedia.org/wiki/UTF-16]UTF-16 encoded . This is the inverse of [method PackedByteArray.get_string_from_utf16].","returnType":"PackedByteArray"},{"name":"to_utf32_buffer","signature":"to_utf32_buffer() -> PackedByteArray","description":"Converts the string to a [url=https://en.wikipedia.org/wiki/UTF-32]UTF-32 encoded . This is the inverse of [method PackedByteArray.get_string_from_utf32].","returnType":"PackedByteArray"},{"name":"to_wchar_buffer","signature":"to_wchar_buffer() -> PackedByteArray","description":"Converts the string to a [url=https://en.wikipedia.org/wiki/Wide_character]wide character (wchar_t, UTF-16 on Windows, UTF-32 on other platforms) encoded . This is the inverse of [method PackedByteArray.get_string_from_wchar].","returnType":"PackedByteArray"},{"name":"trim_prefix","signature":"trim_prefix(prefix: String) -> String","description":"Removes the given [param prefix] from the start of the string, or returns the string unchanged.","returnType":"String"},{"name":"trim_suffix","signature":"trim_suffix(suffix: String) -> String","description":"Removes the given [param suffix] from the end of the string, or returns the string unchanged.","returnType":"String"},{"name":"unicode_at","signature":"unicode_at(at: int) -> int","description":"Returns the character code at position [param at].","returnType":"int"},{"name":"uri_decode","signature":"uri_decode() -> String","description":"Decodes the string from its URL-encoded format. This method is meant to properly decode the parameters in a URL when receiving an HTTP request. See also [method uri_encode].\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tvar url = \"$DOCS_URL/?highlight=Godot%20Engine%3%docs\"\n\t\t\t\tprint(url.uri_decode()) # Prints \"$DOCS_URL/?highlight=Godot Engine:docs\"\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tvar url = \"$DOCS_URL/?highlight=Godot%20Engine%3%docs\"\n\t\t\t\tGD.Print(url.URIDecode()) // Prints \"$DOCS_URL/?highlight=Godot Engine:docs\"\n\t\t\t\t\n\t\t\t\t","returnType":"String"},{"name":"uri_encode","signature":"uri_encode() -> String","description":"Encodes the string to URL-friendly format. This method is meant to properly encode the parameters in a URL when sending an HTTP request. See also [method uri_decode].\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tvar prefix = \"$DOCS_URL/?highlight=\"\n\t\t\t\tvar url = prefix + \"Godot Engine:docs\".uri_encode()\n\n\t\t\t\tprint(url) # Prints \"$DOCS_URL/?highlight=Godot%20Engine%3%docs\"\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tvar prefix = \"$DOCS_URL/?highlight=\";\n\t\t\t\tvar url = prefix + \"Godot Engine:docs\".URIEncode();\n\n\t\t\t\tGD.Print(url); // Prints \"$DOCS_URL/?highlight=Godot%20Engine%3%docs\"\n\t\t\t\t\n\t\t\t\t","returnType":"String"},{"name":"validate_filename","signature":"validate_filename() -> String","description":"Returns a copy of the string with all characters that are not allowed in [method is_valid_filename] replaced with underscores.","returnType":"String"},{"name":"validate_node_name","signature":"validate_node_name() -> String","description":"Returns a copy of the string with all characters that are not allowed in [member Node.name] (. : @ / \" %) replaced with underscores.","returnType":"String"},{"name":"xml_escape","signature":"xml_escape(escape_quotes: bool) -> String","description":"Returns a copy of the string with special characters escaped using the XML standard. If [param escape_quotes] is true, the single quote (') and double quote (\") characters are also escaped.","returnType":"String"},{"name":"xml_unescape","signature":"xml_unescape() -> String","description":"Returns a copy of the string with escaped characters replaced by their meanings according to the XML standard.","returnType":"String"}],"signals":[]},"StringName":{"name":"StringName","description":"A built-in type for unique strings.","inherits":"","properties":[],"methods":[{"name":"begins_with","signature":"begins_with(text: String) -> bool","description":"Returns true if the string begins with the given [param text]. See also [method ends_with].","returnType":"bool"},{"name":"bigrams","signature":"bigrams() -> PackedStringArray","description":"Returns an array containing the bigrams (pairs of consecutive characters) of this string.\n\t\t\t\t\n\t\t\t\tprint(\"Get up!\".bigrams()) # Prints [\"Ge\", \"et\", \"t \", \" u\", \"up\", \"p!\"]\n\t\t\t\t","returnType":"PackedStringArray"},{"name":"bin_to_int","signature":"bin_to_int() -> int","description":"Converts the string representing a binary number into an . The string may optionally be prefixed with \"0b\", and an additional - prefix for negative numbers.\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tprint(\"101\".bin_to_int())   # Prints 5\n\t\t\t\tprint(\"0b101\".bin_to_int()) # Prints 5\n\t\t\t\tprint(\"-0b10\".bin_to_int()) # Prints -2\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tGD.Print(\"101\".BinToInt());   // Prints 5\n\t\t\t\tGD.Print(\"0b101\".BinToInt()); // Prints 5\n\t\t\t\tGD.Print(\"-0b10\".BinToInt()); // Prints -2\n\t\t\t\t\n\t\t\t\t","returnType":"int"},{"name":"c_escape","signature":"c_escape() -> String","description":"Returns a copy of the string with special characters escaped using the C language standard.","returnType":"String"},{"name":"c_unescape","signature":"c_unescape() -> String","description":"Returns a copy of the string with escaped characters replaced by their meanings. Supported escape sequences are \\', \\\", \\\\, \\a, \\b, \\f, \\n, \\r, \\t, \\v.\n\t\t\t\tNote: Unlike the GDScript parser, this method doesn't support the \\uXXXX escape sequence.","returnType":"String"},{"name":"capitalize","signature":"capitalize() -> String","description":"Changes the appearance of the string: replaces underscores (_) with spaces, adds spaces before uppercase letters in the middle of a word, converts all letters to lowercase, then converts the first one and each one following a space to uppercase.\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\"move_local_x\".capitalize()   # Returns \"Move Local X\"\n\t\t\t\t\"sceneFile_path\".capitalize() # Returns \"Scene File Path\"\n\t\t\t\t\"2D, FPS, PNG\".capitalize()   # Returns \"2d, Fps, Png\"\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\"move_local_x\".Capitalize();   // Returns \"Move Local X\"\n\t\t\t\t\"sceneFile_path\".Capitalize(); // Returns \"Scene File Path\"\n\t\t\t\t\"2D, FPS, PNG\".Capitalize();   // Returns \"2d, Fps, Png\"\n\t\t\t\t\n\t\t\t\t","returnType":"String"},{"name":"casecmp_to","signature":"casecmp_to(to: String) -> int","description":"Performs a case-sensitive comparison to another string. Returns -1 if less than, 1 if greater than, or 0 if equal. \"Less than\" and \"greater than\" are determined by the [url=https://en.wikipedia.org/wiki/List_of_Unicode_characters]Unicode code points of each string, which roughly matches the alphabetical order.\n\t\t\t\tWith different string lengths, returns 1 if this string is longer than the [param to] string, or -1 if shorter. Note that the length of empty strings is always 0.\n\t\t\t\tTo get a  result from a string comparison, use the == operator instead. See also [method nocasecmp_to], [method filecasecmp_to], and [method naturalcasecmp_to].","returnType":"int"},{"name":"contains","signature":"contains(what: String) -> bool","description":"Returns true if the string contains [param what]. In GDScript, this corresponds to the in operator.\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tprint(\"Node\".contains(\"de\")) # Prints true\n\t\t\t\tprint(\"team\".contains(\"I\"))  # Prints false\n\t\t\t\tprint(\"I\" in \"team\")         # Prints false\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tGD.Print(\"Node\".Contains(\"de\")); // Prints True\n\t\t\t\tGD.Print(\"team\".Contains(\"I\"));  // Prints False\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tIf you need to know where [param what] is within the string, use [method find]. See also [method containsn].","returnType":"bool"},{"name":"containsn","signature":"containsn(what: String) -> bool","description":"Returns true if the string contains [param what], ignoring case.\n\t\t\t\tIf you need to know where [param what] is within the string, use [method findn]. See also [method contains].","returnType":"bool"},{"name":"count","signature":"count(what: String, from: int, to: int) -> int","description":"Returns the number of occurrences of the substring [param what] between [param from] and [param to] positions. If [param to] is 0, the search continues until the end of the string.","returnType":"int"},{"name":"countn","signature":"countn(what: String, from: int, to: int) -> int","description":"Returns the number of occurrences of the substring [param what] between [param from] and [param to] positions, ignoring case. If [param to] is 0, the search continues until the end of the string.","returnType":"int"},{"name":"dedent","signature":"dedent() -> String","description":"Returns a copy of the string with indentation (leading tabs and spaces) removed. See also [method indent] to add indentation.","returnType":"String"},{"name":"ends_with","signature":"ends_with(text: String) -> bool","description":"Returns true if the string ends with the given [param text]. See also [method begins_with].","returnType":"bool"},{"name":"erase","signature":"erase(position: int, chars: int) -> String","description":"Returns a string with [param chars] characters erased starting from [param position]. If [param chars] goes beyond the string's length given the specified [param position], fewer characters will be erased from the returned string. Returns an empty string if either [param position] or [param chars] is negative. Returns the original string unmodified if [param chars] is 0.","returnType":"String"},{"name":"filecasecmp_to","signature":"filecasecmp_to(to: String) -> int","description":"Like [method naturalcasecmp_to] but prioritizes strings that begin with periods (.) and underscores (_) before any other character. Useful when sorting folders or file names.\n\t\t\t\tTo get a  result from a string comparison, use the == operator instead. See also [method filenocasecmp_to], [method naturalcasecmp_to], and [method casecmp_to].","returnType":"int"},{"name":"filenocasecmp_to","signature":"filenocasecmp_to(to: String) -> int","description":"Like [method naturalnocasecmp_to] but prioritizes strings that begin with periods (.) and underscores (_) before any other character. Useful when sorting folders or file names.\n\t\t\t\tTo get a  result from a string comparison, use the == operator instead. See also [method filecasecmp_to], [method naturalnocasecmp_to], and [method nocasecmp_to].","returnType":"int"},{"name":"find","signature":"find(what: String, from: int) -> int","description":"Returns the index of the first occurrence of [param what] in this string, or -1 if there are none. The search's start can be specified with [param from], continuing to the end of the string.\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tprint(\"Team\".find(\"I\")) # Prints -1\n\n\t\t\t\tprint(\"Potato\".find(\"t\"))    # Prints 2\n\t\t\t\tprint(\"Potato\".find(\"t\", 3)) # Prints 4\n\t\t\t\tprint(\"Potato\".find(\"t\", 5)) # Prints -1\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tGD.Print(\"Team\".Find(\"I\")); // Prints -1\n\n\t\t\t\tGD.Print(\"Potato\".Find(\"t\"));    // Prints 2\n\t\t\t\tGD.Print(\"Potato\".Find(\"t\", 3)); // Prints 4\n\t\t\t\tGD.Print(\"Potato\".Find(\"t\", 5)); // Prints -1\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tNote: If you just want to know whether the string contains [param what], use [method contains]. In GDScript, you may also use the in operator.","returnType":"int"},{"name":"findn","signature":"findn(what: String, from: int) -> int","description":"Returns the index of the first case-insensitive occurrence of [param what] in this string, or -1 if there are none. The starting search index can be specified with [param from], continuing to the end of the string.","returnType":"int"},{"name":"format","signature":"format(values: Variant, placeholder: String) -> String","description":"Formats the string by replacing all occurrences of [param placeholder] with the elements of [param values].\n\t\t\t\t[param values] can be a , an , or an . Any underscores in [param placeholder] will be replaced with the corresponding keys in advance. Array elements use their index as keys.\n\t\t\t\t\n\t\t\t\t# Prints \"Waiting for Godot is a play by Samuel Beckett, and Godot Engine is named after it.\"\n\t\t\t\tvar use_array_values = \"Waiting for {0} is a play by {1}, and {0} Engine is named after it.\"\n\t\t\t\tprint(use_array_values.format([\"Godot\", \"Samuel Beckett\"]))\n\n\t\t\t\t# Prints \"User 42 is Godot.\"\n\t\t\t\tprint(\"User {id} is {name}.\".format({\"id\": 42, \"name\": \"Godot\"}))\n\t\t\t\t\n\t\t\t\tSome additional handling is performed when [param values] is an . If [param placeholder] does not contain an underscore, the elements of the [param values] array will be used to replace one occurrence of the placeholder in order; If an element of [param values] is another 2-element array, it'll be interpreted as a key-value pair.\n\t\t\t\t\n\t\t\t\t# Prints \"User 42 is Godot.\"\n\t\t\t\tprint(\"User {} is {}.\".format([42, \"Godot\"], \"{}\"))\n\t\t\t\tprint(\"User {id} is {name}.\".format([[\"id\", 42], [\"name\", \"Godot\"]]))\n\t\t\t\t\n\t\t\t\tWhen passing an , the property names from [method Object.get_property_list] are used as keys.\n\t\t\t\t\n\t\t\t\t# Prints \"Visible true, position (0, 0)\"\n\t\t\t\tvar node = Node2D.new()\n\t\t\t\tprint(\"Visible {visible}, position {position}\".format(node))\n\t\t\t\t\n\t\t\t\tSee also the [url=$DOCS_URL/tutorials/scripting/gdscript/gdscript_format_string.html]GDScript format string tutorial.\n\t\t\t\tNote: Each replacement is done sequentially for each element of [param values], not all at once. This means that if any element is inserted and it contains another placeholder, it may be changed by the next replacement. While this can be very useful, it often causes unexpected results. If not necessary, make sure [param values]'s elements do not contain placeholders.\n\t\t\t\t\n\t\t\t\tprint(\"{0} {1}\".format([\"{1}\", \"x\"]))           # Prints \"x x\"\n\t\t\t\tprint(\"{0} {1}\".format([\"x\", \"{0}\"]))           # Prints \"x {0}\"\n\t\t\t\tprint(\"{a} {b}\".format({\"a\": \"{b}\", \"b\": \"c\"})) # Prints \"c c\"\n\t\t\t\tprint(\"{a} {b}\".format({\"b\": \"c\", \"a\": \"{b}\"})) # Prints \"{b} c\"\n\t\t\t\t\n\t\t\t\tNote: In C#, it's recommended to [url=https://learn.microsoft.com/en-us/dotnet/csharp/language-reference/tokens/interpolated]interpolate strings with \"$\", instead.","returnType":"String"},{"name":"get_base_dir","signature":"get_base_dir() -> String","description":"If the string is a valid file path, returns the base directory name.\n\t\t\t\t\n\t\t\t\tvar dir_path = \"/path/to/file.txt\".get_base_dir() # dir_path is \"/path/to\"\n\t\t\t\t","returnType":"String"},{"name":"get_basename","signature":"get_basename() -> String","description":"If the string is a valid file path, returns the full file path, without the extension.\n\t\t\t\t\n\t\t\t\tvar base = \"/path/to/file.txt\".get_basename() # base is \"/path/to/file\"\n\t\t\t\t","returnType":"String"},{"name":"get_extension","signature":"get_extension() -> String","description":"If the string is a valid file name or path, returns the file extension without the leading period (.). Otherwise, returns an empty string.\n\t\t\t\t\n\t\t\t\tvar a = \"/path/to/file.txt\".get_extension() # a is \"txt\"\n\t\t\t\tvar b = \"cool.txt\".get_extension()          # b is \"txt\"\n\t\t\t\tvar c = \"cool.font.tres\".get_extension()    # c is \"tres\"\n\t\t\t\tvar d = \".pack1\".get_extension()            # d is \"pack1\"\n\n\t\t\t\tvar e = \"file.txt.\".get_extension()  # e is \"\"\n\t\t\t\tvar f = \"file.txt..\".get_extension() # f is \"\"\n\t\t\t\tvar g = \"txt\".get_extension()        # g is \"\"\n\t\t\t\tvar h = \"\".get_extension()           # h is \"\"\n\t\t\t\t","returnType":"String"},{"name":"get_file","signature":"get_file() -> String","description":"If the string is a valid file path, returns the file name, including the extension.\n\t\t\t\t\n\t\t\t\tvar file = \"/path/to/icon.png\".get_file() # file is \"icon.png\"\n\t\t\t\t","returnType":"String"},{"name":"get_slice","signature":"get_slice(delimiter: String, slice: int) -> String","description":"Splits the string using a [param delimiter] and returns the substring at index [param slice]. Returns the original string if [param delimiter] does not occur in the string. Returns an empty string if the [param slice] does not exist.\n\t\t\t\tThis is faster than [method split], if you only need one substring.\n\t\t\t\t\n\t\t\t\tprint(\"i/am/example/hi\".get_slice(\"/\", 2)) # Prints \"example\"\n\t\t\t\t","returnType":"String"},{"name":"get_slice_count","signature":"get_slice_count(delimiter: String) -> int","description":"Returns the total number of slices when the string is split with the given [param delimiter] (see [method split]).","returnType":"int"},{"name":"get_slicec","signature":"get_slicec(delimiter: int, slice: int) -> String","description":"Splits the string using a Unicode character with code [param delimiter] and returns the substring at index [param slice]. Returns an empty string if the [param slice] does not exist.\n\t\t\t\tThis is faster than [method split], if you only need one substring.","returnType":"String"},{"name":"hash","signature":"hash() -> int","description":"Returns the 32-bit hash value representing the string's contents.\n\t\t\t\tNote: Strings with equal hash values are not guaranteed to be the same, as a result of hash collisions. On the contrary, strings with different hash values are guaranteed to be different.","returnType":"int"},{"name":"hex_decode","signature":"hex_decode() -> PackedByteArray","description":"Decodes a hexadecimal string as a .\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tvar text = \"hello world\"\n\t\t\t\tvar encoded = text.to_utf8_buffer().hex_encode() # outputs \"68656c6c6f20776f726c64\"\n\t\t\t\tprint(buf.hex_decode().get_string_from_utf8())\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tvar text = \"hello world\";\n\t\t\t\tvar encoded = text.ToUtf8Buffer().HexEncode(); // outputs \"68656c6c6f20776f726c64\"\n\t\t\t\tGD.Print(buf.HexDecode().GetStringFromUtf8());\n\t\t\t\t\n\t\t\t\t","returnType":"PackedByteArray"},{"name":"hex_to_int","signature":"hex_to_int() -> int","description":"Converts the string representing a hexadecimal number into an . The string may be optionally prefixed with \"0x\", and an additional - prefix for negative numbers.\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tprint(\"0xff\".hex_to_int()) # Prints 255\n\t\t\t\tprint(\"ab\".hex_to_int())   # Prints 171\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tGD.Print(\"0xff\".HexToInt()); // Prints 255\n\t\t\t\tGD.Print(\"ab\".HexToInt());   // Prints 171\n\t\t\t\t\n\t\t\t\t","returnType":"int"},{"name":"indent","signature":"indent(prefix: String) -> String","description":"Indents every line of the string with the given [param prefix]. Empty lines are not indented. See also [method dedent] to remove indentation.\n\t\t\t\tFor example, the string can be indented with two tabulations using \"\\t\\t\", or four spaces using \"    \".","returnType":"String"},{"name":"insert","signature":"insert(position: int, what: String) -> String","description":"Inserts [param what] at the given [param position] in the string.","returnType":"String"},{"name":"is_absolute_path","signature":"is_absolute_path() -> bool","description":"Returns true if the string is a path to a file or directory, and its starting point is explicitly defined. This method is the opposite of [method is_relative_path].\n\t\t\t\tThis includes all paths starting with \"res://\", \"user://\", \"C:\\\", \"/\", etc.","returnType":"bool"},{"name":"is_empty","signature":"is_empty() -> bool","description":"Returns true if the string's length is 0 (\"\"). See also [method length].","returnType":"bool"},{"name":"is_relative_path","signature":"is_relative_path() -> bool","description":"Returns true if the string is a path, and its starting point is dependent on context. The path could begin from the current directory, or the current  (if the string is derived from a ), and may sometimes be prefixed with \"./\". This method is the opposite of [method is_absolute_path].","returnType":"bool"},{"name":"is_subsequence_of","signature":"is_subsequence_of(text: String) -> bool","description":"Returns true if all characters of this string can be found in [param text] in their original order.\n\t\t\t\t\n\t\t\t\tvar text = \"Wow, incredible!\"\n\n\t\t\t\tprint(\"inedible\".is_subsequence_of(text)) # Prints true\n\t\t\t\tprint(\"Word!\".is_subsequence_of(text))    # Prints true\n\t\t\t\tprint(\"Window\".is_subsequence_of(text))   # Prints false\n\t\t\t\tprint(\"\".is_subsequence_of(text))         # Prints true\n\t\t\t\t","returnType":"bool"},{"name":"is_subsequence_ofn","signature":"is_subsequence_ofn(text: String) -> bool","description":"Returns true if all characters of this string can be found in [param text] in their original order, ignoring case.","returnType":"bool"},{"name":"is_valid_ascii_identifier","signature":"is_valid_ascii_identifier() -> bool","description":"Returns true if this string is a valid ASCII identifier. A valid ASCII identifier may contain only letters, digits, and underscores (_), and the first character may not be a digit.\n\t\t\t\t\n\t\t\t\tprint(\"node_2d\".is_valid_ascii_identifier())    # Prints true\n\t\t\t\tprint(\"TYPE_FLOAT\".is_valid_ascii_identifier()) # Prints true\n\t\t\t\tprint(\"1st_method\".is_valid_ascii_identifier()) # Prints false\n\t\t\t\tprint(\"MyMethod#2\".is_valid_ascii_identifier()) # Prints false\n\t\t\t\t\n\t\t\t\tSee also [method is_valid_unicode_identifier].","returnType":"bool"},{"name":"is_valid_filename","signature":"is_valid_filename() -> bool","description":"Returns true if this string does not contain characters that are not allowed in file names (: / \\ ? * \" | % &lt; &gt;).","returnType":"bool"},{"name":"is_valid_float","signature":"is_valid_float() -> bool","description":"Returns true if this string represents a valid floating-point number. A valid float may contain only digits, one decimal point (.), and the exponent letter (e). It may also be prefixed with a positive (+) or negative (-) sign. Any valid integer is also a valid float (see [method is_valid_int]). See also [method to_float].\n\t\t\t\t\n\t\t\t\tprint(\"1.7\".is_valid_float())   # Prints true\n\t\t\t\tprint(\"24\".is_valid_float())    # Prints true\n\t\t\t\tprint(\"7e3\".is_valid_float())   # Prints true\n\t\t\t\tprint(\"Hello\".is_valid_float()) # Prints false\n\t\t\t\t","returnType":"bool"},{"name":"is_valid_hex_number","signature":"is_valid_hex_number(with_prefix: bool) -> bool","description":"Returns true if this string is a valid hexadecimal number. A valid hexadecimal number only contains digits or letters A to F (either uppercase or lowercase), and may be prefixed with a positive (+) or negative (-) sign.\n\t\t\t\tIf [param with_prefix] is true, the hexadecimal number needs to prefixed by \"0x\" to be considered valid.\n\t\t\t\t\n\t\t\t\tprint(\"A08E\".is_valid_hex_number())    # Prints true\n\t\t\t\tprint(\"-AbCdEf\".is_valid_hex_number()) # Prints true\n\t\t\t\tprint(\"2.5\".is_valid_hex_number())     # Prints false\n\n\t\t\t\tprint(\"0xDEADC0DE\".is_valid_hex_number(true)) # Prints true\n\t\t\t\t","returnType":"bool"},{"name":"is_valid_html_color","signature":"is_valid_html_color() -> bool","description":"Returns true if this string is a valid color in hexadecimal HTML notation. The string must be a hexadecimal value (see [method is_valid_hex_number]) of either 3, 4, 6 or 8 digits, and may be prefixed by a hash sign (#). Other HTML notations for colors, such as names or hsl(), are not considered valid. See also [method Color.html].","returnType":"bool"},{"name":"is_valid_identifier","signature":"is_valid_identifier() -> bool","description":"Returns true if this string is a valid identifier. A valid identifier may contain only letters, digits and underscores (_), and the first character may not be a digit.\n\t\t\t\t\n\t\t\t\tprint(\"node_2d\".is_valid_identifier())    # Prints true\n\t\t\t\tprint(\"TYPE_FLOAT\".is_valid_identifier()) # Prints true\n\t\t\t\tprint(\"1st_method\".is_valid_identifier()) # Prints false\n\t\t\t\tprint(\"MyMethod#2\".is_valid_identifier()) # Prints false\n\t\t\t\t","returnType":"bool"},{"name":"is_valid_int","signature":"is_valid_int() -> bool","description":"Returns true if this string represents a valid integer. A valid integer only contains digits, and may be prefixed with a positive (+) or negative (-) sign. See also [method to_int].\n\t\t\t\t\n\t\t\t\tprint(\"7\".is_valid_int())    # Prints true\n\t\t\t\tprint(\"1.65\".is_valid_int()) # Prints false\n\t\t\t\tprint(\"Hi\".is_valid_int())   # Prints false\n\t\t\t\tprint(\"+3\".is_valid_int())   # Prints true\n\t\t\t\tprint(\"-12\".is_valid_int())  # Prints true\n\t\t\t\t","returnType":"bool"},{"name":"is_valid_ip_address","signature":"is_valid_ip_address() -> bool","description":"Returns true if this string represents a well-formatted IPv4 or IPv6 address. This method considers [url=https://en.wikipedia.org/wiki/Reserved_IP_addresses]reserved IP addresses such as \"0.0.0.0\" and \"ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff\" as valid.","returnType":"bool"},{"name":"is_valid_unicode_identifier","signature":"is_valid_unicode_identifier() -> bool","description":"Returns true if this string is a valid Unicode identifier.\n\t\t\t\tA valid Unicode identifier must begin with a Unicode character of class XID_Start or \"_\", and may contain Unicode characters of class XID_Continue in the other positions.\n\t\t\t\t\n\t\t\t\tprint(\"node_2d\".is_valid_unicode_identifier())      # Prints true\n\t\t\t\tprint(\"1st_method\".is_valid_unicode_identifier())   # Prints false\n\t\t\t\tprint(\"MyMethod#2\".is_valid_unicode_identifier())   # Prints false\n\t\t\t\tprint(\"állóképesség\".is_valid_unicode_identifier()) # Prints true\n\t\t\t\tprint(\"выносливость\".is_valid_unicode_identifier()) # Prints true\n\t\t\t\tprint(\"体力\".is_valid_unicode_identifier())         # Prints true\n\t\t\t\t\n\t\t\t\tSee also [method is_valid_ascii_identifier].\n\t\t\t\tNote: This method checks identifiers the same way as GDScript. See [method TextServer.is_valid_identifier] for more advanced checks.","returnType":"bool"},{"name":"join","signature":"join(parts: PackedStringArray) -> String","description":"Returns the concatenation of [param parts]' elements, with each element separated by the string calling this method. This method is the opposite of [method split].\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tvar fruits = [\"Apple\", \"Orange\", \"Pear\", \"Kiwi\"]\n\n\t\t\t\tprint(\", \".join(fruits))  # Prints \"Apple, Orange, Pear, Kiwi\"\n\t\t\t\tprint(\"---\".join(fruits)) # Prints \"Apple---Orange---Pear---Kiwi\"\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tstring[] fruits = [\"Apple\", \"Orange\", \"Pear\", \"Kiwi\"];\n\n\t\t\t\t// In C#, this method is static.\n\t\t\t\tGD.Print(string.Join(\", \", fruits));  // Prints \"Apple, Orange, Pear, Kiwi\"\n\t\t\t\tGD.Print(string.Join(\"---\", fruits)); // Prints \"Apple---Orange---Pear---Kiwi\"\n\t\t\t\t\n\t\t\t\t","returnType":"String"},{"name":"json_escape","signature":"json_escape() -> String","description":"Returns a copy of the string with special characters escaped using the JSON standard. Because it closely matches the C standard, it is possible to use [method c_unescape] to unescape the string, if necessary.","returnType":"String"},{"name":"left","signature":"left(length: int) -> String","description":"Returns the first [param length] characters from the beginning of the string. If [param length] is negative, strips the last [param length] characters from the string's end.\n\t\t\t\t\n\t\t\t\tprint(\"Hello World!\".left(3))  # Prints \"Hel\"\n\t\t\t\tprint(\"Hello World!\".left(-4)) # Prints \"Hello Wo\"\n\t\t\t\t","returnType":"String"},{"name":"length","signature":"length() -> int","description":"Returns the number of characters in the string. Empty strings (\"\") always return 0. See also [method is_empty].","returnType":"int"},{"name":"lpad","signature":"lpad(min_length: int, character: String) -> String","description":"Formats the string to be at least [param min_length] long by adding [param character]s to the left of the string, if necessary. See also [method rpad].","returnType":"String"},{"name":"lstrip","signature":"lstrip(chars: String) -> String","description":"Removes a set of characters defined in [param chars] from the string's beginning. See also [method rstrip].\n\t\t\t\tNote: [param chars] is not a prefix. Use [method trim_prefix] to remove a single prefix, rather than a set of characters.","returnType":"String"},{"name":"match","signature":"match(expr: String) -> bool","description":"Does a simple expression match (also called \"glob\" or \"globbing\"), where * matches zero or more arbitrary characters and ? matches any single character except a period (.). An empty string or empty expression always evaluates to false.","returnType":"bool"},{"name":"matchn","signature":"matchn(expr: String) -> bool","description":"Does a simple case-insensitive expression match, where * matches zero or more arbitrary characters and ? matches any single character except a period (.). An empty string or empty expression always evaluates to false.","returnType":"bool"},{"name":"md5_buffer","signature":"md5_buffer() -> PackedByteArray","description":"Returns the [url=https://en.wikipedia.org/wiki/MD5]MD5 hash of the string as a .","returnType":"PackedByteArray"},{"name":"md5_text","signature":"md5_text() -> String","description":"Returns the [url=https://en.wikipedia.org/wiki/MD5]MD5 hash of the string as another .","returnType":"String"},{"name":"naturalcasecmp_to","signature":"naturalcasecmp_to(to: String) -> int","description":"Performs a case-sensitive, natural order comparison to another string. Returns -1 if less than, 1 if greater than, or 0 if equal. \"Less than\" or \"greater than\" are determined by the [url=https://en.wikipedia.org/wiki/List_of_Unicode_characters]Unicode code points of each string, which roughly matches the alphabetical order.\n\t\t\t\tWhen used for sorting, natural order comparison orders sequences of numbers by the combined value of each digit as is often expected, instead of the single digit's value. A sorted sequence of numbered strings will be [\"1\", \"2\", \"3\", ...], not [\"1\", \"10\", \"2\", \"3\", ...].\n\t\t\t\tWith different string lengths, returns 1 if this string is longer than the [param to] string, or -1 if shorter. Note that the length of empty strings is always 0.\n\t\t\t\tTo get a  result from a string comparison, use the == operator instead. See also [method naturalnocasecmp_to], [method filecasecmp_to], and [method nocasecmp_to].","returnType":"int"},{"name":"naturalnocasecmp_to","signature":"naturalnocasecmp_to(to: String) -> int","description":"Performs a case-insensitive, natural order comparison to another string. Returns -1 if less than, 1 if greater than, or 0 if equal. \"Less than\" or \"greater than\" are determined by the [url=https://en.wikipedia.org/wiki/List_of_Unicode_characters]Unicode code points of each string, which roughly matches the alphabetical order. Internally, lowercase characters are converted to uppercase for the comparison.\n\t\t\t\tWhen used for sorting, natural order comparison orders sequences of numbers by the combined value of each digit as is often expected, instead of the single digit's value. A sorted sequence of numbered strings will be [\"1\", \"2\", \"3\", ...], not [\"1\", \"10\", \"2\", \"3\", ...].\n\t\t\t\tWith different string lengths, returns 1 if this string is longer than the [param to] string, or -1 if shorter. Note that the length of empty strings is always 0.\n\t\t\t\tTo get a  result from a string comparison, use the == operator instead. See also [method naturalcasecmp_to], [method filenocasecmp_to], and [method casecmp_to].","returnType":"int"},{"name":"nocasecmp_to","signature":"nocasecmp_to(to: String) -> int","description":"Performs a case-insensitive comparison to another string. Returns -1 if less than, 1 if greater than, or 0 if equal. \"Less than\" or \"greater than\" are determined by the [url=https://en.wikipedia.org/wiki/List_of_Unicode_characters]Unicode code points of each string, which roughly matches the alphabetical order. Internally, lowercase characters are converted to uppercase for the comparison.\n\t\t\t\tWith different string lengths, returns 1 if this string is longer than the [param to] string, or -1 if shorter. Note that the length of empty strings is always 0.\n\t\t\t\tTo get a  result from a string comparison, use the == operator instead. See also [method casecmp_to], [method filenocasecmp_to], and [method naturalnocasecmp_to].","returnType":"int"},{"name":"pad_decimals","signature":"pad_decimals(digits: int) -> String","description":"Formats the string representing a number to have an exact number of [param digits] after the decimal point.","returnType":"String"},{"name":"pad_zeros","signature":"pad_zeros(digits: int) -> String","description":"Formats the string representing a number to have an exact number of [param digits] before the decimal point.","returnType":"String"},{"name":"path_join","signature":"path_join(file: String) -> String","description":"Concatenates [param file] at the end of the string as a subpath, adding / if necessary.\n\t\t\t\tExample: \"this/is\".path_join(\"path\") == \"this/is/path\".","returnType":"String"},{"name":"repeat","signature":"repeat(count: int) -> String","description":"Repeats this string a number of times. [param count] needs to be greater than 0. Otherwise, returns an empty string.","returnType":"String"},{"name":"replace","signature":"replace(what: String, forwhat: String) -> String","description":"Replaces all occurrences of [param what] inside the string with the given [param forwhat].","returnType":"String"},{"name":"replacen","signature":"replacen(what: String, forwhat: String) -> String","description":"Replaces all case-insensitive occurrences of [param what] inside the string with the given [param forwhat].","returnType":"String"},{"name":"reverse","signature":"reverse() -> String","description":"Returns the copy of this string in reverse order. This operation works on unicode codepoints, rather than sequences of codepoints, and may break things like compound letters or emojis.","returnType":"String"},{"name":"rfind","signature":"rfind(what: String, from: int) -> int","description":"Returns the index of the last occurrence of [param what] in this string, or -1 if there are none. The search's start can be specified with [param from], continuing to the beginning of the string. This method is the reverse of [method find].","returnType":"int"},{"name":"rfindn","signature":"rfindn(what: String, from: int) -> int","description":"Returns the index of the last case-insensitive occurrence of [param what] in this string, or -1 if there are none. The starting search index can be specified with [param from], continuing to the beginning of the string. This method is the reverse of [method findn].","returnType":"int"},{"name":"right","signature":"right(length: int) -> String","description":"Returns the last [param length] characters from the end of the string. If [param length] is negative, strips the first [param length] characters from the string's beginning.\n\t\t\t\t\n\t\t\t\tprint(\"Hello World!\".right(3))  # Prints \"ld!\"\n\t\t\t\tprint(\"Hello World!\".right(-4)) # Prints \"o World!\"\n\t\t\t\t","returnType":"String"},{"name":"rpad","signature":"rpad(min_length: int, character: String) -> String","description":"Formats the string to be at least [param min_length] long, by adding [param character]s to the right of the string, if necessary. See also [method lpad].","returnType":"String"},{"name":"rsplit","signature":"rsplit(delimiter: String, allow_empty: bool, maxsplit: int) -> PackedStringArray","description":"Splits the string using a [param delimiter] and returns an array of the substrings, starting from the end of the string. The splits in the returned array appear in the same order as the original string. If [param delimiter] is an empty string, each substring will be a single character.\n\t\t\t\tIf [param allow_empty] is false, empty strings between adjacent delimiters are excluded from the array.\n\t\t\t\tIf [param maxsplit] is greater than 0, the number of splits may not exceed [param maxsplit]. By default, the entire string is split, which is mostly identical to [method split].\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tvar some_string = \"One,Two,Three,Four\"\n\t\t\t\tvar some_array = some_string.rsplit(\",\", true, 1)\n\n\t\t\t\tprint(some_array.size()) # Prints 2\n\t\t\t\tprint(some_array)     # Prints \"One,Two,Three\"\n\t\t\t\tprint(some_array)     # Prints \"Four\"\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t// In C#, there is no String.RSplit() method.\n\t\t\t\t\n\t\t\t\t","returnType":"PackedStringArray"},{"name":"rstrip","signature":"rstrip(chars: String) -> String","description":"Removes a set of characters defined in [param chars] from the string's end. See also [method lstrip].\n\t\t\t\tNote: [param chars] is not a suffix. Use [method trim_suffix] to remove a single suffix, rather than a set of characters.","returnType":"String"},{"name":"sha1_buffer","signature":"sha1_buffer() -> PackedByteArray","description":"Returns the [url=https://en.wikipedia.org/wiki/SHA-1]SHA-1 hash of the string as a .","returnType":"PackedByteArray"},{"name":"sha1_text","signature":"sha1_text() -> String","description":"Returns the [url=https://en.wikipedia.org/wiki/SHA-1]SHA-1 hash of the string as another .","returnType":"String"},{"name":"sha256_buffer","signature":"sha256_buffer() -> PackedByteArray","description":"Returns the [url=https://en.wikipedia.org/wiki/SHA-2]SHA-256 hash of the string as a .","returnType":"PackedByteArray"},{"name":"sha256_text","signature":"sha256_text() -> String","description":"Returns the [url=https://en.wikipedia.org/wiki/SHA-2]SHA-256 hash of the string as another .","returnType":"String"},{"name":"similarity","signature":"similarity(text: String) -> float","description":"Returns the similarity index ([url=https://en.wikipedia.org/wiki/S%C3%B8rensen%E2%80%93Dice_coefficient]Sørensen-Dice coefficient) of this string compared to another. A result of 1.0 means totally similar, while 0.0 means totally dissimilar.\n\t\t\t\t\n\t\t\t\tprint(\"ABC123\".similarity(\"ABC123\")) # Prints 1.0\n\t\t\t\tprint(\"ABC123\".similarity(\"XYZ456\")) # Prints 0.0\n\t\t\t\tprint(\"ABC123\".similarity(\"123ABC\")) # Prints 0.8\n\t\t\t\tprint(\"ABC123\".similarity(\"abc123\")) # Prints 0.4\n\t\t\t\t","returnType":"float"},{"name":"simplify_path","signature":"simplify_path() -> String","description":"If the string is a valid file path, converts the string into a canonical path. This is the shortest possible path, without \"./\", and all the unnecessary \"..\" and \"/\".\n\t\t\t\t\n\t\t\t\tvar simple_path = \"./path/to///../file\".simplify_path()\n\t\t\t\tprint(simple_path) # Prints \"path/file\"\n\t\t\t\t","returnType":"String"},{"name":"split","signature":"split(delimiter: String, allow_empty: bool, maxsplit: int) -> PackedStringArray","description":"Splits the string using a [param delimiter] and returns an array of the substrings. If [param delimiter] is an empty string, each substring will be a single character. This method is the opposite of [method join].\n\t\t\t\tIf [param allow_empty] is false, empty strings between adjacent delimiters are excluded from the array.\n\t\t\t\tIf [param maxsplit] is greater than 0, the number of splits may not exceed [param maxsplit]. By default, the entire string is split.\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tvar some_array = \"One,Two,Three,Four\".split(\",\", true, 2)\n\n\t\t\t\tprint(some_array.size()) # Prints 3\n\t\t\t\tprint(some_array)     # Prints \"One\"\n\t\t\t\tprint(some_array)     # Prints \"Two\"\n\t\t\t\tprint(some_array)     # Prints \"Three,Four\"\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t// C#'s `Split()` does not support the `maxsplit` parameter.\n\t\t\t\tvar someArray = \"One,Two,Three\".Split(\",\");\n\n\t\t\t\tGD.Print(someArray); // Prints \"One\"\n\t\t\t\tGD.Print(someArray); // Prints \"Two\"\n\t\t\t\tGD.Print(someArray); // Prints \"Three\"\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tNote: If you only need one substring from the array, consider using [method get_slice] which is faster. If you need to split strings with more complex rules, use the  class instead.","returnType":"PackedStringArray"},{"name":"split_floats","signature":"split_floats(delimiter: String, allow_empty: bool) -> PackedFloat64Array","description":"Splits the string into floats by using a [param delimiter] and returns a .\n\t\t\t\tIf [param allow_empty] is false, empty or invalid  conversions between adjacent delimiters are excluded.\n\t\t\t\t\n\t\t\t\tvar a = \"1,2,4.5\".split_floats(\",\")         # a is [1.0, 2.0, 4.5]\n\t\t\t\tvar c = \"1| ||4.5\".split_floats(\"|\")        # c is [1.0, 0.0, 0.0, 4.5]\n\t\t\t\tvar b = \"1| ||4.5\".split_floats(\"|\", false) # b is [1.0, 4.5]\n\t\t\t\t","returnType":"PackedFloat64Array"},{"name":"strip_edges","signature":"strip_edges(left: bool, right: bool) -> String","description":"Strips all non-printable characters from the beginning and the end of the string. These include spaces, tabulations (\\t), and newlines (\\n \\r).\n\t\t\t\tIf [param left] is false, ignores the string's beginning. Likewise, if [param right] is false, ignores the string's end.","returnType":"String"},{"name":"strip_escapes","signature":"strip_escapes() -> String","description":"Strips all escape characters from the string. These include all non-printable control characters of the first page of the ASCII table (values from 0 to 31), such as tabulation (\\t) and newline (\\n, \\r) characters, but not spaces.","returnType":"String"},{"name":"substr","signature":"substr(from: int, len: int) -> String","description":"Returns part of the string from the position [param from] with length [param len]. If [param len] is -1 (as by default), returns the rest of the string starting from the given position.","returnType":"String"},{"name":"to_ascii_buffer","signature":"to_ascii_buffer() -> PackedByteArray","description":"Converts the string to an [url=https://en.wikipedia.org/wiki/ASCII]ASCII/Latin-1 encoded . This method is slightly faster than [method to_utf8_buffer], but replaces all unsupported characters with spaces. This is the inverse of [method PackedByteArray.get_string_from_ascii].","returnType":"PackedByteArray"},{"name":"to_camel_case","signature":"to_camel_case() -> String","description":"Returns the string converted to camelCase.","returnType":"String"},{"name":"to_float","signature":"to_float() -> float","description":"Converts the string representing a decimal number into a . This method stops on the first non-number character, except the first decimal point (.) and the exponent letter (e). See also [method is_valid_float].\n\t\t\t\t\n\t\t\t\tvar a = \"12.35\".to_float()  # a is 12.35\n\t\t\t\tvar b = \"1.2.3\".to_float()  # b is 1.2\n\t\t\t\tvar c = \"12xy3\".to_float()  # c is 12.0\n\t\t\t\tvar d = \"1e3\".to_float()    # d is 1000.0\n\t\t\t\tvar e = \"Hello!\".to_float() # e is 0.0\n\t\t\t\t","returnType":"float"},{"name":"to_int","signature":"to_int() -> int","description":"Converts the string representing an integer number into an . This method removes any non-number character and stops at the first decimal point (.). See also [method is_valid_int].\n\t\t\t\t\n\t\t\t\tvar a = \"123\".to_int()    # a is 123\n\t\t\t\tvar b = \"x1y2z3\".to_int() # b is 123\n\t\t\t\tvar c = \"-1.2.3\".to_int() # c is -1\n\t\t\t\tvar d = \"Hello!\".to_int() # d is 0\n\t\t\t\t","returnType":"int"},{"name":"to_lower","signature":"to_lower() -> String","description":"Returns the string converted to lowercase.","returnType":"String"},{"name":"to_pascal_case","signature":"to_pascal_case() -> String","description":"Returns the string converted to PascalCase.","returnType":"String"},{"name":"to_snake_case","signature":"to_snake_case() -> String","description":"Returns the string converted to snake_case.\n\t\t\t\tNote: Numbers followed by a single letter are not separated in the conversion to keep some words (such as \"2D\") together.\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\"Node2D\".to_snake_case()               # Returns \"node_2d\"\n\t\t\t\t\"2nd place\".to_snake_case()            # Returns \"2_nd_place\"\n\t\t\t\t\"Texture3DAssetFolder\".to_snake_case() # Returns \"texture_3d_asset_folder\"\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\"Node2D\".ToSnakeCase();               // Returns \"node_2d\"\n\t\t\t\t\"2nd place\".ToSnakeCase();            // Returns \"2_nd_place\"\n\t\t\t\t\"Texture3DAssetFolder\".ToSnakeCase(); // Returns \"texture_3d_asset_folder\"\n\t\t\t\t\n\t\t\t\t","returnType":"String"},{"name":"to_upper","signature":"to_upper() -> String","description":"Returns the string converted to UPPERCASE.","returnType":"String"},{"name":"to_utf8_buffer","signature":"to_utf8_buffer() -> PackedByteArray","description":"Converts the string to a [url=https://en.wikipedia.org/wiki/UTF-8]UTF-8 encoded . This method is slightly slower than [method to_ascii_buffer], but supports all UTF-8 characters. For most cases, prefer using this method. This is the inverse of [method PackedByteArray.get_string_from_utf8].","returnType":"PackedByteArray"},{"name":"to_utf16_buffer","signature":"to_utf16_buffer() -> PackedByteArray","description":"Converts the string to a [url=https://en.wikipedia.org/wiki/UTF-16]UTF-16 encoded . This is the inverse of [method PackedByteArray.get_string_from_utf16].","returnType":"PackedByteArray"},{"name":"to_utf32_buffer","signature":"to_utf32_buffer() -> PackedByteArray","description":"Converts the string to a [url=https://en.wikipedia.org/wiki/UTF-32]UTF-32 encoded . This is the inverse of [method PackedByteArray.get_string_from_utf32].","returnType":"PackedByteArray"},{"name":"to_wchar_buffer","signature":"to_wchar_buffer() -> PackedByteArray","description":"Converts the string to a [url=https://en.wikipedia.org/wiki/Wide_character]wide character (wchar_t, UTF-16 on Windows, UTF-32 on other platforms) encoded . This is the inverse of [method PackedByteArray.get_string_from_wchar].","returnType":"PackedByteArray"},{"name":"trim_prefix","signature":"trim_prefix(prefix: String) -> String","description":"Removes the given [param prefix] from the start of the string, or returns the string unchanged.","returnType":"String"},{"name":"trim_suffix","signature":"trim_suffix(suffix: String) -> String","description":"Removes the given [param suffix] from the end of the string, or returns the string unchanged.","returnType":"String"},{"name":"unicode_at","signature":"unicode_at(at: int) -> int","description":"Returns the character code at position [param at].","returnType":"int"},{"name":"uri_decode","signature":"uri_decode() -> String","description":"Decodes the string from its URL-encoded format. This method is meant to properly decode the parameters in a URL when receiving an HTTP request. See also [method uri_encode].\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tvar url = \"$DOCS_URL/?highlight=Godot%20Engine%3%docs\"\n\t\t\t\tprint(url.uri_decode()) # Prints \"$DOCS_URL/?highlight=Godot Engine:docs\"\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tvar url = \"$DOCS_URL/?highlight=Godot%20Engine%3%docs\"\n\t\t\t\tGD.Print(url.URIDecode()) // Prints \"$DOCS_URL/?highlight=Godot Engine:docs\"\n\t\t\t\t\n\t\t\t\t","returnType":"String"},{"name":"uri_encode","signature":"uri_encode() -> String","description":"Encodes the string to URL-friendly format. This method is meant to properly encode the parameters in a URL when sending an HTTP request. See also [method uri_decode].\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tvar prefix = \"$DOCS_URL/?highlight=\"\n\t\t\t\tvar url = prefix + \"Godot Engine:docs\".uri_encode()\n\n\t\t\t\tprint(url) # Prints \"$DOCS_URL/?highlight=Godot%20Engine%3%docs\"\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tvar prefix = \"$DOCS_URL/?highlight=\";\n\t\t\t\tvar url = prefix + \"Godot Engine:docs\".URIEncode();\n\n\t\t\t\tGD.Print(url); // Prints \"$DOCS_URL/?highlight=Godot%20Engine%3%docs\"\n\t\t\t\t\n\t\t\t\t","returnType":"String"},{"name":"validate_filename","signature":"validate_filename() -> String","description":"Returns a copy of the string with all characters that are not allowed in [method is_valid_filename] replaced with underscores.","returnType":"String"},{"name":"validate_node_name","signature":"validate_node_name() -> String","description":"Returns a copy of the string with all characters that are not allowed in [member Node.name] (. : @ / \" %) replaced with underscores.","returnType":"String"},{"name":"xml_escape","signature":"xml_escape(escape_quotes: bool) -> String","description":"Returns a copy of the string with special characters escaped using the XML standard. If [param escape_quotes] is true, the single quote (') and double quote (\") characters are also escaped.","returnType":"String"},{"name":"xml_unescape","signature":"xml_unescape() -> String","description":"Returns a copy of the string with escaped characters replaced by their meanings according to the XML standard.","returnType":"String"}],"signals":[]},"StyleBox":{"name":"StyleBox","description":"Abstract base class for defining stylized boxes for UI elements.","inherits":"Resource","properties":[{"name":"content_margin_bottom","type":"float","description":"The bottom margin for the contents of this style box. Increasing this value reduces the space available to the contents from the bottom.\n\t\t\tIf this value is negative, it is ignored and a child-specific margin is used instead. For example, for [StyleBoxFlat], the border thickness (if any) is used instead.\n\t\t\tIt is up to the code using this style box to decide what these contents are: for example, a [Button] respects this content margin for the textual contents of the button.\n\t\t\t[method get_margin] should be used to fetch this value as consumer instead of reading these properties directly. This is because it correctly respects negative values and the fallback mentioned above."},{"name":"content_margin_left","type":"float","description":"The left margin for the contents of this style box. Increasing this value reduces the space available to the contents from the left.\n\t\t\tRefer to [member content_margin_bottom] for extra considerations."},{"name":"content_margin_right","type":"float","description":"The right margin for the contents of this style box. Increasing this value reduces the space available to the contents from the right.\n\t\t\tRefer to [member content_margin_bottom] for extra considerations."},{"name":"content_margin_top","type":"float","description":"The top margin for the contents of this style box. Increasing this value reduces the space available to the contents from the top.\n\t\t\tRefer to [member content_margin_bottom] for extra considerations."}],"methods":[{"name":"_draw","signature":"_draw(to_canvas_item: RID, rect: Rect2) -> void","description":"","returnType":"void"},{"name":"_get_draw_rect","signature":"_get_draw_rect(rect: Rect2) -> Rect2","description":"","returnType":"Rect2"},{"name":"_get_minimum_size","signature":"_get_minimum_size() -> Vector2","description":"Virtual method to be implemented by the user. Returns a custom minimum size that the stylebox must respect when drawing. By default [method get_minimum_size] only takes content margins into account. This method can be overridden to add another size restriction. A combination of the default behavior and the output of this method will be used, to account for both sizes.","returnType":"Vector2"},{"name":"_test_mask","signature":"_test_mask(point: Vector2, rect: Rect2) -> bool","description":"","returnType":"bool"},{"name":"draw","signature":"draw(canvas_item: RID, rect: Rect2) -> void","description":"Draws this stylebox using a canvas item identified by the given .\n\t\t\t\tThe  value can either be the result of [method CanvasItem.get_canvas_item] called on an existing -derived node, or directly from creating a canvas item in the  with [method RenderingServer.canvas_item_create].","returnType":"void"},{"name":"get_content_margin","signature":"get_content_margin(margin: int) -> float","description":"Returns the default margin of the specified [enum Side].","returnType":"float"},{"name":"get_current_item_drawn","signature":"get_current_item_drawn() -> CanvasItem","description":"Returns the  that handles its [constant CanvasItem.NOTIFICATION_DRAW] or [method CanvasItem._draw] callback at this moment.","returnType":"CanvasItem"},{"name":"get_margin","signature":"get_margin(margin: int) -> float","description":"Returns the content margin offset for the specified [enum Side].\n\t\t\t\tPositive values reduce size inwards, unlike 's margin values.","returnType":"float"},{"name":"get_minimum_size","signature":"get_minimum_size() -> Vector2","description":"Returns the minimum size that this stylebox can be shrunk to.","returnType":"Vector2"},{"name":"get_offset","signature":"get_offset() -> Vector2","description":"Returns the \"offset\" of a stylebox. This helper function returns a value equivalent to Vector2(style.get_margin(MARGIN_LEFT), style.get_margin(MARGIN_TOP)).","returnType":"Vector2"},{"name":"set_content_margin","signature":"set_content_margin(margin: int, offset: float) -> void","description":"Sets the default value of the specified [enum Side] to [param offset] pixels.","returnType":"void"},{"name":"set_content_margin_all","signature":"set_content_margin_all(offset: float) -> void","description":"Sets the default margin to [param offset] pixels for all sides.","returnType":"void"},{"name":"test_mask","signature":"test_mask(point: Vector2, rect: Rect2) -> bool","description":"Test a position in a rectangle, return whether it passes the mask test.","returnType":"bool"}],"signals":[]},"StyleBoxEmpty":{"name":"StyleBoxEmpty","description":"An empty  (does not display anything).","inherits":"StyleBox","properties":[],"methods":[],"signals":[]},"StyleBoxFlat":{"name":"StyleBoxFlat","description":"A customizable  that doesn't use a texture.","inherits":"StyleBox","properties":[{"name":"anti_aliasing","type":"bool","description":"Antialiasing draws a small ring around the edges, which fades to transparency. As a result, edges look much smoother. This is only noticeable when using rounded corners or [member skew].\n\t\t\t[b]Note:[/b] When using beveled corners with 45-degree angles ([member corner_detail] = 1), it is recommended to set [member anti_aliasing] to [code]false[/code] to ensure crisp visuals and avoid possible visual glitches."},{"name":"anti_aliasing_size","type":"float","description":"This changes the size of the antialiasing effect. [code]1.0[/code] is recommended for an optimal result at 100% scale, identical to how rounded rectangles are rendered in web browsers and most vector drawing software.\n\t\t\t[b]Note:[/b] Higher values may produce a blur effect but can also create undesired artifacts on small boxes with large-radius corners."},{"name":"bg_color","type":"Color","description":"The background color of the stylebox."},{"name":"border_blend","type":"bool","description":"If [code]true[/code], the border will fade into the background color."},{"name":"border_color","type":"Color","description":"Sets the color of the border."},{"name":"border_width_bottom","type":"int","description":"Border width for the bottom border."},{"name":"border_width_left","type":"int","description":"Border width for the left border."},{"name":"border_width_right","type":"int","description":"Border width for the right border."},{"name":"border_width_top","type":"int","description":"Border width for the top border."},{"name":"corner_detail","type":"int","description":"This sets the number of vertices used for each corner. Higher values result in rounder corners but take more processing power to compute. When choosing a value, you should take the corner radius ([method set_corner_radius_all]) into account.\n\t\t\tFor corner radii less than 10, [code]4[/code] or [code]5[/code] should be enough. For corner radii less than 30, values between [code]8[/code] and [code]12[/code] should be enough.\n\t\t\tA corner detail of [code]1[/code] will result in chamfered corners instead of rounded corners, which is useful for some artistic effects."},{"name":"corner_radius_bottom_left","type":"int","description":"The bottom-left corner's radius. If [code]0[/code], the corner is not rounded."},{"name":"corner_radius_bottom_right","type":"int","description":"The bottom-right corner's radius. If [code]0[/code], the corner is not rounded."},{"name":"corner_radius_top_left","type":"int","description":"The top-left corner's radius. If [code]0[/code], the corner is not rounded."},{"name":"corner_radius_top_right","type":"int","description":"The top-right corner's radius. If [code]0[/code], the corner is not rounded."},{"name":"draw_center","type":"bool","description":"Toggles drawing of the inner part of the stylebox."},{"name":"expand_margin_bottom","type":"float","description":"Expands the stylebox outside of the control rect on the bottom edge. Useful in combination with [member border_width_bottom] to draw a border outside the control rect.\n\t\t\t[b]Note:[/b] Unlike [member StyleBox.content_margin_bottom], [member expand_margin_bottom] does [i]not[/i] affect the size of the clickable area for [Control]s. This can negatively impact usability if used wrong, as the user may try to click an area of the StyleBox that cannot actually receive clicks."},{"name":"expand_margin_left","type":"float","description":"Expands the stylebox outside of the control rect on the left edge. Useful in combination with [member border_width_left] to draw a border outside the control rect.\n\t\t\t[b]Note:[/b] Unlike [member StyleBox.content_margin_left], [member expand_margin_left] does [i]not[/i] affect the size of the clickable area for [Control]s. This can negatively impact usability if used wrong, as the user may try to click an area of the StyleBox that cannot actually receive clicks."},{"name":"expand_margin_right","type":"float","description":"Expands the stylebox outside of the control rect on the right edge. Useful in combination with [member border_width_right] to draw a border outside the control rect.\n\t\t\t[b]Note:[/b] Unlike [member StyleBox.content_margin_right], [member expand_margin_right] does [i]not[/i] affect the size of the clickable area for [Control]s. This can negatively impact usability if used wrong, as the user may try to click an area of the StyleBox that cannot actually receive clicks."},{"name":"expand_margin_top","type":"float","description":"Expands the stylebox outside of the control rect on the top edge. Useful in combination with [member border_width_top] to draw a border outside the control rect.\n\t\t\t[b]Note:[/b] Unlike [member StyleBox.content_margin_top], [member expand_margin_top] does [i]not[/i] affect the size of the clickable area for [Control]s. This can negatively impact usability if used wrong, as the user may try to click an area of the StyleBox that cannot actually receive clicks."},{"name":"shadow_color","type":"Color","description":"The color of the shadow. This has no effect if [member shadow_size] is lower than 1."},{"name":"shadow_offset","type":"Vector2","description":"The shadow offset in pixels. Adjusts the position of the shadow relatively to the stylebox."},{"name":"shadow_size","type":"int","description":"The shadow size in pixels."},{"name":"skew","type":"Vector2","description":"If set to a non-zero value on either axis, [member skew] distorts the StyleBox horizontally and/or vertically. This can be used for \"futuristic\"-style UIs. Positive values skew the StyleBox towards the right (X axis) and upwards (Y axis), while negative values skew the StyleBox towards the left (X axis) and downwards (Y axis).\n\t\t\t[b]Note:[/b] To ensure text does not touch the StyleBox's edges, consider increasing the [StyleBox]'s content margin (see [member StyleBox.content_margin_bottom]). It is preferable to increase the content margin instead of the expand margin (see [member expand_margin_bottom]), as increasing the expand margin does not increase the size of the clickable area for [Control]s."}],"methods":[{"name":"get_border_width","signature":"get_border_width(margin: int) -> int","description":"Returns the specified [enum Side]'s border width.","returnType":"int"},{"name":"get_border_width_min","signature":"get_border_width_min() -> int","description":"Returns the smallest border width out of all four borders.","returnType":"int"},{"name":"get_corner_radius","signature":"get_corner_radius(corner: int) -> int","description":"Returns the given [param corner]'s radius. See [enum Corner] for possible values.","returnType":"int"},{"name":"get_expand_margin","signature":"get_expand_margin(margin: int) -> float","description":"Returns the size of the specified [enum Side]'s expand margin.","returnType":"float"},{"name":"set_border_width","signature":"set_border_width(margin: int, width: int) -> void","description":"Sets the specified [enum Side]'s border width to [param width] pixels.","returnType":"void"},{"name":"set_border_width_all","signature":"set_border_width_all(width: int) -> void","description":"Sets the border width to [param width] pixels for all sides.","returnType":"void"},{"name":"set_corner_radius","signature":"set_corner_radius(corner: int, radius: int) -> void","description":"Sets the corner radius to [param radius] pixels for the given [param corner]. See [enum Corner] for possible values.","returnType":"void"},{"name":"set_corner_radius_all","signature":"set_corner_radius_all(radius: int) -> void","description":"Sets the corner radius to [param radius] pixels for all corners.","returnType":"void"},{"name":"set_expand_margin","signature":"set_expand_margin(margin: int, size: float) -> void","description":"Sets the expand margin to [param size] pixels for the specified [enum Side].","returnType":"void"},{"name":"set_expand_margin_all","signature":"set_expand_margin_all(size: float) -> void","description":"Sets the expand margin to [param size] pixels for all sides.","returnType":"void"}],"signals":[]},"StyleBoxLine":{"name":"StyleBoxLine","description":"A  that displays a single line of a given color and thickness.","inherits":"StyleBox","properties":[{"name":"color","type":"Color","description":"The line's color."},{"name":"grow_begin","type":"float","description":"The number of pixels the line will extend before the [StyleBoxLine]'s bounds. If set to a negative value, the line will begin inside the [StyleBoxLine]'s bounds."},{"name":"grow_end","type":"float","description":"The number of pixels the line will extend past the [StyleBoxLine]'s bounds. If set to a negative value, the line will end inside the [StyleBoxLine]'s bounds."},{"name":"thickness","type":"int","description":"The line's thickness in pixels."},{"name":"vertical","type":"bool","description":"If [code]true[/code], the line will be vertical. If [code]false[/code], the line will be horizontal."}],"methods":[],"signals":[]},"StyleBoxTexture":{"name":"StyleBoxTexture","description":"A texture-based nine-patch .","inherits":"StyleBox","properties":[{"name":"axis_stretch_horizontal","type":"int","description":"Controls how the stylebox's texture will be stretched or tiled horizontally. See [enum AxisStretchMode] for possible values."},{"name":"axis_stretch_vertical","type":"int","description":"Controls how the stylebox's texture will be stretched or tiled vertically. See [enum AxisStretchMode] for possible values."},{"name":"draw_center","type":"bool","description":"If [code]true[/code], the nine-patch texture's center tile will be drawn."},{"name":"expand_margin_bottom","type":"float","description":"Expands the bottom margin of this style box when drawing, causing it to be drawn larger than requested."},{"name":"expand_margin_left","type":"float","description":"Expands the left margin of this style box when drawing, causing it to be drawn larger than requested."},{"name":"expand_margin_right","type":"float","description":"Expands the right margin of this style box when drawing, causing it to be drawn larger than requested."},{"name":"expand_margin_top","type":"float","description":"Expands the top margin of this style box when drawing, causing it to be drawn larger than requested."},{"name":"modulate_color","type":"Color","description":"Modulates the color of the texture when this style box is drawn."},{"name":"region_rect","type":"Rect2","description":"The region to use from the [member texture].\n\t\t\tThis is equivalent to first wrapping the [member texture] in an [AtlasTexture] with the same region.\n\t\t\tIf empty ([code]Rect2(0, 0, 0, 0)[/code]), the whole [member texture] is used."},{"name":"texture","type":"Texture2D","description":"The texture to use when drawing this style box."},{"name":"texture_margin_bottom","type":"float","description":"Increases the bottom margin of the 3×3 texture box.\n\t\t\tA higher value means more of the source texture is considered to be part of the bottom border of the 3×3 box.\n\t\t\tThis is also the value used as fallback for [member StyleBox.content_margin_bottom] if it is negative."},{"name":"texture_margin_left","type":"float","description":"Increases the left margin of the 3×3 texture box.\n\t\t\tA higher value means more of the source texture is considered to be part of the left border of the 3×3 box.\n\t\t\tThis is also the value used as fallback for [member StyleBox.content_margin_left] if it is negative."},{"name":"texture_margin_right","type":"float","description":"Increases the right margin of the 3×3 texture box.\n\t\t\tA higher value means more of the source texture is considered to be part of the right border of the 3×3 box.\n\t\t\tThis is also the value used as fallback for [member StyleBox.content_margin_right] if it is negative."},{"name":"texture_margin_top","type":"float","description":"Increases the top margin of the 3×3 texture box.\n\t\t\tA higher value means more of the source texture is considered to be part of the top border of the 3×3 box.\n\t\t\tThis is also the value used as fallback for [member StyleBox.content_margin_top] if it is negative."}],"methods":[{"name":"get_expand_margin","signature":"get_expand_margin(margin: int) -> float","description":"Returns the expand margin size of the specified [enum Side].","returnType":"float"},{"name":"get_texture_margin","signature":"get_texture_margin(margin: int) -> float","description":"Returns the margin size of the specified [enum Side].","returnType":"float"},{"name":"set_expand_margin","signature":"set_expand_margin(margin: int, size: float) -> void","description":"Sets the expand margin to [param size] pixels for the specified [enum Side].","returnType":"void"},{"name":"set_expand_margin_all","signature":"set_expand_margin_all(size: float) -> void","description":"Sets the expand margin to [param size] pixels for all sides.","returnType":"void"},{"name":"set_texture_margin","signature":"set_texture_margin(margin: int, size: float) -> void","description":"Sets the margin to [param size] pixels for the specified [enum Side].","returnType":"void"},{"name":"set_texture_margin_all","signature":"set_texture_margin_all(size: float) -> void","description":"Sets the margin to [param size] pixels for all sides.","returnType":"void"}],"signals":[]},"SubViewport":{"name":"SubViewport","description":"An interface to a game world that doesn't create a window or draw to the screen directly.","inherits":"Viewport","properties":[{"name":"render_target_clear_mode","type":"int","description":"The clear mode when the sub-viewport is used as a render target.\n\t\t\t[b]Note:[/b] This property is intended for 2D usage."},{"name":"render_target_update_mode","type":"int","description":"The update mode when the sub-viewport is used as a render target."},{"name":"size","type":"Vector2i","description":"The width and height of the sub-viewport. Must be set to a value greater than or equal to 2 pixels on both dimensions. Otherwise, nothing will be displayed.\n\t\t\t[b]Note:[/b] If the parent node is a [SubViewportContainer] and its [member SubViewportContainer.stretch] is [code]true[/code], the viewport size cannot be changed manually."},{"name":"size_2d_override","type":"Vector2i","description":"The 2D size override of the sub-viewport. If either the width or height is [code]0[/code], the override is disabled."},{"name":"size_2d_override_stretch","type":"bool","description":"If [code]true[/code], the 2D size override affects stretch as well."}],"methods":[],"signals":[]},"SubViewportContainer":{"name":"SubViewportContainer","description":"A container used for displaying the contents of a .","inherits":"Container","properties":[{"name":"mouse_target","type":"bool","description":"Configure, if either the [SubViewportContainer] or alternatively the [Control] nodes of its [SubViewport] children should be available as targets of mouse-related functionalities, like identifying the drop target in drag-and-drop operations or cursor shape of hovered [Control] node.\n\t\t\tIf [code]false[/code], the [Control] nodes inside its [SubViewport] children are considered as targets.\n\t\t\tIf [code]true[/code], the [SubViewportContainer] itself will be considered as a target."},{"name":"stretch","type":"bool","description":"If [code]true[/code], the sub-viewport will be automatically resized to the control's size.\n\t\t\t[b]Note:[/b] If [code]true[/code], this will prohibit changing [member SubViewport.size] of its children manually."},{"name":"stretch_shrink","type":"int","description":"Divides the sub-viewport's effective resolution by this value while preserving its scale. This can be used to speed up rendering.\n\t\t\tFor example, a 1280×720 sub-viewport with [member stretch_shrink] set to [code]2[/code] will be rendered at 640×360 while occupying the same size in the container.\n\t\t\t[b]Note:[/b] [member stretch] must be [code]true[/code] for this property to work."}],"methods":[{"name":"_propagate_input_event","signature":"_propagate_input_event(event: InputEvent) -> bool","description":"Virtual method to be implemented by the user. If it returns true, the [param event] is propagated to  children. Propagation doesn't happen if it returns false. If the function is not implemented, all events are propagated to SubViewports.","returnType":"bool"}],"signals":[]},"SubtweenTweener":{"name":"SubtweenTweener","description":"Runs a  nested within another .","inherits":"Tweener","properties":[],"methods":[{"name":"set_delay","signature":"set_delay(delay: float) -> SubtweenTweener","description":"Sets the time in seconds after which the  will start running the subtween. By default there's no delay.","returnType":"SubtweenTweener"}],"signals":[]},"SurfaceTool":{"name":"SurfaceTool","description":"Helper tool to create geometry.","inherits":"RefCounted","properties":[],"methods":[{"name":"add_index","signature":"add_index(index: int) -> void","description":"Adds a vertex to index array if you are using indexed vertices. Does not need to be called before adding vertices.","returnType":"void"},{"name":"add_triangle_fan","signature":"add_triangle_fan(vertices: PackedVector3Array, uvs: PackedVector2Array, colors: PackedColorArray, uv2s: PackedVector2Array, normals: PackedVector3Array, tangents: Plane[]) -> void","description":"Inserts a triangle fan made of array data into  being constructed.\n\t\t\t\tRequires the primitive type be set to [constant Mesh.PRIMITIVE_TRIANGLES].","returnType":"void"},{"name":"add_vertex","signature":"add_vertex(vertex: Vector3) -> void","description":"Specifies the position of current vertex. Should be called after specifying other vertex properties (e.g. Color, UV).","returnType":"void"},{"name":"append_from","signature":"append_from(existing: Mesh, surface: int, transform: Transform3D) -> void","description":"Append vertices from a given  surface onto the current vertex array with specified .","returnType":"void"},{"name":"begin","signature":"begin(primitive: int) -> void","description":"Called before adding any vertices. Takes the primitive type as an argument (e.g. [constant Mesh.PRIMITIVE_TRIANGLES]).","returnType":"void"},{"name":"clear","signature":"clear() -> void","description":"Clear all information passed into the surface tool so far.","returnType":"void"},{"name":"commit","signature":"commit(existing: ArrayMesh, flags: int) -> ArrayMesh","description":"Returns a constructed  from current information passed in. If an existing  is passed in as an argument, will add an extra surface to the existing .\n\t\t\t\tThe [param flags] argument can be the bitwise OR of [constant Mesh.ARRAY_FLAG_USE_DYNAMIC_UPDATE], [constant Mesh.ARRAY_FLAG_USE_8_BONE_WEIGHTS], or [constant Mesh.ARRAY_FLAG_USES_EMPTY_VERTEX_ARRAY].","returnType":"ArrayMesh"},{"name":"commit_to_arrays","signature":"commit_to_arrays() -> Array","description":"Commits the data to the same format used by [method ArrayMesh.add_surface_from_arrays], [method ImporterMesh.add_surface], and [method create_from_arrays]. This way you can further process the mesh data using the  or  APIs.","returnType":"Array"},{"name":"create_from","signature":"create_from(existing: Mesh, surface: int) -> void","description":"Creates a vertex array from an existing .","returnType":"void"},{"name":"create_from_arrays","signature":"create_from_arrays(arrays: Array, primitive_type: int) -> void","description":"Creates this SurfaceTool from existing vertex arrays such as returned by [method commit_to_arrays], [method Mesh.surface_get_arrays], [method Mesh.surface_get_blend_shape_arrays], [method ImporterMesh.get_surface_arrays], and [method ImporterMesh.get_surface_blend_shape_arrays]. [param primitive_type] controls the type of mesh data, defaulting to [constant Mesh.PRIMITIVE_TRIANGLES].","returnType":"void"},{"name":"create_from_blend_shape","signature":"create_from_blend_shape(existing: Mesh, surface: int, blend_shape: String) -> void","description":"Creates a vertex array from the specified blend shape of an existing . This can be used to extract a specific pose from a blend shape.","returnType":"void"},{"name":"deindex","signature":"deindex() -> void","description":"Removes the index array by expanding the vertex array.","returnType":"void"},{"name":"generate_lod","signature":"generate_lod(nd_threshold: float, target_index_count: int) -> PackedInt32Array","description":"Generates an LOD for a given [param nd_threshold] in linear units (square root of quadric error metric), using at most [param target_index_count] indices.","returnType":"PackedInt32Array"},{"name":"generate_normals","signature":"generate_normals(flip: bool) -> void","description":"Generates normals from vertices so you do not have to do it manually. If [param flip] is true, the resulting normals will be inverted. [method generate_normals] should be called after generating geometry and before committing the mesh using [method commit] or [method commit_to_arrays]. For correct display of normal-mapped surfaces, you will also have to generate tangents using [method generate_tangents].\n\t\t\t\tNote: [method generate_normals] only works if the primitive type is set to [constant Mesh.PRIMITIVE_TRIANGLES].\n\t\t\t\tNote: [method generate_normals] takes smooth groups into account. To generate smooth normals, set the smooth group to a value greater than or equal to 0 using [method set_smooth_group] or leave the smooth group at the default of 0. To generate flat normals, set the smooth group to -1 using [method set_smooth_group] prior to adding vertices.","returnType":"void"},{"name":"generate_tangents","signature":"generate_tangents() -> void","description":"Generates a tangent vector for each vertex. Requires that each vertex already has UVs and normals set (see [method generate_normals]).","returnType":"void"},{"name":"get_aabb","signature":"get_aabb() -> AABB","description":"Returns the axis-aligned bounding box of the vertex positions.","returnType":"AABB"},{"name":"get_custom_format","signature":"get_custom_format(channel_index: int) -> int","description":"Returns the format for custom [param channel_index] (currently up to 4). Returns [constant CUSTOM_MAX] if this custom channel is unused.","returnType":"int"},{"name":"get_primitive_type","signature":"get_primitive_type() -> int","description":"Returns the type of mesh geometry, such as [constant Mesh.PRIMITIVE_TRIANGLES].","returnType":"int"},{"name":"get_skin_weight_count","signature":"get_skin_weight_count() -> int","description":"By default, returns [constant SKIN_4_WEIGHTS] to indicate only 4 bone influences per vertex are used.\n\t\t\t\tReturns [constant SKIN_8_WEIGHTS] if up to 8 influences are used.\n\t\t\t\tNote: This function returns an enum, not the exact number of weights.","returnType":"int"},{"name":"index","signature":"index() -> void","description":"Shrinks the vertex array by creating an index array. This can improve performance by avoiding vertex reuse.","returnType":"void"},{"name":"optimize_indices_for_cache","signature":"optimize_indices_for_cache() -> void","description":"Optimizes triangle sorting for performance. Requires that [method get_primitive_type] is [constant Mesh.PRIMITIVE_TRIANGLES].","returnType":"void"},{"name":"set_bones","signature":"set_bones(bones: PackedInt32Array) -> void","description":"Specifies an array of bones to use for the next vertex. [param bones] must contain 4 integers.","returnType":"void"},{"name":"set_color","signature":"set_color(color: Color) -> void","description":"Specifies a  to use for the next vertex. If every vertex needs to have this information set and you fail to submit it for the first vertex, this information may not be used at all.\n\t\t\t\tNote: The material must have [member BaseMaterial3D.vertex_color_use_as_albedo] enabled for the vertex color to be visible.","returnType":"void"},{"name":"set_custom","signature":"set_custom(channel_index: int, custom_color: Color) -> void","description":"Sets the custom value on this vertex for [param channel_index].\n\t\t\t\t[method set_custom_format] must be called first for this [param channel_index]. Formats which are not RGBA will ignore other color channels.","returnType":"void"},{"name":"set_custom_format","signature":"set_custom_format(channel_index: int, format: int) -> void","description":"Sets the color format for this custom [param channel_index]. Use [constant CUSTOM_MAX] to disable.\n\t\t\t\tMust be invoked after [method begin] and should be set before [method commit] or [method commit_to_arrays].","returnType":"void"},{"name":"set_material","signature":"set_material(material: Material) -> void","description":"Sets  to be used by the  you are constructing.","returnType":"void"},{"name":"set_normal","signature":"set_normal(normal: Vector3) -> void","description":"Specifies a normal to use for the next vertex. If every vertex needs to have this information set and you fail to submit it for the first vertex, this information may not be used at all.","returnType":"void"},{"name":"set_skin_weight_count","signature":"set_skin_weight_count(count: int) -> void","description":"Set to [constant SKIN_8_WEIGHTS] to indicate that up to 8 bone influences per vertex may be used.\n\t\t\t\tBy default, only 4 bone influences are used ([constant SKIN_4_WEIGHTS]).\n\t\t\t\tNote: This function takes an enum, not the exact number of weights.","returnType":"void"},{"name":"set_smooth_group","signature":"set_smooth_group(index: int) -> void","description":"Specifies the smooth group to use for the next vertex. If this is never called, all vertices will have the default smooth group of 0 and will be smoothed with adjacent vertices of the same group. To produce a mesh with flat normals, set the smooth group to -1.\n\t\t\t\tNote: This function actually takes a uint32_t, so C# users should use uint32.MaxValue instead of -1 to produce a mesh with flat normals.","returnType":"void"},{"name":"set_tangent","signature":"set_tangent(tangent: Plane) -> void","description":"Specifies a tangent to use for the next vertex. If every vertex needs to have this information set and you fail to submit it for the first vertex, this information may not be used at all.","returnType":"void"},{"name":"set_uv","signature":"set_uv(uv: Vector2) -> void","description":"Specifies a set of UV coordinates to use for the next vertex. If every vertex needs to have this information set and you fail to submit it for the first vertex, this information may not be used at all.","returnType":"void"},{"name":"set_uv2","signature":"set_uv2(uv2: Vector2) -> void","description":"Specifies an optional second set of UV coordinates to use for the next vertex. If every vertex needs to have this information set and you fail to submit it for the first vertex, this information may not be used at all.","returnType":"void"},{"name":"set_weights","signature":"set_weights(weights: PackedFloat32Array) -> void","description":"Specifies weight values to use for the next vertex. [param weights] must contain 4 values. If every vertex needs to have this information set and you fail to submit it for the first vertex, this information may not be used at all.","returnType":"void"}],"signals":[]},"SyntaxHighlighter":{"name":"SyntaxHighlighter","description":"Base class for syntax highlighters. Provides syntax highlighting data to a .","inherits":"Resource","properties":[],"methods":[{"name":"_clear_highlighting_cache","signature":"_clear_highlighting_cache() -> void","description":"Virtual method which can be overridden to clear any local caches.","returnType":"void"},{"name":"_get_line_syntax_highlighting","signature":"_get_line_syntax_highlighting(line: int) -> Dictionary","description":"Virtual method which can be overridden to return syntax highlighting data.\n\t\t\t\tSee [method get_line_syntax_highlighting] for more details.","returnType":"Dictionary"},{"name":"_update_cache","signature":"_update_cache() -> void","description":"Virtual method which can be overridden to update any local caches.","returnType":"void"},{"name":"clear_highlighting_cache","signature":"clear_highlighting_cache() -> void","description":"Clears all cached syntax highlighting data.\n\t\t\t\tThen calls overridable method [method _clear_highlighting_cache].","returnType":"void"},{"name":"get_line_syntax_highlighting","signature":"get_line_syntax_highlighting(line: int) -> Dictionary","description":"Returns the syntax highlighting data for the line at index [param line]. If the line is not cached, calls [method _get_line_syntax_highlighting] first to calculate the data.\n\t\t\t\tEach entry is a column number containing a nested . The column number denotes the start of a region, the region will end if another region is found, or at the end of the line. The nested  contains the data for that region. Currently only the key \"color\" is supported.\n\t\t\t\tExample: Possible return value. This means columns 0 to 4 should be red, and columns 5 to the end of the line should be green:\n\t\t\t\t\n\t\t\t\t{\n\t\t\t\t    0: {\n\t\t\t\t        \"color\": Color(1, 0, 0)\n\t\t\t\t    },\n\t\t\t\t    5: {\n\t\t\t\t        \"color\": Color(0, 1, 0)\n\t\t\t\t    }\n\t\t\t\t}\n\t\t\t\t","returnType":"Dictionary"},{"name":"get_text_edit","signature":"get_text_edit() -> TextEdit","description":"Returns the associated  node.","returnType":"TextEdit"},{"name":"update_cache","signature":"update_cache() -> void","description":"Clears then updates the  caches. Override [method _update_cache] for a callback.\n\t\t\t\tNote: This is called automatically when the associated  node, updates its own cache.","returnType":"void"}],"signals":[]},"SystemFont":{"name":"SystemFont","description":"A font loaded from a system font. Falls back to a default theme font if not implemented on the host OS.","inherits":"Font","properties":[{"name":"allow_system_fallback","type":"bool","description":"If set to [code]true[/code], system fonts can be automatically used as fallbacks."},{"name":"antialiasing","type":"int","description":"Font anti-aliasing mode."},{"name":"disable_embedded_bitmaps","type":"bool","description":"If set to [code]true[/code], embedded font bitmap loading is disabled (bitmap-only and color fonts ignore this property)."},{"name":"font_italic","type":"bool","description":"If set to [code]true[/code], italic or oblique font is preferred."},{"name":"font_names","type":"PackedStringArray","description":"Array of font family names to search, first matching font found is used."},{"name":"font_stretch","type":"int","description":"Preferred font stretch amount, compared to a normal width. A percentage value between [code]50%[/code] and [code]200%[/code]."},{"name":"font_weight","type":"int","description":"Preferred weight (boldness) of the font. A value in the [code]100...999[/code] range, normal font weight is [code]400[/code], bold font weight is [code]700[/code]."},{"name":"force_autohinter","type":"bool","description":"If set to [code]true[/code], auto-hinting is supported and preferred over font built-in hinting."},{"name":"generate_mipmaps","type":"bool","description":"If set to [code]true[/code], generate mipmaps for the font textures."},{"name":"hinting","type":"int","description":"Font hinting mode."},{"name":"keep_rounding_remainders","type":"bool","description":"If set to [code]true[/code], when aligning glyphs to the pixel boundaries rounding remainders are accumulated to ensure more uniform glyph distribution. This setting has no effect if subpixel positioning is enabled."},{"name":"msdf_pixel_range","type":"int","description":"The width of the range around the shape between the minimum and maximum representable signed distance. If using font outlines, [member msdf_pixel_range] must be set to at least [i]twice[/i] the size of the largest font outline. The default [member msdf_pixel_range] value of [code]16[/code] allows outline sizes up to [code]8[/code] to look correct."},{"name":"msdf_size","type":"int","description":"Source font size used to generate MSDF textures. Higher values allow for more precision, but are slower to render and require more memory. Only increase this value if you notice a visible lack of precision in glyph rendering."},{"name":"multichannel_signed_distance_field","type":"bool","description":"If set to [code]true[/code], glyphs of all sizes are rendered using single multichannel signed distance field generated from the dynamic font vector data."},{"name":"oversampling","type":"float","description":"Font oversampling factor, if set to [code]0.0[/code] global oversampling factor is used instead."},{"name":"subpixel_positioning","type":"int","description":"Font glyph subpixel positioning mode. Subpixel positioning provides shaper text and better kerning for smaller font sizes, at the cost of memory usage and font rasterization speed. Use [constant TextServer.SUBPIXEL_POSITIONING_AUTO] to automatically enable it based on the font size."}],"methods":[],"signals":[]},"TCPServer":{"name":"TCPServer","description":"A TCP server.","inherits":"RefCounted","properties":[],"methods":[{"name":"get_local_port","signature":"get_local_port() -> int","description":"Returns the local port this server is listening to.","returnType":"int"},{"name":"is_connection_available","signature":"is_connection_available() -> bool","description":"Returns true if a connection is available for taking.","returnType":"bool"},{"name":"is_listening","signature":"is_listening() -> bool","description":"Returns true if the server is currently listening for connections.","returnType":"bool"},{"name":"listen","signature":"listen(port: int, bind_address: String) -> int","description":"Listen on the [param port] binding to [param bind_address].\n\t\t\t\tIf [param bind_address] is set as \"*\" (default), the server will listen on all available addresses (both IPv4 and IPv6).\n\t\t\t\tIf [param bind_address] is set as \"0.0.0.0\" (for IPv4) or \"::\" (for IPv6), the server will listen on all available addresses matching that IP type.\n\t\t\t\tIf [param bind_address] is set to any valid address (e.g. \"192.168.1.101\", \"::1\", etc.), the server will only listen on the interface with that address (or fail if no interface with the given address exists).","returnType":"int"},{"name":"stop","signature":"stop() -> void","description":"Stops listening.","returnType":"void"},{"name":"take_connection","signature":"take_connection() -> StreamPeerTCP","description":"If a connection is available, returns a StreamPeerTCP with the connection.","returnType":"StreamPeerTCP"}],"signals":[]},"TLSOptions":{"name":"TLSOptions","description":"TLS configuration for clients and servers.","inherits":"RefCounted","properties":[],"methods":[{"name":"client","signature":"client(trusted_chain: X509Certificate, common_name_override: String) -> TLSOptions","description":"Creates a TLS client configuration which validates certificates and their common names (fully qualified domain names).\n\t\t\t\tYou can specify a custom [param trusted_chain] of certification authorities (the default CA list will be used if null), and optionally provide a [param common_name_override] if you expect the certificate to have a common name other than the server FQDN.\n\t\t\t\tNote: On the Web platform, TLS verification is always enforced against the CA list of the web browser. This is considered a security feature.","returnType":"TLSOptions"},{"name":"client_unsafe","signature":"client_unsafe(trusted_chain: X509Certificate) -> TLSOptions","description":"Creates an unsafe TLS client configuration where certificate validation is optional. You can optionally provide a valid [param trusted_chain], but the common name of the certificates will never be checked. Using this configuration for purposes other than testing is not recommended.\n\t\t\t\tNote: On the Web platform, TLS verification is always enforced against the CA list of the web browser. This is considered a security feature.","returnType":"TLSOptions"},{"name":"get_common_name_override","signature":"get_common_name_override() -> String","description":"Returns the common name (domain name) override specified when creating with [method TLSOptions.client].","returnType":"String"},{"name":"get_own_certificate","signature":"get_own_certificate() -> X509Certificate","description":"Returns the  specified when creating with [method TLSOptions.server].","returnType":"X509Certificate"},{"name":"get_private_key","signature":"get_private_key() -> CryptoKey","description":"Returns the  specified when creating with [method TLSOptions.server].","returnType":"CryptoKey"},{"name":"get_trusted_ca_chain","signature":"get_trusted_ca_chain() -> X509Certificate","description":"Returns the CA  chain specified when creating with [method TLSOptions.client] or [method TLSOptions.client_unsafe].","returnType":"X509Certificate"},{"name":"is_server","signature":"is_server() -> bool","description":"Returns true if created with [method TLSOptions.server], false otherwise.","returnType":"bool"},{"name":"is_unsafe_client","signature":"is_unsafe_client() -> bool","description":"Returns true if created with [method TLSOptions.client_unsafe], false otherwise.","returnType":"bool"},{"name":"server","signature":"server(key: CryptoKey, certificate: X509Certificate) -> TLSOptions","description":"Creates a TLS server configuration using the provided [param key] and [param certificate].\n\t\t\t\tNote: The [param certificate] should include the full certificate chain up to the signing CA (certificates file can be concatenated using a general purpose text editor).","returnType":"TLSOptions"}],"signals":[]},"TabBar":{"name":"TabBar","description":"A control that provides a horizontal bar with tabs.","inherits":"Control","properties":[{"name":"clip_tabs","type":"bool","description":"If [code]true[/code], tabs overflowing this node's width will be hidden, displaying two navigation buttons instead. Otherwise, this node's minimum size is updated so that all tabs are visible."},{"name":"current_tab","type":"int","description":"The index of the current selected tab. A value of [code]-1[/code] means that no tab is selected and can only be set when [member deselect_enabled] is [code]true[/code] or if all tabs are hidden or disabled."},{"name":"deselect_enabled","type":"bool","description":"If [code]true[/code], all tabs can be deselected so that no tab is selected. Click on the current tab to deselect it."},{"name":"drag_to_rearrange_enabled","type":"bool","description":"If [code]true[/code], tabs can be rearranged with mouse drag."},{"name":"max_tab_width","type":"int","description":"Sets the maximum width which all tabs should be limited to. Unlimited if set to [code]0[/code]."},{"name":"scroll_to_selected","type":"bool","description":"If [code]true[/code], the tab offset will be changed to keep the currently selected tab visible."},{"name":"scrolling_enabled","type":"bool","description":"if [code]true[/code], the mouse's scroll wheel can be used to navigate the scroll view."},{"name":"select_with_rmb","type":"bool","description":"If [code]true[/code], enables selecting a tab with the right mouse button."},{"name":"tab_alignment","type":"int","description":"Sets the position at which tabs will be placed. See [enum AlignmentMode] for details."},{"name":"tab_close_display_policy","type":"int","description":"Sets when the close button will appear on the tabs. See [enum CloseButtonDisplayPolicy] for details."},{"name":"tab_count","type":"int","description":"The number of tabs currently in the bar."},{"name":"tabs_rearrange_group","type":"int","description":"[TabBar]s with the same rearrange group ID will allow dragging the tabs between them. Enable drag with [member drag_to_rearrange_enabled].\n\t\t\tSetting this to [code]-1[/code] will disable rearranging between [TabBar]s."}],"methods":[{"name":"add_tab","signature":"add_tab(title: String, icon: Texture2D) -> void","description":"Adds a new tab.","returnType":"void"},{"name":"clear_tabs","signature":"clear_tabs() -> void","description":"Clears all tabs.","returnType":"void"},{"name":"ensure_tab_visible","signature":"ensure_tab_visible(idx: int) -> void","description":"Moves the scroll view to make the tab visible.","returnType":"void"},{"name":"get_offset_buttons_visible","signature":"get_offset_buttons_visible() -> bool","description":"Returns true if the offset buttons (the ones that appear when there's not enough space for all tabs) are visible.","returnType":"bool"},{"name":"get_previous_tab","signature":"get_previous_tab() -> int","description":"Returns the previously active tab index.","returnType":"int"},{"name":"get_tab_button_icon","signature":"get_tab_button_icon(tab_idx: int) -> Texture2D","description":"Returns the icon for the right button of the tab at index [param tab_idx] or null if the right button has no icon.","returnType":"Texture2D"},{"name":"get_tab_icon","signature":"get_tab_icon(tab_idx: int) -> Texture2D","description":"Returns the icon for the tab at index [param tab_idx] or null if the tab has no icon.","returnType":"Texture2D"},{"name":"get_tab_icon_max_width","signature":"get_tab_icon_max_width(tab_idx: int) -> int","description":"Returns the maximum allowed width of the icon for the tab at index [param tab_idx].","returnType":"int"},{"name":"get_tab_idx_at_point","signature":"get_tab_idx_at_point(point: Vector2) -> int","description":"Returns the index of the tab at local coordinates [param point]. Returns -1 if the point is outside the control boundaries or if there's no tab at the queried position.","returnType":"int"},{"name":"get_tab_language","signature":"get_tab_language(tab_idx: int) -> String","description":"Returns tab title language code.","returnType":"String"},{"name":"get_tab_metadata","signature":"get_tab_metadata(tab_idx: int) -> Variant","description":"Returns the metadata value set to the tab at index [param tab_idx] using [method set_tab_metadata]. If no metadata was previously set, returns null by default.","returnType":"Variant"},{"name":"get_tab_offset","signature":"get_tab_offset() -> int","description":"Returns the number of hidden tabs offsetted to the left.","returnType":"int"},{"name":"get_tab_rect","signature":"get_tab_rect(tab_idx: int) -> Rect2","description":"Returns tab  with local position and size.","returnType":"Rect2"},{"name":"get_tab_text_direction","signature":"get_tab_text_direction(tab_idx: int) -> int","description":"Returns tab title text base writing direction.","returnType":"int"},{"name":"get_tab_title","signature":"get_tab_title(tab_idx: int) -> String","description":"Returns the title of the tab at index [param tab_idx].","returnType":"String"},{"name":"get_tab_tooltip","signature":"get_tab_tooltip(tab_idx: int) -> String","description":"Returns the tooltip text of the tab at index [param tab_idx].","returnType":"String"},{"name":"is_tab_disabled","signature":"is_tab_disabled(tab_idx: int) -> bool","description":"Returns true if the tab at index [param tab_idx] is disabled.","returnType":"bool"},{"name":"is_tab_hidden","signature":"is_tab_hidden(tab_idx: int) -> bool","description":"Returns true if the tab at index [param tab_idx] is hidden.","returnType":"bool"},{"name":"move_tab","signature":"move_tab(from: int, to: int) -> void","description":"Moves a tab from [param from] to [param to].","returnType":"void"},{"name":"remove_tab","signature":"remove_tab(tab_idx: int) -> void","description":"Removes the tab at index [param tab_idx].","returnType":"void"},{"name":"select_next_available","signature":"select_next_available() -> bool","description":"Selects the first available tab with greater index than the currently selected. Returns true if tab selection changed.","returnType":"bool"},{"name":"select_previous_available","signature":"select_previous_available() -> bool","description":"Selects the first available tab with lower index than the currently selected. Returns true if tab selection changed.","returnType":"bool"},{"name":"set_tab_button_icon","signature":"set_tab_button_icon(tab_idx: int, icon: Texture2D) -> void","description":"Sets an [param icon] for the button of the tab at index [param tab_idx] (located to the right, before the close button), making it visible and clickable (See [signal tab_button_pressed]). Giving it a null value will hide the button.","returnType":"void"},{"name":"set_tab_disabled","signature":"set_tab_disabled(tab_idx: int, disabled: bool) -> void","description":"If [param disabled] is true, disables the tab at index [param tab_idx], making it non-interactable.","returnType":"void"},{"name":"set_tab_hidden","signature":"set_tab_hidden(tab_idx: int, hidden: bool) -> void","description":"If [param hidden] is true, hides the tab at index [param tab_idx], making it disappear from the tab area.","returnType":"void"},{"name":"set_tab_icon","signature":"set_tab_icon(tab_idx: int, icon: Texture2D) -> void","description":"Sets an [param icon] for the tab at index [param tab_idx].","returnType":"void"},{"name":"set_tab_icon_max_width","signature":"set_tab_icon_max_width(tab_idx: int, width: int) -> void","description":"Sets the maximum allowed width of the icon for the tab at index [param tab_idx]. This limit is applied on top of the default size of the icon and on top of [theme_item icon_max_width]. The height is adjusted according to the icon's ratio.","returnType":"void"},{"name":"set_tab_language","signature":"set_tab_language(tab_idx: int, language: String) -> void","description":"Sets language code of tab title used for line-breaking and text shaping algorithms, if left empty current locale is used instead.","returnType":"void"},{"name":"set_tab_metadata","signature":"set_tab_metadata(tab_idx: int, metadata: Variant) -> void","description":"Sets the metadata value for the tab at index [param tab_idx], which can be retrieved later using [method get_tab_metadata].","returnType":"void"},{"name":"set_tab_text_direction","signature":"set_tab_text_direction(tab_idx: int, direction: int) -> void","description":"Sets tab title base writing direction.","returnType":"void"},{"name":"set_tab_title","signature":"set_tab_title(tab_idx: int, title: String) -> void","description":"Sets a [param title] for the tab at index [param tab_idx].","returnType":"void"},{"name":"set_tab_tooltip","signature":"set_tab_tooltip(tab_idx: int, tooltip: String) -> void","description":"Sets a [param tooltip] for tab at index [param tab_idx].\n\t\t\t\tNote: By default, if the [param tooltip] is empty and the tab text is truncated (not all characters fit into the tab), the title will be displayed as a tooltip. To hide the tooltip, assign \" \" as the [param tooltip] text.","returnType":"void"}],"signals":[{"name":"active_tab_rearranged","description":"Emitted when the active tab is rearranged via mouse drag. See [member drag_to_rearrange_enabled]."},{"name":"tab_button_pressed","description":"Emitted when a tab's right button is pressed. See [method set_tab_button_icon]."},{"name":"tab_changed","description":"Emitted when switching to another tab."},{"name":"tab_clicked","description":"Emitted when a tab is clicked, even if it is the current tab."},{"name":"tab_close_pressed","description":"Emitted when a tab's close button is pressed.\n\t\t\t\t[b]Note:[/b] Tabs are not removed automatically once the close button is pressed, this behavior needs to be programmed manually. For example:\n\t\t\t\t[codeblocks]\n\t\t\t\t[gdscript]\n\t\t\t\t$TabBar.tab_close_pressed.connect($TabBar.remove_tab)\n\t\t\t\t[/gdscript]\n\t\t\t\t[csharp]\n\t\t\t\tGetNode&lt;TabBar&gt;(\"TabBar\").TabClosePressed += GetNode&lt;TabBar&gt;(\"TabBar\").RemoveTab;\n\t\t\t\t[/csharp]\n\t\t\t\t[/codeblocks]"},{"name":"tab_hovered","description":"Emitted when a tab is hovered by the mouse."},{"name":"tab_rmb_clicked","description":"Emitted when a tab is right-clicked. [member select_with_rmb] must be enabled."},{"name":"tab_selected","description":"Emitted when a tab is selected via click, directional input, or script, even if it is the current tab."}]},"TabContainer":{"name":"TabContainer","description":"A container that creates a tab for each child control, displaying only the active tab's control.","inherits":"Container","properties":[{"name":"all_tabs_in_front","type":"bool","description":"If [code]true[/code], all tabs are drawn in front of the panel. If [code]false[/code], inactive tabs are drawn behind the panel."},{"name":"clip_tabs","type":"bool","description":"If [code]true[/code], tabs overflowing this node's width will be hidden, displaying two navigation buttons instead. Otherwise, this node's minimum size is updated so that all tabs are visible."},{"name":"current_tab","type":"int","description":"The current tab index. When set, this index's [Control] node's [code]visible[/code] property is set to [code]true[/code] and all others are set to [code]false[/code].\n\t\t\tA value of [code]-1[/code] means that no tab is selected."},{"name":"deselect_enabled","type":"bool","description":"If [code]true[/code], all tabs can be deselected so that no tab is selected. Click on the [member current_tab] to deselect it.\n\t\t\tOnly the tab header will be shown if no tabs are selected."},{"name":"drag_to_rearrange_enabled","type":"bool","description":"If [code]true[/code], tabs can be rearranged with mouse drag."},{"name":"tab_alignment","type":"int","description":"Sets the position at which tabs will be placed. See [enum TabBar.AlignmentMode] for details."},{"name":"tab_focus_mode","type":"int","description":"The focus access mode for the internal [TabBar] node."},{"name":"tabs_position","type":"int","description":"Sets the position of the tab bar. See [enum TabPosition] for details."},{"name":"tabs_rearrange_group","type":"int","description":"[TabContainer]s with the same rearrange group ID will allow dragging the tabs between them. Enable drag with [member drag_to_rearrange_enabled].\n\t\t\tSetting this to [code]-1[/code] will disable rearranging between [TabContainer]s."},{"name":"tabs_visible","type":"bool","description":"If [code]true[/code], tabs are visible. If [code]false[/code], tabs' content and titles are hidden."},{"name":"use_hidden_tabs_for_min_size","type":"bool","description":"If [code]true[/code], child [Control] nodes that are hidden have their minimum size take into account in the total, instead of only the currently visible one."}],"methods":[{"name":"get_current_tab_control","signature":"get_current_tab_control() -> Control","description":"Returns the child  node located at the active tab index.","returnType":"Control"},{"name":"get_popup","signature":"get_popup() -> Popup","description":"Returns the  node instance if one has been set already with [method set_popup].\n\t\t\t\tWarning: This is a required internal node, removing and freeing it may cause a crash. If you wish to hide it or any of its children, use their [member Window.visible] property.","returnType":"Popup"},{"name":"get_previous_tab","signature":"get_previous_tab() -> int","description":"Returns the previously active tab index.","returnType":"int"},{"name":"get_tab_bar","signature":"get_tab_bar() -> TabBar","description":"Returns the  contained in this container.\n\t\t\t\tWarning: This is a required internal node, removing and freeing it or editing its tabs may cause a crash. If you wish to edit the tabs, use the methods provided in .","returnType":"TabBar"},{"name":"get_tab_button_icon","signature":"get_tab_button_icon(tab_idx: int) -> Texture2D","description":"Returns the button icon from the tab at index [param tab_idx].","returnType":"Texture2D"},{"name":"get_tab_control","signature":"get_tab_control(tab_idx: int) -> Control","description":"Returns the  node from the tab at index [param tab_idx].","returnType":"Control"},{"name":"get_tab_count","signature":"get_tab_count() -> int","description":"Returns the number of tabs.","returnType":"int"},{"name":"get_tab_icon","signature":"get_tab_icon(tab_idx: int) -> Texture2D","description":"Returns the  for the tab at index [param tab_idx] or null if the tab has no .","returnType":"Texture2D"},{"name":"get_tab_icon_max_width","signature":"get_tab_icon_max_width(tab_idx: int) -> int","description":"Returns the maximum allowed width of the icon for the tab at index [param tab_idx].","returnType":"int"},{"name":"get_tab_idx_at_point","signature":"get_tab_idx_at_point(point: Vector2) -> int","description":"Returns the index of the tab at local coordinates [param point]. Returns -1 if the point is outside the control boundaries or if there's no tab at the queried position.","returnType":"int"},{"name":"get_tab_idx_from_control","signature":"get_tab_idx_from_control(control: Control) -> int","description":"Returns the index of the tab tied to the given [param control]. The control must be a child of the .","returnType":"int"},{"name":"get_tab_metadata","signature":"get_tab_metadata(tab_idx: int) -> Variant","description":"Returns the metadata value set to the tab at index [param tab_idx] using [method set_tab_metadata]. If no metadata was previously set, returns null by default.","returnType":"Variant"},{"name":"get_tab_title","signature":"get_tab_title(tab_idx: int) -> String","description":"Returns the title of the tab at index [param tab_idx]. Tab titles default to the name of the indexed child node, but this can be overridden with [method set_tab_title].","returnType":"String"},{"name":"get_tab_tooltip","signature":"get_tab_tooltip(tab_idx: int) -> String","description":"Returns the tooltip text of the tab at index [param tab_idx].","returnType":"String"},{"name":"is_tab_disabled","signature":"is_tab_disabled(tab_idx: int) -> bool","description":"Returns true if the tab at index [param tab_idx] is disabled.","returnType":"bool"},{"name":"is_tab_hidden","signature":"is_tab_hidden(tab_idx: int) -> bool","description":"Returns true if the tab at index [param tab_idx] is hidden.","returnType":"bool"},{"name":"select_next_available","signature":"select_next_available() -> bool","description":"Selects the first available tab with greater index than the currently selected. Returns true if tab selection changed.","returnType":"bool"},{"name":"select_previous_available","signature":"select_previous_available() -> bool","description":"Selects the first available tab with lower index than the currently selected. Returns true if tab selection changed.","returnType":"bool"},{"name":"set_popup","signature":"set_popup(popup: Node) -> void","description":"If set on a  node instance, a popup menu icon appears in the top-right corner of the  (setting it to null will make it go away). Clicking it will expand the  node.","returnType":"void"},{"name":"set_tab_button_icon","signature":"set_tab_button_icon(tab_idx: int, icon: Texture2D) -> void","description":"Sets the button icon from the tab at index [param tab_idx].","returnType":"void"},{"name":"set_tab_disabled","signature":"set_tab_disabled(tab_idx: int, disabled: bool) -> void","description":"If [param disabled] is true, disables the tab at index [param tab_idx], making it non-interactable.","returnType":"void"},{"name":"set_tab_hidden","signature":"set_tab_hidden(tab_idx: int, hidden: bool) -> void","description":"If [param hidden] is true, hides the tab at index [param tab_idx], making it disappear from the tab area.","returnType":"void"},{"name":"set_tab_icon","signature":"set_tab_icon(tab_idx: int, icon: Texture2D) -> void","description":"Sets an icon for the tab at index [param tab_idx].","returnType":"void"},{"name":"set_tab_icon_max_width","signature":"set_tab_icon_max_width(tab_idx: int, width: int) -> void","description":"Sets the maximum allowed width of the icon for the tab at index [param tab_idx]. This limit is applied on top of the default size of the icon and on top of [theme_item icon_max_width]. The height is adjusted according to the icon's ratio.","returnType":"void"},{"name":"set_tab_metadata","signature":"set_tab_metadata(tab_idx: int, metadata: Variant) -> void","description":"Sets the metadata value for the tab at index [param tab_idx], which can be retrieved later using [method get_tab_metadata].","returnType":"void"},{"name":"set_tab_title","signature":"set_tab_title(tab_idx: int, title: String) -> void","description":"Sets a custom title for the tab at index [param tab_idx] (tab titles default to the name of the indexed child node). Set it back to the child's name to make the tab default to it again.","returnType":"void"},{"name":"set_tab_tooltip","signature":"set_tab_tooltip(tab_idx: int, tooltip: String) -> void","description":"Sets a custom tooltip text for tab at index [param tab_idx].\n\t\t\t\tNote: By default, if the [param tooltip] is empty and the tab text is truncated (not all characters fit into the tab), the title will be displayed as a tooltip. To hide the tooltip, assign \" \" as the [param tooltip] text.","returnType":"void"}],"signals":[{"name":"active_tab_rearranged","description":"Emitted when the active tab is rearranged via mouse drag. See [member drag_to_rearrange_enabled]."},{"name":"pre_popup_pressed","description":"Emitted when the [TabContainer]'s [Popup] button is clicked. See [method set_popup] for details."},{"name":"tab_button_pressed","description":"Emitted when the user clicks on the button icon on this tab."},{"name":"tab_changed","description":"Emitted when switching to another tab."},{"name":"tab_clicked","description":"Emitted when a tab is clicked, even if it is the current tab."},{"name":"tab_hovered","description":"Emitted when a tab is hovered by the mouse."},{"name":"tab_selected","description":"Emitted when a tab is selected via click, directional input, or script, even if it is the current tab."}]},"TextEdit":{"name":"TextEdit","description":"A multiline text editor.","inherits":"Control","properties":[{"name":"autowrap_mode","type":"int","description":"If [member wrap_mode] is set to [constant LINE_WRAPPING_BOUNDARY], sets text wrapping mode. To see how each mode behaves, see [enum TextServer.AutowrapMode]."},{"name":"caret_blink","type":"bool","description":"If [code]true[/code], makes the caret blink."},{"name":"caret_blink_interval","type":"float","description":"The interval at which the caret blinks (in seconds)."},{"name":"caret_draw_when_editable_disabled","type":"bool","description":"If [code]true[/code], caret will be visible when [member editable] is disabled."},{"name":"caret_mid_grapheme","type":"bool","description":"Allow moving caret, selecting and removing the individual composite character components.\n\t\t\t[b]Note:[/b] [kbd]Backspace[/kbd] is always removing individual composite character components."},{"name":"caret_move_on_right_click","type":"bool","description":"If [code]true[/code], a right-click moves the caret at the mouse position before displaying the context menu.\n\t\t\tIf [code]false[/code], the context menu ignores mouse location."},{"name":"caret_multiple","type":"bool","description":"If [code]true[/code], multiple carets are allowed. Left-clicking with [kbd]Alt[/kbd] adds a new caret. See [method add_caret] and [method get_caret_count]."},{"name":"caret_type","type":"int","description":"Set the type of caret to draw."},{"name":"context_menu_enabled","type":"bool","description":"If [code]true[/code], a right-click displays the context menu."},{"name":"custom_word_separators","type":"String","description":"The characters to consider as word delimiters if [member use_custom_word_separators] is [code]true[/code]. The characters should be defined without separation, for example [code]#_![/code]."},{"name":"deselect_on_focus_loss_enabled","type":"bool","description":"If [code]true[/code], the selected text will be deselected when focus is lost."},{"name":"drag_and_drop_selection_enabled","type":"bool","description":"If [code]true[/code], allow drag and drop of selected text. Text can still be dropped from other sources."},{"name":"draw_control_chars","type":"bool","description":"If [code]true[/code], control characters are displayed."},{"name":"draw_spaces","type":"bool","description":"If [code]true[/code], the \"space\" character will have a visible representation."},{"name":"draw_tabs","type":"bool","description":"If [code]true[/code], the \"tab\" character will have a visible representation."},{"name":"editable","type":"bool","description":"If [code]false[/code], existing text cannot be modified and new text cannot be added."},{"name":"emoji_menu_enabled","type":"bool","description":"If [code]true[/code], \"Emoji and Symbols\" menu is enabled."},{"name":"empty_selection_clipboard_enabled","type":"bool","description":"If [code]true[/code], copying or cutting without a selection is performed on all lines with a caret. Otherwise, copy and cut require a selection."},{"name":"highlight_all_occurrences","type":"bool","description":"If [code]true[/code], all occurrences of the selected text will be highlighted."},{"name":"highlight_current_line","type":"bool","description":"If [code]true[/code], the line containing the cursor is highlighted."},{"name":"indent_wrapped_lines","type":"bool","description":"If [code]true[/code], all wrapped lines are indented to the same amount as the unwrapped line."},{"name":"language","type":"String","description":"Language code used for line-breaking and text shaping algorithms, if left empty current locale is used instead."},{"name":"middle_mouse_paste_enabled","type":"bool","description":"If [code]false[/code], using middle mouse button to paste clipboard will be disabled.\n\t\t\t[b]Note:[/b] This method is only implemented on Linux."},{"name":"minimap_draw","type":"bool","description":"If [code]true[/code], a minimap is shown, providing an outline of your source code. The minimap uses a fixed-width text size."},{"name":"minimap_width","type":"int","description":"The width, in pixels, of the minimap."},{"name":"placeholder_text","type":"String","description":"Text shown when the [TextEdit] is empty. It is [b]not[/b] the [TextEdit]'s default value (see [member text])."},{"name":"scroll_fit_content_height","type":"bool","description":"If [code]true[/code], [TextEdit] will disable vertical scroll and fit minimum height to the number of visible lines. When both this property and [member scroll_fit_content_width] are [code]true[/code], no scrollbars will be displayed."},{"name":"scroll_fit_content_width","type":"bool","description":"If [code]true[/code], [TextEdit] will disable horizontal scroll and fit minimum width to the widest line in the text. When both this property and [member scroll_fit_content_height] are [code]true[/code], no scrollbars will be displayed."},{"name":"scroll_horizontal","type":"int","description":"If there is a horizontal scrollbar, this determines the current horizontal scroll value in pixels."},{"name":"scroll_past_end_of_file","type":"bool","description":"Allow scrolling past the last line into \"virtual\" space."},{"name":"scroll_smooth","type":"bool","description":"Scroll smoothly over the text rather than jumping to the next location."},{"name":"scroll_v_scroll_speed","type":"float","description":"Sets the scroll speed with the minimap or when [member scroll_smooth] is enabled."},{"name":"scroll_vertical","type":"float","description":"If there is a vertical scrollbar, this determines the current vertical scroll value in line numbers, starting at 0 for the top line."},{"name":"selecting_enabled","type":"bool","description":"If [code]true[/code], text can be selected.\n\t\t\tIf [code]false[/code], text can not be selected by the user or by the [method select] or [method select_all] methods."},{"name":"shortcut_keys_enabled","type":"bool","description":"If [code]true[/code], shortcut keys for context menu items are enabled, even if the context menu is disabled."},{"name":"structured_text_bidi_override","type":"int","description":"Set BiDi algorithm override for the structured text."},{"name":"structured_text_bidi_override_options","type":"Array","description":"Set additional options for BiDi override."},{"name":"syntax_highlighter","type":"SyntaxHighlighter","description":"The syntax highlighter to use.\n\t\t\t[b]Note:[/b] A [SyntaxHighlighter] instance should not be used across multiple [TextEdit] nodes."},{"name":"text","type":"String","description":"String value of the [TextEdit]."},{"name":"text_direction","type":"int","description":"Base text writing direction."},{"name":"use_custom_word_separators","type":"bool","description":"If [code]false[/code], using [kbd]Ctrl + Left[/kbd] or [kbd]Ctrl + Right[/kbd] ([kbd]Cmd + Left[/kbd] or [kbd]Cmd + Right[/kbd] on macOS) bindings will use the behavior of [member use_default_word_separators]. If [code]true[/code], it will also stop the caret if a character within [member custom_word_separators] is detected. Useful for subword moving. This behavior also will be applied to the behavior of text selection."},{"name":"use_default_word_separators","type":"bool","description":"If [code]false[/code], using [kbd]Ctrl + Left[/kbd] or [kbd]Ctrl + Right[/kbd] ([kbd]Cmd + Left[/kbd] or [kbd]Cmd + Right[/kbd] on macOS) bindings will stop moving caret only if a space or punctuation is detected. If [code]true[/code], it will also stop the caret if a character is part of [code]!\"#$%&amp;'()*+,-./:;&lt;=&gt;?@[\\]^`{|}~[/code], the Unicode General Punctuation table, or the Unicode CJK Punctuation table. Useful for subword moving. This behavior also will be applied to the behavior of text selection."},{"name":"virtual_keyboard_enabled","type":"bool","description":"If [code]true[/code], the native virtual keyboard is shown when focused on platforms that support it."},{"name":"wrap_mode","type":"int","description":"Sets the line wrapping mode to use."}],"methods":[{"name":"_backspace","signature":"_backspace(caret_index: int) -> void","description":"Override this method to define what happens when the user presses the backspace key.","returnType":"void"},{"name":"_copy","signature":"_copy(caret_index: int) -> void","description":"Override this method to define what happens when the user performs a copy operation.","returnType":"void"},{"name":"_cut","signature":"_cut(caret_index: int) -> void","description":"Override this method to define what happens when the user performs a cut operation.","returnType":"void"},{"name":"_handle_unicode_input","signature":"_handle_unicode_input(unicode_char: int, caret_index: int) -> void","description":"Override this method to define what happens when the user types in the provided key [param unicode_char].","returnType":"void"},{"name":"_paste","signature":"_paste(caret_index: int) -> void","description":"Override this method to define what happens when the user performs a paste operation.","returnType":"void"},{"name":"_paste_primary_clipboard","signature":"_paste_primary_clipboard(caret_index: int) -> void","description":"Override this method to define what happens when the user performs a paste operation with middle mouse button.\n\t\t\t\tNote: This method is only implemented on Linux.","returnType":"void"},{"name":"add_caret","signature":"add_caret(line: int, column: int) -> int","description":"Adds a new caret at the given location. Returns the index of the new caret, or -1 if the location is invalid.","returnType":"int"},{"name":"add_caret_at_carets","signature":"add_caret_at_carets(below: bool) -> void","description":"Adds an additional caret above or below every caret. If [param below] is true the new caret will be added below and above otherwise.","returnType":"void"},{"name":"add_gutter","signature":"add_gutter(at: int) -> void","description":"Register a new gutter to this . Use [param at] to have a specific gutter order. A value of -1 appends the gutter to the right.","returnType":"void"},{"name":"add_selection_for_next_occurrence","signature":"add_selection_for_next_occurrence() -> void","description":"Adds a selection and a caret for the next occurrence of the current selection. If there is no active selection, selects word under caret.","returnType":"void"},{"name":"adjust_carets_after_edit","signature":"adjust_carets_after_edit(caret: int, from_line: int, from_col: int, to_line: int, to_col: int) -> void","description":"This method does nothing.","returnType":"void"},{"name":"adjust_viewport_to_caret","signature":"adjust_viewport_to_caret(caret_index: int) -> void","description":"Adjust the viewport so the caret is visible.","returnType":"void"},{"name":"apply_ime","signature":"apply_ime() -> void","description":"Applies text from the [url=https://en.wikipedia.org/wiki/Input_method]Input Method Editor (IME) to each caret and closes the IME if it is open.","returnType":"void"},{"name":"backspace","signature":"backspace(caret_index: int) -> void","description":"Called when the user presses the backspace key. Can be overridden with [method _backspace].","returnType":"void"},{"name":"begin_complex_operation","signature":"begin_complex_operation() -> void","description":"Starts a multipart edit. All edits will be treated as one action until [method end_complex_operation] is called.","returnType":"void"},{"name":"begin_multicaret_edit","signature":"begin_multicaret_edit() -> void","description":"Starts an edit for multiple carets. The edit must be ended with [method end_multicaret_edit]. Multicaret edits can be used to edit text at multiple carets and delay merging the carets until the end, so the caret indexes aren't affected immediately. [method begin_multicaret_edit] and [method end_multicaret_edit] can be nested, and the merge will happen at the last [method end_multicaret_edit].\n\t\t\t\t\n\t\t\t\tbegin_complex_operation()\n\t\t\t\tbegin_multicaret_edit()\n\t\t\t\tfor i in range(get_caret_count()):\n\t\t\t\t    if multicaret_edit_ignore_caret(i):\n\t\t\t\t        continue\n\t\t\t\t    # Logic here.\n\t\t\t\tend_multicaret_edit()\n\t\t\t\tend_complex_operation()\n\t\t\t\t","returnType":"void"},{"name":"cancel_ime","signature":"cancel_ime() -> void","description":"Closes the [url=https://en.wikipedia.org/wiki/Input_method]Input Method Editor (IME) if it is open. Any text in the IME will be lost.","returnType":"void"},{"name":"center_viewport_to_caret","signature":"center_viewport_to_caret(caret_index: int) -> void","description":"Centers the viewport on the line the editing caret is at. This also resets the [member scroll_horizontal] value to 0.","returnType":"void"},{"name":"clear","signature":"clear() -> void","description":"Performs a full reset of , including undo history.","returnType":"void"},{"name":"clear_undo_history","signature":"clear_undo_history() -> void","description":"Clears the undo history.","returnType":"void"},{"name":"collapse_carets","signature":"collapse_carets(from_line: int, from_column: int, to_line: int, to_column: int, inclusive: bool) -> void","description":"Collapse all carets in the given range to the [param from_line] and [param from_column] position.\n\t\t\t\t[param inclusive] applies to both ends.\n\t\t\t\tIf [method is_in_mulitcaret_edit] is true, carets that are collapsed will be true for [method multicaret_edit_ignore_caret].\n\t\t\t\t[method merge_overlapping_carets] will be called if any carets were collapsed.","returnType":"void"},{"name":"copy","signature":"copy(caret_index: int) -> void","description":"Copies the current text selection. Can be overridden with [method _copy].","returnType":"void"},{"name":"cut","signature":"cut(caret_index: int) -> void","description":"Cut's the current selection. Can be overridden with [method _cut].","returnType":"void"},{"name":"delete_selection","signature":"delete_selection(caret_index: int) -> void","description":"Deletes the selected text.","returnType":"void"},{"name":"deselect","signature":"deselect(caret_index: int) -> void","description":"Deselects the current selection.","returnType":"void"},{"name":"end_action","signature":"end_action() -> void","description":"Marks the end of steps in the current action started with [method start_action].","returnType":"void"},{"name":"end_complex_operation","signature":"end_complex_operation() -> void","description":"Ends a multipart edit, started with [method begin_complex_operation]. If called outside a complex operation, the current operation is pushed onto the undo/redo stack.","returnType":"void"},{"name":"end_multicaret_edit","signature":"end_multicaret_edit() -> void","description":"Ends an edit for multiple carets, that was started with [method begin_multicaret_edit]. If this was the last [method end_multicaret_edit] and [method merge_overlapping_carets] was called, carets will be merged.","returnType":"void"},{"name":"get_caret_column","signature":"get_caret_column(caret_index: int) -> int","description":"Returns the column the editing caret is at.","returnType":"int"},{"name":"get_caret_count","signature":"get_caret_count() -> int","description":"Returns the number of carets in this .","returnType":"int"},{"name":"get_caret_draw_pos","signature":"get_caret_draw_pos(caret_index: int) -> Vector2","description":"Returns the caret pixel draw position.","returnType":"Vector2"},{"name":"get_caret_index_edit_order","signature":"get_caret_index_edit_order() -> PackedInt32Array","description":"Returns a list of caret indexes in their edit order, this done from bottom to top. Edit order refers to the way actions such as [method insert_text_at_caret] are applied.","returnType":"PackedInt32Array"},{"name":"get_caret_line","signature":"get_caret_line(caret_index: int) -> int","description":"Returns the line the editing caret is on.","returnType":"int"},{"name":"get_caret_wrap_index","signature":"get_caret_wrap_index(caret_index: int) -> int","description":"Returns the wrap index the editing caret is on.","returnType":"int"},{"name":"get_first_non_whitespace_column","signature":"get_first_non_whitespace_column(line: int) -> int","description":"Returns the first column containing a non-whitespace character on the given line. If there is only whitespace, returns the number of characters.","returnType":"int"},{"name":"get_first_visible_line","signature":"get_first_visible_line() -> int","description":"Returns the first visible line.","returnType":"int"},{"name":"get_gutter_count","signature":"get_gutter_count() -> int","description":"Returns the number of gutters registered.","returnType":"int"},{"name":"get_gutter_name","signature":"get_gutter_name(gutter: int) -> String","description":"Returns the name of the gutter at the given index.","returnType":"String"},{"name":"get_gutter_type","signature":"get_gutter_type(gutter: int) -> int","description":"Returns the type of the gutter at the given index. Gutters can contain icons, text, or custom visuals. See [enum TextEdit.GutterType] for options.","returnType":"int"},{"name":"get_gutter_width","signature":"get_gutter_width(gutter: int) -> int","description":"Returns the width of the gutter at the given index.","returnType":"int"},{"name":"get_h_scroll_bar","signature":"get_h_scroll_bar() -> HScrollBar","description":"Returns the  used by .","returnType":"HScrollBar"},{"name":"get_indent_level","signature":"get_indent_level(line: int) -> int","description":"Returns the indent level of the given line. This is the number of spaces and tabs at the beginning of the line, with the tabs taking the tab size into account (see [method get_tab_size]).","returnType":"int"},{"name":"get_last_full_visible_line","signature":"get_last_full_visible_line() -> int","description":"Returns the last visible line. Use [method get_last_full_visible_line_wrap_index] for the wrap index.","returnType":"int"},{"name":"get_last_full_visible_line_wrap_index","signature":"get_last_full_visible_line_wrap_index() -> int","description":"Returns the last visible wrap index of the last visible line.","returnType":"int"},{"name":"get_last_unhidden_line","signature":"get_last_unhidden_line() -> int","description":"Returns the last unhidden line in the entire .","returnType":"int"},{"name":"get_line","signature":"get_line(line: int) -> String","description":"Returns the text of a specific line.","returnType":"String"},{"name":"get_line_background_color","signature":"get_line_background_color(line: int) -> Color","description":"Returns the custom background color of the given line. If no color is set, returns Color(0, 0, 0, 0).","returnType":"Color"},{"name":"get_line_column_at_pos","signature":"get_line_column_at_pos(position: Vector2i, clamp_line: bool, clamp_column: bool) -> Vector2i","description":"Returns the line and column at the given position. In the returned vector, x is the column and y is the line.\n\t\t\t\tIf [param clamp_line] is false and [param position] is below the last line, Vector2i(-1, -1) is returned.\n\t\t\t\tIf [param clamp_column] is false and [param position] is outside the column range of the line, Vector2i(-1, -1) is returned.","returnType":"Vector2i"},{"name":"get_line_count","signature":"get_line_count() -> int","description":"Returns the number of lines in the text.","returnType":"int"},{"name":"get_line_gutter_icon","signature":"get_line_gutter_icon(line: int, gutter: int) -> Texture2D","description":"Returns the icon currently in [param gutter] at [param line]. This only works when the gutter type is [constant GUTTER_TYPE_ICON] (see [method set_gutter_type]).","returnType":"Texture2D"},{"name":"get_line_gutter_item_color","signature":"get_line_gutter_item_color(line: int, gutter: int) -> Color","description":"Returns the color currently in [param gutter] at [param line].","returnType":"Color"},{"name":"get_line_gutter_metadata","signature":"get_line_gutter_metadata(line: int, gutter: int) -> Variant","description":"Returns the metadata currently in [param gutter] at [param line].","returnType":"Variant"},{"name":"get_line_gutter_text","signature":"get_line_gutter_text(line: int, gutter: int) -> String","description":"Returns the text currently in [param gutter] at [param line]. This only works when the gutter type is [constant GUTTER_TYPE_STRING] (see [method set_gutter_type]).","returnType":"String"},{"name":"get_line_height","signature":"get_line_height() -> int","description":"Returns the maximum value of the line height among all lines.\n\t\t\t\tNote: The return value is influenced by [theme_item line_spacing] and [theme_item font_size]. And it will not be less than 1.","returnType":"int"},{"name":"get_line_ranges_from_carets","signature":"get_line_ranges_from_carets(only_selections: bool, merge_adjacent: bool) -> Vector2i[]","description":"Returns an  of line ranges where x is the first line and y is the last line. All lines within these ranges will have a caret on them or be part of a selection. Each line will only be part of one line range, even if it has multiple carets on it.\n\t\t\t\tIf a selection's end column ([method get_selection_to_column]) is at column 0, that line will not be included. If a selection begins on the line after another selection ends and [param merge_adjacent] is true, or they begin and end on the same line, one line range will include both selections.","returnType":"Vector2i[]"},{"name":"get_line_width","signature":"get_line_width(line: int, wrap_index: int) -> int","description":"Returns the width in pixels of the [param wrap_index] on [param line].","returnType":"int"},{"name":"get_line_with_ime","signature":"get_line_with_ime(line: int) -> String","description":"Returns line text as it is currently displayed, including IME composition string.","returnType":"String"},{"name":"get_line_wrap_count","signature":"get_line_wrap_count(line: int) -> int","description":"Returns the number of times the given line is wrapped.","returnType":"int"},{"name":"get_line_wrap_index_at_column","signature":"get_line_wrap_index_at_column(line: int, column: int) -> int","description":"Returns the wrap index of the given column on the given line. This ranges from 0 to [method get_line_wrap_count].","returnType":"int"},{"name":"get_line_wrapped_text","signature":"get_line_wrapped_text(line: int) -> PackedStringArray","description":"Returns an array of s representing each wrapped index.","returnType":"PackedStringArray"},{"name":"get_local_mouse_pos","signature":"get_local_mouse_pos() -> Vector2","description":"Returns the local mouse position adjusted for the text direction.","returnType":"Vector2"},{"name":"get_menu","signature":"get_menu() -> PopupMenu","description":"Returns the  of this . By default, this menu is displayed when right-clicking on the .\n\t\t\t\tYou can add custom menu items or remove standard ones. Make sure your IDs don't conflict with the standard ones (see [enum MenuItems]). For example:\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tfunc _ready():\n\t\t\t\t    var menu = get_menu()\n\t\t\t\t    # Remove all items after \"Redo\".\n\t\t\t\t    menu.item_count = menu.get_item_index(MENU_REDO) + 1\n\t\t\t\t    # Add custom items.\n\t\t\t\t    menu.add_separator()\n\t\t\t\t    menu.add_item(\"Insert Date\", MENU_MAX + 1)\n\t\t\t\t    # Connect callback.\n\t\t\t\t    menu.id_pressed.connect(_on_item_pressed)\n\n\t\t\t\tfunc _on_item_pressed(id):\n\t\t\t\t    if id == MENU_MAX + 1:\n\t\t\t\t        insert_text_at_caret(Time.get_date_string_from_system())\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tpublic override void _Ready()\n\t\t\t\t{\n\t\t\t\t    var menu = GetMenu();\n\t\t\t\t    // Remove all items after \"Redo\".\n\t\t\t\t    menu.ItemCount = menu.GetItemIndex(TextEdit.MenuItems.Redo) + 1;\n\t\t\t\t    // Add custom items.\n\t\t\t\t    menu.AddSeparator();\n\t\t\t\t    menu.AddItem(\"Insert Date\", TextEdit.MenuItems.Max + 1);\n\t\t\t\t    // Add event handler.\n\t\t\t\t    menu.IdPressed += OnItemPressed;\n\t\t\t\t}\n\n\t\t\t\tpublic void OnItemPressed(int id)\n\t\t\t\t{\n\t\t\t\t    if (id == TextEdit.MenuItems.Max + 1)\n\t\t\t\t    {\n\t\t\t\t        InsertTextAtCaret(Time.GetDateStringFromSystem());\n\t\t\t\t    }\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tWarning: This is a required internal node, removing and freeing it may cause a crash. If you wish to hide it or any of its children, use their [member Window.visible] property.","returnType":"PopupMenu"},{"name":"get_minimap_line_at_pos","signature":"get_minimap_line_at_pos(position: Vector2i) -> int","description":"Returns the equivalent minimap line at [param position].","returnType":"int"},{"name":"get_minimap_visible_lines","signature":"get_minimap_visible_lines() -> int","description":"Returns the number of lines that may be drawn on the minimap.","returnType":"int"},{"name":"get_next_visible_line_index_offset_from","signature":"get_next_visible_line_index_offset_from(line: int, wrap_index: int, visible_amount: int) -> Vector2i","description":"Similar to [method get_next_visible_line_offset_from], but takes into account the line wrap indexes. In the returned vector, x is the line, y is the wrap index.","returnType":"Vector2i"},{"name":"get_next_visible_line_offset_from","signature":"get_next_visible_line_offset_from(line: int, visible_amount: int) -> int","description":"Returns the count to the next visible line from [param line] to line + visible_amount. Can also count backwards. For example if a  has 5 lines with lines 2 and 3 hidden, calling this with line = 1, visible_amount = 1 would return 3.","returnType":"int"},{"name":"get_pos_at_line_column","signature":"get_pos_at_line_column(line: int, column: int) -> Vector2i","description":"Returns the local position for the given [param line] and [param column]. If x or y of the returned vector equal -1, the position is outside of the viewable area of the control.\n\t\t\t\tNote: The Y position corresponds to the bottom side of the line. Use [method get_rect_at_line_column] to get the top side position.","returnType":"Vector2i"},{"name":"get_rect_at_line_column","signature":"get_rect_at_line_column(line: int, column: int) -> Rect2i","description":"Returns the local position and size for the grapheme at the given [param line] and [param column]. If x or y position of the returned rect equal -1, the position is outside of the viewable area of the control.\n\t\t\t\tNote: The Y position of the returned rect corresponds to the top side of the line, unlike [method get_pos_at_line_column] which returns the bottom side.","returnType":"Rect2i"},{"name":"get_saved_version","signature":"get_saved_version() -> int","description":"Returns the last tagged saved version from [method tag_saved_version].","returnType":"int"},{"name":"get_scroll_pos_for_line","signature":"get_scroll_pos_for_line(line: int, wrap_index: int) -> float","description":"Returns the scroll position for [param wrap_index] of [param line].","returnType":"float"},{"name":"get_selected_text","signature":"get_selected_text(caret_index: int) -> String","description":"Returns the text inside the selection of a caret, or all the carets if [param caret_index] is its default value -1.","returnType":"String"},{"name":"get_selection_at_line_column","signature":"get_selection_at_line_column(line: int, column: int, include_edges: bool, only_selections: bool) -> int","description":"Returns the caret index of the selection at the given [param line] and [param column], or -1 if there is none.\n\t\t\t\tIf [param include_edges] is false, the position must be inside the selection and not at either end. If [param only_selections] is false, carets without a selection will also be considered.","returnType":"int"},{"name":"get_selection_column","signature":"get_selection_column(caret_index: int) -> int","description":"Returns the original start column of the selection.","returnType":"int"},{"name":"get_selection_from_column","signature":"get_selection_from_column(caret_index: int) -> int","description":"Returns the selection begin column. Returns the caret column if there is no selection.","returnType":"int"},{"name":"get_selection_from_line","signature":"get_selection_from_line(caret_index: int) -> int","description":"Returns the selection begin line. Returns the caret line if there is no selection.","returnType":"int"},{"name":"get_selection_line","signature":"get_selection_line(caret_index: int) -> int","description":"Returns the original start line of the selection.","returnType":"int"},{"name":"get_selection_mode","signature":"get_selection_mode() -> int","description":"Returns the current selection mode.","returnType":"int"},{"name":"get_selection_origin_column","signature":"get_selection_origin_column(caret_index: int) -> int","description":"Returns the origin column of the selection. This is the opposite end from the caret.","returnType":"int"},{"name":"get_selection_origin_line","signature":"get_selection_origin_line(caret_index: int) -> int","description":"Returns the origin line of the selection. This is the opposite end from the caret.","returnType":"int"},{"name":"get_selection_to_column","signature":"get_selection_to_column(caret_index: int) -> int","description":"Returns the selection end column. Returns the caret column if there is no selection.","returnType":"int"},{"name":"get_selection_to_line","signature":"get_selection_to_line(caret_index: int) -> int","description":"Returns the selection end line. Returns the caret line if there is no selection.","returnType":"int"},{"name":"get_sorted_carets","signature":"get_sorted_carets(include_ignored_carets: bool) -> PackedInt32Array","description":"Returns the carets sorted by selection beginning from lowest line and column to highest (from top to bottom of text).\n\t\t\t\tIf [param include_ignored_carets] is false, carets from [method multicaret_edit_ignore_caret] will be ignored.","returnType":"PackedInt32Array"},{"name":"get_tab_size","signature":"get_tab_size() -> int","description":"Returns the 's' tab size.","returnType":"int"},{"name":"get_total_gutter_width","signature":"get_total_gutter_width() -> int","description":"Returns the total width of all gutters and internal padding.","returnType":"int"},{"name":"get_total_visible_line_count","signature":"get_total_visible_line_count() -> int","description":"Returns the total number of lines in the text. This includes wrapped lines and excludes folded lines. If [member wrap_mode] is set to [constant LINE_WRAPPING_NONE] and no lines are folded (see [method CodeEdit.is_line_folded]) then this is equivalent to [method get_line_count]. See [method get_visible_line_count_in_range] for a limited range of lines.","returnType":"int"},{"name":"get_v_scroll_bar","signature":"get_v_scroll_bar() -> VScrollBar","description":"Returns the  of the .","returnType":"VScrollBar"},{"name":"get_version","signature":"get_version() -> int","description":"Returns the current version of the . The version is a count of recorded operations by the undo/redo history.","returnType":"int"},{"name":"get_visible_line_count","signature":"get_visible_line_count() -> int","description":"Returns the number of lines that can visually fit, rounded down, based on this control's height.","returnType":"int"},{"name":"get_visible_line_count_in_range","signature":"get_visible_line_count_in_range(from_line: int, to_line: int) -> int","description":"Returns the total number of lines between [param from_line] and [param to_line] (inclusive) in the text. This includes wrapped lines and excludes folded lines. If the range covers all lines it is equivalent to [method get_total_visible_line_count].","returnType":"int"},{"name":"get_word_at_pos","signature":"get_word_at_pos(position: Vector2) -> String","description":"Returns the word at [param position].","returnType":"String"},{"name":"get_word_under_caret","signature":"get_word_under_caret(caret_index: int) -> String","description":"Returns a  text with the word under the caret's location.","returnType":"String"},{"name":"has_ime_text","signature":"has_ime_text() -> bool","description":"Returns true if the user has text in the [url=https://en.wikipedia.org/wiki/Input_method]Input Method Editor (IME).","returnType":"bool"},{"name":"has_redo","signature":"has_redo() -> bool","description":"Returns true if a \"redo\" action is available.","returnType":"bool"},{"name":"has_selection","signature":"has_selection(caret_index: int) -> bool","description":"Returns true if the user has selected text.","returnType":"bool"},{"name":"has_undo","signature":"has_undo() -> bool","description":"Returns true if an \"undo\" action is available.","returnType":"bool"},{"name":"insert_line_at","signature":"insert_line_at(line: int, text: String) -> void","description":"Inserts a new line with [param text] at [param line].","returnType":"void"},{"name":"insert_text","signature":"insert_text(text: String, line: int, column: int, before_selection_begin: bool, before_selection_end: bool) -> void","description":"Inserts the [param text] at [param line] and [param column].\n\t\t\t\tIf [param before_selection_begin] is true, carets and selections that begin at [param line] and [param column] will moved to the end of the inserted text, along with all carets after it.\n\t\t\t\tIf [param before_selection_end] is true, selections that end at [param line] and [param column] will be extended to the end of the inserted text. These parameters can be used to insert text inside of or outside of selections.","returnType":"void"},{"name":"insert_text_at_caret","signature":"insert_text_at_caret(text: String, caret_index: int) -> void","description":"Insert the specified text at the caret position.","returnType":"void"},{"name":"is_caret_after_selection_origin","signature":"is_caret_after_selection_origin(caret_index: int) -> bool","description":"Returns true if the caret of the selection is after the selection origin. This can be used to determine the direction of the selection.","returnType":"bool"},{"name":"is_caret_visible","signature":"is_caret_visible(caret_index: int) -> bool","description":"Returns true if the caret is visible, false otherwise. A caret will be considered hidden if it is outside the scrollable area when scrolling is enabled.\n\t\t\t\tNote: [method is_caret_visible] does not account for a caret being off-screen if it is still within the scrollable area. It will return true even if the caret is off-screen as long as it meets 's own conditions for being visible. This includes uses of [member scroll_fit_content_width] and [member scroll_fit_content_height] that cause the  to expand beyond the viewport's bounds.","returnType":"bool"},{"name":"is_dragging_cursor","signature":"is_dragging_cursor() -> bool","description":"Returns true if the user is dragging their mouse for scrolling, selecting, or text dragging.","returnType":"bool"},{"name":"is_gutter_clickable","signature":"is_gutter_clickable(gutter: int) -> bool","description":"Returns true if the gutter at the given index is clickable. See [method set_gutter_clickable].","returnType":"bool"},{"name":"is_gutter_drawn","signature":"is_gutter_drawn(gutter: int) -> bool","description":"Returns true if the gutter at the given index is currently drawn. See [method set_gutter_draw].","returnType":"bool"},{"name":"is_gutter_overwritable","signature":"is_gutter_overwritable(gutter: int) -> bool","description":"Returns true if the gutter at the given index is overwritable. See [method set_gutter_overwritable].","returnType":"bool"},{"name":"is_in_mulitcaret_edit","signature":"is_in_mulitcaret_edit() -> bool","description":"Returns true if a [method begin_multicaret_edit] has been called and [method end_multicaret_edit] has not yet been called.","returnType":"bool"},{"name":"is_line_gutter_clickable","signature":"is_line_gutter_clickable(line: int, gutter: int) -> bool","description":"Returns true if the gutter at the given index on the given line is clickable. See [method set_line_gutter_clickable].","returnType":"bool"},{"name":"is_line_wrapped","signature":"is_line_wrapped(line: int) -> bool","description":"Returns if the given line is wrapped.","returnType":"bool"},{"name":"is_menu_visible","signature":"is_menu_visible() -> bool","description":"Returns true if the menu is visible. Use this instead of get_menu().visible to improve performance (so the creation of the menu is avoided). See [method get_menu].","returnType":"bool"},{"name":"is_mouse_over_selection","signature":"is_mouse_over_selection(edges: bool, caret_index: int) -> bool","description":"Returns true if the mouse is over a selection. If [param edges] is true, the edges are considered part of the selection.","returnType":"bool"},{"name":"is_overtype_mode_enabled","signature":"is_overtype_mode_enabled() -> bool","description":"Returns true if overtype mode is enabled. See [method set_overtype_mode_enabled].","returnType":"bool"},{"name":"menu_option","signature":"menu_option(option: int) -> void","description":"Executes a given action as defined in the [enum MenuItems] enum.","returnType":"void"},{"name":"merge_gutters","signature":"merge_gutters(from_line: int, to_line: int) -> void","description":"Merge the gutters from [param from_line] into [param to_line]. Only overwritable gutters will be copied. See [method set_gutter_overwritable].","returnType":"void"},{"name":"merge_overlapping_carets","signature":"merge_overlapping_carets() -> void","description":"Merges any overlapping carets. Will favor the newest caret, or the caret with a selection.\n\t\t\t\tIf [method is_in_mulitcaret_edit] is true, the merge will be queued to happen at the end of the multicaret edit. See [method begin_multicaret_edit] and [method end_multicaret_edit].\n\t\t\t\tNote: This is not called when a caret changes position but after certain actions, so it is possible to get into a state where carets overlap.","returnType":"void"},{"name":"multicaret_edit_ignore_caret","signature":"multicaret_edit_ignore_caret(caret_index: int) -> bool","description":"Returns true if the given [param caret_index] should be ignored as part of a multicaret edit. See [method begin_multicaret_edit] and [method end_multicaret_edit]. Carets that should be ignored are ones that were part of removed text and will likely be merged at the end of the edit, or carets that were added during the edit.\n\t\t\t\tIt is recommended to continue within a loop iterating on multiple carets if a caret should be ignored.","returnType":"bool"},{"name":"paste","signature":"paste(caret_index: int) -> void","description":"Paste at the current location. Can be overridden with [method _paste].","returnType":"void"},{"name":"paste_primary_clipboard","signature":"paste_primary_clipboard(caret_index: int) -> void","description":"Pastes the primary clipboard.","returnType":"void"},{"name":"redo","signature":"redo() -> void","description":"Perform redo operation.","returnType":"void"},{"name":"remove_caret","signature":"remove_caret(caret: int) -> void","description":"Removes the given caret index.\n\t\t\t\tNote: This can result in adjustment of all other caret indices.","returnType":"void"},{"name":"remove_gutter","signature":"remove_gutter(gutter: int) -> void","description":"Removes the gutter at the given index.","returnType":"void"},{"name":"remove_line_at","signature":"remove_line_at(line: int, move_carets_down: bool) -> void","description":"Removes the line of text at [param line]. Carets on this line will attempt to match their previous visual x position.\n\t\t\t\tIf [param move_carets_down] is true carets will move to the next line down, otherwise carets will move up.","returnType":"void"},{"name":"remove_secondary_carets","signature":"remove_secondary_carets() -> void","description":"Removes all additional carets.","returnType":"void"},{"name":"remove_text","signature":"remove_text(from_line: int, from_column: int, to_line: int, to_column: int) -> void","description":"Removes text between the given positions.","returnType":"void"},{"name":"search","signature":"search(text: String, flags: int, from_line: int, from_column: int) -> Vector2i","description":"Perform a search inside the text. Search flags can be specified in the [enum SearchFlags] enum.\n\t\t\t\tIn the returned vector, x is the column, y is the line. If no results are found, both are equal to -1.\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tvar result = search(\"print\", SEARCH_WHOLE_WORDS, 0, 0)\n\t\t\t\tif result.x != -1:\n\t\t\t\t    # Result found.\n\t\t\t\t    var line_number = result.y\n\t\t\t\t    var column_number = result.x\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tVector2I result = Search(\"print\", (uint)TextEdit.SearchFlags.WholeWords, 0, 0);\n\t\t\t\tif (result.X != -1)\n\t\t\t\t{\n\t\t\t\t    // Result found.\n\t\t\t\t    int lineNumber = result.Y;\n\t\t\t\t    int columnNumber = result.X;\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t","returnType":"Vector2i"},{"name":"select","signature":"select(origin_line: int, origin_column: int, caret_line: int, caret_column: int, caret_index: int) -> void","description":"Selects text from [param origin_line] and [param origin_column] to [param caret_line] and [param caret_column] for the given [param caret_index]. This moves the selection origin and the caret. If the positions are the same, the selection will be deselected.\n\t\t\t\tIf [member selecting_enabled] is false, no selection will occur.\n\t\t\t\tNote: If supporting multiple carets this will not check for any overlap. See [method merge_overlapping_carets].","returnType":"void"},{"name":"select_all","signature":"select_all() -> void","description":"Select all the text.\n\t\t\t\tIf [member selecting_enabled] is false, no selection will occur.","returnType":"void"},{"name":"select_word_under_caret","signature":"select_word_under_caret(caret_index: int) -> void","description":"Selects the word under the caret.","returnType":"void"},{"name":"set_caret_column","signature":"set_caret_column(column: int, adjust_viewport: bool, caret_index: int) -> void","description":"Moves the caret to the specified [param column] index.\n\t\t\t\tIf [param adjust_viewport] is true, the viewport will center at the caret position after the move occurs.\n\t\t\t\tNote: If supporting multiple carets this will not check for any overlap. See [method merge_overlapping_carets].","returnType":"void"},{"name":"set_caret_line","signature":"set_caret_line(line: int, adjust_viewport: bool, can_be_hidden: bool, wrap_index: int, caret_index: int) -> void","description":"Moves the caret to the specified [param line] index. The caret column will be moved to the same visual position it was at the last time [method set_caret_column] was called, or clamped to the end of the line.\n\t\t\t\tIf [param adjust_viewport] is true, the viewport will center at the caret position after the move occurs.\n\t\t\t\tIf [param can_be_hidden] is true, the specified [param line] can be hidden.\n\t\t\t\tIf [param wrap_index] is -1, the caret column will be clamped to the [param line]'s length. If [param wrap_index] is greater than -1, the column will be moved to attempt to match the visual x position on the line's [param wrap_index] to the position from the last time [method set_caret_column] was called.\n\t\t\t\tNote: If supporting multiple carets this will not check for any overlap. See [method merge_overlapping_carets].","returnType":"void"},{"name":"set_gutter_clickable","signature":"set_gutter_clickable(gutter: int, clickable: bool) -> void","description":"If true, the mouse cursor will change to a pointing hand ([constant Control.CURSOR_POINTING_HAND]) when hovering over the gutter at the given index. See [method is_gutter_clickable] and [method set_line_gutter_clickable].","returnType":"void"},{"name":"set_gutter_custom_draw","signature":"set_gutter_custom_draw(column: int, draw_callback: Callable) -> void","description":"Set a custom draw callback for the gutter at the given index. [param draw_callback] must take the following arguments: A line index , a gutter index , and an area . This callback only works when the gutter type is [constant GUTTER_TYPE_CUSTOM] (see [method set_gutter_type]).","returnType":"void"},{"name":"set_gutter_draw","signature":"set_gutter_draw(gutter: int, draw: bool) -> void","description":"If true, the gutter at the given index is drawn. The gutter type ([method set_gutter_type]) determines how it is drawn. See [method is_gutter_drawn].","returnType":"void"},{"name":"set_gutter_name","signature":"set_gutter_name(gutter: int, name: String) -> void","description":"Sets the name of the gutter at the given index.","returnType":"void"},{"name":"set_gutter_overwritable","signature":"set_gutter_overwritable(gutter: int, overwritable: bool) -> void","description":"If true, the line data of the gutter at the given index can be overridden when using [method merge_gutters]. See [method is_gutter_overwritable].","returnType":"void"},{"name":"set_gutter_type","signature":"set_gutter_type(gutter: int, type: int) -> void","description":"Sets the type of gutter at the given index. Gutters can contain icons, text, or custom visuals. See [enum TextEdit.GutterType] for options.","returnType":"void"},{"name":"set_gutter_width","signature":"set_gutter_width(gutter: int, width: int) -> void","description":"Set the width of the gutter at the given index.","returnType":"void"},{"name":"set_line","signature":"set_line(line: int, new_text: String) -> void","description":"Sets the text for a specific [param line].\n\t\t\t\tCarets on the line will attempt to keep their visual x position.","returnType":"void"},{"name":"set_line_as_center_visible","signature":"set_line_as_center_visible(line: int, wrap_index: int) -> void","description":"Positions the [param wrap_index] of [param line] at the center of the viewport.","returnType":"void"},{"name":"set_line_as_first_visible","signature":"set_line_as_first_visible(line: int, wrap_index: int) -> void","description":"Positions the [param wrap_index] of [param line] at the top of the viewport.","returnType":"void"},{"name":"set_line_as_last_visible","signature":"set_line_as_last_visible(line: int, wrap_index: int) -> void","description":"Positions the [param wrap_index] of [param line] at the bottom of the viewport.","returnType":"void"},{"name":"set_line_background_color","signature":"set_line_background_color(line: int, color: Color) -> void","description":"Sets the custom background color of the given line. If transparent, this color is applied on top of the default background color (See [theme_item background_color]). If set to Color(0, 0, 0, 0), no additional color is applied.","returnType":"void"},{"name":"set_line_gutter_clickable","signature":"set_line_gutter_clickable(line: int, gutter: int, clickable: bool) -> void","description":"If [param clickable] is true, makes the [param gutter] on the given [param line] clickable. This is like [method set_gutter_clickable], but for a single line. If [method is_gutter_clickable] is true, this will not have any effect. See [method is_line_gutter_clickable] and [signal gutter_clicked].","returnType":"void"},{"name":"set_line_gutter_icon","signature":"set_line_gutter_icon(line: int, gutter: int, icon: Texture2D) -> void","description":"Sets the icon for [param gutter] on [param line] to [param icon]. This only works when the gutter type is [constant GUTTER_TYPE_ICON] (see [method set_gutter_type]).","returnType":"void"},{"name":"set_line_gutter_item_color","signature":"set_line_gutter_item_color(line: int, gutter: int, color: Color) -> void","description":"Sets the color for [param gutter] on [param line] to [param color].","returnType":"void"},{"name":"set_line_gutter_metadata","signature":"set_line_gutter_metadata(line: int, gutter: int, metadata: Variant) -> void","description":"Sets the metadata for [param gutter] on [param line] to [param metadata].","returnType":"void"},{"name":"set_line_gutter_text","signature":"set_line_gutter_text(line: int, gutter: int, text: String) -> void","description":"Sets the text for [param gutter] on [param line] to [param text]. This only works when the gutter type is [constant GUTTER_TYPE_STRING] (see [method set_gutter_type]).","returnType":"void"},{"name":"set_overtype_mode_enabled","signature":"set_overtype_mode_enabled(enabled: bool) -> void","description":"If true, enables overtype mode. In this mode, typing overrides existing text instead of inserting text. The [member ProjectSettings.input/ui_text_toggle_insert_mode] action toggles overtype mode. See [method is_overtype_mode_enabled].","returnType":"void"},{"name":"set_search_flags","signature":"set_search_flags(flags: int) -> void","description":"Sets the search [param flags]. This is used with [method set_search_text] to highlight occurrences of the searched text. Search flags can be specified from the [enum SearchFlags] enum.","returnType":"void"},{"name":"set_search_text","signature":"set_search_text(search_text: String) -> void","description":"Sets the search text. See [method set_search_flags].","returnType":"void"},{"name":"set_selection_mode","signature":"set_selection_mode(mode: int) -> void","description":"Sets the current selection mode.","returnType":"void"},{"name":"set_selection_origin_column","signature":"set_selection_origin_column(column: int, caret_index: int) -> void","description":"Sets the selection origin column to the [param column] for the given [param caret_index]. If the selection origin is moved to the caret position, the selection will deselect.","returnType":"void"},{"name":"set_selection_origin_line","signature":"set_selection_origin_line(line: int, can_be_hidden: bool, wrap_index: int, caret_index: int) -> void","description":"Sets the selection origin line to the [param line] for the given [param caret_index]. If the selection origin is moved to the caret position, the selection will deselect.\n\t\t\t\tIf [param can_be_hidden] is false, The line will be set to the nearest unhidden line below or above.\n\t\t\t\tIf [param wrap_index] is -1, the selection origin column will be clamped to the [param line]'s length. If [param wrap_index] is greater than -1, the column will be moved to attempt to match the visual x position on the line's [param wrap_index] to the position from the last time [method set_selection_origin_column] or [method select] was called.","returnType":"void"},{"name":"set_tab_size","signature":"set_tab_size(size: int) -> void","description":"Sets the tab size for the  to use.","returnType":"void"},{"name":"set_tooltip_request_func","signature":"set_tooltip_request_func(callback: Callable) -> void","description":"Provide custom tooltip text. The callback method must take the following args: hovered_word: String.","returnType":"void"},{"name":"skip_selection_for_next_occurrence","signature":"skip_selection_for_next_occurrence() -> void","description":"Moves a selection and a caret for the next occurrence of the current selection. If there is no active selection, moves to the next occurrence of the word under caret.","returnType":"void"},{"name":"start_action","signature":"start_action(action: int) -> void","description":"Starts an action, will end the current action if [param action] is different.\n\t\t\t\tAn action will also end after a call to [method end_action], after [member ProjectSettings.gui/timers/text_edit_idle_detect_sec] is triggered or a new undoable step outside the [method start_action] and [method end_action] calls.","returnType":"void"},{"name":"swap_lines","signature":"swap_lines(from_line: int, to_line: int) -> void","description":"Swaps the two lines. Carets will be swapped with the lines.","returnType":"void"},{"name":"tag_saved_version","signature":"tag_saved_version() -> void","description":"Tag the current version as saved.","returnType":"void"},{"name":"undo","signature":"undo() -> void","description":"Perform undo operation.","returnType":"void"}],"signals":[{"name":"caret_changed","description":"Emitted when any caret changes position."},{"name":"gutter_added","description":"Emitted when a gutter is added."},{"name":"gutter_clicked","description":"Emitted when a gutter is clicked."},{"name":"gutter_removed","description":"Emitted when a gutter is removed."},{"name":"lines_edited_from","description":"Emitted immediately when the text changes.\n\t\t\t\tWhen text is added [param from_line] will be less than [param to_line]. On a remove [param to_line] will be less than [param from_line]."},{"name":"text_changed","description":"Emitted when the text changes."},{"name":"text_set","description":"Emitted when [method clear] is called or [member text] is set."}]},"TextLine":{"name":"TextLine","description":"Holds a line of text.","inherits":"RefCounted","properties":[{"name":"alignment","type":"int","description":"Sets text alignment within the line as if the line was horizontal."},{"name":"direction","type":"int","description":"Text writing direction."},{"name":"ellipsis_char","type":"String","description":"Ellipsis character used for text clipping."},{"name":"flags","type":"int","description":"Line alignment rules. For more info see [TextServer]."},{"name":"orientation","type":"int","description":"Text orientation."},{"name":"preserve_control","type":"bool","description":"If set to [code]true[/code] text will display control characters."},{"name":"preserve_invalid","type":"bool","description":"If set to [code]true[/code] text will display invalid characters."},{"name":"text_overrun_behavior","type":"int","description":"Sets the clipping behavior when the text exceeds the text line's set width. See [enum TextServer.OverrunBehavior] for a description of all modes."},{"name":"width","type":"float","description":"Text line width."}],"methods":[{"name":"add_object","signature":"add_object(key: Variant, size: Vector2, inline_align: int, length: int, baseline: float) -> bool","description":"Adds inline object to the text buffer, [param key] must be unique. In the text, object is represented as [param length] object replacement characters.","returnType":"bool"},{"name":"add_string","signature":"add_string(text: String, font: Font, font_size: int, language: String, meta: Variant) -> bool","description":"Adds text span and font to draw it.","returnType":"bool"},{"name":"clear","signature":"clear() -> void","description":"Clears text line (removes text and inline objects).","returnType":"void"},{"name":"draw","signature":"draw(canvas: RID, pos: Vector2, color: Color) -> void","description":"Draw text into a canvas item at a given position, with [param color]. [param pos] specifies the top left corner of the bounding box.","returnType":"void"},{"name":"draw_outline","signature":"draw_outline(canvas: RID, pos: Vector2, outline_size: int, color: Color) -> void","description":"Draw text into a canvas item at a given position, with [param color]. [param pos] specifies the top left corner of the bounding box.","returnType":"void"},{"name":"get_line_ascent","signature":"get_line_ascent() -> float","description":"Returns the text ascent (number of pixels above the baseline for horizontal layout or to the left of baseline for vertical).","returnType":"float"},{"name":"get_line_descent","signature":"get_line_descent() -> float","description":"Returns the text descent (number of pixels below the baseline for horizontal layout or to the right of baseline for vertical).","returnType":"float"},{"name":"get_line_underline_position","signature":"get_line_underline_position() -> float","description":"Returns pixel offset of the underline below the baseline.","returnType":"float"},{"name":"get_line_underline_thickness","signature":"get_line_underline_thickness() -> float","description":"Returns thickness of the underline.","returnType":"float"},{"name":"get_line_width","signature":"get_line_width() -> float","description":"Returns width (for horizontal layout) or height (for vertical) of the text.","returnType":"float"},{"name":"get_object_rect","signature":"get_object_rect(key: Variant) -> Rect2","description":"Returns bounding rectangle of the inline object.","returnType":"Rect2"},{"name":"get_objects","signature":"get_objects() -> Array","description":"Returns array of inline objects.","returnType":"Array"},{"name":"get_rid","signature":"get_rid() -> RID","description":"Returns TextServer buffer RID.","returnType":"RID"},{"name":"get_size","signature":"get_size() -> Vector2","description":"Returns size of the bounding box of the text.","returnType":"Vector2"},{"name":"hit_test","signature":"hit_test(coords: float) -> int","description":"Returns caret character offset at the specified pixel offset at the baseline. This function always returns a valid position.","returnType":"int"},{"name":"resize_object","signature":"resize_object(key: Variant, size: Vector2, inline_align: int, baseline: float) -> bool","description":"Sets new size and alignment of embedded object.","returnType":"bool"},{"name":"set_bidi_override","signature":"set_bidi_override(override: Array) -> void","description":"Overrides BiDi for the structured text.\n\t\t\t\tOverride ranges should cover full source text without overlaps. BiDi algorithm will be used on each range separately.","returnType":"void"},{"name":"tab_align","signature":"tab_align(tab_stops: PackedFloat32Array) -> void","description":"Aligns text to the given tab-stops.","returnType":"void"}],"signals":[]},"TextMesh":{"name":"TextMesh","description":"Generate an  from the text.","inherits":"PrimitiveMesh","properties":[{"name":"autowrap_mode","type":"int","description":"If set to something other than [constant TextServer.AUTOWRAP_OFF], the text gets wrapped inside the node's bounding rectangle. If you resize the node, it will change its height automatically to show all the text. To see how each mode behaves, see [enum TextServer.AutowrapMode]."},{"name":"curve_step","type":"float","description":"Step (in pixels) used to approximate Bézier curves."},{"name":"depth","type":"float","description":"Depths of the mesh, if set to [code]0.0[/code] only front surface, is generated, and UV layout is changed to use full texture for the front face only."},{"name":"font","type":"Font","description":"Font configuration used to display text."},{"name":"font_size","type":"int","description":"Font size of the [TextMesh]'s text."},{"name":"horizontal_alignment","type":"int","description":"Controls the text's horizontal alignment. Supports left, center, right, and fill, or justify. Set it to one of the [enum HorizontalAlignment] constants."},{"name":"justification_flags","type":"int","description":"Line fill alignment rules. See [enum TextServer.JustificationFlag] for more information."},{"name":"language","type":"String","description":"Language code used for text shaping algorithms, if left empty current locale is used instead."},{"name":"line_spacing","type":"float","description":"Additional vertical spacing between lines (in pixels), spacing is added to line descent. This value can be negative."},{"name":"offset","type":"Vector2","description":"The text drawing offset (in pixels)."},{"name":"pixel_size","type":"float","description":"The size of one pixel's width on the text to scale it in 3D."},{"name":"structured_text_bidi_override","type":"int","description":"Set BiDi algorithm override for the structured text."},{"name":"structured_text_bidi_override_options","type":"Array","description":"Set additional options for BiDi override."},{"name":"text","type":"String","description":"The text to generate mesh from.\n\t\t\t[b]Note:[/b] Due to being a [Resource], it doesn't follow the rules of [member Node.auto_translate_mode]. If disabling translation is desired, it should be done manually with [method Object.set_message_translation]."},{"name":"text_direction","type":"int","description":"Base text writing direction."},{"name":"uppercase","type":"bool","description":"If [code]true[/code], all the text displays as UPPERCASE."},{"name":"vertical_alignment","type":"int","description":"Controls the text's vertical alignment. Supports top, center, bottom. Set it to one of the [enum VerticalAlignment] constants."},{"name":"width","type":"float","description":"Text width (in pixels), used for fill alignment."}],"methods":[],"signals":[]},"TextParagraph":{"name":"TextParagraph","description":"Holds a paragraph of text.","inherits":"RefCounted","properties":[{"name":"alignment","type":"int","description":"Paragraph horizontal alignment."},{"name":"break_flags","type":"int","description":"Line breaking rules. For more info see [TextServer]."},{"name":"custom_punctuation","type":"String","description":"Custom punctuation character list, used for word breaking. If set to empty string, server defaults are used."},{"name":"direction","type":"int","description":"Text writing direction."},{"name":"ellipsis_char","type":"String","description":"Ellipsis character used for text clipping."},{"name":"justification_flags","type":"int","description":"Line fill alignment rules. See [enum TextServer.JustificationFlag] for more information."},{"name":"line_spacing","type":"float","description":"Additional vertical spacing between lines (in pixels), spacing is added to line descent. This value can be negative."},{"name":"max_lines_visible","type":"int","description":"Limits the lines of text shown."},{"name":"orientation","type":"int","description":"Text orientation."},{"name":"preserve_control","type":"bool","description":"If set to [code]true[/code] text will display control characters."},{"name":"preserve_invalid","type":"bool","description":"If set to [code]true[/code] text will display invalid characters."},{"name":"text_overrun_behavior","type":"int","description":"Sets the clipping behavior when the text exceeds the paragraph's set width. See [enum TextServer.OverrunBehavior] for a description of all modes."},{"name":"width","type":"float","description":"Paragraph width."}],"methods":[{"name":"add_object","signature":"add_object(key: Variant, size: Vector2, inline_align: int, length: int, baseline: float) -> bool","description":"Adds inline object to the text buffer, [param key] must be unique. In the text, object is represented as [param length] object replacement characters.","returnType":"bool"},{"name":"add_string","signature":"add_string(text: String, font: Font, font_size: int, language: String, meta: Variant) -> bool","description":"Adds text span and font to draw it.","returnType":"bool"},{"name":"clear","signature":"clear() -> void","description":"Clears text paragraph (removes text and inline objects).","returnType":"void"},{"name":"clear_dropcap","signature":"clear_dropcap() -> void","description":"Removes dropcap.","returnType":"void"},{"name":"draw","signature":"draw(canvas: RID, pos: Vector2, color: Color, dc_color: Color) -> void","description":"Draw all lines of the text and drop cap into a canvas item at a given position, with [param color]. [param pos] specifies the top left corner of the bounding box.","returnType":"void"},{"name":"draw_dropcap","signature":"draw_dropcap(canvas: RID, pos: Vector2, color: Color) -> void","description":"Draw drop cap into a canvas item at a given position, with [param color]. [param pos] specifies the top left corner of the bounding box.","returnType":"void"},{"name":"draw_dropcap_outline","signature":"draw_dropcap_outline(canvas: RID, pos: Vector2, outline_size: int, color: Color) -> void","description":"Draw drop cap outline into a canvas item at a given position, with [param color]. [param pos] specifies the top left corner of the bounding box.","returnType":"void"},{"name":"draw_line","signature":"draw_line(canvas: RID, pos: Vector2, line: int, color: Color) -> void","description":"Draw single line of text into a canvas item at a given position, with [param color]. [param pos] specifies the top left corner of the bounding box.","returnType":"void"},{"name":"draw_line_outline","signature":"draw_line_outline(canvas: RID, pos: Vector2, line: int, outline_size: int, color: Color) -> void","description":"Draw outline of the single line of text into a canvas item at a given position, with [param color]. [param pos] specifies the top left corner of the bounding box.","returnType":"void"},{"name":"draw_outline","signature":"draw_outline(canvas: RID, pos: Vector2, outline_size: int, color: Color, dc_color: Color) -> void","description":"Draw outlines of all lines of the text and drop cap into a canvas item at a given position, with [param color]. [param pos] specifies the top left corner of the bounding box.","returnType":"void"},{"name":"get_dropcap_lines","signature":"get_dropcap_lines() -> int","description":"Returns number of lines used by dropcap.","returnType":"int"},{"name":"get_dropcap_rid","signature":"get_dropcap_rid() -> RID","description":"Returns drop cap text buffer RID.","returnType":"RID"},{"name":"get_dropcap_size","signature":"get_dropcap_size() -> Vector2","description":"Returns drop cap bounding box size.","returnType":"Vector2"},{"name":"get_line_ascent","signature":"get_line_ascent(line: int) -> float","description":"Returns the text line ascent (number of pixels above the baseline for horizontal layout or to the left of baseline for vertical).","returnType":"float"},{"name":"get_line_count","signature":"get_line_count() -> int","description":"Returns number of lines in the paragraph.","returnType":"int"},{"name":"get_line_descent","signature":"get_line_descent(line: int) -> float","description":"Returns the text line descent (number of pixels below the baseline for horizontal layout or to the right of baseline for vertical).","returnType":"float"},{"name":"get_line_object_rect","signature":"get_line_object_rect(line: int, key: Variant) -> Rect2","description":"Returns bounding rectangle of the inline object.","returnType":"Rect2"},{"name":"get_line_objects","signature":"get_line_objects(line: int) -> Array","description":"Returns array of inline objects in the line.","returnType":"Array"},{"name":"get_line_range","signature":"get_line_range(line: int) -> Vector2i","description":"Returns character range of the line.","returnType":"Vector2i"},{"name":"get_line_rid","signature":"get_line_rid(line: int) -> RID","description":"Returns TextServer line buffer RID.","returnType":"RID"},{"name":"get_line_size","signature":"get_line_size(line: int) -> Vector2","description":"Returns size of the bounding box of the line of text. Returned size is rounded up.","returnType":"Vector2"},{"name":"get_line_underline_position","signature":"get_line_underline_position(line: int) -> float","description":"Returns pixel offset of the underline below the baseline.","returnType":"float"},{"name":"get_line_underline_thickness","signature":"get_line_underline_thickness(line: int) -> float","description":"Returns thickness of the underline.","returnType":"float"},{"name":"get_line_width","signature":"get_line_width(line: int) -> float","description":"Returns width (for horizontal layout) or height (for vertical) of the line of text.","returnType":"float"},{"name":"get_non_wrapped_size","signature":"get_non_wrapped_size() -> Vector2","description":"Returns the size of the bounding box of the paragraph, without line breaks.","returnType":"Vector2"},{"name":"get_rid","signature":"get_rid() -> RID","description":"Returns TextServer full string buffer RID.","returnType":"RID"},{"name":"get_size","signature":"get_size() -> Vector2","description":"Returns the size of the bounding box of the paragraph.","returnType":"Vector2"},{"name":"hit_test","signature":"hit_test(coords: Vector2) -> int","description":"Returns caret character offset at the specified coordinates. This function always returns a valid position.","returnType":"int"},{"name":"resize_object","signature":"resize_object(key: Variant, size: Vector2, inline_align: int, baseline: float) -> bool","description":"Sets new size and alignment of embedded object.","returnType":"bool"},{"name":"set_bidi_override","signature":"set_bidi_override(override: Array) -> void","description":"Overrides BiDi for the structured text.\n\t\t\t\tOverride ranges should cover full source text without overlaps. BiDi algorithm will be used on each range separately.","returnType":"void"},{"name":"set_dropcap","signature":"set_dropcap(text: String, font: Font, font_size: int, dropcap_margins: Rect2, language: String) -> bool","description":"Sets drop cap, overrides previously set drop cap. Drop cap (dropped capital) is a decorative element at the beginning of a paragraph that is larger than the rest of the text.","returnType":"bool"},{"name":"tab_align","signature":"tab_align(tab_stops: PackedFloat32Array) -> void","description":"Aligns paragraph to the given tab-stops.","returnType":"void"}],"signals":[]},"TextServer":{"name":"TextServer","description":"A server interface for font management and text rendering.","inherits":"RefCounted","properties":[],"methods":[{"name":"create_font","signature":"create_font() -> RID","description":"Creates a new, empty font cache entry resource. To free the resulting resource, use the [method free_rid] method.","returnType":"RID"},{"name":"create_font_linked_variation","signature":"create_font_linked_variation(font_rid: RID) -> RID","description":"Creates a new variation existing font which is reusing the same glyph cache and font data. To free the resulting resource, use the [method free_rid] method.","returnType":"RID"},{"name":"create_shaped_text","signature":"create_shaped_text(direction: int, orientation: int) -> RID","description":"Creates a new buffer for complex text layout, with the given [param direction] and [param orientation]. To free the resulting buffer, use [method free_rid] method.\n\t\t\t\tNote: Direction is ignored if server does not support [constant FEATURE_BIDI_LAYOUT] feature (supported by ).\n\t\t\t\tNote: Orientation is ignored if server does not support [constant FEATURE_VERTICAL_LAYOUT] feature (supported by ).","returnType":"RID"},{"name":"draw_hex_code_box","signature":"draw_hex_code_box(canvas: RID, size: int, pos: Vector2, index: int, color: Color) -> void","description":"Draws box displaying character hexadecimal code. Used for replacing missing characters.","returnType":"void"},{"name":"font_clear_glyphs","signature":"font_clear_glyphs(font_rid: RID, size: Vector2i) -> void","description":"Removes all rendered glyph information from the cache entry.\n\t\t\t\tNote: This function will not remove textures associated with the glyphs, use [method font_remove_texture] to remove them manually.","returnType":"void"},{"name":"font_clear_kerning_map","signature":"font_clear_kerning_map(font_rid: RID, size: int) -> void","description":"Removes all kerning overrides.","returnType":"void"},{"name":"font_clear_size_cache","signature":"font_clear_size_cache(font_rid: RID) -> void","description":"Removes all font sizes from the cache entry.","returnType":"void"},{"name":"font_clear_textures","signature":"font_clear_textures(font_rid: RID, size: Vector2i) -> void","description":"Removes all textures from font cache entry.\n\t\t\t\tNote: This function will not remove glyphs associated with the texture, use [method font_remove_glyph] to remove them manually.","returnType":"void"},{"name":"font_draw_glyph","signature":"font_draw_glyph(font_rid: RID, canvas: RID, size: int, pos: Vector2, index: int, color: Color) -> void","description":"Draws single glyph into a canvas item at the position, using [param font_rid] at the size [param size].\n\t\t\t\tNote: Glyph index is specific to the font, use glyphs indices returned by [method shaped_text_get_glyphs] or [method font_get_glyph_index].\n\t\t\t\tNote: If there are pending glyphs to render, calling this function might trigger the texture cache update.","returnType":"void"},{"name":"font_draw_glyph_outline","signature":"font_draw_glyph_outline(font_rid: RID, canvas: RID, size: int, outline_size: int, pos: Vector2, index: int, color: Color) -> void","description":"Draws single glyph outline of size [param outline_size] into a canvas item at the position, using [param font_rid] at the size [param size].\n\t\t\t\tNote: Glyph index is specific to the font, use glyphs indices returned by [method shaped_text_get_glyphs] or [method font_get_glyph_index].\n\t\t\t\tNote: If there are pending glyphs to render, calling this function might trigger the texture cache update.","returnType":"void"},{"name":"font_get_antialiasing","signature":"font_get_antialiasing(font_rid: RID) -> int","description":"Returns font anti-aliasing mode.","returnType":"int"},{"name":"font_get_ascent","signature":"font_get_ascent(font_rid: RID, size: int) -> float","description":"Returns the font ascent (number of pixels above the baseline).","returnType":"float"},{"name":"font_get_baseline_offset","signature":"font_get_baseline_offset(font_rid: RID) -> float","description":"Returns extra baseline offset (as a fraction of font height).","returnType":"float"},{"name":"font_get_char_from_glyph_index","signature":"font_get_char_from_glyph_index(font_rid: RID, size: int, glyph_index: int) -> int","description":"Returns character code associated with [param glyph_index], or 0 if [param glyph_index] is invalid. See [method font_get_glyph_index].","returnType":"int"},{"name":"font_get_descent","signature":"font_get_descent(font_rid: RID, size: int) -> float","description":"Returns the font descent (number of pixels below the baseline).","returnType":"float"},{"name":"font_get_disable_embedded_bitmaps","signature":"font_get_disable_embedded_bitmaps(font_rid: RID) -> bool","description":"Returns whether the font's embedded bitmap loading is disabled.","returnType":"bool"},{"name":"font_get_embolden","signature":"font_get_embolden(font_rid: RID) -> float","description":"Returns font embolden strength.","returnType":"float"},{"name":"font_get_face_count","signature":"font_get_face_count(font_rid: RID) -> int","description":"Returns number of faces in the TrueType / OpenType collection.","returnType":"int"},{"name":"font_get_face_index","signature":"font_get_face_index(font_rid: RID) -> int","description":"Returns an active face index in the TrueType / OpenType collection.","returnType":"int"},{"name":"font_get_fixed_size","signature":"font_get_fixed_size(font_rid: RID) -> int","description":"Returns bitmap font fixed size.","returnType":"int"},{"name":"font_get_fixed_size_scale_mode","signature":"font_get_fixed_size_scale_mode(font_rid: RID) -> int","description":"Returns bitmap font scaling mode.","returnType":"int"},{"name":"font_get_generate_mipmaps","signature":"font_get_generate_mipmaps(font_rid: RID) -> bool","description":"Returns true if font texture mipmap generation is enabled.","returnType":"bool"},{"name":"font_get_global_oversampling","signature":"font_get_global_oversampling() -> float","description":"Returns the font oversampling factor, shared by all fonts in the TextServer.","returnType":"float"},{"name":"font_get_glyph_advance","signature":"font_get_glyph_advance(font_rid: RID, size: int, glyph: int) -> Vector2","description":"Returns glyph advance (offset of the next glyph).\n\t\t\t\tNote: Advance for glyphs outlines is the same as the base glyph advance and is not saved.","returnType":"Vector2"},{"name":"font_get_glyph_contours","signature":"font_get_glyph_contours(font: RID, size: int, index: int) -> Dictionary","description":"Returns outline contours of the glyph as a  with the following contents:\n\t\t\t\tpoints         - , containing outline points. x and y are point coordinates. z is the type of the point, using the [enum ContourPointTag] values.\n\t\t\t\tcontours       - , containing indices the end points of each contour.\n\t\t\t\torientation    - , contour orientation. If true, clockwise contours must be filled.\n\t\t\t\t- Two successive [constant CONTOUR_CURVE_TAG_ON] points indicate a line segment.\n\t\t\t\t- One [constant CONTOUR_CURVE_TAG_OFF_CONIC] point between two [constant CONTOUR_CURVE_TAG_ON] points indicates a single conic (quadratic) Bézier arc.\n\t\t\t\t- Two [constant CONTOUR_CURVE_TAG_OFF_CUBIC] points between two [constant CONTOUR_CURVE_TAG_ON] points indicate a single cubic Bézier arc.\n\t\t\t\t- Two successive [constant CONTOUR_CURVE_TAG_OFF_CONIC] points indicate two successive conic (quadratic) Bézier arcs with a virtual [constant CONTOUR_CURVE_TAG_ON] point at their middle.\n\t\t\t\t- Each contour is closed. The last point of a contour uses the first point of a contour as its next point, and vice versa. The first point can be [constant CONTOUR_CURVE_TAG_OFF_CONIC] point.","returnType":"Dictionary"},{"name":"font_get_glyph_index","signature":"font_get_glyph_index(font_rid: RID, size: int, char: int, variation_selector: int) -> int","description":"Returns the glyph index of a [param char], optionally modified by the [param variation_selector]. See [method font_get_char_from_glyph_index].","returnType":"int"},{"name":"font_get_glyph_list","signature":"font_get_glyph_list(font_rid: RID, size: Vector2i) -> PackedInt32Array","description":"Returns list of rendered glyphs in the cache entry.","returnType":"PackedInt32Array"},{"name":"font_get_glyph_offset","signature":"font_get_glyph_offset(font_rid: RID, size: Vector2i, glyph: int) -> Vector2","description":"Returns glyph offset from the baseline.","returnType":"Vector2"},{"name":"font_get_glyph_size","signature":"font_get_glyph_size(font_rid: RID, size: Vector2i, glyph: int) -> Vector2","description":"Returns size of the glyph.","returnType":"Vector2"},{"name":"font_get_glyph_texture_idx","signature":"font_get_glyph_texture_idx(font_rid: RID, size: Vector2i, glyph: int) -> int","description":"Returns index of the cache texture containing the glyph.","returnType":"int"},{"name":"font_get_glyph_texture_rid","signature":"font_get_glyph_texture_rid(font_rid: RID, size: Vector2i, glyph: int) -> RID","description":"Returns resource ID of the cache texture containing the glyph.\n\t\t\t\tNote: If there are pending glyphs to render, calling this function might trigger the texture cache update.","returnType":"RID"},{"name":"font_get_glyph_texture_size","signature":"font_get_glyph_texture_size(font_rid: RID, size: Vector2i, glyph: int) -> Vector2","description":"Returns size of the cache texture containing the glyph.\n\t\t\t\tNote: If there are pending glyphs to render, calling this function might trigger the texture cache update.","returnType":"Vector2"},{"name":"font_get_glyph_uv_rect","signature":"font_get_glyph_uv_rect(font_rid: RID, size: Vector2i, glyph: int) -> Rect2","description":"Returns rectangle in the cache texture containing the glyph.","returnType":"Rect2"},{"name":"font_get_hinting","signature":"font_get_hinting(font_rid: RID) -> int","description":"Returns the font hinting mode. Used by dynamic fonts only.","returnType":"int"},{"name":"font_get_keep_rounding_remainders","signature":"font_get_keep_rounding_remainders(font_rid: RID) -> bool","description":"Returns glyph position rounding behavior. If set to true, when aligning glyphs to the pixel boundaries rounding remainders are accumulated to ensure more uniform glyph distribution. This setting has no effect if subpixel positioning is enabled.","returnType":"bool"},{"name":"font_get_kerning","signature":"font_get_kerning(font_rid: RID, size: int, glyph_pair: Vector2i) -> Vector2","description":"Returns kerning for the pair of glyphs.","returnType":"Vector2"},{"name":"font_get_kerning_list","signature":"font_get_kerning_list(font_rid: RID, size: int) -> Vector2i[]","description":"Returns list of the kerning overrides.","returnType":"Vector2i[]"},{"name":"font_get_language_support_override","signature":"font_get_language_support_override(font_rid: RID, language: String) -> bool","description":"Returns true if support override is enabled for the [param language].","returnType":"bool"},{"name":"font_get_language_support_overrides","signature":"font_get_language_support_overrides(font_rid: RID) -> PackedStringArray","description":"Returns list of language support overrides.","returnType":"PackedStringArray"},{"name":"font_get_msdf_pixel_range","signature":"font_get_msdf_pixel_range(font_rid: RID) -> int","description":"Returns the width of the range around the shape between the minimum and maximum representable signed distance.","returnType":"int"},{"name":"font_get_msdf_size","signature":"font_get_msdf_size(font_rid: RID) -> int","description":"Returns source font size used to generate MSDF textures.","returnType":"int"},{"name":"font_get_name","signature":"font_get_name(font_rid: RID) -> String","description":"Returns font family name.","returnType":"String"},{"name":"font_get_opentype_feature_overrides","signature":"font_get_opentype_feature_overrides(font_rid: RID) -> Dictionary","description":"Returns font OpenType feature set override.","returnType":"Dictionary"},{"name":"font_get_ot_name_strings","signature":"font_get_ot_name_strings(font_rid: RID) -> Dictionary","description":"Returns  with OpenType font name strings (localized font names, version, description, license information, sample text, etc.).","returnType":"Dictionary"},{"name":"font_get_oversampling","signature":"font_get_oversampling(font_rid: RID) -> float","description":"Returns font oversampling factor, if set to 0.0 global oversampling factor is used instead. Used by dynamic fonts only.","returnType":"float"},{"name":"font_get_scale","signature":"font_get_scale(font_rid: RID, size: int) -> float","description":"Returns scaling factor of the color bitmap font.","returnType":"float"},{"name":"font_get_script_support_override","signature":"font_get_script_support_override(font_rid: RID, script: String) -> bool","description":"Returns true if support override is enabled for the [param script].","returnType":"bool"},{"name":"font_get_script_support_overrides","signature":"font_get_script_support_overrides(font_rid: RID) -> PackedStringArray","description":"Returns list of script support overrides.","returnType":"PackedStringArray"},{"name":"font_get_size_cache_list","signature":"font_get_size_cache_list(font_rid: RID) -> Vector2i[]","description":"Returns list of the font sizes in the cache. Each size is  with font size and outline size.","returnType":"Vector2i[]"},{"name":"font_get_spacing","signature":"font_get_spacing(font_rid: RID, spacing: int) -> int","description":"Returns the spacing for [param spacing] (see [enum TextServer.SpacingType]) in pixels (not relative to the font size).","returnType":"int"},{"name":"font_get_stretch","signature":"font_get_stretch(font_rid: RID) -> int","description":"Returns font stretch amount, compared to a normal width. A percentage value between 50% and 200%.","returnType":"int"},{"name":"font_get_style","signature":"font_get_style(font_rid: RID) -> int","description":"Returns font style flags, see [enum FontStyle].","returnType":"int"},{"name":"font_get_style_name","signature":"font_get_style_name(font_rid: RID) -> String","description":"Returns font style name.","returnType":"String"},{"name":"font_get_subpixel_positioning","signature":"font_get_subpixel_positioning(font_rid: RID) -> int","description":"Returns font subpixel glyph positioning mode.","returnType":"int"},{"name":"font_get_supported_chars","signature":"font_get_supported_chars(font_rid: RID) -> String","description":"Returns a string containing all the characters available in the font.","returnType":"String"},{"name":"font_get_supported_glyphs","signature":"font_get_supported_glyphs(font_rid: RID) -> PackedInt32Array","description":"Returns an array containing all glyph indices in the font.","returnType":"PackedInt32Array"},{"name":"font_get_texture_count","signature":"font_get_texture_count(font_rid: RID, size: Vector2i) -> int","description":"Returns number of textures used by font cache entry.","returnType":"int"},{"name":"font_get_texture_image","signature":"font_get_texture_image(font_rid: RID, size: Vector2i, texture_index: int) -> Image","description":"Returns font cache texture image data.","returnType":"Image"},{"name":"font_get_texture_offsets","signature":"font_get_texture_offsets(font_rid: RID, size: Vector2i, texture_index: int) -> PackedInt32Array","description":"Returns array containing glyph packing data.","returnType":"PackedInt32Array"},{"name":"font_get_transform","signature":"font_get_transform(font_rid: RID) -> Transform2D","description":"Returns 2D transform applied to the font outlines.","returnType":"Transform2D"},{"name":"font_get_underline_position","signature":"font_get_underline_position(font_rid: RID, size: int) -> float","description":"Returns pixel offset of the underline below the baseline.","returnType":"float"},{"name":"font_get_underline_thickness","signature":"font_get_underline_thickness(font_rid: RID, size: int) -> float","description":"Returns thickness of the underline in pixels.","returnType":"float"},{"name":"font_get_variation_coordinates","signature":"font_get_variation_coordinates(font_rid: RID) -> Dictionary","description":"Returns variation coordinates for the specified font cache entry. See [method font_supported_variation_list] for more info.","returnType":"Dictionary"},{"name":"font_get_weight","signature":"font_get_weight(font_rid: RID) -> int","description":"Returns weight (boldness) of the font. A value in the 100...999 range, normal font weight is 400, bold font weight is 700.","returnType":"int"},{"name":"font_has_char","signature":"font_has_char(font_rid: RID, char: int) -> bool","description":"Returns true if a Unicode [param char] is available in the font.","returnType":"bool"},{"name":"font_is_allow_system_fallback","signature":"font_is_allow_system_fallback(font_rid: RID) -> bool","description":"Returns true if system fonts can be automatically used as fallbacks.","returnType":"bool"},{"name":"font_is_force_autohinter","signature":"font_is_force_autohinter(font_rid: RID) -> bool","description":"Returns true if auto-hinting is supported and preferred over font built-in hinting. Used by dynamic fonts only.","returnType":"bool"},{"name":"font_is_language_supported","signature":"font_is_language_supported(font_rid: RID, language: String) -> bool","description":"Returns true, if font supports given language ([url=https://en.wikipedia.org/wiki/ISO_639-1]ISO 639 code).","returnType":"bool"},{"name":"font_is_multichannel_signed_distance_field","signature":"font_is_multichannel_signed_distance_field(font_rid: RID) -> bool","description":"Returns true if glyphs of all sizes are rendered using single multichannel signed distance field generated from the dynamic font vector data.","returnType":"bool"},{"name":"font_is_script_supported","signature":"font_is_script_supported(font_rid: RID, script: String) -> bool","description":"Returns true, if font supports given script (ISO 15924 code).","returnType":"bool"},{"name":"font_remove_glyph","signature":"font_remove_glyph(font_rid: RID, size: Vector2i, glyph: int) -> void","description":"Removes specified rendered glyph information from the cache entry.\n\t\t\t\tNote: This function will not remove textures associated with the glyphs, use [method font_remove_texture] to remove them manually.","returnType":"void"},{"name":"font_remove_kerning","signature":"font_remove_kerning(font_rid: RID, size: int, glyph_pair: Vector2i) -> void","description":"Removes kerning override for the pair of glyphs.","returnType":"void"},{"name":"font_remove_language_support_override","signature":"font_remove_language_support_override(font_rid: RID, language: String) -> void","description":"Remove language support override.","returnType":"void"},{"name":"font_remove_script_support_override","signature":"font_remove_script_support_override(font_rid: RID, script: String) -> void","description":"Removes script support override.","returnType":"void"},{"name":"font_remove_size_cache","signature":"font_remove_size_cache(font_rid: RID, size: Vector2i) -> void","description":"Removes specified font size from the cache entry.","returnType":"void"},{"name":"font_remove_texture","signature":"font_remove_texture(font_rid: RID, size: Vector2i, texture_index: int) -> void","description":"Removes specified texture from the cache entry.\n\t\t\t\tNote: This function will not remove glyphs associated with the texture, remove them manually, using [method font_remove_glyph].","returnType":"void"},{"name":"font_render_glyph","signature":"font_render_glyph(font_rid: RID, size: Vector2i, index: int) -> void","description":"Renders specified glyph to the font cache texture.","returnType":"void"},{"name":"font_render_range","signature":"font_render_range(font_rid: RID, size: Vector2i, start: int, end: int) -> void","description":"Renders the range of characters to the font cache texture.","returnType":"void"},{"name":"font_set_allow_system_fallback","signature":"font_set_allow_system_fallback(font_rid: RID, allow_system_fallback: bool) -> void","description":"If set to true, system fonts can be automatically used as fallbacks.","returnType":"void"},{"name":"font_set_antialiasing","signature":"font_set_antialiasing(font_rid: RID, antialiasing: int) -> void","description":"Sets font anti-aliasing mode.","returnType":"void"},{"name":"font_set_ascent","signature":"font_set_ascent(font_rid: RID, size: int, ascent: float) -> void","description":"Sets the font ascent (number of pixels above the baseline).","returnType":"void"},{"name":"font_set_baseline_offset","signature":"font_set_baseline_offset(font_rid: RID, baseline_offset: float) -> void","description":"Sets extra baseline offset (as a fraction of font height).","returnType":"void"},{"name":"font_set_data","signature":"font_set_data(font_rid: RID, data: PackedByteArray) -> void","description":"Sets font source data, e.g contents of the dynamic font source file.","returnType":"void"},{"name":"font_set_descent","signature":"font_set_descent(font_rid: RID, size: int, descent: float) -> void","description":"Sets the font descent (number of pixels below the baseline).","returnType":"void"},{"name":"font_set_disable_embedded_bitmaps","signature":"font_set_disable_embedded_bitmaps(font_rid: RID, disable_embedded_bitmaps: bool) -> void","description":"If set to true, embedded font bitmap loading is disabled (bitmap-only and color fonts ignore this property).","returnType":"void"},{"name":"font_set_embolden","signature":"font_set_embolden(font_rid: RID, strength: float) -> void","description":"Sets font embolden strength. If [param strength] is not equal to zero, emboldens the font outlines. Negative values reduce the outline thickness.","returnType":"void"},{"name":"font_set_face_index","signature":"font_set_face_index(font_rid: RID, face_index: int) -> void","description":"Sets an active face index in the TrueType / OpenType collection.","returnType":"void"},{"name":"font_set_fixed_size","signature":"font_set_fixed_size(font_rid: RID, fixed_size: int) -> void","description":"Sets bitmap font fixed size. If set to value greater than zero, same cache entry will be used for all font sizes.","returnType":"void"},{"name":"font_set_fixed_size_scale_mode","signature":"font_set_fixed_size_scale_mode(font_rid: RID, fixed_size_scale_mode: int) -> void","description":"Sets bitmap font scaling mode. This property is used only if fixed_size is greater than zero.","returnType":"void"},{"name":"font_set_force_autohinter","signature":"font_set_force_autohinter(font_rid: RID, force_autohinter: bool) -> void","description":"If set to true auto-hinting is preferred over font built-in hinting.","returnType":"void"},{"name":"font_set_generate_mipmaps","signature":"font_set_generate_mipmaps(font_rid: RID, generate_mipmaps: bool) -> void","description":"If set to true font texture mipmap generation is enabled.","returnType":"void"},{"name":"font_set_global_oversampling","signature":"font_set_global_oversampling(oversampling: float) -> void","description":"Sets oversampling factor, shared by all font in the TextServer.\n\t\t\t\tNote: This value can be automatically changed by display server.","returnType":"void"},{"name":"font_set_glyph_advance","signature":"font_set_glyph_advance(font_rid: RID, size: int, glyph: int, advance: Vector2) -> void","description":"Sets glyph advance (offset of the next glyph).\n\t\t\t\tNote: Advance for glyphs outlines is the same as the base glyph advance and is not saved.","returnType":"void"},{"name":"font_set_glyph_offset","signature":"font_set_glyph_offset(font_rid: RID, size: Vector2i, glyph: int, offset: Vector2) -> void","description":"Sets glyph offset from the baseline.","returnType":"void"},{"name":"font_set_glyph_size","signature":"font_set_glyph_size(font_rid: RID, size: Vector2i, glyph: int, gl_size: Vector2) -> void","description":"Sets size of the glyph.","returnType":"void"},{"name":"font_set_glyph_texture_idx","signature":"font_set_glyph_texture_idx(font_rid: RID, size: Vector2i, glyph: int, texture_idx: int) -> void","description":"Sets index of the cache texture containing the glyph.","returnType":"void"},{"name":"font_set_glyph_uv_rect","signature":"font_set_glyph_uv_rect(font_rid: RID, size: Vector2i, glyph: int, uv_rect: Rect2) -> void","description":"Sets rectangle in the cache texture containing the glyph.","returnType":"void"},{"name":"font_set_hinting","signature":"font_set_hinting(font_rid: RID, hinting: int) -> void","description":"Sets font hinting mode. Used by dynamic fonts only.","returnType":"void"},{"name":"font_set_keep_rounding_remainders","signature":"font_set_keep_rounding_remainders(font_rid: RID, keep_rounding_remainders: bool) -> void","description":"Sets glyph position rounding behavior. If set to true, when aligning glyphs to the pixel boundaries rounding remainders are accumulated to ensure more uniform glyph distribution. This setting has no effect if subpixel positioning is enabled.","returnType":"void"},{"name":"font_set_kerning","signature":"font_set_kerning(font_rid: RID, size: int, glyph_pair: Vector2i, kerning: Vector2) -> void","description":"Sets kerning for the pair of glyphs.","returnType":"void"},{"name":"font_set_language_support_override","signature":"font_set_language_support_override(font_rid: RID, language: String, supported: bool) -> void","description":"Adds override for [method font_is_language_supported].","returnType":"void"},{"name":"font_set_msdf_pixel_range","signature":"font_set_msdf_pixel_range(font_rid: RID, msdf_pixel_range: int) -> void","description":"Sets the width of the range around the shape between the minimum and maximum representable signed distance.","returnType":"void"},{"name":"font_set_msdf_size","signature":"font_set_msdf_size(font_rid: RID, msdf_size: int) -> void","description":"Sets source font size used to generate MSDF textures.","returnType":"void"},{"name":"font_set_multichannel_signed_distance_field","signature":"font_set_multichannel_signed_distance_field(font_rid: RID, msdf: bool) -> void","description":"If set to true, glyphs of all sizes are rendered using single multichannel signed distance field generated from the dynamic font vector data. MSDF rendering allows displaying the font at any scaling factor without blurriness, and without incurring a CPU cost when the font size changes (since the font no longer needs to be rasterized on the CPU). As a downside, font hinting is not available with MSDF. The lack of font hinting may result in less crisp and less readable fonts at small sizes.\n\t\t\t\tNote: MSDF font rendering does not render glyphs with overlapping shapes correctly. Overlapping shapes are not valid per the OpenType standard, but are still commonly found in many font files, especially those converted by Google Fonts. To avoid issues with overlapping glyphs, consider downloading the font file directly from the type foundry instead of relying on Google Fonts.","returnType":"void"},{"name":"font_set_name","signature":"font_set_name(font_rid: RID, name: String) -> void","description":"Sets the font family name.","returnType":"void"},{"name":"font_set_opentype_feature_overrides","signature":"font_set_opentype_feature_overrides(font_rid: RID, overrides: Dictionary) -> void","description":"Sets font OpenType feature set override.","returnType":"void"},{"name":"font_set_oversampling","signature":"font_set_oversampling(font_rid: RID, oversampling: float) -> void","description":"Sets font oversampling factor, if set to 0.0 global oversampling factor is used instead. Used by dynamic fonts only.","returnType":"void"},{"name":"font_set_scale","signature":"font_set_scale(font_rid: RID, size: int, scale: float) -> void","description":"Sets scaling factor of the color bitmap font.","returnType":"void"},{"name":"font_set_script_support_override","signature":"font_set_script_support_override(font_rid: RID, script: String, supported: bool) -> void","description":"Adds override for [method font_is_script_supported].","returnType":"void"},{"name":"font_set_spacing","signature":"font_set_spacing(font_rid: RID, spacing: int, value: int) -> void","description":"Sets the spacing for [param spacing] (see [enum TextServer.SpacingType]) to [param value] in pixels (not relative to the font size).","returnType":"void"},{"name":"font_set_stretch","signature":"font_set_stretch(font_rid: RID, weight: int) -> void","description":"Sets font stretch amount, compared to a normal width. A percentage value between 50% and 200%.\n\t\t\t\tNote: This value is used for font matching only and will not affect font rendering. Use [method font_set_face_index], [method font_set_variation_coordinates], or [method font_set_transform] instead.","returnType":"void"},{"name":"font_set_style","signature":"font_set_style(font_rid: RID, style: int) -> void","description":"Sets the font style flags, see [enum FontStyle].\n\t\t\t\tNote: This value is used for font matching only and will not affect font rendering. Use [method font_set_face_index], [method font_set_variation_coordinates], [method font_set_embolden], or [method font_set_transform] instead.","returnType":"void"},{"name":"font_set_style_name","signature":"font_set_style_name(font_rid: RID, name: String) -> void","description":"Sets the font style name.","returnType":"void"},{"name":"font_set_subpixel_positioning","signature":"font_set_subpixel_positioning(font_rid: RID, subpixel_positioning: int) -> void","description":"Sets font subpixel glyph positioning mode.","returnType":"void"},{"name":"font_set_texture_image","signature":"font_set_texture_image(font_rid: RID, size: Vector2i, texture_index: int, image: Image) -> void","description":"Sets font cache texture image data.","returnType":"void"},{"name":"font_set_texture_offsets","signature":"font_set_texture_offsets(font_rid: RID, size: Vector2i, texture_index: int, offset: PackedInt32Array) -> void","description":"Sets array containing glyph packing data.","returnType":"void"},{"name":"font_set_transform","signature":"font_set_transform(font_rid: RID, transform: Transform2D) -> void","description":"Sets 2D transform, applied to the font outlines, can be used for slanting, flipping, and rotating glyphs.\n\t\t\t\tFor example, to simulate italic typeface by slanting, apply the following transform Transform2D(1.0, slant, 0.0, 1.0, 0.0, 0.0).","returnType":"void"},{"name":"font_set_underline_position","signature":"font_set_underline_position(font_rid: RID, size: int, underline_position: float) -> void","description":"Sets pixel offset of the underline below the baseline.","returnType":"void"},{"name":"font_set_underline_thickness","signature":"font_set_underline_thickness(font_rid: RID, size: int, underline_thickness: float) -> void","description":"Sets thickness of the underline in pixels.","returnType":"void"},{"name":"font_set_variation_coordinates","signature":"font_set_variation_coordinates(font_rid: RID, variation_coordinates: Dictionary) -> void","description":"Sets variation coordinates for the specified font cache entry. See [method font_supported_variation_list] for more info.","returnType":"void"},{"name":"font_set_weight","signature":"font_set_weight(font_rid: RID, weight: int) -> void","description":"Sets weight (boldness) of the font. A value in the 100...999 range, normal font weight is 400, bold font weight is 700.\n\t\t\t\tNote: This value is used for font matching only and will not affect font rendering. Use [method font_set_face_index], [method font_set_variation_coordinates], or [method font_set_embolden] instead.","returnType":"void"},{"name":"font_supported_feature_list","signature":"font_supported_feature_list(font_rid: RID) -> Dictionary","description":"Returns the dictionary of the supported OpenType features.","returnType":"Dictionary"},{"name":"font_supported_variation_list","signature":"font_supported_variation_list(font_rid: RID) -> Dictionary","description":"Returns the dictionary of the supported OpenType variation coordinates.","returnType":"Dictionary"},{"name":"format_number","signature":"format_number(number: String, language: String) -> String","description":"Converts a number from the Western Arabic (0..9) to the numeral systems used in [param language].\n\t\t\t\tIf [param language] is omitted, the active locale will be used.","returnType":"String"},{"name":"free_rid","signature":"free_rid(rid: RID) -> void","description":"Frees an object created by this .","returnType":"void"},{"name":"get_features","signature":"get_features() -> int","description":"Returns text server features, see [enum Feature].","returnType":"int"},{"name":"get_hex_code_box_size","signature":"get_hex_code_box_size(size: int, index: int) -> Vector2","description":"Returns size of the replacement character (box with character hexadecimal code that is drawn in place of invalid characters).","returnType":"Vector2"},{"name":"get_name","signature":"get_name() -> String","description":"Returns the name of the server interface.","returnType":"String"},{"name":"get_support_data","signature":"get_support_data() -> PackedByteArray","description":"Returns default TextServer database (e.g. ICU break iterators and dictionaries).","returnType":"PackedByteArray"},{"name":"get_support_data_filename","signature":"get_support_data_filename() -> String","description":"Returns default TextServer database (e.g. ICU break iterators and dictionaries) filename.","returnType":"String"},{"name":"get_support_data_info","signature":"get_support_data_info() -> String","description":"Returns TextServer database (e.g. ICU break iterators and dictionaries) description.","returnType":"String"},{"name":"has","signature":"has(rid: RID) -> bool","description":"Returns true if [param rid] is valid resource owned by this text server.","returnType":"bool"},{"name":"has_feature","signature":"has_feature(feature: int) -> bool","description":"Returns true if the server supports a feature.","returnType":"bool"},{"name":"is_confusable","signature":"is_confusable(string: String, dict: PackedStringArray) -> int","description":"Returns index of the first string in [param dict] which is visually confusable with the [param string], or -1 if none is found.\n\t\t\t\tNote: This method doesn't detect invisible characters, for spoof detection use it in combination with [method spoof_check].\n\t\t\t\tNote: Always returns -1 if the server does not support the [constant FEATURE_UNICODE_SECURITY] feature.","returnType":"int"},{"name":"is_locale_right_to_left","signature":"is_locale_right_to_left(locale: String) -> bool","description":"Returns true if locale is right-to-left.","returnType":"bool"},{"name":"is_valid_identifier","signature":"is_valid_identifier(string: String) -> bool","description":"Returns true if [param string] is a valid identifier.\n\t\t\t\tIf the text server supports the [constant FEATURE_UNICODE_IDENTIFIERS] feature, a valid identifier must:\n\t\t\t\t- Conform to normalization form C.\n\t\t\t\t- Begin with a Unicode character of class XID_Start or \"_\".\n\t\t\t\t- May contain Unicode characters of class XID_Continue in the other positions.\n\t\t\t\t- Use UAX #31 recommended scripts only (mixed scripts are allowed).\n\t\t\t\tIf the [constant FEATURE_UNICODE_IDENTIFIERS] feature is not supported, a valid identifier must:\n\t\t\t\t- Begin with a Unicode character of class XID_Start or \"_\".\n\t\t\t\t- May contain Unicode characters of class XID_Continue in the other positions.","returnType":"bool"},{"name":"is_valid_letter","signature":"is_valid_letter(unicode: int) -> bool","description":"Returns true if the given code point is a valid letter, i.e. it belongs to the Unicode category \"L\".","returnType":"bool"},{"name":"load_support_data","signature":"load_support_data(filename: String) -> bool","description":"Loads optional TextServer database (e.g. ICU break iterators and dictionaries).\n\t\t\t\tNote: This function should be called before any other TextServer functions used, otherwise it won't have any effect.","returnType":"bool"},{"name":"name_to_tag","signature":"name_to_tag(name: String) -> int","description":"Converts readable feature, variation, script, or language name to OpenType tag.","returnType":"int"},{"name":"parse_number","signature":"parse_number(number: String, language: String) -> String","description":"Converts [param number] from the numeral systems used in [param language] to Western Arabic (0..9).","returnType":"String"},{"name":"parse_structured_text","signature":"parse_structured_text(parser_type: int, args: Array, text: String) -> Vector3i[]","description":"Default implementation of the BiDi algorithm override function. See [enum StructuredTextParser] for more info.","returnType":"Vector3i[]"},{"name":"percent_sign","signature":"percent_sign(language: String) -> String","description":"Returns percent sign used in the [param language].","returnType":"String"},{"name":"save_support_data","signature":"save_support_data(filename: String) -> bool","description":"Saves optional TextServer database (e.g. ICU break iterators and dictionaries) to the file.\n\t\t\t\tNote: This function is used by during project export, to include TextServer database.","returnType":"bool"},{"name":"shaped_get_span_count","signature":"shaped_get_span_count(shaped: RID) -> int","description":"Returns number of text spans added using [method shaped_text_add_string] or [method shaped_text_add_object].","returnType":"int"},{"name":"shaped_get_span_embedded_object","signature":"shaped_get_span_embedded_object(shaped: RID, index: int) -> Variant","description":"Returns text embedded object key.","returnType":"Variant"},{"name":"shaped_get_span_meta","signature":"shaped_get_span_meta(shaped: RID, index: int) -> Variant","description":"Returns text span metadata.","returnType":"Variant"},{"name":"shaped_set_span_update_font","signature":"shaped_set_span_update_font(shaped: RID, index: int, fonts: RID[], size: int, opentype_features: Dictionary) -> void","description":"Changes text span font, font size, and OpenType features, without changing the text.","returnType":"void"},{"name":"shaped_text_add_object","signature":"shaped_text_add_object(shaped: RID, key: Variant, size: Vector2, inline_align: int, length: int, baseline: float) -> bool","description":"Adds inline object to the text buffer, [param key] must be unique. In the text, object is represented as [param length] object replacement characters.","returnType":"bool"},{"name":"shaped_text_add_string","signature":"shaped_text_add_string(shaped: RID, text: String, fonts: RID[], size: int, opentype_features: Dictionary, language: String, meta: Variant) -> bool","description":"Adds text span and font to draw it to the text buffer.","returnType":"bool"},{"name":"shaped_text_clear","signature":"shaped_text_clear(rid: RID) -> void","description":"Clears text buffer (removes text and inline objects).","returnType":"void"},{"name":"shaped_text_closest_character_pos","signature":"shaped_text_closest_character_pos(shaped: RID, pos: int) -> int","description":"Returns composite character position closest to the [param pos].","returnType":"int"},{"name":"shaped_text_draw","signature":"shaped_text_draw(shaped: RID, canvas: RID, pos: Vector2, clip_l: float, clip_r: float, color: Color) -> void","description":"Draw shaped text into a canvas item at a given position, with [param color]. [param pos] specifies the leftmost point of the baseline (for horizontal layout) or topmost point of the baseline (for vertical layout).","returnType":"void"},{"name":"shaped_text_draw_outline","signature":"shaped_text_draw_outline(shaped: RID, canvas: RID, pos: Vector2, clip_l: float, clip_r: float, outline_size: int, color: Color) -> void","description":"Draw the outline of the shaped text into a canvas item at a given position, with [param color]. [param pos] specifies the leftmost point of the baseline (for horizontal layout) or topmost point of the baseline (for vertical layout).","returnType":"void"},{"name":"shaped_text_fit_to_width","signature":"shaped_text_fit_to_width(shaped: RID, width: float, justification_flags: int) -> float","description":"Adjusts text width to fit to specified width, returns new text width.","returnType":"float"},{"name":"shaped_text_get_ascent","signature":"shaped_text_get_ascent(shaped: RID) -> float","description":"Returns the text ascent (number of pixels above the baseline for horizontal layout or to the left of baseline for vertical).\n\t\t\t\tNote: Overall ascent can be higher than font ascent, if some glyphs are displaced from the baseline.","returnType":"float"},{"name":"shaped_text_get_carets","signature":"shaped_text_get_carets(shaped: RID, position: int) -> Dictionary","description":"Returns shapes of the carets corresponding to the character offset [param position] in the text. Returned caret shape is 1 pixel wide rectangle.","returnType":"Dictionary"},{"name":"shaped_text_get_character_breaks","signature":"shaped_text_get_character_breaks(shaped: RID) -> PackedInt32Array","description":"Returns array of the composite character boundaries.","returnType":"PackedInt32Array"},{"name":"shaped_text_get_custom_ellipsis","signature":"shaped_text_get_custom_ellipsis(shaped: RID) -> int","description":"Returns ellipsis character used for text clipping.","returnType":"int"},{"name":"shaped_text_get_custom_punctuation","signature":"shaped_text_get_custom_punctuation(shaped: RID) -> String","description":"Returns custom punctuation character list, used for word breaking. If set to empty string, server defaults are used.","returnType":"String"},{"name":"shaped_text_get_descent","signature":"shaped_text_get_descent(shaped: RID) -> float","description":"Returns the text descent (number of pixels below the baseline for horizontal layout or to the right of baseline for vertical).\n\t\t\t\tNote: Overall descent can be higher than font descent, if some glyphs are displaced from the baseline.","returnType":"float"},{"name":"shaped_text_get_direction","signature":"shaped_text_get_direction(shaped: RID) -> int","description":"Returns direction of the text.","returnType":"int"},{"name":"shaped_text_get_dominant_direction_in_range","signature":"shaped_text_get_dominant_direction_in_range(shaped: RID, start: int, end: int) -> int","description":"Returns dominant direction of in the range of text.","returnType":"int"},{"name":"shaped_text_get_ellipsis_glyph_count","signature":"shaped_text_get_ellipsis_glyph_count(shaped: RID) -> int","description":"Returns number of glyphs in the ellipsis.","returnType":"int"},{"name":"shaped_text_get_ellipsis_glyphs","signature":"shaped_text_get_ellipsis_glyphs(shaped: RID) -> Dictionary[]","description":"Returns array of the glyphs in the ellipsis.","returnType":"Dictionary[]"},{"name":"shaped_text_get_ellipsis_pos","signature":"shaped_text_get_ellipsis_pos(shaped: RID) -> int","description":"Returns position of the ellipsis.","returnType":"int"},{"name":"shaped_text_get_glyph_count","signature":"shaped_text_get_glyph_count(shaped: RID) -> int","description":"Returns number of glyphs in the buffer.","returnType":"int"},{"name":"shaped_text_get_glyphs","signature":"shaped_text_get_glyphs(shaped: RID) -> Dictionary[]","description":"Returns an array of glyphs in the visual order.","returnType":"Dictionary[]"},{"name":"shaped_text_get_grapheme_bounds","signature":"shaped_text_get_grapheme_bounds(shaped: RID, pos: int) -> Vector2","description":"Returns composite character's bounds as offsets from the start of the line.","returnType":"Vector2"},{"name":"shaped_text_get_inferred_direction","signature":"shaped_text_get_inferred_direction(shaped: RID) -> int","description":"Returns direction of the text, inferred by the BiDi algorithm.","returnType":"int"},{"name":"shaped_text_get_line_breaks","signature":"shaped_text_get_line_breaks(shaped: RID, width: float, start: int, break_flags: int) -> PackedInt32Array","description":"Breaks text to the lines and returns character ranges for each line.","returnType":"PackedInt32Array"},{"name":"shaped_text_get_line_breaks_adv","signature":"shaped_text_get_line_breaks_adv(shaped: RID, width: PackedFloat32Array, start: int, once: bool, break_flags: int) -> PackedInt32Array","description":"Breaks text to the lines and columns. Returns character ranges for each segment.","returnType":"PackedInt32Array"},{"name":"shaped_text_get_object_glyph","signature":"shaped_text_get_object_glyph(shaped: RID, key: Variant) -> int","description":"Returns the glyph index of the inline object.","returnType":"int"},{"name":"shaped_text_get_object_range","signature":"shaped_text_get_object_range(shaped: RID, key: Variant) -> Vector2i","description":"Returns the character range of the inline object.","returnType":"Vector2i"},{"name":"shaped_text_get_object_rect","signature":"shaped_text_get_object_rect(shaped: RID, key: Variant) -> Rect2","description":"Returns bounding rectangle of the inline object.","returnType":"Rect2"},{"name":"shaped_text_get_objects","signature":"shaped_text_get_objects(shaped: RID) -> Array","description":"Returns array of inline objects.","returnType":"Array"},{"name":"shaped_text_get_orientation","signature":"shaped_text_get_orientation(shaped: RID) -> int","description":"Returns text orientation.","returnType":"int"},{"name":"shaped_text_get_parent","signature":"shaped_text_get_parent(shaped: RID) -> RID","description":"Returns the parent buffer from which the substring originates.","returnType":"RID"},{"name":"shaped_text_get_preserve_control","signature":"shaped_text_get_preserve_control(shaped: RID) -> bool","description":"Returns true if text buffer is configured to display control characters.","returnType":"bool"},{"name":"shaped_text_get_preserve_invalid","signature":"shaped_text_get_preserve_invalid(shaped: RID) -> bool","description":"Returns true if text buffer is configured to display hexadecimal codes in place of invalid characters.\n\t\t\t\tNote: If set to false, nothing is displayed in place of invalid characters.","returnType":"bool"},{"name":"shaped_text_get_range","signature":"shaped_text_get_range(shaped: RID) -> Vector2i","description":"Returns substring buffer character range in the parent buffer.","returnType":"Vector2i"},{"name":"shaped_text_get_selection","signature":"shaped_text_get_selection(shaped: RID, start: int, end: int) -> PackedVector2Array","description":"Returns selection rectangles for the specified character range.","returnType":"PackedVector2Array"},{"name":"shaped_text_get_size","signature":"shaped_text_get_size(shaped: RID) -> Vector2","description":"Returns size of the text.","returnType":"Vector2"},{"name":"shaped_text_get_spacing","signature":"shaped_text_get_spacing(shaped: RID, spacing: int) -> int","description":"Returns extra spacing added between glyphs or lines in pixels.","returnType":"int"},{"name":"shaped_text_get_trim_pos","signature":"shaped_text_get_trim_pos(shaped: RID) -> int","description":"Returns the position of the overrun trim.","returnType":"int"},{"name":"shaped_text_get_underline_position","signature":"shaped_text_get_underline_position(shaped: RID) -> float","description":"Returns pixel offset of the underline below the baseline.","returnType":"float"},{"name":"shaped_text_get_underline_thickness","signature":"shaped_text_get_underline_thickness(shaped: RID) -> float","description":"Returns thickness of the underline.","returnType":"float"},{"name":"shaped_text_get_width","signature":"shaped_text_get_width(shaped: RID) -> float","description":"Returns width (for horizontal layout) or height (for vertical) of the text.","returnType":"float"},{"name":"shaped_text_get_word_breaks","signature":"shaped_text_get_word_breaks(shaped: RID, grapheme_flags: int, skip_grapheme_flags: int) -> PackedInt32Array","description":"Breaks text into words and returns array of character ranges. Use [param grapheme_flags] to set what characters are used for breaking (see [enum GraphemeFlag]).","returnType":"PackedInt32Array"},{"name":"shaped_text_has_visible_chars","signature":"shaped_text_has_visible_chars(shaped: RID) -> bool","description":"Returns true if text buffer contains any visible characters.","returnType":"bool"},{"name":"shaped_text_hit_test_grapheme","signature":"shaped_text_hit_test_grapheme(shaped: RID, coords: float) -> int","description":"Returns grapheme index at the specified pixel offset at the baseline, or -1 if none is found.","returnType":"int"},{"name":"shaped_text_hit_test_position","signature":"shaped_text_hit_test_position(shaped: RID, coords: float) -> int","description":"Returns caret character offset at the specified pixel offset at the baseline. This function always returns a valid position.","returnType":"int"},{"name":"shaped_text_is_ready","signature":"shaped_text_is_ready(shaped: RID) -> bool","description":"Returns true if buffer is successfully shaped.","returnType":"bool"},{"name":"shaped_text_next_character_pos","signature":"shaped_text_next_character_pos(shaped: RID, pos: int) -> int","description":"Returns composite character end position closest to the [param pos].","returnType":"int"},{"name":"shaped_text_next_grapheme_pos","signature":"shaped_text_next_grapheme_pos(shaped: RID, pos: int) -> int","description":"Returns grapheme end position closest to the [param pos].","returnType":"int"},{"name":"shaped_text_overrun_trim_to_width","signature":"shaped_text_overrun_trim_to_width(shaped: RID, width: float, overrun_trim_flags: int) -> void","description":"Trims text if it exceeds the given width.","returnType":"void"},{"name":"shaped_text_prev_character_pos","signature":"shaped_text_prev_character_pos(shaped: RID, pos: int) -> int","description":"Returns composite character start position closest to the [param pos].","returnType":"int"},{"name":"shaped_text_prev_grapheme_pos","signature":"shaped_text_prev_grapheme_pos(shaped: RID, pos: int) -> int","description":"Returns grapheme start position closest to the [param pos].","returnType":"int"},{"name":"shaped_text_resize_object","signature":"shaped_text_resize_object(shaped: RID, key: Variant, size: Vector2, inline_align: int, baseline: float) -> bool","description":"Sets new size and alignment of embedded object.","returnType":"bool"},{"name":"shaped_text_set_bidi_override","signature":"shaped_text_set_bidi_override(shaped: RID, override: Array) -> void","description":"Overrides BiDi for the structured text.\n\t\t\t\tOverride ranges should cover full source text without overlaps. BiDi algorithm will be used on each range separately.","returnType":"void"},{"name":"shaped_text_set_custom_ellipsis","signature":"shaped_text_set_custom_ellipsis(shaped: RID, char: int) -> void","description":"Sets ellipsis character used for text clipping.","returnType":"void"},{"name":"shaped_text_set_custom_punctuation","signature":"shaped_text_set_custom_punctuation(shaped: RID, punct: String) -> void","description":"Sets custom punctuation character list, used for word breaking. If set to empty string, server defaults are used.","returnType":"void"},{"name":"shaped_text_set_direction","signature":"shaped_text_set_direction(shaped: RID, direction: int) -> void","description":"Sets desired text direction. If set to [constant DIRECTION_AUTO], direction will be detected based on the buffer contents and current locale.\n\t\t\t\tNote: Direction is ignored if server does not support [constant FEATURE_BIDI_LAYOUT] feature (supported by ).","returnType":"void"},{"name":"shaped_text_set_orientation","signature":"shaped_text_set_orientation(shaped: RID, orientation: int) -> void","description":"Sets desired text orientation.\n\t\t\t\tNote: Orientation is ignored if server does not support [constant FEATURE_VERTICAL_LAYOUT] feature (supported by ).","returnType":"void"},{"name":"shaped_text_set_preserve_control","signature":"shaped_text_set_preserve_control(shaped: RID, enabled: bool) -> void","description":"If set to true text buffer will display control characters.","returnType":"void"},{"name":"shaped_text_set_preserve_invalid","signature":"shaped_text_set_preserve_invalid(shaped: RID, enabled: bool) -> void","description":"If set to true text buffer will display invalid characters as hexadecimal codes, otherwise nothing is displayed.","returnType":"void"},{"name":"shaped_text_set_spacing","signature":"shaped_text_set_spacing(shaped: RID, spacing: int, value: int) -> void","description":"Sets extra spacing added between glyphs or lines in pixels.","returnType":"void"},{"name":"shaped_text_shape","signature":"shaped_text_shape(shaped: RID) -> bool","description":"Shapes buffer if it's not shaped. Returns true if the string is shaped successfully.\n\t\t\t\tNote: It is not necessary to call this function manually, buffer will be shaped automatically as soon as any of its output data is requested.","returnType":"bool"},{"name":"shaped_text_sort_logical","signature":"shaped_text_sort_logical(shaped: RID) -> Dictionary[]","description":"Returns text glyphs in the logical order.","returnType":"Dictionary[]"},{"name":"shaped_text_substr","signature":"shaped_text_substr(shaped: RID, start: int, length: int) -> RID","description":"Returns text buffer for the substring of the text in the [param shaped] text buffer (including inline objects).","returnType":"RID"},{"name":"shaped_text_tab_align","signature":"shaped_text_tab_align(shaped: RID, tab_stops: PackedFloat32Array) -> float","description":"Aligns shaped text to the given tab-stops.","returnType":"float"},{"name":"spoof_check","signature":"spoof_check(string: String) -> bool","description":"Returns true if [param string] is likely to be an attempt at confusing the reader.\n\t\t\t\tNote: Always returns false if the server does not support the [constant FEATURE_UNICODE_SECURITY] feature.","returnType":"bool"},{"name":"string_get_character_breaks","signature":"string_get_character_breaks(string: String, language: String) -> PackedInt32Array","description":"Returns array of the composite character boundaries.\n\t\t\t\t\n\t\t\t\tvar ts = TextServerManager.get_primary_interface()\n\t\t\t\tprint(ts.string_get_character_breaks(\"Test ❤️‍🔥 Test\")) # Prints [1, 2, 3, 4, 5, 9, 10, 11, 12, 13, 14]\n\t\t\t\t","returnType":"PackedInt32Array"},{"name":"string_get_word_breaks","signature":"string_get_word_breaks(string: String, language: String, chars_per_line: int) -> PackedInt32Array","description":"Returns an array of the word break boundaries. Elements in the returned array are the offsets of the start and end of words. Therefore the length of the array is always even.\n\t\t\t\tWhen [param chars_per_line] is greater than zero, line break boundaries are returned instead.\n\t\t\t\t\n\t\t\t\tvar ts = TextServerManager.get_primary_interface()\n\t\t\t\t# Corresponds to the substrings \"The\", \"Godot\", \"Engine\", and \"4\".\n\t\t\t\tprint(ts.string_get_word_breaks(\"The Godot Engine, 4\")) # Prints [0, 3, 4, 9, 10, 16, 18, 19]\n\t\t\t\t# Corresponds to the substrings \"The\", \"Godot\", \"Engin\", and \"e, 4\".\n\t\t\t\tprint(ts.string_get_word_breaks(\"The Godot Engine, 4\", \"en\", 5)) # Prints [0, 3, 4, 9, 10, 15, 15, 19]\n\t\t\t\t# Corresponds to the substrings \"The Godot\" and \"Engine, 4\".\n\t\t\t\tprint(ts.string_get_word_breaks(\"The Godot Engine, 4\", \"en\", 10)) # Prints [0, 9, 10, 19]\n\t\t\t\t","returnType":"PackedInt32Array"},{"name":"string_to_lower","signature":"string_to_lower(string: String, language: String) -> String","description":"Returns the string converted to lowercase.\n\t\t\t\tNote: Casing is locale dependent and context sensitive if server support [constant FEATURE_CONTEXT_SENSITIVE_CASE_CONVERSION] feature (supported by ).\n\t\t\t\tNote: The result may be longer or shorter than the original.","returnType":"String"},{"name":"string_to_title","signature":"string_to_title(string: String, language: String) -> String","description":"Returns the string converted to title case.\n\t\t\t\tNote: Casing is locale dependent and context sensitive if server support [constant FEATURE_CONTEXT_SENSITIVE_CASE_CONVERSION] feature (supported by ).\n\t\t\t\tNote: The result may be longer or shorter than the original.","returnType":"String"},{"name":"string_to_upper","signature":"string_to_upper(string: String, language: String) -> String","description":"Returns the string converted to uppercase.\n\t\t\t\tNote: Casing is locale dependent and context sensitive if server support [constant FEATURE_CONTEXT_SENSITIVE_CASE_CONVERSION] feature (supported by ).\n\t\t\t\tNote: The result may be longer or shorter than the original.","returnType":"String"},{"name":"strip_diacritics","signature":"strip_diacritics(string: String) -> String","description":"Strips diacritics from the string.\n\t\t\t\tNote: The result may be longer or shorter than the original.","returnType":"String"},{"name":"tag_to_name","signature":"tag_to_name(tag: int) -> String","description":"Converts OpenType tag to readable feature, variation, script, or language name.","returnType":"String"}],"signals":[]},"TextServerDummy":{"name":"TextServerDummy","description":"A dummy text server that can't render text or manage fonts.","inherits":"TextServerExtension","properties":[],"methods":[],"signals":[]},"TextServerExtension":{"name":"TextServerExtension","description":"Base class for custom  implementations (plugins).","inherits":"TextServer","properties":[],"methods":[{"name":"_cleanup","signature":"_cleanup() -> void","description":"Optional.\n\t\t\t\tThis method is called before text server is unregistered.","returnType":"void"},{"name":"_create_font","signature":"_create_font() -> RID","description":"Required.\n\t\t\t\tCreates a new, empty font cache entry resource.","returnType":"RID"},{"name":"_create_font_linked_variation","signature":"_create_font_linked_variation(font_rid: RID) -> RID","description":"Optional, implement if font supports extra spacing or baseline offset.\n\t\t\t\tCreates a new variation existing font which is reusing the same glyph cache and font data.","returnType":"RID"},{"name":"_create_shaped_text","signature":"_create_shaped_text(direction: int, orientation: int) -> RID","description":"Required.\n\t\t\t\tCreates a new buffer for complex text layout, with the given [param direction] and [param orientation].","returnType":"RID"},{"name":"_draw_hex_code_box","signature":"_draw_hex_code_box(canvas: RID, size: int, pos: Vector2, index: int, color: Color) -> void","description":"Optional.\n\t\t\t\tDraws box displaying character hexadecimal code.","returnType":"void"},{"name":"_font_clear_glyphs","signature":"_font_clear_glyphs(font_rid: RID, size: Vector2i) -> void","description":"Required.\n\t\t\t\tRemoves all rendered glyph information from the cache entry.","returnType":"void"},{"name":"_font_clear_kerning_map","signature":"_font_clear_kerning_map(font_rid: RID, size: int) -> void","description":"Optional.\n\t\t\t\tRemoves all kerning overrides.","returnType":"void"},{"name":"_font_clear_size_cache","signature":"_font_clear_size_cache(font_rid: RID) -> void","description":"Required.\n\t\t\t\tRemoves all font sizes from the cache entry.","returnType":"void"},{"name":"_font_clear_textures","signature":"_font_clear_textures(font_rid: RID, size: Vector2i) -> void","description":"Required.\n\t\t\t\tRemoves all textures from font cache entry.","returnType":"void"},{"name":"_font_draw_glyph","signature":"_font_draw_glyph(font_rid: RID, canvas: RID, size: int, pos: Vector2, index: int, color: Color) -> void","description":"Required.\n\t\t\t\tDraws single glyph into a canvas item at the position, using [param font_rid] at the size [param size].","returnType":"void"},{"name":"_font_draw_glyph_outline","signature":"_font_draw_glyph_outline(font_rid: RID, canvas: RID, size: int, outline_size: int, pos: Vector2, index: int, color: Color) -> void","description":"Required.\n\t\t\t\tDraws single glyph outline of size [param outline_size] into a canvas item at the position, using [param font_rid] at the size [param size].","returnType":"void"},{"name":"_font_get_antialiasing","signature":"_font_get_antialiasing(font_rid: RID) -> int","description":"Optional.\n\t\t\t\tReturns font anti-aliasing mode.","returnType":"int"},{"name":"_font_get_ascent","signature":"_font_get_ascent(font_rid: RID, size: int) -> float","description":"Required.\n\t\t\t\tReturns the font ascent (number of pixels above the baseline).","returnType":"float"},{"name":"_font_get_baseline_offset","signature":"_font_get_baseline_offset(font_rid: RID) -> float","description":"Optional.\n\t\t\t\tReturns extra baseline offset (as a fraction of font height).","returnType":"float"},{"name":"_font_get_char_from_glyph_index","signature":"_font_get_char_from_glyph_index(font_rid: RID, size: int, glyph_index: int) -> int","description":"Required.\n\t\t\t\tReturns character code associated with [param glyph_index], or 0 if [param glyph_index] is invalid.","returnType":"int"},{"name":"_font_get_descent","signature":"_font_get_descent(font_rid: RID, size: int) -> float","description":"Required.\n\t\t\t\tReturns the font descent (number of pixels below the baseline).","returnType":"float"},{"name":"_font_get_disable_embedded_bitmaps","signature":"_font_get_disable_embedded_bitmaps(font_rid: RID) -> bool","description":"Optional.\n\t\t\t\tReturns whether the font's embedded bitmap loading is disabled.","returnType":"bool"},{"name":"_font_get_embolden","signature":"_font_get_embolden(font_rid: RID) -> float","description":"Optional.\n\t\t\t\tReturns font embolden strength.","returnType":"float"},{"name":"_font_get_face_count","signature":"_font_get_face_count(font_rid: RID) -> int","description":"Optional.\n\t\t\t\tReturns number of faces in the TrueType / OpenType collection.","returnType":"int"},{"name":"_font_get_face_index","signature":"_font_get_face_index(font_rid: RID) -> int","description":"Optional.\n\t\t\t\tReturns an active face index in the TrueType / OpenType collection.","returnType":"int"},{"name":"_font_get_fixed_size","signature":"_font_get_fixed_size(font_rid: RID) -> int","description":"Required.\n\t\t\t\tReturns bitmap font fixed size.","returnType":"int"},{"name":"_font_get_fixed_size_scale_mode","signature":"_font_get_fixed_size_scale_mode(font_rid: RID) -> int","description":"Required.\n\t\t\t\tReturns bitmap font scaling mode.","returnType":"int"},{"name":"_font_get_generate_mipmaps","signature":"_font_get_generate_mipmaps(font_rid: RID) -> bool","description":"Optional.\n\t\t\t\tReturns true if font texture mipmap generation is enabled.","returnType":"bool"},{"name":"_font_get_global_oversampling","signature":"_font_get_global_oversampling() -> float","description":"Optional.\n\t\t\t\tReturns the font oversampling factor, shared by all fonts in the TextServer.","returnType":"float"},{"name":"_font_get_glyph_advance","signature":"_font_get_glyph_advance(font_rid: RID, size: int, glyph: int) -> Vector2","description":"Required.\n\t\t\t\tReturns glyph advance (offset of the next glyph).","returnType":"Vector2"},{"name":"_font_get_glyph_contours","signature":"_font_get_glyph_contours(font_rid: RID, size: int, index: int) -> Dictionary","description":"Optional.\n\t\t\t\tReturns outline contours of the glyph.","returnType":"Dictionary"},{"name":"_font_get_glyph_index","signature":"_font_get_glyph_index(font_rid: RID, size: int, char: int, variation_selector: int) -> int","description":"Required.\n\t\t\t\tReturns the glyph index of a [param char], optionally modified by the [param variation_selector].","returnType":"int"},{"name":"_font_get_glyph_list","signature":"_font_get_glyph_list(font_rid: RID, size: Vector2i) -> PackedInt32Array","description":"Required.\n\t\t\t\tReturns list of rendered glyphs in the cache entry.","returnType":"PackedInt32Array"},{"name":"_font_get_glyph_offset","signature":"_font_get_glyph_offset(font_rid: RID, size: Vector2i, glyph: int) -> Vector2","description":"Required.\n\t\t\t\tReturns glyph offset from the baseline.","returnType":"Vector2"},{"name":"_font_get_glyph_size","signature":"_font_get_glyph_size(font_rid: RID, size: Vector2i, glyph: int) -> Vector2","description":"Required.\n\t\t\t\tReturns size of the glyph.","returnType":"Vector2"},{"name":"_font_get_glyph_texture_idx","signature":"_font_get_glyph_texture_idx(font_rid: RID, size: Vector2i, glyph: int) -> int","description":"Required.\n\t\t\t\tReturns index of the cache texture containing the glyph.","returnType":"int"},{"name":"_font_get_glyph_texture_rid","signature":"_font_get_glyph_texture_rid(font_rid: RID, size: Vector2i, glyph: int) -> RID","description":"Required.\n\t\t\t\tReturns resource ID of the cache texture containing the glyph.","returnType":"RID"},{"name":"_font_get_glyph_texture_size","signature":"_font_get_glyph_texture_size(font_rid: RID, size: Vector2i, glyph: int) -> Vector2","description":"Required.\n\t\t\t\tReturns size of the cache texture containing the glyph.","returnType":"Vector2"},{"name":"_font_get_glyph_uv_rect","signature":"_font_get_glyph_uv_rect(font_rid: RID, size: Vector2i, glyph: int) -> Rect2","description":"Required.\n\t\t\t\tReturns rectangle in the cache texture containing the glyph.","returnType":"Rect2"},{"name":"_font_get_hinting","signature":"_font_get_hinting(font_rid: RID) -> int","description":"Optional.\n\t\t\t\tReturns the font hinting mode. Used by dynamic fonts only.","returnType":"int"},{"name":"_font_get_keep_rounding_remainders","signature":"_font_get_keep_rounding_remainders(font_rid: RID) -> bool","description":"Optional.\n\t\t\t\tReturns glyph position rounding behavior. If set to true, when aligning glyphs to the pixel boundaries rounding remainders are accumulated to ensure more uniform glyph distribution. This setting has no effect if subpixel positioning is enabled.","returnType":"bool"},{"name":"_font_get_kerning","signature":"_font_get_kerning(font_rid: RID, size: int, glyph_pair: Vector2i) -> Vector2","description":"Optional.\n\t\t\t\tReturns kerning for the pair of glyphs.","returnType":"Vector2"},{"name":"_font_get_kerning_list","signature":"_font_get_kerning_list(font_rid: RID, size: int) -> Vector2i[]","description":"Optional.\n\t\t\t\tReturns list of the kerning overrides.","returnType":"Vector2i[]"},{"name":"_font_get_language_support_override","signature":"_font_get_language_support_override(font_rid: RID, language: String) -> bool","description":"Optional.\n\t\t\t\tReturns true if support override is enabled for the [param language].","returnType":"bool"},{"name":"_font_get_language_support_overrides","signature":"_font_get_language_support_overrides(font_rid: RID) -> PackedStringArray","description":"Optional.\n\t\t\t\tReturns list of language support overrides.","returnType":"PackedStringArray"},{"name":"_font_get_msdf_pixel_range","signature":"_font_get_msdf_pixel_range(font_rid: RID) -> int","description":"Optional.\n\t\t\t\tReturns the width of the range around the shape between the minimum and maximum representable signed distance.","returnType":"int"},{"name":"_font_get_msdf_size","signature":"_font_get_msdf_size(font_rid: RID) -> int","description":"Optional.\n\t\t\t\tReturns source font size used to generate MSDF textures.","returnType":"int"},{"name":"_font_get_name","signature":"_font_get_name(font_rid: RID) -> String","description":"Optional.\n\t\t\t\tReturns font family name.","returnType":"String"},{"name":"_font_get_opentype_feature_overrides","signature":"_font_get_opentype_feature_overrides(font_rid: RID) -> Dictionary","description":"Optional.\n\t\t\t\tReturns font OpenType feature set override.","returnType":"Dictionary"},{"name":"_font_get_ot_name_strings","signature":"_font_get_ot_name_strings(font_rid: RID) -> Dictionary","description":"Optional.\n\t\t\t\tReturns  with OpenType font name strings (localized font names, version, description, license information, sample text, etc.).","returnType":"Dictionary"},{"name":"_font_get_oversampling","signature":"_font_get_oversampling(font_rid: RID) -> float","description":"Optional.\n\t\t\t\tReturns font oversampling factor, if set to 0.0 global oversampling factor is used instead. Used by dynamic fonts only.","returnType":"float"},{"name":"_font_get_scale","signature":"_font_get_scale(font_rid: RID, size: int) -> float","description":"Required.\n\t\t\t\tReturns scaling factor of the color bitmap font.","returnType":"float"},{"name":"_font_get_script_support_override","signature":"_font_get_script_support_override(font_rid: RID, script: String) -> bool","description":"Optional.\n\t\t\t\tReturns true if support override is enabled for the [param script].","returnType":"bool"},{"name":"_font_get_script_support_overrides","signature":"_font_get_script_support_overrides(font_rid: RID) -> PackedStringArray","description":"Optional.\n\t\t\t\tReturns list of script support overrides.","returnType":"PackedStringArray"},{"name":"_font_get_size_cache_list","signature":"_font_get_size_cache_list(font_rid: RID) -> Vector2i[]","description":"Required.\n\t\t\t\tReturns list of the font sizes in the cache. Each size is  with font size and outline size.","returnType":"Vector2i[]"},{"name":"_font_get_spacing","signature":"_font_get_spacing(font_rid: RID, spacing: int) -> int","description":"Optional.\n\t\t\t\tReturns the spacing for [param spacing] (see [enum TextServer.SpacingType]) in pixels (not relative to the font size).","returnType":"int"},{"name":"_font_get_stretch","signature":"_font_get_stretch(font_rid: RID) -> int","description":"Optional.\n\t\t\t\tReturns font stretch amount, compared to a normal width. A percentage value between 50% and 200%.","returnType":"int"},{"name":"_font_get_style","signature":"_font_get_style(font_rid: RID) -> int","description":"Optional.\n\t\t\t\tReturns font style flags, see [enum TextServer.FontStyle].","returnType":"int"},{"name":"_font_get_style_name","signature":"_font_get_style_name(font_rid: RID) -> String","description":"Optional.\n\t\t\t\tReturns font style name.","returnType":"String"},{"name":"_font_get_subpixel_positioning","signature":"_font_get_subpixel_positioning(font_rid: RID) -> int","description":"Optional.\n\t\t\t\tReturns font subpixel glyph positioning mode.","returnType":"int"},{"name":"_font_get_supported_chars","signature":"_font_get_supported_chars(font_rid: RID) -> String","description":"Required.\n\t\t\t\tReturns a string containing all the characters available in the font.","returnType":"String"},{"name":"_font_get_supported_glyphs","signature":"_font_get_supported_glyphs(font_rid: RID) -> PackedInt32Array","description":"Required.\n\t\t\t\tReturns an array containing all glyph indices in the font.","returnType":"PackedInt32Array"},{"name":"_font_get_texture_count","signature":"_font_get_texture_count(font_rid: RID, size: Vector2i) -> int","description":"Required.\n\t\t\t\tReturns number of textures used by font cache entry.","returnType":"int"},{"name":"_font_get_texture_image","signature":"_font_get_texture_image(font_rid: RID, size: Vector2i, texture_index: int) -> Image","description":"Required.\n\t\t\t\tReturns font cache texture image data.","returnType":"Image"},{"name":"_font_get_texture_offsets","signature":"_font_get_texture_offsets(font_rid: RID, size: Vector2i, texture_index: int) -> PackedInt32Array","description":"Optional.\n\t\t\t\tReturns array containing glyph packing data.","returnType":"PackedInt32Array"},{"name":"_font_get_transform","signature":"_font_get_transform(font_rid: RID) -> Transform2D","description":"Optional.\n\t\t\t\tReturns 2D transform applied to the font outlines.","returnType":"Transform2D"},{"name":"_font_get_underline_position","signature":"_font_get_underline_position(font_rid: RID, size: int) -> float","description":"Required.\n\t\t\t\tReturns pixel offset of the underline below the baseline.","returnType":"float"},{"name":"_font_get_underline_thickness","signature":"_font_get_underline_thickness(font_rid: RID, size: int) -> float","description":"Required.\n\t\t\t\tReturns thickness of the underline in pixels.","returnType":"float"},{"name":"_font_get_variation_coordinates","signature":"_font_get_variation_coordinates(font_rid: RID) -> Dictionary","description":"Optional.\n\t\t\t\tReturns variation coordinates for the specified font cache entry.","returnType":"Dictionary"},{"name":"_font_get_weight","signature":"_font_get_weight(font_rid: RID) -> int","description":"Optional.\n\t\t\t\tReturns weight (boldness) of the font. A value in the 100...999 range, normal font weight is 400, bold font weight is 700.","returnType":"int"},{"name":"_font_has_char","signature":"_font_has_char(font_rid: RID, char: int) -> bool","description":"Required.\n\t\t\t\tReturns true if a Unicode [param char] is available in the font.","returnType":"bool"},{"name":"_font_is_allow_system_fallback","signature":"_font_is_allow_system_fallback(font_rid: RID) -> bool","description":"Optional.\n\t\t\t\tReturns true if system fonts can be automatically used as fallbacks.","returnType":"bool"},{"name":"_font_is_force_autohinter","signature":"_font_is_force_autohinter(font_rid: RID) -> bool","description":"Optional.\n\t\t\t\tReturns true if auto-hinting is supported and preferred over font built-in hinting.","returnType":"bool"},{"name":"_font_is_language_supported","signature":"_font_is_language_supported(font_rid: RID, language: String) -> bool","description":"Optional.\n\t\t\t\tReturns true, if font supports given language ([url=https://en.wikipedia.org/wiki/ISO_639-1]ISO 639 code).","returnType":"bool"},{"name":"_font_is_multichannel_signed_distance_field","signature":"_font_is_multichannel_signed_distance_field(font_rid: RID) -> bool","description":"Optional.\n\t\t\t\tReturns true if glyphs of all sizes are rendered using single multichannel signed distance field generated from the dynamic font vector data.","returnType":"bool"},{"name":"_font_is_script_supported","signature":"_font_is_script_supported(font_rid: RID, script: String) -> bool","description":"Optional.\n\t\t\t\tReturns true, if font supports given script (ISO 15924 code).","returnType":"bool"},{"name":"_font_remove_glyph","signature":"_font_remove_glyph(font_rid: RID, size: Vector2i, glyph: int) -> void","description":"Required.\n\t\t\t\tRemoves specified rendered glyph information from the cache entry.","returnType":"void"},{"name":"_font_remove_kerning","signature":"_font_remove_kerning(font_rid: RID, size: int, glyph_pair: Vector2i) -> void","description":"Optional.\n\t\t\t\tRemoves kerning override for the pair of glyphs.","returnType":"void"},{"name":"_font_remove_language_support_override","signature":"_font_remove_language_support_override(font_rid: RID, language: String) -> void","description":"Optional.\n\t\t\t\tRemove language support override.","returnType":"void"},{"name":"_font_remove_script_support_override","signature":"_font_remove_script_support_override(font_rid: RID, script: String) -> void","description":"Optional.\n\t\t\t\tRemoves script support override.","returnType":"void"},{"name":"_font_remove_size_cache","signature":"_font_remove_size_cache(font_rid: RID, size: Vector2i) -> void","description":"Required.\n\t\t\t\tRemoves specified font size from the cache entry.","returnType":"void"},{"name":"_font_remove_texture","signature":"_font_remove_texture(font_rid: RID, size: Vector2i, texture_index: int) -> void","description":"Required.\n\t\t\t\tRemoves specified texture from the cache entry.","returnType":"void"},{"name":"_font_render_glyph","signature":"_font_render_glyph(font_rid: RID, size: Vector2i, index: int) -> void","description":"Optional.\n\t\t\t\tRenders specified glyph to the font cache texture.","returnType":"void"},{"name":"_font_render_range","signature":"_font_render_range(font_rid: RID, size: Vector2i, start: int, end: int) -> void","description":"Optional.\n\t\t\t\tRenders the range of characters to the font cache texture.","returnType":"void"},{"name":"_font_set_allow_system_fallback","signature":"_font_set_allow_system_fallback(font_rid: RID, allow_system_fallback: bool) -> void","description":"Optional.\n\t\t\t\tIf set to true, system fonts can be automatically used as fallbacks.","returnType":"void"},{"name":"_font_set_antialiasing","signature":"_font_set_antialiasing(font_rid: RID, antialiasing: int) -> void","description":"Optional.\n\t\t\t\tSets font anti-aliasing mode.","returnType":"void"},{"name":"_font_set_ascent","signature":"_font_set_ascent(font_rid: RID, size: int, ascent: float) -> void","description":"Required.\n\t\t\t\tSets the font ascent (number of pixels above the baseline).","returnType":"void"},{"name":"_font_set_baseline_offset","signature":"_font_set_baseline_offset(font_rid: RID, baseline_offset: float) -> void","description":"Optional.\n\t\t\t\tSets extra baseline offset (as a fraction of font height).","returnType":"void"},{"name":"_font_set_data","signature":"_font_set_data(font_rid: RID, data: PackedByteArray) -> void","description":"Optional.\n\t\t\t\tSets font source data, e.g contents of the dynamic font source file.","returnType":"void"},{"name":"_font_set_data_ptr","signature":"_font_set_data_ptr(font_rid: RID, data_ptr: const uint8_t*, data_size: int) -> void","description":"Optional.\n\t\t\t\tSets pointer to the font source data, e.g contents of the dynamic font source file.","returnType":"void"},{"name":"_font_set_descent","signature":"_font_set_descent(font_rid: RID, size: int, descent: float) -> void","description":"Required.\n\t\t\t\tSets the font descent (number of pixels below the baseline).","returnType":"void"},{"name":"_font_set_disable_embedded_bitmaps","signature":"_font_set_disable_embedded_bitmaps(font_rid: RID, disable_embedded_bitmaps: bool) -> void","description":"Optional.\n\t\t\t\tIf set to true, embedded font bitmap loading is disabled.","returnType":"void"},{"name":"_font_set_embolden","signature":"_font_set_embolden(font_rid: RID, strength: float) -> void","description":"Sets font embolden strength. If [param strength] is not equal to zero, emboldens the font outlines. Negative values reduce the outline thickness.","returnType":"void"},{"name":"_font_set_face_index","signature":"_font_set_face_index(font_rid: RID, face_index: int) -> void","description":"Optional.\n\t\t\t\tSets an active face index in the TrueType / OpenType collection.","returnType":"void"},{"name":"_font_set_fixed_size","signature":"_font_set_fixed_size(font_rid: RID, fixed_size: int) -> void","description":"Required.\n\t\t\t\tSets bitmap font fixed size. If set to value greater than zero, same cache entry will be used for all font sizes.","returnType":"void"},{"name":"_font_set_fixed_size_scale_mode","signature":"_font_set_fixed_size_scale_mode(font_rid: RID, fixed_size_scale_mode: int) -> void","description":"Required.\n\t\t\t\tSets bitmap font scaling mode. This property is used only if fixed_size is greater than zero.","returnType":"void"},{"name":"_font_set_force_autohinter","signature":"_font_set_force_autohinter(font_rid: RID, force_autohinter: bool) -> void","description":"Optional.\n\t\t\t\tIf set to true auto-hinting is preferred over font built-in hinting.","returnType":"void"},{"name":"_font_set_generate_mipmaps","signature":"_font_set_generate_mipmaps(font_rid: RID, generate_mipmaps: bool) -> void","description":"Optional.\n\t\t\t\tIf set to true font texture mipmap generation is enabled.","returnType":"void"},{"name":"_font_set_global_oversampling","signature":"_font_set_global_oversampling(oversampling: float) -> void","description":"Optional.\n\t\t\t\tSets oversampling factor, shared by all font in the TextServer.","returnType":"void"},{"name":"_font_set_glyph_advance","signature":"_font_set_glyph_advance(font_rid: RID, size: int, glyph: int, advance: Vector2) -> void","description":"Required.\n\t\t\t\tSets glyph advance (offset of the next glyph).","returnType":"void"},{"name":"_font_set_glyph_offset","signature":"_font_set_glyph_offset(font_rid: RID, size: Vector2i, glyph: int, offset: Vector2) -> void","description":"Required.\n\t\t\t\tSets glyph offset from the baseline.","returnType":"void"},{"name":"_font_set_glyph_size","signature":"_font_set_glyph_size(font_rid: RID, size: Vector2i, glyph: int, gl_size: Vector2) -> void","description":"Required.\n\t\t\t\tSets size of the glyph.","returnType":"void"},{"name":"_font_set_glyph_texture_idx","signature":"_font_set_glyph_texture_idx(font_rid: RID, size: Vector2i, glyph: int, texture_idx: int) -> void","description":"Required.\n\t\t\t\tSets index of the cache texture containing the glyph.","returnType":"void"},{"name":"_font_set_glyph_uv_rect","signature":"_font_set_glyph_uv_rect(font_rid: RID, size: Vector2i, glyph: int, uv_rect: Rect2) -> void","description":"Required.\n\t\t\t\tSets rectangle in the cache texture containing the glyph.","returnType":"void"},{"name":"_font_set_hinting","signature":"_font_set_hinting(font_rid: RID, hinting: int) -> void","description":"Optional.\n\t\t\t\tSets font hinting mode. Used by dynamic fonts only.","returnType":"void"},{"name":"_font_set_keep_rounding_remainders","signature":"_font_set_keep_rounding_remainders(font_rid: RID, keep_rounding_remainders: bool) -> void","description":"Optional.\n\t\t\t\tSets glyph position rounding behavior. If set to true, when aligning glyphs to the pixel boundaries rounding remainders are accumulated to ensure more uniform glyph distribution. This setting has no effect if subpixel positioning is enabled.","returnType":"void"},{"name":"_font_set_kerning","signature":"_font_set_kerning(font_rid: RID, size: int, glyph_pair: Vector2i, kerning: Vector2) -> void","description":"Optional.\n\t\t\t\tSets kerning for the pair of glyphs.","returnType":"void"},{"name":"_font_set_language_support_override","signature":"_font_set_language_support_override(font_rid: RID, language: String, supported: bool) -> void","description":"Optional.\n\t\t\t\tAdds override for [method _font_is_language_supported].","returnType":"void"},{"name":"_font_set_msdf_pixel_range","signature":"_font_set_msdf_pixel_range(font_rid: RID, msdf_pixel_range: int) -> void","description":"Optional.\n\t\t\t\tSets the width of the range around the shape between the minimum and maximum representable signed distance.","returnType":"void"},{"name":"_font_set_msdf_size","signature":"_font_set_msdf_size(font_rid: RID, msdf_size: int) -> void","description":"Optional.\n\t\t\t\tSets source font size used to generate MSDF textures.","returnType":"void"},{"name":"_font_set_multichannel_signed_distance_field","signature":"_font_set_multichannel_signed_distance_field(font_rid: RID, msdf: bool) -> void","description":"Optional.\n\t\t\t\tIf set to true, glyphs of all sizes are rendered using single multichannel signed distance field generated from the dynamic font vector data. MSDF rendering allows displaying the font at any scaling factor without blurriness, and without incurring a CPU cost when the font size changes (since the font no longer needs to be rasterized on the CPU). As a downside, font hinting is not available with MSDF. The lack of font hinting may result in less crisp and less readable fonts at small sizes.","returnType":"void"},{"name":"_font_set_name","signature":"_font_set_name(font_rid: RID, name: String) -> void","description":"Optional.\n\t\t\t\tSets the font family name.","returnType":"void"},{"name":"_font_set_opentype_feature_overrides","signature":"_font_set_opentype_feature_overrides(font_rid: RID, overrides: Dictionary) -> void","description":"Optional.\n\t\t\t\tSets font OpenType feature set override.","returnType":"void"},{"name":"_font_set_oversampling","signature":"_font_set_oversampling(font_rid: RID, oversampling: float) -> void","description":"Optional.\n\t\t\t\tSets font oversampling factor, if set to 0.0 global oversampling factor is used instead. Used by dynamic fonts only.","returnType":"void"},{"name":"_font_set_scale","signature":"_font_set_scale(font_rid: RID, size: int, scale: float) -> void","description":"Required.\n\t\t\t\tSets scaling factor of the color bitmap font.","returnType":"void"},{"name":"_font_set_script_support_override","signature":"_font_set_script_support_override(font_rid: RID, script: String, supported: bool) -> void","description":"Optional.\n\t\t\t\tAdds override for [method _font_is_script_supported].","returnType":"void"},{"name":"_font_set_spacing","signature":"_font_set_spacing(font_rid: RID, spacing: int, value: int) -> void","description":"Optional.\n\t\t\t\tSets the spacing for [param spacing] (see [enum TextServer.SpacingType]) to [param value] in pixels (not relative to the font size).","returnType":"void"},{"name":"_font_set_stretch","signature":"_font_set_stretch(font_rid: RID, stretch: int) -> void","description":"Optional.\n\t\t\t\tSets font stretch amount, compared to a normal width. A percentage value between 50% and 200%.","returnType":"void"},{"name":"_font_set_style","signature":"_font_set_style(font_rid: RID, style: int) -> void","description":"Optional.\n\t\t\t\tSets the font style flags, see [enum TextServer.FontStyle].","returnType":"void"},{"name":"_font_set_style_name","signature":"_font_set_style_name(font_rid: RID, name_style: String) -> void","description":"Optional.\n\t\t\t\tSets the font style name.","returnType":"void"},{"name":"_font_set_subpixel_positioning","signature":"_font_set_subpixel_positioning(font_rid: RID, subpixel_positioning: int) -> void","description":"Optional.\n\t\t\t\tSets font subpixel glyph positioning mode.","returnType":"void"},{"name":"_font_set_texture_image","signature":"_font_set_texture_image(font_rid: RID, size: Vector2i, texture_index: int, image: Image) -> void","description":"Required.\n\t\t\t\tSets font cache texture image data.","returnType":"void"},{"name":"_font_set_texture_offsets","signature":"_font_set_texture_offsets(font_rid: RID, size: Vector2i, texture_index: int, offset: PackedInt32Array) -> void","description":"Optional.\n\t\t\t\tSets array containing glyph packing data.","returnType":"void"},{"name":"_font_set_transform","signature":"_font_set_transform(font_rid: RID, transform: Transform2D) -> void","description":"Optional.\n\t\t\t\tSets 2D transform, applied to the font outlines, can be used for slanting, flipping, and rotating glyphs.","returnType":"void"},{"name":"_font_set_underline_position","signature":"_font_set_underline_position(font_rid: RID, size: int, underline_position: float) -> void","description":"Required.\n\t\t\t\tSets pixel offset of the underline below the baseline.","returnType":"void"},{"name":"_font_set_underline_thickness","signature":"_font_set_underline_thickness(font_rid: RID, size: int, underline_thickness: float) -> void","description":"Required.\n\t\t\t\tSets thickness of the underline in pixels.","returnType":"void"},{"name":"_font_set_variation_coordinates","signature":"_font_set_variation_coordinates(font_rid: RID, variation_coordinates: Dictionary) -> void","description":"Optional.\n\t\t\t\tSets variation coordinates for the specified font cache entry.","returnType":"void"},{"name":"_font_set_weight","signature":"_font_set_weight(font_rid: RID, weight: int) -> void","description":"Optional.\n\t\t\t\tSets weight (boldness) of the font. A value in the 100...999 range, normal font weight is 400, bold font weight is 700.","returnType":"void"},{"name":"_font_supported_feature_list","signature":"_font_supported_feature_list(font_rid: RID) -> Dictionary","description":"Optional.\n\t\t\t\tReturns the dictionary of the supported OpenType features.","returnType":"Dictionary"},{"name":"_font_supported_variation_list","signature":"_font_supported_variation_list(font_rid: RID) -> Dictionary","description":"Optional.\n\t\t\t\tReturns the dictionary of the supported OpenType variation coordinates.","returnType":"Dictionary"},{"name":"_format_number","signature":"_format_number(number: String, language: String) -> String","description":"Optional.\n\t\t\t\tConverts a number from the Western Arabic (0..9) to the numeral systems used in [param language].","returnType":"String"},{"name":"_free_rid","signature":"_free_rid(rid: RID) -> void","description":"Required.\n\t\t\t\tFrees an object created by this .","returnType":"void"},{"name":"_get_features","signature":"_get_features() -> int","description":"Required.\n\t\t\t\tReturns text server features, see [enum TextServer.Feature].","returnType":"int"},{"name":"_get_hex_code_box_size","signature":"_get_hex_code_box_size(size: int, index: int) -> Vector2","description":"Optional.\n\t\t\t\tReturns size of the replacement character (box with character hexadecimal code that is drawn in place of invalid characters).","returnType":"Vector2"},{"name":"_get_name","signature":"_get_name() -> String","description":"Required.\n\t\t\t\tReturns the name of the server interface.","returnType":"String"},{"name":"_get_support_data","signature":"_get_support_data() -> PackedByteArray","description":"Optional.\n\t\t\t\tReturns default TextServer database (e.g. ICU break iterators and dictionaries).","returnType":"PackedByteArray"},{"name":"_get_support_data_filename","signature":"_get_support_data_filename() -> String","description":"Optional.\n\t\t\t\tReturns default TextServer database (e.g. ICU break iterators and dictionaries) filename.","returnType":"String"},{"name":"_get_support_data_info","signature":"_get_support_data_info() -> String","description":"Optional.\n\t\t\t\tReturns TextServer database (e.g. ICU break iterators and dictionaries) description.","returnType":"String"},{"name":"_has","signature":"_has(rid: RID) -> bool","description":"Required.\n\t\t\t\tReturns true if [param rid] is valid resource owned by this text server.","returnType":"bool"},{"name":"_has_feature","signature":"_has_feature(feature: int) -> bool","description":"Required.\n\t\t\t\tReturns true if the server supports a feature.","returnType":"bool"},{"name":"_is_confusable","signature":"_is_confusable(string: String, dict: PackedStringArray) -> int","description":"Optional.\n\t\t\t\tReturns index of the first string in [param dict] which is visually confusable with the [param string], or -1 if none is found.","returnType":"int"},{"name":"_is_locale_right_to_left","signature":"_is_locale_right_to_left(locale: String) -> bool","description":"Required.\n\t\t\t\tReturns true if locale is right-to-left.","returnType":"bool"},{"name":"_is_valid_identifier","signature":"_is_valid_identifier(string: String) -> bool","description":"Optional.\n\t\t\t\tReturns true if [param string] is a valid identifier.","returnType":"bool"},{"name":"_is_valid_letter","signature":"_is_valid_letter(unicode: int) -> bool","description":"","returnType":"bool"},{"name":"_load_support_data","signature":"_load_support_data(filename: String) -> bool","description":"Optional.\n\t\t\t\tLoads optional TextServer database (e.g. ICU break iterators and dictionaries).","returnType":"bool"},{"name":"_name_to_tag","signature":"_name_to_tag(name: String) -> int","description":"Optional.\n\t\t\t\tConverts readable feature, variation, script, or language name to OpenType tag.","returnType":"int"},{"name":"_parse_number","signature":"_parse_number(number: String, language: String) -> String","description":"Optional.\n\t\t\t\tConverts [param number] from the numeral systems used in [param language] to Western Arabic (0..9).","returnType":"String"},{"name":"_parse_structured_text","signature":"_parse_structured_text(parser_type: int, args: Array, text: String) -> Vector3i[]","description":"Optional.\n\t\t\t\tDefault implementation of the BiDi algorithm override function. See [enum TextServer.StructuredTextParser] for more info.","returnType":"Vector3i[]"},{"name":"_percent_sign","signature":"_percent_sign(language: String) -> String","description":"Optional.\n\t\t\t\tReturns percent sign used in the [param language].","returnType":"String"},{"name":"_save_support_data","signature":"_save_support_data(filename: String) -> bool","description":"Optional.\n\t\t\t\tSaves optional TextServer database (e.g. ICU break iterators and dictionaries) to the file.","returnType":"bool"},{"name":"_shaped_get_span_count","signature":"_shaped_get_span_count(shaped: RID) -> int","description":"Required.\n\t\t\t\tReturns number of text spans added using [method _shaped_text_add_string] or [method _shaped_text_add_object].","returnType":"int"},{"name":"_shaped_get_span_embedded_object","signature":"_shaped_get_span_embedded_object(shaped: RID, index: int) -> Variant","description":"Required.\n\t\t\t\tReturns text embedded object key.","returnType":"Variant"},{"name":"_shaped_get_span_meta","signature":"_shaped_get_span_meta(shaped: RID, index: int) -> Variant","description":"Required.\n\t\t\t\tReturns text span metadata.","returnType":"Variant"},{"name":"_shaped_set_span_update_font","signature":"_shaped_set_span_update_font(shaped: RID, index: int, fonts: RID[], size: int, opentype_features: Dictionary) -> void","description":"Required.\n\t\t\t\tChanges text span font, font size, and OpenType features, without changing the text.","returnType":"void"},{"name":"_shaped_text_add_object","signature":"_shaped_text_add_object(shaped: RID, key: Variant, size: Vector2, inline_align: int, length: int, baseline: float) -> bool","description":"Required.\n\t\t\t\tAdds inline object to the text buffer, [param key] must be unique. In the text, object is represented as [param length] object replacement characters.","returnType":"bool"},{"name":"_shaped_text_add_string","signature":"_shaped_text_add_string(shaped: RID, text: String, fonts: RID[], size: int, opentype_features: Dictionary, language: String, meta: Variant) -> bool","description":"Required.\n\t\t\t\tAdds text span and font to draw it to the text buffer.","returnType":"bool"},{"name":"_shaped_text_clear","signature":"_shaped_text_clear(shaped: RID) -> void","description":"Required.\n\t\t\t\tClears text buffer (removes text and inline objects).","returnType":"void"},{"name":"_shaped_text_closest_character_pos","signature":"_shaped_text_closest_character_pos(shaped: RID, pos: int) -> int","description":"Optional.\n\t\t\t\tReturns composite character position closest to the [param pos].","returnType":"int"},{"name":"_shaped_text_draw","signature":"_shaped_text_draw(shaped: RID, canvas: RID, pos: Vector2, clip_l: float, clip_r: float, color: Color) -> void","description":"Optional.\n\t\t\t\tDraw shaped text into a canvas item at a given position, with [param color]. [param pos] specifies the leftmost point of the baseline (for horizontal layout) or topmost point of the baseline (for vertical layout).","returnType":"void"},{"name":"_shaped_text_draw_outline","signature":"_shaped_text_draw_outline(shaped: RID, canvas: RID, pos: Vector2, clip_l: float, clip_r: float, outline_size: int, color: Color) -> void","description":"Optional.\n\t\t\t\tDraw the outline of the shaped text into a canvas item at a given position, with [param color]. [param pos] specifies the leftmost point of the baseline (for horizontal layout) or topmost point of the baseline (for vertical layout).","returnType":"void"},{"name":"_shaped_text_fit_to_width","signature":"_shaped_text_fit_to_width(shaped: RID, width: float, justification_flags: int) -> float","description":"Optional.\n\t\t\t\tAdjusts text width to fit to specified width, returns new text width.","returnType":"float"},{"name":"_shaped_text_get_ascent","signature":"_shaped_text_get_ascent(shaped: RID) -> float","description":"Required.\n\t\t\t\tReturns the text ascent (number of pixels above the baseline for horizontal layout or to the left of baseline for vertical).","returnType":"float"},{"name":"_shaped_text_get_carets","signature":"_shaped_text_get_carets(shaped: RID, position: int, caret: CaretInfo*) -> void","description":"Optional.\n\t\t\t\tReturns shapes of the carets corresponding to the character offset [param position] in the text. Returned caret shape is 1 pixel wide rectangle.","returnType":"void"},{"name":"_shaped_text_get_character_breaks","signature":"_shaped_text_get_character_breaks(shaped: RID) -> PackedInt32Array","description":"Optional.\n\t\t\t\tReturns array of the composite character boundaries.","returnType":"PackedInt32Array"},{"name":"_shaped_text_get_custom_ellipsis","signature":"_shaped_text_get_custom_ellipsis(shaped: RID) -> int","description":"Optional.\n\t\t\t\tReturns ellipsis character used for text clipping.","returnType":"int"},{"name":"_shaped_text_get_custom_punctuation","signature":"_shaped_text_get_custom_punctuation(shaped: RID) -> String","description":"Optional.\n\t\t\t\tReturns custom punctuation character list, used for word breaking. If set to empty string, server defaults are used.","returnType":"String"},{"name":"_shaped_text_get_descent","signature":"_shaped_text_get_descent(shaped: RID) -> float","description":"Required.\n\t\t\t\tReturns the text descent (number of pixels below the baseline for horizontal layout or to the right of baseline for vertical).","returnType":"float"},{"name":"_shaped_text_get_direction","signature":"_shaped_text_get_direction(shaped: RID) -> int","description":"Optional.\n\t\t\t\tReturns direction of the text.","returnType":"int"},{"name":"_shaped_text_get_dominant_direction_in_range","signature":"_shaped_text_get_dominant_direction_in_range(shaped: RID, start: int, end: int) -> int","description":"Optional.\n\t\t\t\tReturns dominant direction of in the range of text.","returnType":"int"},{"name":"_shaped_text_get_ellipsis_glyph_count","signature":"_shaped_text_get_ellipsis_glyph_count(shaped: RID) -> int","description":"Required.\n\t\t\t\tReturns number of glyphs in the ellipsis.","returnType":"int"},{"name":"_shaped_text_get_ellipsis_glyphs","signature":"_shaped_text_get_ellipsis_glyphs(shaped: RID) -> const Glyph*","description":"Required.\n\t\t\t\tReturns array of the glyphs in the ellipsis.","returnType":"const Glyph*"},{"name":"_shaped_text_get_ellipsis_pos","signature":"_shaped_text_get_ellipsis_pos(shaped: RID) -> int","description":"Required.\n\t\t\t\tReturns position of the ellipsis.","returnType":"int"},{"name":"_shaped_text_get_glyph_count","signature":"_shaped_text_get_glyph_count(shaped: RID) -> int","description":"Required.\n\t\t\t\tReturns number of glyphs in the buffer.","returnType":"int"},{"name":"_shaped_text_get_glyphs","signature":"_shaped_text_get_glyphs(shaped: RID) -> const Glyph*","description":"Required.\n\t\t\t\tReturns an array of glyphs in the visual order.","returnType":"const Glyph*"},{"name":"_shaped_text_get_grapheme_bounds","signature":"_shaped_text_get_grapheme_bounds(shaped: RID, pos: int) -> Vector2","description":"Optional.\n\t\t\t\tReturns composite character's bounds as offsets from the start of the line.","returnType":"Vector2"},{"name":"_shaped_text_get_inferred_direction","signature":"_shaped_text_get_inferred_direction(shaped: RID) -> int","description":"Optional.\n\t\t\t\tReturns direction of the text, inferred by the BiDi algorithm.","returnType":"int"},{"name":"_shaped_text_get_line_breaks","signature":"_shaped_text_get_line_breaks(shaped: RID, width: float, start: int, break_flags: int) -> PackedInt32Array","description":"Optional.\n\t\t\t\tBreaks text to the lines and returns character ranges for each line.","returnType":"PackedInt32Array"},{"name":"_shaped_text_get_line_breaks_adv","signature":"_shaped_text_get_line_breaks_adv(shaped: RID, width: PackedFloat32Array, start: int, once: bool, break_flags: int) -> PackedInt32Array","description":"Optional.\n\t\t\t\tBreaks text to the lines and columns. Returns character ranges for each segment.","returnType":"PackedInt32Array"},{"name":"_shaped_text_get_object_glyph","signature":"_shaped_text_get_object_glyph(shaped: RID, key: Variant) -> int","description":"Required.\n\t\t\t\tReturns the glyph index of the inline object.","returnType":"int"},{"name":"_shaped_text_get_object_range","signature":"_shaped_text_get_object_range(shaped: RID, key: Variant) -> Vector2i","description":"Required.\n\t\t\t\tReturns the character range of the inline object.","returnType":"Vector2i"},{"name":"_shaped_text_get_object_rect","signature":"_shaped_text_get_object_rect(shaped: RID, key: Variant) -> Rect2","description":"Required.\n\t\t\t\tReturns bounding rectangle of the inline object.","returnType":"Rect2"},{"name":"_shaped_text_get_objects","signature":"_shaped_text_get_objects(shaped: RID) -> Array","description":"Required.\n\t\t\t\tReturns array of inline objects.","returnType":"Array"},{"name":"_shaped_text_get_orientation","signature":"_shaped_text_get_orientation(shaped: RID) -> int","description":"Optional.\n\t\t\t\tReturns text orientation.","returnType":"int"},{"name":"_shaped_text_get_parent","signature":"_shaped_text_get_parent(shaped: RID) -> RID","description":"Required.\n\t\t\t\tReturns the parent buffer from which the substring originates.","returnType":"RID"},{"name":"_shaped_text_get_preserve_control","signature":"_shaped_text_get_preserve_control(shaped: RID) -> bool","description":"Optional.\n\t\t\t\tReturns true if text buffer is configured to display control characters.","returnType":"bool"},{"name":"_shaped_text_get_preserve_invalid","signature":"_shaped_text_get_preserve_invalid(shaped: RID) -> bool","description":"Optional.\n\t\t\t\tReturns true if text buffer is configured to display hexadecimal codes in place of invalid characters.","returnType":"bool"},{"name":"_shaped_text_get_range","signature":"_shaped_text_get_range(shaped: RID) -> Vector2i","description":"Required.\n\t\t\t\tReturns substring buffer character range in the parent buffer.","returnType":"Vector2i"},{"name":"_shaped_text_get_selection","signature":"_shaped_text_get_selection(shaped: RID, start: int, end: int) -> PackedVector2Array","description":"Optional.\n\t\t\t\tReturns selection rectangles for the specified character range.","returnType":"PackedVector2Array"},{"name":"_shaped_text_get_size","signature":"_shaped_text_get_size(shaped: RID) -> Vector2","description":"Required.\n\t\t\t\tReturns size of the text.","returnType":"Vector2"},{"name":"_shaped_text_get_spacing","signature":"_shaped_text_get_spacing(shaped: RID, spacing: int) -> int","description":"Optional.\n\t\t\t\tReturns extra spacing added between glyphs or lines in pixels.","returnType":"int"},{"name":"_shaped_text_get_trim_pos","signature":"_shaped_text_get_trim_pos(shaped: RID) -> int","description":"Required.\n\t\t\t\tReturns the position of the overrun trim.","returnType":"int"},{"name":"_shaped_text_get_underline_position","signature":"_shaped_text_get_underline_position(shaped: RID) -> float","description":"Required.\n\t\t\t\tReturns pixel offset of the underline below the baseline.","returnType":"float"},{"name":"_shaped_text_get_underline_thickness","signature":"_shaped_text_get_underline_thickness(shaped: RID) -> float","description":"Required.\n\t\t\t\tReturns thickness of the underline.","returnType":"float"},{"name":"_shaped_text_get_width","signature":"_shaped_text_get_width(shaped: RID) -> float","description":"Required.\n\t\t\t\tReturns width (for horizontal layout) or height (for vertical) of the text.","returnType":"float"},{"name":"_shaped_text_get_word_breaks","signature":"_shaped_text_get_word_breaks(shaped: RID, grapheme_flags: int, skip_grapheme_flags: int) -> PackedInt32Array","description":"Optional.\n\t\t\t\tBreaks text into words and returns array of character ranges. Use [param grapheme_flags] to set what characters are used for breaking (see [enum TextServer.GraphemeFlag]).","returnType":"PackedInt32Array"},{"name":"_shaped_text_hit_test_grapheme","signature":"_shaped_text_hit_test_grapheme(shaped: RID, coord: float) -> int","description":"Optional.\n\t\t\t\tReturns grapheme index at the specified pixel offset at the baseline, or -1 if none is found.","returnType":"int"},{"name":"_shaped_text_hit_test_position","signature":"_shaped_text_hit_test_position(shaped: RID, coord: float) -> int","description":"Optional.\n\t\t\t\tReturns caret character offset at the specified pixel offset at the baseline. This function always returns a valid position.","returnType":"int"},{"name":"_shaped_text_is_ready","signature":"_shaped_text_is_ready(shaped: RID) -> bool","description":"Required.\n\t\t\t\tReturns true if buffer is successfully shaped.","returnType":"bool"},{"name":"_shaped_text_next_character_pos","signature":"_shaped_text_next_character_pos(shaped: RID, pos: int) -> int","description":"Optional.\n\t\t\t\tReturns composite character end position closest to the [param pos].","returnType":"int"},{"name":"_shaped_text_next_grapheme_pos","signature":"_shaped_text_next_grapheme_pos(shaped: RID, pos: int) -> int","description":"Optional.\n\t\t\t\tReturns grapheme end position closest to the [param pos].","returnType":"int"},{"name":"_shaped_text_overrun_trim_to_width","signature":"_shaped_text_overrun_trim_to_width(shaped: RID, width: float, trim_flags: int) -> void","description":"Optional.\n\t\t\t\tTrims text if it exceeds the given width.","returnType":"void"},{"name":"_shaped_text_prev_character_pos","signature":"_shaped_text_prev_character_pos(shaped: RID, pos: int) -> int","description":"Optional.\n\t\t\t\tReturns composite character start position closest to the [param pos].","returnType":"int"},{"name":"_shaped_text_prev_grapheme_pos","signature":"_shaped_text_prev_grapheme_pos(shaped: RID, pos: int) -> int","description":"Optional.\n\t\t\t\tReturns grapheme start position closest to the [param pos].","returnType":"int"},{"name":"_shaped_text_resize_object","signature":"_shaped_text_resize_object(shaped: RID, key: Variant, size: Vector2, inline_align: int, baseline: float) -> bool","description":"Required.\n\t\t\t\tSets new size and alignment of embedded object.","returnType":"bool"},{"name":"_shaped_text_set_bidi_override","signature":"_shaped_text_set_bidi_override(shaped: RID, override: Array) -> void","description":"Optional.\n\t\t\t\tOverrides BiDi for the structured text.","returnType":"void"},{"name":"_shaped_text_set_custom_ellipsis","signature":"_shaped_text_set_custom_ellipsis(shaped: RID, char: int) -> void","description":"Optional.\n\t\t\t\tSets ellipsis character used for text clipping.","returnType":"void"},{"name":"_shaped_text_set_custom_punctuation","signature":"_shaped_text_set_custom_punctuation(shaped: RID, punct: String) -> void","description":"Optional.\n\t\t\t\tSets custom punctuation character list, used for word breaking. If set to empty string, server defaults are used.","returnType":"void"},{"name":"_shaped_text_set_direction","signature":"_shaped_text_set_direction(shaped: RID, direction: int) -> void","description":"Optional.\n\t\t\t\tSets desired text direction. If set to [constant TextServer.DIRECTION_AUTO], direction will be detected based on the buffer contents and current locale.","returnType":"void"},{"name":"_shaped_text_set_orientation","signature":"_shaped_text_set_orientation(shaped: RID, orientation: int) -> void","description":"Optional.\n\t\t\t\tSets desired text orientation.","returnType":"void"},{"name":"_shaped_text_set_preserve_control","signature":"_shaped_text_set_preserve_control(shaped: RID, enabled: bool) -> void","description":"Optional.\n\t\t\t\tIf set to true text buffer will display control characters.","returnType":"void"},{"name":"_shaped_text_set_preserve_invalid","signature":"_shaped_text_set_preserve_invalid(shaped: RID, enabled: bool) -> void","description":"Optional.\n\t\t\t\tIf set to true text buffer will display invalid characters as hexadecimal codes, otherwise nothing is displayed.","returnType":"void"},{"name":"_shaped_text_set_spacing","signature":"_shaped_text_set_spacing(shaped: RID, spacing: int, value: int) -> void","description":"Optional.\n\t\t\t\tSets extra spacing added between glyphs or lines in pixels.","returnType":"void"},{"name":"_shaped_text_shape","signature":"_shaped_text_shape(shaped: RID) -> bool","description":"Required.\n\t\t\t\tShapes buffer if it's not shaped. Returns true if the string is shaped successfully.","returnType":"bool"},{"name":"_shaped_text_sort_logical","signature":"_shaped_text_sort_logical(shaped: RID) -> const Glyph*","description":"Required.\n\t\t\t\tReturns text glyphs in the logical order.","returnType":"const Glyph*"},{"name":"_shaped_text_substr","signature":"_shaped_text_substr(shaped: RID, start: int, length: int) -> RID","description":"Required.\n\t\t\t\tReturns text buffer for the substring of the text in the [param shaped] text buffer (including inline objects).","returnType":"RID"},{"name":"_shaped_text_tab_align","signature":"_shaped_text_tab_align(shaped: RID, tab_stops: PackedFloat32Array) -> float","description":"Optional.\n\t\t\t\tAligns shaped text to the given tab-stops.","returnType":"float"},{"name":"_shaped_text_update_breaks","signature":"_shaped_text_update_breaks(shaped: RID) -> bool","description":"Optional.\n\t\t\t\tUpdates break points in the shaped text. This method is called by default implementation of text breaking functions.","returnType":"bool"},{"name":"_shaped_text_update_justification_ops","signature":"_shaped_text_update_justification_ops(shaped: RID) -> bool","description":"Optional.\n\t\t\t\tUpdates justification points in the shaped text. This method is called by default implementation of text justification functions.","returnType":"bool"},{"name":"_spoof_check","signature":"_spoof_check(string: String) -> bool","description":"Optional.\n\t\t\t\tReturns true if [param string] is likely to be an attempt at confusing the reader.","returnType":"bool"},{"name":"_string_get_character_breaks","signature":"_string_get_character_breaks(string: String, language: String) -> PackedInt32Array","description":"Optional.\n\t\t\t\tReturns array of the composite character boundaries.","returnType":"PackedInt32Array"},{"name":"_string_get_word_breaks","signature":"_string_get_word_breaks(string: String, language: String, chars_per_line: int) -> PackedInt32Array","description":"Optional.\n\t\t\t\tReturns an array of the word break boundaries. Elements in the returned array are the offsets of the start and end of words. Therefore the length of the array is always even.","returnType":"PackedInt32Array"},{"name":"_string_to_lower","signature":"_string_to_lower(string: String, language: String) -> String","description":"Optional.\n\t\t\t\tReturns the string converted to lowercase.","returnType":"String"},{"name":"_string_to_title","signature":"_string_to_title(string: String, language: String) -> String","description":"Optional.\n\t\t\t\tReturns the string converted to title case.","returnType":"String"},{"name":"_string_to_upper","signature":"_string_to_upper(string: String, language: String) -> String","description":"Optional.\n\t\t\t\tReturns the string converted to uppercase.","returnType":"String"},{"name":"_strip_diacritics","signature":"_strip_diacritics(string: String) -> String","description":"Optional.\n\t\t\t\tStrips diacritics from the string.","returnType":"String"},{"name":"_tag_to_name","signature":"_tag_to_name(tag: int) -> String","description":"Optional.\n\t\t\t\tConverts OpenType tag to readable feature, variation, script, or language name.","returnType":"String"}],"signals":[]},"TextServerManager":{"name":"TextServerManager","description":"A singleton for managing  implementations.","inherits":"Object","properties":[],"methods":[{"name":"add_interface","signature":"add_interface(interface: TextServer) -> void","description":"Registers a  interface.","returnType":"void"},{"name":"find_interface","signature":"find_interface(name: String) -> TextServer","description":"Finds an interface by its [param name].","returnType":"TextServer"},{"name":"get_interface","signature":"get_interface(idx: int) -> TextServer","description":"Returns the interface registered at a given index.","returnType":"TextServer"},{"name":"get_interface_count","signature":"get_interface_count() -> int","description":"Returns the number of interfaces currently registered.","returnType":"int"},{"name":"get_interfaces","signature":"get_interfaces() -> Dictionary[]","description":"Returns a list of available interfaces, with the index and name of each interface.","returnType":"Dictionary[]"},{"name":"get_primary_interface","signature":"get_primary_interface() -> TextServer","description":"Returns the primary  interface currently in use.","returnType":"TextServer"},{"name":"remove_interface","signature":"remove_interface(interface: TextServer) -> void","description":"Removes an interface. All fonts and shaped text caches should be freed before removing an interface.","returnType":"void"},{"name":"set_primary_interface","signature":"set_primary_interface(index: TextServer) -> void","description":"Sets the primary  interface.","returnType":"void"}],"signals":[{"name":"interface_added","description":"Emitted when a new interface has been added."},{"name":"interface_removed","description":"Emitted when an interface is removed."}]},"Texture":{"name":"Texture","description":"Base class for all texture types.","inherits":"Resource","properties":[],"methods":[],"signals":[]},"Texture2D":{"name":"Texture2D","description":"Texture for 2D and 3D.","inherits":"Texture","properties":[],"methods":[{"name":"_draw","signature":"_draw(to_canvas_item: RID, pos: Vector2, modulate: Color, transpose: bool) -> void","description":"Called when the entire  is requested to be drawn over a , with the top-left offset specified in [param pos]. [param modulate] specifies a multiplier for the colors being drawn, while [param transpose] specifies whether drawing should be performed in column-major order instead of row-major order (resulting in 90-degree clockwise rotation).\n\t\t\t\tNote: This is only used in 2D rendering, not 3D.","returnType":"void"},{"name":"_draw_rect","signature":"_draw_rect(to_canvas_item: RID, rect: Rect2, tile: bool, modulate: Color, transpose: bool) -> void","description":"Called when the  is requested to be drawn onto 's specified [param rect]. [param modulate] specifies a multiplier for the colors being drawn, while [param transpose] specifies whether drawing should be performed in column-major order instead of row-major order (resulting in 90-degree clockwise rotation).\n\t\t\t\tNote: This is only used in 2D rendering, not 3D.","returnType":"void"},{"name":"_draw_rect_region","signature":"_draw_rect_region(to_canvas_item: RID, rect: Rect2, src_rect: Rect2, modulate: Color, transpose: bool, clip_uv: bool) -> void","description":"Called when a part of the  specified by [param src_rect]'s coordinates is requested to be drawn onto 's specified [param rect]. [param modulate] specifies a multiplier for the colors being drawn, while [param transpose] specifies whether drawing should be performed in column-major order instead of row-major order (resulting in 90-degree clockwise rotation).\n\t\t\t\tNote: This is only used in 2D rendering, not 3D.","returnType":"void"},{"name":"_get_height","signature":"_get_height() -> int","description":"Called when the 's height is queried.","returnType":"int"},{"name":"_get_width","signature":"_get_width() -> int","description":"Called when the 's width is queried.","returnType":"int"},{"name":"_has_alpha","signature":"_has_alpha() -> bool","description":"Called when the presence of an alpha channel in the  is queried.","returnType":"bool"},{"name":"_is_pixel_opaque","signature":"_is_pixel_opaque(x: int, y: int) -> bool","description":"Called when a pixel's opaque state in the  is queried at the specified (x, y) position.","returnType":"bool"},{"name":"create_placeholder","signature":"create_placeholder() -> Resource","description":"Creates a placeholder version of this resource ().","returnType":"Resource"},{"name":"draw","signature":"draw(canvas_item: RID, position: Vector2, modulate: Color, transpose: bool) -> void","description":"Draws the texture using a  with the  API at the specified [param position].","returnType":"void"},{"name":"draw_rect","signature":"draw_rect(canvas_item: RID, rect: Rect2, tile: bool, modulate: Color, transpose: bool) -> void","description":"Draws the texture using a  with the  API.","returnType":"void"},{"name":"draw_rect_region","signature":"draw_rect_region(canvas_item: RID, rect: Rect2, src_rect: Rect2, modulate: Color, transpose: bool, clip_uv: bool) -> void","description":"Draws a part of the texture using a  with the  API.","returnType":"void"},{"name":"get_height","signature":"get_height() -> int","description":"Returns the texture height in pixels.","returnType":"int"},{"name":"get_image","signature":"get_image() -> Image","description":"Returns an  that is a copy of data from this  (a new  is created each time). s can be accessed and manipulated directly.\n\t\t\t\tNote: This will return null if this  is invalid.\n\t\t\t\tNote: This will fetch the texture data from the GPU, which might cause performance problems when overused. Avoid calling [method get_image] every frame, especially on large textures.","returnType":"Image"},{"name":"get_size","signature":"get_size() -> Vector2","description":"Returns the texture size in pixels.","returnType":"Vector2"},{"name":"get_width","signature":"get_width() -> int","description":"Returns the texture width in pixels.","returnType":"int"},{"name":"has_alpha","signature":"has_alpha() -> bool","description":"Returns true if this  has an alpha channel.","returnType":"bool"}],"signals":[]},"Texture2DArray":{"name":"Texture2DArray","description":"A single texture resource which consists of multiple, separate images. Each image has the same dimensions and number of mipmap levels.","inherits":"ImageTextureLayered","properties":[],"methods":[{"name":"create_placeholder","signature":"create_placeholder() -> Resource","description":"Creates a placeholder version of this resource ().","returnType":"Resource"}],"signals":[]},"Texture2DArrayRD":{"name":"Texture2DArrayRD","description":"Texture Array for 2D that is bound to a texture created on the .","inherits":"TextureLayeredRD","properties":[],"methods":[],"signals":[]},"Texture2DRD":{"name":"Texture2DRD","description":"Texture for 2D that is bound to a texture created on the .","inherits":"Texture2D","properties":[{"name":"texture_rd_rid","type":"RID","description":"The RID of the texture object created on the [RenderingDevice]."}],"methods":[],"signals":[]},"Texture3D":{"name":"Texture3D","description":"Base class for 3-dimensional textures.","inherits":"Texture","properties":[],"methods":[{"name":"_get_data","signature":"_get_data() -> Image[]","description":"Called when the 's data is queried.","returnType":"Image[]"},{"name":"_get_depth","signature":"_get_depth() -> int","description":"Called when the 's depth is queried.","returnType":"int"},{"name":"_get_format","signature":"_get_format() -> int","description":"Called when the 's format is queried.","returnType":"int"},{"name":"_get_height","signature":"_get_height() -> int","description":"Called when the 's height is queried.","returnType":"int"},{"name":"_get_width","signature":"_get_width() -> int","description":"Called when the 's width is queried.","returnType":"int"},{"name":"_has_mipmaps","signature":"_has_mipmaps() -> bool","description":"Called when the presence of mipmaps in the  is queried.","returnType":"bool"},{"name":"create_placeholder","signature":"create_placeholder() -> Resource","description":"Creates a placeholder version of this resource ().","returnType":"Resource"},{"name":"get_data","signature":"get_data() -> Image[]","description":"Returns the 's data as an array of s. Each  represents a slice of the , with different slices mapping to different depth (Z axis) levels.","returnType":"Image[]"},{"name":"get_depth","signature":"get_depth() -> int","description":"Returns the 's depth in pixels. Depth is typically represented by the Z axis (a dimension not present in ).","returnType":"int"},{"name":"get_format","signature":"get_format() -> int","description":"Returns the current format being used by this texture. See [enum Image.Format] for details.","returnType":"int"},{"name":"get_height","signature":"get_height() -> int","description":"Returns the 's height in pixels. Width is typically represented by the Y axis.","returnType":"int"},{"name":"get_width","signature":"get_width() -> int","description":"Returns the 's width in pixels. Width is typically represented by the X axis.","returnType":"int"},{"name":"has_mipmaps","signature":"has_mipmaps() -> bool","description":"Returns true if the  has generated mipmaps.","returnType":"bool"}],"signals":[]},"Texture3DRD":{"name":"Texture3DRD","description":"Texture for 3D that is bound to a texture created on the .","inherits":"Texture3D","properties":[{"name":"texture_rd_rid","type":"RID","description":"The RID of the texture object created on the [RenderingDevice]."}],"methods":[],"signals":[]},"TextureButton":{"name":"TextureButton","description":"Texture-based button. Supports Pressed, Hover, Disabled and Focused states.","inherits":"BaseButton","properties":[{"name":"flip_h","type":"bool","description":"If [code]true[/code], texture is flipped horizontally."},{"name":"flip_v","type":"bool","description":"If [code]true[/code], texture is flipped vertically."},{"name":"ignore_texture_size","type":"bool","description":"If [code]true[/code], the size of the texture won't be considered for minimum size calculation, so the [TextureButton] can be shrunk down past the texture size."},{"name":"stretch_mode","type":"int","description":"Controls the texture's behavior when you resize the node's bounding rectangle. See the [enum StretchMode] constants for available options."},{"name":"texture_click_mask","type":"BitMap","description":"Pure black and white [BitMap] image to use for click detection. On the mask, white pixels represent the button's clickable area. Use it to create buttons with curved shapes."},{"name":"texture_disabled","type":"Texture2D","description":"Texture to display when the node is disabled. See [member BaseButton.disabled]. If not assigned, the [TextureButton] displays [member texture_normal] instead."},{"name":"texture_focused","type":"Texture2D","description":"Texture to [i]overlay on the base texture[/i] when the node has mouse or keyboard focus. Because [member texture_focused] is displayed on top of the base texture, a partially transparent texture should be used to ensure the base texture remains visible. A texture that represents an outline or an underline works well for this purpose. To disable the focus visual effect, assign a fully transparent texture of any size. Note that disabling the focus visual effect will harm keyboard/controller navigation usability, so this is not recommended for accessibility reasons."},{"name":"texture_hover","type":"Texture2D","description":"Texture to display when the mouse hovers over the node. If not assigned, the [TextureButton] displays [member texture_normal] instead when hovered over."},{"name":"texture_normal","type":"Texture2D","description":"Texture to display by default, when the node is [b]not[/b] in the disabled, hover or pressed state. This texture is still displayed in the focused state, with [member texture_focused] drawn on top."},{"name":"texture_pressed","type":"Texture2D","description":"Texture to display on mouse down over the node, if the node has keyboard focus and the player presses the Enter key or if the player presses the [member BaseButton.shortcut] key. If not assigned, the [TextureButton] displays [member texture_hover] instead when pressed."}],"methods":[],"signals":[]},"TextureCubemapArrayRD":{"name":"TextureCubemapArrayRD","description":"Texture Array for Cubemaps that is bound to a texture created on the .","inherits":"TextureLayeredRD","properties":[],"methods":[],"signals":[]},"TextureCubemapRD":{"name":"TextureCubemapRD","description":"Texture for Cubemap that is bound to a texture created on the .","inherits":"TextureLayeredRD","properties":[],"methods":[],"signals":[]},"TextureLayered":{"name":"TextureLayered","description":"Base class for texture types which contain the data of multiple s. Each image is of the same size and format.","inherits":"Texture","properties":[],"methods":[{"name":"_get_format","signature":"_get_format() -> int","description":"Called when the 's format is queried.","returnType":"int"},{"name":"_get_height","signature":"_get_height() -> int","description":"Called when the 's height is queried.","returnType":"int"},{"name":"_get_layer_data","signature":"_get_layer_data(layer_index: int) -> Image","description":"Called when the data for a layer in the  is queried.","returnType":"Image"},{"name":"_get_layered_type","signature":"_get_layered_type() -> int","description":"Called when the layers' type in the  is queried.","returnType":"int"},{"name":"_get_layers","signature":"_get_layers() -> int","description":"Called when the number of layers in the  is queried.","returnType":"int"},{"name":"_get_width","signature":"_get_width() -> int","description":"Called when the 's width queried.","returnType":"int"},{"name":"_has_mipmaps","signature":"_has_mipmaps() -> bool","description":"Called when the presence of mipmaps in the  is queried.","returnType":"bool"},{"name":"get_format","signature":"get_format() -> int","description":"Returns the current format being used by this texture. See [enum Image.Format] for details.","returnType":"int"},{"name":"get_height","signature":"get_height() -> int","description":"Returns the height of the texture in pixels. Height is typically represented by the Y axis.","returnType":"int"},{"name":"get_layer_data","signature":"get_layer_data(layer: int) -> Image","description":"Returns an  resource with the data from specified [param layer].","returnType":"Image"},{"name":"get_layered_type","signature":"get_layered_type() -> int","description":"Returns the 's type. The type determines how the data is accessed, with cubemaps having special types.","returnType":"int"},{"name":"get_layers","signature":"get_layers() -> int","description":"Returns the number of referenced s.","returnType":"int"},{"name":"get_width","signature":"get_width() -> int","description":"Returns the width of the texture in pixels. Width is typically represented by the X axis.","returnType":"int"},{"name":"has_mipmaps","signature":"has_mipmaps() -> bool","description":"Returns true if the layers have generated mipmaps.","returnType":"bool"}],"signals":[]},"TextureLayeredRD":{"name":"TextureLayeredRD","description":"Abstract base class for layered texture RD types.","inherits":"TextureLayered","properties":[{"name":"texture_rd_rid","type":"RID","description":"The RID of the texture object created on the [RenderingDevice]."}],"methods":[],"signals":[]},"TextureProgressBar":{"name":"TextureProgressBar","description":"Texture-based progress bar. Useful for loading screens and life or stamina bars.","inherits":"Range","properties":[{"name":"fill_mode","type":"int","description":"The fill direction. See [enum FillMode] for possible values."},{"name":"nine_patch_stretch","type":"bool","description":"If [code]true[/code], Godot treats the bar's textures like in [NinePatchRect]. Use the [code]stretch_margin_*[/code] properties like [member stretch_margin_bottom] to set up the nine patch's 3×3 grid. When using a radial [member fill_mode], this setting will only enable stretching for [member texture_progress], while [member texture_under] and [member texture_over] will be treated like in [NinePatchRect]."},{"name":"radial_center_offset","type":"Vector2","description":"Offsets [member texture_progress] if [member fill_mode] is [constant FILL_CLOCKWISE], [constant FILL_COUNTER_CLOCKWISE], or [constant FILL_CLOCKWISE_AND_COUNTER_CLOCKWISE].\n\t\t\t[b]Note:[/b] The effective radial center always stays within the [member texture_progress] bounds. If you need to move it outside the texture's bounds, modify the [member texture_progress] to contain additional empty space where needed."},{"name":"radial_fill_degrees","type":"float","description":"Upper limit for the fill of [member texture_progress] if [member fill_mode] is [constant FILL_CLOCKWISE], [constant FILL_COUNTER_CLOCKWISE], or [constant FILL_CLOCKWISE_AND_COUNTER_CLOCKWISE]. When the node's [code]value[/code] is equal to its [code]max_value[/code], the texture fills up to this angle.\n\t\t\tSee [member Range.value], [member Range.max_value]."},{"name":"radial_initial_angle","type":"float","description":"Starting angle for the fill of [member texture_progress] if [member fill_mode] is [constant FILL_CLOCKWISE], [constant FILL_COUNTER_CLOCKWISE], or [constant FILL_CLOCKWISE_AND_COUNTER_CLOCKWISE]. When the node's [code]value[/code] is equal to its [code]min_value[/code], the texture doesn't show up at all. When the [code]value[/code] increases, the texture fills and tends towards [member radial_fill_degrees].\n\t\t\t[b]Note:[/b] [member radial_initial_angle] is wrapped between [code]0[/code] and [code]360[/code] degrees (inclusive)."},{"name":"stretch_margin_bottom","type":"int","description":"The height of the 9-patch's bottom row. A margin of 16 means the 9-slice's bottom corners and side will have a height of 16 pixels. You can set all 4 margin values individually to create panels with non-uniform borders. Only effective if [member nine_patch_stretch] is [code]true[/code]."},{"name":"stretch_margin_left","type":"int","description":"The width of the 9-patch's left column. Only effective if [member nine_patch_stretch] is [code]true[/code]."},{"name":"stretch_margin_right","type":"int","description":"The width of the 9-patch's right column. Only effective if [member nine_patch_stretch] is [code]true[/code]."},{"name":"stretch_margin_top","type":"int","description":"The height of the 9-patch's top row. Only effective if [member nine_patch_stretch] is [code]true[/code]."},{"name":"texture_over","type":"Texture2D","description":"[Texture2D] that draws over the progress bar. Use it to add highlights or an upper-frame that hides part of [member texture_progress]."},{"name":"texture_progress","type":"Texture2D","description":"[Texture2D] that clips based on the node's [code]value[/code] and [member fill_mode]. As [code]value[/code] increased, the texture fills up. It shows entirely when [code]value[/code] reaches [code]max_value[/code]. It doesn't show at all if [code]value[/code] is equal to [code]min_value[/code].\n\t\t\tThe [code]value[/code] property comes from [Range]. See [member Range.value], [member Range.min_value], [member Range.max_value]."},{"name":"texture_progress_offset","type":"Vector2","description":"The offset of [member texture_progress]. Useful for [member texture_over] and [member texture_under] with fancy borders, to avoid transparent margins in your progress texture."},{"name":"texture_under","type":"Texture2D","description":"[Texture2D] that draws under the progress bar. The bar's background."},{"name":"tint_over","type":"Color","description":"Multiplies the color of the bar's [member texture_over] texture. The effect is similar to [member CanvasItem.modulate], except it only affects this specific texture instead of the entire node."},{"name":"tint_progress","type":"Color","description":"Multiplies the color of the bar's [member texture_progress] texture."},{"name":"tint_under","type":"Color","description":"Multiplies the color of the bar's [member texture_under] texture."}],"methods":[{"name":"get_stretch_margin","signature":"get_stretch_margin(margin: int) -> int","description":"Returns the stretch margin with the specified index. See [member stretch_margin_bottom] and related properties.","returnType":"int"},{"name":"set_stretch_margin","signature":"set_stretch_margin(margin: int, value: int) -> void","description":"Sets the stretch margin with the specified index. See [member stretch_margin_bottom] and related properties.","returnType":"void"}],"signals":[]},"TextureRect":{"name":"TextureRect","description":"A control that displays a texture.","inherits":"Control","properties":[{"name":"expand_mode","type":"int","description":"Defines how minimum size is determined based on the texture's size. See [enum ExpandMode] for options."},{"name":"flip_h","type":"bool","description":"If [code]true[/code], texture is flipped horizontally."},{"name":"flip_v","type":"bool","description":"If [code]true[/code], texture is flipped vertically."},{"name":"stretch_mode","type":"int","description":"Controls the texture's behavior when resizing the node's bounding rectangle. See [enum StretchMode]."},{"name":"texture","type":"Texture2D","description":"The node's [Texture2D] resource."}],"methods":[],"signals":[]},"Theme":{"name":"Theme","description":"A resource used for styling/skinning s and s.","inherits":"Resource","properties":[{"name":"default_base_scale","type":"float","description":"The default base scale factor of this theme resource. Used by some controls to scale their visual properties based on the global scale factor. If this value is set to [code]0.0[/code], the global scale factor is used (see [member ThemeDB.fallback_base_scale]).\n\t\t\tUse [method has_default_base_scale] to check if this value is valid."},{"name":"default_font","type":"Font","description":"The default font of this theme resource. Used as the default value when trying to fetch a font resource that doesn't exist in this theme or is in invalid state. If the default font is also missing or invalid, the engine fallback value is used (see [member ThemeDB.fallback_font]).\n\t\t\tUse [method has_default_font] to check if this value is valid."},{"name":"default_font_size","type":"int","description":"The default font size of this theme resource. Used as the default value when trying to fetch a font size value that doesn't exist in this theme or is in invalid state. If the default font size is also missing or invalid, the engine fallback value is used (see [member ThemeDB.fallback_font_size]).\n\t\t\tValues below [code]1[/code] are invalid and can be used to unset the property. Use [method has_default_font_size] to check if this value is valid."}],"methods":[{"name":"add_type","signature":"add_type(theme_type: StringName) -> void","description":"Adds an empty theme type for every valid data type.\n\t\t\t\tNote: Empty types are not saved with the theme. This method only exists to perform in-memory changes to the resource. Use available set_* methods to add theme items.","returnType":"void"},{"name":"clear","signature":"clear() -> void","description":"Removes all the theme properties defined on the theme resource.","returnType":"void"},{"name":"clear_color","signature":"clear_color(name: StringName, theme_type: StringName) -> void","description":"Removes the  property defined by [param name] and [param theme_type], if it exists.\n\t\t\t\tFails if it doesn't exist. Use [method has_color] to check for existence.","returnType":"void"},{"name":"clear_constant","signature":"clear_constant(name: StringName, theme_type: StringName) -> void","description":"Removes the constant property defined by [param name] and [param theme_type], if it exists.\n\t\t\t\tFails if it doesn't exist. Use [method has_constant] to check for existence.","returnType":"void"},{"name":"clear_font","signature":"clear_font(name: StringName, theme_type: StringName) -> void","description":"Removes the  property defined by [param name] and [param theme_type], if it exists.\n\t\t\t\tFails if it doesn't exist. Use [method has_font] to check for existence.","returnType":"void"},{"name":"clear_font_size","signature":"clear_font_size(name: StringName, theme_type: StringName) -> void","description":"Removes the font size property defined by [param name] and [param theme_type], if it exists.\n\t\t\t\tFails if it doesn't exist. Use [method has_font_size] to check for existence.","returnType":"void"},{"name":"clear_icon","signature":"clear_icon(name: StringName, theme_type: StringName) -> void","description":"Removes the icon property defined by [param name] and [param theme_type], if it exists.\n\t\t\t\tFails if it doesn't exist. Use [method has_icon] to check for existence.","returnType":"void"},{"name":"clear_stylebox","signature":"clear_stylebox(name: StringName, theme_type: StringName) -> void","description":"Removes the  property defined by [param name] and [param theme_type], if it exists.\n\t\t\t\tFails if it doesn't exist. Use [method has_stylebox] to check for existence.","returnType":"void"},{"name":"clear_theme_item","signature":"clear_theme_item(data_type: int, name: StringName, theme_type: StringName) -> void","description":"Removes the theme property of [param data_type] defined by [param name] and [param theme_type], if it exists.\n\t\t\t\tFails if it doesn't exist. Use [method has_theme_item] to check for existence.\n\t\t\t\tNote: This method is analogous to calling the corresponding data type specific method, but can be used for more generalized logic.","returnType":"void"},{"name":"clear_type_variation","signature":"clear_type_variation(theme_type: StringName) -> void","description":"Unmarks [param theme_type] as being a variation of another theme type. See [method set_type_variation].","returnType":"void"},{"name":"get_color","signature":"get_color(name: StringName, theme_type: StringName) -> Color","description":"Returns the  property defined by [param name] and [param theme_type], if it exists.\n\t\t\t\tReturns the default color value if the property doesn't exist. Use [method has_color] to check for existence.","returnType":"Color"},{"name":"get_color_list","signature":"get_color_list(theme_type: String) -> PackedStringArray","description":"Returns a list of names for  properties defined with [param theme_type]. Use [method get_color_type_list] to get a list of possible theme type names.","returnType":"PackedStringArray"},{"name":"get_color_type_list","signature":"get_color_type_list() -> PackedStringArray","description":"Returns a list of all unique theme type names for  properties. Use [method get_type_list] to get a list of all unique theme types.","returnType":"PackedStringArray"},{"name":"get_constant","signature":"get_constant(name: StringName, theme_type: StringName) -> int","description":"Returns the constant property defined by [param name] and [param theme_type], if it exists.\n\t\t\t\tReturns 0 if the property doesn't exist. Use [method has_constant] to check for existence.","returnType":"int"},{"name":"get_constant_list","signature":"get_constant_list(theme_type: String) -> PackedStringArray","description":"Returns a list of names for constant properties defined with [param theme_type]. Use [method get_constant_type_list] to get a list of possible theme type names.","returnType":"PackedStringArray"},{"name":"get_constant_type_list","signature":"get_constant_type_list() -> PackedStringArray","description":"Returns a list of all unique theme type names for constant properties. Use [method get_type_list] to get a list of all unique theme types.","returnType":"PackedStringArray"},{"name":"get_font","signature":"get_font(name: StringName, theme_type: StringName) -> Font","description":"Returns the  property defined by [param name] and [param theme_type], if it exists.\n\t\t\t\tReturns the default theme font if the property doesn't exist and the default theme font is set up (see [member default_font]). Use [method has_font] to check for existence of the property and [method has_default_font] to check for existence of the default theme font.\n\t\t\t\tReturns the engine fallback font value, if neither exist (see [member ThemeDB.fallback_font]).","returnType":"Font"},{"name":"get_font_list","signature":"get_font_list(theme_type: String) -> PackedStringArray","description":"Returns a list of names for  properties defined with [param theme_type]. Use [method get_font_type_list] to get a list of possible theme type names.","returnType":"PackedStringArray"},{"name":"get_font_size","signature":"get_font_size(name: StringName, theme_type: StringName) -> int","description":"Returns the font size property defined by [param name] and [param theme_type], if it exists.\n\t\t\t\tReturns the default theme font size if the property doesn't exist and the default theme font size is set up (see [member default_font_size]). Use [method has_font_size] to check for existence of the property and [method has_default_font_size] to check for existence of the default theme font.\n\t\t\t\tReturns the engine fallback font size value, if neither exist (see [member ThemeDB.fallback_font_size]).","returnType":"int"},{"name":"get_font_size_list","signature":"get_font_size_list(theme_type: String) -> PackedStringArray","description":"Returns a list of names for font size properties defined with [param theme_type]. Use [method get_font_size_type_list] to get a list of possible theme type names.","returnType":"PackedStringArray"},{"name":"get_font_size_type_list","signature":"get_font_size_type_list() -> PackedStringArray","description":"Returns a list of all unique theme type names for font size properties. Use [method get_type_list] to get a list of all unique theme types.","returnType":"PackedStringArray"},{"name":"get_font_type_list","signature":"get_font_type_list() -> PackedStringArray","description":"Returns a list of all unique theme type names for  properties. Use [method get_type_list] to get a list of all unique theme types.","returnType":"PackedStringArray"},{"name":"get_icon","signature":"get_icon(name: StringName, theme_type: StringName) -> Texture2D","description":"Returns the icon property defined by [param name] and [param theme_type], if it exists.\n\t\t\t\tReturns the engine fallback icon value if the property doesn't exist (see [member ThemeDB.fallback_icon]). Use [method has_icon] to check for existence.","returnType":"Texture2D"},{"name":"get_icon_list","signature":"get_icon_list(theme_type: String) -> PackedStringArray","description":"Returns a list of names for icon properties defined with [param theme_type]. Use [method get_icon_type_list] to get a list of possible theme type names.","returnType":"PackedStringArray"},{"name":"get_icon_type_list","signature":"get_icon_type_list() -> PackedStringArray","description":"Returns a list of all unique theme type names for icon properties. Use [method get_type_list] to get a list of all unique theme types.","returnType":"PackedStringArray"},{"name":"get_stylebox","signature":"get_stylebox(name: StringName, theme_type: StringName) -> StyleBox","description":"Returns the  property defined by [param name] and [param theme_type], if it exists.\n\t\t\t\tReturns the engine fallback stylebox value if the property doesn't exist (see [member ThemeDB.fallback_stylebox]). Use [method has_stylebox] to check for existence.","returnType":"StyleBox"},{"name":"get_stylebox_list","signature":"get_stylebox_list(theme_type: String) -> PackedStringArray","description":"Returns a list of names for  properties defined with [param theme_type]. Use [method get_stylebox_type_list] to get a list of possible theme type names.","returnType":"PackedStringArray"},{"name":"get_stylebox_type_list","signature":"get_stylebox_type_list() -> PackedStringArray","description":"Returns a list of all unique theme type names for  properties. Use [method get_type_list] to get a list of all unique theme types.","returnType":"PackedStringArray"},{"name":"get_theme_item","signature":"get_theme_item(data_type: int, name: StringName, theme_type: StringName) -> Variant","description":"Returns the theme property of [param data_type] defined by [param name] and [param theme_type], if it exists.\n\t\t\t\tReturns the engine fallback value if the property doesn't exist (see ). Use [method has_theme_item] to check for existence.\n\t\t\t\tNote: This method is analogous to calling the corresponding data type specific method, but can be used for more generalized logic.","returnType":"Variant"},{"name":"get_theme_item_list","signature":"get_theme_item_list(data_type: int, theme_type: String) -> PackedStringArray","description":"Returns a list of names for properties of [param data_type] defined with [param theme_type]. Use [method get_theme_item_type_list] to get a list of possible theme type names.\n\t\t\t\tNote: This method is analogous to calling the corresponding data type specific method, but can be used for more generalized logic.","returnType":"PackedStringArray"},{"name":"get_theme_item_type_list","signature":"get_theme_item_type_list(data_type: int) -> PackedStringArray","description":"Returns a list of all unique theme type names for [param data_type] properties. Use [method get_type_list] to get a list of all unique theme types.\n\t\t\t\tNote: This method is analogous to calling the corresponding data type specific method, but can be used for more generalized logic.","returnType":"PackedStringArray"},{"name":"get_type_list","signature":"get_type_list() -> PackedStringArray","description":"Returns a list of all unique theme type names. Use the appropriate get_*_type_list method to get a list of unique theme types for a single data type.","returnType":"PackedStringArray"},{"name":"get_type_variation_base","signature":"get_type_variation_base(theme_type: StringName) -> StringName","description":"Returns the name of the base theme type if [param theme_type] is a valid variation type. Returns an empty string otherwise.","returnType":"StringName"},{"name":"get_type_variation_list","signature":"get_type_variation_list(base_type: StringName) -> PackedStringArray","description":"Returns a list of all type variations for the given [param base_type].","returnType":"PackedStringArray"},{"name":"has_color","signature":"has_color(name: StringName, theme_type: StringName) -> bool","description":"Returns true if the  property defined by [param name] and [param theme_type] exists.\n\t\t\t\tReturns false if it doesn't exist. Use [method set_color] to define it.","returnType":"bool"},{"name":"has_constant","signature":"has_constant(name: StringName, theme_type: StringName) -> bool","description":"Returns true if the constant property defined by [param name] and [param theme_type] exists.\n\t\t\t\tReturns false if it doesn't exist. Use [method set_constant] to define it.","returnType":"bool"},{"name":"has_default_base_scale","signature":"has_default_base_scale() -> bool","description":"Returns true if [member default_base_scale] has a valid value.\n\t\t\t\tReturns false if it doesn't. The value must be greater than 0.0 to be considered valid.","returnType":"bool"},{"name":"has_default_font","signature":"has_default_font() -> bool","description":"Returns true if [member default_font] has a valid value.\n\t\t\t\tReturns false if it doesn't.","returnType":"bool"},{"name":"has_default_font_size","signature":"has_default_font_size() -> bool","description":"Returns true if [member default_font_size] has a valid value.\n\t\t\t\tReturns false if it doesn't. The value must be greater than 0 to be considered valid.","returnType":"bool"},{"name":"has_font","signature":"has_font(name: StringName, theme_type: StringName) -> bool","description":"Returns true if the  property defined by [param name] and [param theme_type] exists, or if the default theme font is set up (see [method has_default_font]).\n\t\t\t\tReturns false if neither exist. Use [method set_font] to define the property.","returnType":"bool"},{"name":"has_font_size","signature":"has_font_size(name: StringName, theme_type: StringName) -> bool","description":"Returns true if the font size property defined by [param name] and [param theme_type] exists, or if the default theme font size is set up (see [method has_default_font_size]).\n\t\t\t\tReturns false if neither exist. Use [method set_font_size] to define the property.","returnType":"bool"},{"name":"has_icon","signature":"has_icon(name: StringName, theme_type: StringName) -> bool","description":"Returns true if the icon property defined by [param name] and [param theme_type] exists.\n\t\t\t\tReturns false if it doesn't exist. Use [method set_icon] to define it.","returnType":"bool"},{"name":"has_stylebox","signature":"has_stylebox(name: StringName, theme_type: StringName) -> bool","description":"Returns true if the  property defined by [param name] and [param theme_type] exists.\n\t\t\t\tReturns false if it doesn't exist. Use [method set_stylebox] to define it.","returnType":"bool"},{"name":"has_theme_item","signature":"has_theme_item(data_type: int, name: StringName, theme_type: StringName) -> bool","description":"Returns true if the theme property of [param data_type] defined by [param name] and [param theme_type] exists.\n\t\t\t\tReturns false if it doesn't exist. Use [method set_theme_item] to define it.\n\t\t\t\tNote: This method is analogous to calling the corresponding data type specific method, but can be used for more generalized logic.","returnType":"bool"},{"name":"is_type_variation","signature":"is_type_variation(theme_type: StringName, base_type: StringName) -> bool","description":"Returns true if [param theme_type] is marked as a variation of [param base_type].","returnType":"bool"},{"name":"merge_with","signature":"merge_with(other: Theme) -> void","description":"Adds missing and overrides existing definitions with values from the [param other] theme resource.\n\t\t\t\tNote: This modifies the current theme. If you want to merge two themes together without modifying either one, create a new empty theme and merge the other two into it one after another.","returnType":"void"},{"name":"remove_type","signature":"remove_type(theme_type: StringName) -> void","description":"Removes the theme type, gracefully discarding defined theme items. If the type is a variation, this information is also erased. If the type is a base for type variations, those variations lose their base.","returnType":"void"},{"name":"rename_color","signature":"rename_color(old_name: StringName, name: StringName, theme_type: StringName) -> void","description":"Renames the  property defined by [param old_name] and [param theme_type] to [param name], if it exists.\n\t\t\t\tFails if it doesn't exist, or if a similar property with the new name already exists. Use [method has_color] to check for existence, and [method clear_color] to remove the existing property.","returnType":"void"},{"name":"rename_constant","signature":"rename_constant(old_name: StringName, name: StringName, theme_type: StringName) -> void","description":"Renames the constant property defined by [param old_name] and [param theme_type] to [param name], if it exists.\n\t\t\t\tFails if it doesn't exist, or if a similar property with the new name already exists. Use [method has_constant] to check for existence, and [method clear_constant] to remove the existing property.","returnType":"void"},{"name":"rename_font","signature":"rename_font(old_name: StringName, name: StringName, theme_type: StringName) -> void","description":"Renames the  property defined by [param old_name] and [param theme_type] to [param name], if it exists.\n\t\t\t\tFails if it doesn't exist, or if a similar property with the new name already exists. Use [method has_font] to check for existence, and [method clear_font] to remove the existing property.","returnType":"void"},{"name":"rename_font_size","signature":"rename_font_size(old_name: StringName, name: StringName, theme_type: StringName) -> void","description":"Renames the font size property defined by [param old_name] and [param theme_type] to [param name], if it exists.\n\t\t\t\tFails if it doesn't exist, or if a similar property with the new name already exists. Use [method has_font_size] to check for existence, and [method clear_font_size] to remove the existing property.","returnType":"void"},{"name":"rename_icon","signature":"rename_icon(old_name: StringName, name: StringName, theme_type: StringName) -> void","description":"Renames the icon property defined by [param old_name] and [param theme_type] to [param name], if it exists.\n\t\t\t\tFails if it doesn't exist, or if a similar property with the new name already exists. Use [method has_icon] to check for existence, and [method clear_icon] to remove the existing property.","returnType":"void"},{"name":"rename_stylebox","signature":"rename_stylebox(old_name: StringName, name: StringName, theme_type: StringName) -> void","description":"Renames the  property defined by [param old_name] and [param theme_type] to [param name], if it exists.\n\t\t\t\tFails if it doesn't exist, or if a similar property with the new name already exists. Use [method has_stylebox] to check for existence, and [method clear_stylebox] to remove the existing property.","returnType":"void"},{"name":"rename_theme_item","signature":"rename_theme_item(data_type: int, old_name: StringName, name: StringName, theme_type: StringName) -> void","description":"Renames the theme property of [param data_type] defined by [param old_name] and [param theme_type] to [param name], if it exists.\n\t\t\t\tFails if it doesn't exist, or if a similar property with the new name already exists. Use [method has_theme_item] to check for existence, and [method clear_theme_item] to remove the existing property.\n\t\t\t\tNote: This method is analogous to calling the corresponding data type specific method, but can be used for more generalized logic.","returnType":"void"},{"name":"set_color","signature":"set_color(name: StringName, theme_type: StringName, color: Color) -> void","description":"Creates or changes the value of the  property defined by [param name] and [param theme_type]. Use [method clear_color] to remove the property.","returnType":"void"},{"name":"set_constant","signature":"set_constant(name: StringName, theme_type: StringName, constant: int) -> void","description":"Creates or changes the value of the constant property defined by [param name] and [param theme_type]. Use [method clear_constant] to remove the property.","returnType":"void"},{"name":"set_font","signature":"set_font(name: StringName, theme_type: StringName, font: Font) -> void","description":"Creates or changes the value of the  property defined by [param name] and [param theme_type]. Use [method clear_font] to remove the property.","returnType":"void"},{"name":"set_font_size","signature":"set_font_size(name: StringName, theme_type: StringName, font_size: int) -> void","description":"Creates or changes the value of the font size property defined by [param name] and [param theme_type]. Use [method clear_font_size] to remove the property.","returnType":"void"},{"name":"set_icon","signature":"set_icon(name: StringName, theme_type: StringName, texture: Texture2D) -> void","description":"Creates or changes the value of the icon property defined by [param name] and [param theme_type]. Use [method clear_icon] to remove the property.","returnType":"void"},{"name":"set_stylebox","signature":"set_stylebox(name: StringName, theme_type: StringName, texture: StyleBox) -> void","description":"Creates or changes the value of the  property defined by [param name] and [param theme_type]. Use [method clear_stylebox] to remove the property.","returnType":"void"},{"name":"set_theme_item","signature":"set_theme_item(data_type: int, name: StringName, theme_type: StringName, value: Variant) -> void","description":"Creates or changes the value of the theme property of [param data_type] defined by [param name] and [param theme_type]. Use [method clear_theme_item] to remove the property.\n\t\t\t\tFails if the [param value] type is not accepted by [param data_type].\n\t\t\t\tNote: This method is analogous to calling the corresponding data type specific method, but can be used for more generalized logic.","returnType":"void"},{"name":"set_type_variation","signature":"set_type_variation(theme_type: StringName, base_type: StringName) -> void","description":"Marks [param theme_type] as a variation of [param base_type].\n\t\t\t\tThis adds [param theme_type] as a suggested option for [member Control.theme_type_variation] on a  that is of the [param base_type] class.\n\t\t\t\tVariations can also be nested, i.e. [param base_type] can be another variation. If a chain of variations ends with a [param base_type] matching the class of the , the whole chain is going to be suggested as options.\n\t\t\t\tNote: Suggestions only show up if this theme resource is set as the project default theme. See [member ProjectSettings.gui/theme/custom].","returnType":"void"}],"signals":[]},"ThemeDB":{"name":"ThemeDB","description":"A singleton that provides access to static information about  resources used by the engine and by your project.","inherits":"Object","properties":[{"name":"fallback_base_scale","type":"float","description":"The fallback base scale factor of every [Control] node and [Theme] resource. Used when no other value is available to the control.\n\t\t\tSee also [member Theme.default_base_scale]."},{"name":"fallback_font","type":"Font","description":"The fallback font of every [Control] node and [Theme] resource. Used when no other value is available to the control.\n\t\t\tSee also [member Theme.default_font]."},{"name":"fallback_font_size","type":"int","description":"The fallback font size of every [Control] node and [Theme] resource. Used when no other value is available to the control.\n\t\t\tSee also [member Theme.default_font_size]."},{"name":"fallback_icon","type":"Texture2D","description":"The fallback icon of every [Control] node and [Theme] resource. Used when no other value is available to the control."},{"name":"fallback_stylebox","type":"StyleBox","description":"The fallback stylebox of every [Control] node and [Theme] resource. Used when no other value is available to the control."}],"methods":[{"name":"get_default_theme","signature":"get_default_theme() -> Theme","description":"Returns a reference to the default engine . This theme resource is responsible for the out-of-the-box look of  nodes and cannot be overridden.","returnType":"Theme"},{"name":"get_project_theme","signature":"get_project_theme() -> Theme","description":"Returns a reference to the custom project . This theme resources allows to override the default engine theme for every control node in the project.\n\t\t\t\tTo set the project theme, see [member ProjectSettings.gui/theme/custom].","returnType":"Theme"}],"signals":[{"name":"fallback_changed","description":"Emitted when one of the fallback values had been changed. Use it to refresh the look of controls that may rely on the fallback theme items."}]},"Thread":{"name":"Thread","description":"A unit of execution in a process.","inherits":"RefCounted","properties":[],"methods":[{"name":"get_id","signature":"get_id() -> String","description":"Returns the current 's ID, uniquely identifying it among all threads. If the  has not started running or if [method wait_to_finish] has been called, this returns an empty string.","returnType":"String"},{"name":"is_alive","signature":"is_alive() -> bool","description":"Returns true if this  is currently running the provided function. This is useful for determining if [method wait_to_finish] can be called without blocking the calling thread.\n\t\t\t\tTo check if a  is joinable, use [method is_started].","returnType":"bool"},{"name":"is_started","signature":"is_started() -> bool","description":"Returns true if this  has been started. Once started, this will return true until it is joined using [method wait_to_finish]. For checking if a  is still executing its task, use [method is_alive].","returnType":"bool"},{"name":"set_thread_safety_checks_enabled","signature":"set_thread_safety_checks_enabled(enabled: bool) -> void","description":"Sets whether the thread safety checks the engine normally performs in methods of certain classes (e.g., ) should happen on the current thread.\n\t\t\t\tThe default, for every thread, is that they are enabled (as if called with [param enabled] being true).\n\t\t\t\tThose checks are conservative. That means that they will only succeed in considering a call thread-safe (and therefore allow it to happen) if the engine can guarantee such safety.\n\t\t\t\tBecause of that, there may be cases where the user may want to disable them ([param enabled] being false) to make certain operations allowed again. By doing so, it becomes the user's responsibility to ensure thread safety (e.g., by using ) for those objects that are otherwise protected by the engine.\n\t\t\t\tNote: This is an advanced usage of the engine. You are advised to use it only if you know what you are doing and there is no safer way.\n\t\t\t\tNote: This is useful for scripts running on either arbitrary  objects or tasks submitted to the . It doesn't apply to code running during  group processing, where the checks will be always performed.\n\t\t\t\tNote: Even in the case of having disabled the checks in a  task, there's no need to re-enable them at the end. The engine will do so.","returnType":"void"},{"name":"start","signature":"start(callable: Callable, priority: int) -> int","description":"Starts a new  that calls [param callable].\n\t\t\t\tIf the method takes some arguments, you can pass them using [method Callable.bind].\n\t\t\t\tThe [param priority] of the  can be changed by passing a value from the [enum Priority] enum.\n\t\t\t\tReturns [constant OK] on success, or [constant ERR_CANT_CREATE] on failure.","returnType":"int"},{"name":"wait_to_finish","signature":"wait_to_finish() -> Variant","description":"Joins the  and waits for it to finish. Returns the output of the  passed to [method start].\n\t\t\t\tShould either be used when you want to retrieve the value returned from the method called by the  or before freeing the instance that contains the .\n\t\t\t\tTo determine if this can be called without blocking the calling thread, check if [method is_alive] is false.","returnType":"Variant"}],"signals":[]},"TileData":{"name":"TileData","description":"Settings for a single tile in a .","inherits":"Object","properties":[{"name":"flip_h","type":"bool","description":"If [code]true[/code], the tile will have its texture flipped horizontally."},{"name":"flip_v","type":"bool","description":"If [code]true[/code], the tile will have its texture flipped vertically."},{"name":"material","type":"Material","description":"The [Material] to use for this [TileData]. This can be a [CanvasItemMaterial] to use the default shader, or a [ShaderMaterial] to use a custom shader."},{"name":"modulate","type":"Color","description":"Color modulation of the tile."},{"name":"probability","type":"float","description":"Relative probability of this tile being selected when drawing a pattern of random tiles."},{"name":"terrain","type":"int","description":"ID of the terrain from the terrain set that the tile uses."},{"name":"terrain_set","type":"int","description":"ID of the terrain set that the tile uses."},{"name":"texture_origin","type":"Vector2i","description":"Offsets the position of where the tile is drawn."},{"name":"transpose","type":"bool","description":"If [code]true[/code], the tile will display transposed, i.e. with horizontal and vertical texture UVs swapped."},{"name":"y_sort_origin","type":"int","description":"Vertical point of the tile used for determining y-sorted order."},{"name":"z_index","type":"int","description":"Ordering index of this tile, relative to [TileMap]."}],"methods":[{"name":"add_collision_polygon","signature":"add_collision_polygon(layer_id: int) -> void","description":"Adds a collision polygon to the tile on the given TileSet physics layer.","returnType":"void"},{"name":"add_occluder_polygon","signature":"add_occluder_polygon(layer_id: int) -> void","description":"Adds an occlusion polygon to the tile on the TileSet occlusion layer with index [param layer_id].","returnType":"void"},{"name":"get_collision_polygon_one_way_margin","signature":"get_collision_polygon_one_way_margin(layer_id: int, polygon_index: int) -> float","description":"Returns the one-way margin (for one-way platforms) of the polygon at index [param polygon_index] for TileSet physics layer with index [param layer_id].","returnType":"float"},{"name":"get_collision_polygon_points","signature":"get_collision_polygon_points(layer_id: int, polygon_index: int) -> PackedVector2Array","description":"Returns the points of the polygon at index [param polygon_index] for TileSet physics layer with index [param layer_id].","returnType":"PackedVector2Array"},{"name":"get_collision_polygons_count","signature":"get_collision_polygons_count(layer_id: int) -> int","description":"Returns how many polygons the tile has for TileSet physics layer with index [param layer_id].","returnType":"int"},{"name":"get_constant_angular_velocity","signature":"get_constant_angular_velocity(layer_id: int) -> float","description":"Returns the constant angular velocity applied to objects colliding with this tile.","returnType":"float"},{"name":"get_constant_linear_velocity","signature":"get_constant_linear_velocity(layer_id: int) -> Vector2","description":"Returns the constant linear velocity applied to objects colliding with this tile.","returnType":"Vector2"},{"name":"get_custom_data","signature":"get_custom_data(layer_name: String) -> Variant","description":"Returns the custom data value for custom data layer named [param layer_name]. To check if a custom data layer exists, use [method has_custom_data].","returnType":"Variant"},{"name":"get_custom_data_by_layer_id","signature":"get_custom_data_by_layer_id(layer_id: int) -> Variant","description":"Returns the custom data value for custom data layer with index [param layer_id].","returnType":"Variant"},{"name":"get_navigation_polygon","signature":"get_navigation_polygon(layer_id: int, flip_h: bool, flip_v: bool, transpose: bool) -> NavigationPolygon","description":"Returns the navigation polygon of the tile for the TileSet navigation layer with index [param layer_id].\n\t\t\t\t[param flip_h], [param flip_v], and [param transpose] allow transforming the returned polygon.","returnType":"NavigationPolygon"},{"name":"get_occluder","signature":"get_occluder(layer_id: int, flip_h: bool, flip_v: bool, transpose: bool) -> OccluderPolygon2D","description":"Returns the occluder polygon of the tile for the TileSet occlusion layer with index [param layer_id].\n\t\t\t\t[param flip_h], [param flip_v], and [param transpose] allow transforming the returned polygon.","returnType":"OccluderPolygon2D"},{"name":"get_occluder_polygon","signature":"get_occluder_polygon(layer_id: int, polygon_index: int, flip_h: bool, flip_v: bool, transpose: bool) -> OccluderPolygon2D","description":"Returns the occluder polygon at index [param polygon_index] from the TileSet occlusion layer with index [param layer_id].\n\t\t\t\tThe [param flip_h], [param flip_v], and [param transpose] parameters can be true to transform the returned polygon.","returnType":"OccluderPolygon2D"},{"name":"get_occluder_polygons_count","signature":"get_occluder_polygons_count(layer_id: int) -> int","description":"Returns the number of occluder polygons of the tile in the TileSet occlusion layer with index [param layer_id].","returnType":"int"},{"name":"get_terrain_peering_bit","signature":"get_terrain_peering_bit(peering_bit: int) -> int","description":"Returns the tile's terrain bit for the given [param peering_bit] direction. To check that a direction is valid, use [method is_valid_terrain_peering_bit].","returnType":"int"},{"name":"has_custom_data","signature":"has_custom_data(layer_name: String) -> bool","description":"Returns whether there exists a custom data layer named [param layer_name].","returnType":"bool"},{"name":"is_collision_polygon_one_way","signature":"is_collision_polygon_one_way(layer_id: int, polygon_index: int) -> bool","description":"Returns whether one-way collisions are enabled for the polygon at index [param polygon_index] for TileSet physics layer with index [param layer_id].","returnType":"bool"},{"name":"is_valid_terrain_peering_bit","signature":"is_valid_terrain_peering_bit(peering_bit: int) -> bool","description":"Returns whether the given [param peering_bit] direction is valid for this tile.","returnType":"bool"},{"name":"remove_collision_polygon","signature":"remove_collision_polygon(layer_id: int, polygon_index: int) -> void","description":"Removes the polygon at index [param polygon_index] for TileSet physics layer with index [param layer_id].","returnType":"void"},{"name":"remove_occluder_polygon","signature":"remove_occluder_polygon(layer_id: int, polygon_index: int) -> void","description":"Removes the polygon at index [param polygon_index] for TileSet occlusion layer with index [param layer_id].","returnType":"void"},{"name":"set_collision_polygon_one_way","signature":"set_collision_polygon_one_way(layer_id: int, polygon_index: int, one_way: bool) -> void","description":"Enables/disables one-way collisions on the polygon at index [param polygon_index] for TileSet physics layer with index [param layer_id].","returnType":"void"},{"name":"set_collision_polygon_one_way_margin","signature":"set_collision_polygon_one_way_margin(layer_id: int, polygon_index: int, one_way_margin: float) -> void","description":"Sets the one-way margin (for one-way platforms) of the polygon at index [param polygon_index] for TileSet physics layer with index [param layer_id].","returnType":"void"},{"name":"set_collision_polygon_points","signature":"set_collision_polygon_points(layer_id: int, polygon_index: int, polygon: PackedVector2Array) -> void","description":"Sets the points of the polygon at index [param polygon_index] for TileSet physics layer with index [param layer_id].","returnType":"void"},{"name":"set_collision_polygons_count","signature":"set_collision_polygons_count(layer_id: int, polygons_count: int) -> void","description":"Sets the polygons count for TileSet physics layer with index [param layer_id].","returnType":"void"},{"name":"set_constant_angular_velocity","signature":"set_constant_angular_velocity(layer_id: int, velocity: float) -> void","description":"Sets the constant angular velocity. This does not rotate the tile. This angular velocity is applied to objects colliding with this tile.","returnType":"void"},{"name":"set_constant_linear_velocity","signature":"set_constant_linear_velocity(layer_id: int, velocity: Vector2) -> void","description":"Sets the constant linear velocity. This does not move the tile. This linear velocity is applied to objects colliding with this tile. This is useful to create conveyor belts.","returnType":"void"},{"name":"set_custom_data","signature":"set_custom_data(layer_name: String, value: Variant) -> void","description":"Sets the tile's custom data value for the TileSet custom data layer with name [param layer_name].","returnType":"void"},{"name":"set_custom_data_by_layer_id","signature":"set_custom_data_by_layer_id(layer_id: int, value: Variant) -> void","description":"Sets the tile's custom data value for the TileSet custom data layer with index [param layer_id].","returnType":"void"},{"name":"set_navigation_polygon","signature":"set_navigation_polygon(layer_id: int, navigation_polygon: NavigationPolygon) -> void","description":"Sets the navigation polygon for the TileSet navigation layer with index [param layer_id].","returnType":"void"},{"name":"set_occluder","signature":"set_occluder(layer_id: int, occluder_polygon: OccluderPolygon2D) -> void","description":"Sets the occluder for the TileSet occlusion layer with index [param layer_id].","returnType":"void"},{"name":"set_occluder_polygon","signature":"set_occluder_polygon(layer_id: int, polygon_index: int, polygon: OccluderPolygon2D) -> void","description":"Sets the occluder for polygon with index [param polygon_index] in the TileSet occlusion layer with index [param layer_id].","returnType":"void"},{"name":"set_occluder_polygons_count","signature":"set_occluder_polygons_count(layer_id: int, polygons_count: int) -> void","description":"Sets the occluder polygon count in the TileSet occlusion layer with index [param layer_id].","returnType":"void"},{"name":"set_terrain_peering_bit","signature":"set_terrain_peering_bit(peering_bit: int, terrain: int) -> void","description":"Sets the tile's terrain bit for the given [param peering_bit] direction. To check that a direction is valid, use [method is_valid_terrain_peering_bit].","returnType":"void"}],"signals":[{"name":"changed","description":"Emitted when any of the properties are changed."}]},"TileMap":{"name":"TileMap","description":"Node for 2D tile-based maps.","inherits":"Node2D","properties":[{"name":"collision_animatable","type":"bool","description":"If enabled, the TileMap will see its collisions synced to the physics tick and change its collision type from static to kinematic. This is required to create TileMap-based moving platform.\n\t\t\t[b]Note:[/b] Enabling [member collision_animatable] may have a small performance impact, only do it if the TileMap is moving and has colliding tiles."},{"name":"collision_visibility_mode","type":"int","description":"Show or hide the TileMap's collision shapes. If set to [constant VISIBILITY_MODE_DEFAULT], this depends on the show collision debug settings."},{"name":"navigation_visibility_mode","type":"int","description":"Show or hide the TileMap's navigation meshes. If set to [constant VISIBILITY_MODE_DEFAULT], this depends on the show navigation debug settings."},{"name":"rendering_quadrant_size","type":"int","description":"The TileMap's quadrant size. A quadrant is a group of tiles to be drawn together on a single canvas item, for optimization purposes. [member rendering_quadrant_size] defines the length of a square's side, in the map's coordinate system, that forms the quadrant. Thus, the default quadrant size groups together [code]16 * 16 = 256[/code] tiles.\n\t\t\tThe quadrant size does not apply on Y-sorted layers, as tiles are grouped by Y position instead in that case.\n\t\t\t[b]Note:[/b] As quadrants are created according to the map's coordinate system, the quadrant's \"square shape\" might not look like square in the TileMap's local coordinate system."},{"name":"tile_set","type":"TileSet","description":"The [TileSet] used by this [TileMap]. The textures, collisions, and additional behavior of all available tiles are stored here."}],"methods":[{"name":"_tile_data_runtime_update","signature":"_tile_data_runtime_update(layer: int, coords: Vector2i, tile_data: TileData) -> void","description":"Called with a TileData object about to be used internally by the TileMap, allowing its modification at runtime.\n\t\t\t\tThis method is only called if [method _use_tile_data_runtime_update] is implemented and returns true for the given tile [param coords] and [param layer].\n\t\t\t\tWarning: The [param tile_data] object's sub-resources are the same as the one in the TileSet. Modifying them might impact the whole TileSet. Instead, make sure to duplicate those resources.\n\t\t\t\tNote: If the properties of [param tile_data] object should change over time, use [method notify_runtime_tile_data_update] to notify the TileMap it needs an update.","returnType":"void"},{"name":"_use_tile_data_runtime_update","signature":"_use_tile_data_runtime_update(layer: int, coords: Vector2i) -> bool","description":"Should return true if the tile at coordinates [param coords] on layer [param layer] requires a runtime update.\n\t\t\t\tWarning: Make sure this function only return true when needed. Any tile processed at runtime without a need for it will imply a significant performance penalty.\n\t\t\t\tNote: If the result of this function should changed, use [method notify_runtime_tile_data_update] to notify the TileMap it needs an update.","returnType":"bool"},{"name":"add_layer","signature":"add_layer(to_position: int) -> void","description":"Adds a layer at the given position [param to_position] in the array. If [param to_position] is negative, the position is counted from the end, with -1 adding the layer at the end of the array.","returnType":"void"},{"name":"clear","signature":"clear() -> void","description":"Clears all cells.","returnType":"void"},{"name":"clear_layer","signature":"clear_layer(layer: int) -> void","description":"Clears all cells on the given layer.\n\t\t\t\tIf [param layer] is negative, the layers are accessed from the last one.","returnType":"void"},{"name":"erase_cell","signature":"erase_cell(layer: int, coords: Vector2i) -> void","description":"Erases the cell on layer [param layer] at coordinates [param coords].\n\t\t\t\tIf [param layer] is negative, the layers are accessed from the last one.","returnType":"void"},{"name":"fix_invalid_tiles","signature":"fix_invalid_tiles() -> void","description":"Clears cells that do not exist in the tileset.","returnType":"void"},{"name":"force_update","signature":"force_update(layer: int) -> void","description":"Forces the TileMap and the layer [param layer] to update.","returnType":"void"},{"name":"get_cell_alternative_tile","signature":"get_cell_alternative_tile(layer: int, coords: Vector2i, use_proxies: bool) -> int","description":"Returns the tile alternative ID of the cell on layer [param layer] at [param coords].\n\t\t\t\tIf [param use_proxies] is false, ignores the 's tile proxies, returning the raw alternative identifier. See [method TileSet.map_tile_proxy].\n\t\t\t\tIf [param layer] is negative, the layers are accessed from the last one.","returnType":"int"},{"name":"get_cell_atlas_coords","signature":"get_cell_atlas_coords(layer: int, coords: Vector2i, use_proxies: bool) -> Vector2i","description":"Returns the tile atlas coordinates ID of the cell on layer [param layer] at coordinates [param coords]. Returns Vector2i(-1, -1) if the cell does not exist.\n\t\t\t\tIf [param use_proxies] is false, ignores the 's tile proxies, returning the raw atlas coordinate identifier. See [method TileSet.map_tile_proxy].\n\t\t\t\tIf [param layer] is negative, the layers are accessed from the last one.","returnType":"Vector2i"},{"name":"get_cell_source_id","signature":"get_cell_source_id(layer: int, coords: Vector2i, use_proxies: bool) -> int","description":"Returns the tile source ID of the cell on layer [param layer] at coordinates [param coords]. Returns -1 if the cell does not exist.\n\t\t\t\tIf [param use_proxies] is false, ignores the 's tile proxies, returning the raw source identifier. See [method TileSet.map_tile_proxy].\n\t\t\t\tIf [param layer] is negative, the layers are accessed from the last one.","returnType":"int"},{"name":"get_cell_tile_data","signature":"get_cell_tile_data(layer: int, coords: Vector2i, use_proxies: bool) -> TileData","description":"Returns the  object associated with the given cell, or null if the cell does not exist or is not a .\n\t\t\t\tIf [param layer] is negative, the layers are accessed from the last one.\n\t\t\t\t\n\t\t\t\tfunc get_clicked_tile_power():\n\t\t\t\t    var clicked_cell = tile_map.local_to_map(tile_map.get_local_mouse_position())\n\t\t\t\t    var data = tile_map.get_cell_tile_data(0, clicked_cell)\n\t\t\t\t    if data:\n\t\t\t\t        return data.get_custom_data(\"power\")\n\t\t\t\t    else:\n\t\t\t\t        return 0\n\t\t\t\t\n\t\t\t\tIf [param use_proxies] is false, ignores the 's tile proxies. See [method TileSet.map_tile_proxy].","returnType":"TileData"},{"name":"get_coords_for_body_rid","signature":"get_coords_for_body_rid(body: RID) -> Vector2i","description":"Returns the coordinates of the tile for given physics body RID. Such RID can be retrieved from [method KinematicCollision2D.get_collider_rid], when colliding with a tile.","returnType":"Vector2i"},{"name":"get_layer_for_body_rid","signature":"get_layer_for_body_rid(body: RID) -> int","description":"Returns the tilemap layer of the tile for given physics body RID. Such RID can be retrieved from [method KinematicCollision2D.get_collider_rid], when colliding with a tile.","returnType":"int"},{"name":"get_layer_modulate","signature":"get_layer_modulate(layer: int) -> Color","description":"Returns a TileMap layer's modulate.\n\t\t\t\tIf [param layer] is negative, the layers are accessed from the last one.","returnType":"Color"},{"name":"get_layer_name","signature":"get_layer_name(layer: int) -> String","description":"Returns a TileMap layer's name.\n\t\t\t\tIf [param layer] is negative, the layers are accessed from the last one.","returnType":"String"},{"name":"get_layer_navigation_map","signature":"get_layer_navigation_map(layer: int) -> RID","description":"Returns the  of the  navigation map assigned to the specified TileMap layer [param layer].\n\t\t\t\tBy default the TileMap uses the default  navigation map for the first TileMap layer. For each additional TileMap layer a new navigation map is created for the additional layer.\n\t\t\t\tIn order to make  switch between TileMap layer navigation maps use [method NavigationAgent2D.set_navigation_map] with the navigation map received from [method get_layer_navigation_map].\n\t\t\t\tIf [param layer] is negative, the layers are accessed from the last one.","returnType":"RID"},{"name":"get_layer_y_sort_origin","signature":"get_layer_y_sort_origin(layer: int) -> int","description":"Returns a TileMap layer's Y sort origin.\n\t\t\t\tIf [param layer] is negative, the layers are accessed from the last one.","returnType":"int"},{"name":"get_layer_z_index","signature":"get_layer_z_index(layer: int) -> int","description":"Returns a TileMap layer's Z-index value.\n\t\t\t\tIf [param layer] is negative, the layers are accessed from the last one.","returnType":"int"},{"name":"get_layers_count","signature":"get_layers_count() -> int","description":"Returns the number of layers in the TileMap.","returnType":"int"},{"name":"get_navigation_map","signature":"get_navigation_map(layer: int) -> RID","description":"Returns the  of the  navigation map assigned to the specified TileMap layer [param layer].","returnType":"RID"},{"name":"get_neighbor_cell","signature":"get_neighbor_cell(coords: Vector2i, neighbor: int) -> Vector2i","description":"Returns the neighboring cell to the one at coordinates [param coords], identified by the [param neighbor] direction. This method takes into account the different layouts a TileMap can take.","returnType":"Vector2i"},{"name":"get_pattern","signature":"get_pattern(layer: int, coords_array: Vector2i[]) -> TileMapPattern","description":"Creates a new  from the given layer and set of cells.\n\t\t\t\tIf [param layer] is negative, the layers are accessed from the last one.","returnType":"TileMapPattern"},{"name":"get_surrounding_cells","signature":"get_surrounding_cells(coords: Vector2i) -> Vector2i[]","description":"Returns the list of all neighbourings cells to the one at [param coords].","returnType":"Vector2i[]"},{"name":"get_used_cells","signature":"get_used_cells(layer: int) -> Vector2i[]","description":"Returns a  array with the positions of all cells containing a tile in the given layer. A cell is considered empty if its source identifier equals -1, its atlas coordinates identifiers is Vector2(-1, -1) and its alternative identifier is -1.\n\t\t\t\tIf [param layer] is negative, the layers are accessed from the last one.","returnType":"Vector2i[]"},{"name":"get_used_cells_by_id","signature":"get_used_cells_by_id(layer: int, source_id: int, atlas_coords: Vector2i, alternative_tile: int) -> Vector2i[]","description":"Returns a  array with the positions of all cells containing a tile in the given layer. Tiles may be filtered according to their source ([param source_id]), their atlas coordinates ([param atlas_coords]) or alternative id ([param alternative_tile]).\n\t\t\t\tIf a parameter has its value set to the default one, this parameter is not used to filter a cell. Thus, if all parameters have their respective default value, this method returns the same result as [method get_used_cells].\n\t\t\t\tA cell is considered empty if its source identifier equals -1, its atlas coordinates identifiers is Vector2(-1, -1) and its alternative identifier is -1.\n\t\t\t\tIf [param layer] is negative, the layers are accessed from the last one.","returnType":"Vector2i[]"},{"name":"get_used_rect","signature":"get_used_rect() -> Rect2i","description":"Returns a rectangle enclosing the used (non-empty) tiles of the map, including all layers.","returnType":"Rect2i"},{"name":"is_cell_flipped_h","signature":"is_cell_flipped_h(layer: int, coords: Vector2i, use_proxies: bool) -> bool","description":"Returns true if the cell on layer [param layer] at coordinates [param coords] is flipped horizontally. The result is valid only for atlas sources.","returnType":"bool"},{"name":"is_cell_flipped_v","signature":"is_cell_flipped_v(layer: int, coords: Vector2i, use_proxies: bool) -> bool","description":"Returns true if the cell on layer [param layer] at coordinates [param coords] is flipped vertically. The result is valid only for atlas sources.","returnType":"bool"},{"name":"is_cell_transposed","signature":"is_cell_transposed(layer: int, coords: Vector2i, use_proxies: bool) -> bool","description":"Returns true if the cell on layer [param layer] at coordinates [param coords] is transposed. The result is valid only for atlas sources.","returnType":"bool"},{"name":"is_layer_enabled","signature":"is_layer_enabled(layer: int) -> bool","description":"Returns if a layer is enabled.\n\t\t\t\tIf [param layer] is negative, the layers are accessed from the last one.","returnType":"bool"},{"name":"is_layer_navigation_enabled","signature":"is_layer_navigation_enabled(layer: int) -> bool","description":"Returns if a layer's built-in navigation regions generation is enabled.","returnType":"bool"},{"name":"is_layer_y_sort_enabled","signature":"is_layer_y_sort_enabled(layer: int) -> bool","description":"Returns if a layer Y-sorts its tiles.\n\t\t\t\tIf [param layer] is negative, the layers are accessed from the last one.","returnType":"bool"},{"name":"local_to_map","signature":"local_to_map(local_position: Vector2) -> Vector2i","description":"Returns the map coordinates of the cell containing the given [param local_position]. If [param local_position] is in global coordinates, consider using [method Node2D.to_local] before passing it to this method. See also [method map_to_local].","returnType":"Vector2i"},{"name":"map_pattern","signature":"map_pattern(position_in_tilemap: Vector2i, coords_in_pattern: Vector2i, pattern: TileMapPattern) -> Vector2i","description":"Returns for the given coordinate [param coords_in_pattern] in a  the corresponding cell coordinates if the pattern was pasted at the [param position_in_tilemap] coordinates (see [method set_pattern]). This mapping is required as in half-offset tile shapes, the mapping might not work by calculating position_in_tile_map + coords_in_pattern.","returnType":"Vector2i"},{"name":"map_to_local","signature":"map_to_local(map_position: Vector2i) -> Vector2","description":"Returns the centered position of a cell in the TileMap's local coordinate space. To convert the returned value into global coordinates, use [method Node2D.to_global]. See also [method local_to_map].\n\t\t\t\tNote: This may not correspond to the visual position of the tile, i.e. it ignores the [member TileData.texture_origin] property of individual tiles.","returnType":"Vector2"},{"name":"move_layer","signature":"move_layer(layer: int, to_position: int) -> void","description":"Moves the layer at index [param layer] to the given position [param to_position] in the array.","returnType":"void"},{"name":"notify_runtime_tile_data_update","signature":"notify_runtime_tile_data_update(layer: int) -> void","description":"Notifies the TileMap node that calls to [method _use_tile_data_runtime_update] or [method _tile_data_runtime_update] will lead to different results. This will thus trigger a TileMap update.\n\t\t\t\tIf [param layer] is provided, only notifies changes for the given layer. Providing the [param layer] argument (when applicable) is usually preferred for performance reasons.\n\t\t\t\tWarning: Updating the TileMap is computationally expensive and may impact performance. Try to limit the number of calls to this function to avoid unnecessary update.\n\t\t\t\tNote: This does not trigger a direct update of the TileMap, the update will be done at the end of the frame as usual (unless you call [method update_internals]).","returnType":"void"},{"name":"remove_layer","signature":"remove_layer(layer: int) -> void","description":"Removes the layer at index [param layer].","returnType":"void"},{"name":"set_cell","signature":"set_cell(layer: int, coords: Vector2i, source_id: int, atlas_coords: Vector2i, alternative_tile: int) -> void","description":"Sets the tile identifiers for the cell on layer [param layer] at coordinates [param coords]. Each tile of the  is identified using three parts:\n\t\t\t\t- The source identifier [param source_id] identifies a  identifier. See [method TileSet.set_source_id],\n\t\t\t\t- The atlas coordinates identifier [param atlas_coords] identifies a tile coordinates in the atlas (if the source is a ). For  it should always be Vector2i(0, 0)),\n\t\t\t\t- The alternative tile identifier [param alternative_tile] identifies a tile alternative in the atlas (if the source is a ), and the scene for a .\n\t\t\t\tIf [param source_id] is set to -1, [param atlas_coords] to Vector2i(-1, -1) or [param alternative_tile] to -1, the cell will be erased. An erased cell gets all its identifiers automatically set to their respective invalid values, namely -1, Vector2i(-1, -1) and -1.\n\t\t\t\tIf [param layer] is negative, the layers are accessed from the last one.","returnType":"void"},{"name":"set_cells_terrain_connect","signature":"set_cells_terrain_connect(layer: int, cells: Vector2i[], terrain_set: int, terrain: int, ignore_empty_terrains: bool) -> void","description":"Update all the cells in the [param cells] coordinates array so that they use the given [param terrain] for the given [param terrain_set]. If an updated cell has the same terrain as one of its neighboring cells, this function tries to join the two. This function might update neighboring tiles if needed to create correct terrain transitions.\n\t\t\t\tIf [param ignore_empty_terrains] is true, empty terrains will be ignored when trying to find the best fitting tile for the given terrain constraints.\n\t\t\t\tIf [param layer] is negative, the layers are accessed from the last one.\n\t\t\t\tNote: To work correctly, this method requires the TileMap's TileSet to have terrains set up with all required terrain combinations. Otherwise, it may produce unexpected results.","returnType":"void"},{"name":"set_cells_terrain_path","signature":"set_cells_terrain_path(layer: int, path: Vector2i[], terrain_set: int, terrain: int, ignore_empty_terrains: bool) -> void","description":"Update all the cells in the [param path] coordinates array so that they use the given [param terrain] for the given [param terrain_set]. The function will also connect two successive cell in the path with the same terrain. This function might update neighboring tiles if needed to create correct terrain transitions.\n\t\t\t\tIf [param ignore_empty_terrains] is true, empty terrains will be ignored when trying to find the best fitting tile for the given terrain constraints.\n\t\t\t\tIf [param layer] is negative, the layers are accessed from the last one.\n\t\t\t\tNote: To work correctly, this method requires the TileMap's TileSet to have terrains set up with all required terrain combinations. Otherwise, it may produce unexpected results.","returnType":"void"},{"name":"set_layer_enabled","signature":"set_layer_enabled(layer: int, enabled: bool) -> void","description":"Enables or disables the layer [param layer]. A disabled layer is not processed at all (no rendering, no physics, etc.).\n\t\t\t\tIf [param layer] is negative, the layers are accessed from the last one.","returnType":"void"},{"name":"set_layer_modulate","signature":"set_layer_modulate(layer: int, modulate: Color) -> void","description":"Sets a layer's color. It will be multiplied by tile's color and TileMap's modulate.\n\t\t\t\tIf [param layer] is negative, the layers are accessed from the last one.","returnType":"void"},{"name":"set_layer_name","signature":"set_layer_name(layer: int, name: String) -> void","description":"Sets a layer's name. This is mostly useful in the editor.\n\t\t\t\tIf [param layer] is negative, the layers are accessed from the last one.","returnType":"void"},{"name":"set_layer_navigation_enabled","signature":"set_layer_navigation_enabled(layer: int, enabled: bool) -> void","description":"Enables or disables a layer's built-in navigation regions generation. Disable this if you need to bake navigation regions from a TileMap using a  node.","returnType":"void"},{"name":"set_layer_navigation_map","signature":"set_layer_navigation_map(layer: int, map: RID) -> void","description":"Assigns [param map] as a  navigation map for the specified TileMap layer [param layer].\n\t\t\t\tBy default the TileMap uses the default  navigation map for the first TileMap layer. For each additional TileMap layer a new navigation map is created for the additional layer.\n\t\t\t\tIn order to make  switch between TileMap layer navigation maps use [method NavigationAgent2D.set_navigation_map] with the navigation map received from [method get_layer_navigation_map].\n\t\t\t\tIf [param layer] is negative, the layers are accessed from the last one.","returnType":"void"},{"name":"set_layer_y_sort_enabled","signature":"set_layer_y_sort_enabled(layer: int, y_sort_enabled: bool) -> void","description":"Enables or disables a layer's Y-sorting. If a layer is Y-sorted, the layer will behave as a CanvasItem node where each of its tile gets Y-sorted.\n\t\t\t\tY-sorted layers should usually be on different Z-index values than not Y-sorted layers, otherwise, each of those layer will be Y-sorted as whole with the Y-sorted one. This is usually an undesired behavior.\n\t\t\t\tIf [param layer] is negative, the layers are accessed from the last one.","returnType":"void"},{"name":"set_layer_y_sort_origin","signature":"set_layer_y_sort_origin(layer: int, y_sort_origin: int) -> void","description":"Sets a layer's Y-sort origin value. This Y-sort origin value is added to each tile's Y-sort origin value.\n\t\t\t\tThis allows, for example, to fake a different height level on each layer. This can be useful for top-down view games.\n\t\t\t\tIf [param layer] is negative, the layers are accessed from the last one.","returnType":"void"},{"name":"set_layer_z_index","signature":"set_layer_z_index(layer: int, z_index: int) -> void","description":"Sets a layers Z-index value. This Z-index is added to each tile's Z-index value.\n\t\t\t\tIf [param layer] is negative, the layers are accessed from the last one.","returnType":"void"},{"name":"set_navigation_map","signature":"set_navigation_map(layer: int, map: RID) -> void","description":"Assigns [param map] as a  navigation map for the specified TileMap layer [param layer].","returnType":"void"},{"name":"set_pattern","signature":"set_pattern(layer: int, position: Vector2i, pattern: TileMapPattern) -> void","description":"Paste the given  at the given [param position] and [param layer] in the tile map.\n\t\t\t\tIf [param layer] is negative, the layers are accessed from the last one.","returnType":"void"},{"name":"update_internals","signature":"update_internals() -> void","description":"Triggers a direct update of the TileMap. Usually, calling this function is not needed, as TileMap node updates automatically when one of its properties or cells is modified.\n\t\t\t\tHowever, for performance reasons, those updates are batched and delayed to the end of the frame. Calling this function will force the TileMap to update right away instead.\n\t\t\t\tWarning: Updating the TileMap is computationally expensive and may impact performance. Try to limit the number of updates and how many tiles they impact.","returnType":"void"}],"signals":[{"name":"changed","description":"Emitted when the [TileSet] of this TileMap changes."}]},"TileMapLayer":{"name":"TileMapLayer","description":"Node for 2D tile-based maps.","inherits":"Node2D","properties":[{"name":"collision_enabled","type":"bool","description":"Enable or disable collisions."},{"name":"collision_visibility_mode","type":"int","description":"Show or hide the [TileMapLayer]'s collision shapes. If set to [constant DEBUG_VISIBILITY_MODE_DEFAULT], this depends on the show collision debug settings."},{"name":"enabled","type":"bool","description":"If [code]false[/code], disables this [TileMapLayer] completely (rendering, collision, navigation, scene tiles, etc.)"},{"name":"navigation_enabled","type":"bool","description":"If [code]true[/code], navigation regions are enabled."},{"name":"navigation_visibility_mode","type":"int","description":"Show or hide the [TileMapLayer]'s navigation meshes. If set to [constant DEBUG_VISIBILITY_MODE_DEFAULT], this depends on the show navigation debug settings."},{"name":"occlusion_enabled","type":"bool","description":"Enable or disable light occlusion."},{"name":"rendering_quadrant_size","type":"int","description":"The [TileMapLayer]'s quadrant size. A quadrant is a group of tiles to be drawn together on a single canvas item, for optimization purposes. [member rendering_quadrant_size] defines the length of a square's side, in the map's coordinate system, that forms the quadrant. Thus, the default quadrant size groups together [code]16 * 16 = 256[/code] tiles.\n\t\t\tThe quadrant size does not apply on a Y-sorted [TileMapLayer], as tiles are grouped by Y position instead in that case.\n\t\t\t[b]Note:[/b] As quadrants are created according to the map's coordinate system, the quadrant's \"square shape\" might not look like square in the [TileMapLayer]'s local coordinate system."},{"name":"tile_map_data","type":"PackedByteArray","description":"The raw tile map data as a byte array."},{"name":"tile_set","type":"TileSet","description":"The [TileSet] used by this layer. The textures, collisions, and additional behavior of all available tiles are stored here."},{"name":"use_kinematic_bodies","type":"bool","description":"If [code]true[/code], this [TileMapLayer] collision shapes will be instantiated as kinematic bodies. This can be needed for moving [TileMapLayer] nodes (i.e. moving platforms)."},{"name":"x_draw_order_reversed","type":"bool","description":"If [member CanvasItem.y_sort_enabled] is enabled, setting this to [code]true[/code] will reverse the order the tiles are drawn on the X-axis."},{"name":"y_sort_origin","type":"int","description":"This Y-sort origin value is added to each tile's Y-sort origin value. This allows, for example, to fake a different height level. This can be useful for top-down view games."}],"methods":[{"name":"_tile_data_runtime_update","signature":"_tile_data_runtime_update(coords: Vector2i, tile_data: TileData) -> void","description":"Called with a  object about to be used internally by the , allowing its modification at runtime.\n\t\t\t\tThis method is only called if [method _use_tile_data_runtime_update] is implemented and returns true for the given tile [param coords].\n\t\t\t\tWarning: The [param tile_data] object's sub-resources are the same as the one in the TileSet. Modifying them might impact the whole TileSet. Instead, make sure to duplicate those resources.\n\t\t\t\tNote: If the properties of [param tile_data] object should change over time, use [method notify_runtime_tile_data_update] to notify the  it needs an update.","returnType":"void"},{"name":"_update_cells","signature":"_update_cells(coords: Vector2i[], forced_cleanup: bool) -> void","description":"Called when this 's cells need an internal update. This update may be caused from individual cells being modified or by a change in the [member tile_set] (causing all cells to be queued for an update). The first call to this function is always for initializing all the 's cells. [param coords] contains the coordinates of all modified cells, roughly in the order they were modified. [param forced_cleanup] is true when the 's internals should be fully cleaned up. This is the case when:\n\t\t\t\t- The layer is disabled;\n\t\t\t\t- The layer is not visible;\n\t\t\t\t- [member tile_set] is set to null;\n\t\t\t\t- The node is removed from the tree;\n\t\t\t\t- The node is freed.\n\t\t\t\tNote that any internal update happening while one of these conditions is verified is considered to be a \"cleanup\". See also [method update_internals].\n\t\t\t\tWarning: Implementing this method may degrade the 's performance.","returnType":"void"},{"name":"_use_tile_data_runtime_update","signature":"_use_tile_data_runtime_update(coords: Vector2i) -> bool","description":"Should return true if the tile at coordinates [param coords] requires a runtime update.\n\t\t\t\tWarning: Make sure this function only returns true when needed. Any tile processed at runtime without a need for it will imply a significant performance penalty.\n\t\t\t\tNote: If the result of this function should change, use [method notify_runtime_tile_data_update] to notify the  it needs an update.","returnType":"bool"},{"name":"clear","signature":"clear() -> void","description":"Clears all cells.","returnType":"void"},{"name":"erase_cell","signature":"erase_cell(coords: Vector2i) -> void","description":"Erases the cell at coordinates [param coords].","returnType":"void"},{"name":"fix_invalid_tiles","signature":"fix_invalid_tiles() -> void","description":"Clears cells containing tiles that do not exist in the [member tile_set].","returnType":"void"},{"name":"get_cell_alternative_tile","signature":"get_cell_alternative_tile(coords: Vector2i) -> int","description":"Returns the tile alternative ID of the cell at coordinates [param coords].","returnType":"int"},{"name":"get_cell_atlas_coords","signature":"get_cell_atlas_coords(coords: Vector2i) -> Vector2i","description":"Returns the tile atlas coordinates ID of the cell at coordinates [param coords]. Returns Vector2i(-1, -1) if the cell does not exist.","returnType":"Vector2i"},{"name":"get_cell_source_id","signature":"get_cell_source_id(coords: Vector2i) -> int","description":"Returns the tile source ID of the cell at coordinates [param coords]. Returns -1 if the cell does not exist.","returnType":"int"},{"name":"get_cell_tile_data","signature":"get_cell_tile_data(coords: Vector2i) -> TileData","description":"Returns the  object associated with the given cell, or null if the cell does not exist or is not a .\n\t\t\t\t\n\t\t\t\tfunc get_clicked_tile_power():\n\t\t\t\t    var clicked_cell = tile_map_layer.local_to_map(tile_map_layer.get_local_mouse_position())\n\t\t\t\t    var data = tile_map_layer.get_cell_tile_data(clicked_cell)\n\t\t\t\t    if data:\n\t\t\t\t        return data.get_custom_data(\"power\")\n\t\t\t\t    else:\n\t\t\t\t        return 0\n\t\t\t\t","returnType":"TileData"},{"name":"get_coords_for_body_rid","signature":"get_coords_for_body_rid(body: RID) -> Vector2i","description":"Returns the coordinates of the tile for given physics body . Such an  can be retrieved from [method KinematicCollision2D.get_collider_rid], when colliding with a tile.","returnType":"Vector2i"},{"name":"get_navigation_map","signature":"get_navigation_map() -> RID","description":"Returns the  of the  navigation used by this .\n\t\t\t\tBy default this returns the default  navigation map, unless a custom map was provided using [method set_navigation_map].","returnType":"RID"},{"name":"get_neighbor_cell","signature":"get_neighbor_cell(coords: Vector2i, neighbor: int) -> Vector2i","description":"Returns the neighboring cell to the one at coordinates [param coords], identified by the [param neighbor] direction. This method takes into account the different layouts a TileMap can take.","returnType":"Vector2i"},{"name":"get_pattern","signature":"get_pattern(coords_array: Vector2i[]) -> TileMapPattern","description":"Creates and returns a new  from the given array of cells. See also [method set_pattern].","returnType":"TileMapPattern"},{"name":"get_surrounding_cells","signature":"get_surrounding_cells(coords: Vector2i) -> Vector2i[]","description":"Returns the list of all neighboring cells to the one at [param coords]. Any neighboring cell is one that is touching edges, so for a square cell 4 cells would be returned, for a hexagon 6 cells are returned.","returnType":"Vector2i[]"},{"name":"get_used_cells","signature":"get_used_cells() -> Vector2i[]","description":"Returns a  array with the positions of all cells containing a tile. A cell is considered empty if its source identifier equals -1, its atlas coordinate identifier is Vector2(-1, -1) and its alternative identifier is -1.","returnType":"Vector2i[]"},{"name":"get_used_cells_by_id","signature":"get_used_cells_by_id(source_id: int, atlas_coords: Vector2i, alternative_tile: int) -> Vector2i[]","description":"Returns a  array with the positions of all cells containing a tile. Tiles may be filtered according to their source ([param source_id]), their atlas coordinates ([param atlas_coords]), or alternative id ([param alternative_tile]).\n\t\t\t\tIf a parameter has its value set to the default one, this parameter is not used to filter a cell. Thus, if all parameters have their respective default values, this method returns the same result as [method get_used_cells].\n\t\t\t\tA cell is considered empty if its source identifier equals -1, its atlas coordinate identifier is Vector2(-1, -1) and its alternative identifier is -1.","returnType":"Vector2i[]"},{"name":"get_used_rect","signature":"get_used_rect() -> Rect2i","description":"Returns a rectangle enclosing the used (non-empty) tiles of the map.","returnType":"Rect2i"},{"name":"has_body_rid","signature":"has_body_rid(body: RID) -> bool","description":"Returns whether the provided [param body]  belongs to one of this 's cells.","returnType":"bool"},{"name":"is_cell_flipped_h","signature":"is_cell_flipped_h(coords: Vector2i) -> bool","description":"Returns true if the cell at coordinates [param coords] is flipped horizontally. The result is valid only for atlas sources.","returnType":"bool"},{"name":"is_cell_flipped_v","signature":"is_cell_flipped_v(coords: Vector2i) -> bool","description":"Returns true if the cell at coordinates [param coords] is flipped vertically. The result is valid only for atlas sources.","returnType":"bool"},{"name":"is_cell_transposed","signature":"is_cell_transposed(coords: Vector2i) -> bool","description":"Returns true if the cell at coordinates [param coords] is transposed. The result is valid only for atlas sources.","returnType":"bool"},{"name":"local_to_map","signature":"local_to_map(local_position: Vector2) -> Vector2i","description":"Returns the map coordinates of the cell containing the given [param local_position]. If [param local_position] is in global coordinates, consider using [method Node2D.to_local] before passing it to this method. See also [method map_to_local].","returnType":"Vector2i"},{"name":"map_pattern","signature":"map_pattern(position_in_tilemap: Vector2i, coords_in_pattern: Vector2i, pattern: TileMapPattern) -> Vector2i","description":"Returns for the given coordinates [param coords_in_pattern] in a  the corresponding cell coordinates if the pattern was pasted at the [param position_in_tilemap] coordinates (see [method set_pattern]). This mapping is required as in half-offset tile shapes, the mapping might not work by calculating position_in_tile_map + coords_in_pattern.","returnType":"Vector2i"},{"name":"map_to_local","signature":"map_to_local(map_position: Vector2i) -> Vector2","description":"Returns the centered position of a cell in the 's local coordinate space. To convert the returned value into global coordinates, use [method Node2D.to_global]. See also [method local_to_map].\n\t\t\t\tNote: This may not correspond to the visual position of the tile, i.e. it ignores the [member TileData.texture_origin] property of individual tiles.","returnType":"Vector2"},{"name":"notify_runtime_tile_data_update","signature":"notify_runtime_tile_data_update() -> void","description":"Notifies the  node that calls to [method _use_tile_data_runtime_update] or [method _tile_data_runtime_update] will lead to different results. This will thus trigger a  update.\n\t\t\t\tWarning: Updating the  is computationally expensive and may impact performance. Try to limit the number of calls to this function to avoid unnecessary update.\n\t\t\t\tNote: This does not trigger a direct update of the , the update will be done at the end of the frame as usual (unless you call [method update_internals]).","returnType":"void"},{"name":"set_cell","signature":"set_cell(coords: Vector2i, source_id: int, atlas_coords: Vector2i, alternative_tile: int) -> void","description":"Sets the tile identifiers for the cell at coordinates [param coords]. Each tile of the  is identified using three parts:\n\t\t\t\t- The source identifier [param source_id] identifies a  identifier. See [method TileSet.set_source_id],\n\t\t\t\t- The atlas coordinate identifier [param atlas_coords] identifies a tile coordinates in the atlas (if the source is a ). For  it should always be Vector2i(0, 0),\n\t\t\t\t- The alternative tile identifier [param alternative_tile] identifies a tile alternative in the atlas (if the source is a ), and the scene for a .\n\t\t\t\tIf [param source_id] is set to -1, [param atlas_coords] to Vector2i(-1, -1), or [param alternative_tile] to -1, the cell will be erased. An erased cell gets all its identifiers automatically set to their respective invalid values, namely -1, Vector2i(-1, -1) and -1.","returnType":"void"},{"name":"set_cells_terrain_connect","signature":"set_cells_terrain_connect(cells: Vector2i[], terrain_set: int, terrain: int, ignore_empty_terrains: bool) -> void","description":"Update all the cells in the [param cells] coordinates array so that they use the given [param terrain] for the given [param terrain_set]. If an updated cell has the same terrain as one of its neighboring cells, this function tries to join the two. This function might update neighboring tiles if needed to create correct terrain transitions.\n\t\t\t\tIf [param ignore_empty_terrains] is true, empty terrains will be ignored when trying to find the best fitting tile for the given terrain constraints.\n\t\t\t\tNote: To work correctly, this method requires the 's TileSet to have terrains set up with all required terrain combinations. Otherwise, it may produce unexpected results.","returnType":"void"},{"name":"set_cells_terrain_path","signature":"set_cells_terrain_path(path: Vector2i[], terrain_set: int, terrain: int, ignore_empty_terrains: bool) -> void","description":"Update all the cells in the [param path] coordinates array so that they use the given [param terrain] for the given [param terrain_set]. The function will also connect two successive cell in the path with the same terrain. This function might update neighboring tiles if needed to create correct terrain transitions.\n\t\t\t\tIf [param ignore_empty_terrains] is true, empty terrains will be ignored when trying to find the best fitting tile for the given terrain constraints.\n\t\t\t\tNote: To work correctly, this method requires the 's TileSet to have terrains set up with all required terrain combinations. Otherwise, it may produce unexpected results.","returnType":"void"},{"name":"set_navigation_map","signature":"set_navigation_map(map: RID) -> void","description":"Sets a custom [param map] as a  navigation map. If not set, uses the default  navigation map instead.","returnType":"void"},{"name":"set_pattern","signature":"set_pattern(position: Vector2i, pattern: TileMapPattern) -> void","description":"Pastes the  at the given [param position] in the tile map. See also [method get_pattern].","returnType":"void"},{"name":"update_internals","signature":"update_internals() -> void","description":"Triggers a direct update of the . Usually, calling this function is not needed, as  node updates automatically when one of its properties or cells is modified.\n\t\t\t\tHowever, for performance reasons, those updates are batched and delayed to the end of the frame. Calling this function will force the  to update right away instead.\n\t\t\t\tWarning: Updating the  is computationally expensive and may impact performance. Try to limit the number of updates and how many tiles they impact.","returnType":"void"}],"signals":[{"name":"changed","description":"Emitted when this [TileMapLayer]'s properties changes. This includes modified cells, properties, or changes made to its assigned [TileSet].\n\t\t\t\t[b]Note:[/b] This signal may be emitted very often when batch-modifying a [TileMapLayer]. Avoid executing complex processing in a connected function, and consider delaying it to the end of the frame instead (i.e. calling [method Object.call_deferred])."}]},"TileMapPattern":{"name":"TileMapPattern","description":"Holds a pattern to be copied from or pasted into s.","inherits":"Resource","properties":[],"methods":[{"name":"get_cell_alternative_tile","signature":"get_cell_alternative_tile(coords: Vector2i) -> int","description":"Returns the tile alternative ID of the cell at [param coords].","returnType":"int"},{"name":"get_cell_atlas_coords","signature":"get_cell_atlas_coords(coords: Vector2i) -> Vector2i","description":"Returns the tile atlas coordinates ID of the cell at [param coords].","returnType":"Vector2i"},{"name":"get_cell_source_id","signature":"get_cell_source_id(coords: Vector2i) -> int","description":"Returns the tile source ID of the cell at [param coords].","returnType":"int"},{"name":"get_size","signature":"get_size() -> Vector2i","description":"Returns the size, in cells, of the pattern.","returnType":"Vector2i"},{"name":"get_used_cells","signature":"get_used_cells() -> Vector2i[]","description":"Returns the list of used cell coordinates in the pattern.","returnType":"Vector2i[]"},{"name":"has_cell","signature":"has_cell(coords: Vector2i) -> bool","description":"Returns whether the pattern has a tile at the given coordinates.","returnType":"bool"},{"name":"is_empty","signature":"is_empty() -> bool","description":"Returns whether the pattern is empty or not.","returnType":"bool"},{"name":"remove_cell","signature":"remove_cell(coords: Vector2i, update_size: bool) -> void","description":"Remove the cell at the given coordinates.","returnType":"void"},{"name":"set_cell","signature":"set_cell(coords: Vector2i, source_id: int, atlas_coords: Vector2i, alternative_tile: int) -> void","description":"Sets the tile identifiers for the cell at coordinates [param coords]. See [method TileMap.set_cell].","returnType":"void"},{"name":"set_size","signature":"set_size(size: Vector2i) -> void","description":"Sets the size of the pattern.","returnType":"void"}],"signals":[]},"TileSet":{"name":"TileSet","description":"Tile library for tilemaps.","inherits":"Resource","properties":[{"name":"tile_layout","type":"int","description":"For all half-offset shapes (Isometric, Hexagonal and Half-Offset square), changes the way tiles are indexed in the TileMap grid."},{"name":"tile_offset_axis","type":"int","description":"For all half-offset shapes (Isometric, Hexagonal and Half-Offset square), determines the offset axis."},{"name":"tile_shape","type":"int","description":"The tile shape."},{"name":"tile_size","type":"Vector2i","description":"The tile size, in pixels. For all tile shapes, this size corresponds to the encompassing rectangle of the tile shape. This is thus the minimal cell size required in an atlas."},{"name":"uv_clipping","type":"bool","description":"Enables/Disable uv clipping when rendering the tiles."}],"methods":[{"name":"add_custom_data_layer","signature":"add_custom_data_layer(to_position: int) -> void","description":"Adds a custom data layer to the TileSet at the given position [param to_position] in the array. If [param to_position] is -1, adds it at the end of the array.\n\t\t\t\tCustom data layers allow assigning custom properties to atlas tiles.","returnType":"void"},{"name":"add_navigation_layer","signature":"add_navigation_layer(to_position: int) -> void","description":"Adds a navigation layer to the TileSet at the given position [param to_position] in the array. If [param to_position] is -1, adds it at the end of the array.\n\t\t\t\tNavigation layers allow assigning a navigable area to atlas tiles.","returnType":"void"},{"name":"add_occlusion_layer","signature":"add_occlusion_layer(to_position: int) -> void","description":"Adds an occlusion layer to the TileSet at the given position [param to_position] in the array. If [param to_position] is -1, adds it at the end of the array.\n\t\t\t\tOcclusion layers allow assigning occlusion polygons to atlas tiles.","returnType":"void"},{"name":"add_pattern","signature":"add_pattern(pattern: TileMapPattern, index: int) -> int","description":"Adds a  to be stored in the TileSet resource. If provided, insert it at the given [param index].","returnType":"int"},{"name":"add_physics_layer","signature":"add_physics_layer(to_position: int) -> void","description":"Adds a physics layer to the TileSet at the given position [param to_position] in the array. If [param to_position] is -1, adds it at the end of the array.\n\t\t\t\tPhysics layers allow assigning collision polygons to atlas tiles.","returnType":"void"},{"name":"add_source","signature":"add_source(source: TileSetSource, atlas_source_id_override: int) -> int","description":"Adds a  to the TileSet. If [param atlas_source_id_override] is not -1, also set its source ID. Otherwise, a unique identifier is automatically generated.\n\t\t\t\tThe function returns the added source ID or -1 if the source could not be added.\n\t\t\t\tWarning: A source cannot belong to two TileSets at the same time. If the added source was attached to another , it will be removed from that one.","returnType":"int"},{"name":"add_terrain","signature":"add_terrain(terrain_set: int, to_position: int) -> void","description":"Adds a new terrain to the given terrain set [param terrain_set] at the given position [param to_position] in the array. If [param to_position] is -1, adds it at the end of the array.","returnType":"void"},{"name":"add_terrain_set","signature":"add_terrain_set(to_position: int) -> void","description":"Adds a new terrain set at the given position [param to_position] in the array. If [param to_position] is -1, adds it at the end of the array.","returnType":"void"},{"name":"cleanup_invalid_tile_proxies","signature":"cleanup_invalid_tile_proxies() -> void","description":"Clears tile proxies pointing to invalid tiles.","returnType":"void"},{"name":"clear_tile_proxies","signature":"clear_tile_proxies() -> void","description":"Clears all tile proxies.","returnType":"void"},{"name":"get_alternative_level_tile_proxy","signature":"get_alternative_level_tile_proxy(source_from: int, coords_from: Vector2i, alternative_from: int) -> Array","description":"Returns the alternative-level proxy for the given identifiers. The returned array contains the three proxie's target identifiers (source ID, atlas coords ID and alternative tile ID).\n\t\t\t\tIf the TileSet has no proxy for the given identifiers, returns an empty Array.","returnType":"Array"},{"name":"get_coords_level_tile_proxy","signature":"get_coords_level_tile_proxy(source_from: int, coords_from: Vector2i) -> Array","description":"Returns the coordinate-level proxy for the given identifiers. The returned array contains the two target identifiers of the proxy (source ID and atlas coordinates ID).\n\t\t\t\tIf the TileSet has no proxy for the given identifiers, returns an empty Array.","returnType":"Array"},{"name":"get_custom_data_layer_by_name","signature":"get_custom_data_layer_by_name(layer_name: String) -> int","description":"Returns the index of the custom data layer identified by the given name.","returnType":"int"},{"name":"get_custom_data_layer_name","signature":"get_custom_data_layer_name(layer_index: int) -> String","description":"Returns the name of the custom data layer identified by the given index.","returnType":"String"},{"name":"get_custom_data_layer_type","signature":"get_custom_data_layer_type(layer_index: int) -> int","description":"Returns the type of the custom data layer identified by the given index.","returnType":"int"},{"name":"get_custom_data_layers_count","signature":"get_custom_data_layers_count() -> int","description":"Returns the custom data layers count.","returnType":"int"},{"name":"get_navigation_layer_layer_value","signature":"get_navigation_layer_layer_value(layer_index: int, layer_number: int) -> bool","description":"Returns whether or not the specified navigation layer of the TileSet navigation data layer identified by the given [param layer_index] is enabled, given a navigation_layers [param layer_number] between 1 and 32.","returnType":"bool"},{"name":"get_navigation_layer_layers","signature":"get_navigation_layer_layers(layer_index: int) -> int","description":"Returns the navigation layers (as in the Navigation server) of the given TileSet navigation layer.","returnType":"int"},{"name":"get_navigation_layers_count","signature":"get_navigation_layers_count() -> int","description":"Returns the navigation layers count.","returnType":"int"},{"name":"get_next_source_id","signature":"get_next_source_id() -> int","description":"Returns a new unused source ID. This generated ID is the same that a call to [method add_source] would return.","returnType":"int"},{"name":"get_occlusion_layer_light_mask","signature":"get_occlusion_layer_light_mask(layer_index: int) -> int","description":"Returns the light mask of the occlusion layer.","returnType":"int"},{"name":"get_occlusion_layer_sdf_collision","signature":"get_occlusion_layer_sdf_collision(layer_index: int) -> bool","description":"Returns if the occluders from this layer use sdf_collision.","returnType":"bool"},{"name":"get_occlusion_layers_count","signature":"get_occlusion_layers_count() -> int","description":"Returns the occlusion layers count.","returnType":"int"},{"name":"get_pattern","signature":"get_pattern(index: int) -> TileMapPattern","description":"Returns the  at the given [param index].","returnType":"TileMapPattern"},{"name":"get_patterns_count","signature":"get_patterns_count() -> int","description":"Returns the number of  this tile set handles.","returnType":"int"},{"name":"get_physics_layer_collision_layer","signature":"get_physics_layer_collision_layer(layer_index: int) -> int","description":"Returns the collision layer (as in the physics server) bodies on the given TileSet's physics layer are in.","returnType":"int"},{"name":"get_physics_layer_collision_mask","signature":"get_physics_layer_collision_mask(layer_index: int) -> int","description":"Returns the collision mask of bodies on the given TileSet's physics layer.","returnType":"int"},{"name":"get_physics_layer_collision_priority","signature":"get_physics_layer_collision_priority(layer_index: int) -> float","description":"Returns the collision priority of bodies on the given TileSet's physics layer.","returnType":"float"},{"name":"get_physics_layer_physics_material","signature":"get_physics_layer_physics_material(layer_index: int) -> PhysicsMaterial","description":"Returns the physics material of bodies on the given TileSet's physics layer.","returnType":"PhysicsMaterial"},{"name":"get_physics_layers_count","signature":"get_physics_layers_count() -> int","description":"Returns the physics layers count.","returnType":"int"},{"name":"get_source","signature":"get_source(source_id: int) -> TileSetSource","description":"Returns the  with ID [param source_id].","returnType":"TileSetSource"},{"name":"get_source_count","signature":"get_source_count() -> int","description":"Returns the number of  in this TileSet.","returnType":"int"},{"name":"get_source_id","signature":"get_source_id(index: int) -> int","description":"Returns the source ID for source with index [param index].","returnType":"int"},{"name":"get_source_level_tile_proxy","signature":"get_source_level_tile_proxy(source_from: int) -> int","description":"Returns the source-level proxy for the given source identifier.\n\t\t\t\tIf the TileSet has no proxy for the given identifier, returns -1.","returnType":"int"},{"name":"get_terrain_color","signature":"get_terrain_color(terrain_set: int, terrain_index: int) -> Color","description":"Returns a terrain's color.","returnType":"Color"},{"name":"get_terrain_name","signature":"get_terrain_name(terrain_set: int, terrain_index: int) -> String","description":"Returns a terrain's name.","returnType":"String"},{"name":"get_terrain_set_mode","signature":"get_terrain_set_mode(terrain_set: int) -> int","description":"Returns a terrain set mode.","returnType":"int"},{"name":"get_terrain_sets_count","signature":"get_terrain_sets_count() -> int","description":"Returns the terrain sets count.","returnType":"int"},{"name":"get_terrains_count","signature":"get_terrains_count(terrain_set: int) -> int","description":"Returns the number of terrains in the given terrain set.","returnType":"int"},{"name":"has_alternative_level_tile_proxy","signature":"has_alternative_level_tile_proxy(source_from: int, coords_from: Vector2i, alternative_from: int) -> bool","description":"Returns if there is an alternative-level proxy for the given identifiers.","returnType":"bool"},{"name":"has_coords_level_tile_proxy","signature":"has_coords_level_tile_proxy(source_from: int, coords_from: Vector2i) -> bool","description":"Returns if there is a coodinates-level proxy for the given identifiers.","returnType":"bool"},{"name":"has_custom_data_layer_by_name","signature":"has_custom_data_layer_by_name(layer_name: String) -> bool","description":"Returns if there is a custom data layer named [param layer_name].","returnType":"bool"},{"name":"has_source","signature":"has_source(source_id: int) -> bool","description":"Returns if this TileSet has a source for the given source ID.","returnType":"bool"},{"name":"has_source_level_tile_proxy","signature":"has_source_level_tile_proxy(source_from: int) -> bool","description":"Returns if there is a source-level proxy for the given source ID.","returnType":"bool"},{"name":"map_tile_proxy","signature":"map_tile_proxy(source_from: int, coords_from: Vector2i, alternative_from: int) -> Array","description":"According to the configured proxies, maps the provided identifiers to a new set of identifiers. The source ID, atlas coordinates ID and alternative tile ID are returned as a 3 elements Array.\n\t\t\t\tThis function first look for matching alternative-level proxies, then coordinates-level proxies, then source-level proxies.\n\t\t\t\tIf no proxy corresponding to provided identifiers are found, returns the same values the ones used as arguments.","returnType":"Array"},{"name":"move_custom_data_layer","signature":"move_custom_data_layer(layer_index: int, to_position: int) -> void","description":"Moves the custom data layer at index [param layer_index] to the given position [param to_position] in the array. Also updates the atlas tiles accordingly.","returnType":"void"},{"name":"move_navigation_layer","signature":"move_navigation_layer(layer_index: int, to_position: int) -> void","description":"Moves the navigation layer at index [param layer_index] to the given position [param to_position] in the array. Also updates the atlas tiles accordingly.","returnType":"void"},{"name":"move_occlusion_layer","signature":"move_occlusion_layer(layer_index: int, to_position: int) -> void","description":"Moves the occlusion layer at index [param layer_index] to the given position [param to_position] in the array. Also updates the atlas tiles accordingly.","returnType":"void"},{"name":"move_physics_layer","signature":"move_physics_layer(layer_index: int, to_position: int) -> void","description":"Moves the physics layer at index [param layer_index] to the given position [param to_position] in the array. Also updates the atlas tiles accordingly.","returnType":"void"},{"name":"move_terrain","signature":"move_terrain(terrain_set: int, terrain_index: int, to_position: int) -> void","description":"Moves the terrain at index [param terrain_index] for terrain set [param terrain_set] to the given position [param to_position] in the array. Also updates the atlas tiles accordingly.","returnType":"void"},{"name":"move_terrain_set","signature":"move_terrain_set(terrain_set: int, to_position: int) -> void","description":"Moves the terrain set at index [param terrain_set] to the given position [param to_position] in the array. Also updates the atlas tiles accordingly.","returnType":"void"},{"name":"remove_alternative_level_tile_proxy","signature":"remove_alternative_level_tile_proxy(source_from: int, coords_from: Vector2i, alternative_from: int) -> void","description":"Removes an alternative-level proxy for the given identifiers.","returnType":"void"},{"name":"remove_coords_level_tile_proxy","signature":"remove_coords_level_tile_proxy(source_from: int, coords_from: Vector2i) -> void","description":"Removes a coordinates-level proxy for the given identifiers.","returnType":"void"},{"name":"remove_custom_data_layer","signature":"remove_custom_data_layer(layer_index: int) -> void","description":"Removes the custom data layer at index [param layer_index]. Also updates the atlas tiles accordingly.","returnType":"void"},{"name":"remove_navigation_layer","signature":"remove_navigation_layer(layer_index: int) -> void","description":"Removes the navigation layer at index [param layer_index]. Also updates the atlas tiles accordingly.","returnType":"void"},{"name":"remove_occlusion_layer","signature":"remove_occlusion_layer(layer_index: int) -> void","description":"Removes the occlusion layer at index [param layer_index]. Also updates the atlas tiles accordingly.","returnType":"void"},{"name":"remove_pattern","signature":"remove_pattern(index: int) -> void","description":"Remove the  at the given index.","returnType":"void"},{"name":"remove_physics_layer","signature":"remove_physics_layer(layer_index: int) -> void","description":"Removes the physics layer at index [param layer_index]. Also updates the atlas tiles accordingly.","returnType":"void"},{"name":"remove_source","signature":"remove_source(source_id: int) -> void","description":"Removes the source with the given source ID.","returnType":"void"},{"name":"remove_source_level_tile_proxy","signature":"remove_source_level_tile_proxy(source_from: int) -> void","description":"Removes a source-level tile proxy.","returnType":"void"},{"name":"remove_terrain","signature":"remove_terrain(terrain_set: int, terrain_index: int) -> void","description":"Removes the terrain at index [param terrain_index] in the given terrain set [param terrain_set]. Also updates the atlas tiles accordingly.","returnType":"void"},{"name":"remove_terrain_set","signature":"remove_terrain_set(terrain_set: int) -> void","description":"Removes the terrain set at index [param terrain_set]. Also updates the atlas tiles accordingly.","returnType":"void"},{"name":"set_alternative_level_tile_proxy","signature":"set_alternative_level_tile_proxy(source_from: int, coords_from: Vector2i, alternative_from: int, source_to: int, coords_to: Vector2i, alternative_to: int) -> void","description":"Create an alternative-level proxy for the given identifiers. A proxy will map set of tile identifiers to another set of identifiers.\n\t\t\t\tThis can be used to replace a tile in all TileMaps using this TileSet, as TileMap nodes will find and use the proxy's target tile when one is available.\n\t\t\t\tProxied tiles can be automatically replaced in TileMap nodes using the editor.","returnType":"void"},{"name":"set_coords_level_tile_proxy","signature":"set_coords_level_tile_proxy(p_source_from: int, coords_from: Vector2i, source_to: int, coords_to: Vector2i) -> void","description":"Creates a coordinates-level proxy for the given identifiers. A proxy will map set of tile identifiers to another set of identifiers. The alternative tile ID is kept the same when using coordinates-level proxies.\n\t\t\t\tThis can be used to replace a tile in all TileMaps using this TileSet, as TileMap nodes will find and use the proxy's target tile when one is available.\n\t\t\t\tProxied tiles can be automatically replaced in TileMap nodes using the editor.","returnType":"void"},{"name":"set_custom_data_layer_name","signature":"set_custom_data_layer_name(layer_index: int, layer_name: String) -> void","description":"Sets the name of the custom data layer identified by the given index. Names are identifiers of the layer therefore if the name is already taken it will fail and raise an error.","returnType":"void"},{"name":"set_custom_data_layer_type","signature":"set_custom_data_layer_type(layer_index: int, layer_type: int) -> void","description":"Sets the type of the custom data layer identified by the given index.","returnType":"void"},{"name":"set_navigation_layer_layer_value","signature":"set_navigation_layer_layer_value(layer_index: int, layer_number: int, value: bool) -> void","description":"Based on [param value], enables or disables the specified navigation layer of the TileSet navigation data layer identified by the given [param layer_index], given a navigation_layers [param layer_number] between 1 and 32.","returnType":"void"},{"name":"set_navigation_layer_layers","signature":"set_navigation_layer_layers(layer_index: int, layers: int) -> void","description":"Sets the navigation layers (as in the navigation server) for navigation regions in the given TileSet navigation layer.","returnType":"void"},{"name":"set_occlusion_layer_light_mask","signature":"set_occlusion_layer_light_mask(layer_index: int, light_mask: int) -> void","description":"Sets the occlusion layer (as in the rendering server) for occluders in the given TileSet occlusion layer.","returnType":"void"},{"name":"set_occlusion_layer_sdf_collision","signature":"set_occlusion_layer_sdf_collision(layer_index: int, sdf_collision: bool) -> void","description":"Enables or disables SDF collision for occluders in the given TileSet occlusion layer.","returnType":"void"},{"name":"set_physics_layer_collision_layer","signature":"set_physics_layer_collision_layer(layer_index: int, layer: int) -> void","description":"Sets the collision layer (as in the physics server) for bodies in the given TileSet physics layer.","returnType":"void"},{"name":"set_physics_layer_collision_mask","signature":"set_physics_layer_collision_mask(layer_index: int, mask: int) -> void","description":"Sets the collision mask for bodies in the given TileSet physics layer.","returnType":"void"},{"name":"set_physics_layer_collision_priority","signature":"set_physics_layer_collision_priority(layer_index: int, priority: float) -> void","description":"Sets the collision priority for bodies in the given TileSet physics layer.","returnType":"void"},{"name":"set_physics_layer_physics_material","signature":"set_physics_layer_physics_material(layer_index: int, physics_material: PhysicsMaterial) -> void","description":"Sets the physics material for bodies in the given TileSet physics layer.","returnType":"void"},{"name":"set_source_id","signature":"set_source_id(source_id: int, new_source_id: int) -> void","description":"Changes a source's ID.","returnType":"void"},{"name":"set_source_level_tile_proxy","signature":"set_source_level_tile_proxy(source_from: int, source_to: int) -> void","description":"Creates a source-level proxy for the given source ID. A proxy will map set of tile identifiers to another set of identifiers. Both the atlas coordinates ID and the alternative tile ID are kept the same when using source-level proxies.\n\t\t\t\tThis can be used to replace a source in all TileMaps using this TileSet, as TileMap nodes will find and use the proxy's target source when one is available.\n\t\t\t\tProxied tiles can be automatically replaced in TileMap nodes using the editor.","returnType":"void"},{"name":"set_terrain_color","signature":"set_terrain_color(terrain_set: int, terrain_index: int, color: Color) -> void","description":"Sets a terrain's color. This color is used for identifying the different terrains in the TileSet editor.","returnType":"void"},{"name":"set_terrain_name","signature":"set_terrain_name(terrain_set: int, terrain_index: int, name: String) -> void","description":"Sets a terrain's name.","returnType":"void"},{"name":"set_terrain_set_mode","signature":"set_terrain_set_mode(terrain_set: int, mode: int) -> void","description":"Sets a terrain mode. Each mode determines which bits of a tile shape is used to match the neighboring tiles' terrains.","returnType":"void"}],"signals":[]},"TileSetAtlasSource":{"name":"TileSetAtlasSource","description":"Exposes a 2D atlas texture as a set of tiles for a  resource.","inherits":"TileSetSource","properties":[{"name":"margins","type":"Vector2i","description":"Margins, in pixels, to offset the origin of the grid in the texture."},{"name":"separation","type":"Vector2i","description":"Separation, in pixels, between each tile texture region of the grid."},{"name":"texture","type":"Texture2D","description":"The atlas texture."},{"name":"texture_region_size","type":"Vector2i","description":"The base tile size in the texture (in pixel). This size must be bigger than or equal to the TileSet's [code]tile_size[/code] value."},{"name":"use_texture_padding","type":"bool","description":"If [code]true[/code], generates an internal texture with an additional one pixel padding around each tile. Texture padding avoids a common artifact where lines appear between tiles.\n\t\t\tDisabling this setting might lead a small performance improvement, as generating the internal texture requires both memory and processing time when the TileSetAtlasSource resource is modified."}],"methods":[{"name":"clear_tiles_outside_texture","signature":"clear_tiles_outside_texture() -> void","description":"Removes all tiles that don't fit the available texture area. This method iterates over all the source's tiles, so it's advised to use [method has_tiles_outside_texture] beforehand.","returnType":"void"},{"name":"create_alternative_tile","signature":"create_alternative_tile(atlas_coords: Vector2i, alternative_id_override: int) -> int","description":"Creates an alternative tile for the tile at coordinates [param atlas_coords]. If [param alternative_id_override] is -1, give it an automatically generated unique ID, or assigns it the given ID otherwise.\n\t\t\t\tReturns the new alternative identifier, or -1 if the alternative could not be created with a provided [param alternative_id_override].","returnType":"int"},{"name":"create_tile","signature":"create_tile(atlas_coords: Vector2i, size: Vector2i) -> void","description":"Creates a new tile at coordinates [param atlas_coords] with the given [param size].","returnType":"void"},{"name":"get_atlas_grid_size","signature":"get_atlas_grid_size() -> Vector2i","description":"Returns the atlas grid size, which depends on how many tiles can fit in the texture. It thus depends on the [member texture]'s size, the atlas [member margins], and the tiles' [member texture_region_size].","returnType":"Vector2i"},{"name":"get_next_alternative_tile_id","signature":"get_next_alternative_tile_id(atlas_coords: Vector2i) -> int","description":"Returns the alternative ID a following call to [method create_alternative_tile] would return.","returnType":"int"},{"name":"get_runtime_texture","signature":"get_runtime_texture() -> Texture2D","description":"If [member use_texture_padding] is false, returns [member texture]. Otherwise, returns and internal  created that includes the padding.","returnType":"Texture2D"},{"name":"get_runtime_tile_texture_region","signature":"get_runtime_tile_texture_region(atlas_coords: Vector2i, frame: int) -> Rect2i","description":"Returns the region of the tile at coordinates [param atlas_coords] for the given [param frame] inside the texture returned by [method get_runtime_texture].\n\t\t\t\tNote: If [member use_texture_padding] is false, returns the same as [method get_tile_texture_region].","returnType":"Rect2i"},{"name":"get_tile_animation_columns","signature":"get_tile_animation_columns(atlas_coords: Vector2i) -> int","description":"Returns how many columns the tile at [param atlas_coords] has in its animation layout.","returnType":"int"},{"name":"get_tile_animation_frame_duration","signature":"get_tile_animation_frame_duration(atlas_coords: Vector2i, frame_index: int) -> float","description":"Returns the animation frame duration of frame [param frame_index] for the tile at coordinates [param atlas_coords].","returnType":"float"},{"name":"get_tile_animation_frames_count","signature":"get_tile_animation_frames_count(atlas_coords: Vector2i) -> int","description":"Returns how many animation frames has the tile at coordinates [param atlas_coords].","returnType":"int"},{"name":"get_tile_animation_mode","signature":"get_tile_animation_mode(atlas_coords: Vector2i) -> int","description":"Returns the tile animation mode of the tile at [param atlas_coords]. See also [method set_tile_animation_mode].","returnType":"int"},{"name":"get_tile_animation_separation","signature":"get_tile_animation_separation(atlas_coords: Vector2i) -> Vector2i","description":"Returns the separation (as in the atlas grid) between each frame of an animated tile at coordinates [param atlas_coords].","returnType":"Vector2i"},{"name":"get_tile_animation_speed","signature":"get_tile_animation_speed(atlas_coords: Vector2i) -> float","description":"Returns the animation speed of the tile at coordinates [param atlas_coords].","returnType":"float"},{"name":"get_tile_animation_total_duration","signature":"get_tile_animation_total_duration(atlas_coords: Vector2i) -> float","description":"Returns the sum of the sum of the frame durations of the tile at coordinates [param atlas_coords]. This value needs to be divided by the animation speed to get the actual animation loop duration.","returnType":"float"},{"name":"get_tile_at_coords","signature":"get_tile_at_coords(atlas_coords: Vector2i) -> Vector2i","description":"If there is a tile covering the [param atlas_coords] coordinates, returns the top-left coordinates of the tile (thus its coordinate ID). Returns Vector2i(-1, -1) otherwise.","returnType":"Vector2i"},{"name":"get_tile_data","signature":"get_tile_data(atlas_coords: Vector2i, alternative_tile: int) -> TileData","description":"Returns the  object for the given atlas coordinates and alternative ID.","returnType":"TileData"},{"name":"get_tile_size_in_atlas","signature":"get_tile_size_in_atlas(atlas_coords: Vector2i) -> Vector2i","description":"Returns the size of the tile (in the grid coordinates system) at coordinates [param atlas_coords].","returnType":"Vector2i"},{"name":"get_tile_texture_region","signature":"get_tile_texture_region(atlas_coords: Vector2i, frame: int) -> Rect2i","description":"Returns a tile's texture region in the atlas texture. For animated tiles, a [param frame] argument might be provided for the different frames of the animation.","returnType":"Rect2i"},{"name":"get_tiles_to_be_removed_on_change","signature":"get_tiles_to_be_removed_on_change(texture: Texture2D, margins: Vector2i, separation: Vector2i, texture_region_size: Vector2i) -> PackedVector2Array","description":"Returns an array of tiles coordinates ID that will be automatically removed when modifying one or several of those properties: [param texture], [param margins], [param separation] or [param texture_region_size]. This can be used to undo changes that would have caused tiles data loss.","returnType":"PackedVector2Array"},{"name":"has_room_for_tile","signature":"has_room_for_tile(atlas_coords: Vector2i, size: Vector2i, animation_columns: int, animation_separation: Vector2i, frames_count: int, ignored_tile: Vector2i) -> bool","description":"Returns whether there is enough room in an atlas to create/modify a tile with the given properties. If [param ignored_tile] is provided, act as is the given tile was not present in the atlas. This may be used when you want to modify a tile's properties.","returnType":"bool"},{"name":"has_tiles_outside_texture","signature":"has_tiles_outside_texture() -> bool","description":"Checks if the source has any tiles that don't fit the texture area (either partially or completely).","returnType":"bool"},{"name":"move_tile_in_atlas","signature":"move_tile_in_atlas(atlas_coords: Vector2i, new_atlas_coords: Vector2i, new_size: Vector2i) -> void","description":"Move the tile and its alternatives at the [param atlas_coords] coordinates to the [param new_atlas_coords] coordinates with the [param new_size] size. This functions will fail if a tile is already present in the given area.\n\t\t\t\tIf [param new_atlas_coords] is Vector2i(-1, -1), keeps the tile's coordinates. If [param new_size] is Vector2i(-1, -1), keeps the tile's size.\n\t\t\t\tTo avoid an error, first check if a move is possible using [method has_room_for_tile].","returnType":"void"},{"name":"remove_alternative_tile","signature":"remove_alternative_tile(atlas_coords: Vector2i, alternative_tile: int) -> void","description":"Remove a tile's alternative with alternative ID [param alternative_tile].\n\t\t\t\tCalling this function with [param alternative_tile] equals to 0 will fail, as the base tile alternative cannot be removed.","returnType":"void"},{"name":"remove_tile","signature":"remove_tile(atlas_coords: Vector2i) -> void","description":"Remove a tile and its alternative at coordinates [param atlas_coords].","returnType":"void"},{"name":"set_alternative_tile_id","signature":"set_alternative_tile_id(atlas_coords: Vector2i, alternative_tile: int, new_id: int) -> void","description":"Change a tile's alternative ID from [param alternative_tile] to [param new_id].\n\t\t\t\tCalling this function with [param new_id] of 0 will fail, as the base tile alternative cannot be moved.","returnType":"void"},{"name":"set_tile_animation_columns","signature":"set_tile_animation_columns(atlas_coords: Vector2i, frame_columns: int) -> void","description":"Sets the number of columns in the animation layout of the tile at coordinates [param atlas_coords]. If set to 0, then the different frames of the animation are laid out as a single horizontal line in the atlas.","returnType":"void"},{"name":"set_tile_animation_frame_duration","signature":"set_tile_animation_frame_duration(atlas_coords: Vector2i, frame_index: int, duration: float) -> void","description":"Sets the animation frame [param duration] of frame [param frame_index] for the tile at coordinates [param atlas_coords].","returnType":"void"},{"name":"set_tile_animation_frames_count","signature":"set_tile_animation_frames_count(atlas_coords: Vector2i, frames_count: int) -> void","description":"Sets how many animation frames the tile at coordinates [param atlas_coords] has.","returnType":"void"},{"name":"set_tile_animation_mode","signature":"set_tile_animation_mode(atlas_coords: Vector2i, mode: int) -> void","description":"Sets the tile animation mode of the tile at [param atlas_coords] to [param mode]. See also [method get_tile_animation_mode].","returnType":"void"},{"name":"set_tile_animation_separation","signature":"set_tile_animation_separation(atlas_coords: Vector2i, separation: Vector2i) -> void","description":"Sets the margin (in grid tiles) between each tile in the animation layout of the tile at coordinates [param atlas_coords] has.","returnType":"void"},{"name":"set_tile_animation_speed","signature":"set_tile_animation_speed(atlas_coords: Vector2i, speed: float) -> void","description":"Sets the animation speed of the tile at coordinates [param atlas_coords] has.","returnType":"void"}],"signals":[]},"TileSetScenesCollectionSource":{"name":"TileSetScenesCollectionSource","description":"Exposes a set of scenes as tiles for a  resource.","inherits":"TileSetSource","properties":[],"methods":[{"name":"create_scene_tile","signature":"create_scene_tile(packed_scene: PackedScene, id_override: int) -> int","description":"Creates a scene-based tile out of the given scene.\n\t\t\t\tReturns a newly generated unique ID.","returnType":"int"},{"name":"get_next_scene_tile_id","signature":"get_next_scene_tile_id() -> int","description":"Returns the scene ID a following call to [method create_scene_tile] would return.","returnType":"int"},{"name":"get_scene_tile_display_placeholder","signature":"get_scene_tile_display_placeholder(id: int) -> bool","description":"Returns whether the scene tile with [param id] displays a placeholder in the editor.","returnType":"bool"},{"name":"get_scene_tile_id","signature":"get_scene_tile_id(index: int) -> int","description":"Returns the scene tile ID of the scene tile at [param index].","returnType":"int"},{"name":"get_scene_tile_scene","signature":"get_scene_tile_scene(id: int) -> PackedScene","description":"Returns the  resource of scene tile with [param id].","returnType":"PackedScene"},{"name":"get_scene_tiles_count","signature":"get_scene_tiles_count() -> int","description":"Returns the number or scene tiles this TileSet source has.","returnType":"int"},{"name":"has_scene_tile_id","signature":"has_scene_tile_id(id: int) -> bool","description":"Returns whether this TileSet source has a scene tile with [param id].","returnType":"bool"},{"name":"remove_scene_tile","signature":"remove_scene_tile(id: int) -> void","description":"Remove the scene tile with [param id].","returnType":"void"},{"name":"set_scene_tile_display_placeholder","signature":"set_scene_tile_display_placeholder(id: int, display_placeholder: bool) -> void","description":"Sets whether or not the scene tile with [param id] should display a placeholder in the editor. This might be useful for scenes that are not visible.","returnType":"void"},{"name":"set_scene_tile_id","signature":"set_scene_tile_id(id: int, new_id: int) -> void","description":"Changes a scene tile's ID from [param id] to [param new_id]. This will fail if there is already a tile with an ID equal to [param new_id].","returnType":"void"},{"name":"set_scene_tile_scene","signature":"set_scene_tile_scene(id: int, packed_scene: PackedScene) -> void","description":"Assigns a  resource to the scene tile with [param id]. This will fail if the scene does not extend CanvasItem, as positioning properties are needed to place the scene on the TileMap.","returnType":"void"}],"signals":[]},"TileSetSource":{"name":"TileSetSource","description":"Exposes a set of tiles for a  resource.","inherits":"Resource","properties":[],"methods":[{"name":"get_alternative_tile_id","signature":"get_alternative_tile_id(atlas_coords: Vector2i, index: int) -> int","description":"Returns the alternative ID for the tile with coordinates ID [param atlas_coords] at index [param index].","returnType":"int"},{"name":"get_alternative_tiles_count","signature":"get_alternative_tiles_count(atlas_coords: Vector2i) -> int","description":"Returns the number of alternatives tiles for the coordinates ID [param atlas_coords].\n\t\t\t\tFor , this always return at least 1, as the base tile with ID 0 is always part of the alternatives list.\n\t\t\t\tReturns -1 if there is not tile at the given coords.","returnType":"int"},{"name":"get_tile_id","signature":"get_tile_id(index: int) -> Vector2i","description":"Returns the tile coordinates ID of the tile with index [param index].","returnType":"Vector2i"},{"name":"get_tiles_count","signature":"get_tiles_count() -> int","description":"Returns how many tiles this atlas source defines (not including alternative tiles).","returnType":"int"},{"name":"has_alternative_tile","signature":"has_alternative_tile(atlas_coords: Vector2i, alternative_tile: int) -> bool","description":"Returns if the base tile at coordinates [param atlas_coords] has an alternative with ID [param alternative_tile].","returnType":"bool"},{"name":"has_tile","signature":"has_tile(atlas_coords: Vector2i) -> bool","description":"Returns if this atlas has a tile with coordinates ID [param atlas_coords].","returnType":"bool"}],"signals":[]},"Time":{"name":"Time","description":"A singleton for working with time data.","inherits":"Object","properties":[],"methods":[{"name":"get_date_dict_from_system","signature":"get_date_dict_from_system(utc: bool) -> Dictionary","description":"Returns the current date as a dictionary of keys: year, month, day, and weekday.\n\t\t\t\tThe returned values are in the system's local time when [param utc] is false, otherwise they are in UTC.","returnType":"Dictionary"},{"name":"get_date_dict_from_unix_time","signature":"get_date_dict_from_unix_time(unix_time_val: int) -> Dictionary","description":"Converts the given Unix timestamp to a dictionary of keys: year, month, day, and weekday.","returnType":"Dictionary"},{"name":"get_date_string_from_system","signature":"get_date_string_from_system(utc: bool) -> String","description":"Returns the current date as an ISO 8601 date string (YYYY-MM-DD).\n\t\t\t\tThe returned values are in the system's local time when [param utc] is false, otherwise they are in UTC.","returnType":"String"},{"name":"get_date_string_from_unix_time","signature":"get_date_string_from_unix_time(unix_time_val: int) -> String","description":"Converts the given Unix timestamp to an ISO 8601 date string (YYYY-MM-DD).","returnType":"String"},{"name":"get_datetime_dict_from_datetime_string","signature":"get_datetime_dict_from_datetime_string(datetime: String, weekday: bool) -> Dictionary","description":"Converts the given ISO 8601 date and time string (YYYY-MM-DDTHH:MM:SS) to a dictionary of keys: year, month, day, [code skip-lint]weekday, hour, minute, and second.\n\t\t\t\tIf [param weekday] is false, then the [code skip-lint]weekday entry is excluded (the calculation is relatively expensive).\n\t\t\t\tNote: Any decimal fraction in the time string will be ignored silently.","returnType":"Dictionary"},{"name":"get_datetime_dict_from_system","signature":"get_datetime_dict_from_system(utc: bool) -> Dictionary","description":"Returns the current date as a dictionary of keys: year, month, day, weekday, hour, minute, second, and dst (Daylight Savings Time).","returnType":"Dictionary"},{"name":"get_datetime_dict_from_unix_time","signature":"get_datetime_dict_from_unix_time(unix_time_val: int) -> Dictionary","description":"Converts the given Unix timestamp to a dictionary of keys: year, month, day, weekday, hour, minute, and second.\n\t\t\t\tThe returned Dictionary's values will be the same as the [method get_datetime_dict_from_system] if the Unix timestamp is the current time, with the exception of Daylight Savings Time as it cannot be determined from the epoch.","returnType":"Dictionary"},{"name":"get_datetime_string_from_datetime_dict","signature":"get_datetime_string_from_datetime_dict(datetime: Dictionary, use_space: bool) -> String","description":"Converts the given dictionary of keys to an ISO 8601 date and time string (YYYY-MM-DDTHH:MM:SS).\n\t\t\t\tThe given dictionary can be populated with the following keys: year, month, day, hour, minute, and second. Any other entries (including dst) are ignored.\n\t\t\t\tIf the dictionary is empty, 0 is returned. If some keys are omitted, they default to the equivalent values for the Unix epoch timestamp 0 (1970-01-01 at 00:00:00).\n\t\t\t\tIf [param use_space] is true, the date and time bits are separated by an empty space character instead of the letter T.","returnType":"String"},{"name":"get_datetime_string_from_system","signature":"get_datetime_string_from_system(utc: bool, use_space: bool) -> String","description":"Returns the current date and time as an ISO 8601 date and time string (YYYY-MM-DDTHH:MM:SS).\n\t\t\t\tThe returned values are in the system's local time when [param utc] is false, otherwise they are in UTC.\n\t\t\t\tIf [param use_space] is true, the date and time bits are separated by an empty space character instead of the letter T.","returnType":"String"},{"name":"get_datetime_string_from_unix_time","signature":"get_datetime_string_from_unix_time(unix_time_val: int, use_space: bool) -> String","description":"Converts the given Unix timestamp to an ISO 8601 date and time string (YYYY-MM-DDTHH:MM:SS).\n\t\t\t\tIf [param use_space] is true, the date and time bits are separated by an empty space character instead of the letter T.","returnType":"String"},{"name":"get_offset_string_from_offset_minutes","signature":"get_offset_string_from_offset_minutes(offset_minutes: int) -> String","description":"Converts the given timezone offset in minutes to a timezone offset string. For example, -480 returns \"-08:00\", 345 returns \"+05:45\", and 0 returns \"+00:00\".","returnType":"String"},{"name":"get_ticks_msec","signature":"get_ticks_msec() -> int","description":"Returns the amount of time passed in milliseconds since the engine started.\n\t\t\t\tWill always be positive or 0 and uses a 64-bit value (it will wrap after roughly 500 million years).","returnType":"int"},{"name":"get_ticks_usec","signature":"get_ticks_usec() -> int","description":"Returns the amount of time passed in microseconds since the engine started.\n\t\t\t\tWill always be positive or 0 and uses a 64-bit value (it will wrap after roughly half a million years).","returnType":"int"},{"name":"get_time_dict_from_system","signature":"get_time_dict_from_system(utc: bool) -> Dictionary","description":"Returns the current time as a dictionary of keys: hour, minute, and second.\n\t\t\t\tThe returned values are in the system's local time when [param utc] is false, otherwise they are in UTC.","returnType":"Dictionary"},{"name":"get_time_dict_from_unix_time","signature":"get_time_dict_from_unix_time(unix_time_val: int) -> Dictionary","description":"Converts the given time to a dictionary of keys: hour, minute, and second.","returnType":"Dictionary"},{"name":"get_time_string_from_system","signature":"get_time_string_from_system(utc: bool) -> String","description":"Returns the current time as an ISO 8601 time string (HH:MM:SS).\n\t\t\t\tThe returned values are in the system's local time when [param utc] is false, otherwise they are in UTC.","returnType":"String"},{"name":"get_time_string_from_unix_time","signature":"get_time_string_from_unix_time(unix_time_val: int) -> String","description":"Converts the given Unix timestamp to an ISO 8601 time string (HH:MM:SS).","returnType":"String"},{"name":"get_time_zone_from_system","signature":"get_time_zone_from_system() -> Dictionary","description":"Returns the current time zone as a dictionary of keys: bias and name.\n\t\t\t\t- bias is the offset from UTC in minutes, since not all time zones are multiples of an hour from UTC.\n\t\t\t\t- name is the localized name of the time zone, according to the OS locale settings of the current user.","returnType":"Dictionary"},{"name":"get_unix_time_from_datetime_dict","signature":"get_unix_time_from_datetime_dict(datetime: Dictionary) -> int","description":"Converts a dictionary of time values to a Unix timestamp.\n\t\t\t\tThe given dictionary can be populated with the following keys: year, month, day, hour, minute, and second. Any other entries (including dst) are ignored.\n\t\t\t\tIf the dictionary is empty, 0 is returned. If some keys are omitted, they default to the equivalent values for the Unix epoch timestamp 0 (1970-01-01 at 00:00:00).\n\t\t\t\tYou can pass the output from [method get_datetime_dict_from_unix_time] directly into this function and get the same as what was put in.\n\t\t\t\tNote: Unix timestamps are often in UTC. This method does not do any timezone conversion, so the timestamp will be in the same timezone as the given datetime dictionary.","returnType":"int"},{"name":"get_unix_time_from_datetime_string","signature":"get_unix_time_from_datetime_string(datetime: String) -> int","description":"Converts the given ISO 8601 date and/or time string to a Unix timestamp. The string can contain a date only, a time only, or both.\n\t\t\t\tNote: Unix timestamps are often in UTC. This method does not do any timezone conversion, so the timestamp will be in the same timezone as the given datetime string.\n\t\t\t\tNote: Any decimal fraction in the time string will be ignored silently.","returnType":"int"},{"name":"get_unix_time_from_system","signature":"get_unix_time_from_system() -> float","description":"Returns the current Unix timestamp in seconds based on the system time in UTC. This method is implemented by the operating system and always returns the time in UTC. The Unix timestamp is the number of seconds passed since 1970-01-01 at 00:00:00, the [url=https://en.wikipedia.org/wiki/Unix_time]Unix epoch.\n\t\t\t\tNote: Unlike other methods that use integer timestamps, this method returns the timestamp as a  for sub-second precision.","returnType":"float"}],"signals":[]},"Timer":{"name":"Timer","description":"A countdown timer.","inherits":"Node","properties":[{"name":"autostart","type":"bool","description":"If [code]true[/code], the timer will start immediately when it enters the scene tree.\n\t\t\t[b]Note:[/b] After the timer enters the tree, this property is automatically set to [code]false[/code].\n\t\t\t[b]Note:[/b] This property does nothing when the timer is running in the editor."},{"name":"ignore_time_scale","type":"bool","description":"If [code]true[/code], the timer will ignore [member Engine.time_scale] and update with the real, elapsed time."},{"name":"one_shot","type":"bool","description":"If [code]true[/code], the timer will stop after reaching the end. Otherwise, as by default, the timer will automatically restart."},{"name":"paused","type":"bool","description":"If [code]true[/code], the timer is paused. A paused timer does not process until this property is set back to [code]false[/code], even when [method start] is called."},{"name":"process_callback","type":"int","description":"Specifies when the timer is updated during the main loop (see [enum TimerProcessCallback])."},{"name":"time_left","type":"float","description":"The timer's remaining time in seconds. This is always [code]0[/code] if the timer is stopped.\n\t\t\t[b]Note:[/b] This property is read-only and cannot be modified. It is based on [member wait_time]."},{"name":"wait_time","type":"float","description":"The time required for the timer to end, in seconds. This property can also be set every time [method start] is called.\n\t\t\t[b]Note:[/b] Timers can only process once per physics or process frame (depending on the [member process_callback]). An unstable framerate may cause the timer to end inconsistently, which is especially noticeable if the wait time is lower than roughly [code]0.05[/code] seconds. For very short timers, it is recommended to write your own code instead of using a [Timer] node. Timers are also affected by [member Engine.time_scale]."}],"methods":[{"name":"is_stopped","signature":"is_stopped() -> bool","description":"Returns true if the timer is stopped or has not started.","returnType":"bool"},{"name":"start","signature":"start(time_sec: float) -> void","description":"Starts the timer, or resets the timer if it was started already. Fails if the timer is not inside the tree. If [param time_sec] is greater than 0, this value is used for the [member wait_time].\n\t\t\t\tNote: This method does not resume a paused timer. See [member paused].","returnType":"void"},{"name":"stop","signature":"stop() -> void","description":"Stops the timer.","returnType":"void"}],"signals":[{"name":"timeout","description":"Emitted when the timer reaches the end."}]},"TorusMesh":{"name":"TorusMesh","description":"Class representing a torus .","inherits":"PrimitiveMesh","properties":[{"name":"inner_radius","type":"float","description":"The inner radius of the torus."},{"name":"outer_radius","type":"float","description":"The outer radius of the torus."},{"name":"ring_segments","type":"int","description":"The number of edges each ring of the torus is constructed of."},{"name":"rings","type":"int","description":"The number of slices the torus is constructed of."}],"methods":[],"signals":[]},"TouchScreenButton":{"name":"TouchScreenButton","description":"Button for touch screen devices for gameplay use.","inherits":"Node2D","properties":[{"name":"action","type":"String","description":"The button's action. Actions can be handled with [InputEventAction]."},{"name":"bitmask","type":"BitMap","description":"The button's bitmask."},{"name":"passby_press","type":"bool","description":"If [code]true[/code], the [signal pressed] and [signal released] signals are emitted whenever a pressed finger goes in and out of the button, even if the pressure started outside the active area of the button.\n\t\t\t[b]Note:[/b] This is a \"pass-by\" (not \"bypass\") press mode."},{"name":"shape","type":"Shape2D","description":"The button's shape."},{"name":"shape_centered","type":"bool","description":"If [code]true[/code], the button's shape is centered in the provided texture. If no texture is used, this property has no effect."},{"name":"shape_visible","type":"bool","description":"If [code]true[/code], the button's shape is visible in the editor."},{"name":"texture_normal","type":"Texture2D","description":"The button's texture for the normal state."},{"name":"texture_pressed","type":"Texture2D","description":"The button's texture for the pressed state."},{"name":"visibility_mode","type":"int","description":"The button's visibility mode. See [enum VisibilityMode] for possible values."}],"methods":[{"name":"is_pressed","signature":"is_pressed() -> bool","description":"Returns true if this button is currently pressed.","returnType":"bool"}],"signals":[{"name":"pressed","description":"Emitted when the button is pressed (down)."},{"name":"released","description":"Emitted when the button is released (up)."}]},"Transform2D":{"name":"Transform2D","description":"A 2×3 matrix representing a 2D transformation.","inherits":"","properties":[{"name":"origin","type":"Vector2","description":"The translation offset of this transform, and the column [code]2[/code] of the matrix. In 2D space, this can be seen as the position."},{"name":"x","type":"Vector2","description":"The transform basis's X axis, and the column [code]0[/code] of the matrix. Combined with [member y], this represents the transform's rotation, scale, and skew.\n\t\t\tOn the identity transform, this vector points right ([constant Vector2.RIGHT])."},{"name":"y","type":"Vector2","description":"The transform basis's Y axis, and the column [code]1[/code] of the matrix. Combined with [member x], this represents the transform's rotation, scale, and skew.\n\t\t\tOn the identity transform, this vector points down ([constant Vector2.DOWN])."}],"methods":[{"name":"affine_inverse","signature":"affine_inverse() -> Transform2D","description":"Returns the inverted version of this transform. Unlike [method inverse], this method works with almost any basis, including non-uniform ones, but is slower.\n\t\t\t\tNote: For this method to return correctly, the transform's basis needs to have a determinant that is not exactly 0.0 (see [method determinant]).","returnType":"Transform2D"},{"name":"basis_xform","signature":"basis_xform(v: Vector2) -> Vector2","description":"Returns a copy of the [param v] vector, transformed (multiplied) by the transform basis's matrix. Unlike the multiplication operator (*), this method ignores the [member origin].","returnType":"Vector2"},{"name":"basis_xform_inv","signature":"basis_xform_inv(v: Vector2) -> Vector2","description":"Returns a copy of the [param v] vector, transformed (multiplied) by the inverse transform basis's matrix (see [method inverse]). This method ignores the [member origin].\n\t\t\t\tNote: This method assumes that this transform's basis is orthonormal (see [method orthonormalized]). If the basis is not orthonormal, transform.affine_inverse().basis_xform(vector) should be used instead (see [method affine_inverse]).","returnType":"Vector2"},{"name":"determinant","signature":"determinant() -> float","description":"Returns the [url=https://en.wikipedia.org/wiki/Determinant]determinant of this transform basis's matrix. For advanced math, this number can be used to determine a few attributes:\n\t\t\t\t- If the determinant is exactly 0.0, the basis is not invertible (see [method inverse]).\n\t\t\t\t- If the determinant is a negative number, the basis represents a negative scale.\n\t\t\t\tNote: If the basis's scale is the same for every axis, its determinant is always that scale by the power of 2.","returnType":"float"},{"name":"get_origin","signature":"get_origin() -> Vector2","description":"Returns this transform's translation. Equivalent to [member origin].","returnType":"Vector2"},{"name":"get_rotation","signature":"get_rotation() -> float","description":"Returns this transform's rotation (in radians). This is equivalent to [member x]'s angle (see [method Vector2.angle]).","returnType":"float"},{"name":"get_scale","signature":"get_scale() -> Vector2","description":"Returns the length of both [member x] and [member y], as a . If this transform's basis is not skewed, this value is the scaling factor. It is not affected by rotation.\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tvar my_transform = Transform2D(\n\t\t\t\t    Vector2(2, 0),\n\t\t\t\t    Vector2(0, 4),\n\t\t\t\t    Vector2(0, 0)\n\t\t\t\t)\n\t\t\t\t# Rotating the Transform2D in any way preserves its scale.\n\t\t\t\tmy_transform = my_transform.rotated(TAU / 2)\n\n\t\t\t\tprint(my_transform.get_scale()) # Prints (2.0, 4.0)\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tvar myTransform = new Transform2D(\n\t\t\t\t    Vector3(2.0f, 0.0f),\n\t\t\t\t    Vector3(0.0f, 4.0f),\n\t\t\t\t    Vector3(0.0f, 0.0f)\n\t\t\t\t);\n\t\t\t\t// Rotating the Transform2D in any way preserves its scale.\n\t\t\t\tmyTransform = myTransform.Rotated(Mathf.Tau / 2.0f);\n\n\t\t\t\tGD.Print(myTransform.GetScale()); // Prints (2, 4)\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tNote: If the value returned by [method determinant] is negative, the scale is also negative.","returnType":"Vector2"},{"name":"get_skew","signature":"get_skew() -> float","description":"Returns this transform's skew (in radians).","returnType":"float"},{"name":"interpolate_with","signature":"interpolate_with(xform: Transform2D, weight: float) -> Transform2D","description":"Returns the result of the linear interpolation between this transform and [param xform] by the given [param weight].\n\t\t\t\tThe [param weight] should be between 0.0 and 1.0 (inclusive). Values outside this range are allowed and can be used to perform extrapolation instead.","returnType":"Transform2D"},{"name":"inverse","signature":"inverse() -> Transform2D","description":"Returns the [url=https://en.wikipedia.org/wiki/Invertible_matrix]inverted version of this transform.\n\t\t\t\tNote: For this method to return correctly, the transform's basis needs to be orthonormal (see [method orthonormalized]). That means the basis should only represent a rotation. If it does not, use [method affine_inverse] instead.","returnType":"Transform2D"},{"name":"is_conformal","signature":"is_conformal() -> bool","description":"Returns true if this transform's basis is conformal. A conformal basis is both orthogonal (the axes are perpendicular to each other) and uniform (the axes share the same length). This method can be especially useful during physics calculations.","returnType":"bool"},{"name":"is_equal_approx","signature":"is_equal_approx(xform: Transform2D) -> bool","description":"Returns true if this transform and [param xform] are approximately equal, by running [method @GlobalScope.is_equal_approx] on each component.","returnType":"bool"},{"name":"is_finite","signature":"is_finite() -> bool","description":"Returns true if this transform is finite, by calling [method @GlobalScope.is_finite] on each component.","returnType":"bool"},{"name":"looking_at","signature":"looking_at(target: Vector2) -> Transform2D","description":"Returns a copy of the transform rotated such that the rotated X-axis points towards the [param target] position, in global space.","returnType":"Transform2D"},{"name":"orthonormalized","signature":"orthonormalized() -> Transform2D","description":"Returns a copy of this transform with its basis orthonormalized. An orthonormal basis is both orthogonal (the axes are perpendicular to each other) and normalized (the axes have a length of 1.0), which also means it can only represent a rotation.","returnType":"Transform2D"},{"name":"rotated","signature":"rotated(angle: float) -> Transform2D","description":"Returns a copy of this transform rotated by the given [param angle] (in radians).\n\t\t\t\tIf [param angle] is positive, the transform is rotated clockwise.\n\t\t\t\tThis method is an optimized version of multiplying the given transform X with a corresponding rotation transform R from the left, i.e., R * X.\n\t\t\t\tThis can be seen as transforming with respect to the global/parent frame.","returnType":"Transform2D"},{"name":"rotated_local","signature":"rotated_local(angle: float) -> Transform2D","description":"Returns a copy of the transform rotated by the given [param angle] (in radians).\n\t\t\t\tThis method is an optimized version of multiplying the given transform X with a corresponding rotation transform R from the right, i.e., X * R.\n\t\t\t\tThis can be seen as transforming with respect to the local frame.","returnType":"Transform2D"},{"name":"scaled","signature":"scaled(scale: Vector2) -> Transform2D","description":"Returns a copy of the transform scaled by the given [param scale] factor.\n\t\t\t\tThis method is an optimized version of multiplying the given transform X with a corresponding scaling transform S from the left, i.e., S * X.\n\t\t\t\tThis can be seen as transforming with respect to the global/parent frame.","returnType":"Transform2D"},{"name":"scaled_local","signature":"scaled_local(scale: Vector2) -> Transform2D","description":"Returns a copy of the transform scaled by the given [param scale] factor.\n\t\t\t\tThis method is an optimized version of multiplying the given transform X with a corresponding scaling transform S from the right, i.e., X * S.\n\t\t\t\tThis can be seen as transforming with respect to the local frame.","returnType":"Transform2D"},{"name":"translated","signature":"translated(offset: Vector2) -> Transform2D","description":"Returns a copy of the transform translated by the given [param offset].\n\t\t\t\tThis method is an optimized version of multiplying the given transform X with a corresponding translation transform T from the left, i.e., T * X.\n\t\t\t\tThis can be seen as transforming with respect to the global/parent frame.","returnType":"Transform2D"},{"name":"translated_local","signature":"translated_local(offset: Vector2) -> Transform2D","description":"Returns a copy of the transform translated by the given [param offset].\n\t\t\t\tThis method is an optimized version of multiplying the given transform X with a corresponding translation transform T from the right, i.e., X * T.\n\t\t\t\tThis can be seen as transforming with respect to the local frame.","returnType":"Transform2D"}],"signals":[]},"Transform3D":{"name":"Transform3D","description":"A 3×4 matrix representing a 3D transformation.","inherits":"","properties":[{"name":"basis","type":"Basis","description":"The [Basis] of this transform. It is composed by 3 axes ([member Basis.x], [member Basis.y], and [member Basis.z]). Together, these represent the transform's rotation, scale, and shear."},{"name":"origin","type":"Vector3","description":"The translation offset of this transform. In 3D space, this can be seen as the position."}],"methods":[{"name":"affine_inverse","signature":"affine_inverse() -> Transform3D","description":"Returns the inverted version of this transform. Unlike [method inverse], this method works with almost any [member basis], including non-uniform ones, but is slower. See also [method Basis.inverse].\n\t\t\t\tNote: For this method to return correctly, the transform's [member basis] needs to have a determinant that is not exactly 0.0 (see [method Basis.determinant]).","returnType":"Transform3D"},{"name":"interpolate_with","signature":"interpolate_with(xform: Transform3D, weight: float) -> Transform3D","description":"Returns the result of the linear interpolation between this transform and [param xform] by the given [param weight].\n\t\t\t\tThe [param weight] should be between 0.0 and 1.0 (inclusive). Values outside this range are allowed and can be used to perform extrapolation instead.","returnType":"Transform3D"},{"name":"inverse","signature":"inverse() -> Transform3D","description":"Returns the [url=https://en.wikipedia.org/wiki/Invertible_matrix]inverted version of this transform. See also [method Basis.inverse].\n\t\t\t\tNote: For this method to return correctly, the transform's [member basis] needs to be orthonormal (see [method orthonormalized]). That means the basis should only represent a rotation. If it does not, use [method affine_inverse] instead.","returnType":"Transform3D"},{"name":"is_equal_approx","signature":"is_equal_approx(xform: Transform3D) -> bool","description":"Returns true if this transform and [param xform] are approximately equal, by running [method @GlobalScope.is_equal_approx] on each component.","returnType":"bool"},{"name":"is_finite","signature":"is_finite() -> bool","description":"Returns true if this transform is finite, by calling [method @GlobalScope.is_finite] on each component.","returnType":"bool"},{"name":"looking_at","signature":"looking_at(target: Vector3, up: Vector3, use_model_front: bool) -> Transform3D","description":"Returns a copy of this transform rotated so that the forward axis (-Z) points towards the [param target] position.\n\t\t\t\tThe up axis (+Y) points as close to the [param up] vector as possible while staying perpendicular to the forward axis. The resulting transform is orthonormalized. The existing rotation, scale, and skew information from the original transform is discarded. The [param target] and [param up] vectors cannot be zero, cannot be parallel to each other, and are defined in global/parent space.\n\t\t\t\tIf [param use_model_front] is true, the +Z axis (asset front) is treated as forward (implies +X is left) and points toward the [param target] position. By default, the -Z axis (camera forward) is treated as forward (implies +X is right).","returnType":"Transform3D"},{"name":"orthonormalized","signature":"orthonormalized() -> Transform3D","description":"Returns a copy of this transform with its [member basis] orthonormalized. An orthonormal basis is both orthogonal (the axes are perpendicular to each other) and normalized (the axes have a length of 1.0), which also means it can only represent a rotation. See also [method Basis.orthonormalized].","returnType":"Transform3D"},{"name":"rotated","signature":"rotated(axis: Vector3, angle: float) -> Transform3D","description":"Returns a copy of this transform rotated around the given [param axis] by the given [param angle] (in radians).\n\t\t\t\tThe [param axis] must be a normalized vector (see [method Vector3.normalized]). If [param angle] is positive, the basis is rotated counter-clockwise around the axis.\n\t\t\t\tThis method is an optimized version of multiplying the given transform X with a corresponding rotation transform R from the left, i.e., R * X.\n\t\t\t\tThis can be seen as transforming with respect to the global/parent frame.","returnType":"Transform3D"},{"name":"rotated_local","signature":"rotated_local(axis: Vector3, angle: float) -> Transform3D","description":"Returns a copy of this transform rotated around the given [param axis] by the given [param angle] (in radians).\n\t\t\t\tThe [param axis] must be a normalized vector in the transform's local coordinate system. For example, to rotate around the local X-axis, use [constant Vector3.RIGHT].\n\t\t\t\tThis method is an optimized version of multiplying the given transform X with a corresponding rotation transform R from the right, i.e., X * R.\n\t\t\t\tThis can be seen as transforming with respect to the local frame.","returnType":"Transform3D"},{"name":"scaled","signature":"scaled(scale: Vector3) -> Transform3D","description":"Returns a copy of this transform scaled by the given [param scale] factor.\n\t\t\t\tThis method is an optimized version of multiplying the given transform X with a corresponding scaling transform S from the left, i.e., S * X.\n\t\t\t\tThis can be seen as transforming with respect to the global/parent frame.","returnType":"Transform3D"},{"name":"scaled_local","signature":"scaled_local(scale: Vector3) -> Transform3D","description":"Returns a copy of this transform scaled by the given [param scale] factor.\n\t\t\t\tThis method is an optimized version of multiplying the given transform X with a corresponding scaling transform S from the right, i.e., X * S.\n\t\t\t\tThis can be seen as transforming with respect to the local frame.","returnType":"Transform3D"},{"name":"translated","signature":"translated(offset: Vector3) -> Transform3D","description":"Returns a copy of this transform translated by the given [param offset].\n\t\t\t\tThis method is an optimized version of multiplying the given transform X with a corresponding translation transform T from the left, i.e., T * X.\n\t\t\t\tThis can be seen as transforming with respect to the global/parent frame.","returnType":"Transform3D"},{"name":"translated_local","signature":"translated_local(offset: Vector3) -> Transform3D","description":"Returns a copy of this transform translated by the given [param offset].\n\t\t\t\tThis method is an optimized version of multiplying the given transform X with a corresponding translation transform T from the right, i.e., X * T.\n\t\t\t\tThis can be seen as transforming with respect to the local frame.","returnType":"Transform3D"}],"signals":[]},"Translation":{"name":"Translation","description":"A language translation that maps a collection of strings to their individual translations.","inherits":"Resource","properties":[{"name":"locale","type":"String","description":"The locale of the translation."}],"methods":[{"name":"_get_message","signature":"_get_message(src_message: StringName, context: StringName) -> StringName","description":"Virtual method to override [method get_message].","returnType":"StringName"},{"name":"_get_plural_message","signature":"_get_plural_message(src_message: StringName, src_plural_message: StringName, n: int, context: StringName) -> StringName","description":"Virtual method to override [method get_plural_message].","returnType":"StringName"},{"name":"add_message","signature":"add_message(src_message: StringName, xlated_message: StringName, context: StringName) -> void","description":"Adds a message if nonexistent, followed by its translation.\n\t\t\t\tAn additional context could be used to specify the translation context or differentiate polysemic words.","returnType":"void"},{"name":"add_plural_message","signature":"add_plural_message(src_message: StringName, xlated_messages: PackedStringArray, context: StringName) -> void","description":"Adds a message involving plural translation if nonexistent, followed by its translation.\n\t\t\t\tAn additional context could be used to specify the translation context or differentiate polysemic words.","returnType":"void"},{"name":"erase_message","signature":"erase_message(src_message: StringName, context: StringName) -> void","description":"Erases a message.","returnType":"void"},{"name":"get_message","signature":"get_message(src_message: StringName, context: StringName) -> StringName","description":"Returns a message's translation.","returnType":"StringName"},{"name":"get_message_count","signature":"get_message_count() -> int","description":"Returns the number of existing messages.","returnType":"int"},{"name":"get_message_list","signature":"get_message_list() -> PackedStringArray","description":"Returns all the messages (keys).","returnType":"PackedStringArray"},{"name":"get_plural_message","signature":"get_plural_message(src_message: StringName, src_plural_message: StringName, n: int, context: StringName) -> StringName","description":"Returns a message's translation involving plurals.\n\t\t\t\tThe number [param n] is the number or quantity of the plural object. It will be used to guide the translation system to fetch the correct plural form for the selected language.","returnType":"StringName"},{"name":"get_translated_message_list","signature":"get_translated_message_list() -> PackedStringArray","description":"Returns all the messages (translated text).","returnType":"PackedStringArray"}],"signals":[]},"TranslationDomain":{"name":"TranslationDomain","description":"A self-contained collection of  resources.","inherits":"RefCounted","properties":[{"name":"pseudolocalization_accents_enabled","type":"bool","description":"Replace all characters with their accented variants during pseudolocalization.\n\t\t\t[b]Note:[/b] Updating this property does not automatically update texts in the scene tree. Please propagate the [constant MainLoop.NOTIFICATION_TRANSLATION_CHANGED] notification manually after you have finished modifying pseudolocalization related options."},{"name":"pseudolocalization_double_vowels_enabled","type":"bool","description":"Double vowels in strings during pseudolocalization to simulate the lengthening of text due to localization.\n\t\t\t[b]Note:[/b] Updating this property does not automatically update texts in the scene tree. Please propagate the [constant MainLoop.NOTIFICATION_TRANSLATION_CHANGED] notification manually after you have finished modifying pseudolocalization related options."},{"name":"pseudolocalization_enabled","type":"bool","description":"If [code]true[/code], enables pseudolocalization for the project. This can be used to spot untranslatable strings or layout issues that may occur once the project is localized to languages that have longer strings than the source language.\n\t\t\t[b]Note:[/b] Updating this property does not automatically update texts in the scene tree. Please propagate the [constant MainLoop.NOTIFICATION_TRANSLATION_CHANGED] notification manually after you have finished modifying pseudolocalization related options."},{"name":"pseudolocalization_expansion_ratio","type":"float","description":"The expansion ratio to use during pseudolocalization. A value of [code]0.3[/code] is sufficient for most practical purposes, and will increase the length of each string by 30%.\n\t\t\t[b]Note:[/b] Updating this property does not automatically update texts in the scene tree. Please propagate the [constant MainLoop.NOTIFICATION_TRANSLATION_CHANGED] notification manually after you have finished modifying pseudolocalization related options."},{"name":"pseudolocalization_fake_bidi_enabled","type":"bool","description":"If [code]true[/code], emulate bidirectional (right-to-left) text when pseudolocalization is enabled. This can be used to spot issues with RTL layout and UI mirroring that will crop up if the project is localized to RTL languages such as Arabic or Hebrew.\n\t\t\t[b]Note:[/b] Updating this property does not automatically update texts in the scene tree. Please propagate the [constant MainLoop.NOTIFICATION_TRANSLATION_CHANGED] notification manually after you have finished modifying pseudolocalization related options."},{"name":"pseudolocalization_override_enabled","type":"bool","description":"Replace all characters in the string with [code]*[/code]. Useful for finding non-localizable strings.\n\t\t\t[b]Note:[/b] Updating this property does not automatically update texts in the scene tree. Please propagate the [constant MainLoop.NOTIFICATION_TRANSLATION_CHANGED] notification manually after you have finished modifying pseudolocalization related options."},{"name":"pseudolocalization_prefix","type":"String","description":"Prefix that will be prepended to the pseudolocalized string.\n\t\t\t[b]Note:[/b] Updating this property does not automatically update texts in the scene tree. Please propagate the [constant MainLoop.NOTIFICATION_TRANSLATION_CHANGED] notification manually after you have finished modifying pseudolocalization related options."},{"name":"pseudolocalization_skip_placeholders_enabled","type":"bool","description":"Skip placeholders for string formatting like [code]%s[/code] or [code]%f[/code] during pseudolocalization. Useful to identify strings which need additional control characters to display correctly.\n\t\t\t[b]Note:[/b] Updating this property does not automatically update texts in the scene tree. Please propagate the [constant MainLoop.NOTIFICATION_TRANSLATION_CHANGED] notification manually after you have finished modifying pseudolocalization related options."},{"name":"pseudolocalization_suffix","type":"String","description":"Suffix that will be appended to the pseudolocalized string.\n\t\t\t[b]Note:[/b] Updating this property does not automatically update texts in the scene tree. Please propagate the [constant MainLoop.NOTIFICATION_TRANSLATION_CHANGED] notification manually after you have finished modifying pseudolocalization related options."}],"methods":[{"name":"add_translation","signature":"add_translation(translation: Translation) -> void","description":"Adds a translation.","returnType":"void"},{"name":"clear","signature":"clear() -> void","description":"Removes all translations.","returnType":"void"},{"name":"get_translation_object","signature":"get_translation_object(locale: String) -> Translation","description":"Returns the  instance that best matches [param locale]. Returns null if there are no matches.","returnType":"Translation"},{"name":"pseudolocalize","signature":"pseudolocalize(message: StringName) -> StringName","description":"Returns the pseudolocalized string based on the [param message] passed in.","returnType":"StringName"},{"name":"remove_translation","signature":"remove_translation(translation: Translation) -> void","description":"Removes the given translation.","returnType":"void"},{"name":"translate","signature":"translate(message: StringName, context: StringName) -> StringName","description":"Returns the current locale's translation for the given message and context.","returnType":"StringName"},{"name":"translate_plural","signature":"translate_plural(message: StringName, message_plural: StringName, n: int, context: StringName) -> StringName","description":"Returns the current locale's translation for the given message, plural message and context.\n\t\t\t\tThe number [param n] is the number or quantity of the plural object. It will be used to guide the translation system to fetch the correct plural form for the selected language.","returnType":"StringName"}],"signals":[]},"TranslationServer":{"name":"TranslationServer","description":"The server responsible for language translations.","inherits":"Object","properties":[{"name":"pseudolocalization_enabled","type":"bool","description":"If [code]true[/code], enables the use of pseudolocalization on the main translation domain. See [member ProjectSettings.internationalization/pseudolocalization/use_pseudolocalization] for details."}],"methods":[{"name":"add_translation","signature":"add_translation(translation: Translation) -> void","description":"Adds a translation to the main translation domain.","returnType":"void"},{"name":"clear","signature":"clear() -> void","description":"Removes all translations from the main translation domain.","returnType":"void"},{"name":"compare_locales","signature":"compare_locales(locale_a: String, locale_b: String) -> int","description":"Compares two locales and returns a similarity score between 0 (no match) and 10 (full match).","returnType":"int"},{"name":"get_all_countries","signature":"get_all_countries() -> PackedStringArray","description":"Returns an array of known country codes.","returnType":"PackedStringArray"},{"name":"get_all_languages","signature":"get_all_languages() -> PackedStringArray","description":"Returns array of known language codes.","returnType":"PackedStringArray"},{"name":"get_all_scripts","signature":"get_all_scripts() -> PackedStringArray","description":"Returns an array of known script codes.","returnType":"PackedStringArray"},{"name":"get_country_name","signature":"get_country_name(country: String) -> String","description":"Returns a readable country name for the [param country] code.","returnType":"String"},{"name":"get_language_name","signature":"get_language_name(language: String) -> String","description":"Returns a readable language name for the [param language] code.","returnType":"String"},{"name":"get_loaded_locales","signature":"get_loaded_locales() -> PackedStringArray","description":"Returns an array of all loaded locales of the project.","returnType":"PackedStringArray"},{"name":"get_locale","signature":"get_locale() -> String","description":"Returns the current locale of the project.\n\t\t\t\tSee also [method OS.get_locale] and [method OS.get_locale_language] to query the locale of the user system.","returnType":"String"},{"name":"get_locale_name","signature":"get_locale_name(locale: String) -> String","description":"Returns a locale's language and its variant (e.g. \"en_US\" would return \"English (United States)\").","returnType":"String"},{"name":"get_or_add_domain","signature":"get_or_add_domain(domain: StringName) -> TranslationDomain","description":"Returns the translation domain with the specified name. An empty translation domain will be created and added if it does not exist.","returnType":"TranslationDomain"},{"name":"get_script_name","signature":"get_script_name(script: String) -> String","description":"Returns a readable script name for the [param script] code.","returnType":"String"},{"name":"get_tool_locale","signature":"get_tool_locale() -> String","description":"Returns the current locale of the editor.\n\t\t\t\tNote: When called from an exported project returns the same value as [method get_locale].","returnType":"String"},{"name":"get_translation_object","signature":"get_translation_object(locale: String) -> Translation","description":"Returns the  instance that best matches [param locale] in the main translation domain. Returns null if there are no matches.","returnType":"Translation"},{"name":"has_domain","signature":"has_domain(domain: StringName) -> bool","description":"Returns true if a translation domain with the specified name exists.","returnType":"bool"},{"name":"pseudolocalize","signature":"pseudolocalize(message: StringName) -> StringName","description":"Returns the pseudolocalized string based on the [param message] passed in.\n\t\t\t\tNote: This method always uses the main translation domain.","returnType":"StringName"},{"name":"reload_pseudolocalization","signature":"reload_pseudolocalization() -> void","description":"Reparses the pseudolocalization options and reloads the translation for the main translation domain.","returnType":"void"},{"name":"remove_domain","signature":"remove_domain(domain: StringName) -> void","description":"Removes the translation domain with the specified name.\n\t\t\t\tNote: Trying to remove the main translation domain is an error.","returnType":"void"},{"name":"remove_translation","signature":"remove_translation(translation: Translation) -> void","description":"Removes the given translation from the main translation domain.","returnType":"void"},{"name":"set_locale","signature":"set_locale(locale: String) -> void","description":"Sets the locale of the project. The [param locale] string will be standardized to match known locales (e.g. en-US would be matched to en_US).\n\t\t\t\tIf translations have been loaded beforehand for the new locale, they will be applied.","returnType":"void"},{"name":"standardize_locale","signature":"standardize_locale(locale: String, add_defaults: bool) -> String","description":"Returns a [param locale] string standardized to match known locales (e.g. en-US would be matched to en_US). If [param add_defaults] is true, the locale may have a default script or country added.","returnType":"String"},{"name":"translate","signature":"translate(message: StringName, context: StringName) -> StringName","description":"Returns the current locale's translation for the given message and context.\n\t\t\t\tNote: This method always uses the main translation domain.","returnType":"StringName"},{"name":"translate_plural","signature":"translate_plural(message: StringName, plural_message: StringName, n: int, context: StringName) -> StringName","description":"Returns the current locale's translation for the given message, plural message and context.\n\t\t\t\tThe number [param n] is the number or quantity of the plural object. It will be used to guide the translation system to fetch the correct plural form for the selected language.\n\t\t\t\tNote: This method always uses the main translation domain.","returnType":"StringName"}],"signals":[]},"Tree":{"name":"Tree","description":"A control used to show a set of internal s in a hierarchical structure.","inherits":"Control","properties":[{"name":"allow_reselect","type":"bool","description":"If [code]true[/code], the currently selected cell may be selected again."},{"name":"allow_rmb_select","type":"bool","description":"If [code]true[/code], a right mouse button click can select items."},{"name":"allow_search","type":"bool","description":"If [code]true[/code], allows navigating the [Tree] with letter keys through incremental search."},{"name":"auto_tooltip","type":"bool","description":"If [code]true[/code], tree items with no tooltip assigned display their text as their tooltip. See also [method TreeItem.get_tooltip_text] and [method TreeItem.get_button_tooltip_text]."},{"name":"column_titles_visible","type":"bool","description":"If [code]true[/code], column titles are visible."},{"name":"columns","type":"int","description":"The number of columns."},{"name":"drop_mode_flags","type":"int","description":"The drop mode as an OR combination of flags. See [enum DropModeFlags] constants. Once dropping is done, reverts to [constant DROP_MODE_DISABLED]. Setting this during [method Control._can_drop_data] is recommended.\n\t\t\tThis controls the drop sections, i.e. the decision and drawing of possible drop locations based on the mouse position."},{"name":"enable_recursive_folding","type":"bool","description":"If [code]true[/code], recursive folding is enabled for this [Tree]. Holding down [kbd]Shift[/kbd] while clicking the fold arrow or using [code]ui_right[/code]/[code]ui_left[/code] shortcuts collapses or uncollapses the [TreeItem] and all its descendants."},{"name":"hide_folding","type":"bool","description":"If [code]true[/code], the folding arrow is hidden."},{"name":"hide_root","type":"bool","description":"If [code]true[/code], the tree's root is hidden."},{"name":"scroll_horizontal_enabled","type":"bool","description":"If [code]true[/code], enables horizontal scrolling."},{"name":"scroll_vertical_enabled","type":"bool","description":"If [code]true[/code], enables vertical scrolling."},{"name":"select_mode","type":"int","description":"Allows single or multiple selection. See the [enum SelectMode] constants."}],"methods":[{"name":"clear","signature":"clear() -> void","description":"Clears the tree. This removes all items.","returnType":"void"},{"name":"create_item","signature":"create_item(parent: TreeItem, index: int) -> TreeItem","description":"Creates an item in the tree and adds it as a child of [param parent], which can be either a valid  or null.\n\t\t\t\tIf [param parent] is null, the root item will be the parent, or the new item will be the root itself if the tree is empty.\n\t\t\t\tThe new item will be the [param index]-th child of parent, or it will be the last child if there are not enough siblings.","returnType":"TreeItem"},{"name":"deselect_all","signature":"deselect_all() -> void","description":"Deselects all tree items (rows and columns). In [constant SELECT_MULTI] mode also removes selection cursor.","returnType":"void"},{"name":"edit_selected","signature":"edit_selected(force_edit: bool) -> bool","description":"Edits the selected tree item as if it was clicked.\n\t\t\t\tEither the item must be set editable with [method TreeItem.set_editable] or [param force_edit] must be true.\n\t\t\t\tReturns true if the item could be edited. Fails if no item is selected.","returnType":"bool"},{"name":"ensure_cursor_is_visible","signature":"ensure_cursor_is_visible() -> void","description":"Makes the currently focused cell visible.\n\t\t\t\tThis will scroll the tree if necessary. In [constant SELECT_ROW] mode, this will not do horizontal scrolling, as all the cells in the selected row is focused logically.\n\t\t\t\tNote: Despite the name of this method, the focus cursor itself is only visible in [constant SELECT_MULTI] mode.","returnType":"void"},{"name":"get_button_id_at_position","signature":"get_button_id_at_position(position: Vector2) -> int","description":"Returns the button ID at [param position], or -1 if no button is there.","returnType":"int"},{"name":"get_column_at_position","signature":"get_column_at_position(position: Vector2) -> int","description":"Returns the column index at [param position], or -1 if no item is there.","returnType":"int"},{"name":"get_column_expand_ratio","signature":"get_column_expand_ratio(column: int) -> int","description":"Returns the expand ratio assigned to the column.","returnType":"int"},{"name":"get_column_title","signature":"get_column_title(column: int) -> String","description":"Returns the column's title.","returnType":"String"},{"name":"get_column_title_alignment","signature":"get_column_title_alignment(column: int) -> int","description":"Returns the column title alignment.","returnType":"int"},{"name":"get_column_title_direction","signature":"get_column_title_direction(column: int) -> int","description":"Returns column title base writing direction.","returnType":"int"},{"name":"get_column_title_language","signature":"get_column_title_language(column: int) -> String","description":"Returns column title language code.","returnType":"String"},{"name":"get_column_width","signature":"get_column_width(column: int) -> int","description":"Returns the column's width in pixels.","returnType":"int"},{"name":"get_custom_popup_rect","signature":"get_custom_popup_rect() -> Rect2","description":"Returns the rectangle for custom popups. Helper to create custom cell controls that display a popup. See [method TreeItem.set_cell_mode].","returnType":"Rect2"},{"name":"get_drop_section_at_position","signature":"get_drop_section_at_position(position: Vector2) -> int","description":"Returns the drop section at [param position], or -100 if no item is there.\n\t\t\t\tValues -1, 0, or 1 will be returned for the \"above item\", \"on item\", and \"below item\" drop sections, respectively. See [enum DropModeFlags] for a description of each drop section.\n\t\t\t\tTo get the item which the returned drop section is relative to, use [method get_item_at_position].","returnType":"int"},{"name":"get_edited","signature":"get_edited() -> TreeItem","description":"Returns the currently edited item. Can be used with [signal item_edited] to get the item that was modified.\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tfunc _ready():\n\t\t\t\t    $Tree.item_edited.connect(on_Tree_item_edited)\n\n\t\t\t\tfunc on_Tree_item_edited():\n\t\t\t\t    print($Tree.get_edited()) # This item just got edited (e.g. checked).\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tpublic override void _Ready()\n\t\t\t\t{\n\t\t\t\t    GetNode&lt;Tree&gt;(\"Tree\").ItemEdited += OnTreeItemEdited;\n\t\t\t\t}\n\n\t\t\t\tpublic void OnTreeItemEdited()\n\t\t\t\t{\n\t\t\t\t    GD.Print(GetNode&lt;Tree&gt;(\"Tree\").GetEdited()); // This item just got edited (e.g. checked).\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t","returnType":"TreeItem"},{"name":"get_edited_column","signature":"get_edited_column() -> int","description":"Returns the column for the currently edited item.","returnType":"int"},{"name":"get_item_area_rect","signature":"get_item_area_rect(item: TreeItem, column: int, button_index: int) -> Rect2","description":"Returns the rectangle area for the specified . If [param column] is specified, only get the position and size of that column, otherwise get the rectangle containing all columns. If a button index is specified, the rectangle of that button will be returned.","returnType":"Rect2"},{"name":"get_item_at_position","signature":"get_item_at_position(position: Vector2) -> TreeItem","description":"Returns the tree item at the specified position (relative to the tree origin position).","returnType":"TreeItem"},{"name":"get_next_selected","signature":"get_next_selected(from: TreeItem) -> TreeItem","description":"Returns the next selected  after the given one, or null if the end is reached.\n\t\t\t\tIf [param from] is null, this returns the first selected item.","returnType":"TreeItem"},{"name":"get_pressed_button","signature":"get_pressed_button() -> int","description":"Returns the last pressed button's index.","returnType":"int"},{"name":"get_root","signature":"get_root() -> TreeItem","description":"Returns the tree's root item, or null if the tree is empty.","returnType":"TreeItem"},{"name":"get_scroll","signature":"get_scroll() -> Vector2","description":"Returns the current scrolling position.","returnType":"Vector2"},{"name":"get_selected","signature":"get_selected() -> TreeItem","description":"Returns the currently focused item, or null if no item is focused.\n\t\t\t\tIn [constant SELECT_ROW] and [constant SELECT_SINGLE] modes, the focused item is same as the selected item. In [constant SELECT_MULTI] mode, the focused item is the item under the focus cursor, not necessarily selected.\n\t\t\t\tTo get the currently selected item(s), use [method get_next_selected].","returnType":"TreeItem"},{"name":"get_selected_column","signature":"get_selected_column() -> int","description":"Returns the currently focused column, or -1 if no column is focused.\n\t\t\t\tIn [constant SELECT_SINGLE] mode, the focused column is the selected column. In [constant SELECT_ROW] mode, the focused column is always 0 if any item is selected. In [constant SELECT_MULTI] mode, the focused column is the column under the focus cursor, and there are not necessarily any column selected.\n\t\t\t\tTo tell whether a column of an item is selected, use [method TreeItem.is_selected].","returnType":"int"},{"name":"is_column_clipping_content","signature":"is_column_clipping_content(column: int) -> bool","description":"Returns true if the column has enabled clipping (see [method set_column_clip_content]).","returnType":"bool"},{"name":"is_column_expanding","signature":"is_column_expanding(column: int) -> bool","description":"Returns true if the column has enabled expanding (see [method set_column_expand]).","returnType":"bool"},{"name":"scroll_to_item","signature":"scroll_to_item(item: TreeItem, center_on_item: bool) -> void","description":"Causes the  to jump to the specified .","returnType":"void"},{"name":"set_column_clip_content","signature":"set_column_clip_content(column: int, enable: bool) -> void","description":"Allows to enable clipping for column's content, making the content size ignored.","returnType":"void"},{"name":"set_column_custom_minimum_width","signature":"set_column_custom_minimum_width(column: int, min_width: int) -> void","description":"Overrides the calculated minimum width of a column. It can be set to 0 to restore the default behavior. Columns that have the \"Expand\" flag will use their \"min_width\" in a similar fashion to [member Control.size_flags_stretch_ratio].","returnType":"void"},{"name":"set_column_expand","signature":"set_column_expand(column: int, expand: bool) -> void","description":"If true, the column will have the \"Expand\" flag of . Columns that have the \"Expand\" flag will use their expand ratio in a similar fashion to [member Control.size_flags_stretch_ratio] (see [method set_column_expand_ratio]).","returnType":"void"},{"name":"set_column_expand_ratio","signature":"set_column_expand_ratio(column: int, ratio: int) -> void","description":"Sets the relative expand ratio for a column. See [method set_column_expand].","returnType":"void"},{"name":"set_column_title","signature":"set_column_title(column: int, title: String) -> void","description":"Sets the title of a column.","returnType":"void"},{"name":"set_column_title_alignment","signature":"set_column_title_alignment(column: int, title_alignment: int) -> void","description":"Sets the column title alignment. Note that [constant @GlobalScope.HORIZONTAL_ALIGNMENT_FILL] is not supported for column titles.","returnType":"void"},{"name":"set_column_title_direction","signature":"set_column_title_direction(column: int, direction: int) -> void","description":"Sets column title base writing direction.","returnType":"void"},{"name":"set_column_title_language","signature":"set_column_title_language(column: int, language: String) -> void","description":"Sets language code of column title used for line-breaking and text shaping algorithms, if left empty current locale is used instead.","returnType":"void"},{"name":"set_selected","signature":"set_selected(item: TreeItem, column: int) -> void","description":"Selects the specified  and column.","returnType":"void"}],"signals":[{"name":"button_clicked","description":"Emitted when a button on the tree was pressed (see [method TreeItem.add_button])."},{"name":"cell_selected","description":"Emitted when a cell is selected."},{"name":"check_propagated_to_item","description":"Emitted when [method TreeItem.propagate_check] is called. Connect to this signal to process the items that are affected when [method TreeItem.propagate_check] is invoked. The order that the items affected will be processed is as follows: the item that invoked the method, children of that item, and finally parents of that item."},{"name":"column_title_clicked","description":"Emitted when a column's title is clicked with either [constant MOUSE_BUTTON_LEFT] or [constant MOUSE_BUTTON_RIGHT]."},{"name":"custom_item_clicked","description":"Emitted when an item with [constant TreeItem.CELL_MODE_CUSTOM] is clicked with a mouse button."},{"name":"custom_popup_edited","description":"Emitted when a cell with the [constant TreeItem.CELL_MODE_CUSTOM] is clicked to be edited."},{"name":"empty_clicked","description":"Emitted when a mouse button is clicked in the empty space of the tree."},{"name":"item_activated","description":"Emitted when an item is double-clicked, or selected with a [code]ui_accept[/code] input event (e.g. using [kbd]Enter[/kbd] or [kbd]Space[/kbd] on the keyboard)."},{"name":"item_collapsed","description":"Emitted when an item is collapsed by a click on the folding arrow."},{"name":"item_edited","description":"Emitted when an item is edited."},{"name":"item_icon_double_clicked","description":"Emitted when an item's icon is double-clicked. For a signal that emits when any part of the item is double-clicked, see [signal item_activated]."},{"name":"item_mouse_selected","description":"Emitted when an item is selected with a mouse button."},{"name":"item_selected","description":"Emitted when an item is selected."},{"name":"multi_selected","description":"Emitted instead of [signal item_selected] if [member select_mode] is set to [constant SELECT_MULTI]."},{"name":"nothing_selected","description":"Emitted when a left mouse button click does not select any item."}]},"TreeItem":{"name":"TreeItem","description":"An internal control for a single item inside .","inherits":"Object","properties":[{"name":"collapsed","type":"bool","description":"If [code]true[/code], the TreeItem is collapsed."},{"name":"custom_minimum_height","type":"int","description":"The custom minimum height."},{"name":"disable_folding","type":"bool","description":"If [code]true[/code], folding is disabled for this TreeItem."},{"name":"visible","type":"bool","description":"If [code]true[/code], the [TreeItem] is visible (default).\n\t\t\tNote that if a [TreeItem] is set to not be visible, none of its children will be visible either."}],"methods":[{"name":"add_button","signature":"add_button(column: int, button: Texture2D, id: int, disabled: bool, tooltip_text: String) -> void","description":"Adds a button with  [param button] to the end of the cell at column [param column]. The [param id] is used to identify the button in the according [signal Tree.button_clicked] signal and can be different from the buttons index. If not specified, the next available index is used, which may be retrieved by calling [method get_button_count] immediately before this method. Optionally, the button can be [param disabled] and have a [param tooltip_text].","returnType":"void"},{"name":"add_child","signature":"add_child(child: TreeItem) -> void","description":"Adds a previously unparented  as a direct child of this one. The [param child] item must not be a part of any  or parented to any . See also [method remove_child].","returnType":"void"},{"name":"call_recursive","signature":"call_recursive(method: StringName) -> void","description":"Calls the [param method] on the actual TreeItem and its children recursively. Pass parameters as a comma separated list.","returnType":"void"},{"name":"clear_buttons","signature":"clear_buttons() -> void","description":"Removes all buttons from all columns of this item.","returnType":"void"},{"name":"clear_custom_bg_color","signature":"clear_custom_bg_color(column: int) -> void","description":"Resets the background color for the given column to default.","returnType":"void"},{"name":"clear_custom_color","signature":"clear_custom_color(column: int) -> void","description":"Resets the color for the given column to default.","returnType":"void"},{"name":"create_child","signature":"create_child(index: int) -> TreeItem","description":"Creates an item and adds it as a child.\n\t\t\t\tThe new item will be inserted as position [param index] (the default value -1 means the last position), or it will be the last child if [param index] is higher than the child count.","returnType":"TreeItem"},{"name":"deselect","signature":"deselect(column: int) -> void","description":"Deselects the given column.","returnType":"void"},{"name":"erase_button","signature":"erase_button(column: int, button_index: int) -> void","description":"Removes the button at index [param button_index] in column [param column].","returnType":"void"},{"name":"get_auto_translate_mode","signature":"get_auto_translate_mode(column: int) -> int","description":"Returns the column's auto translate mode.","returnType":"int"},{"name":"get_autowrap_mode","signature":"get_autowrap_mode(column: int) -> int","description":"Returns the text autowrap mode in the given [param column]. By default it is [constant TextServer.AUTOWRAP_OFF].","returnType":"int"},{"name":"get_button","signature":"get_button(column: int, button_index: int) -> Texture2D","description":"Returns the  of the button at index [param button_index] in column [param column].","returnType":"Texture2D"},{"name":"get_button_by_id","signature":"get_button_by_id(column: int, id: int) -> int","description":"Returns the button index if there is a button with ID [param id] in column [param column], otherwise returns -1.","returnType":"int"},{"name":"get_button_color","signature":"get_button_color(column: int, id: int) -> Color","description":"Returns the color of the button with ID [param id] in column [param column]. If the specified button does not exist, returns [constant Color.BLACK].","returnType":"Color"},{"name":"get_button_count","signature":"get_button_count(column: int) -> int","description":"Returns the number of buttons in column [param column].","returnType":"int"},{"name":"get_button_id","signature":"get_button_id(column: int, button_index: int) -> int","description":"Returns the ID for the button at index [param button_index] in column [param column].","returnType":"int"},{"name":"get_button_tooltip_text","signature":"get_button_tooltip_text(column: int, button_index: int) -> String","description":"Returns the tooltip text for the button at index [param button_index] in column [param column].","returnType":"String"},{"name":"get_cell_mode","signature":"get_cell_mode(column: int) -> int","description":"Returns the column's cell mode.","returnType":"int"},{"name":"get_child","signature":"get_child(index: int) -> TreeItem","description":"Returns a child item by its [param index] (see [method get_child_count]). This method is often used for iterating all children of an item.\n\t\t\t\tNegative indices access the children from the last one.","returnType":"TreeItem"},{"name":"get_child_count","signature":"get_child_count() -> int","description":"Returns the number of child items.","returnType":"int"},{"name":"get_children","signature":"get_children() -> TreeItem[]","description":"Returns an array of references to the item's children.","returnType":"TreeItem[]"},{"name":"get_custom_bg_color","signature":"get_custom_bg_color(column: int) -> Color","description":"Returns the custom background color of column [param column].","returnType":"Color"},{"name":"get_custom_color","signature":"get_custom_color(column: int) -> Color","description":"Returns the custom color of column [param column].","returnType":"Color"},{"name":"get_custom_draw_callback","signature":"get_custom_draw_callback(column: int) -> Callable","description":"Returns the custom callback of column [param column].","returnType":"Callable"},{"name":"get_custom_font","signature":"get_custom_font(column: int) -> Font","description":"Returns custom font used to draw text in the column [param column].","returnType":"Font"},{"name":"get_custom_font_size","signature":"get_custom_font_size(column: int) -> int","description":"Returns custom font size used to draw text in the column [param column].","returnType":"int"},{"name":"get_expand_right","signature":"get_expand_right(column: int) -> bool","description":"Returns true if expand_right is set.","returnType":"bool"},{"name":"get_first_child","signature":"get_first_child() -> TreeItem","description":"Returns the TreeItem's first child.","returnType":"TreeItem"},{"name":"get_icon","signature":"get_icon(column: int) -> Texture2D","description":"Returns the given column's icon . Error if no icon is set.","returnType":"Texture2D"},{"name":"get_icon_max_width","signature":"get_icon_max_width(column: int) -> int","description":"Returns the maximum allowed width of the icon in the given [param column].","returnType":"int"},{"name":"get_icon_modulate","signature":"get_icon_modulate(column: int) -> Color","description":"Returns the  modulating the column's icon.","returnType":"Color"},{"name":"get_icon_overlay","signature":"get_icon_overlay(column: int) -> Texture2D","description":"Returns the given column's icon overlay .","returnType":"Texture2D"},{"name":"get_icon_region","signature":"get_icon_region(column: int) -> Rect2","description":"Returns the icon  region as .","returnType":"Rect2"},{"name":"get_index","signature":"get_index() -> int","description":"Returns the node's order in the tree. For example, if called on the first child item the position is 0.","returnType":"int"},{"name":"get_language","signature":"get_language(column: int) -> String","description":"Returns item's text language code.","returnType":"String"},{"name":"get_metadata","signature":"get_metadata(column: int) -> Variant","description":"Returns the metadata value that was set for the given column using [method set_metadata].","returnType":"Variant"},{"name":"get_next","signature":"get_next() -> TreeItem","description":"Returns the next sibling TreeItem in the tree or a null object if there is none.","returnType":"TreeItem"},{"name":"get_next_in_tree","signature":"get_next_in_tree(wrap: bool) -> TreeItem","description":"Returns the next TreeItem in the tree (in the context of a depth-first search) or a null object if there is none.\n\t\t\t\tIf [param wrap] is enabled, the method will wrap around to the first element in the tree when called on the last element, otherwise it returns null.","returnType":"TreeItem"},{"name":"get_next_visible","signature":"get_next_visible(wrap: bool) -> TreeItem","description":"Returns the next visible TreeItem in the tree (in the context of a depth-first search) or a null object if there is none.\n\t\t\t\tIf [param wrap] is enabled, the method will wrap around to the first visible element in the tree when called on the last visible element, otherwise it returns null.","returnType":"TreeItem"},{"name":"get_parent","signature":"get_parent() -> TreeItem","description":"Returns the parent TreeItem or a null object if there is none.","returnType":"TreeItem"},{"name":"get_prev","signature":"get_prev() -> TreeItem","description":"Returns the previous sibling TreeItem in the tree or a null object if there is none.","returnType":"TreeItem"},{"name":"get_prev_in_tree","signature":"get_prev_in_tree(wrap: bool) -> TreeItem","description":"Returns the previous TreeItem in the tree (in the context of a depth-first search) or a null object if there is none.\n\t\t\t\tIf [param wrap] is enabled, the method will wrap around to the last element in the tree when called on the first visible element, otherwise it returns null.","returnType":"TreeItem"},{"name":"get_prev_visible","signature":"get_prev_visible(wrap: bool) -> TreeItem","description":"Returns the previous visible sibling TreeItem in the tree (in the context of a depth-first search) or a null object if there is none.\n\t\t\t\tIf [param wrap] is enabled, the method will wrap around to the last visible element in the tree when called on the first visible element, otherwise it returns null.","returnType":"TreeItem"},{"name":"get_range","signature":"get_range(column: int) -> float","description":"Returns the value of a [constant CELL_MODE_RANGE] column.","returnType":"float"},{"name":"get_range_config","signature":"get_range_config(column: int) -> Dictionary","description":"Returns a dictionary containing the range parameters for a given column. The keys are \"min\", \"max\", \"step\", and \"expr\".","returnType":"Dictionary"},{"name":"get_structured_text_bidi_override","signature":"get_structured_text_bidi_override(column: int) -> int","description":"Returns the BiDi algorithm override set for this cell.","returnType":"int"},{"name":"get_structured_text_bidi_override_options","signature":"get_structured_text_bidi_override_options(column: int) -> Array","description":"Returns the additional BiDi options set for this cell.","returnType":"Array"},{"name":"get_suffix","signature":"get_suffix(column: int) -> String","description":"Gets the suffix string shown after the column value.","returnType":"String"},{"name":"get_text","signature":"get_text(column: int) -> String","description":"Returns the given column's text.","returnType":"String"},{"name":"get_text_alignment","signature":"get_text_alignment(column: int) -> int","description":"Returns the given column's text alignment.","returnType":"int"},{"name":"get_text_direction","signature":"get_text_direction(column: int) -> int","description":"Returns item's text base writing direction.","returnType":"int"},{"name":"get_text_overrun_behavior","signature":"get_text_overrun_behavior(column: int) -> int","description":"Returns the clipping behavior when the text exceeds the item's bounding rectangle in the given [param column]. By default it is [constant TextServer.OVERRUN_TRIM_ELLIPSIS].","returnType":"int"},{"name":"get_tooltip_text","signature":"get_tooltip_text(column: int) -> String","description":"Returns the given column's tooltip text.","returnType":"String"},{"name":"get_tree","signature":"get_tree() -> Tree","description":"Returns the  that owns this TreeItem.","returnType":"Tree"},{"name":"is_any_collapsed","signature":"is_any_collapsed(only_visible: bool) -> bool","description":"Returns true if this , or any of its descendants, is collapsed.\n\t\t\t\tIf [param only_visible] is true it ignores non-visible s.","returnType":"bool"},{"name":"is_button_disabled","signature":"is_button_disabled(column: int, button_index: int) -> bool","description":"Returns true if the button at index [param button_index] for the given [param column] is disabled.","returnType":"bool"},{"name":"is_checked","signature":"is_checked(column: int) -> bool","description":"Returns true if the given [param column] is checked.","returnType":"bool"},{"name":"is_custom_set_as_button","signature":"is_custom_set_as_button(column: int) -> bool","description":"Returns true if the cell was made into a button with [method set_custom_as_button].","returnType":"bool"},{"name":"is_edit_multiline","signature":"is_edit_multiline(column: int) -> bool","description":"Returns true if the given [param column] is multiline editable.","returnType":"bool"},{"name":"is_editable","signature":"is_editable(column: int) -> bool","description":"Returns true if the given [param column] is editable.","returnType":"bool"},{"name":"is_indeterminate","signature":"is_indeterminate(column: int) -> bool","description":"Returns true if the given [param column] is indeterminate.","returnType":"bool"},{"name":"is_selectable","signature":"is_selectable(column: int) -> bool","description":"Returns true if the given [param column] is selectable.","returnType":"bool"},{"name":"is_selected","signature":"is_selected(column: int) -> bool","description":"Returns true if the given [param column] is selected.","returnType":"bool"},{"name":"is_visible_in_tree","signature":"is_visible_in_tree() -> bool","description":"Returns true if [member visible] is true and all its ancestors are also visible.","returnType":"bool"},{"name":"move_after","signature":"move_after(item: TreeItem) -> void","description":"Moves this TreeItem right after the given [param item].\n\t\t\t\tNote: You can't move to the root or move the root.","returnType":"void"},{"name":"move_before","signature":"move_before(item: TreeItem) -> void","description":"Moves this TreeItem right before the given [param item].\n\t\t\t\tNote: You can't move to the root or move the root.","returnType":"void"},{"name":"propagate_check","signature":"propagate_check(column: int, emit_signal: bool) -> void","description":"Propagates this item's checked status to its children and parents for the given [param column]. It is possible to process the items affected by this method call by connecting to [signal Tree.check_propagated_to_item]. The order that the items affected will be processed is as follows: the item invoking this method, children of that item, and finally parents of that item. If [param emit_signal] is false, then [signal Tree.check_propagated_to_item] will not be emitted.","returnType":"void"},{"name":"remove_child","signature":"remove_child(child: TreeItem) -> void","description":"Removes the given child  and all its children from the . Note that it doesn't free the item from memory, so it can be reused later (see [method add_child]). To completely remove a  use [method Object.free].\n\t\t\t\tNote: If you want to move a child from one  to another, then instead of removing and adding it manually you can use [method move_before] or [method move_after].","returnType":"void"},{"name":"select","signature":"select(column: int) -> void","description":"Selects the given [param column].","returnType":"void"},{"name":"set_auto_translate_mode","signature":"set_auto_translate_mode(column: int, mode: int) -> void","description":"Sets the given column's auto translate mode to [param mode].\n\t\t\t\tAll columns use [constant Node.AUTO_TRANSLATE_MODE_INHERIT] by default, which uses the same auto translate mode as the  itself.","returnType":"void"},{"name":"set_autowrap_mode","signature":"set_autowrap_mode(column: int, autowrap_mode: int) -> void","description":"Sets the autowrap mode in the given [param column]. If set to something other than [constant TextServer.AUTOWRAP_OFF], the text gets wrapped inside the cell's bounding rectangle.","returnType":"void"},{"name":"set_button","signature":"set_button(column: int, button_index: int, button: Texture2D) -> void","description":"Sets the given column's button  at index [param button_index] to [param button].","returnType":"void"},{"name":"set_button_color","signature":"set_button_color(column: int, button_index: int, color: Color) -> void","description":"Sets the given column's button color at index [param button_index] to [param color].","returnType":"void"},{"name":"set_button_disabled","signature":"set_button_disabled(column: int, button_index: int, disabled: bool) -> void","description":"If true, disables the button at index [param button_index] in the given [param column].","returnType":"void"},{"name":"set_button_tooltip_text","signature":"set_button_tooltip_text(column: int, button_index: int, tooltip: String) -> void","description":"Sets the tooltip text for the button at index [param button_index] in the given [param column].","returnType":"void"},{"name":"set_cell_mode","signature":"set_cell_mode(column: int, mode: int) -> void","description":"Sets the given column's cell mode to [param mode]. This determines how the cell is displayed and edited. See [enum TreeCellMode] constants for details.","returnType":"void"},{"name":"set_checked","signature":"set_checked(column: int, checked: bool) -> void","description":"If [param checked] is true, the given [param column] is checked. Clears column's indeterminate status.","returnType":"void"},{"name":"set_collapsed_recursive","signature":"set_collapsed_recursive(enable: bool) -> void","description":"Collapses or uncollapses this  and all the descendants of this item.","returnType":"void"},{"name":"set_custom_as_button","signature":"set_custom_as_button(column: int, enable: bool) -> void","description":"Makes a cell with [constant CELL_MODE_CUSTOM] display as a non-flat button with a .","returnType":"void"},{"name":"set_custom_bg_color","signature":"set_custom_bg_color(column: int, color: Color, just_outline: bool) -> void","description":"Sets the given column's custom background color and whether to just use it as an outline.","returnType":"void"},{"name":"set_custom_color","signature":"set_custom_color(column: int, color: Color) -> void","description":"Sets the given column's custom color.","returnType":"void"},{"name":"set_custom_draw","signature":"set_custom_draw(column: int, object: Object, callback: StringName) -> void","description":"Sets the given column's custom draw callback to the [param callback] method on [param object].\n\t\t\t\tThe method named [param callback] should accept two arguments: the  that is drawn and its position and size as a .","returnType":"void"},{"name":"set_custom_draw_callback","signature":"set_custom_draw_callback(column: int, callback: Callable) -> void","description":"Sets the given column's custom draw callback. Use an empty  ([code skip-lint]Callable()) to clear the custom callback. The cell has to be in [constant CELL_MODE_CUSTOM] to use this feature.\n\t\t\t\tThe [param callback] should accept two arguments: the  that is drawn and its position and size as a .","returnType":"void"},{"name":"set_custom_font","signature":"set_custom_font(column: int, font: Font) -> void","description":"Sets custom font used to draw text in the given [param column].","returnType":"void"},{"name":"set_custom_font_size","signature":"set_custom_font_size(column: int, font_size: int) -> void","description":"Sets custom font size used to draw text in the given [param column].","returnType":"void"},{"name":"set_edit_multiline","signature":"set_edit_multiline(column: int, multiline: bool) -> void","description":"If [param multiline] is true, the given [param column] is multiline editable.\n\t\t\t\tNote: This option only affects the type of control ( or ) that appears when editing the column. You can set multiline values with [method set_text] even if the column is not multiline editable.","returnType":"void"},{"name":"set_editable","signature":"set_editable(column: int, enabled: bool) -> void","description":"If [param enabled] is true, the given [param column] is editable.","returnType":"void"},{"name":"set_expand_right","signature":"set_expand_right(column: int, enable: bool) -> void","description":"If [param enable] is true, the given [param column] is expanded to the right.","returnType":"void"},{"name":"set_icon","signature":"set_icon(column: int, texture: Texture2D) -> void","description":"Sets the given cell's icon . If the cell is in [constant CELL_MODE_ICON] mode, the icon is displayed in the center of the cell. Otherwise, the icon is displayed before the cell's text. [constant CELL_MODE_RANGE] does not display an icon.","returnType":"void"},{"name":"set_icon_max_width","signature":"set_icon_max_width(column: int, width: int) -> void","description":"Sets the maximum allowed width of the icon in the given [param column]. This limit is applied on top of the default size of the icon and on top of [theme_item Tree.icon_max_width]. The height is adjusted according to the icon's ratio.","returnType":"void"},{"name":"set_icon_modulate","signature":"set_icon_modulate(column: int, modulate: Color) -> void","description":"Modulates the given column's icon with [param modulate].","returnType":"void"},{"name":"set_icon_overlay","signature":"set_icon_overlay(column: int, texture: Texture2D) -> void","description":"Sets the given cell's icon overlay . The cell has to be in [constant CELL_MODE_ICON] mode, and icon has to be set. Overlay is drawn on top of icon, in the bottom left corner.","returnType":"void"},{"name":"set_icon_region","signature":"set_icon_region(column: int, region: Rect2) -> void","description":"Sets the given column's icon's texture region.","returnType":"void"},{"name":"set_indeterminate","signature":"set_indeterminate(column: int, indeterminate: bool) -> void","description":"If [param indeterminate] is true, the given [param column] is marked indeterminate.\n\t\t\t\tNote: If set true from false, then column is cleared of checked status.","returnType":"void"},{"name":"set_language","signature":"set_language(column: int, language: String) -> void","description":"Sets language code of item's text used for line-breaking and text shaping algorithms, if left empty current locale is used instead.","returnType":"void"},{"name":"set_metadata","signature":"set_metadata(column: int, meta: Variant) -> void","description":"Sets the metadata value for the given column, which can be retrieved later using [method get_metadata]. This can be used, for example, to store a reference to the original data.","returnType":"void"},{"name":"set_range","signature":"set_range(column: int, value: float) -> void","description":"Sets the value of a [constant CELL_MODE_RANGE] column.","returnType":"void"},{"name":"set_range_config","signature":"set_range_config(column: int, min: float, max: float, step: float, expr: bool) -> void","description":"Sets the range of accepted values for a column. The column must be in the [constant CELL_MODE_RANGE] mode.\n\t\t\t\tIf [param expr] is true, the edit mode slider will use an exponential scale as with [member Range.exp_edit].","returnType":"void"},{"name":"set_selectable","signature":"set_selectable(column: int, selectable: bool) -> void","description":"If [param selectable] is true, the given [param column] is selectable.","returnType":"void"},{"name":"set_structured_text_bidi_override","signature":"set_structured_text_bidi_override(column: int, parser: int) -> void","description":"Set BiDi algorithm override for the structured text. Has effect for cells that display text.","returnType":"void"},{"name":"set_structured_text_bidi_override_options","signature":"set_structured_text_bidi_override_options(column: int, args: Array) -> void","description":"Set additional options for BiDi override. Has effect for cells that display text.","returnType":"void"},{"name":"set_suffix","signature":"set_suffix(column: int, text: String) -> void","description":"Sets a string to be shown after a column's value (for example, a unit abbreviation).","returnType":"void"},{"name":"set_text","signature":"set_text(column: int, text: String) -> void","description":"Sets the given column's text value.","returnType":"void"},{"name":"set_text_alignment","signature":"set_text_alignment(column: int, text_alignment: int) -> void","description":"Sets the given column's text alignment. See [enum HorizontalAlignment] for possible values.","returnType":"void"},{"name":"set_text_direction","signature":"set_text_direction(column: int, direction: int) -> void","description":"Sets item's text base writing direction.","returnType":"void"},{"name":"set_text_overrun_behavior","signature":"set_text_overrun_behavior(column: int, overrun_behavior: int) -> void","description":"Sets the clipping behavior when the text exceeds the item's bounding rectangle in the given [param column].","returnType":"void"},{"name":"set_tooltip_text","signature":"set_tooltip_text(column: int, tooltip: String) -> void","description":"Sets the given column's tooltip text.","returnType":"void"},{"name":"uncollapse_tree","signature":"uncollapse_tree() -> void","description":"Uncollapses all s necessary to reveal this , i.e. all ancestor s.","returnType":"void"}],"signals":[]},"TriangleMesh":{"name":"TriangleMesh","description":"Internal mesh type.","inherits":"RefCounted","properties":[],"methods":[],"signals":[]},"TubeTrailMesh":{"name":"TubeTrailMesh","description":"Represents a straight tube-shaped  with variable width.","inherits":"PrimitiveMesh","properties":[{"name":"cap_bottom","type":"bool","description":"If [code]true[/code], generates a cap at the bottom of the tube. This can be set to [code]false[/code] to speed up generation and rendering when the cap is never seen by the camera."},{"name":"cap_top","type":"bool","description":"If [code]true[/code], generates a cap at the top of the tube. This can be set to [code]false[/code] to speed up generation and rendering when the cap is never seen by the camera."},{"name":"curve","type":"Curve","description":"Determines the radius of the tube along its length. The radius of a particular section ring is obtained by multiplying the baseline [member radius] by the value of this curve at the given distance. For values smaller than [code]0[/code], the faces will be inverted. Should be a unit [Curve]."},{"name":"radial_steps","type":"int","description":"The number of sides on the tube. For example, a value of [code]5[/code] means the tube will be pentagonal. Higher values result in a more detailed tube at the cost of performance."},{"name":"radius","type":"float","description":"The baseline radius of the tube. The radius of a particular section ring is obtained by multiplying this radius by the value of the [member curve] at the given distance."},{"name":"section_length","type":"float","description":"The length of a section of the tube."},{"name":"section_rings","type":"int","description":"The number of rings in a section. The [member curve] is sampled on each ring to determine its radius. Higher values result in a more detailed tube at the cost of performance."},{"name":"sections","type":"int","description":"The total number of sections on the tube."}],"methods":[],"signals":[]},"Tween":{"name":"Tween","description":"Lightweight object used for general-purpose animation via script, using s.","inherits":"RefCounted","properties":[],"methods":[{"name":"bind_node","signature":"bind_node(node: Node) -> Tween","description":"Binds this  with the given [param node]. s are processed directly by the , so they run independently of the animated nodes. When you bind a  with the , the  will halt the animation when the object is not inside tree and the  will be automatically killed when the bound object is freed. Also [constant TWEEN_PAUSE_BOUND] will make the pausing behavior dependent on the bound node.\n\t\t\t\tFor a shorter way to create and bind a , you can use [method Node.create_tween].","returnType":"Tween"},{"name":"chain","signature":"chain() -> Tween","description":"Used to chain two s after [method set_parallel] is called with true.\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tvar tween = create_tween().set_parallel(true)\n\t\t\t\ttween.tween_property(...)\n\t\t\t\ttween.tween_property(...) # Will run parallelly with above.\n\t\t\t\ttween.chain().tween_property(...) # Will run after two above are finished.\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tTween tween = CreateTween().SetParallel(true);\n\t\t\t\ttween.TweenProperty(...);\n\t\t\t\ttween.TweenProperty(...); // Will run parallelly with above.\n\t\t\t\ttween.Chain().TweenProperty(...); // Will run after two above are finished.\n\t\t\t\t\n\t\t\t\t","returnType":"Tween"},{"name":"custom_step","signature":"custom_step(delta: float) -> bool","description":"Processes the  by the given [param delta] value, in seconds. This is mostly useful for manual control when the  is paused. It can also be used to end the  animation immediately, by setting [param delta] longer than the whole duration of the  animation.\n\t\t\t\tReturns true if the  still has s that haven't finished.","returnType":"bool"},{"name":"get_loops_left","signature":"get_loops_left() -> int","description":"Returns the number of remaining loops for this  (see [method set_loops]). A return value of -1 indicates an infinitely looping , and a return value of 0 indicates that the  has already finished.","returnType":"int"},{"name":"get_total_elapsed_time","signature":"get_total_elapsed_time() -> float","description":"Returns the total time in seconds the  has been animating (i.e. the time since it started, not counting pauses etc.). The time is affected by [method set_speed_scale], and [method stop] will reset it to 0.\n\t\t\t\tNote: As it results from accumulating frame deltas, the time returned after the  has finished animating will be slightly greater than the actual  duration.","returnType":"float"},{"name":"interpolate_value","signature":"interpolate_value(initial_value: Variant, delta_value: Variant, elapsed_time: float, duration: float, trans_type: int, ease_type: int) -> Variant","description":"This method can be used for manual interpolation of a value, when you don't want  to do animating for you. It's similar to [method @GlobalScope.lerp], but with support for custom transition and easing.\n\t\t\t\t[param initial_value] is the starting value of the interpolation.\n\t\t\t\t[param delta_value] is the change of the value in the interpolation, i.e. it's equal to final_value - initial_value.\n\t\t\t\t[param elapsed_time] is the time in seconds that passed after the interpolation started and it's used to control the position of the interpolation. E.g. when it's equal to half of the [param duration], the interpolated value will be halfway between initial and final values. This value can also be greater than [param duration] or lower than 0, which will extrapolate the value.\n\t\t\t\t[param duration] is the total time of the interpolation.\n\t\t\t\tNote: If [param duration] is equal to 0, the method will always return the final value, regardless of [param elapsed_time] provided.","returnType":"Variant"},{"name":"is_running","signature":"is_running() -> bool","description":"Returns whether the  is currently running, i.e. it wasn't paused and it's not finished.","returnType":"bool"},{"name":"is_valid","signature":"is_valid() -> bool","description":"Returns whether the  is valid. A valid  is a  contained by the scene tree (i.e. the array from [method SceneTree.get_processed_tweens] will contain this ). A  might become invalid when it has finished tweening, is killed, or when created with Tween.new(). Invalid s can't have s appended.","returnType":"bool"},{"name":"kill","signature":"kill() -> void","description":"Aborts all tweening operations and invalidates the .","returnType":"void"},{"name":"parallel","signature":"parallel() -> Tween","description":"Makes the next  run parallelly to the previous one.\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tvar tween = create_tween()\n\t\t\t\ttween.tween_property(...)\n\t\t\t\ttween.parallel().tween_property(...)\n\t\t\t\ttween.parallel().tween_property(...)\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tTween tween = CreateTween();\n\t\t\t\ttween.TweenProperty(...);\n\t\t\t\ttween.Parallel().TweenProperty(...);\n\t\t\t\ttween.Parallel().TweenProperty(...);\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tAll s in the example will run at the same time.\n\t\t\t\tYou can make the  parallel by default by using [method set_parallel].","returnType":"Tween"},{"name":"pause","signature":"pause() -> void","description":"Pauses the tweening. The animation can be resumed by using [method play].\n\t\t\t\tNote: If a Tween is paused and not bound to any node, it will exist indefinitely until manually started or invalidated. If you lose a reference to such Tween, you can retrieve it using [method SceneTree.get_processed_tweens].","returnType":"void"},{"name":"play","signature":"play() -> void","description":"Resumes a paused or stopped .","returnType":"void"},{"name":"set_ease","signature":"set_ease(ease: int) -> Tween","description":"Sets the default ease type for s and s appended after this method.\n\t\t\t\tBefore this method is called, the default ease type is [constant EASE_IN_OUT].\n\t\t\t\t\n\t\t\t\tvar tween = create_tween()\n\t\t\t\ttween.tween_property(self, \"position\", Vector2(300, 0), 0.5) # Uses EASE_IN_OUT.\n\t\t\t\ttween.set_ease(Tween.EASE_IN)\n\t\t\t\ttween.tween_property(self, \"rotation_degrees\", 45.0, 0.5) # Uses EASE_IN.\n\t\t\t\t","returnType":"Tween"},{"name":"set_ignore_time_scale","signature":"set_ignore_time_scale(ignore: bool) -> Tween","description":"If [param ignore] is true, the tween will ignore [member Engine.time_scale] and update with the real, elapsed time. This affects all s and their delays. Default value is false.","returnType":"Tween"},{"name":"set_loops","signature":"set_loops(loops: int) -> Tween","description":"Sets the number of times the tweening sequence will be repeated, i.e. set_loops(2) will run the animation twice.\n\t\t\t\tCalling this method without arguments will make the  run infinitely, until either it is killed with [method kill], the 's bound node is freed, or all the animated objects have been freed (which makes further animation impossible).\n\t\t\t\tWarning: Make sure to always add some duration/delay when using infinite loops. To prevent the game freezing, 0-duration looped animations (e.g. a single  with no delay) are stopped after a small number of loops, which may produce unexpected results. If a 's lifetime depends on some node, always use [method bind_node].","returnType":"Tween"},{"name":"set_parallel","signature":"set_parallel(parallel: bool) -> Tween","description":"If [param parallel] is true, the s appended after this method will by default run simultaneously, as opposed to sequentially.\n\t\t\t\tNote: Just like with [method parallel], the tweener added right before this method will also be part of the parallel step.\n\t\t\t\t\n\t\t\t\ttween.tween_property(self, \"position\", Vector2(300, 0), 0.5)\n\t\t\t\ttween.set_parallel()\n\t\t\t\ttween.tween_property(self, \"modulate\", Color.GREEN, 0.5) # Runs together with the position tweener.\n\t\t\t\t","returnType":"Tween"},{"name":"set_pause_mode","signature":"set_pause_mode(mode: int) -> Tween","description":"Determines the behavior of the  when the  is paused. Check [enum TweenPauseMode] for options.\n\t\t\t\tDefault value is [constant TWEEN_PAUSE_BOUND].","returnType":"Tween"},{"name":"set_process_mode","signature":"set_process_mode(mode: int) -> Tween","description":"Determines whether the  should run after process frames (see [method Node._process]) or physics frames (see [method Node._physics_process]).\n\t\t\t\tDefault value is [constant TWEEN_PROCESS_IDLE].","returnType":"Tween"},{"name":"set_speed_scale","signature":"set_speed_scale(speed: float) -> Tween","description":"Scales the speed of tweening. This affects all s and their delays.","returnType":"Tween"},{"name":"set_trans","signature":"set_trans(trans: int) -> Tween","description":"Sets the default transition type for s and s appended after this method.\n\t\t\t\tBefore this method is called, the default transition type is [constant TRANS_LINEAR].\n\t\t\t\t\n\t\t\t\tvar tween = create_tween()\n\t\t\t\ttween.tween_property(self, \"position\", Vector2(300, 0), 0.5) # Uses TRANS_LINEAR.\n\t\t\t\ttween.set_trans(Tween.TRANS_SINE)\n\t\t\t\ttween.tween_property(self, \"rotation_degrees\", 45.0, 0.5) # Uses TRANS_SINE.\n\t\t\t\t","returnType":"Tween"},{"name":"stop","signature":"stop() -> void","description":"Stops the tweening and resets the  to its initial state. This will not remove any appended s.\n\t\t\t\tNote: This does not reset targets of s to their values when the  first started.\n\t\t\t\t\n\t\t\t\tvar tween = create_tween()\n\n\t\t\t\t# Will move from 0 to 500 over 1 second.\n\t\t\t\tposition.x = 0.0\n\t\t\t\ttween.tween_property(self, \"position:x\", 500, 1.0)\n\n\t\t\t\t# Will be at (about) 250 when the timer finishes.\n\t\t\t\tawait get_tree().create_timer(0.5).timeout\n\n\t\t\t\t# Will now move from (about) 250 to 500 over 1 second,\n\t\t\t\t# thus at half the speed as before.\n\t\t\t\ttween.stop()\n\t\t\t\ttween.play()\n\t\t\t\t\n\t\t\t\tNote: If a Tween is stopped and not bound to any node, it will exist indefinitely until manually started or invalidated. If you lose a reference to such Tween, you can retrieve it using [method SceneTree.get_processed_tweens].","returnType":"void"},{"name":"tween_callback","signature":"tween_callback(callback: Callable) -> CallbackTweener","description":"Creates and appends a . This method can be used to call an arbitrary method in any object. Use [method Callable.bind] to bind additional arguments for the call.\n\t\t\t\tExample: Object that keeps shooting every 1 second:\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tvar tween = get_tree().create_tween().set_loops()\n\t\t\t\ttween.tween_callback(shoot).set_delay(1)\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tTween tween = GetTree().CreateTween().SetLoops();\n\t\t\t\ttween.TweenCallback(Callable.From(Shoot)).SetDelay(1.0f);\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tExample: Turning a sprite red and then blue, with 2 second delay:\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tvar tween = get_tree().create_tween()\n\t\t\t\ttween.tween_callback($Sprite.set_modulate.bind(Color.RED)).set_delay(2)\n\t\t\t\ttween.tween_callback($Sprite.set_modulate.bind(Color.BLUE)).set_delay(2)\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tTween tween = GetTree().CreateTween();\n\t\t\t\tSprite2D sprite = GetNode&lt;Sprite2D&gt;(\"Sprite\");\n\t\t\t\ttween.TweenCallback(Callable.From(() =&gt; sprite.Modulate = Colors.Red)).SetDelay(2.0f);\n\t\t\t\ttween.TweenCallback(Callable.From(() =&gt; sprite.Modulate = Colors.Blue)).SetDelay(2.0f);\n\t\t\t\t\n\t\t\t\t","returnType":"CallbackTweener"},{"name":"tween_interval","signature":"tween_interval(time: float) -> IntervalTweener","description":"Creates and appends an . This method can be used to create delays in the tween animation, as an alternative to using the delay in other s, or when there's no animation (in which case the  acts as a timer). [param time] is the length of the interval, in seconds.\n\t\t\t\tExample: Creating an interval in code execution:\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t# ... some code\n\t\t\t\tawait create_tween().tween_interval(2).finished\n\t\t\t\t# ... more code\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t// ... some code\n\t\t\t\tawait ToSignal(CreateTween().TweenInterval(2.0f), Tween.SignalName.Finished);\n\t\t\t\t// ... more code\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tExample: Creating an object that moves back and forth and jumps every few seconds:\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tvar tween = create_tween().set_loops()\n\t\t\t\ttween.tween_property($Sprite, \"position:x\", 200.0, 1).as_relative()\n\t\t\t\ttween.tween_callback(jump)\n\t\t\t\ttween.tween_interval(2)\n\t\t\t\ttween.tween_property($Sprite, \"position:x\", -200.0, 1).as_relative()\n\t\t\t\ttween.tween_callback(jump)\n\t\t\t\ttween.tween_interval(2)\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tTween tween = CreateTween().SetLoops();\n\t\t\t\ttween.TweenProperty(GetNode(\"Sprite\"), \"position:x\", 200.0f, 1.0f).AsRelative();\n\t\t\t\ttween.TweenCallback(Callable.From(Jump));\n\t\t\t\ttween.TweenInterval(2.0f);\n\t\t\t\ttween.TweenProperty(GetNode(\"Sprite\"), \"position:x\", -200.0f, 1.0f).AsRelative();\n\t\t\t\ttween.TweenCallback(Callable.From(Jump));\n\t\t\t\ttween.TweenInterval(2.0f);\n\t\t\t\t\n\t\t\t\t","returnType":"IntervalTweener"},{"name":"tween_method","signature":"tween_method(method: Callable, from: Variant, to: Variant, duration: float) -> MethodTweener","description":"Creates and appends a . This method is similar to a combination of [method tween_callback] and [method tween_property]. It calls a method over time with a tweened value provided as an argument. The value is tweened between [param from] and [param to] over the time specified by [param duration], in seconds. Use [method Callable.bind] to bind additional arguments for the call. You can use [method MethodTweener.set_ease] and [method MethodTweener.set_trans] to tweak the easing and transition of the value or [method MethodTweener.set_delay] to delay the tweening.\n\t\t\t\tExample: Making a 3D object look from one point to another point:\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tvar tween = create_tween()\n\t\t\t\ttween.tween_method(look_at.bind(Vector3.UP), Vector3(-1, 0, -1), Vector3(1, 0, -1), 1) # The look_at() method takes up vector as second argument.\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tTween tween = CreateTween();\n\t\t\t\ttween.TweenMethod(Callable.From((Vector3 target) =&gt; LookAt(target, Vector3.Up)), new Vector3(-1.0f, 0.0f, -1.0f), new Vector3(1.0f, 0.0f, -1.0f), 1.0f); // Use lambdas to bind additional arguments for the call.\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tExample: Setting the text of a , using an intermediate method and after a delay:\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tfunc _ready():\n\t\t\t\t    var tween = create_tween()\n\t\t\t\t    tween.tween_method(set_label_text, 0, 10, 1).set_delay(1)\n\n\t\t\t\tfunc set_label_text(value: int):\n\t\t\t\t    $Label.text = \"Counting \" + str(value)\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tpublic override void _Ready()\n\t\t\t\t{\n\t\t\t\t    base._Ready();\n\n\t\t\t\t    Tween tween = CreateTween();\n\t\t\t\t    tween.TweenMethod(Callable.From&lt;int&gt;(SetLabelText), 0.0f, 10.0f, 1.0f).SetDelay(1.0f);\n\t\t\t\t}\n\n\t\t\t\tprivate void SetLabelText(int value)\n\t\t\t\t{\n\t\t\t\t    GetNode&lt;Label&gt;(\"Label\").Text = $\"Counting {value}\";\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t","returnType":"MethodTweener"},{"name":"tween_property","signature":"tween_property(object: Object, property: NodePath, final_val: Variant, duration: float) -> PropertyTweener","description":"Creates and appends a . This method tweens a [param property] of an [param object] between an initial value and [param final_val] in a span of time equal to [param duration], in seconds. The initial value by default is the property's value at the time the tweening of the  starts.\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tvar tween = create_tween()\n\t\t\t\ttween.tween_property($Sprite, \"position\", Vector2(100, 200), 1)\n\t\t\t\ttween.tween_property($Sprite, \"position\", Vector2(200, 300), 1)\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tTween tween = CreateTween();\n\t\t\t\ttween.TweenProperty(GetNode(\"Sprite\"), \"position\", new Vector2(100.0f, 200.0f), 1.0f);\n\t\t\t\ttween.TweenProperty(GetNode(\"Sprite\"), \"position\", new Vector2(200.0f, 300.0f), 1.0f);\n\t\t\t\t\n\t\t\t\t\n\t\t\t\twill move the sprite to position (100, 200) and then to (200, 300). If you use [method PropertyTweener.from] or [method PropertyTweener.from_current], the starting position will be overwritten by the given value instead. See other methods in  to see how the tweening can be tweaked further.\n\t\t\t\tNote: You can find the correct property name by hovering over the property in the Inspector. You can also provide the components of a property directly by using \"property:component\" (eg. position:x), where it would only apply to that particular component.\n\t\t\t\tExample: Moving an object twice from the same position, with different transition types:\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tvar tween = create_tween()\n\t\t\t\ttween.tween_property($Sprite, \"position\", Vector2.RIGHT * 300, 1).as_relative().set_trans(Tween.TRANS_SINE)\n\t\t\t\ttween.tween_property($Sprite, \"position\", Vector2.RIGHT * 300, 1).as_relative().from_current().set_trans(Tween.TRANS_EXPO)\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tTween tween = CreateTween();\n\t\t\t\ttween.TweenProperty(GetNode(\"Sprite\"), \"position\", Vector2.Right * 300.0f, 1.0f).AsRelative().SetTrans(Tween.TransitionType.Sine);\n\t\t\t\ttween.TweenProperty(GetNode(\"Sprite\"), \"position\", Vector2.Right * 300.0f, 1.0f).AsRelative().FromCurrent().SetTrans(Tween.TransitionType.Expo);\n\t\t\t\t\n\t\t\t\t","returnType":"PropertyTweener"},{"name":"tween_subtween","signature":"tween_subtween(subtween: Tween) -> SubtweenTweener","description":"Creates and appends a . This method can be used to nest [param subtween] within this , allowing for the creation of more complex and composable sequences.\n\t\t\t\t\n\t\t\t\t# Subtween will rotate the object.\n\t\t\t\tvar subtween = create_tween()\n\t\t\t\tsubtween.tween_property(self, \"rotation_degrees\", 45.0, 1.0)\n\t\t\t\tsubtween.tween_property(self, \"rotation_degrees\", 0.0, 1.0)\n\n\t\t\t\t# Parent tween will execute the subtween as one of its steps.\n\t\t\t\tvar tween = create_tween()\n\t\t\t\ttween.tween_property(self, \"position:x\", 500, 3.0)\n\t\t\t\ttween.tween_subtween(subtween)\n\t\t\t\ttween.tween_property(self, \"position:x\", 300, 2.0)\n\t\t\t\t\n\t\t\t\tNote: The methods [method pause], [method stop], and [method set_loops] can cause the parent  to get stuck on the subtween step; see the documentation for those methods for more information.\n\t\t\t\tNote: The pause and process modes set by [method set_pause_mode] and [method set_process_mode] on [param subtween] will be overridden by the parent 's settings.","returnType":"SubtweenTweener"}],"signals":[{"name":"finished","description":"Emitted when the [Tween] has finished all tweening. Never emitted when the [Tween] is set to infinite looping (see [method set_loops])."},{"name":"loop_finished","description":"Emitted when a full loop is complete (see [method set_loops]), providing the loop index. This signal is not emitted after the final loop, use [signal finished] instead for this case."},{"name":"step_finished","description":"Emitted when one step of the [Tween] is complete, providing the step index. One step is either a single [Tweener] or a group of [Tweener]s running in parallel."}]},"Tweener":{"name":"Tweener","description":"Abstract class for all Tweeners used by .","inherits":"RefCounted","properties":[],"methods":[],"signals":[{"name":"finished","description":"Emitted when the [Tweener] has just finished its job or became invalid (e.g. due to a freed object)."}]},"UDPServer":{"name":"UDPServer","description":"Helper class to implement a UDP server.","inherits":"RefCounted","properties":[{"name":"max_pending_connections","type":"int","description":"Define the maximum number of pending connections, during [method poll], any new pending connection exceeding that value will be automatically dropped. Setting this value to [code]0[/code] effectively prevents any new pending connection to be accepted (e.g. when all your players have connected)."}],"methods":[{"name":"get_local_port","signature":"get_local_port() -> int","description":"Returns the local port this server is listening to.","returnType":"int"},{"name":"is_connection_available","signature":"is_connection_available() -> bool","description":"Returns true if a packet with a new address/port combination was received on the socket.","returnType":"bool"},{"name":"is_listening","signature":"is_listening() -> bool","description":"Returns true if the socket is open and listening on a port.","returnType":"bool"},{"name":"listen","signature":"listen(port: int, bind_address: String) -> int","description":"Starts the server by opening a UDP socket listening on the given [param port]. You can optionally specify a [param bind_address] to only listen for packets sent to that address. See also [method PacketPeerUDP.bind].","returnType":"int"},{"name":"poll","signature":"poll() -> int","description":"Call this method at regular intervals (e.g. inside [method Node._process]) to process new packets. And packet from known address/port pair will be delivered to the appropriate , any packet received from an unknown address/port pair will be added as a pending connection (see [method is_connection_available], [method take_connection]). The maximum number of pending connection is defined via [member max_pending_connections].","returnType":"int"},{"name":"stop","signature":"stop() -> void","description":"Stops the server, closing the UDP socket if open. Will close all connected  accepted via [method take_connection] (remote peers will not be notified).","returnType":"void"},{"name":"take_connection","signature":"take_connection() -> PacketPeerUDP","description":"Returns the first pending connection (connected to the appropriate address/port). Will return null if no new connection is available. See also [method is_connection_available], [method PacketPeerUDP.connect_to_host].","returnType":"PacketPeerUDP"}],"signals":[]},"UndoRedo":{"name":"UndoRedo","description":"Provides a high-level interface for implementing undo and redo operations.","inherits":"Object","properties":[{"name":"max_steps","type":"int","description":"The maximum number of steps that can be stored in the undo/redo history. If the number of stored steps exceeds this limit, older steps are removed from history and can no longer be reached by calling [method undo]. A value of [code]0[/code] or lower means no limit."}],"methods":[{"name":"add_do_method","signature":"add_do_method(callable: Callable) -> void","description":"Register a  that will be called when the action is committed.","returnType":"void"},{"name":"add_do_property","signature":"add_do_property(object: Object, property: StringName, value: Variant) -> void","description":"Register a [param property] that would change its value to [param value] when the action is committed.","returnType":"void"},{"name":"add_do_reference","signature":"add_do_reference(object: Object) -> void","description":"Register a reference to an object that will be erased if the \"do\" history is deleted. This is useful for objects added by the \"do\" action and removed by the \"undo\" action.\n\t\t\t\tWhen the \"do\" history is deleted, if the object is a , it will be unreferenced. Otherwise, it will be freed. Do not use for resources.\n\t\t\t\t\n\t\t\t\tvar node = Node2D.new()\n\t\t\t\tundo_redo.create_action(\"Add node\")\n\t\t\t\tundo_redo.add_do_method(add_child.bind(node))\n\t\t\t\tundo_redo.add_do_reference(node)\n\t\t\t\tundo_redo.add_undo_method(remove_child.bind(node))\n\t\t\t\tundo_redo.commit_action()\n\t\t\t\t","returnType":"void"},{"name":"add_undo_method","signature":"add_undo_method(callable: Callable) -> void","description":"Register a  that will be called when the action is undone.","returnType":"void"},{"name":"add_undo_property","signature":"add_undo_property(object: Object, property: StringName, value: Variant) -> void","description":"Register a [param property] that would change its value to [param value] when the action is undone.","returnType":"void"},{"name":"add_undo_reference","signature":"add_undo_reference(object: Object) -> void","description":"Register a reference to an object that will be erased if the \"undo\" history is deleted. This is useful for objects added by the \"undo\" action and removed by the \"do\" action.\n\t\t\t\tWhen the \"undo\" history is deleted, if the object is a , it will be unreferenced. Otherwise, it will be freed. Do not use for resources.\n\t\t\t\t\n\t\t\t\tvar node = $Node2D\n\t\t\t\tundo_redo.create_action(\"Remove node\")\n\t\t\t\tundo_redo.add_do_method(remove_child.bind(node))\n\t\t\t\tundo_redo.add_undo_method(add_child.bind(node))\n\t\t\t\tundo_redo.add_undo_reference(node)\n\t\t\t\tundo_redo.commit_action()\n\t\t\t\t","returnType":"void"},{"name":"clear_history","signature":"clear_history(increase_version: bool) -> void","description":"Clear the undo/redo history and associated references.\n\t\t\t\tPassing false to [param increase_version] will prevent the version number from increasing when the history is cleared.","returnType":"void"},{"name":"commit_action","signature":"commit_action(execute: bool) -> void","description":"Commit the action. If [param execute] is true (which it is by default), all \"do\" methods/properties are called/set when this function is called.","returnType":"void"},{"name":"create_action","signature":"create_action(name: String, merge_mode: int, backward_undo_ops: bool) -> void","description":"Create a new action. After this is called, do all your calls to [method add_do_method], [method add_undo_method], [method add_do_property], and [method add_undo_property], then commit the action with [method commit_action].\n\t\t\t\tThe way actions are merged is dictated by [param merge_mode]. See [enum MergeMode] for details.\n\t\t\t\tThe way undo operation are ordered in actions is dictated by [param backward_undo_ops]. When [param backward_undo_ops] is false undo option are ordered in the same order they were added. Which means the first operation to be added will be the first to be undone.","returnType":"void"},{"name":"end_force_keep_in_merge_ends","signature":"end_force_keep_in_merge_ends() -> void","description":"Stops marking operations as to be processed even if the action gets merged with another in the [constant MERGE_ENDS] mode. See [method start_force_keep_in_merge_ends].","returnType":"void"},{"name":"get_action_name","signature":"get_action_name(id: int) -> String","description":"Gets the action name from its index.","returnType":"String"},{"name":"get_current_action","signature":"get_current_action() -> int","description":"Gets the index of the current action.","returnType":"int"},{"name":"get_current_action_name","signature":"get_current_action_name() -> String","description":"Gets the name of the current action, equivalent to get_action_name(get_current_action()).","returnType":"String"},{"name":"get_history_count","signature":"get_history_count() -> int","description":"Returns how many elements are in the history.","returnType":"int"},{"name":"get_version","signature":"get_version() -> int","description":"Gets the version. Every time a new action is committed, the 's version number is increased automatically.\n\t\t\t\tThis is useful mostly to check if something changed from a saved version.","returnType":"int"},{"name":"has_redo","signature":"has_redo() -> bool","description":"Returns true if a \"redo\" action is available.","returnType":"bool"},{"name":"has_undo","signature":"has_undo() -> bool","description":"Returns true if an \"undo\" action is available.","returnType":"bool"},{"name":"is_committing_action","signature":"is_committing_action() -> bool","description":"Returns true if the  is currently committing the action, i.e. running its \"do\" method or property change (see [method commit_action]).","returnType":"bool"},{"name":"redo","signature":"redo() -> bool","description":"Redo the last action.","returnType":"bool"},{"name":"start_force_keep_in_merge_ends","signature":"start_force_keep_in_merge_ends() -> void","description":"Marks the next \"do\" and \"undo\" operations to be processed even if the action gets merged with another in the [constant MERGE_ENDS] mode. Return to normal operation using [method end_force_keep_in_merge_ends].","returnType":"void"},{"name":"undo","signature":"undo() -> bool","description":"Undo the last action.","returnType":"bool"}],"signals":[{"name":"version_changed","description":"Called when [method undo] or [method redo] was called."}]},"UniformSetCacheRD":{"name":"UniformSetCacheRD","description":"Uniform set cache manager for Rendering Device based renderers.","inherits":"Object","properties":[],"methods":[{"name":"get_cache","signature":"get_cache(shader: RID, set: int, uniforms: RDUniform[]) -> RID","description":"Creates/returns a cached uniform set based on the provided uniforms for a given shader.","returnType":"RID"}],"signals":[]},"VBoxContainer":{"name":"VBoxContainer","description":"A container that arranges its child controls vertically.","inherits":"BoxContainer","properties":[],"methods":[],"signals":[]},"VFlowContainer":{"name":"VFlowContainer","description":"A container that arranges its child controls vertically and wraps them around at the borders.","inherits":"FlowContainer","properties":[],"methods":[],"signals":[]},"VScrollBar":{"name":"VScrollBar","description":"A vertical scrollbar that goes from top (min) to bottom (max).","inherits":"ScrollBar","properties":[],"methods":[],"signals":[]},"VSeparator":{"name":"VSeparator","description":"A vertical line used for separating other controls.","inherits":"Separator","properties":[],"methods":[],"signals":[]},"VSlider":{"name":"VSlider","description":"A vertical slider that goes from bottom (min) to top (max).","inherits":"Slider","properties":[],"methods":[],"signals":[]},"VSplitContainer":{"name":"VSplitContainer","description":"A container that splits two child controls vertically and provides a grabber for adjusting the split ratio.","inherits":"SplitContainer","properties":[],"methods":[],"signals":[]},"Variant":{"name":"Variant","description":"The most important data type in Godot.","inherits":"","properties":[],"methods":[],"signals":[]},"Vector2":{"name":"Vector2","description":"A 2D vector using floating-point coordinates.","inherits":"","properties":[{"name":"x","type":"float","description":"The vector's X component. Also accessible by using the index position [code][0][/code]."},{"name":"y","type":"float","description":"The vector's Y component. Also accessible by using the index position [code][1][/code]."}],"methods":[{"name":"abs","signature":"abs() -> Vector2","description":"Returns a new vector with all components in absolute values (i.e. positive).","returnType":"Vector2"},{"name":"angle","signature":"angle() -> float","description":"Returns this vector's angle with respect to the positive X axis, or (1, 0) vector, in radians.\n\t\t\t\tFor example, Vector2.RIGHT.angle() will return zero, Vector2.DOWN.angle() will return PI / 2 (a quarter turn, or 90 degrees), and Vector2(1, -1).angle() will return -PI / 4 (a negative eighth turn, or -45 degrees).\n\t\t\t\t[url=https://raw.githubusercontent.com/godotengine/godot-docs/master/img/vector2_angle.png]Illustration of the returned angle.\n\t\t\t\tEquivalent to the result of [method @GlobalScope.atan2] when called with the vector's [member y] and [member x] as parameters: atan2(y, x).","returnType":"float"},{"name":"angle_to","signature":"angle_to(to: Vector2) -> float","description":"Returns the signed angle to the given vector, in radians.\n\t\t\t\t[url=https://raw.githubusercontent.com/godotengine/godot-docs/master/img/vector2_angle_to.png]Illustration of the returned angle.","returnType":"float"},{"name":"angle_to_point","signature":"angle_to_point(to: Vector2) -> float","description":"Returns the angle between the line connecting the two points and the X axis, in radians.\n\t\t\t\ta.angle_to_point(b) is equivalent of doing (b - a).angle().\n\t\t\t\t[url=https://raw.githubusercontent.com/godotengine/godot-docs/master/img/vector2_angle_to_point.png]Illustration of the returned angle.","returnType":"float"},{"name":"aspect","signature":"aspect() -> float","description":"Returns the aspect ratio of this vector, the ratio of [member x] to [member y].","returnType":"float"},{"name":"bezier_derivative","signature":"bezier_derivative(control_1: Vector2, control_2: Vector2, end: Vector2, t: float) -> Vector2","description":"Returns the derivative at the given [param t] on the [url=https://en.wikipedia.org/wiki/B%C3%A9zier_curve]Bézier curve defined by this vector and the given [param control_1], [param control_2], and [param end] points.","returnType":"Vector2"},{"name":"bezier_interpolate","signature":"bezier_interpolate(control_1: Vector2, control_2: Vector2, end: Vector2, t: float) -> Vector2","description":"Returns the point at the given [param t] on the [url=https://en.wikipedia.org/wiki/B%C3%A9zier_curve]Bézier curve defined by this vector and the given [param control_1], [param control_2], and [param end] points.","returnType":"Vector2"},{"name":"bounce","signature":"bounce(n: Vector2) -> Vector2","description":"Returns the vector \"bounced off\" from a line defined by the given normal [param n] perpendicular to the line.\n\t\t\t\tNote: [method bounce] performs the operation that most engines and frameworks call [code skip-lint]reflect().","returnType":"Vector2"},{"name":"ceil","signature":"ceil() -> Vector2","description":"Returns a new vector with all components rounded up (towards positive infinity).","returnType":"Vector2"},{"name":"clamp","signature":"clamp(min: Vector2, max: Vector2) -> Vector2","description":"Returns a new vector with all components clamped between the components of [param min] and [param max], by running [method @GlobalScope.clamp] on each component.","returnType":"Vector2"},{"name":"clampf","signature":"clampf(min: float, max: float) -> Vector2","description":"Returns a new vector with all components clamped between [param min] and [param max], by running [method @GlobalScope.clamp] on each component.","returnType":"Vector2"},{"name":"cross","signature":"cross(with: Vector2) -> float","description":"Returns the 2D analog of the cross product for this vector and [param with].\n\t\t\t\tThis is the signed area of the parallelogram formed by the two vectors. If the second vector is clockwise from the first vector, then the cross product is the positive area. If counter-clockwise, the cross product is the negative area. If the two vectors are parallel this returns zero, making it useful for testing if two vectors are parallel.\n\t\t\t\tNote: Cross product is not defined in 2D mathematically. This method embeds the 2D vectors in the XY plane of 3D space and uses their cross product's Z component as the analog.","returnType":"float"},{"name":"cubic_interpolate","signature":"cubic_interpolate(b: Vector2, pre_a: Vector2, post_b: Vector2, weight: float) -> Vector2","description":"Performs a cubic interpolation between this vector and [param b] using [param pre_a] and [param post_b] as handles, and returns the result at position [param weight]. [param weight] is on the range of 0.0 to 1.0, representing the amount of interpolation.","returnType":"Vector2"},{"name":"cubic_interpolate_in_time","signature":"cubic_interpolate_in_time(b: Vector2, pre_a: Vector2, post_b: Vector2, weight: float, b_t: float, pre_a_t: float, post_b_t: float) -> Vector2","description":"Performs a cubic interpolation between this vector and [param b] using [param pre_a] and [param post_b] as handles, and returns the result at position [param weight]. [param weight] is on the range of 0.0 to 1.0, representing the amount of interpolation.\n\t\t\t\tIt can perform smoother interpolation than [method cubic_interpolate] by the time values.","returnType":"Vector2"},{"name":"direction_to","signature":"direction_to(to: Vector2) -> Vector2","description":"Returns the normalized vector pointing from this vector to [param to]. This is equivalent to using (b - a).normalized().","returnType":"Vector2"},{"name":"distance_squared_to","signature":"distance_squared_to(to: Vector2) -> float","description":"Returns the squared distance between this vector and [param to].\n\t\t\t\tThis method runs faster than [method distance_to], so prefer it if you need to compare vectors or need the squared distance for some formula.","returnType":"float"},{"name":"distance_to","signature":"distance_to(to: Vector2) -> float","description":"Returns the distance between this vector and [param to].","returnType":"float"},{"name":"dot","signature":"dot(with: Vector2) -> float","description":"Returns the dot product of this vector and [param with]. This can be used to compare the angle between two vectors. For example, this can be used to determine whether an enemy is facing the player.\n\t\t\t\tThe dot product will be 0 for a right angle (90 degrees), greater than 0 for angles narrower than 90 degrees and lower than 0 for angles wider than 90 degrees.\n\t\t\t\tWhen using unit (normalized) vectors, the result will always be between -1.0 (180 degree angle) when the vectors are facing opposite directions, and 1.0 (0 degree angle) when the vectors are aligned.\n\t\t\t\tNote: a.dot(b) is equivalent to b.dot(a).","returnType":"float"},{"name":"floor","signature":"floor() -> Vector2","description":"Returns a new vector with all components rounded down (towards negative infinity).","returnType":"Vector2"},{"name":"from_angle","signature":"from_angle(angle: float) -> Vector2","description":"Creates a unit  rotated to the given [param angle] in radians. This is equivalent to doing Vector2(cos(angle), sin(angle)) or Vector2.RIGHT.rotated(angle).\n\t\t\t\t\n\t\t\t\tprint(Vector2.from_angle(0)) # Prints (1.0, 0.0)\n\t\t\t\tprint(Vector2(1, 0).angle()) # Prints 0.0, which is the angle used above.\n\t\t\t\tprint(Vector2.from_angle(PI / 2)) # Prints (0.0, 1.0)\n\t\t\t\t","returnType":"Vector2"},{"name":"is_equal_approx","signature":"is_equal_approx(to: Vector2) -> bool","description":"Returns true if this vector and [param to] are approximately equal, by running [method @GlobalScope.is_equal_approx] on each component.","returnType":"bool"},{"name":"is_finite","signature":"is_finite() -> bool","description":"Returns true if this vector is finite, by calling [method @GlobalScope.is_finite] on each component.","returnType":"bool"},{"name":"is_normalized","signature":"is_normalized() -> bool","description":"Returns true if the vector is normalized, i.e. its length is approximately equal to 1.","returnType":"bool"},{"name":"is_zero_approx","signature":"is_zero_approx() -> bool","description":"Returns true if this vector's values are approximately zero, by running [method @GlobalScope.is_zero_approx] on each component.\n\t\t\t\tThis method is faster than using [method is_equal_approx] with one value as a zero vector.","returnType":"bool"},{"name":"length","signature":"length() -> float","description":"Returns the length (magnitude) of this vector.","returnType":"float"},{"name":"length_squared","signature":"length_squared() -> float","description":"Returns the squared length (squared magnitude) of this vector.\n\t\t\t\tThis method runs faster than [method length], so prefer it if you need to compare vectors or need the squared distance for some formula.","returnType":"float"},{"name":"lerp","signature":"lerp(to: Vector2, weight: float) -> Vector2","description":"Returns the result of the linear interpolation between this vector and [param to] by amount [param weight]. [param weight] is on the range of 0.0 to 1.0, representing the amount of interpolation.","returnType":"Vector2"},{"name":"limit_length","signature":"limit_length(length: float) -> Vector2","description":"Returns the vector with a maximum length by limiting its length to [param length]. If the vector is non-finite, the result is undefined.","returnType":"Vector2"},{"name":"max","signature":"max(with: Vector2) -> Vector2","description":"Returns the component-wise maximum of this and [param with], equivalent to Vector2(maxf(x, with.x), maxf(y, with.y)).","returnType":"Vector2"},{"name":"max_axis_index","signature":"max_axis_index() -> int","description":"Returns the axis of the vector's highest value. See AXIS_* constants. If all components are equal, this method returns [constant AXIS_X].","returnType":"int"},{"name":"maxf","signature":"maxf(with: float) -> Vector2","description":"Returns the component-wise maximum of this and [param with], equivalent to Vector2(maxf(x, with), maxf(y, with)).","returnType":"Vector2"},{"name":"min","signature":"min(with: Vector2) -> Vector2","description":"Returns the component-wise minimum of this and [param with], equivalent to Vector2(minf(x, with.x), minf(y, with.y)).","returnType":"Vector2"},{"name":"min_axis_index","signature":"min_axis_index() -> int","description":"Returns the axis of the vector's lowest value. See AXIS_* constants. If all components are equal, this method returns [constant AXIS_Y].","returnType":"int"},{"name":"minf","signature":"minf(with: float) -> Vector2","description":"Returns the component-wise minimum of this and [param with], equivalent to Vector2(minf(x, with), minf(y, with)).","returnType":"Vector2"},{"name":"move_toward","signature":"move_toward(to: Vector2, delta: float) -> Vector2","description":"Returns a new vector moved toward [param to] by the fixed [param delta] amount. Will not go past the final value.","returnType":"Vector2"},{"name":"normalized","signature":"normalized() -> Vector2","description":"Returns the result of scaling the vector to unit length. Equivalent to v / v.length(). Returns (0, 0) if v.length() == 0. See also [method is_normalized].\n\t\t\t\tNote: This function may return incorrect values if the input vector length is near zero.","returnType":"Vector2"},{"name":"orthogonal","signature":"orthogonal() -> Vector2","description":"Returns a perpendicular vector rotated 90 degrees counter-clockwise compared to the original, with the same length.","returnType":"Vector2"},{"name":"posmod","signature":"posmod(mod: float) -> Vector2","description":"Returns a vector composed of the [method @GlobalScope.fposmod] of this vector's components and [param mod].","returnType":"Vector2"},{"name":"posmodv","signature":"posmodv(modv: Vector2) -> Vector2","description":"Returns a vector composed of the [method @GlobalScope.fposmod] of this vector's components and [param modv]'s components.","returnType":"Vector2"},{"name":"project","signature":"project(b: Vector2) -> Vector2","description":"Returns a new vector resulting from projecting this vector onto the given vector [param b]. The resulting new vector is parallel to [param b]. See also [method slide].\n\t\t\t\tNote: If the vector [param b] is a zero vector, the components of the resulting new vector will be [constant @GDScript.NAN].","returnType":"Vector2"},{"name":"reflect","signature":"reflect(line: Vector2) -> Vector2","description":"Returns the result of reflecting the vector from a line defined by the given direction vector [param line].\n\t\t\t\tNote: [method reflect] differs from what other engines and frameworks call [code skip-lint]reflect(). In other engines, [code skip-lint]reflect() takes a normal direction which is a direction perpendicular to the line. In Godot, you specify the direction of the line directly. See also [method bounce] which does what most engines call [code skip-lint]reflect().","returnType":"Vector2"},{"name":"rotated","signature":"rotated(angle: float) -> Vector2","description":"Returns the result of rotating this vector by [param angle] (in radians). See also [method @GlobalScope.deg_to_rad].","returnType":"Vector2"},{"name":"round","signature":"round() -> Vector2","description":"Returns a new vector with all components rounded to the nearest integer, with halfway cases rounded away from zero.","returnType":"Vector2"},{"name":"sign","signature":"sign() -> Vector2","description":"Returns a new vector with each component set to 1.0 if it's positive, -1.0 if it's negative, and 0.0 if it's zero. The result is identical to calling [method @GlobalScope.sign] on each component.","returnType":"Vector2"},{"name":"slerp","signature":"slerp(to: Vector2, weight: float) -> Vector2","description":"Returns the result of spherical linear interpolation between this vector and [param to], by amount [param weight]. [param weight] is on the range of 0.0 to 1.0, representing the amount of interpolation.\n\t\t\t\tThis method also handles interpolating the lengths if the input vectors have different lengths. For the special case of one or both input vectors having zero length, this method behaves like [method lerp].","returnType":"Vector2"},{"name":"slide","signature":"slide(n: Vector2) -> Vector2","description":"Returns a new vector resulting from sliding this vector along a line with normal [param n]. The resulting new vector is perpendicular to [param n], and is equivalent to this vector minus its projection on [param n]. See also [method project].\n\t\t\t\tNote: The vector [param n] must be normalized. See also [method normalized].","returnType":"Vector2"},{"name":"snapped","signature":"snapped(step: Vector2) -> Vector2","description":"Returns a new vector with each component snapped to the nearest multiple of the corresponding component in [param step]. This can also be used to round the components to an arbitrary number of decimals.","returnType":"Vector2"},{"name":"snappedf","signature":"snappedf(step: float) -> Vector2","description":"Returns a new vector with each component snapped to the nearest multiple of [param step]. This can also be used to round the components to an arbitrary number of decimals.","returnType":"Vector2"}],"signals":[]},"Vector2i":{"name":"Vector2i","description":"A 2D vector using integer coordinates.","inherits":"","properties":[{"name":"x","type":"int","description":"The vector's X component. Also accessible by using the index position [code][0][/code]."},{"name":"y","type":"int","description":"The vector's Y component. Also accessible by using the index position [code][1][/code]."}],"methods":[{"name":"abs","signature":"abs() -> Vector2i","description":"Returns a new vector with all components in absolute values (i.e. positive).","returnType":"Vector2i"},{"name":"aspect","signature":"aspect() -> float","description":"Returns the aspect ratio of this vector, the ratio of [member x] to [member y].","returnType":"float"},{"name":"clamp","signature":"clamp(min: Vector2i, max: Vector2i) -> Vector2i","description":"Returns a new vector with all components clamped between the components of [param min] and [param max], by running [method @GlobalScope.clamp] on each component.","returnType":"Vector2i"},{"name":"clampi","signature":"clampi(min: int, max: int) -> Vector2i","description":"Returns a new vector with all components clamped between [param min] and [param max], by running [method @GlobalScope.clamp] on each component.","returnType":"Vector2i"},{"name":"distance_squared_to","signature":"distance_squared_to(to: Vector2i) -> int","description":"Returns the squared distance between this vector and [param to].\n\t\t\t\tThis method runs faster than [method distance_to], so prefer it if you need to compare vectors or need the squared distance for some formula.","returnType":"int"},{"name":"distance_to","signature":"distance_to(to: Vector2i) -> float","description":"Returns the distance between this vector and [param to].","returnType":"float"},{"name":"length","signature":"length() -> float","description":"Returns the length (magnitude) of this vector.","returnType":"float"},{"name":"length_squared","signature":"length_squared() -> int","description":"Returns the squared length (squared magnitude) of this vector.\n\t\t\t\tThis method runs faster than [method length], so prefer it if you need to compare vectors or need the squared distance for some formula.","returnType":"int"},{"name":"max","signature":"max(with: Vector2i) -> Vector2i","description":"Returns the component-wise maximum of this and [param with], equivalent to Vector2i(maxi(x, with.x), maxi(y, with.y)).","returnType":"Vector2i"},{"name":"max_axis_index","signature":"max_axis_index() -> int","description":"Returns the axis of the vector's highest value. See AXIS_* constants. If all components are equal, this method returns [constant AXIS_X].","returnType":"int"},{"name":"maxi","signature":"maxi(with: int) -> Vector2i","description":"Returns the component-wise maximum of this and [param with], equivalent to Vector2i(maxi(x, with), maxi(y, with)).","returnType":"Vector2i"},{"name":"min","signature":"min(with: Vector2i) -> Vector2i","description":"Returns the component-wise minimum of this and [param with], equivalent to Vector2i(mini(x, with.x), mini(y, with.y)).","returnType":"Vector2i"},{"name":"min_axis_index","signature":"min_axis_index() -> int","description":"Returns the axis of the vector's lowest value. See AXIS_* constants. If all components are equal, this method returns [constant AXIS_Y].","returnType":"int"},{"name":"mini","signature":"mini(with: int) -> Vector2i","description":"Returns the component-wise minimum of this and [param with], equivalent to Vector2i(mini(x, with), mini(y, with)).","returnType":"Vector2i"},{"name":"sign","signature":"sign() -> Vector2i","description":"Returns a new vector with each component set to 1 if it's positive, -1 if it's negative, and 0 if it's zero. The result is identical to calling [method @GlobalScope.sign] on each component.","returnType":"Vector2i"},{"name":"snapped","signature":"snapped(step: Vector2i) -> Vector2i","description":"Returns a new vector with each component snapped to the closest multiple of the corresponding component in [param step].","returnType":"Vector2i"},{"name":"snappedi","signature":"snappedi(step: int) -> Vector2i","description":"Returns a new vector with each component snapped to the closest multiple of [param step].","returnType":"Vector2i"}],"signals":[]},"Vector3":{"name":"Vector3","description":"A 3D vector using floating-point coordinates.","inherits":"","properties":[{"name":"x","type":"float","description":"The vector's X component. Also accessible by using the index position [code][0][/code]."},{"name":"y","type":"float","description":"The vector's Y component. Also accessible by using the index position [code][1][/code]."},{"name":"z","type":"float","description":"The vector's Z component. Also accessible by using the index position [code][2][/code]."}],"methods":[{"name":"abs","signature":"abs() -> Vector3","description":"Returns a new vector with all components in absolute values (i.e. positive).","returnType":"Vector3"},{"name":"angle_to","signature":"angle_to(to: Vector3) -> float","description":"Returns the unsigned minimum angle to the given vector, in radians.","returnType":"float"},{"name":"bezier_derivative","signature":"bezier_derivative(control_1: Vector3, control_2: Vector3, end: Vector3, t: float) -> Vector3","description":"Returns the derivative at the given [param t] on the [url=https://en.wikipedia.org/wiki/B%C3%A9zier_curve]Bézier curve defined by this vector and the given [param control_1], [param control_2], and [param end] points.","returnType":"Vector3"},{"name":"bezier_interpolate","signature":"bezier_interpolate(control_1: Vector3, control_2: Vector3, end: Vector3, t: float) -> Vector3","description":"Returns the point at the given [param t] on the [url=https://en.wikipedia.org/wiki/B%C3%A9zier_curve]Bézier curve defined by this vector and the given [param control_1], [param control_2], and [param end] points.","returnType":"Vector3"},{"name":"bounce","signature":"bounce(n: Vector3) -> Vector3","description":"Returns the vector \"bounced off\" from a plane defined by the given normal [param n].\n\t\t\t\tNote: [method bounce] performs the operation that most engines and frameworks call [code skip-lint]reflect().","returnType":"Vector3"},{"name":"ceil","signature":"ceil() -> Vector3","description":"Returns a new vector with all components rounded up (towards positive infinity).","returnType":"Vector3"},{"name":"clamp","signature":"clamp(min: Vector3, max: Vector3) -> Vector3","description":"Returns a new vector with all components clamped between the components of [param min] and [param max], by running [method @GlobalScope.clamp] on each component.","returnType":"Vector3"},{"name":"clampf","signature":"clampf(min: float, max: float) -> Vector3","description":"Returns a new vector with all components clamped between [param min] and [param max], by running [method @GlobalScope.clamp] on each component.","returnType":"Vector3"},{"name":"cross","signature":"cross(with: Vector3) -> Vector3","description":"Returns the cross product of this vector and [param with].\n\t\t\t\tThis returns a vector perpendicular to both this and [param with], which would be the normal vector of the plane defined by the two vectors. As there are two such vectors, in opposite directions, this method returns the vector defined by a right-handed coordinate system. If the two vectors are parallel this returns an empty vector, making it useful for testing if two vectors are parallel.","returnType":"Vector3"},{"name":"cubic_interpolate","signature":"cubic_interpolate(b: Vector3, pre_a: Vector3, post_b: Vector3, weight: float) -> Vector3","description":"Performs a cubic interpolation between this vector and [param b] using [param pre_a] and [param post_b] as handles, and returns the result at position [param weight]. [param weight] is on the range of 0.0 to 1.0, representing the amount of interpolation.","returnType":"Vector3"},{"name":"cubic_interpolate_in_time","signature":"cubic_interpolate_in_time(b: Vector3, pre_a: Vector3, post_b: Vector3, weight: float, b_t: float, pre_a_t: float, post_b_t: float) -> Vector3","description":"Performs a cubic interpolation between this vector and [param b] using [param pre_a] and [param post_b] as handles, and returns the result at position [param weight]. [param weight] is on the range of 0.0 to 1.0, representing the amount of interpolation.\n\t\t\t\tIt can perform smoother interpolation than [method cubic_interpolate] by the time values.","returnType":"Vector3"},{"name":"direction_to","signature":"direction_to(to: Vector3) -> Vector3","description":"Returns the normalized vector pointing from this vector to [param to]. This is equivalent to using (b - a).normalized().","returnType":"Vector3"},{"name":"distance_squared_to","signature":"distance_squared_to(to: Vector3) -> float","description":"Returns the squared distance between this vector and [param to].\n\t\t\t\tThis method runs faster than [method distance_to], so prefer it if you need to compare vectors or need the squared distance for some formula.","returnType":"float"},{"name":"distance_to","signature":"distance_to(to: Vector3) -> float","description":"Returns the distance between this vector and [param to].","returnType":"float"},{"name":"dot","signature":"dot(with: Vector3) -> float","description":"Returns the dot product of this vector and [param with]. This can be used to compare the angle between two vectors. For example, this can be used to determine whether an enemy is facing the player.\n\t\t\t\tThe dot product will be 0 for a right angle (90 degrees), greater than 0 for angles narrower than 90 degrees and lower than 0 for angles wider than 90 degrees.\n\t\t\t\tWhen using unit (normalized) vectors, the result will always be between -1.0 (180 degree angle) when the vectors are facing opposite directions, and 1.0 (0 degree angle) when the vectors are aligned.\n\t\t\t\tNote: a.dot(b) is equivalent to b.dot(a).","returnType":"float"},{"name":"floor","signature":"floor() -> Vector3","description":"Returns a new vector with all components rounded down (towards negative infinity).","returnType":"Vector3"},{"name":"inverse","signature":"inverse() -> Vector3","description":"Returns the inverse of the vector. This is the same as Vector3(1.0 / v.x, 1.0 / v.y, 1.0 / v.z).","returnType":"Vector3"},{"name":"is_equal_approx","signature":"is_equal_approx(to: Vector3) -> bool","description":"Returns true if this vector and [param to] are approximately equal, by running [method @GlobalScope.is_equal_approx] on each component.","returnType":"bool"},{"name":"is_finite","signature":"is_finite() -> bool","description":"Returns true if this vector is finite, by calling [method @GlobalScope.is_finite] on each component.","returnType":"bool"},{"name":"is_normalized","signature":"is_normalized() -> bool","description":"Returns true if the vector is normalized, i.e. its length is approximately equal to 1.","returnType":"bool"},{"name":"is_zero_approx","signature":"is_zero_approx() -> bool","description":"Returns true if this vector's values are approximately zero, by running [method @GlobalScope.is_zero_approx] on each component.\n\t\t\t\tThis method is faster than using [method is_equal_approx] with one value as a zero vector.","returnType":"bool"},{"name":"length","signature":"length() -> float","description":"Returns the length (magnitude) of this vector.","returnType":"float"},{"name":"length_squared","signature":"length_squared() -> float","description":"Returns the squared length (squared magnitude) of this vector.\n\t\t\t\tThis method runs faster than [method length], so prefer it if you need to compare vectors or need the squared distance for some formula.","returnType":"float"},{"name":"lerp","signature":"lerp(to: Vector3, weight: float) -> Vector3","description":"Returns the result of the linear interpolation between this vector and [param to] by amount [param weight]. [param weight] is on the range of 0.0 to 1.0, representing the amount of interpolation.","returnType":"Vector3"},{"name":"limit_length","signature":"limit_length(length: float) -> Vector3","description":"Returns the vector with a maximum length by limiting its length to [param length]. If the vector is non-finite, the result is undefined.","returnType":"Vector3"},{"name":"max","signature":"max(with: Vector3) -> Vector3","description":"Returns the component-wise maximum of this and [param with], equivalent to Vector3(maxf(x, with.x), maxf(y, with.y), maxf(z, with.z)).","returnType":"Vector3"},{"name":"max_axis_index","signature":"max_axis_index() -> int","description":"Returns the axis of the vector's highest value. See AXIS_* constants. If all components are equal, this method returns [constant AXIS_X].","returnType":"int"},{"name":"maxf","signature":"maxf(with: float) -> Vector3","description":"Returns the component-wise maximum of this and [param with], equivalent to Vector3(maxf(x, with), maxf(y, with), maxf(z, with)).","returnType":"Vector3"},{"name":"min","signature":"min(with: Vector3) -> Vector3","description":"Returns the component-wise minimum of this and [param with], equivalent to Vector3(minf(x, with.x), minf(y, with.y), minf(z, with.z)).","returnType":"Vector3"},{"name":"min_axis_index","signature":"min_axis_index() -> int","description":"Returns the axis of the vector's lowest value. See AXIS_* constants. If all components are equal, this method returns [constant AXIS_Z].","returnType":"int"},{"name":"minf","signature":"minf(with: float) -> Vector3","description":"Returns the component-wise minimum of this and [param with], equivalent to Vector3(minf(x, with), minf(y, with), minf(z, with)).","returnType":"Vector3"},{"name":"move_toward","signature":"move_toward(to: Vector3, delta: float) -> Vector3","description":"Returns a new vector moved toward [param to] by the fixed [param delta] amount. Will not go past the final value.","returnType":"Vector3"},{"name":"normalized","signature":"normalized() -> Vector3","description":"Returns the result of scaling the vector to unit length. Equivalent to v / v.length(). Returns (0, 0, 0) if v.length() == 0. See also [method is_normalized].\n\t\t\t\tNote: This function may return incorrect values if the input vector length is near zero.","returnType":"Vector3"},{"name":"octahedron_decode","signature":"octahedron_decode(uv: Vector2) -> Vector3","description":"Returns the  from an octahedral-compressed form created using [method octahedron_encode] (stored as a ).","returnType":"Vector3"},{"name":"octahedron_encode","signature":"octahedron_encode() -> Vector2","description":"Returns the octahedral-encoded (oct32) form of this  as a . Since a  occupies 1/3 less memory compared to , this form of compression can be used to pass greater amounts of [method normalized] s without increasing storage or memory requirements. See also [method octahedron_decode].\n\t\t\t\tNote: [method octahedron_encode] can only be used for [method normalized] vectors. [method octahedron_encode] does not check whether this  is normalized, and will return a value that does not decompress to the original value if the  is not normalized.\n\t\t\t\tNote: Octahedral compression is lossy, although visual differences are rarely perceptible in real world scenarios.","returnType":"Vector2"},{"name":"outer","signature":"outer(with: Vector3) -> Basis","description":"Returns the outer product with [param with].","returnType":"Basis"},{"name":"posmod","signature":"posmod(mod: float) -> Vector3","description":"Returns a vector composed of the [method @GlobalScope.fposmod] of this vector's components and [param mod].","returnType":"Vector3"},{"name":"posmodv","signature":"posmodv(modv: Vector3) -> Vector3","description":"Returns a vector composed of the [method @GlobalScope.fposmod] of this vector's components and [param modv]'s components.","returnType":"Vector3"},{"name":"project","signature":"project(b: Vector3) -> Vector3","description":"Returns a new vector resulting from projecting this vector onto the given vector [param b]. The resulting new vector is parallel to [param b]. See also [method slide].\n\t\t\t\tNote: If the vector [param b] is a zero vector, the components of the resulting new vector will be [constant @GDScript.NAN].","returnType":"Vector3"},{"name":"reflect","signature":"reflect(n: Vector3) -> Vector3","description":"Returns the result of reflecting the vector through a plane defined by the given normal vector [param n].\n\t\t\t\tNote: [method reflect] differs from what other engines and frameworks call [code skip-lint]reflect(). In other engines, [code skip-lint]reflect() returns the result of the vector reflected by the given plane. The reflection thus passes through the given normal. While in Godot the reflection passes through the plane and can be thought of as bouncing off the normal. See also [method bounce] which does what most engines call [code skip-lint]reflect().","returnType":"Vector3"},{"name":"rotated","signature":"rotated(axis: Vector3, angle: float) -> Vector3","description":"Returns the result of rotating this vector around a given axis by [param angle] (in radians). The axis must be a normalized vector. See also [method @GlobalScope.deg_to_rad].","returnType":"Vector3"},{"name":"round","signature":"round() -> Vector3","description":"Returns a new vector with all components rounded to the nearest integer, with halfway cases rounded away from zero.","returnType":"Vector3"},{"name":"sign","signature":"sign() -> Vector3","description":"Returns a new vector with each component set to 1.0 if it's positive, -1.0 if it's negative, and 0.0 if it's zero. The result is identical to calling [method @GlobalScope.sign] on each component.","returnType":"Vector3"},{"name":"signed_angle_to","signature":"signed_angle_to(to: Vector3, axis: Vector3) -> float","description":"Returns the signed angle to the given vector, in radians. The sign of the angle is positive in a counter-clockwise direction and negative in a clockwise direction when viewed from the side specified by the [param axis].","returnType":"float"},{"name":"slerp","signature":"slerp(to: Vector3, weight: float) -> Vector3","description":"Returns the result of spherical linear interpolation between this vector and [param to], by amount [param weight]. [param weight] is on the range of 0.0 to 1.0, representing the amount of interpolation.\n\t\t\t\tThis method also handles interpolating the lengths if the input vectors have different lengths. For the special case of one or both input vectors having zero length, this method behaves like [method lerp].","returnType":"Vector3"},{"name":"slide","signature":"slide(n: Vector3) -> Vector3","description":"Returns a new vector resulting from sliding this vector along a plane with normal [param n]. The resulting new vector is perpendicular to [param n], and is equivalent to this vector minus its projection on [param n]. See also [method project].\n\t\t\t\tNote: The vector [param n] must be normalized. See also [method normalized].","returnType":"Vector3"},{"name":"snapped","signature":"snapped(step: Vector3) -> Vector3","description":"Returns a new vector with each component snapped to the nearest multiple of the corresponding component in [param step]. This can also be used to round the components to an arbitrary number of decimals.","returnType":"Vector3"},{"name":"snappedf","signature":"snappedf(step: float) -> Vector3","description":"Returns a new vector with each component snapped to the nearest multiple of [param step]. This can also be used to round the components to an arbitrary number of decimals.","returnType":"Vector3"}],"signals":[]},"Vector3i":{"name":"Vector3i","description":"A 3D vector using integer coordinates.","inherits":"","properties":[{"name":"x","type":"int","description":"The vector's X component. Also accessible by using the index position [code][0][/code]."},{"name":"y","type":"int","description":"The vector's Y component. Also accessible by using the index position [code][1][/code]."},{"name":"z","type":"int","description":"The vector's Z component. Also accessible by using the index position [code][2][/code]."}],"methods":[{"name":"abs","signature":"abs() -> Vector3i","description":"Returns a new vector with all components in absolute values (i.e. positive).","returnType":"Vector3i"},{"name":"clamp","signature":"clamp(min: Vector3i, max: Vector3i) -> Vector3i","description":"Returns a new vector with all components clamped between the components of [param min] and [param max], by running [method @GlobalScope.clamp] on each component.","returnType":"Vector3i"},{"name":"clampi","signature":"clampi(min: int, max: int) -> Vector3i","description":"Returns a new vector with all components clamped between [param min] and [param max], by running [method @GlobalScope.clamp] on each component.","returnType":"Vector3i"},{"name":"distance_squared_to","signature":"distance_squared_to(to: Vector3i) -> int","description":"Returns the squared distance between this vector and [param to].\n\t\t\t\tThis method runs faster than [method distance_to], so prefer it if you need to compare vectors or need the squared distance for some formula.","returnType":"int"},{"name":"distance_to","signature":"distance_to(to: Vector3i) -> float","description":"Returns the distance between this vector and [param to].","returnType":"float"},{"name":"length","signature":"length() -> float","description":"Returns the length (magnitude) of this vector.","returnType":"float"},{"name":"length_squared","signature":"length_squared() -> int","description":"Returns the squared length (squared magnitude) of this vector.\n\t\t\t\tThis method runs faster than [method length], so prefer it if you need to compare vectors or need the squared distance for some formula.","returnType":"int"},{"name":"max","signature":"max(with: Vector3i) -> Vector3i","description":"Returns the component-wise maximum of this and [param with], equivalent to Vector3i(maxi(x, with.x), maxi(y, with.y), maxi(z, with.z)).","returnType":"Vector3i"},{"name":"max_axis_index","signature":"max_axis_index() -> int","description":"Returns the axis of the vector's highest value. See AXIS_* constants. If all components are equal, this method returns [constant AXIS_X].","returnType":"int"},{"name":"maxi","signature":"maxi(with: int) -> Vector3i","description":"Returns the component-wise maximum of this and [param with], equivalent to Vector3i(maxi(x, with), maxi(y, with), maxi(z, with)).","returnType":"Vector3i"},{"name":"min","signature":"min(with: Vector3i) -> Vector3i","description":"Returns the component-wise minimum of this and [param with], equivalent to Vector3i(mini(x, with.x), mini(y, with.y), mini(z, with.z)).","returnType":"Vector3i"},{"name":"min_axis_index","signature":"min_axis_index() -> int","description":"Returns the axis of the vector's lowest value. See AXIS_* constants. If all components are equal, this method returns [constant AXIS_Z].","returnType":"int"},{"name":"mini","signature":"mini(with: int) -> Vector3i","description":"Returns the component-wise minimum of this and [param with], equivalent to Vector3i(mini(x, with), mini(y, with), mini(z, with)).","returnType":"Vector3i"},{"name":"sign","signature":"sign() -> Vector3i","description":"Returns a new vector with each component set to 1 if it's positive, -1 if it's negative, and 0 if it's zero. The result is identical to calling [method @GlobalScope.sign] on each component.","returnType":"Vector3i"},{"name":"snapped","signature":"snapped(step: Vector3i) -> Vector3i","description":"Returns a new vector with each component snapped to the closest multiple of the corresponding component in [param step].","returnType":"Vector3i"},{"name":"snappedi","signature":"snappedi(step: int) -> Vector3i","description":"Returns a new vector with each component snapped to the closest multiple of [param step].","returnType":"Vector3i"}],"signals":[]},"Vector4":{"name":"Vector4","description":"A 4D vector using floating-point coordinates.","inherits":"","properties":[{"name":"w","type":"float","description":"The vector's W component. Also accessible by using the index position [code][3][/code]."},{"name":"x","type":"float","description":"The vector's X component. Also accessible by using the index position [code][0][/code]."},{"name":"y","type":"float","description":"The vector's Y component. Also accessible by using the index position [code][1][/code]."},{"name":"z","type":"float","description":"The vector's Z component. Also accessible by using the index position [code][2][/code]."}],"methods":[{"name":"abs","signature":"abs() -> Vector4","description":"Returns a new vector with all components in absolute values (i.e. positive).","returnType":"Vector4"},{"name":"ceil","signature":"ceil() -> Vector4","description":"Returns a new vector with all components rounded up (towards positive infinity).","returnType":"Vector4"},{"name":"clamp","signature":"clamp(min: Vector4, max: Vector4) -> Vector4","description":"Returns a new vector with all components clamped between the components of [param min] and [param max], by running [method @GlobalScope.clamp] on each component.","returnType":"Vector4"},{"name":"clampf","signature":"clampf(min: float, max: float) -> Vector4","description":"Returns a new vector with all components clamped between [param min] and [param max], by running [method @GlobalScope.clamp] on each component.","returnType":"Vector4"},{"name":"cubic_interpolate","signature":"cubic_interpolate(b: Vector4, pre_a: Vector4, post_b: Vector4, weight: float) -> Vector4","description":"Performs a cubic interpolation between this vector and [param b] using [param pre_a] and [param post_b] as handles, and returns the result at position [param weight]. [param weight] is on the range of 0.0 to 1.0, representing the amount of interpolation.","returnType":"Vector4"},{"name":"cubic_interpolate_in_time","signature":"cubic_interpolate_in_time(b: Vector4, pre_a: Vector4, post_b: Vector4, weight: float, b_t: float, pre_a_t: float, post_b_t: float) -> Vector4","description":"Performs a cubic interpolation between this vector and [param b] using [param pre_a] and [param post_b] as handles, and returns the result at position [param weight]. [param weight] is on the range of 0.0 to 1.0, representing the amount of interpolation.\n\t\t\t\tIt can perform smoother interpolation than [method cubic_interpolate] by the time values.","returnType":"Vector4"},{"name":"direction_to","signature":"direction_to(to: Vector4) -> Vector4","description":"Returns the normalized vector pointing from this vector to [param to]. This is equivalent to using (b - a).normalized().","returnType":"Vector4"},{"name":"distance_squared_to","signature":"distance_squared_to(to: Vector4) -> float","description":"Returns the squared distance between this vector and [param to].\n\t\t\t\tThis method runs faster than [method distance_to], so prefer it if you need to compare vectors or need the squared distance for some formula.","returnType":"float"},{"name":"distance_to","signature":"distance_to(to: Vector4) -> float","description":"Returns the distance between this vector and [param to].","returnType":"float"},{"name":"dot","signature":"dot(with: Vector4) -> float","description":"Returns the dot product of this vector and [param with].","returnType":"float"},{"name":"floor","signature":"floor() -> Vector4","description":"Returns a new vector with all components rounded down (towards negative infinity).","returnType":"Vector4"},{"name":"inverse","signature":"inverse() -> Vector4","description":"Returns the inverse of the vector. This is the same as Vector4(1.0 / v.x, 1.0 / v.y, 1.0 / v.z, 1.0 / v.w).","returnType":"Vector4"},{"name":"is_equal_approx","signature":"is_equal_approx(to: Vector4) -> bool","description":"Returns true if this vector and [param to] are approximately equal, by running [method @GlobalScope.is_equal_approx] on each component.","returnType":"bool"},{"name":"is_finite","signature":"is_finite() -> bool","description":"Returns true if this vector is finite, by calling [method @GlobalScope.is_finite] on each component.","returnType":"bool"},{"name":"is_normalized","signature":"is_normalized() -> bool","description":"Returns true if the vector is normalized, i.e. its length is approximately equal to 1.","returnType":"bool"},{"name":"is_zero_approx","signature":"is_zero_approx() -> bool","description":"Returns true if this vector's values are approximately zero, by running [method @GlobalScope.is_zero_approx] on each component.\n\t\t\t\tThis method is faster than using [method is_equal_approx] with one value as a zero vector.","returnType":"bool"},{"name":"length","signature":"length() -> float","description":"Returns the length (magnitude) of this vector.","returnType":"float"},{"name":"length_squared","signature":"length_squared() -> float","description":"Returns the squared length (squared magnitude) of this vector.\n\t\t\t\tThis method runs faster than [method length], so prefer it if you need to compare vectors or need the squared distance for some formula.","returnType":"float"},{"name":"lerp","signature":"lerp(to: Vector4, weight: float) -> Vector4","description":"Returns the result of the linear interpolation between this vector and [param to] by amount [param weight]. [param weight] is on the range of 0.0 to 1.0, representing the amount of interpolation.","returnType":"Vector4"},{"name":"max","signature":"max(with: Vector4) -> Vector4","description":"Returns the component-wise maximum of this and [param with], equivalent to Vector4(maxf(x, with.x), maxf(y, with.y), maxf(z, with.z), maxf(w, with.w)).","returnType":"Vector4"},{"name":"max_axis_index","signature":"max_axis_index() -> int","description":"Returns the axis of the vector's highest value. See AXIS_* constants. If all components are equal, this method returns [constant AXIS_X].","returnType":"int"},{"name":"maxf","signature":"maxf(with: float) -> Vector4","description":"Returns the component-wise maximum of this and [param with], equivalent to Vector4(maxf(x, with), maxf(y, with), maxf(z, with), maxf(w, with)).","returnType":"Vector4"},{"name":"min","signature":"min(with: Vector4) -> Vector4","description":"Returns the component-wise minimum of this and [param with], equivalent to Vector4(minf(x, with.x), minf(y, with.y), minf(z, with.z), minf(w, with.w)).","returnType":"Vector4"},{"name":"min_axis_index","signature":"min_axis_index() -> int","description":"Returns the axis of the vector's lowest value. See AXIS_* constants. If all components are equal, this method returns [constant AXIS_W].","returnType":"int"},{"name":"minf","signature":"minf(with: float) -> Vector4","description":"Returns the component-wise minimum of this and [param with], equivalent to Vector4(minf(x, with), minf(y, with), minf(z, with), minf(w, with)).","returnType":"Vector4"},{"name":"normalized","signature":"normalized() -> Vector4","description":"Returns the result of scaling the vector to unit length. Equivalent to v / v.length(). Returns (0, 0, 0, 0) if v.length() == 0. See also [method is_normalized].\n\t\t\t\tNote: This function may return incorrect values if the input vector length is near zero.","returnType":"Vector4"},{"name":"posmod","signature":"posmod(mod: float) -> Vector4","description":"Returns a vector composed of the [method @GlobalScope.fposmod] of this vector's components and [param mod].","returnType":"Vector4"},{"name":"posmodv","signature":"posmodv(modv: Vector4) -> Vector4","description":"Returns a vector composed of the [method @GlobalScope.fposmod] of this vector's components and [param modv]'s components.","returnType":"Vector4"},{"name":"round","signature":"round() -> Vector4","description":"Returns a new vector with all components rounded to the nearest integer, with halfway cases rounded away from zero.","returnType":"Vector4"},{"name":"sign","signature":"sign() -> Vector4","description":"Returns a new vector with each component set to 1.0 if it's positive, -1.0 if it's negative, and 0.0 if it's zero. The result is identical to calling [method @GlobalScope.sign] on each component.","returnType":"Vector4"},{"name":"snapped","signature":"snapped(step: Vector4) -> Vector4","description":"Returns a new vector with each component snapped to the nearest multiple of the corresponding component in [param step]. This can also be used to round the components to an arbitrary number of decimals.","returnType":"Vector4"},{"name":"snappedf","signature":"snappedf(step: float) -> Vector4","description":"Returns a new vector with each component snapped to the nearest multiple of [param step]. This can also be used to round the components to an arbitrary number of decimals.","returnType":"Vector4"}],"signals":[]},"Vector4i":{"name":"Vector4i","description":"A 4D vector using integer coordinates.","inherits":"","properties":[{"name":"w","type":"int","description":"The vector's W component. Also accessible by using the index position [code][3][/code]."},{"name":"x","type":"int","description":"The vector's X component. Also accessible by using the index position [code][0][/code]."},{"name":"y","type":"int","description":"The vector's Y component. Also accessible by using the index position [code][1][/code]."},{"name":"z","type":"int","description":"The vector's Z component. Also accessible by using the index position [code][2][/code]."}],"methods":[{"name":"abs","signature":"abs() -> Vector4i","description":"Returns a new vector with all components in absolute values (i.e. positive).","returnType":"Vector4i"},{"name":"clamp","signature":"clamp(min: Vector4i, max: Vector4i) -> Vector4i","description":"Returns a new vector with all components clamped between the components of [param min] and [param max], by running [method @GlobalScope.clamp] on each component.","returnType":"Vector4i"},{"name":"clampi","signature":"clampi(min: int, max: int) -> Vector4i","description":"Returns a new vector with all components clamped between [param min] and [param max], by running [method @GlobalScope.clamp] on each component.","returnType":"Vector4i"},{"name":"distance_squared_to","signature":"distance_squared_to(to: Vector4i) -> int","description":"Returns the squared distance between this vector and [param to].\n\t\t\t\tThis method runs faster than [method distance_to], so prefer it if you need to compare vectors or need the squared distance for some formula.","returnType":"int"},{"name":"distance_to","signature":"distance_to(to: Vector4i) -> float","description":"Returns the distance between this vector and [param to].","returnType":"float"},{"name":"length","signature":"length() -> float","description":"Returns the length (magnitude) of this vector.","returnType":"float"},{"name":"length_squared","signature":"length_squared() -> int","description":"Returns the squared length (squared magnitude) of this vector.\n\t\t\t\tThis method runs faster than [method length], so prefer it if you need to compare vectors or need the squared distance for some formula.","returnType":"int"},{"name":"max","signature":"max(with: Vector4i) -> Vector4i","description":"Returns the component-wise maximum of this and [param with], equivalent to Vector4i(maxi(x, with.x), maxi(y, with.y), maxi(z, with.z), maxi(w, with.w)).","returnType":"Vector4i"},{"name":"max_axis_index","signature":"max_axis_index() -> int","description":"Returns the axis of the vector's highest value. See AXIS_* constants. If all components are equal, this method returns [constant AXIS_X].","returnType":"int"},{"name":"maxi","signature":"maxi(with: int) -> Vector4i","description":"Returns the component-wise maximum of this and [param with], equivalent to Vector4i(maxi(x, with), maxi(y, with), maxi(z, with), maxi(w, with)).","returnType":"Vector4i"},{"name":"min","signature":"min(with: Vector4i) -> Vector4i","description":"Returns the component-wise minimum of this and [param with], equivalent to Vector4i(mini(x, with.x), mini(y, with.y), mini(z, with.z), mini(w, with.w)).","returnType":"Vector4i"},{"name":"min_axis_index","signature":"min_axis_index() -> int","description":"Returns the axis of the vector's lowest value. See AXIS_* constants. If all components are equal, this method returns [constant AXIS_W].","returnType":"int"},{"name":"mini","signature":"mini(with: int) -> Vector4i","description":"Returns the component-wise minimum of this and [param with], equivalent to Vector4i(mini(x, with), mini(y, with), mini(z, with), mini(w, with)).","returnType":"Vector4i"},{"name":"sign","signature":"sign() -> Vector4i","description":"Returns a new vector with each component set to 1 if it's positive, -1 if it's negative, and 0 if it's zero. The result is identical to calling [method @GlobalScope.sign] on each component.","returnType":"Vector4i"},{"name":"snapped","signature":"snapped(step: Vector4i) -> Vector4i","description":"Returns a new vector with each component snapped to the closest multiple of the corresponding component in [param step].","returnType":"Vector4i"},{"name":"snappedi","signature":"snappedi(step: int) -> Vector4i","description":"Returns a new vector with each component snapped to the closest multiple of [param step].","returnType":"Vector4i"}],"signals":[]},"VehicleBody3D":{"name":"VehicleBody3D","description":"A 3D physics body that simulates the behavior of a car.","inherits":"RigidBody3D","properties":[{"name":"brake","type":"float","description":"Slows down the vehicle by applying a braking force. The vehicle is only slowed down if the wheels are in contact with a surface. The force you need to apply to adequately slow down your vehicle depends on the [member RigidBody3D.mass] of the vehicle. For a vehicle with a mass set to 1000, try a value in the 25 - 30 range for hard braking."},{"name":"engine_force","type":"float","description":"Accelerates the vehicle by applying an engine force. The vehicle is only sped up if the wheels that have [member VehicleWheel3D.use_as_traction] set to [code]true[/code] and are in contact with a surface. The [member RigidBody3D.mass] of the vehicle has an effect on the acceleration of the vehicle. For a vehicle with a mass set to 1000, try a value in the 25 - 50 range for acceleration.\n\t\t\t[b]Note:[/b] The simulation does not take the effect of gears into account, you will need to add logic for this if you wish to simulate gears.\n\t\t\tA negative value will result in the vehicle reversing."},{"name":"steering","type":"float","description":"The steering angle for the vehicle. Setting this to a non-zero value will result in the vehicle turning when it's moving. Wheels that have [member VehicleWheel3D.use_as_steering] set to [code]true[/code] will automatically be rotated.\n\t\t\t[b]Note:[/b] This property is edited in the inspector in degrees. In code the property is set in radians."}],"methods":[],"signals":[]},"VehicleWheel3D":{"name":"VehicleWheel3D","description":"A 3D physics body for a  that simulates the behavior of a wheel.","inherits":"Node3D","properties":[{"name":"brake","type":"float","description":"Slows down the wheel by applying a braking force. The wheel is only slowed down if it is in contact with a surface. The force you need to apply to adequately slow down your vehicle depends on the [member RigidBody3D.mass] of the vehicle. For a vehicle with a mass set to 1000, try a value in the 25 - 30 range for hard braking."},{"name":"damping_compression","type":"float","description":"The damping applied to the suspension spring when being compressed, meaning when the wheel is moving up relative to the vehicle. It is measured in Newton-seconds per millimeter (N⋅s/mm), or megagrams per second (Mg/s). This value should be between 0.0 (no damping) and 1.0, but may be more. A value of 0.0 means the car will keep bouncing as the spring keeps its energy. A good value for this is around 0.3 for a normal car, 0.5 for a race car."},{"name":"damping_relaxation","type":"float","description":"The damping applied to the suspension spring when rebounding or extending, meaning when the wheel is moving down relative to the vehicle. It is measured in Newton-seconds per millimeter (N⋅s/mm), or megagrams per second (Mg/s). This value should be between 0.0 (no damping) and 1.0, but may be more. This value should always be slightly higher than the [member damping_compression] property. For a [member damping_compression] value of 0.3, try a relaxation value of 0.5."},{"name":"engine_force","type":"float","description":"Accelerates the wheel by applying an engine force. The wheel is only sped up if it is in contact with a surface. The [member RigidBody3D.mass] of the vehicle has an effect on the acceleration of the vehicle. For a vehicle with a mass set to 1000, try a value in the 25 - 50 range for acceleration.\n\t\t\t[b]Note:[/b] The simulation does not take the effect of gears into account, you will need to add logic for this if you wish to simulate gears.\n\t\t\tA negative value will result in the wheel reversing."},{"name":"steering","type":"float","description":"The steering angle for the wheel, in radians. Setting this to a non-zero value will result in the vehicle turning when it's moving."},{"name":"suspension_max_force","type":"float","description":"The maximum force the spring can resist. This value should be higher than a quarter of the [member RigidBody3D.mass] of the [VehicleBody3D] or the spring will not carry the weight of the vehicle. Good results are often obtained by a value that is about 3× to 4× this number."},{"name":"suspension_stiffness","type":"float","description":"The stiffness of the suspension, measured in Newtons per millimeter (N/mm), or megagrams per second squared (Mg/s²). Use a value lower than 50 for an off-road car, a value between 50 and 100 for a race car and try something around 200 for something like a Formula 1 car."},{"name":"suspension_travel","type":"float","description":"This is the distance the suspension can travel. As Godot units are equivalent to meters, keep this setting relatively low. Try a value between 0.1 and 0.3 depending on the type of car."},{"name":"use_as_steering","type":"bool","description":"If [code]true[/code], this wheel will be turned when the car steers. This value is used in conjunction with [member VehicleBody3D.steering] and ignored if you are using the per-wheel [member steering] value instead."},{"name":"use_as_traction","type":"bool","description":"If [code]true[/code], this wheel transfers engine force to the ground to propel the vehicle forward. This value is used in conjunction with [member VehicleBody3D.engine_force] and ignored if you are using the per-wheel [member engine_force] value instead."},{"name":"wheel_friction_slip","type":"float","description":"This determines how much grip this wheel has. It is combined with the friction setting of the surface the wheel is in contact with. 0.0 means no grip, 1.0 is normal grip. For a drift car setup, try setting the grip of the rear wheels slightly lower than the front wheels, or use a lower value to simulate tire wear.\n\t\t\tIt's best to set this to 1.0 when starting out."},{"name":"wheel_radius","type":"float","description":"The radius of the wheel in meters."},{"name":"wheel_rest_length","type":"float","description":"This is the distance in meters the wheel is lowered from its origin point. Don't set this to 0.0 and move the wheel into position, instead move the origin point of your wheel (the gizmo in Godot) to the position the wheel will take when bottoming out, then use the rest length to move the wheel down to the position it should be in when the car is in rest."},{"name":"wheel_roll_influence","type":"float","description":"This value affects the roll of your vehicle. If set to 1.0 for all wheels, your vehicle will resist body roll, while a value of 0.0 will be prone to rolling over."}],"methods":[{"name":"get_contact_body","signature":"get_contact_body() -> Node3D","description":"Returns the contacting body node if valid in the tree, as . At the moment,  is not supported so the node will be always of type .\n\t\t\t\tReturns null if the wheel is not in contact with a surface, or the contact body is not a .","returnType":"Node3D"},{"name":"get_contact_normal","signature":"get_contact_normal() -> Vector3","description":"Returns the normal of the suspension's collision in world space if the wheel is in contact. If the wheel isn't in contact with anything, returns a vector pointing directly along the suspension axis toward the vehicle in world space.","returnType":"Vector3"},{"name":"get_contact_point","signature":"get_contact_point() -> Vector3","description":"Returns the point of the suspension's collision in world space if the wheel is in contact. If the wheel isn't in contact with anything, returns the maximum point of the wheel's ray cast in world space, which is defined by wheel_rest_length + wheel_radius.","returnType":"Vector3"},{"name":"get_rpm","signature":"get_rpm() -> float","description":"Returns the rotational speed of the wheel in revolutions per minute.","returnType":"float"},{"name":"get_skidinfo","signature":"get_skidinfo() -> float","description":"Returns a value between 0.0 and 1.0 that indicates whether this wheel is skidding. 0.0 is skidding (the wheel has lost grip, e.g. icy terrain), 1.0 means not skidding (the wheel has full grip, e.g. dry asphalt road).","returnType":"float"},{"name":"is_in_contact","signature":"is_in_contact() -> bool","description":"Returns true if this wheel is in contact with a surface.","returnType":"bool"}],"signals":[]},"VideoStream":{"name":"VideoStream","description":"Base resource for video streams.","inherits":"Resource","properties":[{"name":"file","type":"String","description":"The video file path or URI that this [VideoStream] resource handles.\n\t\t\tFor [VideoStreamTheora], this filename should be an Ogg Theora video file with the [code].ogv[/code] extension."}],"methods":[{"name":"_instantiate_playback","signature":"_instantiate_playback() -> VideoStreamPlayback","description":"Called when the video starts playing, to initialize and return a subclass of .","returnType":"VideoStreamPlayback"}],"signals":[]},"VideoStreamPlayback":{"name":"VideoStreamPlayback","description":"Internal class used by  to manage playback state when played from a .","inherits":"Resource","properties":[],"methods":[{"name":"_get_channels","signature":"_get_channels() -> int","description":"Returns the number of audio channels.","returnType":"int"},{"name":"_get_length","signature":"_get_length() -> float","description":"Returns the video duration in seconds, if known, or 0 if unknown.","returnType":"float"},{"name":"_get_mix_rate","signature":"_get_mix_rate() -> int","description":"Returns the audio sample rate used for mixing.","returnType":"int"},{"name":"_get_playback_position","signature":"_get_playback_position() -> float","description":"Return the current playback timestamp. Called in response to the [member VideoStreamPlayer.stream_position] getter.","returnType":"float"},{"name":"_get_texture","signature":"_get_texture() -> Texture2D","description":"Allocates a  in which decoded video frames will be drawn.","returnType":"Texture2D"},{"name":"_is_paused","signature":"_is_paused() -> bool","description":"Returns the paused status, as set by [method _set_paused].","returnType":"bool"},{"name":"_is_playing","signature":"_is_playing() -> bool","description":"Returns the playback state, as determined by calls to [method _play] and [method _stop].","returnType":"bool"},{"name":"_play","signature":"_play() -> void","description":"Called in response to [member VideoStreamPlayer.autoplay] or [method VideoStreamPlayer.play]. Note that manual playback may also invoke [method _stop] multiple times before this method is called. [method _is_playing] should return true once playing.","returnType":"void"},{"name":"_seek","signature":"_seek(time: float) -> void","description":"Seeks to [param time] seconds. Called in response to the [member VideoStreamPlayer.stream_position] setter.","returnType":"void"},{"name":"_set_audio_track","signature":"_set_audio_track(idx: int) -> void","description":"Select the audio track [param idx]. Called when playback starts, and in response to the [member VideoStreamPlayer.audio_track] setter.","returnType":"void"},{"name":"_set_paused","signature":"_set_paused(paused: bool) -> void","description":"Set the paused status of video playback. [method _is_paused] must return [param paused]. Called in response to the [member VideoStreamPlayer.paused] setter.","returnType":"void"},{"name":"_stop","signature":"_stop() -> void","description":"Stops playback. May be called multiple times before [method _play], or in response to [method VideoStreamPlayer.stop]. [method _is_playing] should return false once stopped.","returnType":"void"},{"name":"_update","signature":"_update(delta: float) -> void","description":"Ticks video playback for [param delta] seconds. Called every frame as long as both [method _is_paused] and [method _is_playing] return true.","returnType":"void"},{"name":"mix_audio","signature":"mix_audio(num_frames: int, buffer: PackedFloat32Array, offset: int) -> int","description":"Render [param num_frames] audio frames (of [method _get_channels] floats each) from [param buffer], starting from index [param offset] in the array. Returns the number of audio frames rendered, or -1 on error.","returnType":"int"}],"signals":[]},"VideoStreamPlayer":{"name":"VideoStreamPlayer","description":"A control used for video playback.","inherits":"Control","properties":[{"name":"audio_track","type":"int","description":"The embedded audio track to play."},{"name":"autoplay","type":"bool","description":"If [code]true[/code], playback starts when the scene loads."},{"name":"buffering_msec","type":"int","description":"Amount of time in milliseconds to store in buffer while playing."},{"name":"bus","type":"StringName","description":"Audio bus to use for sound playback."},{"name":"expand","type":"bool","description":"If [code]true[/code], the video scales to the control size. Otherwise, the control minimum size will be automatically adjusted to match the video stream's dimensions."},{"name":"loop","type":"bool","description":"If [code]true[/code], the video restarts when it reaches its end."},{"name":"paused","type":"bool","description":"If [code]true[/code], the video is paused."},{"name":"stream","type":"VideoStream","description":"The assigned video stream. See description for supported formats."},{"name":"stream_position","type":"float","description":"The current position of the stream, in seconds.\n\t\t\t[b]Note:[/b] Changing this value won't have any effect as seeking is not implemented yet, except in video formats implemented by a GDExtension add-on."},{"name":"volume","type":"float","description":"Audio volume as a linear value."},{"name":"volume_db","type":"float","description":"Audio volume in dB."}],"methods":[{"name":"get_stream_length","signature":"get_stream_length() -> float","description":"The length of the current stream, in seconds.\n\t\t\t\tNote: For  streams (the built-in format supported by Godot), this value will always be zero, as getting the stream length is not implemented yet. The feature may be supported by video formats implemented by a GDExtension add-on.","returnType":"float"},{"name":"get_stream_name","signature":"get_stream_name() -> String","description":"Returns the video stream's name, or \"&lt;No Stream&gt;\" if no video stream is assigned.","returnType":"String"},{"name":"get_video_texture","signature":"get_video_texture() -> Texture2D","description":"Returns the current frame as a .","returnType":"Texture2D"},{"name":"is_playing","signature":"is_playing() -> bool","description":"Returns true if the video is playing.\n\t\t\t\tNote: The video is still considered playing if paused during playback.","returnType":"bool"},{"name":"play","signature":"play() -> void","description":"Starts the video playback from the beginning. If the video is paused, this will not unpause the video.","returnType":"void"},{"name":"stop","signature":"stop() -> void","description":"Stops the video playback and sets the stream position to 0.\n\t\t\t\tNote: Although the stream position will be set to 0, the first frame of the video stream won't become the current frame.","returnType":"void"}],"signals":[{"name":"finished","description":"Emitted when playback is finished."}]},"Viewport":{"name":"Viewport","description":"Abstract base class for viewports. Encapsulates drawing and interaction with a game world.","inherits":"Node","properties":[{"name":"anisotropic_filtering_level","type":"int","description":"Sets the maximum number of samples to take when using anisotropic filtering on textures (as a power of two). A higher sample count will result in sharper textures at oblique angles, but is more expensive to compute. A value of [code]0[/code] forcibly disables anisotropic filtering, even on materials where it is enabled.\n\t\t\tThe anisotropic filtering level also affects decals and light projectors if they are configured to use anisotropic filtering. See [member ProjectSettings.rendering/textures/decals/filter] and [member ProjectSettings.rendering/textures/light_projectors/filter].\n\t\t\t[b]Note:[/b] In 3D, for this setting to have an effect, set [member BaseMaterial3D.texture_filter] to [constant BaseMaterial3D.TEXTURE_FILTER_LINEAR_WITH_MIPMAPS_ANISOTROPIC] or [constant BaseMaterial3D.TEXTURE_FILTER_NEAREST_WITH_MIPMAPS_ANISOTROPIC] on materials.\n\t\t\t[b]Note:[/b] In 2D, for this setting to have an effect, set [member CanvasItem.texture_filter] to [constant CanvasItem.TEXTURE_FILTER_LINEAR_WITH_MIPMAPS_ANISOTROPIC] or [constant CanvasItem.TEXTURE_FILTER_NEAREST_WITH_MIPMAPS_ANISOTROPIC] on the [CanvasItem] node displaying the texture (or in [CanvasTexture]). However, anisotropic filtering is rarely useful in 2D, so only enable it for textures in 2D if it makes a meaningful visual difference."},{"name":"audio_listener_enable_2d","type":"bool","description":"If [code]true[/code], the viewport will process 2D audio streams."},{"name":"audio_listener_enable_3d","type":"bool","description":"If [code]true[/code], the viewport will process 3D audio streams."},{"name":"canvas_cull_mask","type":"int","description":"The rendering layers in which this [Viewport] renders [CanvasItem] nodes."},{"name":"canvas_item_default_texture_filter","type":"int","description":"Sets the default filter mode used by [CanvasItem]s in this Viewport. See [enum DefaultCanvasItemTextureFilter] for options."},{"name":"canvas_item_default_texture_repeat","type":"int","description":"Sets the default repeat mode used by [CanvasItem]s in this Viewport. See [enum DefaultCanvasItemTextureRepeat] for options."},{"name":"canvas_transform","type":"Transform2D","description":"The canvas transform of the viewport, useful for changing the on-screen positions of all child [CanvasItem]s. This is relative to the global canvas transform of the viewport."},{"name":"debug_draw","type":"int","description":"The overlay mode for test rendered geometry in debug purposes."},{"name":"disable_3d","type":"bool","description":"Disable 3D rendering (but keep 2D rendering)."},{"name":"fsr_sharpness","type":"float","description":"Determines how sharp the upscaled image will be when using the FSR upscaling mode. Sharpness halves with every whole number. Values go from 0.0 (sharpest) to 2.0. Values above 2.0 won't make a visible difference.\n\t\t\tTo control this property on the root viewport, set the [member ProjectSettings.rendering/scaling_3d/fsr_sharpness] project setting."},{"name":"global_canvas_transform","type":"Transform2D","description":"The global canvas transform of the viewport. The canvas transform is relative to this."},{"name":"gui_disable_input","type":"bool","description":"If [code]true[/code], the viewport will not receive input events."},{"name":"gui_embed_subwindows","type":"bool","description":"If [code]true[/code], sub-windows (popups and dialogs) will be embedded inside application window as control-like nodes. If [code]false[/code], they will appear as separate windows handled by the operating system."},{"name":"gui_snap_controls_to_pixels","type":"bool","description":"If [code]true[/code], the GUI controls on the viewport will lay pixel perfectly."},{"name":"handle_input_locally","type":"bool","description":"If [code]true[/code], this viewport will mark incoming input events as handled by itself. If [code]false[/code], this is instead done by the first parent viewport that is set to handle input locally.\n\t\t\tA [SubViewportContainer] will automatically set this property to [code]false[/code] for the [Viewport] contained inside of it.\n\t\t\tSee also [method set_input_as_handled] and [method is_input_handled]."},{"name":"mesh_lod_threshold","type":"float","description":"The automatic LOD bias to use for meshes rendered within the [Viewport] (this is analogous to [member ReflectionProbe.mesh_lod_threshold]). Higher values will use less detailed versions of meshes that have LOD variations generated. If set to [code]0.0[/code], automatic LOD is disabled. Increase [member mesh_lod_threshold] to improve performance at the cost of geometry detail.\n\t\t\tTo control this property on the root viewport, set the [member ProjectSettings.rendering/mesh_lod/lod_change/threshold_pixels] project setting.\n\t\t\t[b]Note:[/b] [member mesh_lod_threshold] does not affect [GeometryInstance3D] visibility ranges (also known as \"manual\" LOD or hierarchical LOD)."},{"name":"msaa_2d","type":"int","description":"The multisample antialiasing mode for 2D/Canvas rendering. A higher number results in smoother edges at the cost of significantly worse performance. A value of [constant Viewport.MSAA_2X] or [constant Viewport.MSAA_4X] is best unless targeting very high-end systems. This has no effect on shader-induced aliasing or texture aliasing.\n\t\t\tSee also [member ProjectSettings.rendering/anti_aliasing/quality/msaa_2d] and [method RenderingServer.viewport_set_msaa_2d]."},{"name":"msaa_3d","type":"int","description":"The multisample antialiasing mode for 3D rendering. A higher number results in smoother edges at the cost of significantly worse performance. A value of [constant Viewport.MSAA_2X] or [constant Viewport.MSAA_4X] is best unless targeting very high-end systems. See also bilinear scaling 3D [member scaling_3d_mode] for supersampling, which provides higher quality but is much more expensive. This has no effect on shader-induced aliasing or texture aliasing.\n\t\t\tSee also [member ProjectSettings.rendering/anti_aliasing/quality/msaa_3d] and [method RenderingServer.viewport_set_msaa_3d]."},{"name":"own_world_3d","type":"bool","description":"If [code]true[/code], the viewport will use a unique copy of the [World3D] defined in [member world_3d]."},{"name":"physics_object_picking","type":"bool","description":"If [code]true[/code], the objects rendered by viewport become subjects of mouse picking process.\n\t\t\t[b]Note:[/b] The number of simultaneously pickable objects is limited to 64 and they are selected in a non-deterministic order, which can be different in each picking process."},{"name":"physics_object_picking_first_only","type":"bool","description":"If [code]true[/code], the input_event signal will only be sent to one physics object in the mouse picking process. If you want to get the top object only, you must also enable [member physics_object_picking_sort].\n\t\t\tIf [code]false[/code], an input_event signal will be sent to all physics objects in the mouse picking process.\n\t\t\tThis applies to 2D CanvasItem object picking only."},{"name":"physics_object_picking_sort","type":"bool","description":"If [code]true[/code], objects receive mouse picking events sorted primarily by their [member CanvasItem.z_index] and secondarily by their position in the scene tree. If [code]false[/code], the order is undetermined.\n\t\t\t[b]Note:[/b] This setting is disabled by default because of its potential expensive computational cost.\n\t\t\t[b]Note:[/b] Sorting happens after selecting the pickable objects. Because of the limitation of 64 simultaneously pickable objects, it is not guaranteed that the object with the highest [member CanvasItem.z_index] receives the picking event."},{"name":"positional_shadow_atlas_16_bits","type":"bool","description":"Use 16 bits for the omni/spot shadow depth map. Enabling this results in shadows having less precision and may result in shadow acne, but can lead to performance improvements on some devices."},{"name":"positional_shadow_atlas_quad_0","type":"int","description":"The subdivision amount of the first quadrant on the shadow atlas."},{"name":"positional_shadow_atlas_quad_1","type":"int","description":"The subdivision amount of the second quadrant on the shadow atlas."},{"name":"positional_shadow_atlas_quad_2","type":"int","description":"The subdivision amount of the third quadrant on the shadow atlas."},{"name":"positional_shadow_atlas_quad_3","type":"int","description":"The subdivision amount of the fourth quadrant on the shadow atlas."},{"name":"positional_shadow_atlas_size","type":"int","description":"The shadow atlas' resolution (used for omni and spot lights). The value is rounded up to the nearest power of 2.\n\t\t\t[b]Note:[/b] If this is set to [code]0[/code], no positional shadows will be visible at all. This can improve performance significantly on low-end systems by reducing both the CPU and GPU load (as fewer draw calls are needed to draw the scene without shadows)."},{"name":"scaling_3d_mode","type":"int","description":"Sets scaling 3D mode. Bilinear scaling renders at different resolution to either undersample or supersample the viewport. FidelityFX Super Resolution 1.0, abbreviated to FSR, is an upscaling technology that produces high quality images at fast framerates by using a spatially aware upscaling algorithm. FSR is slightly more expensive than bilinear, but it produces significantly higher image quality. FSR should be used where possible.\n\t\t\tTo control this property on the root viewport, set the [member ProjectSettings.rendering/scaling_3d/mode] project setting."},{"name":"scaling_3d_scale","type":"float","description":"Scales the 3D render buffer based on the viewport size uses an image filter specified in [member ProjectSettings.rendering/scaling_3d/mode] to scale the output image to the full viewport size. Values lower than [code]1.0[/code] can be used to speed up 3D rendering at the cost of quality (undersampling). Values greater than [code]1.0[/code] are only valid for bilinear mode and can be used to improve 3D rendering quality at a high performance cost (supersampling). See also [member ProjectSettings.rendering/anti_aliasing/quality/msaa_3d] for multi-sample antialiasing, which is significantly cheaper but only smooths the edges of polygons.\n\t\t\tWhen using FSR upscaling, AMD recommends exposing the following values as preset options to users \"Ultra Quality: 0.77\", \"Quality: 0.67\", \"Balanced: 0.59\", \"Performance: 0.5\" instead of exposing the entire scale.\n\t\t\tTo control this property on the root viewport, set the [member ProjectSettings.rendering/scaling_3d/scale] project setting."},{"name":"screen_space_aa","type":"int","description":"Sets the screen-space antialiasing method used. Screen-space antialiasing works by selectively blurring edges in a post-process shader. It differs from MSAA which takes multiple coverage samples while rendering objects. Screen-space AA methods are typically faster than MSAA and will smooth out specular aliasing, but tend to make scenes appear blurry.\n\t\t\tSee also [member ProjectSettings.rendering/anti_aliasing/quality/screen_space_aa] and [method RenderingServer.viewport_set_screen_space_aa]."},{"name":"sdf_oversize","type":"int","description":"Controls how much of the original viewport's size should be covered by the 2D signed distance field. This SDF can be sampled in [CanvasItem] shaders and is also used for [GPUParticles2D] collision. Higher values allow portions of occluders located outside the viewport to still be taken into account in the generated signed distance field, at the cost of performance. If you notice particles falling through [LightOccluder2D]s as the occluders leave the viewport, increase this setting.\n\t\t\tThe percentage is added on each axis and on both sides. For example, with the default [constant SDF_OVERSIZE_120_PERCENT], the signed distance field will cover 20% of the viewport's size outside the viewport on each side (top, right, bottom, left)."},{"name":"sdf_scale","type":"int","description":"The resolution scale to use for the 2D signed distance field. Higher values lead to a more precise and more stable signed distance field as the camera moves, at the cost of performance."},{"name":"snap_2d_transforms_to_pixel","type":"bool","description":"If [code]true[/code], [CanvasItem] nodes will internally snap to full pixels. Their position can still be sub-pixel, but the decimals will not have effect. This can lead to a crisper appearance at the cost of less smooth movement, especially when [Camera2D] smoothing is enabled."},{"name":"snap_2d_vertices_to_pixel","type":"bool","description":"If [code]true[/code], vertices of [CanvasItem] nodes will snap to full pixels. Only affects the final vertex positions, not the transforms. This can lead to a crisper appearance at the cost of less smooth movement, especially when [Camera2D] smoothing is enabled."},{"name":"texture_mipmap_bias","type":"float","description":"Affects the final texture sharpness by reading from a lower or higher mipmap (also called \"texture LOD bias\"). Negative values make mipmapped textures sharper but grainier when viewed at a distance, while positive values make mipmapped textures blurrier (even when up close).\n\t\t\tEnabling temporal antialiasing ([member use_taa]) will automatically apply a [code]-0.5[/code] offset to this value, while enabling FXAA ([member screen_space_aa]) will automatically apply a [code]-0.25[/code] offset to this value. If both TAA and FXAA are enabled at the same time, an offset of [code]-0.75[/code] is applied to this value.\n\t\t\t[b]Note:[/b] If [member scaling_3d_scale] is lower than [code]1.0[/code] (exclusive), [member texture_mipmap_bias] is used to adjust the automatic mipmap bias which is calculated internally based on the scale factor. The formula for this is [code]log2(scaling_3d_scale) + mipmap_bias[/code].\n\t\t\tTo control this property on the root viewport, set the [member ProjectSettings.rendering/textures/default_filters/texture_mipmap_bias] project setting."},{"name":"transparent_bg","type":"bool","description":"If [code]true[/code], the viewport should render its background as transparent."},{"name":"use_debanding","type":"bool","description":"If [code]true[/code], uses a fast post-processing filter to make banding significantly less visible in 3D. 2D rendering is [i]not[/i] affected by debanding unless the [member Environment.background_mode] is [constant Environment.BG_CANVAS].\n\t\t\tIn some cases, debanding may introduce a slightly noticeable dithering pattern. It's recommended to enable debanding only when actually needed since the dithering pattern will make lossless-compressed screenshots larger.\n\t\t\tSee also [member ProjectSettings.rendering/anti_aliasing/quality/use_debanding] and [method RenderingServer.viewport_set_use_debanding]."},{"name":"use_hdr_2d","type":"bool","description":"If [code]true[/code], 2D rendering will use an high dynamic range (HDR) format framebuffer matching the bit depth of the 3D framebuffer. When using the Forward+ renderer this will be an [code]RGBA16[/code] framebuffer, while when using the Mobile renderer it will be an [code]RGB10_A2[/code] framebuffer. Additionally, 2D rendering will take place in linear color space and will be converted to sRGB space immediately before blitting to the screen (if the Viewport is attached to the screen). Practically speaking, this means that the end result of the Viewport will not be clamped into the [code]0-1[/code] range and can be used in 3D rendering without color space adjustments. This allows 2D rendering to take advantage of effects requiring high dynamic range (e.g. 2D glow) as well as substantially improves the appearance of effects requiring highly detailed gradients.\n\t\t\t[b]Note:[/b] This setting will have no effect when using the Compatibility renderer, which always renders in low dynamic range for performance reasons."},{"name":"use_occlusion_culling","type":"bool","description":"If [code]true[/code], [OccluderInstance3D] nodes will be usable for occlusion culling in 3D for this viewport. For the root viewport, [member ProjectSettings.rendering/occlusion_culling/use_occlusion_culling] must be set to [code]true[/code] instead.\n\t\t\t[b]Note:[/b] Enabling occlusion culling has a cost on the CPU. Only enable occlusion culling if you actually plan to use it, and think whether your scene can actually benefit from occlusion culling. Large, open scenes with few or no objects blocking the view will generally not benefit much from occlusion culling. Large open scenes generally benefit more from mesh LOD and visibility ranges ([member GeometryInstance3D.visibility_range_begin] and [member GeometryInstance3D.visibility_range_end]) compared to occlusion culling.\n\t\t\t[b]Note:[/b] Due to memory constraints, occlusion culling is not supported by default in Web export templates. It can be enabled by compiling custom Web export templates with [code]module_raycast_enabled=yes[/code]."},{"name":"use_taa","type":"bool","description":"Enables temporal antialiasing for this viewport. TAA works by jittering the camera and accumulating the images of the last rendered frames, motion vector rendering is used to account for camera and object motion.\n\t\t\t[b]Note:[/b] The implementation is not complete yet, some visual instances such as particles and skinned meshes may show artifacts.\n\t\t\tSee also [member ProjectSettings.rendering/anti_aliasing/quality/use_taa] and [method RenderingServer.viewport_set_use_taa]."},{"name":"use_xr","type":"bool","description":"If [code]true[/code], the viewport will use the primary XR interface to render XR output. When applicable this can result in a stereoscopic image and the resulting render being output to a headset."},{"name":"vrs_mode","type":"int","description":"The Variable Rate Shading (VRS) mode that is used for this viewport. Note, if hardware does not support VRS this property is ignored."},{"name":"vrs_texture","type":"Texture2D","description":"Texture to use when [member vrs_mode] is set to [constant Viewport.VRS_TEXTURE].\n\t\t\tThe texture [i]must[/i] use a lossless compression format so that colors can be matched precisely. The following VRS densities are mapped to various colors, with brighter colors representing a lower level of shading precision:\n\t\t\t[codeblock lang=text]\n\t\t\t- 1×1 = rgb(0, 0, 0)     - #000000\n\t\t\t- 1×2 = rgb(0, 85, 0)    - #005500\n\t\t\t- 2×1 = rgb(85, 0, 0)    - #550000\n\t\t\t- 2×2 = rgb(85, 85, 0)   - #555500\n\t\t\t- 2×4 = rgb(85, 170, 0)  - #55aa00\n\t\t\t- 4×2 = rgb(170, 85, 0)  - #aa5500\n\t\t\t- 4×4 = rgb(170, 170, 0) - #aaaa00\n\t\t\t- 4×8 = rgb(170, 255, 0) - #aaff00 - Not supported on most hardware\n\t\t\t- 8×4 = rgb(255, 170, 0) - #ffaa00 - Not supported on most hardware\n\t\t\t- 8×8 = rgb(255, 255, 0) - #ffff00 - Not supported on most hardware\n\t\t\t[/codeblock]"},{"name":"vrs_update_mode","type":"int","description":"Sets the update mode for Variable Rate Shading (VRS) for the viewport. VRS requires the input texture to be converted to the format usable by the VRS method supported by the hardware. The update mode defines how often this happens. If the GPU does not support VRS, or VRS is not enabled, this property is ignored."},{"name":"world_2d","type":"World2D","description":"The custom [World2D] which can be used as 2D environment source."},{"name":"world_3d","type":"World3D","description":"The custom [World3D] which can be used as 3D environment source."}],"methods":[{"name":"find_world_2d","signature":"find_world_2d() -> World2D","description":"Returns the first valid  for this viewport, searching the [member world_2d] property of itself and any Viewport ancestor.","returnType":"World2D"},{"name":"find_world_3d","signature":"find_world_3d() -> World3D","description":"Returns the first valid  for this viewport, searching the [member world_3d] property of itself and any Viewport ancestor.","returnType":"World3D"},{"name":"get_audio_listener_2d","signature":"get_audio_listener_2d() -> AudioListener2D","description":"Returns the currently active 2D audio listener. Returns null if there are no active 2D audio listeners, in which case the active 2D camera will be treated as listener.","returnType":"AudioListener2D"},{"name":"get_audio_listener_3d","signature":"get_audio_listener_3d() -> AudioListener3D","description":"Returns the currently active 3D audio listener. Returns null if there are no active 3D audio listeners, in which case the active 3D camera will be treated as listener.","returnType":"AudioListener3D"},{"name":"get_camera_2d","signature":"get_camera_2d() -> Camera2D","description":"Returns the currently active 2D camera. Returns null if there are no active cameras.","returnType":"Camera2D"},{"name":"get_camera_3d","signature":"get_camera_3d() -> Camera3D","description":"Returns the currently active 3D camera.","returnType":"Camera3D"},{"name":"get_canvas_cull_mask_bit","signature":"get_canvas_cull_mask_bit(layer: int) -> bool","description":"Returns an individual bit on the rendering layer mask.","returnType":"bool"},{"name":"get_embedded_subwindows","signature":"get_embedded_subwindows() -> Window[]","description":"Returns a list of the visible embedded s inside the viewport.\n\t\t\t\tNote: s inside other viewports will not be listed.","returnType":"Window[]"},{"name":"get_final_transform","signature":"get_final_transform() -> Transform2D","description":"Returns the transform from the viewport's coordinate system to the embedder's coordinate system.","returnType":"Transform2D"},{"name":"get_mouse_position","signature":"get_mouse_position() -> Vector2","description":"Returns the mouse's position in this  using the coordinate system of this .","returnType":"Vector2"},{"name":"get_positional_shadow_atlas_quadrant_subdiv","signature":"get_positional_shadow_atlas_quadrant_subdiv(quadrant: int) -> int","description":"Returns the positional shadow atlas quadrant subdivision of the specified quadrant.","returnType":"int"},{"name":"get_render_info","signature":"get_render_info(type: int, info: int) -> int","description":"Returns rendering statistics of the given type. See [enum RenderInfoType] and [enum RenderInfo] for options.","returnType":"int"},{"name":"get_screen_transform","signature":"get_screen_transform() -> Transform2D","description":"Returns the transform from the Viewport's coordinates to the screen coordinates of the containing window manager window.","returnType":"Transform2D"},{"name":"get_stretch_transform","signature":"get_stretch_transform() -> Transform2D","description":"Returns the automatically computed 2D stretch transform, taking the 's stretch settings into account. The final value is multiplied by [member Window.content_scale_factor], but only for the root viewport. If this method is called on a  (e.g., in a scene tree with  and ), the scale factor of the root window will not be applied. Using [method Transform2D.get_scale] on the returned value, this can be used to compensate for scaling when zooming a  node, or to scale down a  to be pixel-perfect regardless of the automatically computed scale factor.\n\t\t\t\tNote: Due to how pixel scaling works, the returned transform's X and Y scale may differ slightly, even when [member Window.content_scale_aspect] is set to a mode that preserves the pixels' aspect ratio. If [member Window.content_scale_aspect] is [constant Window.CONTENT_SCALE_ASPECT_IGNORE], the X and Y scale may differ significantly.","returnType":"Transform2D"},{"name":"get_texture","signature":"get_texture() -> ViewportTexture","description":"Returns the viewport's texture.\n\t\t\t\tNote: When trying to store the current texture (e.g. in a file), it might be completely black or outdated if used too early, especially when used in e.g. [method Node._ready]. To make sure the texture you get is correct, you can await [signal RenderingServer.frame_post_draw] signal.\n\t\t\t\t\n\t\t\t\tfunc _ready():\n\t\t\t\t    await RenderingServer.frame_post_draw\n\t\t\t\t    $Viewport.get_texture().get_image().save_png(\"user://Screenshot.png\")\n\t\t\t\t\n\t\t\t\tNote: When [member use_hdr_2d] is true the returned texture will be an HDR image encoded in linear space.","returnType":"ViewportTexture"},{"name":"get_viewport_rid","signature":"get_viewport_rid() -> RID","description":"Returns the viewport's RID from the .","returnType":"RID"},{"name":"get_visible_rect","signature":"get_visible_rect() -> Rect2","description":"Returns the visible rectangle in global screen coordinates.","returnType":"Rect2"},{"name":"gui_cancel_drag","signature":"gui_cancel_drag() -> void","description":"Cancels the drag operation that was previously started through [method Control._get_drag_data] or forced with [method Control.force_drag].","returnType":"void"},{"name":"gui_get_drag_data","signature":"gui_get_drag_data() -> Variant","description":"Returns the drag data from the GUI, that was previously returned by [method Control._get_drag_data].","returnType":"Variant"},{"name":"gui_get_focus_owner","signature":"gui_get_focus_owner() -> Control","description":"Returns the currently focused  within this viewport. If no  is focused, returns null.","returnType":"Control"},{"name":"gui_get_hovered_control","signature":"gui_get_hovered_control() -> Control","description":"Returns the  that the mouse is currently hovering over in this viewport. If no  has the cursor, returns null.\n\t\t\t\tTypically the leaf  node or deepest level of the subtree which claims hover. This is very useful when used together with [method Node.is_ancestor_of] to find if the mouse is within a control tree.","returnType":"Control"},{"name":"gui_is_drag_successful","signature":"gui_is_drag_successful() -> bool","description":"Returns true if the drag operation is successful.","returnType":"bool"},{"name":"gui_is_dragging","signature":"gui_is_dragging() -> bool","description":"Returns true if a drag operation is currently ongoing and where the drop action could happen in this viewport.\n\t\t\t\tAlternative to [constant Node.NOTIFICATION_DRAG_BEGIN] and [constant Node.NOTIFICATION_DRAG_END] when you prefer polling the value.","returnType":"bool"},{"name":"gui_release_focus","signature":"gui_release_focus() -> void","description":"Removes the focus from the currently focused  within this viewport. If no  has the focus, does nothing.","returnType":"void"},{"name":"is_input_handled","signature":"is_input_handled() -> bool","description":"Returns whether the current  has been handled. Input events are not handled until [method set_input_as_handled] has been called during the lifetime of an .\n\t\t\t\tThis is usually done as part of input handling methods like [method Node._input], [method Control._gui_input] or others, as well as in corresponding signal handlers.\n\t\t\t\tIf [member handle_input_locally] is set to false, this method will try finding the first parent viewport that is set to handle input locally, and return its value for [method is_input_handled] instead.","returnType":"bool"},{"name":"notify_mouse_entered","signature":"notify_mouse_entered() -> void","description":"Inform the Viewport that the mouse has entered its area. Use this function before sending an  or  to the  with [method Viewport.push_input]. See also [method notify_mouse_exited].\n\t\t\t\tNote: In most cases, it is not necessary to call this function because  nodes that are children of  are notified automatically. This is only necessary when interacting with viewports in non-default ways, for example as textures in  or with an  that forwards input events.","returnType":"void"},{"name":"notify_mouse_exited","signature":"notify_mouse_exited() -> void","description":"Inform the Viewport that the mouse has left its area. Use this function when the node that displays the viewport notices the mouse has left the area of the displayed viewport. See also [method notify_mouse_entered].\n\t\t\t\tNote: In most cases, it is not necessary to call this function because  nodes that are children of  are notified automatically. This is only necessary when interacting with viewports in non-default ways, for example as textures in  or with an  that forwards input events.","returnType":"void"},{"name":"push_input","signature":"push_input(event: InputEvent, in_local_coords: bool) -> void","description":"Triggers the given [param event] in this . This can be used to pass an  between viewports, or to locally apply inputs that were sent over the network or saved to a file.\n\t\t\t\tIf [param in_local_coords] is false, the event's position is in the embedder's coordinates and will be converted to viewport coordinates. If [param in_local_coords] is true, the event's position is in viewport coordinates.\n\t\t\t\tWhile this method serves a similar purpose as [method Input.parse_input_event], it does not remap the specified [param event] based on project settings like [member ProjectSettings.input_devices/pointing/emulate_touch_from_mouse].\n\t\t\t\tCalling this method will propagate calls to child nodes for following methods in the given order:\n\t\t\t\t- [method Node._input]\n\t\t\t\t- [method Control._gui_input] for  nodes\n\t\t\t\t- [method Node._shortcut_input]\n\t\t\t\t- [method Node._unhandled_key_input]\n\t\t\t\t- [method Node._unhandled_input]\n\t\t\t\tIf an earlier method marks the input as handled via [method set_input_as_handled], any later method in this list will not be called.\n\t\t\t\tIf none of the methods handle the event and [member physics_object_picking] is true, the event is used for physics object picking.","returnType":"void"},{"name":"push_text_input","signature":"push_text_input(text: String) -> void","description":"Helper method which calls the set_text() method on the currently focused , provided that it is defined (e.g. if the focused Control is  or ).","returnType":"void"},{"name":"push_unhandled_input","signature":"push_unhandled_input(event: InputEvent, in_local_coords: bool) -> void","description":"Triggers the given [param event] in this . This can be used to pass an  between viewports, or to locally apply inputs that were sent over the network or saved to a file.\n\t\t\t\tIf [param in_local_coords] is false, the event's position is in the embedder's coordinates and will be converted to viewport coordinates. If [param in_local_coords] is true, the event's position is in viewport coordinates.\n\t\t\t\tCalling this method will propagate calls to child nodes for following methods in the given order:\n\t\t\t\t- [method Node._shortcut_input]\n\t\t\t\t- [method Node._unhandled_key_input]\n\t\t\t\t- [method Node._unhandled_input]\n\t\t\t\tIf an earlier method marks the input as handled via [method set_input_as_handled], any later method in this list will not be called.\n\t\t\t\tIf none of the methods handle the event and [member physics_object_picking] is true, the event is used for physics object picking.\n\t\t\t\tNote: This method doesn't propagate input events to embedded s or s.","returnType":"void"},{"name":"set_canvas_cull_mask_bit","signature":"set_canvas_cull_mask_bit(layer: int, enable: bool) -> void","description":"Set/clear individual bits on the rendering layer mask. This simplifies editing this 's layers.","returnType":"void"},{"name":"set_input_as_handled","signature":"set_input_as_handled() -> void","description":"Stops the input from propagating further down the .\n\t\t\t\tNote: This does not affect the methods in , only the way events are propagated.","returnType":"void"},{"name":"set_positional_shadow_atlas_quadrant_subdiv","signature":"set_positional_shadow_atlas_quadrant_subdiv(quadrant: int, subdiv: int) -> void","description":"Sets the number of subdivisions to use in the specified quadrant. A higher number of subdivisions allows you to have more shadows in the scene at once, but reduces the quality of the shadows. A good practice is to have quadrants with a varying number of subdivisions and to have as few subdivisions as possible.","returnType":"void"},{"name":"update_mouse_cursor_state","signature":"update_mouse_cursor_state() -> void","description":"Force instantly updating the display based on the current mouse cursor position. This includes updating the mouse cursor shape and sending necessary [signal Control.mouse_entered], [signal CollisionObject2D.mouse_entered], [signal CollisionObject3D.mouse_entered] and [signal Window.mouse_entered] signals and their respective mouse_exited counterparts.","returnType":"void"},{"name":"warp_mouse","signature":"warp_mouse(position: Vector2) -> void","description":"Moves the mouse pointer to the specified position in this  using the coordinate system of this .\n\t\t\t\tNote: [method warp_mouse] is only supported on Windows, macOS and Linux. It has no effect on Android, iOS and Web.","returnType":"void"}],"signals":[{"name":"gui_focus_changed","description":"Emitted when a Control node grabs keyboard focus.\n\t\t\t\t[b]Note:[/b] A Control node losing focus doesn't cause this signal to be emitted."},{"name":"size_changed","description":"Emitted when the size of the viewport is changed, whether by resizing of window, or some other means."}]},"ViewportTexture":{"name":"ViewportTexture","description":"Provides the content of a  as a dynamic texture.","inherits":"Texture2D","properties":[{"name":"viewport_path","type":"NodePath","description":"The path to the [Viewport] node to display. This is relative to the local scene root (see [method Resource.get_local_scene]), [b]not[/b] to the nodes that use this texture.\n\t\t\t[b]Note:[/b] In the editor, this path is automatically updated when the target viewport or one of its ancestors is renamed or moved. At runtime, this path may not automatically update if the scene root cannot be found."}],"methods":[],"signals":[]},"VisibleOnScreenEnabler2D":{"name":"VisibleOnScreenEnabler2D","description":"A rectangular region of 2D space that, when visible on screen, enables a target node.","inherits":"VisibleOnScreenNotifier2D","properties":[{"name":"enable_mode","type":"int","description":"Determines how the target node is enabled. Corresponds to [enum Node.ProcessMode]. When the node is disabled, it always uses [constant Node.PROCESS_MODE_DISABLED]."},{"name":"enable_node_path","type":"NodePath","description":"The path to the target node, relative to the [VisibleOnScreenEnabler2D]. The target node is cached; it's only assigned when setting this property (if the [VisibleOnScreenEnabler2D] is inside the scene tree) and every time the [VisibleOnScreenEnabler2D] enters the scene tree. If the path is empty, no node will be affected. If the path is invalid, an error is also generated."}],"methods":[],"signals":[]},"VisibleOnScreenEnabler3D":{"name":"VisibleOnScreenEnabler3D","description":"A box-shaped region of 3D space that, when visible on screen, enables a target node.","inherits":"VisibleOnScreenNotifier3D","properties":[{"name":"enable_mode","type":"int","description":"Determines how the target node is enabled. Corresponds to [enum Node.ProcessMode]. When the node is disabled, it always uses [constant Node.PROCESS_MODE_DISABLED]."},{"name":"enable_node_path","type":"NodePath","description":"The path to the target node, relative to the [VisibleOnScreenEnabler3D]. The target node is cached; it's only assigned when setting this property (if the [VisibleOnScreenEnabler3D] is inside the scene tree) and every time the [VisibleOnScreenEnabler3D] enters the scene tree. If the path is empty, no node will be affected. If the path is invalid, an error is also generated."}],"methods":[],"signals":[]},"VisibleOnScreenNotifier2D":{"name":"VisibleOnScreenNotifier2D","description":"A rectangular region of 2D space that detects whether it is visible on screen.","inherits":"Node2D","properties":[{"name":"rect","type":"Rect2","description":"The VisibleOnScreenNotifier2D's bounding rectangle."}],"methods":[{"name":"is_on_screen","signature":"is_on_screen() -> bool","description":"If true, the bounding rectangle is on the screen.\n\t\t\t\tNote: It takes one frame for the 's visibility to be determined once added to the scene tree, so this method will always return false right after it is instantiated, before the draw pass.","returnType":"bool"}],"signals":[{"name":"screen_entered","description":"Emitted when the VisibleOnScreenNotifier2D enters the screen."},{"name":"screen_exited","description":"Emitted when the VisibleOnScreenNotifier2D exits the screen."}]},"VisibleOnScreenNotifier3D":{"name":"VisibleOnScreenNotifier3D","description":"A box-shaped region of 3D space that detects whether it is visible on screen.","inherits":"VisualInstance3D","properties":[{"name":"aabb","type":"AABB","description":"The [VisibleOnScreenNotifier3D]'s bounding box."}],"methods":[{"name":"is_on_screen","signature":"is_on_screen() -> bool","description":"Returns true if the bounding box is on the screen.\n\t\t\t\tNote: It takes one frame for the 's visibility to be assessed once added to the scene tree, so this method will always return false right after it is instantiated.","returnType":"bool"}],"signals":[{"name":"screen_entered","description":"Emitted when the [VisibleOnScreenNotifier3D] enters the screen."},{"name":"screen_exited","description":"Emitted when the [VisibleOnScreenNotifier3D] exits the screen."}]},"VisualInstance3D":{"name":"VisualInstance3D","description":"Parent of all visual 3D nodes.","inherits":"Node3D","properties":[{"name":"layers","type":"int","description":"The render layer(s) this [VisualInstance3D] is drawn on.\n\t\t\tThis object will only be visible for [Camera3D]s whose cull mask includes any of the render layers this [VisualInstance3D] is set to.\n\t\t\tFor [Light3D]s, this can be used to control which [VisualInstance3D]s are affected by a specific light. For [GPUParticles3D], this can be used to control which particles are effected by a specific attractor. For [Decal]s, this can be used to control which [VisualInstance3D]s are affected by a specific decal.\n\t\t\tTo adjust [member layers] more easily using a script, use [method get_layer_mask_value] and [method set_layer_mask_value].\n\t\t\t[b]Note:[/b] [VoxelGI], SDFGI and [LightmapGI] will always take all layers into account to determine what contributes to global illumination. If this is an issue, set [member GeometryInstance3D.gi_mode] to [constant GeometryInstance3D.GI_MODE_DISABLED] for meshes and [member Light3D.light_bake_mode] to [constant Light3D.BAKE_DISABLED] for lights to exclude them from global illumination."},{"name":"sorting_offset","type":"float","description":"The amount by which the depth of this [VisualInstance3D] will be adjusted when sorting by depth. Uses the same units as the engine (which are typically meters). Adjusting it to a higher value will make the [VisualInstance3D] reliably draw on top of other [VisualInstance3D]s that are otherwise positioned at the same spot. To ensure it always draws on top of other objects around it (not positioned at the same spot), set the value to be greater than the distance between this [VisualInstance3D] and the other nearby [VisualInstance3D]s."},{"name":"sorting_use_aabb_center","type":"bool","description":"If [code]true[/code], the object is sorted based on the [AABB] center. The object will be sorted based on the global position otherwise.\n\t\t\tThe [AABB] center based sorting is generally more accurate for 3D models. The position based sorting instead allows to better control the drawing order when working with [GPUParticles3D] and [CPUParticles3D]."}],"methods":[{"name":"_get_aabb","signature":"_get_aabb() -> AABB","description":"","returnType":"AABB"},{"name":"get_aabb","signature":"get_aabb() -> AABB","description":"Returns the  (also known as the bounding box) for this .","returnType":"AABB"},{"name":"get_base","signature":"get_base() -> RID","description":"Returns the RID of the resource associated with this . For example, if the Node is a , this will return the RID of the associated .","returnType":"RID"},{"name":"get_instance","signature":"get_instance() -> RID","description":"Returns the RID of this instance. This RID is the same as the RID returned by [method RenderingServer.instance_create]. This RID is needed if you want to call  functions directly on this .","returnType":"RID"},{"name":"get_layer_mask_value","signature":"get_layer_mask_value(layer_number: int) -> bool","description":"Returns whether or not the specified layer of the [member layers] is enabled, given a [param layer_number] between 1 and 20.","returnType":"bool"},{"name":"set_base","signature":"set_base(base: RID) -> void","description":"Sets the resource that is instantiated by this , which changes how the engine handles the  under the hood. Equivalent to [method RenderingServer.instance_set_base].","returnType":"void"},{"name":"set_layer_mask_value","signature":"set_layer_mask_value(layer_number: int, value: bool) -> void","description":"Based on [param value], enables or disables the specified layer in the [member layers], given a [param layer_number] between 1 and 20.","returnType":"void"}],"signals":[]},"VisualShader":{"name":"VisualShader","description":"A custom shader program with a visual editor.","inherits":"Shader","properties":[{"name":"graph_offset","type":"Vector2","description":"The offset vector of the whole graph."}],"methods":[{"name":"add_node","signature":"add_node(type: int, node: VisualShaderNode, position: Vector2, id: int) -> void","description":"Adds the specified [param node] to the shader.","returnType":"void"},{"name":"add_varying","signature":"add_varying(name: String, mode: int, type: int) -> void","description":"Adds a new varying value node to the shader.","returnType":"void"},{"name":"attach_node_to_frame","signature":"attach_node_to_frame(type: int, id: int, frame: int) -> void","description":"Attaches the given node to the given frame.","returnType":"void"},{"name":"can_connect_nodes","signature":"can_connect_nodes(type: int, from_node: int, from_port: int, to_node: int, to_port: int) -> bool","description":"Returns true if the specified nodes and ports can be connected together.","returnType":"bool"},{"name":"connect_nodes","signature":"connect_nodes(type: int, from_node: int, from_port: int, to_node: int, to_port: int) -> int","description":"Connects the specified nodes and ports.","returnType":"int"},{"name":"connect_nodes_forced","signature":"connect_nodes_forced(type: int, from_node: int, from_port: int, to_node: int, to_port: int) -> void","description":"Connects the specified nodes and ports, even if they can't be connected. Such connection is invalid and will not function properly.","returnType":"void"},{"name":"detach_node_from_frame","signature":"detach_node_from_frame(type: int, id: int) -> void","description":"Detaches the given node from the frame it is attached to.","returnType":"void"},{"name":"disconnect_nodes","signature":"disconnect_nodes(type: int, from_node: int, from_port: int, to_node: int, to_port: int) -> void","description":"Connects the specified nodes and ports.","returnType":"void"},{"name":"get_node","signature":"get_node(type: int, id: int) -> VisualShaderNode","description":"Returns the shader node instance with specified [param type] and [param id].","returnType":"VisualShaderNode"},{"name":"get_node_connections","signature":"get_node_connections(type: int) -> Dictionary[]","description":"Returns the list of connected nodes with the specified type.","returnType":"Dictionary[]"},{"name":"get_node_list","signature":"get_node_list(type: int) -> PackedInt32Array","description":"Returns the list of all nodes in the shader with the specified type.","returnType":"PackedInt32Array"},{"name":"get_node_position","signature":"get_node_position(type: int, id: int) -> Vector2","description":"Returns the position of the specified node within the shader graph.","returnType":"Vector2"},{"name":"get_valid_node_id","signature":"get_valid_node_id(type: int) -> int","description":"Returns next valid node ID that can be added to the shader graph.","returnType":"int"},{"name":"has_varying","signature":"has_varying(name: String) -> bool","description":"Returns true if the shader has a varying with the given [param name].","returnType":"bool"},{"name":"is_node_connection","signature":"is_node_connection(type: int, from_node: int, from_port: int, to_node: int, to_port: int) -> bool","description":"Returns true if the specified node and port connection exist.","returnType":"bool"},{"name":"remove_node","signature":"remove_node(type: int, id: int) -> void","description":"Removes the specified node from the shader.","returnType":"void"},{"name":"remove_varying","signature":"remove_varying(name: String) -> void","description":"Removes a varying value node with the given [param name]. Prints an error if a node with this name is not found.","returnType":"void"},{"name":"replace_node","signature":"replace_node(type: int, id: int, new_class: StringName) -> void","description":"Replaces the specified node with a node of new class type.","returnType":"void"},{"name":"set_mode","signature":"set_mode(mode: int) -> void","description":"Sets the mode of this shader.","returnType":"void"},{"name":"set_node_position","signature":"set_node_position(type: int, id: int, position: Vector2) -> void","description":"Sets the position of the specified node.","returnType":"void"}],"signals":[]},"VisualShaderNode":{"name":"VisualShaderNode","description":"Base class for  nodes. Not related to scene nodes.","inherits":"Resource","properties":[{"name":"linked_parent_graph_frame","type":"int","description":"Represents the index of the frame this node is linked to. If set to [code]-1[/code] the node is not linked to any frame."},{"name":"output_port_for_preview","type":"int","description":"Sets the output port index which will be showed for preview. If set to [code]-1[/code] no port will be open for preview."}],"methods":[{"name":"clear_default_input_values","signature":"clear_default_input_values() -> void","description":"Clears the default input ports value.","returnType":"void"},{"name":"get_default_input_port","signature":"get_default_input_port(type: int) -> int","description":"Returns the input port which should be connected by default when this node is created as a result of dragging a connection from an existing node to the empty space on the graph.","returnType":"int"},{"name":"get_default_input_values","signature":"get_default_input_values() -> Array","description":"Returns an  containing default values for all of the input ports of the node in the form [index0, value0, index1, value1, ...].","returnType":"Array"},{"name":"get_input_port_default_value","signature":"get_input_port_default_value(port: int) -> Variant","description":"Returns the default value of the input [param port].","returnType":"Variant"},{"name":"remove_input_port_default_value","signature":"remove_input_port_default_value(port: int) -> void","description":"Removes the default value of the input [param port].","returnType":"void"},{"name":"set_default_input_values","signature":"set_default_input_values(values: Array) -> void","description":"Sets the default input ports values using an  of the form [index0, value0, index1, value1, ...]. For example: [0, Vector3(0, 0, 0), 1, Vector3(0, 0, 0)].","returnType":"void"},{"name":"set_input_port_default_value","signature":"set_input_port_default_value(port: int, value: Variant, prev_value: Variant) -> void","description":"Sets the default [param value] for the selected input [param port].","returnType":"void"}],"signals":[]},"VisualShaderNodeBillboard":{"name":"VisualShaderNodeBillboard","description":"A node that controls how the object faces the camera to be used within the visual shader graph.","inherits":"VisualShaderNode","properties":[{"name":"billboard_type","type":"int","description":"Controls how the object faces the camera. See [enum BillboardType]."},{"name":"keep_scale","type":"bool","description":"If [code]true[/code], the shader will keep the scale set for the mesh. Otherwise, the scale is lost when billboarding."}],"methods":[],"signals":[]},"VisualShaderNodeBooleanConstant":{"name":"VisualShaderNodeBooleanConstant","description":"A boolean constant to be used within the visual shader graph.","inherits":"VisualShaderNodeConstant","properties":[{"name":"constant","type":"bool","description":"A boolean constant which represents a state of this node."}],"methods":[],"signals":[]},"VisualShaderNodeBooleanParameter":{"name":"VisualShaderNodeBooleanParameter","description":"A boolean parameter to be used within the visual shader graph.","inherits":"VisualShaderNodeParameter","properties":[{"name":"default_value","type":"bool","description":"A default value to be assigned within the shader."},{"name":"default_value_enabled","type":"bool","description":"Enables usage of the [member default_value]."}],"methods":[],"signals":[]},"VisualShaderNodeClamp":{"name":"VisualShaderNodeClamp","description":"Clamps a value within the visual shader graph.","inherits":"VisualShaderNode","properties":[{"name":"op_type","type":"int","description":"A type of operands and returned value."}],"methods":[],"signals":[]},"VisualShaderNodeColorConstant":{"name":"VisualShaderNodeColorConstant","description":"A  constant to be used within the visual shader graph.","inherits":"VisualShaderNodeConstant","properties":[{"name":"constant","type":"Color","description":"A [Color] constant which represents a state of this node."}],"methods":[],"signals":[]},"VisualShaderNodeColorFunc":{"name":"VisualShaderNodeColorFunc","description":"A  function to be used within the visual shader graph.","inherits":"VisualShaderNode","properties":[{"name":"function","type":"int","description":"A function to be applied to the input color. See [enum Function] for options."}],"methods":[],"signals":[]},"VisualShaderNodeColorOp":{"name":"VisualShaderNodeColorOp","description":"A  operator to be used within the visual shader graph.","inherits":"VisualShaderNode","properties":[{"name":"operator","type":"int","description":"An operator to be applied to the inputs. See [enum Operator] for options."}],"methods":[],"signals":[]},"VisualShaderNodeColorParameter":{"name":"VisualShaderNodeColorParameter","description":"A  parameter to be used within the visual shader graph.","inherits":"VisualShaderNodeParameter","properties":[{"name":"default_value","type":"Color","description":"A default value to be assigned within the shader."},{"name":"default_value_enabled","type":"bool","description":"Enables usage of the [member default_value]."}],"methods":[],"signals":[]},"VisualShaderNodeComment":{"name":"VisualShaderNodeComment","description":"Only exists for compatibility. Use  as a replacement.","inherits":"VisualShaderNodeFrame","properties":[{"name":"description","type":"String","description":"This property only exists to preserve data authored in earlier versions of Godot. It has currently no function."}],"methods":[],"signals":[]},"VisualShaderNodeCompare":{"name":"VisualShaderNodeCompare","description":"A comparison function for common types within the visual shader graph.","inherits":"VisualShaderNode","properties":[{"name":"condition","type":"int","description":"Extra condition which is applied if [member type] is set to [constant CTYPE_VECTOR_3D]."},{"name":"function","type":"int","description":"A comparison function. See [enum Function] for options."},{"name":"type","type":"int","description":"The type to be used in the comparison. See [enum ComparisonType] for options."}],"methods":[],"signals":[]},"VisualShaderNodeConstant":{"name":"VisualShaderNodeConstant","description":"A base type for the constants within the visual shader graph.","inherits":"VisualShaderNode","properties":[],"methods":[],"signals":[]},"VisualShaderNodeCubemap":{"name":"VisualShaderNodeCubemap","description":"A  sampling node to be used within the visual shader graph.","inherits":"VisualShaderNode","properties":[{"name":"cube_map","type":"TextureLayered","description":"The [Cubemap] texture to sample when using [constant SOURCE_TEXTURE] as [member source]."},{"name":"source","type":"int","description":"Defines which source should be used for the sampling. See [enum Source] for options."},{"name":"texture_type","type":"int","description":"Defines the type of data provided by the source texture. See [enum TextureType] for options."}],"methods":[],"signals":[]},"VisualShaderNodeCubemapParameter":{"name":"VisualShaderNodeCubemapParameter","description":"A  parameter node to be used within the visual shader graph.","inherits":"VisualShaderNodeTextureParameter","properties":[],"methods":[],"signals":[]},"VisualShaderNodeCurveTexture":{"name":"VisualShaderNodeCurveTexture","description":"Performs a  lookup within the visual shader graph.","inherits":"VisualShaderNodeResizableBase","properties":[{"name":"texture","type":"CurveTexture","description":"The source texture."}],"methods":[],"signals":[]},"VisualShaderNodeCurveXYZTexture":{"name":"VisualShaderNodeCurveXYZTexture","description":"Performs a  lookup within the visual shader graph.","inherits":"VisualShaderNodeResizableBase","properties":[{"name":"texture","type":"CurveXYZTexture","description":"The source texture."}],"methods":[],"signals":[]},"VisualShaderNodeCustom":{"name":"VisualShaderNodeCustom","description":"Virtual class to define custom s for use in the Visual Shader Editor.","inherits":"VisualShaderNode","properties":[],"methods":[{"name":"_get_category","signature":"_get_category() -> String","description":"Override this method to define the path to the associated custom node in the Visual Shader Editor's members dialog. The path may look like \"MyGame/MyFunctions/Noise\".\n\t\t\t\tDefining this method is optional. If not overridden, the node will be filed under the \"Addons\" category.","returnType":"String"},{"name":"_get_code","signature":"_get_code(input_vars: String[], output_vars: String[], mode: int, type: int) -> String","description":"Override this method to define the actual shader code of the associated custom node. The shader code should be returned as a string, which can have multiple lines (the \"\"\" multiline string construct can be used for convenience).\n\t\t\t\tThe [param input_vars] and [param output_vars] arrays contain the string names of the various input and output variables, as defined by _get_input_* and _get_output_* virtual methods in this class.\n\t\t\t\tThe output ports can be assigned values in the shader code. For example, return output_vars + \" = \" + input_vars + \";\".\n\t\t\t\tYou can customize the generated code based on the shader [param mode] (see [enum Shader.Mode]) and/or [param type] (see [enum VisualShader.Type]).\n\t\t\t\tDefining this method is required.","returnType":"String"},{"name":"_get_default_input_port","signature":"_get_default_input_port(type: int) -> int","description":"Override this method to define the input port which should be connected by default when this node is created as a result of dragging a connection from an existing node to the empty space on the graph.\n\t\t\t\tDefining this method is optional. If not overridden, the connection will be created to the first valid port.","returnType":"int"},{"name":"_get_description","signature":"_get_description() -> String","description":"Override this method to define the description of the associated custom node in the Visual Shader Editor's members dialog.\n\t\t\t\tDefining this method is optional.","returnType":"String"},{"name":"_get_func_code","signature":"_get_func_code(mode: int, type: int) -> String","description":"Override this method to add a shader code to the beginning of each shader function (once). The shader code should be returned as a string, which can have multiple lines (the \"\"\" multiline string construct can be used for convenience).\n\t\t\t\tIf there are multiple custom nodes of different types which use this feature the order of each insertion is undefined.\n\t\t\t\tYou can customize the generated code based on the shader [param mode] (see [enum Shader.Mode]) and/or [param type] (see [enum VisualShader.Type]).\n\t\t\t\tDefining this method is optional.","returnType":"String"},{"name":"_get_global_code","signature":"_get_global_code(mode: int) -> String","description":"Override this method to add shader code on top of the global shader, to define your own standard library of reusable methods, varyings, constants, uniforms, etc. The shader code should be returned as a string, which can have multiple lines (the \"\"\" multiline string construct can be used for convenience).\n\t\t\t\tBe careful with this functionality as it can cause name conflicts with other custom nodes, so be sure to give the defined entities unique names.\n\t\t\t\tYou can customize the generated code based on the shader [param mode] (see [enum Shader.Mode]).\n\t\t\t\tDefining this method is optional.","returnType":"String"},{"name":"_get_input_port_count","signature":"_get_input_port_count() -> int","description":"Override this method to define the number of input ports of the associated custom node.\n\t\t\t\tDefining this method is required. If not overridden, the node has no input ports.","returnType":"int"},{"name":"_get_input_port_default_value","signature":"_get_input_port_default_value(port: int) -> Variant","description":"Override this method to define the default value for the specified input port. Prefer use this over [method VisualShaderNode.set_input_port_default_value].\n\t\t\t\tDefining this method is required. If not overridden, the node has no default values for their input ports.","returnType":"Variant"},{"name":"_get_input_port_name","signature":"_get_input_port_name(port: int) -> String","description":"Override this method to define the names of input ports of the associated custom node. The names are used both for the input slots in the editor and as identifiers in the shader code, and are passed in the input_vars array in [method _get_code].\n\t\t\t\tDefining this method is optional, but recommended. If not overridden, input ports are named as \"in\" + str(port).","returnType":"String"},{"name":"_get_input_port_type","signature":"_get_input_port_type(port: int) -> int","description":"Override this method to define the returned type of each input port of the associated custom node (see [enum VisualShaderNode.PortType] for possible types).\n\t\t\t\tDefining this method is optional, but recommended. If not overridden, input ports will return the [constant VisualShaderNode.PORT_TYPE_SCALAR] type.","returnType":"int"},{"name":"_get_name","signature":"_get_name() -> String","description":"Override this method to define the name of the associated custom node in the Visual Shader Editor's members dialog and graph.\n\t\t\t\tDefining this method is optional, but recommended. If not overridden, the node will be named as \"Unnamed\".","returnType":"String"},{"name":"_get_output_port_count","signature":"_get_output_port_count() -> int","description":"Override this method to define the number of output ports of the associated custom node.\n\t\t\t\tDefining this method is required. If not overridden, the node has no output ports.","returnType":"int"},{"name":"_get_output_port_name","signature":"_get_output_port_name(port: int) -> String","description":"Override this method to define the names of output ports of the associated custom node. The names are used both for the output slots in the editor and as identifiers in the shader code, and are passed in the output_vars array in [method _get_code].\n\t\t\t\tDefining this method is optional, but recommended. If not overridden, output ports are named as \"out\" + str(port).","returnType":"String"},{"name":"_get_output_port_type","signature":"_get_output_port_type(port: int) -> int","description":"Override this method to define the returned type of each output port of the associated custom node (see [enum VisualShaderNode.PortType] for possible types).\n\t\t\t\tDefining this method is optional, but recommended. If not overridden, output ports will return the [constant VisualShaderNode.PORT_TYPE_SCALAR] type.","returnType":"int"},{"name":"_get_property_count","signature":"_get_property_count() -> int","description":"Override this method to define the number of the properties.\n\t\t\t\tDefining this method is optional.","returnType":"int"},{"name":"_get_property_default_index","signature":"_get_property_default_index(index: int) -> int","description":"Override this method to define the default index of the property of the associated custom node.\n\t\t\t\tDefining this method is optional.","returnType":"int"},{"name":"_get_property_name","signature":"_get_property_name(index: int) -> String","description":"Override this method to define the names of the property of the associated custom node.\n\t\t\t\tDefining this method is optional.","returnType":"String"},{"name":"_get_property_options","signature":"_get_property_options(index: int) -> PackedStringArray","description":"Override this method to define the options inside the drop-down list property of the associated custom node.\n\t\t\t\tDefining this method is optional.","returnType":"PackedStringArray"},{"name":"_get_return_icon_type","signature":"_get_return_icon_type() -> int","description":"Override this method to define the return icon of the associated custom node in the Visual Shader Editor's members dialog.\n\t\t\t\tDefining this method is optional. If not overridden, no return icon is shown.","returnType":"int"},{"name":"_is_available","signature":"_is_available(mode: int, type: int) -> bool","description":"Override this method to prevent the node to be visible in the member dialog for the certain [param mode] (see [enum Shader.Mode]) and/or [param type] (see [enum VisualShader.Type]).\n\t\t\t\tDefining this method is optional. If not overridden, it's true.","returnType":"bool"},{"name":"_is_highend","signature":"_is_highend() -> bool","description":"Override this method to enable high-end mark in the Visual Shader Editor's members dialog.\n\t\t\t\tDefining this method is optional. If not overridden, it's false.","returnType":"bool"},{"name":"get_option_index","signature":"get_option_index(option: int) -> int","description":"Returns the selected index of the drop-down list option within a graph. You may use this function to define the specific behavior in the [method _get_code] or [method _get_global_code].","returnType":"int"}],"signals":[]},"VisualShaderNodeDerivativeFunc":{"name":"VisualShaderNodeDerivativeFunc","description":"Calculates a derivative within the visual shader graph.","inherits":"VisualShaderNode","properties":[{"name":"function","type":"int","description":"A derivative function type. See [enum Function] for options."},{"name":"op_type","type":"int","description":"A type of operands and returned value. See [enum OpType] for options."},{"name":"precision","type":"int","description":"Sets the level of precision to use for the derivative function. See [enum Precision] for options. When using the Compatibility renderer, this setting has no effect."}],"methods":[],"signals":[]},"VisualShaderNodeDeterminant":{"name":"VisualShaderNodeDeterminant","description":"Calculates the determinant of a  within the visual shader graph.","inherits":"VisualShaderNode","properties":[],"methods":[],"signals":[]},"VisualShaderNodeDistanceFade":{"name":"VisualShaderNodeDistanceFade","description":"A visual shader node representing distance fade effect.","inherits":"VisualShaderNode","properties":[],"methods":[],"signals":[]},"VisualShaderNodeDotProduct":{"name":"VisualShaderNodeDotProduct","description":"Calculates a dot product of two vectors within the visual shader graph.","inherits":"VisualShaderNode","properties":[],"methods":[],"signals":[]},"VisualShaderNodeExpression":{"name":"VisualShaderNodeExpression","description":"A custom visual shader graph expression written in Godot Shading Language.","inherits":"VisualShaderNodeGroupBase","properties":[{"name":"expression","type":"String","description":"An expression in Godot Shading Language, which will be injected at the start of the graph's matching shader function ([code]vertex[/code], [code]fragment[/code], or [code]light[/code]), and thus cannot be used to declare functions, varyings, uniforms, or global constants."}],"methods":[],"signals":[]},"VisualShaderNodeFaceForward":{"name":"VisualShaderNodeFaceForward","description":"Returns the vector that points in the same direction as a reference vector within the visual shader graph.","inherits":"VisualShaderNodeVectorBase","properties":[],"methods":[],"signals":[]},"VisualShaderNodeFloatConstant":{"name":"VisualShaderNodeFloatConstant","description":"A scalar floating-point constant to be used within the visual shader graph.","inherits":"VisualShaderNodeConstant","properties":[{"name":"constant","type":"float","description":"A floating-point constant which represents a state of this node."}],"methods":[],"signals":[]},"VisualShaderNodeFloatFunc":{"name":"VisualShaderNodeFloatFunc","description":"A scalar floating-point function to be used within the visual shader graph.","inherits":"VisualShaderNode","properties":[{"name":"function","type":"int","description":"A function to be applied to the scalar. See [enum Function] for options."}],"methods":[],"signals":[]},"VisualShaderNodeFloatOp":{"name":"VisualShaderNodeFloatOp","description":"A floating-point scalar operator to be used within the visual shader graph.","inherits":"VisualShaderNode","properties":[{"name":"operator","type":"int","description":"An operator to be applied to the inputs. See [enum Operator] for options."}],"methods":[],"signals":[]},"VisualShaderNodeFloatParameter":{"name":"VisualShaderNodeFloatParameter","description":"A scalar float parameter to be used within the visual shader graph.","inherits":"VisualShaderNodeParameter","properties":[{"name":"default_value","type":"float","description":"A default value to be assigned within the shader."},{"name":"default_value_enabled","type":"bool","description":"Enables usage of the [member default_value]."},{"name":"hint","type":"int","description":"A hint applied to the uniform, which controls the values it can take when set through the Inspector."},{"name":"max","type":"float","description":"Minimum value for range hints. Used if [member hint] is set to [constant HINT_RANGE] or [constant HINT_RANGE_STEP]."},{"name":"min","type":"float","description":"Maximum value for range hints. Used if [member hint] is set to [constant HINT_RANGE] or [constant HINT_RANGE_STEP]."},{"name":"step","type":"float","description":"Step (increment) value for the range hint with step. Used if [member hint] is set to [constant HINT_RANGE_STEP]."}],"methods":[],"signals":[]},"VisualShaderNodeFrame":{"name":"VisualShaderNodeFrame","description":"A frame other visual shader nodes can be attached to for better organization.","inherits":"VisualShaderNodeResizableBase","properties":[{"name":"attached_nodes","type":"PackedInt32Array","description":"The list of nodes attached to the frame."},{"name":"autoshrink","type":"bool","description":"If [code]true[/code], the frame will automatically resize to enclose all attached nodes."},{"name":"tint_color","type":"Color","description":"The color of the frame when [member tint_color_enabled] is [code]true[/code]."},{"name":"tint_color_enabled","type":"bool","description":"If [code]true[/code], the frame will be tinted with the color specified in [member tint_color]."},{"name":"title","type":"String","description":"The title of the node."}],"methods":[{"name":"add_attached_node","signature":"add_attached_node(node: int) -> void","description":"Adds a node to the list of nodes attached to the frame. Should not be called directly, use the [method VisualShader.attach_node_to_frame] method instead.","returnType":"void"},{"name":"remove_attached_node","signature":"remove_attached_node(node: int) -> void","description":"Removes a node from the list of nodes attached to the frame. Should not be called directly, use the [method VisualShader.detach_node_from_frame] method instead.","returnType":"void"}],"signals":[]},"VisualShaderNodeFresnel":{"name":"VisualShaderNodeFresnel","description":"A Fresnel effect to be used within the visual shader graph.","inherits":"VisualShaderNode","properties":[],"methods":[],"signals":[]},"VisualShaderNodeGlobalExpression":{"name":"VisualShaderNodeGlobalExpression","description":"A custom global visual shader graph expression written in Godot Shading Language.","inherits":"VisualShaderNodeExpression","properties":[],"methods":[],"signals":[]},"VisualShaderNodeGroupBase":{"name":"VisualShaderNodeGroupBase","description":"Base class for a family of nodes with variable number of input and output ports within the visual shader graph.","inherits":"VisualShaderNodeResizableBase","properties":[],"methods":[{"name":"add_input_port","signature":"add_input_port(id: int, type: int, name: String) -> void","description":"Adds an input port with the specified [param type] (see [enum VisualShaderNode.PortType]) and [param name].","returnType":"void"},{"name":"add_output_port","signature":"add_output_port(id: int, type: int, name: String) -> void","description":"Adds an output port with the specified [param type] (see [enum VisualShaderNode.PortType]) and [param name].","returnType":"void"},{"name":"clear_input_ports","signature":"clear_input_ports() -> void","description":"Removes all previously specified input ports.","returnType":"void"},{"name":"clear_output_ports","signature":"clear_output_ports() -> void","description":"Removes all previously specified output ports.","returnType":"void"},{"name":"get_free_input_port_id","signature":"get_free_input_port_id() -> int","description":"Returns a free input port ID which can be used in [method add_input_port].","returnType":"int"},{"name":"get_free_output_port_id","signature":"get_free_output_port_id() -> int","description":"Returns a free output port ID which can be used in [method add_output_port].","returnType":"int"},{"name":"get_input_port_count","signature":"get_input_port_count() -> int","description":"Returns the number of input ports in use. Alternative for [method get_free_input_port_id].","returnType":"int"},{"name":"get_inputs","signature":"get_inputs() -> String","description":"Returns a  description of the input ports as a colon-separated list using the format id,type,name; (see [method add_input_port]).","returnType":"String"},{"name":"get_output_port_count","signature":"get_output_port_count() -> int","description":"Returns the number of output ports in use. Alternative for [method get_free_output_port_id].","returnType":"int"},{"name":"get_outputs","signature":"get_outputs() -> String","description":"Returns a  description of the output ports as a colon-separated list using the format id,type,name; (see [method add_output_port]).","returnType":"String"},{"name":"has_input_port","signature":"has_input_port(id: int) -> bool","description":"Returns true if the specified input port exists.","returnType":"bool"},{"name":"has_output_port","signature":"has_output_port(id: int) -> bool","description":"Returns true if the specified output port exists.","returnType":"bool"},{"name":"is_valid_port_name","signature":"is_valid_port_name(name: String) -> bool","description":"Returns true if the specified port name does not override an existed port name and is valid within the shader.","returnType":"bool"},{"name":"remove_input_port","signature":"remove_input_port(id: int) -> void","description":"Removes the specified input port.","returnType":"void"},{"name":"remove_output_port","signature":"remove_output_port(id: int) -> void","description":"Removes the specified output port.","returnType":"void"},{"name":"set_input_port_name","signature":"set_input_port_name(id: int, name: String) -> void","description":"Renames the specified input port.","returnType":"void"},{"name":"set_input_port_type","signature":"set_input_port_type(id: int, type: int) -> void","description":"Sets the specified input port's type (see [enum VisualShaderNode.PortType]).","returnType":"void"},{"name":"set_inputs","signature":"set_inputs(inputs: String) -> void","description":"Defines all input ports using a  formatted as a colon-separated list: id,type,name; (see [method add_input_port]).","returnType":"void"},{"name":"set_output_port_name","signature":"set_output_port_name(id: int, name: String) -> void","description":"Renames the specified output port.","returnType":"void"},{"name":"set_output_port_type","signature":"set_output_port_type(id: int, type: int) -> void","description":"Sets the specified output port's type (see [enum VisualShaderNode.PortType]).","returnType":"void"},{"name":"set_outputs","signature":"set_outputs(outputs: String) -> void","description":"Defines all output ports using a  formatted as a colon-separated list: id,type,name; (see [method add_output_port]).","returnType":"void"}],"signals":[]},"VisualShaderNodeIf":{"name":"VisualShaderNodeIf","description":"Outputs a 3D vector based on the result of a floating-point comparison within the visual shader graph.","inherits":"VisualShaderNode","properties":[],"methods":[],"signals":[]},"VisualShaderNodeInput":{"name":"VisualShaderNodeInput","description":"Represents the input shader parameter within the visual shader graph.","inherits":"VisualShaderNode","properties":[{"name":"input_name","type":"String","description":"One of the several input constants in lower-case style like: \"vertex\" ([code]VERTEX[/code]) or \"point_size\" ([code]POINT_SIZE[/code])."}],"methods":[{"name":"get_input_real_name","signature":"get_input_real_name() -> String","description":"Returns a translated name of the current constant in the Godot Shader Language. E.g. \"ALBEDO\" if the [member input_name] equal to \"albedo\".","returnType":"String"}],"signals":[{"name":"input_type_changed","description":"Emitted when input is changed via [member input_name]."}]},"VisualShaderNodeIntConstant":{"name":"VisualShaderNodeIntConstant","description":"A scalar integer constant to be used within the visual shader graph.","inherits":"VisualShaderNodeConstant","properties":[{"name":"constant","type":"int","description":"An integer constant which represents a state of this node."}],"methods":[],"signals":[]},"VisualShaderNodeIntFunc":{"name":"VisualShaderNodeIntFunc","description":"A scalar integer function to be used within the visual shader graph.","inherits":"VisualShaderNode","properties":[{"name":"function","type":"int","description":"A function to be applied to the scalar. See [enum Function] for options."}],"methods":[],"signals":[]},"VisualShaderNodeIntOp":{"name":"VisualShaderNodeIntOp","description":"An integer scalar operator to be used within the visual shader graph.","inherits":"VisualShaderNode","properties":[{"name":"operator","type":"int","description":"An operator to be applied to the inputs. See [enum Operator] for options."}],"methods":[],"signals":[]},"VisualShaderNodeIntParameter":{"name":"VisualShaderNodeIntParameter","description":"A visual shader node for shader parameter (uniform) of type .","inherits":"VisualShaderNodeParameter","properties":[{"name":"default_value","type":"int","description":"Default value of this parameter, which will be used if not set externally. [member default_value_enabled] must be enabled; defaults to [code]0[/code] otherwise."},{"name":"default_value_enabled","type":"bool","description":"If [code]true[/code], the node will have a custom default value."},{"name":"enum_names","type":"PackedStringArray","description":"The names used for the enum select in the editor. [member hint] must be [constant HINT_ENUM] for this to take effect."},{"name":"hint","type":"int","description":"Range hint of this node. Use it to customize valid parameter range."},{"name":"max","type":"int","description":"The maximum value this parameter can take. [member hint] must be either [constant HINT_RANGE] or [constant HINT_RANGE_STEP] for this to take effect."},{"name":"min","type":"int","description":"The minimum value this parameter can take. [member hint] must be either [constant HINT_RANGE] or [constant HINT_RANGE_STEP] for this to take effect."},{"name":"step","type":"int","description":"The step between parameter's values. Forces the parameter to be a multiple of the given value. [member hint] must be [constant HINT_RANGE_STEP] for this to take effect."}],"methods":[],"signals":[]},"VisualShaderNodeIs":{"name":"VisualShaderNodeIs","description":"A boolean comparison operator to be used within the visual shader graph.","inherits":"VisualShaderNode","properties":[{"name":"function","type":"int","description":"The comparison function. See [enum Function] for options."}],"methods":[],"signals":[]},"VisualShaderNodeLinearSceneDepth":{"name":"VisualShaderNodeLinearSceneDepth","description":"A visual shader node that returns the depth value of the DEPTH_TEXTURE node in a linear space.","inherits":"VisualShaderNode","properties":[],"methods":[],"signals":[]},"VisualShaderNodeMix":{"name":"VisualShaderNodeMix","description":"Linearly interpolates between two values within the visual shader graph.","inherits":"VisualShaderNode","properties":[{"name":"op_type","type":"int","description":"A type of operands and returned value."}],"methods":[],"signals":[]},"VisualShaderNodeMultiplyAdd":{"name":"VisualShaderNodeMultiplyAdd","description":"Performs a fused multiply-add operation within the visual shader graph.","inherits":"VisualShaderNode","properties":[{"name":"op_type","type":"int","description":"A type of operands and returned value."}],"methods":[],"signals":[]},"VisualShaderNodeOuterProduct":{"name":"VisualShaderNodeOuterProduct","description":"Calculates an outer product of two vectors within the visual shader graph.","inherits":"VisualShaderNode","properties":[],"methods":[],"signals":[]},"VisualShaderNodeOutput":{"name":"VisualShaderNodeOutput","description":"Represents the output shader parameters within the visual shader graph.","inherits":"VisualShaderNode","properties":[],"methods":[],"signals":[]},"VisualShaderNodeParameter":{"name":"VisualShaderNodeParameter","description":"A base type for the parameters within the visual shader graph.","inherits":"VisualShaderNode","properties":[{"name":"parameter_name","type":"String","description":"Name of the parameter, by which it can be accessed through the [ShaderMaterial] properties."},{"name":"qualifier","type":"int","description":"Defines the scope of the parameter."}],"methods":[],"signals":[]},"VisualShaderNodeParameterRef":{"name":"VisualShaderNodeParameterRef","description":"A reference to an existing .","inherits":"VisualShaderNode","properties":[{"name":"parameter_name","type":"String","description":"The name of the parameter which this reference points to."}],"methods":[],"signals":[]},"VisualShaderNodeParticleAccelerator":{"name":"VisualShaderNodeParticleAccelerator","description":"A visual shader node that accelerates particles.","inherits":"VisualShaderNode","properties":[{"name":"mode","type":"int","description":"Defines in what manner the particles will be accelerated."}],"methods":[],"signals":[]},"VisualShaderNodeParticleBoxEmitter":{"name":"VisualShaderNodeParticleBoxEmitter","description":"A visual shader node that makes particles emitted in a box shape.","inherits":"VisualShaderNodeParticleEmitter","properties":[],"methods":[],"signals":[]},"VisualShaderNodeParticleConeVelocity":{"name":"VisualShaderNodeParticleConeVelocity","description":"A visual shader node that makes particles move in a cone shape.","inherits":"VisualShaderNode","properties":[],"methods":[],"signals":[]},"VisualShaderNodeParticleEmit":{"name":"VisualShaderNodeParticleEmit","description":"A visual shader node that forces to emit a particle from a sub-emitter.","inherits":"VisualShaderNode","properties":[{"name":"flags","type":"int","description":"Flags used to override the properties defined in the sub-emitter's process material."}],"methods":[],"signals":[]},"VisualShaderNodeParticleEmitter":{"name":"VisualShaderNodeParticleEmitter","description":"A base class for particle emitters.","inherits":"VisualShaderNode","properties":[{"name":"mode_2d","type":"bool","description":"If [code]true[/code], the result of this emitter is projected to 2D space. By default it is [code]false[/code] and meant for use in 3D space."}],"methods":[],"signals":[]},"VisualShaderNodeParticleMeshEmitter":{"name":"VisualShaderNodeParticleMeshEmitter","description":"A visual shader node that makes particles emitted in a shape defined by a .","inherits":"VisualShaderNodeParticleEmitter","properties":[{"name":"mesh","type":"Mesh","description":"The [Mesh] that defines emission shape."},{"name":"surface_index","type":"int","description":"Index of the surface that emits particles. [member use_all_surfaces] must be [code]false[/code] for this to take effect."},{"name":"use_all_surfaces","type":"bool","description":"If [code]true[/code], the particles will emit from all surfaces of the mesh."}],"methods":[],"signals":[]},"VisualShaderNodeParticleMultiplyByAxisAngle":{"name":"VisualShaderNodeParticleMultiplyByAxisAngle","description":"A visual shader helper node for multiplying position and rotation of particles.","inherits":"VisualShaderNode","properties":[{"name":"degrees_mode","type":"bool","description":"If [code]true[/code], the angle will be interpreted in degrees instead of radians."}],"methods":[],"signals":[]},"VisualShaderNodeParticleOutput":{"name":"VisualShaderNodeParticleOutput","description":"Visual shader node that defines output values for particle emitting.","inherits":"VisualShaderNodeOutput","properties":[],"methods":[],"signals":[]},"VisualShaderNodeParticleRandomness":{"name":"VisualShaderNodeParticleRandomness","description":"Visual shader node for randomizing particle values.","inherits":"VisualShaderNode","properties":[{"name":"op_type","type":"int","description":"A type of operands and returned value."}],"methods":[],"signals":[]},"VisualShaderNodeParticleRingEmitter":{"name":"VisualShaderNodeParticleRingEmitter","description":"A visual shader node that makes particles emitted in a ring shape.","inherits":"VisualShaderNodeParticleEmitter","properties":[],"methods":[],"signals":[]},"VisualShaderNodeParticleSphereEmitter":{"name":"VisualShaderNodeParticleSphereEmitter","description":"A visual shader node that makes particles emitted in a sphere shape.","inherits":"VisualShaderNodeParticleEmitter","properties":[],"methods":[],"signals":[]},"VisualShaderNodeProximityFade":{"name":"VisualShaderNodeProximityFade","description":"A visual shader node representing proximity fade effect.","inherits":"VisualShaderNode","properties":[],"methods":[],"signals":[]},"VisualShaderNodeRandomRange":{"name":"VisualShaderNodeRandomRange","description":"A visual shader node that generates a pseudo-random scalar.","inherits":"VisualShaderNode","properties":[],"methods":[],"signals":[]},"VisualShaderNodeRemap":{"name":"VisualShaderNodeRemap","description":"A visual shader node for remap function.","inherits":"VisualShaderNode","properties":[{"name":"op_type","type":"int","description":""}],"methods":[],"signals":[]},"VisualShaderNodeReroute":{"name":"VisualShaderNodeReroute","description":"A node that allows rerouting a connection within the visual shader graph.","inherits":"VisualShaderNode","properties":[],"methods":[{"name":"get_port_type","signature":"get_port_type() -> int","description":"Returns the port type of the reroute node.","returnType":"int"}],"signals":[]},"VisualShaderNodeResizableBase":{"name":"VisualShaderNodeResizableBase","description":"Base class for resizable nodes in a visual shader graph.","inherits":"VisualShaderNode","properties":[{"name":"size","type":"Vector2","description":"The size of the node in the visual shader graph."}],"methods":[],"signals":[]},"VisualShaderNodeRotationByAxis":{"name":"VisualShaderNodeRotationByAxis","description":"A visual shader node that modifies the rotation of the object using a rotation matrix.","inherits":"VisualShaderNode","properties":[],"methods":[],"signals":[]},"VisualShaderNodeSDFRaymarch":{"name":"VisualShaderNodeSDFRaymarch","description":"SDF raymarching algorithm to be used within the visual shader graph.","inherits":"VisualShaderNode","properties":[],"methods":[],"signals":[]},"VisualShaderNodeSDFToScreenUV":{"name":"VisualShaderNodeSDFToScreenUV","description":"A function to convert an SDF (signed-distance field) to screen UV, to be used within the visual shader graph.","inherits":"VisualShaderNode","properties":[],"methods":[],"signals":[]},"VisualShaderNodeSample3D":{"name":"VisualShaderNodeSample3D","description":"A base node for nodes which samples 3D textures in the visual shader graph.","inherits":"VisualShaderNode","properties":[{"name":"source","type":"int","description":"An input source type."}],"methods":[],"signals":[]},"VisualShaderNodeScreenNormalWorldSpace":{"name":"VisualShaderNodeScreenNormalWorldSpace","description":"A visual shader node that unpacks the screen normal texture in World Space.","inherits":"VisualShaderNode","properties":[],"methods":[],"signals":[]},"VisualShaderNodeScreenUVToSDF":{"name":"VisualShaderNodeScreenUVToSDF","description":"A function to convert screen UV to an SDF (signed-distance field), to be used within the visual shader graph.","inherits":"VisualShaderNode","properties":[],"methods":[],"signals":[]},"VisualShaderNodeSmoothStep":{"name":"VisualShaderNodeSmoothStep","description":"Calculates a SmoothStep function within the visual shader graph.","inherits":"VisualShaderNode","properties":[{"name":"op_type","type":"int","description":"A type of operands and returned value."}],"methods":[],"signals":[]},"VisualShaderNodeStep":{"name":"VisualShaderNodeStep","description":"Calculates a Step function within the visual shader graph.","inherits":"VisualShaderNode","properties":[{"name":"op_type","type":"int","description":"A type of operands and returned value."}],"methods":[],"signals":[]},"VisualShaderNodeSwitch":{"name":"VisualShaderNodeSwitch","description":"A selector function for use within the visual shader graph.","inherits":"VisualShaderNode","properties":[{"name":"op_type","type":"int","description":"A type of operands and returned value."}],"methods":[],"signals":[]},"VisualShaderNodeTexture":{"name":"VisualShaderNodeTexture","description":"Performs a 2D texture lookup within the visual shader graph.","inherits":"VisualShaderNode","properties":[{"name":"source","type":"int","description":"Determines the source for the lookup. See [enum Source] for options."},{"name":"texture","type":"Texture2D","description":"The source texture, if needed for the selected [member source]."},{"name":"texture_type","type":"int","description":"Specifies the type of the texture if [member source] is set to [constant SOURCE_TEXTURE]. See [enum TextureType] for options."}],"methods":[],"signals":[]},"VisualShaderNodeTexture2DArray":{"name":"VisualShaderNodeTexture2DArray","description":"A 2D texture uniform array to be used within the visual shader graph.","inherits":"VisualShaderNodeSample3D","properties":[{"name":"texture_array","type":"TextureLayered","description":"A source texture array. Used if [member VisualShaderNodeSample3D.source] is set to [constant VisualShaderNodeSample3D.SOURCE_TEXTURE]."}],"methods":[],"signals":[]},"VisualShaderNodeTexture2DArrayParameter":{"name":"VisualShaderNodeTexture2DArrayParameter","description":"A visual shader node for shader parameter (uniform) of type .","inherits":"VisualShaderNodeTextureParameter","properties":[],"methods":[],"signals":[]},"VisualShaderNodeTexture2DParameter":{"name":"VisualShaderNodeTexture2DParameter","description":"Provides a 2D texture parameter within the visual shader graph.","inherits":"VisualShaderNodeTextureParameter","properties":[],"methods":[],"signals":[]},"VisualShaderNodeTexture3D":{"name":"VisualShaderNodeTexture3D","description":"Performs a 3D texture lookup within the visual shader graph.","inherits":"VisualShaderNodeSample3D","properties":[{"name":"texture","type":"Texture3D","description":"A source texture. Used if [member VisualShaderNodeSample3D.source] is set to [constant VisualShaderNodeSample3D.SOURCE_TEXTURE]."}],"methods":[],"signals":[]},"VisualShaderNodeTexture3DParameter":{"name":"VisualShaderNodeTexture3DParameter","description":"Provides a 3D texture parameter within the visual shader graph.","inherits":"VisualShaderNodeTextureParameter","properties":[],"methods":[],"signals":[]},"VisualShaderNodeTextureParameter":{"name":"VisualShaderNodeTextureParameter","description":"Performs a uniform texture lookup within the visual shader graph.","inherits":"VisualShaderNodeParameter","properties":[{"name":"color_default","type":"int","description":"Sets the default color if no texture is assigned to the uniform."},{"name":"texture_filter","type":"int","description":"Sets the texture filtering mode. See [enum TextureFilter] for options."},{"name":"texture_repeat","type":"int","description":"Sets the texture repeating mode. See [enum TextureRepeat] for options."},{"name":"texture_source","type":"int","description":"Sets the texture source mode. Used for reading from the screen, depth, or normal_roughness texture. See [enum TextureSource] for options."},{"name":"texture_type","type":"int","description":"Defines the type of data provided by the source texture. See [enum TextureType] for options."}],"methods":[],"signals":[]},"VisualShaderNodeTextureParameterTriplanar":{"name":"VisualShaderNodeTextureParameterTriplanar","description":"Performs a uniform texture lookup with triplanar within the visual shader graph.","inherits":"VisualShaderNodeTextureParameter","properties":[],"methods":[],"signals":[]},"VisualShaderNodeTextureSDF":{"name":"VisualShaderNodeTextureSDF","description":"Performs an SDF (signed-distance field) texture lookup within the visual shader graph.","inherits":"VisualShaderNode","properties":[],"methods":[],"signals":[]},"VisualShaderNodeTextureSDFNormal":{"name":"VisualShaderNodeTextureSDFNormal","description":"Performs an SDF (signed-distance field) normal texture lookup within the visual shader graph.","inherits":"VisualShaderNode","properties":[],"methods":[],"signals":[]},"VisualShaderNodeTransformCompose":{"name":"VisualShaderNodeTransformCompose","description":"Composes a  from four s within the visual shader graph.","inherits":"VisualShaderNode","properties":[],"methods":[],"signals":[]},"VisualShaderNodeTransformConstant":{"name":"VisualShaderNodeTransformConstant","description":"A  constant for use within the visual shader graph.","inherits":"VisualShaderNodeConstant","properties":[{"name":"constant","type":"Transform3D","description":"A [Transform3D] constant which represents the state of this node."}],"methods":[],"signals":[]},"VisualShaderNodeTransformDecompose":{"name":"VisualShaderNodeTransformDecompose","description":"Decomposes a  into four s within the visual shader graph.","inherits":"VisualShaderNode","properties":[],"methods":[],"signals":[]},"VisualShaderNodeTransformFunc":{"name":"VisualShaderNodeTransformFunc","description":"Computes a  function within the visual shader graph.","inherits":"VisualShaderNode","properties":[{"name":"function","type":"int","description":"The function to be computed. See [enum Function] for options."}],"methods":[],"signals":[]},"VisualShaderNodeTransformOp":{"name":"VisualShaderNodeTransformOp","description":"A  operator to be used within the visual shader graph.","inherits":"VisualShaderNode","properties":[{"name":"operator","type":"int","description":"The type of the operation to be performed on the transforms. See [enum Operator] for options."}],"methods":[],"signals":[]},"VisualShaderNodeTransformParameter":{"name":"VisualShaderNodeTransformParameter","description":"A  parameter for use within the visual shader graph.","inherits":"VisualShaderNodeParameter","properties":[{"name":"default_value","type":"Transform3D","description":"A default value to be assigned within the shader."},{"name":"default_value_enabled","type":"bool","description":"Enables usage of the [member default_value]."}],"methods":[],"signals":[]},"VisualShaderNodeTransformVecMult":{"name":"VisualShaderNodeTransformVecMult","description":"Multiplies a  and a  within the visual shader graph.","inherits":"VisualShaderNode","properties":[{"name":"operator","type":"int","description":"The multiplication type to be performed. See [enum Operator] for options."}],"methods":[],"signals":[]},"VisualShaderNodeUIntConstant":{"name":"VisualShaderNodeUIntConstant","description":"An unsigned scalar integer constant to be used within the visual shader graph.","inherits":"VisualShaderNodeConstant","properties":[{"name":"constant","type":"int","description":"An unsigned integer constant which represents a state of this node."}],"methods":[],"signals":[]},"VisualShaderNodeUIntFunc":{"name":"VisualShaderNodeUIntFunc","description":"An unsigned scalar integer function to be used within the visual shader graph.","inherits":"VisualShaderNode","properties":[{"name":"function","type":"int","description":"A function to be applied to the scalar. See [enum Function] for options."}],"methods":[],"signals":[]},"VisualShaderNodeUIntOp":{"name":"VisualShaderNodeUIntOp","description":"An unsigned integer scalar operator to be used within the visual shader graph.","inherits":"VisualShaderNode","properties":[{"name":"operator","type":"int","description":"An operator to be applied to the inputs. See [enum Operator] for options."}],"methods":[],"signals":[]},"VisualShaderNodeUIntParameter":{"name":"VisualShaderNodeUIntParameter","description":"A visual shader node for shader parameter (uniform) of type unsigned .","inherits":"VisualShaderNodeParameter","properties":[{"name":"default_value","type":"int","description":"Default value of this parameter, which will be used if not set externally. [member default_value_enabled] must be enabled; defaults to [code]0[/code] otherwise."},{"name":"default_value_enabled","type":"bool","description":"If [code]true[/code], the node will have a custom default value."}],"methods":[],"signals":[]},"VisualShaderNodeUVFunc":{"name":"VisualShaderNodeUVFunc","description":"Contains functions to modify texture coordinates (uv) to be used within the visual shader graph.","inherits":"VisualShaderNode","properties":[{"name":"function","type":"int","description":"A function to be applied to the texture coordinates. See [enum Function] for options."}],"methods":[],"signals":[]},"VisualShaderNodeUVPolarCoord":{"name":"VisualShaderNodeUVPolarCoord","description":"A visual shader node that modifies the texture UV using polar coordinates.","inherits":"VisualShaderNode","properties":[],"methods":[],"signals":[]},"VisualShaderNodeVarying":{"name":"VisualShaderNodeVarying","description":"A visual shader node that represents a \"varying\" shader value.","inherits":"VisualShaderNode","properties":[{"name":"varying_name","type":"String","description":"Name of the variable. Must be unique."},{"name":"varying_type","type":"int","description":"Type of the variable. Determines where the variable can be accessed."}],"methods":[],"signals":[]},"VisualShaderNodeVaryingGetter":{"name":"VisualShaderNodeVaryingGetter","description":"A visual shader node that gets a value of a varying.","inherits":"VisualShaderNodeVarying","properties":[],"methods":[],"signals":[]},"VisualShaderNodeVaryingSetter":{"name":"VisualShaderNodeVaryingSetter","description":"A visual shader node that sets a value of a varying.","inherits":"VisualShaderNodeVarying","properties":[],"methods":[],"signals":[]},"VisualShaderNodeVec2Constant":{"name":"VisualShaderNodeVec2Constant","description":"A  constant to be used within the visual shader graph.","inherits":"VisualShaderNodeConstant","properties":[{"name":"constant","type":"Vector2","description":"A [Vector2] constant which represents the state of this node."}],"methods":[],"signals":[]},"VisualShaderNodeVec2Parameter":{"name":"VisualShaderNodeVec2Parameter","description":"A  parameter to be used within the visual shader graph.","inherits":"VisualShaderNodeParameter","properties":[{"name":"default_value","type":"Vector2","description":"A default value to be assigned within the shader."},{"name":"default_value_enabled","type":"bool","description":"Enables usage of the [member default_value]."}],"methods":[],"signals":[]},"VisualShaderNodeVec3Constant":{"name":"VisualShaderNodeVec3Constant","description":"A  constant to be used within the visual shader graph.","inherits":"VisualShaderNodeConstant","properties":[{"name":"constant","type":"Vector3","description":"A [Vector3] constant which represents the state of this node."}],"methods":[],"signals":[]},"VisualShaderNodeVec3Parameter":{"name":"VisualShaderNodeVec3Parameter","description":"A  parameter to be used within the visual shader graph.","inherits":"VisualShaderNodeParameter","properties":[{"name":"default_value","type":"Vector3","description":"A default value to be assigned within the shader."},{"name":"default_value_enabled","type":"bool","description":"Enables usage of the [member default_value]."}],"methods":[],"signals":[]},"VisualShaderNodeVec4Constant":{"name":"VisualShaderNodeVec4Constant","description":"A 4D vector constant to be used within the visual shader graph.","inherits":"VisualShaderNodeConstant","properties":[{"name":"constant","type":"Quaternion","description":"A 4D vector (represented as a [Quaternion]) constant which represents the state of this node."}],"methods":[],"signals":[]},"VisualShaderNodeVec4Parameter":{"name":"VisualShaderNodeVec4Parameter","description":"A 4D vector parameter to be used within the visual shader graph.","inherits":"VisualShaderNodeParameter","properties":[{"name":"default_value","type":"Vector4","description":"A default value to be assigned within the shader."},{"name":"default_value_enabled","type":"bool","description":"Enables usage of the [member default_value]."}],"methods":[],"signals":[]},"VisualShaderNodeVectorBase":{"name":"VisualShaderNodeVectorBase","description":"A base type for the nodes that perform vector operations within the visual shader graph.","inherits":"VisualShaderNode","properties":[{"name":"op_type","type":"int","description":"A vector type that this operation is performed on."}],"methods":[],"signals":[]},"VisualShaderNodeVectorCompose":{"name":"VisualShaderNodeVectorCompose","description":"Composes a ,  or 4D vector (represented as a ) from scalars within the visual shader graph.","inherits":"VisualShaderNodeVectorBase","properties":[],"methods":[],"signals":[]},"VisualShaderNodeVectorDecompose":{"name":"VisualShaderNodeVectorDecompose","description":"Decomposes a ,  or 4D vector (represented as a ) into scalars within the visual shader graph.","inherits":"VisualShaderNodeVectorBase","properties":[],"methods":[],"signals":[]},"VisualShaderNodeVectorDistance":{"name":"VisualShaderNodeVectorDistance","description":"Returns the distance between two points. To be used within the visual shader graph.","inherits":"VisualShaderNodeVectorBase","properties":[],"methods":[],"signals":[]},"VisualShaderNodeVectorFunc":{"name":"VisualShaderNodeVectorFunc","description":"A vector function to be used within the visual shader graph.","inherits":"VisualShaderNodeVectorBase","properties":[{"name":"function","type":"int","description":"The function to be performed. See [enum Function] for options."}],"methods":[],"signals":[]},"VisualShaderNodeVectorLen":{"name":"VisualShaderNodeVectorLen","description":"Returns the length of a  within the visual shader graph.","inherits":"VisualShaderNodeVectorBase","properties":[],"methods":[],"signals":[]},"VisualShaderNodeVectorOp":{"name":"VisualShaderNodeVectorOp","description":"A vector operator to be used within the visual shader graph.","inherits":"VisualShaderNodeVectorBase","properties":[{"name":"operator","type":"int","description":"The operator to be used. See [enum Operator] for options."}],"methods":[],"signals":[]},"VisualShaderNodeVectorRefract":{"name":"VisualShaderNodeVectorRefract","description":"Returns the vector that points in the direction of refraction. For use within the visual shader graph.","inherits":"VisualShaderNodeVectorBase","properties":[],"methods":[],"signals":[]},"VisualShaderNodeWorldPositionFromDepth":{"name":"VisualShaderNodeWorldPositionFromDepth","description":"A visual shader node that calculates the position of the pixel in world space using the depth texture.","inherits":"VisualShaderNode","properties":[],"methods":[],"signals":[]},"VoxelGI":{"name":"VoxelGI","description":"Real-time global illumination (GI) probe.","inherits":"VisualInstance3D","properties":[{"name":"camera_attributes","type":"CameraAttributes","description":"The [CameraAttributes] resource that specifies exposure levels to bake at. Auto-exposure and non exposure properties will be ignored. Exposure settings should be used to reduce the dynamic range present when baking. If exposure is too high, the [VoxelGI] will have banding artifacts or may have over-exposure artifacts."},{"name":"data","type":"VoxelGIData","description":"The [VoxelGIData] resource that holds the data for this [VoxelGI]."},{"name":"size","type":"Vector3","description":"The size of the area covered by the [VoxelGI]. If you make the size larger without increasing the subdivisions with [member subdiv], the size of each cell will increase and result in lower detailed lighting.\n\t\t\t[b]Note:[/b] Size is clamped to 1.0 unit or more on each axis."},{"name":"subdiv","type":"int","description":"Number of times to subdivide the grid that the [VoxelGI] operates on. A higher number results in finer detail and thus higher visual quality, while lower numbers result in better performance."}],"methods":[{"name":"bake","signature":"bake(from_node: Node, create_visual_debug: bool) -> void","description":"Bakes the effect from all s marked with [constant GeometryInstance3D.GI_MODE_STATIC] and s marked with either [constant Light3D.BAKE_STATIC] or [constant Light3D.BAKE_DYNAMIC]. If [param create_visual_debug] is true, after baking the light, this will generate a  that has a cube representing each solid cell with each cube colored to the cell's albedo color. This can be used to visualize the 's data and debug any issues that may be occurring.\n\t\t\t\tNote: [method bake] works from the editor and in exported projects. This makes it suitable for procedurally generated or user-built levels. Baking a  node generally takes from 5 to 20 seconds in most scenes. Reducing [member subdiv] can speed up baking.\n\t\t\t\tNote: s and s must be fully ready before [method bake] is called. If you are procedurally creating those and some meshes or lights are missing from your baked , use call_deferred(\"bake\") instead of calling [method bake] directly.","returnType":"void"},{"name":"debug_bake","signature":"debug_bake() -> void","description":"Calls [method bake] with create_visual_debug enabled.","returnType":"void"}],"signals":[]},"VoxelGIData":{"name":"VoxelGIData","description":"Contains baked voxel global illumination data for use in a  node.","inherits":"Resource","properties":[{"name":"bias","type":"float","description":"The normal bias to use for indirect lighting and reflections. Higher values reduce self-reflections visible in non-rough materials, at the cost of more visible light leaking and flatter-looking indirect lighting. To prioritize hiding self-reflections over lighting quality, set [member bias] to [code]0.0[/code] and [member normal_bias] to a value between [code]1.0[/code] and [code]2.0[/code]."},{"name":"dynamic_range","type":"float","description":"The dynamic range to use ([code]1.0[/code] represents a low dynamic range scene brightness). Higher values can be used to provide brighter indirect lighting, at the cost of more visible color banding in dark areas (both in indirect lighting and reflections). To avoid color banding, it's recommended to use the lowest value that does not result in visible light clipping."},{"name":"energy","type":"float","description":"The energy of the indirect lighting and reflections produced by the [VoxelGI] node. Higher values result in brighter indirect lighting. If indirect lighting looks too flat, try decreasing [member propagation] while increasing [member energy] at the same time. See also [member use_two_bounces] which influences the indirect lighting's effective brightness."},{"name":"interior","type":"bool","description":"If [code]true[/code], [Environment] lighting is ignored by the [VoxelGI] node. If [code]false[/code], [Environment] lighting is taken into account by the [VoxelGI] node. [Environment] lighting updates in real-time, which means it can be changed without having to bake the [VoxelGI] node again."},{"name":"normal_bias","type":"float","description":"The normal bias to use for indirect lighting and reflections. Higher values reduce self-reflections visible in non-rough materials, at the cost of more visible light leaking and flatter-looking indirect lighting. See also [member bias]. To prioritize hiding self-reflections over lighting quality, set [member bias] to [code]0.0[/code] and [member normal_bias] to a value between [code]1.0[/code] and [code]2.0[/code]."},{"name":"propagation","type":"float","description":"The multiplier to use when light bounces off a surface. Higher values result in brighter indirect lighting. If indirect lighting looks too flat, try decreasing [member propagation] while increasing [member energy] at the same time. See also [member use_two_bounces] which influences the indirect lighting's effective brightness."},{"name":"use_two_bounces","type":"bool","description":"If [code]true[/code], performs two bounces of indirect lighting instead of one. This makes indirect lighting look more natural and brighter at a small performance cost. The second bounce is also visible in reflections. If the scene appears too bright after enabling [member use_two_bounces], adjust [member propagation] and [member energy]."}],"methods":[{"name":"allocate","signature":"allocate(to_cell_xform: Transform3D, aabb: AABB, octree_size: Vector3, octree_cells: PackedByteArray, data_cells: PackedByteArray, distance_field: PackedByteArray, level_counts: PackedInt32Array) -> void","description":"","returnType":"void"},{"name":"get_bounds","signature":"get_bounds() -> AABB","description":"Returns the bounds of the baked voxel data as an , which should match [member VoxelGI.size] after being baked (which only contains the size as a ).\n\t\t\t\tNote: If the size was modified without baking the VoxelGI data, then the value of [method get_bounds] and [member VoxelGI.size] will not match.","returnType":"AABB"},{"name":"get_data_cells","signature":"get_data_cells() -> PackedByteArray","description":"","returnType":"PackedByteArray"},{"name":"get_level_counts","signature":"get_level_counts() -> PackedInt32Array","description":"","returnType":"PackedInt32Array"},{"name":"get_octree_cells","signature":"get_octree_cells() -> PackedByteArray","description":"","returnType":"PackedByteArray"},{"name":"get_octree_size","signature":"get_octree_size() -> Vector3","description":"","returnType":"Vector3"},{"name":"get_to_cell_xform","signature":"get_to_cell_xform() -> Transform3D","description":"","returnType":"Transform3D"}],"signals":[]},"WeakRef":{"name":"WeakRef","description":"Holds an . If the object is , it doesn't update the reference count.","inherits":"RefCounted","properties":[],"methods":[{"name":"get_ref","signature":"get_ref() -> Variant","description":"Returns the  this weakref is referring to. Returns null if that object no longer exists.","returnType":"Variant"}],"signals":[]},"Window":{"name":"Window","description":"Base class for all windows, dialogs, and popups.","inherits":"Viewport","properties":[{"name":"always_on_top","type":"bool","description":"If [code]true[/code], the window will be on top of all other windows. Does not work if [member transient] is enabled."},{"name":"auto_translate","type":"bool","description":"Toggles if any text should automatically change to its translated version depending on the current locale."},{"name":"borderless","type":"bool","description":"If [code]true[/code], the window will have no borders."},{"name":"content_scale_aspect","type":"int","description":"Specifies how the content's aspect behaves when the [Window] is resized. The base aspect is determined by [member content_scale_size]."},{"name":"content_scale_factor","type":"float","description":"Specifies the base scale of [Window]'s content when its [member size] is equal to [member content_scale_size]. See also [method Viewport.get_stretch_transform]."},{"name":"content_scale_mode","type":"int","description":"Specifies how the content is scaled when the [Window] is resized."},{"name":"content_scale_size","type":"Vector2i","description":"Base size of the content (i.e. nodes that are drawn inside the window). If non-zero, [Window]'s content will be scaled when the window is resized to a different size."},{"name":"content_scale_stretch","type":"int","description":"The policy to use to determine the final scale factor for 2D elements. This affects how [member content_scale_factor] is applied, in addition to the automatic scale factor determined by [member content_scale_size]."},{"name":"current_screen","type":"int","description":"The screen the window is currently on."},{"name":"exclude_from_capture","type":"bool","description":"Windows is excluded from screenshots taken by [method DisplayServer.screen_get_image], [method DisplayServer.screen_get_image_rect], and [method DisplayServer.screen_get_pixel]."},{"name":"exclusive","type":"bool","description":"If [code]true[/code], the [Window] will be in exclusive mode. Exclusive windows are always on top of their parent and will block all input going to the parent [Window].\n\t\t\tNeeds [member transient] enabled to work."},{"name":"extend_to_title","type":"bool","description":"If [code]true[/code], the [Window] contents is expanded to the full size of the window, window title bar is transparent.\n\t\t\t[b]Note:[/b] This property is implemented only on macOS.\n\t\t\t[b]Note:[/b] This property only works with native windows."},{"name":"force_native","type":"bool","description":"If [code]true[/code], native window will be used regardless of parent viewport and project settings."},{"name":"initial_position","type":"int","description":"Specifies the initial type of position for the [Window]. See [enum WindowInitialPosition] constants."},{"name":"keep_title_visible","type":"bool","description":"If [code]true[/code], the [Window] width is expanded to keep the title bar text fully visible."},{"name":"max_size","type":"Vector2i","description":"If non-zero, the [Window] can't be resized to be bigger than this size.\n\t\t\t[b]Note:[/b] This property will be ignored if the value is lower than [member min_size]."},{"name":"min_size","type":"Vector2i","description":"If non-zero, the [Window] can't be resized to be smaller than this size.\n\t\t\t[b]Note:[/b] This property will be ignored in favor of [method get_contents_minimum_size] if [member wrap_controls] is enabled and if its size is bigger."},{"name":"mode","type":"int","description":"Set's the window's current mode.\n\t\t\t[b]Note:[/b] Fullscreen mode is not exclusive full screen on Windows and Linux.\n\t\t\t[b]Note:[/b] This method only works with native windows, i.e. the main window and [Window]-derived nodes when [member Viewport.gui_embed_subwindows] is disabled in the main viewport."},{"name":"mouse_passthrough","type":"bool","description":"If [code]true[/code], all mouse events will be passed to the underlying window of the same application. See also [member mouse_passthrough_polygon].\n\t\t\t[b]Note:[/b] This property is implemented on Linux (X11), macOS and Windows.\n\t\t\t[b]Note:[/b] This property only works with native windows."},{"name":"mouse_passthrough_polygon","type":"PackedVector2Array","description":"Sets a polygonal region of the window which accepts mouse events. Mouse events outside the region will be passed through.\n\t\t\tPassing an empty array will disable passthrough support (all mouse events will be intercepted by the window, which is the default behavior).\n\t\t\t[codeblocks]\n\t\t\t[gdscript]\n\t\t\t# Set region, using Path2D node.\n\t\t\t$Window.mouse_passthrough_polygon = $Path2D.curve.get_baked_points()\n\n\t\t\t# Set region, using Polygon2D node.\n\t\t\t$Window.mouse_passthrough_polygon = $Polygon2D.polygon\n\n\t\t\t# Reset region to default.\n\t\t\t$Window.mouse_passthrough_polygon = []\n\t\t\t[/gdscript]\n\t\t\t[csharp]\n\t\t\t// Set region, using Path2D node.\n\t\t\tGetNode&lt;Window&gt;(\"Window\").MousePassthroughPolygon = GetNode&lt;Path2D&gt;(\"Path2D\").Curve.GetBakedPoints();\n\n\t\t\t// Set region, using Polygon2D node.\n\t\t\tGetNode&lt;Window&gt;(\"Window\").MousePassthroughPolygon = GetNode&lt;Polygon2D&gt;(\"Polygon2D\").Polygon;\n\n\t\t\t// Reset region to default.\n\t\t\tGetNode&lt;Window&gt;(\"Window\").MousePassthroughPolygon = [];\n\t\t\t[/csharp]\n\t\t\t[/codeblocks]\n\t\t\t[b]Note:[/b] This property is ignored if [member mouse_passthrough] is set to [code]true[/code].\n\t\t\t[b]Note:[/b] On Windows, the portion of a window that lies outside the region is not drawn, while on Linux (X11) and macOS it is.\n\t\t\t[b]Note:[/b] This property is implemented on Linux (X11), macOS and Windows."},{"name":"popup_window","type":"bool","description":"If [code]true[/code], the [Window] will be considered a popup. Popups are sub-windows that don't show as separate windows in system's window manager's window list and will send close request when anything is clicked outside of them (unless [member exclusive] is enabled)."},{"name":"position","type":"Vector2i","description":"The window's position in pixels.\n\t\t\tIf [member ProjectSettings.display/window/subwindows/embed_subwindows] is [code]false[/code], the position is in absolute screen coordinates. This typically applies to editor plugins. If the setting is [code]true[/code], the window's position is in the coordinates of its parent [Viewport].\n\t\t\t[b]Note:[/b] This property only works if [member initial_position] is set to [constant WINDOW_INITIAL_POSITION_ABSOLUTE]."},{"name":"sharp_corners","type":"bool","description":"If [code]true[/code], the [Window] will override the OS window style to display sharp corners.\n\t\t\t[b]Note:[/b] This property is implemented only on Windows (11).\n\t\t\t[b]Note:[/b] This property only works with native windows."},{"name":"size","type":"Vector2i","description":"The window's size in pixels."},{"name":"theme","type":"Theme","description":"The [Theme] resource this node and all its [Control] and [Window] children use. If a child node has its own [Theme] resource set, theme items are merged with child's definitions having higher priority.\n\t\t\t[b]Note:[/b] [Window] styles will have no effect unless the window is embedded."},{"name":"theme_type_variation","type":"StringName","description":"The name of a theme type variation used by this [Window] to look up its own theme items. See [member Control.theme_type_variation] for more details."},{"name":"title","type":"String","description":"The window's title. If the [Window] is native, title styles set in [Theme] will have no effect."},{"name":"transient","type":"bool","description":"If [code]true[/code], the [Window] is transient, i.e. it's considered a child of another [Window]. The transient window will be destroyed with its transient parent and will return focus to their parent when closed. The transient window is displayed on top of a non-exclusive full-screen parent window. Transient windows can't enter full-screen mode.\n\t\t\tNote that behavior might be different depending on the platform."},{"name":"transient_to_focused","type":"bool","description":"If [code]true[/code], and the [Window] is [member transient], this window will (at the time of becoming visible) become transient to the currently focused window instead of the immediate parent window in the hierarchy. Note that the transient parent is assigned at the time this window becomes visible, so changing it afterwards has no effect until re-shown."},{"name":"transparent","type":"bool","description":"If [code]true[/code], the [Window]'s background can be transparent. This is best used with embedded windows.\n\t\t\t[b]Note:[/b] Transparency support is implemented on Linux, macOS and Windows, but availability might vary depending on GPU driver, display manager, and compositor capabilities.\n\t\t\t[b]Note:[/b] This property has no effect if [member ProjectSettings.display/window/per_pixel_transparency/allowed] is set to [code]false[/code]."},{"name":"unfocusable","type":"bool","description":"If [code]true[/code], the [Window] can't be focused nor interacted with. It can still be visible."},{"name":"unresizable","type":"bool","description":"If [code]true[/code], the window can't be resized. Minimize and maximize buttons are disabled."},{"name":"visible","type":"bool","description":"If [code]true[/code], the window is visible."},{"name":"wrap_controls","type":"bool","description":"If [code]true[/code], the window's size will automatically update when a child node is added or removed, ignoring [member min_size] if the new size is bigger.\n\t\t\tIf [code]false[/code], you need to call [method child_controls_changed] manually."}],"methods":[{"name":"_get_contents_minimum_size","signature":"_get_contents_minimum_size() -> Vector2","description":"Virtual method to be implemented by the user. Overrides the value returned by [method get_contents_minimum_size].","returnType":"Vector2"},{"name":"add_theme_color_override","signature":"add_theme_color_override(name: StringName, color: Color) -> void","description":"Creates a local override for a theme  with the specified [param name]. Local overrides always take precedence when fetching theme items for the control. An override can be removed with [method remove_theme_color_override].\n\t\t\t\tSee also [method get_theme_color] and [method Control.add_theme_color_override] for more details.","returnType":"void"},{"name":"add_theme_constant_override","signature":"add_theme_constant_override(name: StringName, constant: int) -> void","description":"Creates a local override for a theme constant with the specified [param name]. Local overrides always take precedence when fetching theme items for the control. An override can be removed with [method remove_theme_constant_override].\n\t\t\t\tSee also [method get_theme_constant].","returnType":"void"},{"name":"add_theme_font_override","signature":"add_theme_font_override(name: StringName, font: Font) -> void","description":"Creates a local override for a theme  with the specified [param name]. Local overrides always take precedence when fetching theme items for the control. An override can be removed with [method remove_theme_font_override].\n\t\t\t\tSee also [method get_theme_font].","returnType":"void"},{"name":"add_theme_font_size_override","signature":"add_theme_font_size_override(name: StringName, font_size: int) -> void","description":"Creates a local override for a theme font size with the specified [param name]. Local overrides always take precedence when fetching theme items for the control. An override can be removed with [method remove_theme_font_size_override].\n\t\t\t\tSee also [method get_theme_font_size].","returnType":"void"},{"name":"add_theme_icon_override","signature":"add_theme_icon_override(name: StringName, texture: Texture2D) -> void","description":"Creates a local override for a theme icon with the specified [param name]. Local overrides always take precedence when fetching theme items for the control. An override can be removed with [method remove_theme_icon_override].\n\t\t\t\tSee also [method get_theme_icon].","returnType":"void"},{"name":"add_theme_stylebox_override","signature":"add_theme_stylebox_override(name: StringName, stylebox: StyleBox) -> void","description":"Creates a local override for a theme  with the specified [param name]. Local overrides always take precedence when fetching theme items for the control. An override can be removed with [method remove_theme_stylebox_override].\n\t\t\t\tSee also [method get_theme_stylebox] and [method Control.add_theme_stylebox_override] for more details.","returnType":"void"},{"name":"begin_bulk_theme_override","signature":"begin_bulk_theme_override() -> void","description":"Prevents *_theme_*_override methods from emitting [constant NOTIFICATION_THEME_CHANGED] until [method end_bulk_theme_override] is called.","returnType":"void"},{"name":"can_draw","signature":"can_draw() -> bool","description":"Returns whether the window is being drawn to the screen.","returnType":"bool"},{"name":"child_controls_changed","signature":"child_controls_changed() -> void","description":"Requests an update of the  size to fit underlying  nodes.","returnType":"void"},{"name":"end_bulk_theme_override","signature":"end_bulk_theme_override() -> void","description":"Ends a bulk theme override update. See [method begin_bulk_theme_override].","returnType":"void"},{"name":"get_contents_minimum_size","signature":"get_contents_minimum_size() -> Vector2","description":"Returns the combined minimum size from the child  nodes of the window. Use [method child_controls_changed] to update it when child nodes have changed.\n\t\t\t\tThe value returned by this method can be overridden with [method _get_contents_minimum_size].","returnType":"Vector2"},{"name":"get_flag","signature":"get_flag(flag: int) -> bool","description":"Returns true if the [param flag] is set.","returnType":"bool"},{"name":"get_layout_direction","signature":"get_layout_direction() -> int","description":"Returns layout direction and text writing direction.","returnType":"int"},{"name":"get_position_with_decorations","signature":"get_position_with_decorations() -> Vector2i","description":"Returns the window's position including its border.\n\t\t\t\tNote: If [member visible] is false, this method returns the same value as [member position].","returnType":"Vector2i"},{"name":"get_size_with_decorations","signature":"get_size_with_decorations() -> Vector2i","description":"Returns the window's size including its border.\n\t\t\t\tNote: If [member visible] is false, this method returns the same value as [member size].","returnType":"Vector2i"},{"name":"get_theme_color","signature":"get_theme_color(name: StringName, theme_type: StringName) -> Color","description":"Returns a  from the first matching  in the tree if that  has a color item with the specified [param name] and [param theme_type].\n\t\t\t\tSee [method Control.get_theme_color] for more details.","returnType":"Color"},{"name":"get_theme_constant","signature":"get_theme_constant(name: StringName, theme_type: StringName) -> int","description":"Returns a constant from the first matching  in the tree if that  has a constant item with the specified [param name] and [param theme_type].\n\t\t\t\tSee [method Control.get_theme_color] for more details.","returnType":"int"},{"name":"get_theme_default_base_scale","signature":"get_theme_default_base_scale() -> float","description":"Returns the default base scale value from the first matching  in the tree if that  has a valid [member Theme.default_base_scale] value.\n\t\t\t\tSee [method Control.get_theme_color] for details.","returnType":"float"},{"name":"get_theme_default_font","signature":"get_theme_default_font() -> Font","description":"Returns the default font from the first matching  in the tree if that  has a valid [member Theme.default_font] value.\n\t\t\t\tSee [method Control.get_theme_color] for details.","returnType":"Font"},{"name":"get_theme_default_font_size","signature":"get_theme_default_font_size() -> int","description":"Returns the default font size value from the first matching  in the tree if that  has a valid [member Theme.default_font_size] value.\n\t\t\t\tSee [method Control.get_theme_color] for details.","returnType":"int"},{"name":"get_theme_font","signature":"get_theme_font(name: StringName, theme_type: StringName) -> Font","description":"Returns a  from the first matching  in the tree if that  has a font item with the specified [param name] and [param theme_type].\n\t\t\t\tSee [method Control.get_theme_color] for details.","returnType":"Font"},{"name":"get_theme_font_size","signature":"get_theme_font_size(name: StringName, theme_type: StringName) -> int","description":"Returns a font size from the first matching  in the tree if that  has a font size item with the specified [param name] and [param theme_type].\n\t\t\t\tSee [method Control.get_theme_color] for details.","returnType":"int"},{"name":"get_theme_icon","signature":"get_theme_icon(name: StringName, theme_type: StringName) -> Texture2D","description":"Returns an icon from the first matching  in the tree if that  has an icon item with the specified [param name] and [param theme_type].\n\t\t\t\tSee [method Control.get_theme_color] for details.","returnType":"Texture2D"},{"name":"get_theme_stylebox","signature":"get_theme_stylebox(name: StringName, theme_type: StringName) -> StyleBox","description":"Returns a  from the first matching  in the tree if that  has a stylebox item with the specified [param name] and [param theme_type].\n\t\t\t\tSee [method Control.get_theme_color] for details.","returnType":"StyleBox"},{"name":"get_window_id","signature":"get_window_id() -> int","description":"Returns the ID of the window.","returnType":"int"},{"name":"grab_focus","signature":"grab_focus() -> void","description":"Causes the window to grab focus, allowing it to receive user input.","returnType":"void"},{"name":"has_focus","signature":"has_focus() -> bool","description":"Returns true if the window is focused.","returnType":"bool"},{"name":"has_theme_color","signature":"has_theme_color(name: StringName, theme_type: StringName) -> bool","description":"Returns true if there is a matching  in the tree that has a color item with the specified [param name] and [param theme_type].\n\t\t\t\tSee [method Control.get_theme_color] for details.","returnType":"bool"},{"name":"has_theme_color_override","signature":"has_theme_color_override(name: StringName) -> bool","description":"Returns true if there is a local override for a theme  with the specified [param name] in this  node.\n\t\t\t\tSee [method add_theme_color_override].","returnType":"bool"},{"name":"has_theme_constant","signature":"has_theme_constant(name: StringName, theme_type: StringName) -> bool","description":"Returns true if there is a matching  in the tree that has a constant item with the specified [param name] and [param theme_type].\n\t\t\t\tSee [method Control.get_theme_color] for details.","returnType":"bool"},{"name":"has_theme_constant_override","signature":"has_theme_constant_override(name: StringName) -> bool","description":"Returns true if there is a local override for a theme constant with the specified [param name] in this  node.\n\t\t\t\tSee [method add_theme_constant_override].","returnType":"bool"},{"name":"has_theme_font","signature":"has_theme_font(name: StringName, theme_type: StringName) -> bool","description":"Returns true if there is a matching  in the tree that has a font item with the specified [param name] and [param theme_type].\n\t\t\t\tSee [method Control.get_theme_color] for details.","returnType":"bool"},{"name":"has_theme_font_override","signature":"has_theme_font_override(name: StringName) -> bool","description":"Returns true if there is a local override for a theme  with the specified [param name] in this  node.\n\t\t\t\tSee [method add_theme_font_override].","returnType":"bool"},{"name":"has_theme_font_size","signature":"has_theme_font_size(name: StringName, theme_type: StringName) -> bool","description":"Returns true if there is a matching  in the tree that has a font size item with the specified [param name] and [param theme_type].\n\t\t\t\tSee [method Control.get_theme_color] for details.","returnType":"bool"},{"name":"has_theme_font_size_override","signature":"has_theme_font_size_override(name: StringName) -> bool","description":"Returns true if there is a local override for a theme font size with the specified [param name] in this  node.\n\t\t\t\tSee [method add_theme_font_size_override].","returnType":"bool"},{"name":"has_theme_icon","signature":"has_theme_icon(name: StringName, theme_type: StringName) -> bool","description":"Returns true if there is a matching  in the tree that has an icon item with the specified [param name] and [param theme_type].\n\t\t\t\tSee [method Control.get_theme_color] for details.","returnType":"bool"},{"name":"has_theme_icon_override","signature":"has_theme_icon_override(name: StringName) -> bool","description":"Returns true if there is a local override for a theme icon with the specified [param name] in this  node.\n\t\t\t\tSee [method add_theme_icon_override].","returnType":"bool"},{"name":"has_theme_stylebox","signature":"has_theme_stylebox(name: StringName, theme_type: StringName) -> bool","description":"Returns true if there is a matching  in the tree that has a stylebox item with the specified [param name] and [param theme_type].\n\t\t\t\tSee [method Control.get_theme_color] for details.","returnType":"bool"},{"name":"has_theme_stylebox_override","signature":"has_theme_stylebox_override(name: StringName) -> bool","description":"Returns true if there is a local override for a theme  with the specified [param name] in this  node.\n\t\t\t\tSee [method add_theme_stylebox_override].","returnType":"bool"},{"name":"hide","signature":"hide() -> void","description":"Hides the window. This is not the same as minimized state. Hidden window can't be interacted with and needs to be made visible with [method show].","returnType":"void"},{"name":"is_embedded","signature":"is_embedded() -> bool","description":"Returns true if the window is currently embedded in another window.","returnType":"bool"},{"name":"is_layout_rtl","signature":"is_layout_rtl() -> bool","description":"Returns true if layout is right-to-left.","returnType":"bool"},{"name":"is_maximize_allowed","signature":"is_maximize_allowed() -> bool","description":"Returns true if the window can be maximized (the maximize button is enabled).","returnType":"bool"},{"name":"is_using_font_oversampling","signature":"is_using_font_oversampling() -> bool","description":"Returns true if font oversampling is enabled. See [method set_use_font_oversampling].","returnType":"bool"},{"name":"move_to_center","signature":"move_to_center() -> void","description":"Centers a native window on the current screen and an embedded window on its embedder .","returnType":"void"},{"name":"move_to_foreground","signature":"move_to_foreground() -> void","description":"Causes the window to grab focus, allowing it to receive user input.","returnType":"void"},{"name":"popup","signature":"popup(rect: Rect2i) -> void","description":"Shows the  and makes it transient (see [member transient]). If [param rect] is provided, it will be set as the 's size. Fails if called on the main window.\n\t\t\t\tIf [member ProjectSettings.display/window/subwindows/embed_subwindows] is true (single-window mode), [param rect]'s coordinates are global and relative to the main window's top-left corner (excluding window decorations). If [param rect]'s position coordinates are negative, the window will be located outside the main window and may not be visible as a result.\n\t\t\t\tIf [member ProjectSettings.display/window/subwindows/embed_subwindows] is false (multi-window mode), [param rect]'s coordinates are global and relative to the top-left corner of the leftmost screen. If [param rect]'s position coordinates are negative, the window will be placed at the top-left corner of the screen.\n\t\t\t\tNote: [param rect] must be in global coordinates if specified.","returnType":"void"},{"name":"popup_centered","signature":"popup_centered(minsize: Vector2i) -> void","description":"Popups the  at the center of the current screen, with optionally given minimum size. If the  is embedded, it will be centered in the parent  instead.\n\t\t\t\tNote: Calling it with the default value of [param minsize] is equivalent to calling it with [member size].","returnType":"void"},{"name":"popup_centered_clamped","signature":"popup_centered_clamped(minsize: Vector2i, fallback_ratio: float) -> void","description":"Popups the  centered inside its parent . [param fallback_ratio] determines the maximum size of the , in relation to its parent.\n\t\t\t\tNote: Calling it with the default value of [param minsize] is equivalent to calling it with [member size].","returnType":"void"},{"name":"popup_centered_ratio","signature":"popup_centered_ratio(ratio: float) -> void","description":"If  is embedded, popups the  centered inside its embedder and sets its size as a [param ratio] of embedder's size.\n\t\t\t\tIf  is a native window, popups the  centered inside the screen of its parent  and sets its size as a [param ratio] of the screen size.","returnType":"void"},{"name":"popup_exclusive","signature":"popup_exclusive(from_node: Node, rect: Rect2i) -> void","description":"Attempts to parent this dialog to the last exclusive window relative to [param from_node], and then calls [method Window.popup] on it. The dialog must have no current parent, otherwise the method fails.\n\t\t\t\tSee also [method set_unparent_when_invisible] and [method Node.get_last_exclusive_window].","returnType":"void"},{"name":"popup_exclusive_centered","signature":"popup_exclusive_centered(from_node: Node, minsize: Vector2i) -> void","description":"Attempts to parent this dialog to the last exclusive window relative to [param from_node], and then calls [method Window.popup_centered] on it. The dialog must have no current parent, otherwise the method fails.\n\t\t\t\tSee also [method set_unparent_when_invisible] and [method Node.get_last_exclusive_window].","returnType":"void"},{"name":"popup_exclusive_centered_clamped","signature":"popup_exclusive_centered_clamped(from_node: Node, minsize: Vector2i, fallback_ratio: float) -> void","description":"Attempts to parent this dialog to the last exclusive window relative to [param from_node], and then calls [method Window.popup_centered_clamped] on it. The dialog must have no current parent, otherwise the method fails.\n\t\t\t\tSee also [method set_unparent_when_invisible] and [method Node.get_last_exclusive_window].","returnType":"void"},{"name":"popup_exclusive_centered_ratio","signature":"popup_exclusive_centered_ratio(from_node: Node, ratio: float) -> void","description":"Attempts to parent this dialog to the last exclusive window relative to [param from_node], and then calls [method Window.popup_centered_ratio] on it. The dialog must have no current parent, otherwise the method fails.\n\t\t\t\tSee also [method set_unparent_when_invisible] and [method Node.get_last_exclusive_window].","returnType":"void"},{"name":"popup_exclusive_on_parent","signature":"popup_exclusive_on_parent(from_node: Node, parent_rect: Rect2i) -> void","description":"Attempts to parent this dialog to the last exclusive window relative to [param from_node], and then calls [method Window.popup_on_parent] on it. The dialog must have no current parent, otherwise the method fails.\n\t\t\t\tSee also [method set_unparent_when_invisible] and [method Node.get_last_exclusive_window].","returnType":"void"},{"name":"popup_on_parent","signature":"popup_on_parent(parent_rect: Rect2i) -> void","description":"Popups the  with a position shifted by parent 's position. If the  is embedded, has the same effect as [method popup].","returnType":"void"},{"name":"remove_theme_color_override","signature":"remove_theme_color_override(name: StringName) -> void","description":"Removes a local override for a theme  with the specified [param name] previously added by [method add_theme_color_override] or via the Inspector dock.","returnType":"void"},{"name":"remove_theme_constant_override","signature":"remove_theme_constant_override(name: StringName) -> void","description":"Removes a local override for a theme constant with the specified [param name] previously added by [method add_theme_constant_override] or via the Inspector dock.","returnType":"void"},{"name":"remove_theme_font_override","signature":"remove_theme_font_override(name: StringName) -> void","description":"Removes a local override for a theme  with the specified [param name] previously added by [method add_theme_font_override] or via the Inspector dock.","returnType":"void"},{"name":"remove_theme_font_size_override","signature":"remove_theme_font_size_override(name: StringName) -> void","description":"Removes a local override for a theme font size with the specified [param name] previously added by [method add_theme_font_size_override] or via the Inspector dock.","returnType":"void"},{"name":"remove_theme_icon_override","signature":"remove_theme_icon_override(name: StringName) -> void","description":"Removes a local override for a theme icon with the specified [param name] previously added by [method add_theme_icon_override] or via the Inspector dock.","returnType":"void"},{"name":"remove_theme_stylebox_override","signature":"remove_theme_stylebox_override(name: StringName) -> void","description":"Removes a local override for a theme  with the specified [param name] previously added by [method add_theme_stylebox_override] or via the Inspector dock.","returnType":"void"},{"name":"request_attention","signature":"request_attention() -> void","description":"Tells the OS that the  needs an attention. This makes the window stand out in some way depending on the system, e.g. it might blink on the task bar.","returnType":"void"},{"name":"reset_size","signature":"reset_size() -> void","description":"Resets the size to the minimum size, which is the max of [member min_size] and (if [member wrap_controls] is enabled) [method get_contents_minimum_size]. This is equivalent to calling set_size(Vector2i()) (or any size below the minimum).","returnType":"void"},{"name":"set_flag","signature":"set_flag(flag: int, enabled: bool) -> void","description":"Sets a specified window flag.","returnType":"void"},{"name":"set_ime_active","signature":"set_ime_active(active: bool) -> void","description":"If [param active] is true, enables system's native IME (Input Method Editor).","returnType":"void"},{"name":"set_ime_position","signature":"set_ime_position(position: Vector2i) -> void","description":"Moves IME to the given position.","returnType":"void"},{"name":"set_layout_direction","signature":"set_layout_direction(direction: int) -> void","description":"Sets layout direction and text writing direction. Right-to-left layouts are necessary for certain languages (e.g. Arabic and Hebrew).","returnType":"void"},{"name":"set_unparent_when_invisible","signature":"set_unparent_when_invisible(unparent: bool) -> void","description":"If [param unparent] is true, the window is automatically unparented when going invisible.\n\t\t\t\tNote: Make sure to keep a reference to the node, otherwise it will be orphaned. You also need to manually call [method Node.queue_free] to free the window if it's not parented.","returnType":"void"},{"name":"set_use_font_oversampling","signature":"set_use_font_oversampling(enable: bool) -> void","description":"Enables font oversampling. This makes fonts look better when they are scaled up.","returnType":"void"},{"name":"show","signature":"show() -> void","description":"Makes the  appear. This enables interactions with the  and doesn't change any of its property other than visibility (unlike e.g. [method popup]).","returnType":"void"},{"name":"start_drag","signature":"start_drag() -> void","description":"Starts an interactive drag operation on the window, using the current mouse position. Call this method when handling a mouse button being pressed to simulate a pressed event on the window's title bar. Using this method allows the window to participate in space switching, tiling, and other system features.","returnType":"void"},{"name":"start_resize","signature":"start_resize(edge: int) -> void","description":"Starts an interactive resize operation on the window, using the current mouse position. Call this method when handling a mouse button being pressed to simulate a pressed event on the window's edge.","returnType":"void"}],"signals":[{"name":"about_to_popup","description":"Emitted right after [method popup] call, before the [Window] appears or does anything."},{"name":"close_requested","description":"Emitted when the [Window]'s close button is pressed or when [member popup_window] is enabled and user clicks outside the window.\n\t\t\t\tThis signal can be used to handle window closing, e.g. by connecting it to [method hide]."},{"name":"dpi_changed","description":"Emitted when the [Window]'s DPI changes as a result of OS-level changes (e.g. moving the window from a Retina display to a lower resolution one).\n\t\t\t\t[b]Note:[/b] Only implemented on macOS."},{"name":"files_dropped","description":"Emitted when files are dragged from the OS file manager and dropped in the game window. The argument is a list of file paths.\n\t\t\t\t[codeblock]\n\t\t\t\tfunc _ready():\n\t\t\t\t    get_window().files_dropped.connect(on_files_dropped)\n\n\t\t\t\tfunc on_files_dropped(files):\n\t\t\t\t    print(files)\n\t\t\t\t[/codeblock]\n\t\t\t\t[b]Note:[/b] This signal only works with native windows, i.e. the main window and [Window]-derived nodes when [member Viewport.gui_embed_subwindows] is disabled in the main viewport."},{"name":"focus_entered","description":"Emitted when the [Window] gains focus."},{"name":"focus_exited","description":"Emitted when the [Window] loses its focus."},{"name":"go_back_requested","description":"Emitted when a go back request is sent (e.g. pressing the \"Back\" button on Android), right after [constant Node.NOTIFICATION_WM_GO_BACK_REQUEST]."},{"name":"mouse_entered","description":"Emitted when the mouse cursor enters the [Window]'s visible area, that is not occluded behind other [Control]s or windows, provided its [member Viewport.gui_disable_input] is [code]false[/code] and regardless if it's currently focused or not."},{"name":"mouse_exited","description":"Emitted when the mouse cursor leaves the [Window]'s visible area, that is not occluded behind other [Control]s or windows, provided its [member Viewport.gui_disable_input] is [code]false[/code] and regardless if it's currently focused or not."},{"name":"theme_changed","description":"Emitted when the [constant NOTIFICATION_THEME_CHANGED] notification is sent."},{"name":"title_changed","description":"Emitted when window title bar text is changed."},{"name":"titlebar_changed","description":"Emitted when window title bar decorations are changed, e.g. macOS window enter/exit full screen mode, or extend-to-title flag is changed."},{"name":"visibility_changed","description":"Emitted when [Window] is made visible or disappears."},{"name":"window_input","description":"Emitted when the [Window] is currently focused and receives any input, passing the received event as an argument. The event's position, if present, is in the embedder's coordinate system."}]},"WorkerThreadPool":{"name":"WorkerThreadPool","description":"A singleton that allocates some s on startup, used to offload tasks to these threads.","inherits":"Object","properties":[],"methods":[{"name":"add_group_task","signature":"add_group_task(action: Callable, elements: int, tasks_needed: int, high_priority: bool, description: String) -> int","description":"Adds [param action] as a group task to be executed by the worker threads. The  will be called a number of times based on [param elements], with the first thread calling it with the value 0 as a parameter, and each consecutive execution incrementing this value by 1 until it reaches element - 1.\n\t\t\t\tThe number of threads the task is distributed to is defined by [param tasks_needed], where the default value -1 means it is distributed to all worker threads. [param high_priority] determines if the task has a high priority or a low priority (default). You can optionally provide a [param description] to help with debugging.\n\t\t\t\tReturns a group task ID that can be used by other methods.\n\t\t\t\tWarning: Every task must be waited for completion using [method wait_for_task_completion] or [method wait_for_group_task_completion] at some point so that any allocated resources inside the task can be cleaned up.","returnType":"int"},{"name":"add_task","signature":"add_task(action: Callable, high_priority: bool, description: String) -> int","description":"Adds [param action] as a task to be executed by a worker thread. [param high_priority] determines if the task has a high priority or a low priority (default). You can optionally provide a [param description] to help with debugging.\n\t\t\t\tReturns a task ID that can be used by other methods.\n\t\t\t\tWarning: Every task must be waited for completion using [method wait_for_task_completion] or [method wait_for_group_task_completion] at some point so that any allocated resources inside the task can be cleaned up.","returnType":"int"},{"name":"get_group_processed_element_count","signature":"get_group_processed_element_count(group_id: int) -> int","description":"Returns how many times the  of the group task with the given ID has already been executed by the worker threads.\n\t\t\t\tNote: If a thread has started executing the  but is yet to finish, it won't be counted.","returnType":"int"},{"name":"is_group_task_completed","signature":"is_group_task_completed(group_id: int) -> bool","description":"Returns true if the group task with the given ID is completed.\n\t\t\t\tNote: You should only call this method between adding the group task and awaiting its completion.","returnType":"bool"},{"name":"is_task_completed","signature":"is_task_completed(task_id: int) -> bool","description":"Returns true if the task with the given ID is completed.\n\t\t\t\tNote: You should only call this method between adding the task and awaiting its completion.","returnType":"bool"},{"name":"wait_for_group_task_completion","signature":"wait_for_group_task_completion(group_id: int) -> void","description":"Pauses the thread that calls this method until the group task with the given ID is completed.","returnType":"void"},{"name":"wait_for_task_completion","signature":"wait_for_task_completion(task_id: int) -> int","description":"Pauses the thread that calls this method until the task with the given ID is completed.\n\t\t\t\tReturns [constant @GlobalScope.OK] if the task could be successfully awaited.\n\t\t\t\tReturns [constant @GlobalScope.ERR_INVALID_PARAMETER] if a task with the passed ID does not exist (maybe because it was already awaited and disposed of).\n\t\t\t\tReturns [constant @GlobalScope.ERR_BUSY] if the call is made from another running task and, due to task scheduling, there's potential for deadlocking (e.g., the task to await may be at a lower level in the call stack and therefore can't progress). This is an advanced situation that should only matter when some tasks depend on others (in the current implementation, the tricky case is a task trying to wait on an older one).","returnType":"int"}],"signals":[]},"World2D":{"name":"World2D","description":"A resource that holds all components of a 2D world, such as a canvas and a physics space.","inherits":"Resource","properties":[{"name":"canvas","type":"RID","description":"The [RID] of this world's canvas resource. Used by the [RenderingServer] for 2D drawing."},{"name":"direct_space_state","type":"PhysicsDirectSpaceState2D","description":"Direct access to the world's physics 2D space state. Used for querying current and potential collisions. When using multi-threaded physics, access is limited to [method Node._physics_process] in the main thread."},{"name":"navigation_map","type":"RID","description":"The [RID] of this world's navigation map. Used by the [NavigationServer2D]."},{"name":"space","type":"RID","description":"The [RID] of this world's physics space resource. Used by the [PhysicsServer2D] for 2D physics, treating it as both a space and an area."}],"methods":[],"signals":[]},"World3D":{"name":"World3D","description":"A resource that holds all components of a 3D world, such as a visual scenario and a physics space.","inherits":"Resource","properties":[{"name":"camera_attributes","type":"CameraAttributes","description":"The default [CameraAttributes] resource to use if none set on the [Camera3D]."},{"name":"direct_space_state","type":"PhysicsDirectSpaceState3D","description":"Direct access to the world's physics 3D space state. Used for querying current and potential collisions. When using multi-threaded physics, access is limited to [method Node._physics_process] in the main thread."},{"name":"environment","type":"Environment","description":"The World3D's [Environment]."},{"name":"fallback_environment","type":"Environment","description":"The World3D's fallback environment will be used if [member environment] fails or is missing."},{"name":"navigation_map","type":"RID","description":"The [RID] of this world's navigation map. Used by the [NavigationServer3D]."},{"name":"scenario","type":"RID","description":"The World3D's visual scenario."},{"name":"space","type":"RID","description":"The World3D's physics space."}],"methods":[],"signals":[]},"WorldBoundaryShape2D":{"name":"WorldBoundaryShape2D","description":"A 2D world boundary (half-plane) shape used for physics collision.","inherits":"Shape2D","properties":[{"name":"distance","type":"float","description":"The distance from the origin to the line, expressed in terms of [member normal] (according to its direction and magnitude). Actual absolute distance from the origin to the line can be calculated as [code]abs(distance) / normal.length()[/code].\n\t\t\tIn the scalar equation of the line [code]ax + by = d[/code], this is [code]d[/code], while the [code](a, b)[/code] coordinates are represented by the [member normal] property."},{"name":"normal","type":"Vector2","description":"The line's normal, typically a unit vector. Its direction indicates the non-colliding half-plane. Can be of any length but zero. Defaults to [constant Vector2.UP]."}],"methods":[],"signals":[]},"WorldBoundaryShape3D":{"name":"WorldBoundaryShape3D","description":"A 3D world boundary (half-space) shape used for physics collision.","inherits":"Shape3D","properties":[{"name":"plane","type":"Plane","description":"The [Plane] used by the [WorldBoundaryShape3D] for collision."}],"methods":[],"signals":[]},"WorldEnvironment":{"name":"WorldEnvironment","description":"Default environment properties for the entire scene (post-processing effects, lighting and background settings).","inherits":"Node","properties":[{"name":"camera_attributes","type":"CameraAttributes","description":"The default [CameraAttributes] resource to use if none set on the [Camera3D]."},{"name":"compositor","type":"Compositor","description":"The default [Compositor] resource to use if none set on the [Camera3D]."},{"name":"environment","type":"Environment","description":"The [Environment] resource used by this [WorldEnvironment], defining the default properties."}],"methods":[],"signals":[]},"X509Certificate":{"name":"X509Certificate","description":"An X509 certificate (e.g. for TLS).","inherits":"Resource","properties":[],"methods":[{"name":"load","signature":"load(path: String) -> int","description":"Loads a certificate from [param path] (\"*.crt\" file).","returnType":"int"},{"name":"load_from_string","signature":"load_from_string(string: String) -> int","description":"Loads a certificate from the given [param string].","returnType":"int"},{"name":"save","signature":"save(path: String) -> int","description":"Saves a certificate to the given [param path] (should be a \"*.crt\" file).","returnType":"int"},{"name":"save_to_string","signature":"save_to_string() -> String","description":"Returns a string representation of the certificate, or an empty string if the certificate is invalid.","returnType":"String"}],"signals":[]},"XMLParser":{"name":"XMLParser","description":"Provides a low-level interface for creating parsers for XML files.","inherits":"RefCounted","properties":[],"methods":[{"name":"get_attribute_count","signature":"get_attribute_count() -> int","description":"Returns the number of attributes in the currently parsed element.\n\t\t\t\tNote: If this method is used while the currently parsed node is not [constant NODE_ELEMENT] or [constant NODE_ELEMENT_END], this count will not be updated and will still reflect the last element.","returnType":"int"},{"name":"get_attribute_name","signature":"get_attribute_name(idx: int) -> String","description":"Returns the name of an attribute of the currently parsed element, specified by the [param idx] index.","returnType":"String"},{"name":"get_attribute_value","signature":"get_attribute_value(idx: int) -> String","description":"Returns the value of an attribute of the currently parsed element, specified by the [param idx] index.","returnType":"String"},{"name":"get_current_line","signature":"get_current_line() -> int","description":"Returns the current line in the parsed file, counting from 0.","returnType":"int"},{"name":"get_named_attribute_value","signature":"get_named_attribute_value(name: String) -> String","description":"Returns the value of an attribute of the currently parsed element, specified by its [param name]. This method will raise an error if the element has no such attribute.","returnType":"String"},{"name":"get_named_attribute_value_safe","signature":"get_named_attribute_value_safe(name: String) -> String","description":"Returns the value of an attribute of the currently parsed element, specified by its [param name]. This method will return an empty string if the element has no such attribute.","returnType":"String"},{"name":"get_node_data","signature":"get_node_data() -> String","description":"Returns the contents of a text node. This method will raise an error if the current parsed node is of any other type.","returnType":"String"},{"name":"get_node_name","signature":"get_node_name() -> String","description":"Returns the name of a node. This method will raise an error if the currently parsed node is a text node.\n\t\t\t\tNote: The content of a [constant NODE_CDATA] node and the comment string of a [constant NODE_COMMENT] node are also considered names.","returnType":"String"},{"name":"get_node_offset","signature":"get_node_offset() -> int","description":"Returns the byte offset of the currently parsed node since the beginning of the file or buffer. This is usually equivalent to the number of characters before the read position.","returnType":"int"},{"name":"get_node_type","signature":"get_node_type() -> int","description":"Returns the type of the current node. Compare with [enum NodeType] constants.","returnType":"int"},{"name":"has_attribute","signature":"has_attribute(name: String) -> bool","description":"Returns true if the currently parsed element has an attribute with the [param name].","returnType":"bool"},{"name":"is_empty","signature":"is_empty() -> bool","description":"Returns true if the currently parsed element is empty, e.g. &lt;element /&gt;.","returnType":"bool"},{"name":"open","signature":"open(file: String) -> int","description":"Opens an XML [param file] for parsing. This method returns an error code.","returnType":"int"},{"name":"open_buffer","signature":"open_buffer(buffer: PackedByteArray) -> int","description":"Opens an XML raw [param buffer] for parsing. This method returns an error code.","returnType":"int"},{"name":"read","signature":"read() -> int","description":"Parses the next node in the file. This method returns an error code.","returnType":"int"},{"name":"seek","signature":"seek(position: int) -> int","description":"Moves the buffer cursor to a certain offset (since the beginning) and reads the next node there. This method returns an error code.","returnType":"int"},{"name":"skip_section","signature":"skip_section() -> void","description":"Skips the current section. If the currently parsed node contains more inner nodes, they will be ignored and the cursor will go to the closing of the current element.","returnType":"void"}],"signals":[]},"XRAnchor3D":{"name":"XRAnchor3D","description":"An anchor point in AR space.","inherits":"XRNode3D","properties":[],"methods":[{"name":"get_plane","signature":"get_plane() -> Plane","description":"Returns a plane aligned with our anchor; handy for intersection testing.","returnType":"Plane"},{"name":"get_size","signature":"get_size() -> Vector3","description":"Returns the estimated size of the plane that was detected. Say when the anchor relates to a table in the real world, this is the estimated size of the surface of that table.","returnType":"Vector3"}],"signals":[]},"XRBodyModifier3D":{"name":"XRBodyModifier3D","description":"A node for driving body meshes from  data.","inherits":"SkeletonModifier3D","properties":[{"name":"body_tracker","type":"StringName","description":"The name of the [XRBodyTracker] registered with [XRServer] to obtain the body tracking data from."},{"name":"body_update","type":"int","description":"Specifies the body parts to update."},{"name":"bone_update","type":"int","description":"Specifies the type of updates to perform on the bones."}],"methods":[],"signals":[]},"XRBodyTracker":{"name":"XRBodyTracker","description":"A tracked body in XR.","inherits":"XRPositionalTracker","properties":[{"name":"body_flags","type":"int","description":"The type of body tracking data captured."},{"name":"has_tracking_data","type":"bool","description":"If [code]true[/code], the body tracking data is valid."}],"methods":[{"name":"get_joint_flags","signature":"get_joint_flags(joint: int) -> int","description":"Returns flags about the validity of the tracking data for the given body joint (see [enum XRBodyTracker.JointFlags]).","returnType":"int"},{"name":"get_joint_transform","signature":"get_joint_transform(joint: int) -> Transform3D","description":"Returns the transform for the given body joint.","returnType":"Transform3D"},{"name":"set_joint_flags","signature":"set_joint_flags(joint: int, flags: int) -> void","description":"Sets flags about the validity of the tracking data for the given body joint.","returnType":"void"},{"name":"set_joint_transform","signature":"set_joint_transform(joint: int, transform: Transform3D) -> void","description":"Sets the transform for the given body joint.","returnType":"void"}],"signals":[]},"XRCamera3D":{"name":"XRCamera3D","description":"A camera node with a few overrules for AR/VR applied, such as location tracking.","inherits":"Camera3D","properties":[],"methods":[],"signals":[]},"XRController3D":{"name":"XRController3D","description":"A 3D node representing a spatially-tracked controller.","inherits":"XRNode3D","properties":[],"methods":[{"name":"get_float","signature":"get_float(name: StringName) -> float","description":"Returns a numeric value for the input with the given [param name]. This is used for triggers and grip sensors.","returnType":"float"},{"name":"get_input","signature":"get_input(name: StringName) -> Variant","description":"Returns a  for the input with the given [param name]. This works for any input type, the variant will be typed according to the actions configuration.","returnType":"Variant"},{"name":"get_tracker_hand","signature":"get_tracker_hand() -> int","description":"Returns the hand holding this controller, if known. See [enum XRPositionalTracker.TrackerHand].","returnType":"int"},{"name":"get_vector2","signature":"get_vector2(name: StringName) -> Vector2","description":"Returns a  for the input with the given [param name]. This is used for thumbsticks and thumbpads found on many controllers.","returnType":"Vector2"},{"name":"is_button_pressed","signature":"is_button_pressed(name: StringName) -> bool","description":"Returns true if the button with the given [param name] is pressed.","returnType":"bool"}],"signals":[{"name":"button_pressed","description":"Emitted when a button on this controller is pressed."},{"name":"button_released","description":"Emitted when a button on this controller is released."},{"name":"input_float_changed","description":"Emitted when a trigger or similar input on this controller changes value."},{"name":"input_vector2_changed","description":"Emitted when a thumbstick or thumbpad on this controller is moved."},{"name":"profile_changed","description":"Emitted when the interaction profile on this controller is changed."}]},"XRControllerTracker":{"name":"XRControllerTracker","description":"A tracked controller.","inherits":"XRPositionalTracker","properties":[],"methods":[],"signals":[]},"XRFaceModifier3D":{"name":"XRFaceModifier3D","description":"A node for driving standard face meshes from  weights.","inherits":"Node3D","properties":[{"name":"face_tracker","type":"StringName","description":"The [XRFaceTracker] path."},{"name":"target","type":"NodePath","description":"The [NodePath] of the face [MeshInstance3D]."}],"methods":[],"signals":[]},"XRFaceTracker":{"name":"XRFaceTracker","description":"A tracked face.","inherits":"XRTracker","properties":[{"name":"blend_shapes","type":"PackedFloat32Array","description":"The array of face blend shape weights with indices corresponding to the [enum BlendShapeEntry] enum."}],"methods":[{"name":"get_blend_shape","signature":"get_blend_shape(blend_shape: int) -> float","description":"Returns the requested face blend shape weight.","returnType":"float"},{"name":"set_blend_shape","signature":"set_blend_shape(blend_shape: int, weight: float) -> void","description":"Sets a face blend shape weight.","returnType":"void"}],"signals":[]},"XRHandModifier3D":{"name":"XRHandModifier3D","description":"A node for driving hand meshes from  data.","inherits":"SkeletonModifier3D","properties":[{"name":"bone_update","type":"int","description":"Specifies the type of updates to perform on the bones."},{"name":"hand_tracker","type":"StringName","description":"The name of the [XRHandTracker] registered with [XRServer] to obtain the hand tracking data from."}],"methods":[],"signals":[]},"XRHandTracker":{"name":"XRHandTracker","description":"A tracked hand in XR.","inherits":"XRPositionalTracker","properties":[{"name":"hand_tracking_source","type":"int","description":"The source of the hand tracking data."},{"name":"has_tracking_data","type":"bool","description":"If [code]true[/code], the hand tracking data is valid."}],"methods":[{"name":"get_hand_joint_angular_velocity","signature":"get_hand_joint_angular_velocity(joint: int) -> Vector3","description":"Returns the angular velocity for the given hand joint.","returnType":"Vector3"},{"name":"get_hand_joint_flags","signature":"get_hand_joint_flags(joint: int) -> int","description":"Returns flags about the validity of the tracking data for the given hand joint (see [enum XRHandTracker.HandJointFlags]).","returnType":"int"},{"name":"get_hand_joint_linear_velocity","signature":"get_hand_joint_linear_velocity(joint: int) -> Vector3","description":"Returns the linear velocity for the given hand joint.","returnType":"Vector3"},{"name":"get_hand_joint_radius","signature":"get_hand_joint_radius(joint: int) -> float","description":"Returns the radius of the given hand joint.","returnType":"float"},{"name":"get_hand_joint_transform","signature":"get_hand_joint_transform(joint: int) -> Transform3D","description":"Returns the transform for the given hand joint.","returnType":"Transform3D"},{"name":"set_hand_joint_angular_velocity","signature":"set_hand_joint_angular_velocity(joint: int, angular_velocity: Vector3) -> void","description":"Sets the angular velocity for the given hand joint.","returnType":"void"},{"name":"set_hand_joint_flags","signature":"set_hand_joint_flags(joint: int, flags: int) -> void","description":"Sets flags about the validity of the tracking data for the given hand joint.","returnType":"void"},{"name":"set_hand_joint_linear_velocity","signature":"set_hand_joint_linear_velocity(joint: int, linear_velocity: Vector3) -> void","description":"Sets the linear velocity for the given hand joint.","returnType":"void"},{"name":"set_hand_joint_radius","signature":"set_hand_joint_radius(joint: int, radius: float) -> void","description":"Sets the radius of the given hand joint.","returnType":"void"},{"name":"set_hand_joint_transform","signature":"set_hand_joint_transform(joint: int, transform: Transform3D) -> void","description":"Sets the transform for the given hand joint.","returnType":"void"}],"signals":[]},"XRInterface":{"name":"XRInterface","description":"Base class for an XR interface implementation.","inherits":"RefCounted","properties":[{"name":"ar_is_anchor_detection_enabled","type":"bool","description":"On an AR interface, [code]true[/code] if anchor detection is enabled."},{"name":"environment_blend_mode","type":"int","description":"Specify how XR should blend in the environment. This is specific to certain AR and passthrough devices where camera images are blended in by the XR compositor."},{"name":"interface_is_primary","type":"bool","description":"[code]true[/code] if this is the primary interface."},{"name":"xr_play_area_mode","type":"int","description":"The play area mode for this interface."}],"methods":[{"name":"get_camera_feed_id","signature":"get_camera_feed_id() -> int","description":"If this is an AR interface that requires displaying a camera feed as the background, this method returns the feed ID in the  for this interface.","returnType":"int"},{"name":"get_capabilities","signature":"get_capabilities() -> int","description":"Returns a combination of [enum Capabilities] flags providing information about the capabilities of this interface.","returnType":"int"},{"name":"get_name","signature":"get_name() -> StringName","description":"Returns the name of this interface (\"OpenXR\", \"OpenVR\", \"OpenHMD\", \"ARKit\", etc.).","returnType":"StringName"},{"name":"get_play_area","signature":"get_play_area() -> PackedVector3Array","description":"Returns an array of vectors that represent the physical play area mapped to the virtual space around the  point. The points form a convex polygon that can be used to react to or visualize the play area. This returns an empty array if this feature is not supported or if the information is not yet available.","returnType":"PackedVector3Array"},{"name":"get_projection_for_view","signature":"get_projection_for_view(view: int, aspect: float, near: float, far: float) -> Projection","description":"Returns the projection matrix for a view/eye.","returnType":"Projection"},{"name":"get_render_target_size","signature":"get_render_target_size() -> Vector2","description":"Returns the resolution at which we should render our intermediate results before things like lens distortion are applied by the VR platform.","returnType":"Vector2"},{"name":"get_supported_environment_blend_modes","signature":"get_supported_environment_blend_modes() -> Array","description":"Returns the an array of supported environment blend modes, see [enum XRInterface.EnvironmentBlendMode].","returnType":"Array"},{"name":"get_system_info","signature":"get_system_info() -> Dictionary","description":"Returns a  with extra system info. Interfaces are expected to return XRRuntimeName and XRRuntimeVersion providing info about the used XR runtime. Additional entries may be provided specific to an interface.\n\t\t\t\tNote:This information may only be available after [method initialize] was successfully called.","returnType":"Dictionary"},{"name":"get_tracking_status","signature":"get_tracking_status() -> int","description":"If supported, returns the status of our tracking. This will allow you to provide feedback to the user whether there are issues with positional tracking.","returnType":"int"},{"name":"get_transform_for_view","signature":"get_transform_for_view(view: int, cam_transform: Transform3D) -> Transform3D","description":"Returns the transform for a view/eye.\n\t\t\t\t[param view] is the view/eye index.\n\t\t\t\t[param cam_transform] is the transform that maps device coordinates to scene coordinates, typically the [member Node3D.global_transform] of the current XROrigin3D.","returnType":"Transform3D"},{"name":"get_view_count","signature":"get_view_count() -> int","description":"Returns the number of views that need to be rendered for this device. 1 for Monoscopic, 2 for Stereoscopic.","returnType":"int"},{"name":"initialize","signature":"initialize() -> bool","description":"Call this to initialize this interface. The first interface that is initialized is identified as the primary interface and it will be used for rendering output.\n\t\t\t\tAfter initializing the interface you want to use you then need to enable the AR/VR mode of a viewport and rendering should commence.\n\t\t\t\tNote: You must enable the XR mode on the main viewport for any device that uses the main output of Godot, such as for mobile VR.\n\t\t\t\tIf you do this for a platform that handles its own output (such as OpenVR) Godot will show just one eye without distortion on screen. Alternatively, you can add a separate viewport node to your scene and enable AR/VR on that viewport. It will be used to output to the HMD, leaving you free to do anything you like in the main window, such as using a separate camera as a spectator camera or rendering something completely different.\n\t\t\t\tWhile currently not used, you can activate additional interfaces. You may wish to do this if you want to track controllers from other platforms. However, at this point in time only one interface can render to an HMD.","returnType":"bool"},{"name":"is_initialized","signature":"is_initialized() -> bool","description":"Returns true if this interface has been initialized.","returnType":"bool"},{"name":"is_passthrough_enabled","signature":"is_passthrough_enabled() -> bool","description":"Returns true if passthrough is enabled.","returnType":"bool"},{"name":"is_passthrough_supported","signature":"is_passthrough_supported() -> bool","description":"Returns true if this interface supports passthrough.","returnType":"bool"},{"name":"set_environment_blend_mode","signature":"set_environment_blend_mode(mode: int) -> bool","description":"Sets the active environment blend mode.\n\t\t\t\t[param mode] is the environment blend mode starting with the next frame.\n\t\t\t\tNote: Not all runtimes support all environment blend modes, so it is important to check this at startup. For example:\n\t\t\t\t\n\t\t\t\tfunc _ready():\n\t\t\t\t    var xr_interface = XRServer.find_interface(\"OpenXR\")\n\t\t\t\t    if xr_interface and xr_interface.is_initialized():\n\t\t\t\t        var vp = get_viewport()\n\t\t\t\t        vp.use_xr = true\n\t\t\t\t        var acceptable_modes = [XRInterface.XR_ENV_BLEND_MODE_OPAQUE, XRInterface.XR_ENV_BLEND_MODE_ADDITIVE]\n\t\t\t\t        var modes = xr_interface.get_supported_environment_blend_modes()\n\t\t\t\t        for mode in acceptable_modes:\n\t\t\t\t            if mode in modes:\n\t\t\t\t                xr_interface.set_environment_blend_mode(mode)\n\t\t\t\t                break\n\t\t\t\t","returnType":"bool"},{"name":"set_play_area_mode","signature":"set_play_area_mode(mode: int) -> bool","description":"Sets the active play area mode, will return false if the mode can't be used with this interface.\n\t\t\t\tNote: Changing this after the interface has already been initialized can be jarring for the player, so it's recommended to recenter on the HMD with [method XRServer.center_on_hmd] (if switching to [constant XRInterface.XR_PLAY_AREA_STAGE]) or make the switch during a scene change.","returnType":"bool"},{"name":"start_passthrough","signature":"start_passthrough() -> bool","description":"Starts passthrough, will return false if passthrough couldn't be started.\n\t\t\t\tNote: The viewport used for XR must have a transparent background, otherwise passthrough may not properly render.","returnType":"bool"},{"name":"stop_passthrough","signature":"stop_passthrough() -> void","description":"Stops passthrough.","returnType":"void"},{"name":"supports_play_area_mode","signature":"supports_play_area_mode(mode: int) -> bool","description":"Call this to find out if a given play area mode is supported by this interface.","returnType":"bool"},{"name":"trigger_haptic_pulse","signature":"trigger_haptic_pulse(action_name: String, tracker_name: StringName, frequency: float, amplitude: float, duration_sec: float, delay_sec: float) -> void","description":"Triggers a haptic pulse on a device associated with this interface.\n\t\t\t\t[param action_name] is the name of the action for this pulse.\n\t\t\t\t[param tracker_name] is optional and can be used to direct the pulse to a specific device provided that device is bound to this haptic.\n\t\t\t\t[param frequency] is the frequency of the pulse, set to 0.0 to have the system use a default frequency.\n\t\t\t\t[param amplitude] is the amplitude of the pulse between 0.0 and 1.0.\n\t\t\t\t[param duration_sec] is the duration of the pulse in seconds.\n\t\t\t\t[param delay_sec] is a delay in seconds before the pulse is given.","returnType":"void"},{"name":"uninitialize","signature":"uninitialize() -> void","description":"Turns the interface off.","returnType":"void"}],"signals":[{"name":"play_area_changed","description":"Emitted when the play area is changed. This can be a result of the player resetting the boundary or entering a new play area, the player changing the play area mode, the world scale changing or the player resetting their headset orientation."}]},"XRInterfaceExtension":{"name":"XRInterfaceExtension","description":"Base class for XR interface extensions (plugins).","inherits":"XRInterface","properties":[],"methods":[{"name":"_end_frame","signature":"_end_frame() -> void","description":"Called if interface is active and queues have been submitted.","returnType":"void"},{"name":"_get_anchor_detection_is_enabled","signature":"_get_anchor_detection_is_enabled() -> bool","description":"Return true if anchor detection is enabled for this interface.","returnType":"bool"},{"name":"_get_camera_feed_id","signature":"_get_camera_feed_id() -> int","description":"Returns the camera feed ID for the  registered with the  that should be presented as the background on an AR capable device (if applicable).","returnType":"int"},{"name":"_get_camera_transform","signature":"_get_camera_transform() -> Transform3D","description":"Returns the  that positions the  in the world.","returnType":"Transform3D"},{"name":"_get_capabilities","signature":"_get_capabilities() -> int","description":"Returns the capabilities of this interface.","returnType":"int"},{"name":"_get_color_texture","signature":"_get_color_texture() -> RID","description":"Return color texture into which to render (if applicable).","returnType":"RID"},{"name":"_get_depth_texture","signature":"_get_depth_texture() -> RID","description":"Return depth texture into which to render (if applicable).","returnType":"RID"},{"name":"_get_name","signature":"_get_name() -> StringName","description":"Returns the name of this interface.","returnType":"StringName"},{"name":"_get_play_area","signature":"_get_play_area() -> PackedVector3Array","description":"Returns a  that represents the play areas boundaries (if applicable).","returnType":"PackedVector3Array"},{"name":"_get_play_area_mode","signature":"_get_play_area_mode() -> int","description":"Returns the play area mode that sets up our play area.","returnType":"int"},{"name":"_get_projection_for_view","signature":"_get_projection_for_view(view: int, aspect: float, z_near: float, z_far: float) -> PackedFloat64Array","description":"Returns the projection matrix for the given view as a .","returnType":"PackedFloat64Array"},{"name":"_get_render_target_size","signature":"_get_render_target_size() -> Vector2","description":"Returns the size of our render target for this interface, this overrides the size of the  marked as the xr viewport.","returnType":"Vector2"},{"name":"_get_suggested_pose_names","signature":"_get_suggested_pose_names(tracker_name: StringName) -> PackedStringArray","description":"Returns a  with pose names configured by this interface. Note that user configuration can override this list.","returnType":"PackedStringArray"},{"name":"_get_suggested_tracker_names","signature":"_get_suggested_tracker_names() -> PackedStringArray","description":"Returns a  with tracker names configured by this interface. Note that user configuration can override this list.","returnType":"PackedStringArray"},{"name":"_get_system_info","signature":"_get_system_info() -> Dictionary","description":"Returns a  with system information related to this interface.","returnType":"Dictionary"},{"name":"_get_tracking_status","signature":"_get_tracking_status() -> int","description":"Returns a [enum XRInterface.TrackingStatus] specifying the current status of our tracking.","returnType":"int"},{"name":"_get_transform_for_view","signature":"_get_transform_for_view(view: int, cam_transform: Transform3D) -> Transform3D","description":"Returns a  for a given view.","returnType":"Transform3D"},{"name":"_get_velocity_texture","signature":"_get_velocity_texture() -> RID","description":"Return velocity texture into which to render (if applicable).","returnType":"RID"},{"name":"_get_view_count","signature":"_get_view_count() -> int","description":"Returns the number of views this interface requires, 1 for mono, 2 for stereoscopic.","returnType":"int"},{"name":"_get_vrs_texture","signature":"_get_vrs_texture() -> RID","description":"","returnType":"RID"},{"name":"_initialize","signature":"_initialize() -> bool","description":"Initializes the interface, returns true on success.","returnType":"bool"},{"name":"_is_initialized","signature":"_is_initialized() -> bool","description":"Returns true if this interface has been initialized.","returnType":"bool"},{"name":"_post_draw_viewport","signature":"_post_draw_viewport(render_target: RID, screen_rect: Rect2) -> void","description":"Called after the XR  draw logic has completed.","returnType":"void"},{"name":"_pre_draw_viewport","signature":"_pre_draw_viewport(render_target: RID) -> bool","description":"Called if this is our primary  before we start processing a  for every active XR , returns true if that viewport should be rendered. An XR interface may return false if the user has taken off their headset and we can pause rendering.","returnType":"bool"},{"name":"_pre_render","signature":"_pre_render() -> void","description":"Called if this  is active before rendering starts. Most XR interfaces will sync tracking at this point in time.","returnType":"void"},{"name":"_process","signature":"_process() -> void","description":"Called if this  is active before our physics and game process is called. Most XR interfaces will update its s at this point in time.","returnType":"void"},{"name":"_set_anchor_detection_is_enabled","signature":"_set_anchor_detection_is_enabled(enabled: bool) -> void","description":"Enables anchor detection on this interface if supported.","returnType":"void"},{"name":"_set_play_area_mode","signature":"_set_play_area_mode(mode: int) -> bool","description":"Set the play area mode for this interface.","returnType":"bool"},{"name":"_supports_play_area_mode","signature":"_supports_play_area_mode(mode: int) -> bool","description":"Returns true if this interface supports this play area mode.","returnType":"bool"},{"name":"_trigger_haptic_pulse","signature":"_trigger_haptic_pulse(action_name: String, tracker_name: StringName, frequency: float, amplitude: float, duration_sec: float, delay_sec: float) -> void","description":"Triggers a haptic pulse to be emitted on the specified tracker.","returnType":"void"},{"name":"_uninitialize","signature":"_uninitialize() -> void","description":"Uninitialize the interface.","returnType":"void"},{"name":"add_blit","signature":"add_blit(render_target: RID, src_rect: Rect2, dst_rect: Rect2i, use_layer: bool, layer: int, apply_lens_distortion: bool, eye_center: Vector2, k1: float, k2: float, upscale: float, aspect_ratio: float) -> void","description":"Blits our render results to screen optionally applying lens distortion. This can only be called while processing _commit_views.","returnType":"void"},{"name":"get_color_texture","signature":"get_color_texture() -> RID","description":"","returnType":"RID"},{"name":"get_depth_texture","signature":"get_depth_texture() -> RID","description":"","returnType":"RID"},{"name":"get_render_target_texture","signature":"get_render_target_texture(render_target: RID) -> RID","description":"Returns a valid  for a texture to which we should render the current frame if supported by the interface.","returnType":"RID"},{"name":"get_velocity_texture","signature":"get_velocity_texture() -> RID","description":"","returnType":"RID"}],"signals":[]},"XRNode3D":{"name":"XRNode3D","description":"A 3D node that has its position automatically updated by the .","inherits":"Node3D","properties":[{"name":"pose","type":"StringName","description":"The name of the pose we're bound to. Which poses a tracker supports is not known during design time.\n\t\t\tGodot defines number of standard pose names such as [code]aim[/code] and [code]grip[/code] but other may be configured within a given [XRInterface]."},{"name":"show_when_tracked","type":"bool","description":"Enables showing the node when tracking starts, and hiding the node when tracking is lost."},{"name":"tracker","type":"StringName","description":"The name of the tracker we're bound to. Which trackers are available is not known during design time.\n\t\t\tGodot defines a number of standard trackers such as [code]left_hand[/code] and [code]right_hand[/code] but others may be configured within a given [XRInterface]."}],"methods":[{"name":"get_has_tracking_data","signature":"get_has_tracking_data() -> bool","description":"Returns true if the [member tracker] has current tracking data for the [member pose] being tracked.","returnType":"bool"},{"name":"get_is_active","signature":"get_is_active() -> bool","description":"Returns true if the [member tracker] has been registered and the [member pose] is being tracked.","returnType":"bool"},{"name":"get_pose","signature":"get_pose() -> XRPose","description":"Returns the  containing the current state of the pose being tracked. This gives access to additional properties of this pose.","returnType":"XRPose"},{"name":"trigger_haptic_pulse","signature":"trigger_haptic_pulse(action_name: String, frequency: float, amplitude: float, duration_sec: float, delay_sec: float) -> void","description":"Triggers a haptic pulse on a device associated with this interface.\n\t\t\t\t[param action_name] is the name of the action for this pulse.\n\t\t\t\t[param frequency] is the frequency of the pulse, set to 0.0 to have the system use a default frequency.\n\t\t\t\t[param amplitude] is the amplitude of the pulse between 0.0 and 1.0.\n\t\t\t\t[param duration_sec] is the duration of the pulse in seconds.\n\t\t\t\t[param delay_sec] is a delay in seconds before the pulse is given.","returnType":"void"}],"signals":[{"name":"tracking_changed","description":"Emitted when the [member tracker] starts or stops receiving updated tracking data for the [member pose] being tracked. The [param tracking] argument indicates whether the tracker is getting updated tracking data."}]},"XROrigin3D":{"name":"XROrigin3D","description":"The origin point in AR/VR.","inherits":"Node3D","properties":[{"name":"current","type":"bool","description":"If [code]true[/code], this origin node is currently being used by the [XRServer]. Only one origin point can be used at a time."},{"name":"world_scale","type":"float","description":"The scale of the game world compared to the real world. This is the same as [member XRServer.world_scale]. By default, most AR/VR platforms assume that 1 game unit corresponds to 1 real world meter."}],"methods":[],"signals":[]},"XRPose":{"name":"XRPose","description":"This object contains all data related to a pose on a tracked object.","inherits":"RefCounted","properties":[{"name":"angular_velocity","type":"Vector3","description":"The angular velocity for this pose."},{"name":"has_tracking_data","type":"bool","description":"If [code]true[/code] our tracking data is up to date. If [code]false[/code] we're no longer receiving new tracking data and our state is whatever that last valid state was."},{"name":"linear_velocity","type":"Vector3","description":"The linear velocity of this pose."},{"name":"name","type":"StringName","description":"The name of this pose. Usually, this name is derived from an action map set up by the user. Godot also suggests some pose names that [XRInterface] objects are expected to implement:\n\t\t\t- [code]root[/code] is the root location, often used for tracked objects that do not have further nodes.\n\t\t\t- [code]aim[/code] is the tip of a controller with its orientation pointing outwards, often used for raycasts.\n\t\t\t- [code]grip[/code] is the location where the user grips the controller.\n\t\t\t- [code]skeleton[/code] is the root location for a hand mesh, when using hand tracking and an animated skeleton is supplied by the XR runtime."},{"name":"tracking_confidence","type":"int","description":"The tracking confidence for this pose, provides insight on how accurate the spatial positioning of this record is."},{"name":"transform","type":"Transform3D","description":"The transform containing the original and transform as reported by the XR runtime."}],"methods":[{"name":"get_adjusted_transform","signature":"get_adjusted_transform() -> Transform3D","description":"Returns the [member transform] with world scale and our reference frame applied. This is the transform used to position  objects.","returnType":"Transform3D"}],"signals":[]},"XRPositionalTracker":{"name":"XRPositionalTracker","description":"A tracked object.","inherits":"XRTracker","properties":[{"name":"hand","type":"int","description":"Defines which hand this tracker relates to."},{"name":"profile","type":"String","description":"The profile associated with this tracker, interface dependent but will indicate the type of controller being tracked."}],"methods":[{"name":"get_input","signature":"get_input(name: StringName) -> Variant","description":"Returns an input for this tracker. It can return a boolean, float or  value depending on whether the input is a button, trigger or thumbstick/thumbpad.","returnType":"Variant"},{"name":"get_pose","signature":"get_pose(name: StringName) -> XRPose","description":"Returns the current  state object for the bound [param name] pose.","returnType":"XRPose"},{"name":"has_pose","signature":"has_pose(name: StringName) -> bool","description":"Returns true if the tracker is available and is currently tracking the bound [param name] pose.","returnType":"bool"},{"name":"invalidate_pose","signature":"invalidate_pose(name: StringName) -> void","description":"Marks this pose as invalid, we don't clear the last reported state but it allows users to decide if trackers need to be hidden if we lose tracking or just remain at their last known position.","returnType":"void"},{"name":"set_input","signature":"set_input(name: StringName, value: Variant) -> void","description":"Changes the value for the given input. This method is called by a  implementation and should not be used directly.","returnType":"void"},{"name":"set_pose","signature":"set_pose(name: StringName, transform: Transform3D, linear_velocity: Vector3, angular_velocity: Vector3, tracking_confidence: int) -> void","description":"Sets the transform, linear velocity, angular velocity and tracking confidence for the given pose. This method is called by a  implementation and should not be used directly.","returnType":"void"}],"signals":[{"name":"button_pressed","description":"Emitted when a button on this tracker is pressed. Note that many XR runtimes allow other inputs to be mapped to buttons."},{"name":"button_released","description":"Emitted when a button on this tracker is released."},{"name":"input_float_changed","description":"Emitted when a trigger or similar input on this tracker changes value."},{"name":"input_vector2_changed","description":"Emitted when a thumbstick or thumbpad on this tracker moves."},{"name":"pose_changed","description":"Emitted when the state of a pose tracked by this tracker changes."},{"name":"pose_lost_tracking","description":"Emitted when a pose tracked by this tracker stops getting updated tracking data."},{"name":"profile_changed","description":"Emitted when the profile of our tracker changes."}]},"XRServer":{"name":"XRServer","description":"Server for AR and VR features.","inherits":"Object","properties":[{"name":"camera_locked_to_origin","type":"bool","description":"If set to [code]true[/code], the scene will be rendered as if the camera is locked to the [XROrigin3D].\n\t\t\t[b]Note:[/b] This doesn't provide a very comfortable experience for users. This setting exists for doing benchmarking or automated testing, where you want to control what is rendered via code."},{"name":"primary_interface","type":"XRInterface","description":"The primary [XRInterface] currently bound to the [XRServer]."},{"name":"world_origin","type":"Transform3D","description":"The current origin of our tracking space in the virtual world. This is used by the renderer to properly position the camera with new tracking data.\n\t\t\t[b]Note:[/b] This property is managed by the current [XROrigin3D] node. It is exposed for access from GDExtensions."},{"name":"world_scale","type":"float","description":"The scale of the game world compared to the real world. By default, most AR/VR platforms assume that 1 game unit corresponds to 1 real world meter."}],"methods":[{"name":"add_interface","signature":"add_interface(interface: XRInterface) -> void","description":"Registers an  object.","returnType":"void"},{"name":"add_tracker","signature":"add_tracker(tracker: XRTracker) -> void","description":"Registers a new  that tracks a physical object.","returnType":"void"},{"name":"center_on_hmd","signature":"center_on_hmd(rotation_mode: int, keep_height: bool) -> void","description":"This is an important function to understand correctly. AR and VR platforms all handle positioning slightly differently.\n\t\t\t\tFor platforms that do not offer spatial tracking, our origin point (0, 0, 0) is the location of our HMD, but you have little control over the direction the player is facing in the real world.\n\t\t\t\tFor platforms that do offer spatial tracking, our origin point depends very much on the system. For OpenVR, our origin point is usually the center of the tracking space, on the ground. For other platforms, it's often the location of the tracking camera.\n\t\t\t\tThis method allows you to center your tracker on the location of the HMD. It will take the current location of the HMD and use that to adjust all your tracking data; in essence, realigning the real world to your player's current position in the game world.\n\t\t\t\tFor this method to produce usable results, tracking information must be available. This often takes a few frames after starting your game.\n\t\t\t\tYou should call this method after a few seconds have passed. For example, when the user requests a realignment of the display holding a designated button on a controller for a short period of time, or when implementing a teleport mechanism.","returnType":"void"},{"name":"clear_reference_frame","signature":"clear_reference_frame() -> void","description":"Clears the reference frame that was set by previous calls to [method center_on_hmd].","returnType":"void"},{"name":"find_interface","signature":"find_interface(name: String) -> XRInterface","description":"Finds an interface by its [param name]. For example, if your project uses capabilities of an AR/VR platform, you can find the interface for that platform by name and initialize it.","returnType":"XRInterface"},{"name":"get_hmd_transform","signature":"get_hmd_transform() -> Transform3D","description":"Returns the primary interface's transformation.","returnType":"Transform3D"},{"name":"get_interface","signature":"get_interface(idx: int) -> XRInterface","description":"Returns the interface registered at the given [param idx] index in the list of interfaces.","returnType":"XRInterface"},{"name":"get_interface_count","signature":"get_interface_count() -> int","description":"Returns the number of interfaces currently registered with the AR/VR server. If your project supports multiple AR/VR platforms, you can look through the available interface, and either present the user with a selection or simply try to initialize each interface and use the first one that returns true.","returnType":"int"},{"name":"get_interfaces","signature":"get_interfaces() -> Dictionary[]","description":"Returns a list of available interfaces the ID and name of each interface.","returnType":"Dictionary[]"},{"name":"get_reference_frame","signature":"get_reference_frame() -> Transform3D","description":"Returns the reference frame transform. Mostly used internally and exposed for GDExtension build interfaces.","returnType":"Transform3D"},{"name":"get_tracker","signature":"get_tracker(tracker_name: StringName) -> XRTracker","description":"Returns the positional tracker with the given [param tracker_name].","returnType":"XRTracker"},{"name":"get_trackers","signature":"get_trackers(tracker_types: int) -> Dictionary","description":"Returns a dictionary of trackers for [param tracker_types].","returnType":"Dictionary"},{"name":"remove_interface","signature":"remove_interface(interface: XRInterface) -> void","description":"Removes this [param interface].","returnType":"void"},{"name":"remove_tracker","signature":"remove_tracker(tracker: XRTracker) -> void","description":"Removes this [param tracker].","returnType":"void"}],"signals":[{"name":"interface_added","description":"Emitted when a new interface has been added."},{"name":"interface_removed","description":"Emitted when an interface is removed."},{"name":"reference_frame_changed","description":"Emitted when the reference frame transform changes."},{"name":"tracker_added","description":"Emitted when a new tracker has been added. If you don't use a fixed number of controllers or if you're using [XRAnchor3D]s for an AR solution, it is important to react to this signal to add the appropriate [XRController3D] or [XRAnchor3D] nodes related to this new tracker."},{"name":"tracker_removed","description":"Emitted when a tracker is removed. You should remove any [XRController3D] or [XRAnchor3D] points if applicable. This is not mandatory, the nodes simply become inactive and will be made active again when a new tracker becomes available (i.e. a new controller is switched on that takes the place of the previous one)."},{"name":"tracker_updated","description":"Emitted when an existing tracker has been updated. This can happen if the user switches controllers."}]},"XRTracker":{"name":"XRTracker","description":"A tracked object.","inherits":"RefCounted","properties":[{"name":"description","type":"String","description":"The description of this tracker."},{"name":"name","type":"StringName","description":"The unique name of this tracker. The trackers that are available differ between various XR runtimes and can often be configured by the user. Godot maintains a number of reserved names that it expects the [XRInterface] to implement if applicable:\n\t\t\t- [code]head[/code] identifies the [XRPositionalTracker] of the players head\n\t\t\t- [code]left_hand[/code] identifies the [XRControllerTracker] in the players left hand\n\t\t\t- [code]right_hand[/code] identifies the [XRControllerTracker] in the players right hand\n\t\t\t- [code]/user/hand_tracker/left[/code] identifies the [XRHandTracker] for the players left hand\n\t\t\t- [code]/user/hand_tracker/right[/code] identifies the [XRHandTracker] for the players right hand\n\t\t\t- [code]/user/body_tracker[/code] identifies the [XRBodyTracker] for the players body\n\t\t\t- [code]/user/face_tracker[/code] identifies the [XRFaceTracker] for the players face"},{"name":"type","type":"int","description":"The type of tracker."}],"methods":[],"signals":[]},"XRVRS":{"name":"XRVRS","description":"Helper class for XR interfaces that generates VRS images.","inherits":"Object","properties":[{"name":"vrs_min_radius","type":"float","description":"The minimum radius around the focal point where full quality is guaranteed if VRS is used as a percentage of screen size."},{"name":"vrs_render_region","type":"Rect2i","description":"The render region that the VRS texture will be scaled to when generated."},{"name":"vrs_strength","type":"float","description":"The strength used to calculate the VRS density map. The greater this value, the more noticeable VRS is."}],"methods":[{"name":"make_vrs_texture","signature":"make_vrs_texture(target_size: Vector2, eye_foci: PackedVector2Array) -> RID","description":"Generates the VRS texture based on a render [param target_size] adjusted by our VRS tile size. For each eyes focal point passed in [param eye_foci] a layer is created. Focal point should be in NDC.\n\t\t\t\tThe result will be cached, requesting a VRS texture with unchanged parameters and settings will return the cached RID.","returnType":"RID"}],"signals":[]},"bool":{"name":"bool","description":"A built-in boolean type.","inherits":"","properties":[],"methods":[],"signals":[]},"float":{"name":"float","description":"A built-in type for floating-point numbers.","inherits":"","properties":[],"methods":[],"signals":[]},"int":{"name":"int","description":"A built-in type for integers.","inherits":"","properties":[],"methods":[],"signals":[]}}