mirror of
https://github.com/godotengine/godot.git
synced 2024-11-21 11:32:13 +00:00
Add further details on properties returning Packed*Array
This commit is contained in:
parent
980e4d7955
commit
23782b898b
@ -26,7 +26,6 @@
|
||||
<member name="polygon" type="PackedVector2Array" setter="set_polygon" getter="get_polygon" default="PackedVector2Array()">
|
||||
The polygon's list of vertices. Each point will be connected to the next, and the final point will be connected to the first.
|
||||
[b]Note:[/b] The returned vertices are in the local coordinate space of the given [CollisionPolygon2D].
|
||||
[b]Warning:[/b] The returned value is a clone of the [PackedVector2Array], not a reference.
|
||||
</member>
|
||||
</members>
|
||||
<constants>
|
||||
|
@ -21,7 +21,6 @@
|
||||
</member>
|
||||
<member name="polygon" type="PackedVector2Array" setter="set_polygon" getter="get_polygon" default="PackedVector2Array()">
|
||||
Array of vertices which define the 2D polygon in the local XY plane.
|
||||
[b]Note:[/b] The returned value is a copy of the original. Methods which mutate the size or properties of the return value will not impact the original polygon. To change properties of the polygon, assign it to a temporary variable and make changes before reassigning the class property.
|
||||
</member>
|
||||
</members>
|
||||
</class>
|
||||
|
@ -78,8 +78,8 @@
|
||||
</methods>
|
||||
<members>
|
||||
<member name="colors" type="PackedColorArray" setter="set_colors" getter="get_colors" default="PackedColorArray(0, 0, 0, 1, 1, 1, 1, 1)">
|
||||
Gradient's colors returned as a [PackedColorArray].
|
||||
[b]Note:[/b] This property returns a copy, modifying the return value does not update the gradient. To update the gradient use [method set_color] method (for updating colors individually) or assign to this property directly (for bulk-updating all colors at once).
|
||||
Gradient's colors as a [PackedColorArray].
|
||||
[b]Note:[/b] Setting this property updates all colors at once. To update any color individually use [method set_color].
|
||||
</member>
|
||||
<member name="interpolation_color_space" type="int" setter="set_interpolation_color_space" getter="get_interpolation_color_space" enum="Gradient.ColorSpace" default="0">
|
||||
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.
|
||||
@ -89,8 +89,8 @@
|
||||
The algorithm used to interpolate between points of the gradient. See [enum InterpolationMode] for available modes.
|
||||
</member>
|
||||
<member name="offsets" type="PackedFloat32Array" setter="set_offsets" getter="get_offsets" default="PackedFloat32Array(0, 1)">
|
||||
Gradient's offsets returned as a [PackedFloat32Array].
|
||||
[b]Note:[/b] This property returns a copy, modifying the return value does not update the gradient. To update the gradient use [method set_offset] method (for updating offsets individually) or assign to this property directly (for bulk-updating all offsets at once).
|
||||
Gradient's offsets as a [PackedFloat32Array].
|
||||
[b]Note:[/b] Setting this property updates all offsets at once. To update any offset individually use [method set_offset].
|
||||
</member>
|
||||
</members>
|
||||
<constants>
|
||||
|
@ -17,7 +17,6 @@
|
||||
</member>
|
||||
<member name="polygon" type="PackedVector2Array" setter="set_polygon" getter="get_polygon" default="PackedVector2Array()">
|
||||
A [Vector2] array with the index for polygon's vertices positions.
|
||||
[b]Note:[/b] The returned value is a copy of the underlying array, rather than a reference.
|
||||
</member>
|
||||
</members>
|
||||
<constants>
|
||||
|
@ -6,6 +6,7 @@
|
||||
<description>
|
||||
An array specifically designed to hold bytes. Packs data tightly, so it saves memory for large array sizes.
|
||||
[PackedByteArray] also provides methods to encode/decode various types to/from bytes. The way values are encoded is an implementation detail and shouldn't be relied upon when interacting with external apps.
|
||||
[b]Note:[/b] Packed arrays are always passed by reference. To get a copy of an array that can be modified independently of the original array, use [method duplicate]. This is [i]not[/i] the case for built-in properties and methods. The returned packed array of these are a copies, and changing it will [i]not[/i] affect the original value. To update a built-in property you need to modify the returned array, and then assign it to the property again.
|
||||
</description>
|
||||
<tutorials>
|
||||
</tutorials>
|
||||
|
@ -6,6 +6,7 @@
|
||||
<description>
|
||||
An array specifically designed to hold [Color]. Packs data tightly, so it saves memory for large array sizes.
|
||||
[b]Differences between packed arrays, typed arrays, and untyped arrays:[/b] Packed arrays are generally faster to iterate on and modify compared to a typed array of the same type (e.g. [PackedColorArray] versus [code]Array[Color][/code]). Also, packed arrays consume less memory. As a downside, packed arrays are less flexible as they don't offer as many convenience methods such as [method Array.map]. Typed arrays are in turn faster to iterate on and modify than untyped arrays.
|
||||
[b]Note:[/b] Packed arrays are always passed by reference. To get a copy of an array that can be modified independently of the original array, use [method duplicate]. This is [i]not[/i] the case for built-in properties and methods. The returned packed array of these are a copies, and changing it will [i]not[/i] affect the original value. To update a built-in property you need to modify the returned array, and then assign it to the property again.
|
||||
</description>
|
||||
<tutorials>
|
||||
</tutorials>
|
||||
|
@ -6,6 +6,7 @@
|
||||
<description>
|
||||
An array specifically designed to hold 32-bit floating-point values (float). Packs data tightly, so it saves memory for large array sizes.
|
||||
If you need to pack 64-bit floats tightly, see [PackedFloat64Array].
|
||||
[b]Note:[/b] Packed arrays are always passed by reference. To get a copy of an array that can be modified independently of the original array, use [method duplicate]. This is [i]not[/i] the case for built-in properties and methods. The returned packed array of these are a copies, and changing it will [i]not[/i] affect the original value. To update a built-in property you need to modify the returned array, and then assign it to the property again.
|
||||
</description>
|
||||
<tutorials>
|
||||
</tutorials>
|
||||
|
@ -7,6 +7,7 @@
|
||||
An array specifically designed to hold 64-bit floating-point values (double). Packs data tightly, so it saves memory for large array sizes.
|
||||
If you only need to pack 32-bit floats tightly, see [PackedFloat32Array] for a more memory-friendly alternative.
|
||||
[b]Differences between packed arrays, typed arrays, and untyped arrays:[/b] Packed arrays are generally faster to iterate on and modify compared to a typed array of the same type (e.g. [PackedFloat64Array] versus [code]Array[float][/code]). Also, packed arrays consume less memory. As a downside, packed arrays are less flexible as they don't offer as many convenience methods such as [method Array.map]. Typed arrays are in turn faster to iterate on and modify than untyped arrays.
|
||||
[b]Note:[/b] Packed arrays are always passed by reference. To get a copy of an array that can be modified independently of the original array, use [method duplicate]. This is [i]not[/i] the case for built-in properties and methods. The returned packed array of these are a copies, and changing it will [i]not[/i] affect the original value. To update a built-in property you need to modify the returned array, and then assign it to the property again.
|
||||
</description>
|
||||
<tutorials>
|
||||
</tutorials>
|
||||
|
@ -6,6 +6,7 @@
|
||||
<description>
|
||||
An array specifically designed to hold 32-bit integer values. Packs data tightly, so it saves memory for large array sizes.
|
||||
[b]Note:[/b] This type stores signed 32-bit integers, which means it can take values in the interval [code][-2^31, 2^31 - 1][/code], i.e. [code][-2147483648, 2147483647][/code]. Exceeding those bounds will wrap around. In comparison, [int] uses signed 64-bit integers which can hold much larger values. If you need to pack 64-bit integers tightly, see [PackedInt64Array].
|
||||
[b]Note:[/b] Packed arrays are always passed by reference. To get a copy of an array that can be modified independently of the original array, use [method duplicate]. This is [i]not[/i] the case for built-in properties and methods. The returned packed array of these are a copies, and changing it will [i]not[/i] affect the original value. To update a built-in property you need to modify the returned array, and then assign it to the property again.
|
||||
</description>
|
||||
<tutorials>
|
||||
</tutorials>
|
||||
|
@ -7,6 +7,7 @@
|
||||
An array specifically designed to hold 64-bit integer values. Packs data tightly, so it saves memory for large array sizes.
|
||||
[b]Note:[/b] This type stores signed 64-bit integers, which means it can take values in the interval [code][-2^63, 2^63 - 1][/code], i.e. [code][-9223372036854775808, 9223372036854775807][/code]. Exceeding those bounds will wrap around. If you only need to pack 32-bit integers tightly, see [PackedInt32Array] for a more memory-friendly alternative.
|
||||
[b]Differences between packed arrays, typed arrays, and untyped arrays:[/b] Packed arrays are generally faster to iterate on and modify compared to a typed array of the same type (e.g. [PackedInt32Array] versus [code]Array[int][/code]). Also, packed arrays consume less memory. As a downside, packed arrays are less flexible as they don't offer as many convenience methods such as [method Array.map]. Typed arrays are in turn faster to iterate on and modify than untyped arrays.
|
||||
[b]Note:[/b] Packed arrays are always passed by reference. To get a copy of an array that can be modified independently of the original array, use [method duplicate]. This is [i]not[/i] the case for built-in properties and methods. The returned packed array of these are a copies, and changing it will [i]not[/i] affect the original value. To update a built-in property you need to modify the returned array, and then assign it to the property again.
|
||||
</description>
|
||||
<tutorials>
|
||||
</tutorials>
|
||||
|
@ -12,6 +12,7 @@
|
||||
print(string) # "hello world"
|
||||
[/codeblock]
|
||||
[b]Differences between packed arrays, typed arrays, and untyped arrays:[/b] Packed arrays are generally faster to iterate on and modify compared to a typed array of the same type (e.g. [PackedStringArray] versus [code]Array[String][/code]). Also, packed arrays consume less memory. As a downside, packed arrays are less flexible as they don't offer as many convenience methods such as [method Array.map]. Typed arrays are in turn faster to iterate on and modify than untyped arrays.
|
||||
[b]Note:[/b] Packed arrays are always passed by reference. To get a copy of an array that can be modified independently of the original array, use [method duplicate]. This is [i]not[/i] the case for built-in properties and methods. The returned packed array of these are a copies, and changing it will [i]not[/i] affect the original value. To update a built-in property you need to modify the returned array, and then assign it to the property again.
|
||||
</description>
|
||||
<tutorials>
|
||||
<link title="Operating System Testing Demo">https://godotengine.org/asset-library/asset/2789</link>
|
||||
|
@ -6,6 +6,7 @@
|
||||
<description>
|
||||
An array specifically designed to hold [Vector2]. Packs data tightly, so it saves memory for large array sizes.
|
||||
[b]Differences between packed arrays, typed arrays, and untyped arrays:[/b] Packed arrays are generally faster to iterate on and modify compared to a typed array of the same type (e.g. [PackedVector3Array] versus [code]Array[Vector2][/code]). Also, packed arrays consume less memory. As a downside, packed arrays are less flexible as they don't offer as many convenience methods such as [method Array.map]. Typed arrays are in turn faster to iterate on and modify than untyped arrays.
|
||||
[b]Note:[/b] Packed arrays are always passed by reference. To get a copy of an array that can be modified independently of the original array, use [method duplicate]. This is [i]not[/i] the case for built-in properties and methods. The returned packed array of these are a copies, and changing it will [i]not[/i] affect the original value. To update a built-in property you need to modify the returned array, and then assign it to the property again.
|
||||
</description>
|
||||
<tutorials>
|
||||
<link title="Grid-based Navigation with AStarGrid2D Demo">https://godotengine.org/asset-library/asset/2723</link>
|
||||
|
@ -6,6 +6,7 @@
|
||||
<description>
|
||||
An array specifically designed to hold [Vector3]. Packs data tightly, so it saves memory for large array sizes.
|
||||
[b]Differences between packed arrays, typed arrays, and untyped arrays:[/b] Packed arrays are generally faster to iterate on and modify compared to a typed array of the same type (e.g. [PackedVector3Array] versus [code]Array[Vector3][/code]). Also, packed arrays consume less memory. As a downside, packed arrays are less flexible as they don't offer as many convenience methods such as [method Array.map]. Typed arrays are in turn faster to iterate on and modify than untyped arrays.
|
||||
[b]Note:[/b] Packed arrays are always passed by reference. To get a copy of an array that can be modified independently of the original array, use [method duplicate]. This is [i]not[/i] the case for built-in properties and methods. The returned packed array of these are a copies, and changing it will [i]not[/i] affect the original value. To update a built-in property you need to modify the returned array, and then assign it to the property again.
|
||||
</description>
|
||||
<tutorials>
|
||||
</tutorials>
|
||||
|
@ -91,7 +91,6 @@
|
||||
</member>
|
||||
<member name="polygon" type="PackedVector2Array" setter="set_polygon" getter="get_polygon" default="PackedVector2Array()">
|
||||
The polygon's list of vertices. The final point will be connected to the first.
|
||||
[b]Note:[/b] This returns a copy of the [PackedVector2Array] rather than a reference.
|
||||
</member>
|
||||
<member name="polygons" type="Array" setter="set_polygons" getter="get_polygons" default="[]">
|
||||
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.
|
||||
|
@ -87,6 +87,7 @@ BASE_STRINGS = [
|
||||
"This method may be changed or removed in future versions.",
|
||||
"This operator may be changed or removed in future versions.",
|
||||
"This theme property may be changed or removed in future versions.",
|
||||
"[b]Note:[/b] The returned array is [i]copied[/i] and any changes to it will not update the original property value. See [%s] for more details.",
|
||||
]
|
||||
strings_l10n: Dict[str, str] = {}
|
||||
|
||||
@ -145,6 +146,18 @@ CLASSES_WITH_CSHARP_DIFFERENCES: List[str] = [
|
||||
"Variant",
|
||||
]
|
||||
|
||||
PACKED_ARRAY_TYPES: List[str] = [
|
||||
"PackedByteArray",
|
||||
"PackedColorArray",
|
||||
"PackedFloat32Array",
|
||||
"Packedfloat64Array",
|
||||
"PackedInt32Array",
|
||||
"PackedInt64Array",
|
||||
"PackedStringArray",
|
||||
"PackedVector2Array",
|
||||
"PackedVector3Array",
|
||||
]
|
||||
|
||||
|
||||
class State:
|
||||
def __init__(self) -> None:
|
||||
@ -1277,6 +1290,9 @@ def make_rst_class(class_def: ClassDef, state: State, dry_run: bool, output_dir:
|
||||
|
||||
if property_def.text is not None and property_def.text.strip() != "":
|
||||
f.write(f"{format_text_block(property_def.text.strip(), property_def, state)}\n\n")
|
||||
if property_def.type_name.type_name in PACKED_ARRAY_TYPES:
|
||||
tmp = f"[b]Note:[/b] The returned array is [i]copied[/i] and any changes to it will not update the original property value. See [{property_def.type_name.type_name}] for more details."
|
||||
f.write(f"{format_text_block(tmp, property_def, state)}\n\n")
|
||||
elif property_def.deprecated is None and property_def.experimental is None:
|
||||
f.write(".. container:: contribute\n\n\t")
|
||||
f.write(
|
||||
|
@ -96,6 +96,18 @@ const Vector<String> classes_with_csharp_differences = {
|
||||
};
|
||||
#endif
|
||||
|
||||
const Vector<String> packed_array_types = {
|
||||
"PackedByteArray",
|
||||
"PackedColorArray",
|
||||
"PackedFloat32Array",
|
||||
"PackedFloat64Array",
|
||||
"PackedInt32Array",
|
||||
"PackedInt64Array",
|
||||
"PackedStringArray",
|
||||
"PackedVector2Array",
|
||||
"PackedVector3Array",
|
||||
};
|
||||
|
||||
// TODO: this is sometimes used directly as doc->something, other times as EditorHelp::get_doc_data(), which is thread-safe.
|
||||
// Might this be a problem?
|
||||
DocTools *EditorHelp::doc = nullptr;
|
||||
@ -2193,6 +2205,12 @@ void EditorHelp::_update_doc() {
|
||||
}
|
||||
has_prev_text = true;
|
||||
_add_text(descr);
|
||||
// Add copy note to built-in properties returning Packed*Array.
|
||||
if (!cd.is_script_doc && packed_array_types.has(prop.type)) {
|
||||
class_desc->add_newline();
|
||||
class_desc->add_newline();
|
||||
_add_text(vformat(TTR("[b]Note:[/b] The returned array is [i]copied[/i] and any changes to it will not update the original property value. See [%s] for more details."), prop.type));
|
||||
}
|
||||
} else if (!has_prev_text) {
|
||||
class_desc->add_image(get_editor_theme_icon(SNAME("Error")));
|
||||
class_desc->add_text(" ");
|
||||
|
Loading…
Reference in New Issue
Block a user