summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDanil Alexeev <danil@alexeev.xyz>2024-02-12 16:55:02 +0300
committerDanil Alexeev <danil@alexeev.xyz>2024-02-15 15:59:50 +0300
commitaf28f87791ac4aed15d8f869876296febf5d5b58 (patch)
treecb0eea123982a45f7f761801f7730a7439f3c926
parent907db8eebcecb97d527edcaff77a1c87a6c068f5 (diff)
downloadredot-engine-af28f87791ac4aed15d8f869876296febf5d5b58.tar.gz
Documentation: Add support for deprecated/experimental messages
-rw-r--r--core/doc_data.h110
-rw-r--r--doc/class.xsd21
-rw-r--r--doc/classes/@GlobalScope.xml15
-rw-r--r--doc/classes/AStarGrid2D.xml3
-rw-r--r--doc/classes/AnimatedTexture.xml3
-rw-r--r--doc/classes/AnimationPlayer.xml33
-rw-r--r--doc/classes/AnimationTree.xml15
-rw-r--r--doc/classes/CollisionShape3D.xml4
-rw-r--r--doc/classes/Control.xml4
-rw-r--r--doc/classes/EditorPlugin.xml6
-rw-r--r--doc/classes/EditorScript.xml3
-rw-r--r--doc/classes/GraphEdit.xml2
-rw-r--r--doc/classes/GraphElement.xml2
-rw-r--r--doc/classes/GraphNode.xml2
-rw-r--r--doc/classes/HTTPClient.xml8
-rw-r--r--doc/classes/InputEventJoypadButton.xml4
-rw-r--r--doc/classes/LightmapGIData.xml3
-rw-r--r--doc/classes/MultiMesh.xml12
-rw-r--r--doc/classes/NavigationAgent2D.xml2
-rw-r--r--doc/classes/NavigationAgent3D.xml2
-rw-r--r--doc/classes/NavigationLink2D.xml2
-rw-r--r--doc/classes/NavigationLink3D.xml2
-rw-r--r--doc/classes/NavigationMesh.xml2
-rw-r--r--doc/classes/NavigationMeshGenerator.xml4
-rw-r--r--doc/classes/NavigationMeshSourceGeometryData2D.xml2
-rw-r--r--doc/classes/NavigationMeshSourceGeometryData3D.xml2
-rw-r--r--doc/classes/NavigationObstacle2D.xml2
-rw-r--r--doc/classes/NavigationObstacle3D.xml2
-rw-r--r--doc/classes/NavigationPathQueryParameters2D.xml2
-rw-r--r--doc/classes/NavigationPathQueryParameters3D.xml2
-rw-r--r--doc/classes/NavigationPathQueryResult2D.xml2
-rw-r--r--doc/classes/NavigationPathQueryResult3D.xml2
-rw-r--r--doc/classes/NavigationPolygon.xml5
-rw-r--r--doc/classes/NavigationRegion2D.xml5
-rw-r--r--doc/classes/NavigationRegion3D.xml5
-rw-r--r--doc/classes/NavigationServer2D.xml2
-rw-r--r--doc/classes/NavigationServer3D.xml6
-rw-r--r--doc/classes/Node.xml4
-rw-r--r--doc/classes/RenderingDevice.xml78
-rw-r--r--doc/classes/RenderingServer.xml22
-rw-r--r--doc/classes/Resource.xml8
-rw-r--r--doc/classes/ScriptLanguageExtension.xml3
-rw-r--r--doc/classes/ShapeCast3D.xml4
-rw-r--r--doc/classes/Skeleton3D.xml3
-rw-r--r--doc/classes/SkeletonIK3D.xml3
-rw-r--r--doc/classes/SkeletonModification2D.xml2
-rw-r--r--doc/classes/SkeletonModification2DCCDIK.xml2
-rw-r--r--doc/classes/SkeletonModification2DFABRIK.xml2
-rw-r--r--doc/classes/SkeletonModification2DJiggle.xml2
-rw-r--r--doc/classes/SkeletonModification2DLookAt.xml2
-rw-r--r--doc/classes/SkeletonModification2DPhysicalBones.xml2
-rw-r--r--doc/classes/SkeletonModification2DStackHolder.xml2
-rw-r--r--doc/classes/SkeletonModification2DTwoBoneIK.xml2
-rw-r--r--doc/classes/SkeletonModificationStack2D.xml2
-rw-r--r--doc/classes/StreamPeerGZIP.xml2
-rw-r--r--doc/classes/SubViewportContainer.xml2
-rw-r--r--doc/classes/SurfaceTool.xml3
-rw-r--r--doc/classes/TextureRect.xml2
-rw-r--r--doc/classes/TileMap.xml7
-rw-r--r--doc/classes/TreeItem.xml3
-rw-r--r--doc/classes/Viewport.xml3
-rw-r--r--doc/classes/Window.xml3
-rw-r--r--doc/classes/XRInterface.xml12
-rwxr-xr-xdoc/tools/make_rst.py76
-rw-r--r--editor/doc_tools.cpp103
-rw-r--r--editor/editor_help.cpp1162
-rw-r--r--editor/editor_help.h8
-rw-r--r--modules/gdscript/doc_classes/@GDScript.xml3
-rw-r--r--modules/gdscript/editor/gdscript_docgen.cpp16
-rw-r--r--modules/gdscript/gdscript_parser.cpp20
-rw-r--r--modules/gdscript/gdscript_parser.h4
-rw-r--r--modules/gltf/doc_classes/GLTFDocument.xml2
-rw-r--r--modules/gltf/doc_classes/GLTFPhysicsBody.xml2
-rw-r--r--modules/gridmap/doc_classes/GridMap.xml4
-rw-r--r--modules/multiplayer/doc_classes/SceneReplicationConfig.xml12
75 files changed, 1161 insertions, 734 deletions
diff --git a/core/doc_data.h b/core/doc_data.h
index 45463f5931..04bd55eaba 100644
--- a/core/doc_data.h
+++ b/core/doc_data.h
@@ -114,7 +114,9 @@ public:
String qualifiers;
String description;
bool is_deprecated = false;
+ String deprecated_message;
bool is_experimental = false;
+ String experimental_message;
Vector<ArgumentDoc> arguments;
Vector<int> errors_returned;
String keywords;
@@ -172,6 +174,7 @@ public:
doc.description = p_dict["description"];
}
+#ifndef DISABLE_DEPRECATED
if (p_dict.has("is_deprecated")) {
doc.is_deprecated = p_dict["is_deprecated"];
}
@@ -179,6 +182,17 @@ public:
if (p_dict.has("is_experimental")) {
doc.is_experimental = p_dict["is_experimental"];
}
+#endif
+
+ if (p_dict.has("deprecated")) {
+ doc.is_deprecated = true;
+ doc.deprecated_message = p_dict["deprecated"];
+ }
+
+ if (p_dict.has("experimental")) {
+ doc.is_experimental = true;
+ doc.experimental_message = p_dict["experimental"];
+ }
Array arguments;
if (p_dict.has("arguments")) {
@@ -226,9 +240,13 @@ public:
dict["description"] = p_doc.description;
}
- dict["is_deprecated"] = p_doc.is_deprecated;
+ if (p_doc.is_deprecated) {
+ dict["deprecated"] = p_doc.deprecated_message;
+ }
- dict["is_experimental"] = p_doc.is_experimental;
+ if (p_doc.is_experimental) {
+ dict["experimental"] = p_doc.experimental_message;
+ }
if (!p_doc.keywords.is_empty()) {
dict["keywords"] = p_doc.keywords;
@@ -262,7 +280,9 @@ public:
bool is_bitfield = false;
String description;
bool is_deprecated = false;
+ String deprecated_message;
bool is_experimental = false;
+ String experimental_message;
String keywords;
bool operator<(const ConstantDoc &p_const) const {
return name < p_const.name;
@@ -293,6 +313,7 @@ public:
doc.description = p_dict["description"];
}
+#ifndef DISABLE_DEPRECATED
if (p_dict.has("is_deprecated")) {
doc.is_deprecated = p_dict["is_deprecated"];
}
@@ -300,6 +321,17 @@ public:
if (p_dict.has("is_experimental")) {
doc.is_experimental = p_dict["is_experimental"];
}
+#endif
+
+ if (p_dict.has("deprecated")) {
+ doc.is_deprecated = true;
+ doc.deprecated_message = p_dict["deprecated"];
+ }
+
+ if (p_dict.has("experimental")) {
+ doc.is_experimental = true;
+ doc.experimental_message = p_dict["experimental"];
+ }
if (p_dict.has("keywords")) {
doc.keywords = p_dict["keywords"];
@@ -329,9 +361,13 @@ public:
dict["description"] = p_doc.description;
}
- dict["is_deprecated"] = p_doc.is_deprecated;
+ if (p_doc.is_deprecated) {
+ dict["deprecated"] = p_doc.deprecated_message;
+ }
- dict["is_experimental"] = p_doc.is_experimental;
+ if (p_doc.is_experimental) {
+ dict["experimental"] = p_doc.experimental_message;
+ }
if (!p_doc.keywords.is_empty()) {
dict["keywords"] = p_doc.keywords;
@@ -352,7 +388,9 @@ public:
bool overridden = false;
String overrides;
bool is_deprecated = false;
+ String deprecated_message;
bool is_experimental = false;
+ String experimental_message;
String keywords;
bool operator<(const PropertyDoc &p_prop) const {
return name.naturalcasecmp_to(p_prop.name) < 0;
@@ -399,6 +437,7 @@ public:
doc.overrides = p_dict["overrides"];
}
+#ifndef DISABLE_DEPRECATED
if (p_dict.has("is_deprecated")) {
doc.is_deprecated = p_dict["is_deprecated"];
}
@@ -406,6 +445,17 @@ public:
if (p_dict.has("is_experimental")) {
doc.is_experimental = p_dict["is_experimental"];
}
+#endif
+
+ if (p_dict.has("deprecated")) {
+ doc.is_deprecated = true;
+ doc.deprecated_message = p_dict["deprecated"];
+ }
+
+ if (p_dict.has("experimental")) {
+ doc.is_experimental = true;
+ doc.experimental_message = p_dict["experimental"];
+ }
if (p_dict.has("keywords")) {
doc.keywords = p_dict["keywords"];
@@ -451,9 +501,13 @@ public:
dict["overrides"] = p_doc.overrides;
}
- dict["is_deprecated"] = p_doc.is_deprecated;
+ if (p_doc.is_deprecated) {
+ dict["deprecated"] = p_doc.deprecated_message;
+ }
- dict["is_experimental"] = p_doc.is_experimental;
+ if (p_doc.is_experimental) {
+ dict["experimental"] = p_doc.experimental_message;
+ }
if (!p_doc.keywords.is_empty()) {
dict["keywords"] = p_doc.keywords;
@@ -571,7 +625,9 @@ public:
struct EnumDoc {
String description;
bool is_deprecated = false;
+ String deprecated_message;
bool is_experimental = false;
+ String experimental_message;
static EnumDoc from_dict(const Dictionary &p_dict) {
EnumDoc doc;
@@ -579,6 +635,7 @@ public:
doc.description = p_dict["description"];
}
+#ifndef DISABLE_DEPRECATED
if (p_dict.has("is_deprecated")) {
doc.is_deprecated = p_dict["is_deprecated"];
}
@@ -586,6 +643,17 @@ public:
if (p_dict.has("is_experimental")) {
doc.is_experimental = p_dict["is_experimental"];
}
+#endif
+
+ if (p_dict.has("deprecated")) {
+ doc.is_deprecated = true;
+ doc.deprecated_message = p_dict["deprecated"];
+ }
+
+ if (p_dict.has("experimental")) {
+ doc.is_experimental = true;
+ doc.experimental_message = p_dict["experimental"];
+ }
return doc;
}
@@ -596,9 +664,13 @@ public:
dict["description"] = p_doc.description;
}
- dict["is_deprecated"] = p_doc.is_deprecated;
+ if (p_doc.is_deprecated) {
+ dict["deprecated"] = p_doc.deprecated_message;
+ }
- dict["is_experimental"] = p_doc.is_experimental;
+ if (p_doc.is_experimental) {
+ dict["experimental"] = p_doc.experimental_message;
+ }
return dict;
}
@@ -621,7 +693,9 @@ public:
Vector<MethodDoc> annotations;
Vector<ThemeItemDoc> theme_properties;
bool is_deprecated = false;
+ String deprecated_message;
bool is_experimental = false;
+ String experimental_message;
bool is_script_doc = false;
String script_path;
bool operator<(const ClassDoc &p_class) const {
@@ -730,6 +804,7 @@ public:
doc.theme_properties.push_back(ThemeItemDoc::from_dict(theme_properties[i]));
}
+#ifndef DISABLE_DEPRECATED
if (p_dict.has("is_deprecated")) {
doc.is_deprecated = p_dict["is_deprecated"];
}
@@ -737,6 +812,17 @@ public:
if (p_dict.has("is_experimental")) {
doc.is_experimental = p_dict["is_experimental"];
}
+#endif
+
+ if (p_dict.has("deprecated")) {
+ doc.is_deprecated = true;
+ doc.deprecated_message = p_dict["deprecated"];
+ }
+
+ if (p_dict.has("experimental")) {
+ doc.is_experimental = true;
+ doc.experimental_message = p_dict["experimental"];
+ }
if (p_dict.has("is_script_doc")) {
doc.is_script_doc = p_dict["is_script_doc"];
@@ -847,9 +933,13 @@ public:
dict["theme_properties"] = theme_properties;
}
- dict["is_deprecated"] = p_doc.is_deprecated;
+ if (p_doc.is_deprecated) {
+ dict["deprecated"] = p_doc.deprecated_message;
+ }
- dict["is_experimental"] = p_doc.is_experimental;
+ if (p_doc.is_experimental) {
+ dict["experimental"] = p_doc.experimental_message;
+ }
dict["is_script_doc"] = p_doc.is_script_doc;
diff --git a/doc/class.xsd b/doc/class.xsd
index 330fd214c0..f0e1241053 100644
--- a/doc/class.xsd
+++ b/doc/class.xsd
@@ -99,8 +99,12 @@
</xs:sequence>
<xs:attribute type="xs:string" name="name" use="optional" />
<xs:attribute type="xs:string" name="qualifiers" use="optional" />
+ <!-- deprecated -->
<xs:attribute type="xs:boolean" name="is_deprecated" use="optional" />
<xs:attribute type="xs:boolean" name="is_experimental" use="optional" />
+ <!-- /deprecated -->
+ <xs:attribute type="xs:string" name="deprecated" use="optional" />
+ <xs:attribute type="xs:string" name="experimental" use="optional" />
<xs:attribute type="xs:string" name="keywords" use="optional" />
</xs:complexType>
</xs:element>
@@ -122,8 +126,12 @@
<xs:attribute type="xs:string" name="enum" use="optional" />
<xs:attribute type="xs:boolean" name="is_bitfield" use="optional" />
<xs:attribute type="xs:string" name="default" use="optional" />
+ <!-- deprecated -->
<xs:attribute type="xs:boolean" name="is_deprecated" use="optional" />
<xs:attribute type="xs:boolean" name="is_experimental" use="optional" />
+ <!-- /deprecated -->
+ <xs:attribute type="xs:string" name="deprecated" use="optional" />
+ <xs:attribute type="xs:string" name="experimental" use="optional" />
<xs:attribute type="xs:string" name="keywords" use="optional" />
</xs:extension>
</xs:simpleContent>
@@ -152,8 +160,12 @@
<xs:element type="xs:string" name="description" />
</xs:sequence>
<xs:attribute type="xs:string" name="name" use="optional" />
+ <!-- deprecated -->
<xs:attribute type="xs:boolean" name="is_deprecated" use="optional" />
<xs:attribute type="xs:boolean" name="is_experimental" use="optional" />
+ <!-- /deprecated -->
+ <xs:attribute type="xs:string" name="deprecated" use="optional" />
+ <xs:attribute type="xs:string" name="experimental" use="optional" />
</xs:complexType>
</xs:element>
</xs:sequence>
@@ -170,8 +182,12 @@
<xs:attribute type="xs:string" name="value" />
<xs:attribute type="xs:string" name="enum" use="optional" />
<xs:attribute type="xs:boolean" name="is_bitfield" use="optional" />
+ <!-- deprecated -->
<xs:attribute type="xs:boolean" name="is_deprecated" use="optional" />
<xs:attribute type="xs:boolean" name="is_experimental" use="optional" />
+ <!-- /deprecated -->
+ <xs:attribute type="xs:string" name="deprecated" use="optional" />
+ <xs:attribute type="xs:string" name="experimental" use="optional" />
<xs:attribute type="xs:string" name="keywords" use="optional" />
</xs:extension>
</xs:simpleContent>
@@ -279,8 +295,13 @@
</xs:sequence>
<xs:attribute type="xs:string" name="name" />
<xs:attribute type="xs:string" name="inherits" />
+ <!-- deprecated -->
+ <xs:attribute type="xs:float" name="version" use="optional" />
<xs:attribute type="xs:boolean" name="is_deprecated" use="optional" />
<xs:attribute type="xs:boolean" name="is_experimental" use="optional" />
+ <!-- /deprecated -->
+ <xs:attribute type="xs:string" name="deprecated" use="optional" />
+ <xs:attribute type="xs:string" name="experimental" use="optional" />
<xs:attribute type="xs:string" name="keywords" use="optional" />
</xs:complexType>
</xs:element>
diff --git a/doc/classes/@GlobalScope.xml b/doc/classes/@GlobalScope.xml
index 5736a97a73..4cf5a88dd7 100644
--- a/doc/classes/@GlobalScope.xml
+++ b/doc/classes/@GlobalScope.xml
@@ -2889,8 +2889,7 @@
[/codeblocks]
[b]Note:[/b] The trailing colon is required for properly detecting built-in types.
</constant>
- <constant name="PROPERTY_HINT_NODE_PATH_TO_EDITED_NODE" value="24" enum="PropertyHint" is_deprecated="true">
- [i]Deprecated.[/i] This hint is not used anywhere and will be removed in the future.
+ <constant name="PROPERTY_HINT_NODE_PATH_TO_EDITED_NODE" value="24" enum="PropertyHint" deprecated="This hint is not used anywhere and will be removed in the future.">
</constant>
<constant name="PROPERTY_HINT_OBJECT_TOO_BIG" value="25" enum="PropertyHint">
Hints that an object is too big to be sent via the debugger.
@@ -2904,9 +2903,7 @@
<constant name="PROPERTY_HINT_GLOBAL_SAVE_FILE" value="28" enum="PropertyHint">
Hints that a [String] property is a path to a file. Editing it will show a file dialog for picking the path for the file to be saved at. The dialog has access to the entire filesystem. The hint string can be a set of filters with wildcards like [code]"*.png,*.jpg"[/code]. See also [member FileDialog.filters].
</constant>
- <constant name="PROPERTY_HINT_INT_IS_OBJECTID" value="29" enum="PropertyHint" is_deprecated="true">
- Hints that an [int] property is an object ID.
- [i]Deprecated.[/i] This hint is not used anywhere and will be removed in the future.
+ <constant name="PROPERTY_HINT_INT_IS_OBJECTID" value="29" enum="PropertyHint" deprecated="This hint is not used anywhere and will be removed in the future.">
</constant>
<constant name="PROPERTY_HINT_INT_IS_POINTER" value="30" enum="PropertyHint">
Hints that an [int] property is a pointer. Used by GDExtension.
@@ -2977,9 +2974,7 @@
<constant name="PROPERTY_USAGE_UPDATE_ALL_IF_MODIFIED" value="16384" enum="PropertyUsageFlags" is_bitfield="true">
If this property is modified, all inspector fields will be refreshed.
</constant>
- <constant name="PROPERTY_USAGE_SCRIPT_DEFAULT_VALUE" value="32768" enum="PropertyUsageFlags" is_bitfield="true" is_deprecated="true">
- Signifies a default value from a placeholder script instance.
- [i]Deprecated.[/i] This hint is not used anywhere and will be removed in the future.
+ <constant name="PROPERTY_USAGE_SCRIPT_DEFAULT_VALUE" value="32768" enum="PropertyUsageFlags" is_bitfield="true" deprecated="This hint is not used anywhere and will be removed in the future.">
</constant>
<constant name="PROPERTY_USAGE_CLASS_IS_ENUM" value="65536" enum="PropertyUsageFlags" is_bitfield="true">
The property is an enum, i.e. it only takes named integer constants from its associated enumeration.
@@ -3008,9 +3003,7 @@
<constant name="PROPERTY_USAGE_KEYING_INCREMENTS" value="16777216" enum="PropertyUsageFlags" is_bitfield="true">
Inserting an animation key frame of this property will automatically increment the value, allowing to easily keyframe multiple values in a row.
</constant>
- <constant name="PROPERTY_USAGE_DEFERRED_SET_RESOURCE" value="33554432" enum="PropertyUsageFlags" is_bitfield="true" is_deprecated="true">
- When loading, the resource for this property can be set at the end of loading.
- [i]Deprecated.[/i] This hint is not used anywhere and will be removed in the future.
+ <constant name="PROPERTY_USAGE_DEFERRED_SET_RESOURCE" value="33554432" enum="PropertyUsageFlags" is_bitfield="true" deprecated="This hint is not used anywhere and will be removed in the future.">
</constant>
<constant name="PROPERTY_USAGE_EDITOR_INSTANTIATE_OBJECT" value="67108864" enum="PropertyUsageFlags" is_bitfield="true">
When this property is a [Resource] and base object is a [Node], a resource instance will be automatically created whenever the node is created in the editor.
diff --git a/doc/classes/AStarGrid2D.xml b/doc/classes/AStarGrid2D.xml
index 7764233116..4501bec314 100644
--- a/doc/classes/AStarGrid2D.xml
+++ b/doc/classes/AStarGrid2D.xml
@@ -182,9 +182,8 @@
<member name="region" type="Rect2i" setter="set_region" getter="get_region" default="Rect2i(0, 0, 0, 0)">
The region of grid cells available for pathfinding. If changed, [method update] needs to be called before finding the next path.
</member>
- <member name="size" type="Vector2i" setter="set_size" getter="get_size" default="Vector2i(0, 0)" is_deprecated="true">
+ <member name="size" type="Vector2i" setter="set_size" getter="get_size" default="Vector2i(0, 0)" deprecated="Use [member region] instead.">
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.
- [i]Deprecated.[/i] Use [member region] instead.
</member>
</members>
<constants>
diff --git a/doc/classes/AnimatedTexture.xml b/doc/classes/AnimatedTexture.xml
index a5cacff987..aad16f6f3a 100644
--- a/doc/classes/AnimatedTexture.xml
+++ b/doc/classes/AnimatedTexture.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="AnimatedTexture" inherits="Texture2D" is_deprecated="true" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd">
+<class name="AnimatedTexture" inherits="Texture2D" deprecated="" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd">
<brief_description>
Proxy texture for simple frame-based animations.
</brief_description>
@@ -9,7 +9,6 @@
[AnimatedTexture] currently requires all frame textures to have the same size, otherwise the bigger ones will be cropped to match the smallest one.
[b]Note:[/b] AnimatedTexture doesn't support using [AtlasTexture]s. Each frame needs to be a separate [Texture2D].
[b]Warning:[/b] The current implementation is not efficient for the modern renderers.
- [i]Deprecated.[/i] This class is deprecated, and might be removed in a future release.
</description>
<tutorials>
</tutorials>
diff --git a/doc/classes/AnimationPlayer.xml b/doc/classes/AnimationPlayer.xml
index 233d31a101..6236f96e63 100644
--- a/doc/classes/AnimationPlayer.xml
+++ b/doc/classes/AnimationPlayer.xml
@@ -44,10 +44,9 @@
Returns the blend time (in seconds) between two animations, referenced by their keys.
</description>
</method>
- <method name="get_method_call_mode" qualifiers="const" is_deprecated="true">
+ <method name="get_method_call_mode" qualifiers="const" deprecated="Use [member AnimationMixer.callback_mode_method] instead.">
<return type="int" enum="AnimationPlayer.AnimationMethodCallMode" />
<description>
- For backward compatibility. See [enum AnimationMixer.AnimationCallbackModeMethod].
</description>
</method>
<method name="get_playing_speed" qualifiers="const">
@@ -57,10 +56,9 @@
Returns a negative value if the current animation is playing backwards.
</description>
</method>
- <method name="get_process_callback" qualifiers="const" is_deprecated="true">
+ <method name="get_process_callback" qualifiers="const" deprecated="Use [member AnimationMixer.callback_mode_process] instead.">
<return type="int" enum="AnimationPlayer.AnimationProcessCallback" />
<description>
- For backward compatibility. See [enum AnimationMixer.AnimationCallbackModeProcess].
</description>
</method>
<method name="get_queue">
@@ -69,10 +67,9 @@
Returns a list of the animation keys that are currently queued to play.
</description>
</method>
- <method name="get_root" qualifiers="const" is_deprecated="true">
+ <method name="get_root" qualifiers="const" deprecated="Use [member AnimationMixer.root_node] instead.">
<return type="NodePath" />
<description>
- For backward compatibility. See [member AnimationMixer.root_node].
</description>
</method>
<method name="is_playing" qualifiers="const">
@@ -158,25 +155,22 @@
Specifies a blend time (in seconds) between two animations, referenced by their keys.
</description>
</method>
- <method name="set_method_call_mode" is_deprecated="true">
+ <method name="set_method_call_mode" deprecated="Use [member AnimationMixer.callback_mode_method] instead.">
<return type="void" />
<param index="0" name="mode" type="int" enum="AnimationPlayer.AnimationMethodCallMode" />
<description>
- For backward compatibility. See [enum AnimationMixer.AnimationCallbackModeMethod].
</description>
</method>
- <method name="set_process_callback" is_deprecated="true">
+ <method name="set_process_callback" deprecated="Use [member AnimationMixer.callback_mode_process] instead.">
<return type="void" />
<param index="0" name="mode" type="int" enum="AnimationPlayer.AnimationProcessCallback" />
<description>
- For backward compatibility. See [enum AnimationMixer.AnimationCallbackModeProcess].
</description>
</method>
- <method name="set_root" is_deprecated="true">
+ <method name="set_root" deprecated="Use [member AnimationMixer.root_node] instead.">
<return type="void" />
<param index="0" name="path" type="NodePath" />
<description>
- For backward compatibility. See [member AnimationMixer.root_node].
</description>
</method>
<method name="stop">
@@ -235,20 +229,15 @@
</signal>
</signals>
<constants>
- <constant name="ANIMATION_PROCESS_PHYSICS" value="0" enum="AnimationProcessCallback" is_deprecated="true">
- For backward compatibility. See [constant AnimationMixer.ANIMATION_CALLBACK_MODE_PROCESS_PHYSICS].
+ <constant name="ANIMATION_PROCESS_PHYSICS" value="0" enum="AnimationProcessCallback" deprecated="See [constant AnimationMixer.ANIMATION_CALLBACK_MODE_PROCESS_PHYSICS].">
</constant>
- <constant name="ANIMATION_PROCESS_IDLE" value="1" enum="AnimationProcessCallback" is_deprecated="true">
- For backward compatibility. See [constant AnimationMixer.ANIMATION_CALLBACK_MODE_PROCESS_IDLE].
+ <constant name="ANIMATION_PROCESS_IDLE" value="1" enum="AnimationProcessCallback" deprecated="See [constant AnimationMixer.ANIMATION_CALLBACK_MODE_PROCESS_IDLE].">
</constant>
- <constant name="ANIMATION_PROCESS_MANUAL" value="2" enum="AnimationProcessCallback" is_deprecated="true">
- For backward compatibility. See [constant AnimationMixer.ANIMATION_CALLBACK_MODE_PROCESS_MANUAL].
+ <constant name="ANIMATION_PROCESS_MANUAL" value="2" enum="AnimationProcessCallback" deprecated="See [constant AnimationMixer.ANIMATION_CALLBACK_MODE_PROCESS_MANUAL].">
</constant>
- <constant name="ANIMATION_METHOD_CALL_DEFERRED" value="0" enum="AnimationMethodCallMode" is_deprecated="true">
- For backward compatibility. See [constant AnimationMixer.ANIMATION_CALLBACK_MODE_METHOD_DEFERRED].
+ <constant name="ANIMATION_METHOD_CALL_DEFERRED" value="0" enum="AnimationMethodCallMode" deprecated="See [constant AnimationMixer.ANIMATION_CALLBACK_MODE_METHOD_DEFERRED].">
</constant>
- <constant name="ANIMATION_METHOD_CALL_IMMEDIATE" value="1" enum="AnimationMethodCallMode" is_deprecated="true">
- For backward compatibility. See [constant AnimationMixer.ANIMATION_CALLBACK_MODE_METHOD_IMMEDIATE].
+ <constant name="ANIMATION_METHOD_CALL_IMMEDIATE" value="1" enum="AnimationMethodCallMode" deprecated="See [constant AnimationMixer.ANIMATION_CALLBACK_MODE_METHOD_IMMEDIATE].">
</constant>
</constants>
</class>
diff --git a/doc/classes/AnimationTree.xml b/doc/classes/AnimationTree.xml
index 79e84192df..3e0c088b8a 100644
--- a/doc/classes/AnimationTree.xml
+++ b/doc/classes/AnimationTree.xml
@@ -12,17 +12,15 @@
<link title="Third Person Shooter Demo">https://godotengine.org/asset-library/asset/678</link>
</tutorials>
<methods>
- <method name="get_process_callback" qualifiers="const" is_deprecated="true">
+ <method name="get_process_callback" qualifiers="const" deprecated="Use [member AnimationMixer.callback_mode_process] instead.">
<return type="int" enum="AnimationTree.AnimationProcessCallback" />
<description>
- For backward compatibility. See [enum AnimationMixer.AnimationCallbackModeProcess].
</description>
</method>
- <method name="set_process_callback" is_deprecated="true">
+ <method name="set_process_callback" deprecated="Use [member AnimationMixer.callback_mode_process] instead.">
<return type="void" />
<param index="0" name="mode" type="int" enum="AnimationTree.AnimationProcessCallback" />
<description>
- For backward compatibility. See [enum AnimationMixer.AnimationCallbackModeProcess].
</description>
</method>
</methods>
@@ -46,14 +44,11 @@
</signal>
</signals>
<constants>
- <constant name="ANIMATION_PROCESS_PHYSICS" value="0" enum="AnimationProcessCallback" is_deprecated="true">
- For backward compatibility. See [constant AnimationMixer.ANIMATION_CALLBACK_MODE_PROCESS_PHYSICS].
+ <constant name="ANIMATION_PROCESS_PHYSICS" value="0" enum="AnimationProcessCallback" deprecated="See [constant AnimationMixer.ANIMATION_CALLBACK_MODE_PROCESS_PHYSICS].">
</constant>
- <constant name="ANIMATION_PROCESS_IDLE" value="1" enum="AnimationProcessCallback" is_deprecated="true">
- For backward compatibility. See [constant AnimationMixer.ANIMATION_CALLBACK_MODE_PROCESS_IDLE].
+ <constant name="ANIMATION_PROCESS_IDLE" value="1" enum="AnimationProcessCallback" deprecated="See [constant AnimationMixer.ANIMATION_CALLBACK_MODE_PROCESS_IDLE].">
</constant>
- <constant name="ANIMATION_PROCESS_MANUAL" value="2" enum="AnimationProcessCallback" is_deprecated="true">
- For backward compatibility. See [constant AnimationMixer.ANIMATION_CALLBACK_MODE_PROCESS_MANUAL].
+ <constant name="ANIMATION_PROCESS_MANUAL" value="2" enum="AnimationProcessCallback" deprecated="See [constant AnimationMixer.ANIMATION_CALLBACK_MODE_PROCESS_MANUAL].">
</constant>
</constants>
</class>
diff --git a/doc/classes/CollisionShape3D.xml b/doc/classes/CollisionShape3D.xml
index 4e32545f27..0dcfa75e5b 100644
--- a/doc/classes/CollisionShape3D.xml
+++ b/doc/classes/CollisionShape3D.xml
@@ -20,11 +20,11 @@
Sets the collision shape's shape to the addition of all its convexed [MeshInstance3D] siblings geometry.
</description>
</method>
- <method name="resource_changed" is_deprecated="true">
+ <method name="resource_changed" deprecated="Use [signal Resource.changed] instead.">
<return type="void" />
<param index="0" name="resource" type="Resource" />
<description>
- [i]Obsoleted.[/i] Use [signal Resource.changed] instead.
+ This method does nothing.
</description>
</method>
</methods>
diff --git a/doc/classes/Control.xml b/doc/classes/Control.xml
index a498bbeed3..c3ec2b9e3c 100644
--- a/doc/classes/Control.xml
+++ b/doc/classes/Control.xml
@@ -1159,12 +1159,12 @@
[b]Note:[/b] [member CanvasItem.z_index] doesn't affect which Control receives the notification.
See also [constant NOTIFICATION_MOUSE_EXIT_SELF].
</constant>
- <constant name="NOTIFICATION_MOUSE_ENTER_SELF" value="60" is_experimental="true">
+ <constant name="NOTIFICATION_MOUSE_ENTER_SELF" value="60" experimental="">
Sent when the mouse cursor enters the 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.
[b]Note:[/b] [member CanvasItem.z_index] doesn't affect which Control receives the notification.
See also [constant NOTIFICATION_MOUSE_ENTER].
</constant>
- <constant name="NOTIFICATION_MOUSE_EXIT_SELF" value="61" is_experimental="true">
+ <constant name="NOTIFICATION_MOUSE_EXIT_SELF" value="61" experimental="">
Sent when the mouse cursor leaves the 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.
[b]Note:[/b] [member CanvasItem.z_index] doesn't affect which Control receives the notification.
See also [constant NOTIFICATION_MOUSE_EXIT].
diff --git a/doc/classes/EditorPlugin.xml b/doc/classes/EditorPlugin.xml
index 956157e8cb..08bdd840bb 100644
--- a/doc/classes/EditorPlugin.xml
+++ b/doc/classes/EditorPlugin.xml
@@ -559,11 +559,10 @@
The callback should have 4 arguments: [Object] [code]undo_redo[/code], [Object] [code]modified_object[/code], [String] [code]property[/code] and [Variant] [code]new_value[/code]. They are, respectively, the [UndoRedo] 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.
</description>
</method>
- <method name="get_editor_interface" is_deprecated="true">
+ <method name="get_editor_interface" deprecated="[EditorInterface] is a global singleton and can be accessed directly by its name.">
<return type="EditorInterface" />
<description>
Returns the [EditorInterface] singleton instance.
- [i]Deprecated.[/i] [EditorInterface] is a global singleton and can be accessed directly by its name.
</description>
</method>
<method name="get_export_as_menu">
@@ -750,10 +749,9 @@
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.
</description>
</signal>
- <signal name="project_settings_changed" is_deprecated="true">
+ <signal name="project_settings_changed" deprecated="Use [signal ProjectSettings.settings_changed] instead.">
<description>
Emitted when any project setting has changed.
- [i]Deprecated.[/i] Use [signal ProjectSettings.settings_changed] instead.
</description>
</signal>
<signal name="resource_saved">
diff --git a/doc/classes/EditorScript.xml b/doc/classes/EditorScript.xml
index 8033c18918..24480437fd 100644
--- a/doc/classes/EditorScript.xml
+++ b/doc/classes/EditorScript.xml
@@ -48,11 +48,10 @@
[b]Warning:[/b] The implementation of this method is currently disabled.
</description>
</method>
- <method name="get_editor_interface" qualifiers="const" is_deprecated="true">
+ <method name="get_editor_interface" qualifiers="const" deprecated="[EditorInterface] is a global singleton and can be accessed directly by its name.">
<return type="EditorInterface" />
<description>
Returns the [EditorInterface] singleton instance.
- [i]Deprecated.[/i] [EditorInterface] is a global singleton and can be accessed directly by its name.
</description>
</method>
<method name="get_scene" qualifiers="const">
diff --git a/doc/classes/GraphEdit.xml b/doc/classes/GraphEdit.xml
index 709d26668c..a9ac47d8df 100644
--- a/doc/classes/GraphEdit.xml
+++ b/doc/classes/GraphEdit.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="GraphEdit" inherits="Control" is_experimental="true" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd">
+<class name="GraphEdit" inherits="Control" experimental="" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd">
<brief_description>
An editor for graph-like structures, using [GraphNode]s.
</brief_description>
diff --git a/doc/classes/GraphElement.xml b/doc/classes/GraphElement.xml
index dd2c7f3d3e..17c4184a20 100644
--- a/doc/classes/GraphElement.xml
+++ b/doc/classes/GraphElement.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="GraphElement" inherits="Container" is_experimental="true" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd">
+<class name="GraphElement" inherits="Container" experimental="" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd">
<brief_description>
A container that represents a basic element that can be placed inside a [GraphEdit] control.
</brief_description>
diff --git a/doc/classes/GraphNode.xml b/doc/classes/GraphNode.xml
index 5bb3a25158..ad1028d7f4 100644
--- a/doc/classes/GraphNode.xml
+++ b/doc/classes/GraphNode.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="GraphNode" inherits="GraphElement" is_experimental="true" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd">
+<class name="GraphNode" inherits="GraphElement" experimental="" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd">
<brief_description>
A container with connection ports, representing a node in a [GraphEdit].
</brief_description>
diff --git a/doc/classes/HTTPClient.xml b/doc/classes/HTTPClient.xml
index f0385a7814..4befe2f8ec 100644
--- a/doc/classes/HTTPClient.xml
+++ b/doc/classes/HTTPClient.xml
@@ -322,11 +322,11 @@
<constant name="RESPONSE_NOT_MODIFIED" value="304" enum="ResponseCode">
HTTP status code [code]304 Not Modified[/code]. A conditional GET or HEAD request has been received and would have resulted in a 200 OK response if it were not for the fact that the condition evaluated to [code]false[/code].
</constant>
- <constant name="RESPONSE_USE_PROXY" value="305" enum="ResponseCode" is_deprecated="true">
- [i]Deprecated.[/i] HTTP status code [code]305 Use Proxy[/code].
+ <constant name="RESPONSE_USE_PROXY" value="305" enum="ResponseCode" deprecated="">
+ HTTP status code [code]305 Use Proxy[/code].
</constant>
- <constant name="RESPONSE_SWITCH_PROXY" value="306" enum="ResponseCode" is_deprecated="true">
- [i]Deprecated.[/i] HTTP status code [code]306 Switch Proxy[/code].
+ <constant name="RESPONSE_SWITCH_PROXY" value="306" enum="ResponseCode" deprecated="">
+ HTTP status code [code]306 Switch Proxy[/code].
</constant>
<constant name="RESPONSE_TEMPORARY_REDIRECT" value="307" enum="ResponseCode">
HTTP status code [code]307 Temporary Redirect[/code]. The target resource resides temporarily under a different URI and the user agent MUST NOT change the request method if it performs an automatic redirection to that URI.
diff --git a/doc/classes/InputEventJoypadButton.xml b/doc/classes/InputEventJoypadButton.xml
index 2516ef67dd..a545eaf811 100644
--- a/doc/classes/InputEventJoypadButton.xml
+++ b/doc/classes/InputEventJoypadButton.xml
@@ -16,9 +16,7 @@
<member name="pressed" type="bool" setter="set_pressed" getter="is_pressed" default="false">
If [code]true[/code], the button's state is pressed. If [code]false[/code], the button's state is released.
</member>
- <member name="pressure" type="float" setter="set_pressure" getter="get_pressure" default="0.0" is_deprecated="true">
- Represents the pressure the user puts on a pressure-sensitive button.
- [i]Deprecated.[/i] This property is never set by the engine and is always [code]0[/code].
+ <member name="pressure" type="float" setter="set_pressure" getter="get_pressure" default="0.0" deprecated="This property is never set by the engine and is always [code]0[/code].">
</member>
</members>
</class>
diff --git a/doc/classes/LightmapGIData.xml b/doc/classes/LightmapGIData.xml
index db6c9e70ca..b1ba6c5d84 100644
--- a/doc/classes/LightmapGIData.xml
+++ b/doc/classes/LightmapGIData.xml
@@ -54,9 +54,8 @@
</method>
</methods>
<members>
- <member name="light_texture" type="TextureLayered" setter="set_light_texture" getter="get_light_texture" is_deprecated="true">
+ <member name="light_texture" type="TextureLayered" setter="set_light_texture" getter="get_light_texture" deprecated="The lightmap atlas can now have multiple textures. See [member lightmap_textures].">
The lightmap atlas texture generated by the lightmapper.
- [i]Deprecated.[/i] The lightmap atlas can now have multiple textures. See [member lightmap_textures].
</member>
<member name="lightmap_textures" type="TextureLayered[]" setter="set_lightmap_textures" getter="get_lightmap_textures" default="[]">
The lightmap atlas textures generated by the lightmapper.
diff --git a/doc/classes/MultiMesh.xml b/doc/classes/MultiMesh.xml
index f83dadfb15..5539213619 100644
--- a/doc/classes/MultiMesh.xml
+++ b/doc/classes/MultiMesh.xml
@@ -90,11 +90,9 @@
<members>
<member name="buffer" type="PackedFloat32Array" setter="set_buffer" getter="get_buffer" default="PackedFloat32Array()">
</member>
- <member name="color_array" type="PackedColorArray" setter="_set_color_array" getter="_get_color_array" is_deprecated="true">
- See [method set_instance_color].
+ <member name="color_array" type="PackedColorArray" setter="_set_color_array" getter="_get_color_array" deprecated="Use [method set_instance_color] instead.">
</member>
- <member name="custom_data_array" type="PackedColorArray" setter="_set_custom_data_array" getter="_get_custom_data_array" is_deprecated="true">
- See [method set_instance_custom_data].
+ <member name="custom_data_array" type="PackedColorArray" setter="_set_custom_data_array" getter="_get_custom_data_array" deprecated="Use [method set_instance_custom_data] instead.">
</member>
<member name="instance_count" type="int" setter="set_instance_count" getter="get_instance_count" default="0">
Number of instances that will get drawn. This clears and (re)sizes the buffers. Setting data format or flags afterwards will have no effect.
@@ -104,11 +102,9 @@
[Mesh] resource to be instanced.
The looks of the individual instances can be modified using [method set_instance_color] and [method set_instance_custom_data].
</member>
- <member name="transform_2d_array" type="PackedVector2Array" setter="_set_transform_2d_array" getter="_get_transform_2d_array" is_deprecated="true">
- See [method set_instance_transform_2d].
+ <member name="transform_2d_array" type="PackedVector2Array" setter="_set_transform_2d_array" getter="_get_transform_2d_array" deprecated="Use [method set_instance_transform_2d] instead.">
</member>
- <member name="transform_array" type="PackedVector3Array" setter="_set_transform_array" getter="_get_transform_array" is_deprecated="true">
- See [method set_instance_transform].
+ <member name="transform_array" type="PackedVector3Array" setter="_set_transform_array" getter="_get_transform_array" deprecated="Use [method set_instance_transform] instead.">
</member>
<member name="transform_format" type="int" setter="set_transform_format" getter="get_transform_format" enum="MultiMesh.TransformFormat" default="0">
Format of transform used to transform mesh, either 2D or 3D.
diff --git a/doc/classes/NavigationAgent2D.xml b/doc/classes/NavigationAgent2D.xml
index fc7faf9260..132ece53b0 100644
--- a/doc/classes/NavigationAgent2D.xml
+++ b/doc/classes/NavigationAgent2D.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="NavigationAgent2D" inherits="Node" is_experimental="true" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd">
+<class name="NavigationAgent2D" inherits="Node" experimental="" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd">
<brief_description>
A 2D agent used to pathfind to a position while avoiding obstacles.
</brief_description>
diff --git a/doc/classes/NavigationAgent3D.xml b/doc/classes/NavigationAgent3D.xml
index cbcf50bb29..37f92ab42a 100644
--- a/doc/classes/NavigationAgent3D.xml
+++ b/doc/classes/NavigationAgent3D.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="NavigationAgent3D" inherits="Node" is_experimental="true" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd">
+<class name="NavigationAgent3D" inherits="Node" experimental="" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd">
<brief_description>
A 3D agent used to pathfind to a position while avoiding obstacles.
</brief_description>
diff --git a/doc/classes/NavigationLink2D.xml b/doc/classes/NavigationLink2D.xml
index 75b691aaf4..0892c9ec44 100644
--- a/doc/classes/NavigationLink2D.xml
+++ b/doc/classes/NavigationLink2D.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="NavigationLink2D" inherits="Node2D" is_experimental="true" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd">
+<class name="NavigationLink2D" inherits="Node2D" experimental="" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd">
<brief_description>
A link between two positions on [NavigationRegion2D]s that agents can be routed through.
</brief_description>
diff --git a/doc/classes/NavigationLink3D.xml b/doc/classes/NavigationLink3D.xml
index 711c637dc5..0fcc106beb 100644
--- a/doc/classes/NavigationLink3D.xml
+++ b/doc/classes/NavigationLink3D.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="NavigationLink3D" inherits="Node3D" is_experimental="true" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd">
+<class name="NavigationLink3D" inherits="Node3D" experimental="" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd">
<brief_description>
A link between two positions on [NavigationRegion3D]s that agents can be routed through.
</brief_description>
diff --git a/doc/classes/NavigationMesh.xml b/doc/classes/NavigationMesh.xml
index 8b2265baad..42ef354bc8 100644
--- a/doc/classes/NavigationMesh.xml
+++ b/doc/classes/NavigationMesh.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="NavigationMesh" inherits="Resource" is_experimental="true" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd">
+<class name="NavigationMesh" inherits="Resource" experimental="" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd">
<brief_description>
A navigation mesh that defines traversable areas and obstacles.
</brief_description>
diff --git a/doc/classes/NavigationMeshGenerator.xml b/doc/classes/NavigationMeshGenerator.xml
index 0997354aff..35c9e13e58 100644
--- a/doc/classes/NavigationMeshGenerator.xml
+++ b/doc/classes/NavigationMeshGenerator.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="NavigationMeshGenerator" inherits="Object" is_deprecated="true" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd">
+<class name="NavigationMeshGenerator" inherits="Object" deprecated="" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd">
<brief_description>
Helper class for creating and clearing navigation meshes.
</brief_description>
@@ -14,7 +14,7 @@
<link title="Using NavigationMeshes">$DOCS_URL/tutorials/navigation/navigation_using_navigationmeshes.html</link>
</tutorials>
<methods>
- <method name="bake" is_deprecated="true">
+ <method name="bake" deprecated="">
<return type="void" />
<param index="0" name="navigation_mesh" type="NavigationMesh" />
<param index="1" name="root_node" type="Node" />
diff --git a/doc/classes/NavigationMeshSourceGeometryData2D.xml b/doc/classes/NavigationMeshSourceGeometryData2D.xml
index 4bf5213da7..3f6fcc733a 100644
--- a/doc/classes/NavigationMeshSourceGeometryData2D.xml
+++ b/doc/classes/NavigationMeshSourceGeometryData2D.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="NavigationMeshSourceGeometryData2D" inherits="Resource" is_experimental="true" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd">
+<class name="NavigationMeshSourceGeometryData2D" inherits="Resource" experimental="" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd">
<brief_description>
Container for parsed source geometry data used in navigation mesh baking.
</brief_description>
diff --git a/doc/classes/NavigationMeshSourceGeometryData3D.xml b/doc/classes/NavigationMeshSourceGeometryData3D.xml
index dad3623416..ffa8163eaa 100644
--- a/doc/classes/NavigationMeshSourceGeometryData3D.xml
+++ b/doc/classes/NavigationMeshSourceGeometryData3D.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="NavigationMeshSourceGeometryData3D" inherits="Resource" is_experimental="true" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd">
+<class name="NavigationMeshSourceGeometryData3D" inherits="Resource" experimental="" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd">
<brief_description>
Container for parsed source geometry data used in navigation mesh baking.
</brief_description>
diff --git a/doc/classes/NavigationObstacle2D.xml b/doc/classes/NavigationObstacle2D.xml
index 1eb18984a6..19b515c7cb 100644
--- a/doc/classes/NavigationObstacle2D.xml
+++ b/doc/classes/NavigationObstacle2D.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="NavigationObstacle2D" inherits="Node2D" is_experimental="true" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd">
+<class name="NavigationObstacle2D" inherits="Node2D" experimental="" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd">
<brief_description>
2D Obstacle used in navigation to constrain avoidance controlled agents outside or inside an area.
</brief_description>
diff --git a/doc/classes/NavigationObstacle3D.xml b/doc/classes/NavigationObstacle3D.xml
index 141442eaf0..998279b3c4 100644
--- a/doc/classes/NavigationObstacle3D.xml
+++ b/doc/classes/NavigationObstacle3D.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="NavigationObstacle3D" inherits="Node3D" is_experimental="true" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd">
+<class name="NavigationObstacle3D" inherits="Node3D" experimental="" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd">
<brief_description>
3D Obstacle used in navigation to constrain avoidance controlled agents outside or inside an area.
</brief_description>
diff --git a/doc/classes/NavigationPathQueryParameters2D.xml b/doc/classes/NavigationPathQueryParameters2D.xml
index 74cf4bdb75..7d9ecf61b0 100644
--- a/doc/classes/NavigationPathQueryParameters2D.xml
+++ b/doc/classes/NavigationPathQueryParameters2D.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="NavigationPathQueryParameters2D" inherits="RefCounted" is_experimental="true" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd">
+<class name="NavigationPathQueryParameters2D" inherits="RefCounted" experimental="" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd">
<brief_description>
Provides parameters for 2D navigation path queries.
</brief_description>
diff --git a/doc/classes/NavigationPathQueryParameters3D.xml b/doc/classes/NavigationPathQueryParameters3D.xml
index 2a366c0498..862f8a8347 100644
--- a/doc/classes/NavigationPathQueryParameters3D.xml
+++ b/doc/classes/NavigationPathQueryParameters3D.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="NavigationPathQueryParameters3D" inherits="RefCounted" is_experimental="true" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd">
+<class name="NavigationPathQueryParameters3D" inherits="RefCounted" experimental="" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd">
<brief_description>
Provides parameters for 3D navigation path queries.
</brief_description>
diff --git a/doc/classes/NavigationPathQueryResult2D.xml b/doc/classes/NavigationPathQueryResult2D.xml
index e02133cfba..e1ef2ee7de 100644
--- a/doc/classes/NavigationPathQueryResult2D.xml
+++ b/doc/classes/NavigationPathQueryResult2D.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="NavigationPathQueryResult2D" inherits="RefCounted" is_experimental="true" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd">
+<class name="NavigationPathQueryResult2D" inherits="RefCounted" experimental="" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd">
<brief_description>
Represents the result of a 2D pathfinding query.
</brief_description>
diff --git a/doc/classes/NavigationPathQueryResult3D.xml b/doc/classes/NavigationPathQueryResult3D.xml
index 9631c6a644..1cda3e64d5 100644
--- a/doc/classes/NavigationPathQueryResult3D.xml
+++ b/doc/classes/NavigationPathQueryResult3D.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="NavigationPathQueryResult3D" inherits="RefCounted" is_experimental="true" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd">
+<class name="NavigationPathQueryResult3D" inherits="RefCounted" experimental="" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd">
<brief_description>
Represents the result of a 3D pathfinding query.
</brief_description>
diff --git a/doc/classes/NavigationPolygon.xml b/doc/classes/NavigationPolygon.xml
index 54c5c80b78..9c4e8169b0 100644
--- a/doc/classes/NavigationPolygon.xml
+++ b/doc/classes/NavigationPolygon.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="NavigationPolygon" inherits="Resource" is_experimental="true" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd">
+<class name="NavigationPolygon" inherits="Resource" experimental="" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd">
<brief_description>
A 2D navigation mesh that describes a traversable surface for pathfinding.
</brief_description>
@@ -132,11 +132,10 @@
Returns a [PackedVector2Array] containing all the vertices being used to create the polygons.
</description>
</method>
- <method name="make_polygons_from_outlines" is_deprecated="true">
+ <method name="make_polygons_from_outlines" deprecated="Use [method NavigationServer2D.parse_source_geometry_data] and [method NavigationServer2D.bake_from_source_geometry_data] instead.">
<return type="void" />
<description>
Creates polygons from the outlines added in the editor or by script.
- [i]Deprecated.[/i] This function is deprecated, and might be removed in a future release. Use [method NavigationServer2D.parse_source_geometry_data] and [method NavigationServer2D.bake_from_source_geometry_data] instead.
</description>
</method>
<method name="remove_outline">
diff --git a/doc/classes/NavigationRegion2D.xml b/doc/classes/NavigationRegion2D.xml
index 4ad552e97e..8ce1551715 100644
--- a/doc/classes/NavigationRegion2D.xml
+++ b/doc/classes/NavigationRegion2D.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="NavigationRegion2D" inherits="Node2D" is_experimental="true" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd">
+<class name="NavigationRegion2D" inherits="Node2D" experimental="" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd">
<brief_description>
A traversable 2D region that [NavigationAgent2D]s can use for pathfinding.
</brief_description>
@@ -43,11 +43,10 @@
Returns the current navigation map [RID] used by this region.
</description>
</method>
- <method name="get_region_rid" qualifiers="const" is_deprecated="true">
+ <method name="get_region_rid" qualifiers="const" deprecated="Use [method get_rid] instead.">
<return type="RID" />
<description>
Returns the [RID] of this region on the [NavigationServer2D].
- [i]Deprecated.[/i] Use [method get_rid] instead.
</description>
</method>
<method name="get_rid" qualifiers="const">
diff --git a/doc/classes/NavigationRegion3D.xml b/doc/classes/NavigationRegion3D.xml
index 2a84270d7d..ad31fd0632 100644
--- a/doc/classes/NavigationRegion3D.xml
+++ b/doc/classes/NavigationRegion3D.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="NavigationRegion3D" inherits="Node3D" is_experimental="true" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd">
+<class name="NavigationRegion3D" inherits="Node3D" experimental="" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd">
<brief_description>
A traversable 3D region that [NavigationAgent3D]s can use for pathfinding.
</brief_description>
@@ -36,11 +36,10 @@
Returns the current navigation map [RID] used by this region.
</description>
</method>
- <method name="get_region_rid" qualifiers="const" is_deprecated="true">
+ <method name="get_region_rid" qualifiers="const" deprecated="Use [method get_rid] instead.">
<return type="RID" />
<description>
Returns the [RID] of this region on the [NavigationServer3D].
- [i]Deprecated.[/i] Use [method get_rid] instead.
</description>
</method>
<method name="get_rid" qualifiers="const">
diff --git a/doc/classes/NavigationServer2D.xml b/doc/classes/NavigationServer2D.xml
index 2fe60a1118..39f0718a71 100644
--- a/doc/classes/NavigationServer2D.xml
+++ b/doc/classes/NavigationServer2D.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="NavigationServer2D" inherits="Object" is_experimental="true" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd">
+<class name="NavigationServer2D" inherits="Object" experimental="" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd">
<brief_description>
A server interface for low-level 2D navigation access.
</brief_description>
diff --git a/doc/classes/NavigationServer3D.xml b/doc/classes/NavigationServer3D.xml
index caadb844f1..95a803b6e5 100644
--- a/doc/classes/NavigationServer3D.xml
+++ b/doc/classes/NavigationServer3D.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="NavigationServer3D" inherits="Object" is_experimental="true" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd">
+<class name="NavigationServer3D" inherits="Object" experimental="" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd">
<brief_description>
A server interface for low-level 3D navigation access.
</brief_description>
@@ -886,13 +886,13 @@
Queries a path in a given navigation map. Start and target position and other parameters are defined through [NavigationPathQueryParameters3D]. Updates the provided [NavigationPathQueryResult3D] result object with the path among other results requested by the query.
</description>
</method>
- <method name="region_bake_navigation_mesh" is_deprecated="true">
+ <method name="region_bake_navigation_mesh" deprecated="This method is deprecated due to core threading changes.">
<return type="void" />
<param index="0" name="navigation_mesh" type="NavigationMesh" />
<param index="1" name="root_node" type="Node" />
<description>
Bakes the [param navigation_mesh] with bake source geometry collected starting from the [param root_node].
- [i]Deprecated.[/i] This function is deprecated due to core threading changes. To upgrade existing code, first create a [NavigationMeshSourceGeometryData3D] resource. Use this resource with [method parse_source_geometry_data] to parse the SceneTree for nodes that should contribute to the navigation mesh baking. The SceneTree parsing needs to happen on the main thread. After the parsing is finished use the resource with [method bake_from_source_geometry_data] to bake a navigation mesh.
+ [i]Deprecated.[/i] To upgrade existing code, first create a [NavigationMeshSourceGeometryData3D] resource. Use this resource with [method parse_source_geometry_data] to parse the SceneTree for nodes that should contribute to the navigation mesh baking. The SceneTree parsing needs to happen on the main thread. After the parsing is finished use the resource with [method bake_from_source_geometry_data] to bake a navigation mesh.
</description>
</method>
<method name="region_create">
diff --git a/doc/classes/Node.xml b/doc/classes/Node.xml
index 02126bf8fe..ada4bd04e6 100644
--- a/doc/classes/Node.xml
+++ b/doc/classes/Node.xml
@@ -1038,8 +1038,8 @@
Notification received when the node is about to exit a [SceneTree]. See [method _exit_tree].
This notification is received [i]after[/i] the related [signal tree_exiting] signal.
</constant>
- <constant name="NOTIFICATION_MOVED_IN_PARENT" value="12" is_deprecated="true">
- [i]Deprecated.[/i] This notification is no longer emitted. Use [constant NOTIFICATION_CHILD_ORDER_CHANGED] instead.
+ <constant name="NOTIFICATION_MOVED_IN_PARENT" value="12" deprecated="Use [constant NOTIFICATION_CHILD_ORDER_CHANGED] instead.">
+ This notification is no longer emitted.
</constant>
<constant name="NOTIFICATION_READY" value="13">
Notification received when the node is ready. See [method _ready].
diff --git a/doc/classes/RenderingDevice.xml b/doc/classes/RenderingDevice.xml
index 21b34db69d..8969d66b35 100644
--- a/doc/classes/RenderingDevice.xml
+++ b/doc/classes/RenderingDevice.xml
@@ -14,12 +14,11 @@
<link title="Using compute shaders">$DOCS_URL/tutorials/shaders/compute_shaders.html</link>
</tutorials>
<methods>
- <method name="barrier" is_deprecated="true">
+ <method name="barrier" deprecated="Barriers are automatically inserted by RenderingDevice.">
<return type="void" />
<param index="0" name="from" type="int" enum="RenderingDevice.BarrierMask" is_bitfield="true" default="32767" />
<param index="1" name="to" type="int" enum="RenderingDevice.BarrierMask" is_bitfield="true" default="32767" />
<description>
- [i]Deprecated.[/i] Barriers are automatically inserted by RenderingDevice.
</description>
</method>
<method name="buffer_clear">
@@ -190,12 +189,11 @@
Ends the command buffer debug label region started by a [method draw_command_begin_label] call.
</description>
</method>
- <method name="draw_command_insert_label" is_deprecated="true">
+ <method name="draw_command_insert_label" deprecated="Inserting labels no longer applies due to command reordering.">
<return type="void" />
<param index="0" name="name" type="String" />
<param index="1" name="color" type="Color" />
<description>
- [i]Deprecated.[/i] Inserting labels no longer applies due to command reordering.
</description>
</method>
<method name="draw_list_begin">
@@ -242,7 +240,7 @@
[b]Note:[/b] 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].
</description>
</method>
- <method name="draw_list_begin_split" is_deprecated="true">
+ <method name="draw_list_begin_split" deprecated="Split draw lists are used automatically by RenderingDevice.">
<return type="PackedInt64Array" />
<param index="0" name="framebuffer" type="RID" />
<param index="1" name="splits" type="int" />
@@ -256,7 +254,6 @@
<param index="9" name="region" type="Rect2" default="Rect2(0, 0, 0, 0)" />
<param index="10" name="storage_textures" type="RID[]" default="[]" />
<description>
- [i]Deprecated.[/i] Split draw lists are used automatically by RenderingDevice.
</description>
</method>
<method name="draw_list_bind_index_array">
@@ -347,11 +344,10 @@
Switches to the next draw pass.
</description>
</method>
- <method name="draw_list_switch_to_next_pass_split" is_deprecated="true">
+ <method name="draw_list_switch_to_next_pass_split" deprecated="Split draw lists are used automatically by RenderingDevice.">
<return type="PackedInt64Array" />
<param index="0" name="splits" type="int" />
<description>
- [i]Deprecated.[/i] Split draw lists are used automatically by RenderingDevice.
</description>
</method>
<method name="framebuffer_create">
@@ -439,10 +435,9 @@
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.
</description>
</method>
- <method name="full_barrier" is_deprecated="true">
+ <method name="full_barrier" deprecated="Barriers are automatically inserted by RenderingDevice.">
<return type="void" />
<description>
- [i]Deprecated.[/i] Barriers are automatically inserted by RenderingDevice.
</description>
</method>
<method name="get_captured_timestamp_cpu_time" qualifiers="const">
@@ -804,13 +799,12 @@
Returns the data format used to create this texture.
</description>
</method>
- <method name="texture_get_native_handle" is_deprecated="true">
+ <method name="texture_get_native_handle" deprecated="Use [method get_driver_resource] with [constant DRIVER_RESOURCE_TEXTURE] instead.">
<return type="int" />
<param index="0" name="texture" type="RID" />
<description>
Returns the internal graphics handle for this texture object. For use when communicating with third-party APIs mostly with GDExtension.
[b]Note:[/b] This function returns a [code]uint64_t[/code] which internally maps to a [code]GLuint[/code] (OpenGL) or [code]VkImage[/code] (Vulkan).
- [i]Deprecated.[/i] Use [method get_driver_resource] with [constant DRIVER_RESOURCE_TEXTURE] instead.
</description>
</method>
<method name="texture_is_format_supported_for_usage" qualifiers="const">
@@ -982,44 +976,31 @@
<constant name="DRIVER_RESOURCE_RENDER_PIPELINE" value="12" enum="DriverResource">
- Vulkan: [code]VkPipeline[/code].
</constant>
- <constant name="DRIVER_RESOURCE_VULKAN_DEVICE" value="0" enum="DriverResource" is_deprecated="true">
- [i]Deprecated.[/i] Use [constant DRIVER_RESOURCE_LOGICAL_DEVICE].
+ <constant name="DRIVER_RESOURCE_VULKAN_DEVICE" value="0" enum="DriverResource" deprecated="Use [constant DRIVER_RESOURCE_LOGICAL_DEVICE] instead.">
</constant>
- <constant name="DRIVER_RESOURCE_VULKAN_PHYSICAL_DEVICE" value="1" enum="DriverResource" is_deprecated="true">
- [i]Deprecated.[/i] Use [constant DRIVER_RESOURCE_PHYSICAL_DEVICE].
+ <constant name="DRIVER_RESOURCE_VULKAN_PHYSICAL_DEVICE" value="1" enum="DriverResource" deprecated="Use [constant DRIVER_RESOURCE_PHYSICAL_DEVICE] instead.">
</constant>
- <constant name="DRIVER_RESOURCE_VULKAN_INSTANCE" value="2" enum="DriverResource" is_deprecated="true">
- [i]Deprecated.[/i] Use [constant DRIVER_RESOURCE_TOPMOST_OBJECT].
+ <constant name="DRIVER_RESOURCE_VULKAN_INSTANCE" value="2" enum="DriverResource" deprecated="Use [constant DRIVER_RESOURCE_TOPMOST_OBJECT] instead.">
</constant>
- <constant name="DRIVER_RESOURCE_VULKAN_QUEUE" value="3" enum="DriverResource" is_deprecated="true">
- [i]Deprecated.[/i] Use [constant DRIVER_RESOURCE_COMMAND_QUEUE].
+ <constant name="DRIVER_RESOURCE_VULKAN_QUEUE" value="3" enum="DriverResource" deprecated="Use [constant DRIVER_RESOURCE_COMMAND_QUEUE] instead.">
</constant>
- <constant name="DRIVER_RESOURCE_VULKAN_QUEUE_FAMILY_INDEX" value="4" enum="DriverResource" is_deprecated="true">
- [i]Deprecated.[/i] Use [constant DRIVER_RESOURCE_QUEUE_FAMILY].
+ <constant name="DRIVER_RESOURCE_VULKAN_QUEUE_FAMILY_INDEX" value="4" enum="DriverResource" deprecated="Use [constant DRIVER_RESOURCE_QUEUE_FAMILY] instead.">
</constant>
- <constant name="DRIVER_RESOURCE_VULKAN_IMAGE" value="5" enum="DriverResource" is_deprecated="true">
- [i]Deprecated.[/i] Use [constant DRIVER_RESOURCE_TEXTURE].
+ <constant name="DRIVER_RESOURCE_VULKAN_IMAGE" value="5" enum="DriverResource" deprecated="Use [constant DRIVER_RESOURCE_TEXTURE] instead.">
</constant>
- <constant name="DRIVER_RESOURCE_VULKAN_IMAGE_VIEW" value="6" enum="DriverResource" is_deprecated="true">
- [i]Deprecated.[/i] Use [constant DRIVER_RESOURCE_TEXTURE_VIEW].
+ <constant name="DRIVER_RESOURCE_VULKAN_IMAGE_VIEW" value="6" enum="DriverResource" deprecated="Use [constant DRIVER_RESOURCE_TEXTURE_VIEW] instead.">
</constant>
- <constant name="DRIVER_RESOURCE_VULKAN_IMAGE_NATIVE_TEXTURE_FORMAT" value="7" enum="DriverResource" is_deprecated="true">
- [i]Deprecated.[/i] Use [constant DRIVER_RESOURCE_TEXTURE_DATA_FORMAT].
+ <constant name="DRIVER_RESOURCE_VULKAN_IMAGE_NATIVE_TEXTURE_FORMAT" value="7" enum="DriverResource" deprecated="Use [constant DRIVER_RESOURCE_TEXTURE_DATA_FORMAT] instead.">
</constant>
- <constant name="DRIVER_RESOURCE_VULKAN_SAMPLER" value="8" enum="DriverResource" is_deprecated="true">
- [i]Deprecated.[/i] Use [constant DRIVER_RESOURCE_SAMPLER].
+ <constant name="DRIVER_RESOURCE_VULKAN_SAMPLER" value="8" enum="DriverResource" deprecated="Use [constant DRIVER_RESOURCE_SAMPLER] instead.">
</constant>
- <constant name="DRIVER_RESOURCE_VULKAN_DESCRIPTOR_SET" value="9" enum="DriverResource" is_deprecated="true">
- [i]Deprecated.[/i] Use [constant DRIVER_RESOURCE_UNIFORM_SET].
+ <constant name="DRIVER_RESOURCE_VULKAN_DESCRIPTOR_SET" value="9" enum="DriverResource" deprecated="Use [constant DRIVER_RESOURCE_UNIFORM_SET] instead.">
</constant>
- <constant name="DRIVER_RESOURCE_VULKAN_BUFFER" value="10" enum="DriverResource" is_deprecated="true">
- [i]Deprecated.[/i] Use [constant DRIVER_RESOURCE_BUFFER].
+ <constant name="DRIVER_RESOURCE_VULKAN_BUFFER" value="10" enum="DriverResource" deprecated="Use [constant DRIVER_RESOURCE_BUFFER] instead.">
</constant>
- <constant name="DRIVER_RESOURCE_VULKAN_COMPUTE_PIPELINE" value="11" enum="DriverResource" is_deprecated="true">
- [i]Deprecated.[/i] Use [constant DRIVER_RESOURCE_COMPUTE_PIPELINE].
+ <constant name="DRIVER_RESOURCE_VULKAN_COMPUTE_PIPELINE" value="11" enum="DriverResource" deprecated="Use [constant DRIVER_RESOURCE_COMPUTE_PIPELINE] instead.">
</constant>
- <constant name="DRIVER_RESOURCE_VULKAN_RENDER_PIPELINE" value="12" enum="DriverResource" is_deprecated="true">
- [i]Deprecated.[/i] Use [constant DRIVER_RESOURCE_RENDER_PIPELINE].
+ <constant name="DRIVER_RESOURCE_VULKAN_RENDER_PIPELINE" value="12" enum="DriverResource" deprecated="Use [constant DRIVER_RESOURCE_RENDER_PIPELINE] instead.">
</constant>
<constant name="DATA_FORMAT_R4G4_UNORM_PACK8" value="0" enum="DataFormat">
4-bit-per-channel red/green channel data format, packed into 8 bits. Values are in the [code][0.0, 1.0][/code] range.
@@ -2168,20 +2149,15 @@
<constant name="INITIAL_ACTION_MAX" value="3" enum="InitialAction">
Represents the size of the [enum InitialAction] enum.
</constant>
- <constant name="INITIAL_ACTION_CLEAR_REGION" value="1" enum="InitialAction" is_deprecated="true">
- [i]Deprecated.[/i] Use [constant INITIAL_ACTION_CLEAR] instead.
+ <constant name="INITIAL_ACTION_CLEAR_REGION" value="1" enum="InitialAction" deprecated="Use [constant INITIAL_ACTION_CLEAR] instead.">
</constant>
- <constant name="INITIAL_ACTION_CLEAR_REGION_CONTINUE" value="1" enum="InitialAction" is_deprecated="true">
- [i]Deprecated.[/i] Use [constant INITIAL_ACTION_LOAD] instead.
+ <constant name="INITIAL_ACTION_CLEAR_REGION_CONTINUE" value="1" enum="InitialAction" deprecated="Use [constant INITIAL_ACTION_LOAD] instead.">
</constant>
- <constant name="INITIAL_ACTION_KEEP" value="0" enum="InitialAction" is_deprecated="true">
- [i]Deprecated.[/i] Use [constant INITIAL_ACTION_LOAD] instead.
+ <constant name="INITIAL_ACTION_KEEP" value="0" enum="InitialAction" deprecated="Use [constant INITIAL_ACTION_LOAD] instead.">
</constant>
- <constant name="INITIAL_ACTION_DROP" value="2" enum="InitialAction" is_deprecated="true">
- [i]Deprecated.[/i] Use [constant INITIAL_ACTION_DISCARD] instead.
+ <constant name="INITIAL_ACTION_DROP" value="2" enum="InitialAction" deprecated="Use [constant INITIAL_ACTION_DISCARD] instead.">
</constant>
- <constant name="INITIAL_ACTION_CONTINUE" value="0" enum="InitialAction" is_deprecated="true">
- [i]Deprecated.[/i] Use [constant INITIAL_ACTION_LOAD] instead.
+ <constant name="INITIAL_ACTION_CONTINUE" value="0" enum="InitialAction" deprecated="Use [constant INITIAL_ACTION_LOAD] instead.">
</constant>
<constant name="FINAL_ACTION_STORE" value="0" enum="FinalAction">
Store the result of the draw list in the framebuffer. This is generally what you want to do.
@@ -2192,11 +2168,9 @@
<constant name="FINAL_ACTION_MAX" value="2" enum="FinalAction">
Represents the size of the [enum FinalAction] enum.
</constant>
- <constant name="FINAL_ACTION_READ" value="0" enum="FinalAction" is_deprecated="true">
- [i]Deprecated.[/i] Use [constant FINAL_ACTION_STORE] instead.
+ <constant name="FINAL_ACTION_READ" value="0" enum="FinalAction" deprecated="Use [constant FINAL_ACTION_STORE] instead.">
</constant>
- <constant name="FINAL_ACTION_CONTINUE" value="0" enum="FinalAction" is_deprecated="true">
- [i]Deprecated.[/i] Use [constant FINAL_ACTION_STORE] instead.
+ <constant name="FINAL_ACTION_CONTINUE" value="0" enum="FinalAction" deprecated="Use [constant FINAL_ACTION_STORE] instead.">
</constant>
<constant name="SHADER_STAGE_VERTEX" value="0" enum="ShaderStage">
Vertex shader stage. This can be used to manipulate vertices from a shader (but not create new vertices).
diff --git a/doc/classes/RenderingServer.xml b/doc/classes/RenderingServer.xml
index 4ab511b5a9..4597e50f37 100644
--- a/doc/classes/RenderingServer.xml
+++ b/doc/classes/RenderingServer.xml
@@ -1556,11 +1556,11 @@
Returns [code]true[/code] if changes have been made to the RenderingServer's data. [method force_draw] is usually called if this happens.
</description>
</method>
- <method name="has_feature" qualifiers="const" is_deprecated="true">
+ <method name="has_feature" qualifiers="const" deprecated="This method has not been used since Godot 3.0.">
<return type="bool" />
<param index="0" name="feature" type="int" enum="RenderingServer.Features" />
<description>
- [i]Deprecated.[/i] This method has not been used since Godot 3.0. Always returns false.
+ Always returns false.
</description>
</method>
<method name="has_os_feature" qualifiers="const">
@@ -3371,19 +3371,19 @@
Returns a texture [RID] that can be used with [RenderingDevice].
</description>
</method>
- <method name="texture_proxy_create" is_deprecated="true">
+ <method name="texture_proxy_create" deprecated="ProxyTexture was removed in Godot 4.">
<return type="RID" />
<param index="0" name="base" type="RID" />
<description>
- [i]Deprecated.[/i] ProxyTexture was removed in Godot 4, so this method does nothing when called and always returns a null [RID].
+ This method does nothing when called and always returns a null [RID].
</description>
</method>
- <method name="texture_proxy_update" is_deprecated="true">
+ <method name="texture_proxy_update" deprecated="ProxyTexture was removed in Godot 4.">
<return type="void" />
<param index="0" name="texture" type="RID" />
<param index="1" name="proxy_to" type="RID" />
<description>
- [i]Deprecated.[/i] ProxyTexture was removed in Godot 4, so this method cannot be used anymore.
+ This method should not be used.
</description>
</method>
<method name="texture_rd_create">
@@ -4044,8 +4044,8 @@
<constant name="MAX_GLOW_LEVELS" value="7">
The maximum number of glow levels that can be used with the glow post-processing effect.
</constant>
- <constant name="MAX_CURSORS" value="8" is_deprecated="true">
- [i]Deprecated.[/i] This constant is unused internally.
+ <constant name="MAX_CURSORS" value="8" deprecated="">
+ This constant is unused internally.
</constant>
<constant name="MAX_2D_DIRECTIONAL_LIGHTS" value="8">
The maximum number of directional lights that can be rendered at a given time in 2D.
@@ -5340,11 +5340,9 @@
<constant name="RENDERING_INFO_VIDEO_MEM_USED" value="5" enum="RenderingInfo">
Video memory used (in bytes). When using the Forward+ or mobile rendering backends, this is always greater than the sum of [constant RENDERING_INFO_TEXTURE_MEM_USED] and [constant RENDERING_INFO_BUFFER_MEM_USED], since there is miscellaneous data not accounted for by those two metrics. When using the GL Compatibility backend, this is equal to the sum of [constant RENDERING_INFO_TEXTURE_MEM_USED] and [constant RENDERING_INFO_BUFFER_MEM_USED].
</constant>
- <constant name="FEATURE_SHADERS" value="0" enum="Features" is_deprecated="true">
- [i]Deprecated.[/i] This constant has not been used since Godot 3.0.
+ <constant name="FEATURE_SHADERS" value="0" enum="Features" deprecated="This constant has not been used since Godot 3.0.">
</constant>
- <constant name="FEATURE_MULTITHREADED" value="1" enum="Features" is_deprecated="true">
- [i]Deprecated.[/i] This constant has not been used since Godot 3.0.
+ <constant name="FEATURE_MULTITHREADED" value="1" enum="Features" deprecated="This constant has not been used since Godot 3.0.">
</constant>
</constants>
</class>
diff --git a/doc/classes/Resource.xml b/doc/classes/Resource.xml
index 49db3f81b4..ee6546dd14 100644
--- a/doc/classes/Resource.xml
+++ b/doc/classes/Resource.xml
@@ -71,11 +71,10 @@
Returns the [RID] of this resource (or an empty RID). Many resources (such as [Texture2D], [Mesh], and so on) are high-level abstractions of resources stored in a specialized server ([DisplayServer], [RenderingServer], etc.), so this function will return the original [RID].
</description>
</method>
- <method name="setup_local_to_scene" is_deprecated="true">
+ <method name="setup_local_to_scene" deprecated="This method should only be called internally. Override [method _setup_local_to_scene] instead.">
<return type="void" />
<description>
Calls [method _setup_local_to_scene]. If [member resource_local_to_scene] is set to [code]true[/code], this method is automatically called from [method PackedScene.instantiate] by the newly duplicated resource within the scene instance.
- [i]Deprecated.[/i] This method should only be called internally. Override [method _setup_local_to_scene] instead.
</description>
</method>
<method name="take_over_path">
@@ -107,10 +106,9 @@
[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.
</description>
</signal>
- <signal name="setup_local_to_scene_requested" is_deprecated="true">
+ <signal name="setup_local_to_scene_requested" deprecated="This signal is only emitted when the resource is created. Override [method _setup_local_to_scene] instead.">
<description>
- Emitted by a newly duplicated resource with [member resource_local_to_scene] set to [code]true[/code].
- [i]Deprecated.[/i] This signal is only emitted when the resource is created. Override [method _setup_local_to_scene] instead.
+ Emitted by a newly duplicated resource with [member resource_local_to_scene] set to [code]true[/code].
</description>
</signal>
</signals>
diff --git a/doc/classes/ScriptLanguageExtension.xml b/doc/classes/ScriptLanguageExtension.xml
index c5248f4888..e2ad1ca3e4 100644
--- a/doc/classes/ScriptLanguageExtension.xml
+++ b/doc/classes/ScriptLanguageExtension.xml
@@ -203,10 +203,9 @@
<description>
</description>
</method>
- <method name="_has_named_classes" qualifiers="virtual const" is_deprecated="true">
+ <method name="_has_named_classes" qualifiers="virtual const" deprecated="This method is not called by the engine.">
<return type="bool" />
<description>
- [i]Deprecated.[/i] This method is not called by the engine.
</description>
</method>
<method name="_init" qualifiers="virtual">
diff --git a/doc/classes/ShapeCast3D.xml b/doc/classes/ShapeCast3D.xml
index e189628f4c..ff057e8c70 100644
--- a/doc/classes/ShapeCast3D.xml
+++ b/doc/classes/ShapeCast3D.xml
@@ -119,11 +119,11 @@
Removes a collision exception so the shape does report collisions with the specified [RID].
</description>
</method>
- <method name="resource_changed" is_deprecated="true">
+ <method name="resource_changed" deprecated="Use [signal Resource.changed] instead.">
<return type="void" />
<param index="0" name="resource" type="Resource" />
<description>
- [i]Obsoleted.[/i] Use [signal Resource.changed] instead.
+ This method does nothing.
</description>
</method>
<method name="set_collision_mask_value">
diff --git a/doc/classes/Skeleton3D.xml b/doc/classes/Skeleton3D.xml
index 2a629abc0d..360fc9b2a9 100644
--- a/doc/classes/Skeleton3D.xml
+++ b/doc/classes/Skeleton3D.xml
@@ -44,11 +44,10 @@
Returns the bone index that matches [param name] as its name.
</description>
</method>
- <method name="force_update_all_bone_transforms" is_deprecated="true">
+ <method name="force_update_all_bone_transforms" deprecated="Do not use this method.">
<return type="void" />
<description>
Force updates the bone transforms/poses for all bones in the skeleton.
- [i]Deprecated.[/i] Do not use.
</description>
</method>
<method name="force_update_bone_child_transform">
diff --git a/doc/classes/SkeletonIK3D.xml b/doc/classes/SkeletonIK3D.xml
index c72383c84f..d1f96adec2 100644
--- a/doc/classes/SkeletonIK3D.xml
+++ b/doc/classes/SkeletonIK3D.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="SkeletonIK3D" inherits="Node" is_deprecated="true" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd">
+<class name="SkeletonIK3D" inherits="Node" deprecated="" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd">
<brief_description>
A node used to rotate all bones of a [Skeleton3D] bone chain a way that places the end bone at a desired 3D position.
</brief_description>
@@ -24,7 +24,6 @@
# Apply zero IK effect (a value at or below 0.01 also removes bones_global_pose_override on Skeleton)
skeleton_ik_node.set_interpolation(0.0)
[/codeblock]
- [i]Deprecated.[/i] This class is deprecated, and might be removed in a future release.
</description>
<tutorials>
<link title="3D Inverse Kinematics Demo">https://godotengine.org/asset-library/asset/523</link>
diff --git a/doc/classes/SkeletonModification2D.xml b/doc/classes/SkeletonModification2D.xml
index c1eee9cb5c..c09e63be85 100644
--- a/doc/classes/SkeletonModification2D.xml
+++ b/doc/classes/SkeletonModification2D.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="SkeletonModification2D" inherits="Resource" is_experimental="true" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd">
+<class name="SkeletonModification2D" inherits="Resource" experimental="" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd">
<brief_description>
Base class for resources that operate on [Bone2D]s in a [Skeleton2D].
</brief_description>
diff --git a/doc/classes/SkeletonModification2DCCDIK.xml b/doc/classes/SkeletonModification2DCCDIK.xml
index af71ae809c..e20cbd8960 100644
--- a/doc/classes/SkeletonModification2DCCDIK.xml
+++ b/doc/classes/SkeletonModification2DCCDIK.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="SkeletonModification2DCCDIK" inherits="SkeletonModification2D" is_experimental="true" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd">
+<class name="SkeletonModification2DCCDIK" inherits="SkeletonModification2D" experimental="" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd">
<brief_description>
A modification that uses CCDIK to manipulate a series of bones to reach a target in 2D.
</brief_description>
diff --git a/doc/classes/SkeletonModification2DFABRIK.xml b/doc/classes/SkeletonModification2DFABRIK.xml
index a31c908082..16784dbf4d 100644
--- a/doc/classes/SkeletonModification2DFABRIK.xml
+++ b/doc/classes/SkeletonModification2DFABRIK.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="SkeletonModification2DFABRIK" inherits="SkeletonModification2D" is_experimental="true" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd">
+<class name="SkeletonModification2DFABRIK" inherits="SkeletonModification2D" experimental="" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd">
<brief_description>
A modification that uses FABRIK to manipulate a series of [Bone2D] nodes to reach a target.
</brief_description>
diff --git a/doc/classes/SkeletonModification2DJiggle.xml b/doc/classes/SkeletonModification2DJiggle.xml
index 7683d29d1c..4a09806b82 100644
--- a/doc/classes/SkeletonModification2DJiggle.xml
+++ b/doc/classes/SkeletonModification2DJiggle.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="SkeletonModification2DJiggle" inherits="SkeletonModification2D" is_experimental="true" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd">
+<class name="SkeletonModification2DJiggle" inherits="SkeletonModification2D" experimental="" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd">
<brief_description>
A modification that jiggles [Bone2D] nodes as they move towards a target.
</brief_description>
diff --git a/doc/classes/SkeletonModification2DLookAt.xml b/doc/classes/SkeletonModification2DLookAt.xml
index 797722eb86..232104f6ac 100644
--- a/doc/classes/SkeletonModification2DLookAt.xml
+++ b/doc/classes/SkeletonModification2DLookAt.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="SkeletonModification2DLookAt" inherits="SkeletonModification2D" is_experimental="true" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd">
+<class name="SkeletonModification2DLookAt" inherits="SkeletonModification2D" experimental="" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd">
<brief_description>
A modification that rotates a [Bone2D] node to look at a target.
</brief_description>
diff --git a/doc/classes/SkeletonModification2DPhysicalBones.xml b/doc/classes/SkeletonModification2DPhysicalBones.xml
index 930f201ad5..163fab892c 100644
--- a/doc/classes/SkeletonModification2DPhysicalBones.xml
+++ b/doc/classes/SkeletonModification2DPhysicalBones.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="SkeletonModification2DPhysicalBones" inherits="SkeletonModification2D" is_experimental="true" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd">
+<class name="SkeletonModification2DPhysicalBones" inherits="SkeletonModification2D" experimental="" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd">
<brief_description>
A modification that applies the transforms of [PhysicalBone2D] nodes to [Bone2D] nodes.
</brief_description>
diff --git a/doc/classes/SkeletonModification2DStackHolder.xml b/doc/classes/SkeletonModification2DStackHolder.xml
index 60fba86d32..5b9f6f270a 100644
--- a/doc/classes/SkeletonModification2DStackHolder.xml
+++ b/doc/classes/SkeletonModification2DStackHolder.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="SkeletonModification2DStackHolder" inherits="SkeletonModification2D" is_experimental="true" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd">
+<class name="SkeletonModification2DStackHolder" inherits="SkeletonModification2D" experimental="" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd">
<brief_description>
A modification that holds and executes a [SkeletonModificationStack2D].
</brief_description>
diff --git a/doc/classes/SkeletonModification2DTwoBoneIK.xml b/doc/classes/SkeletonModification2DTwoBoneIK.xml
index 2206aa5719..1c7bb32f4a 100644
--- a/doc/classes/SkeletonModification2DTwoBoneIK.xml
+++ b/doc/classes/SkeletonModification2DTwoBoneIK.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="SkeletonModification2DTwoBoneIK" inherits="SkeletonModification2D" is_experimental="true" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd">
+<class name="SkeletonModification2DTwoBoneIK" inherits="SkeletonModification2D" experimental="" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd">
<brief_description>
A modification that rotates two bones using the law of cosines to reach the target.
</brief_description>
diff --git a/doc/classes/SkeletonModificationStack2D.xml b/doc/classes/SkeletonModificationStack2D.xml
index 391771d1d3..a006f727ee 100644
--- a/doc/classes/SkeletonModificationStack2D.xml
+++ b/doc/classes/SkeletonModificationStack2D.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="SkeletonModificationStack2D" inherits="Resource" is_experimental="true" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd">
+<class name="SkeletonModificationStack2D" inherits="Resource" experimental="" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd">
<brief_description>
A resource that holds a stack of [SkeletonModification2D]s.
</brief_description>
diff --git a/doc/classes/StreamPeerGZIP.xml b/doc/classes/StreamPeerGZIP.xml
index fc22f72df9..e3f8441d19 100644
--- a/doc/classes/StreamPeerGZIP.xml
+++ b/doc/classes/StreamPeerGZIP.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="StreamPeerGZIP" inherits="StreamPeer" is_experimental="true" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd">
+<class name="StreamPeerGZIP" inherits="StreamPeer" experimental="" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd">
<brief_description>
A stream peer that handles GZIP and deflate compression/decompression.
</brief_description>
diff --git a/doc/classes/SubViewportContainer.xml b/doc/classes/SubViewportContainer.xml
index e47e27c0ce..b7d097cc91 100644
--- a/doc/classes/SubViewportContainer.xml
+++ b/doc/classes/SubViewportContainer.xml
@@ -11,7 +11,7 @@
<tutorials>
</tutorials>
<methods>
- <method name="_propagate_input_event" qualifiers="virtual const" is_experimental="true">
+ <method name="_propagate_input_event" qualifiers="virtual const" experimental="">
<return type="bool" />
<param index="0" name="event" type="InputEvent" />
<description>
diff --git a/doc/classes/SurfaceTool.xml b/doc/classes/SurfaceTool.xml
index 32c5f8dff7..6df5a4d18e 100644
--- a/doc/classes/SurfaceTool.xml
+++ b/doc/classes/SurfaceTool.xml
@@ -119,13 +119,12 @@
Removes the index array by expanding the vertex array.
</description>
</method>
- <method name="generate_lod" is_deprecated="true">
+ <method name="generate_lod" deprecated="Unused internally and fails to preserve normals or UVs. Consider using [method ImporterMesh.generate_lods] instead.">
<return type="PackedInt32Array" />
<param index="0" name="nd_threshold" type="float" />
<param index="1" name="target_index_count" type="int" default="3" />
<description>
Generates a LOD for a given [param nd_threshold] in linear units (square root of quadric error metric), using at most [param target_index_count] indices.
- [i]Deprecated.[/i] Unused internally and fails to preserve normals or UVs. Consider using [method ImporterMesh.generate_lods] instead.
</description>
</method>
<method name="generate_normals">
diff --git a/doc/classes/TextureRect.xml b/doc/classes/TextureRect.xml
index d5f60839b9..73fbbb783e 100644
--- a/doc/classes/TextureRect.xml
+++ b/doc/classes/TextureRect.xml
@@ -10,7 +10,7 @@
<link title="3D Voxel Demo">https://godotengine.org/asset-library/asset/676</link>
</tutorials>
<members>
- <member name="expand_mode" type="int" setter="set_expand_mode" getter="get_expand_mode" enum="TextureRect.ExpandMode" default="0" is_experimental="true">
+ <member name="expand_mode" type="int" setter="set_expand_mode" getter="get_expand_mode" enum="TextureRect.ExpandMode" default="0" experimental="">
Defines how minimum size is determined based on the texture's size. See [enum ExpandMode] for options.
[b]Note:[/b] Using [constant EXPAND_FIT_WIDTH], [constant EXPAND_FIT_WIDTH_PROPORTIONAL], [constant EXPAND_FIT_HEIGHT] or [constant EXPAND_FIT_HEIGHT_PROPORTIONAL] may result in unstable behavior in some containers. This functionality is being re-evaluated and will change in the future.
</member>
diff --git a/doc/classes/TileMap.xml b/doc/classes/TileMap.xml
index 695ffca1a3..e1e16e86a7 100644
--- a/doc/classes/TileMap.xml
+++ b/doc/classes/TileMap.xml
@@ -76,11 +76,10 @@
Clears cells that do not exist in the tileset.
</description>
</method>
- <method name="force_update" is_deprecated="true">
+ <method name="force_update" deprecated="Use [method notify_runtime_tile_data_update] and/or [method update_internals] instead.">
<return type="void" />
<param index="0" name="layer" type="int" default="-1" />
<description>
- [i]Deprecated.[/i] See [method notify_runtime_tile_data_update] and [method update_internals].
</description>
</method>
<method name="get_cell_alternative_tile" qualifiers="const">
@@ -196,7 +195,7 @@
Returns the number of layers in the TileMap.
</description>
</method>
- <method name="get_navigation_map" qualifiers="const" is_deprecated="true">
+ <method name="get_navigation_map" qualifiers="const" deprecated="">
<return type="RID" />
<param index="0" name="layer" type="int" />
<description>
@@ -445,7 +444,7 @@
If [param layer] is negative, the layers are accessed from the last one.
</description>
</method>
- <method name="set_navigation_map" is_deprecated="true">
+ <method name="set_navigation_map" deprecated="">
<return type="void" />
<param index="0" name="layer" type="int" />
<param index="1" name="map" type="RID" />
diff --git a/doc/classes/TreeItem.xml b/doc/classes/TreeItem.xml
index 66a42d4bb4..b79a8cbdb4 100644
--- a/doc/classes/TreeItem.xml
+++ b/doc/classes/TreeItem.xml
@@ -568,7 +568,7 @@
Sets the given column's custom color.
</description>
</method>
- <method name="set_custom_draw" is_deprecated="true">
+ <method name="set_custom_draw" deprecated="Use [method TreeItem.set_custom_draw_callback] instead.">
<return type="void" />
<param index="0" name="column" type="int" />
<param index="1" name="object" type="Object" />
@@ -576,7 +576,6 @@
<description>
Sets the given column's custom draw callback to [param callback] method on [param object].
The [param callback] should accept two arguments: the [TreeItem] that is drawn and its position and size as a [Rect2].
- [i]Deprecated.[/i] Use [method TreeItem.set_custom_draw_callback] instead.
</description>
</method>
<method name="set_custom_draw_callback">
diff --git a/doc/classes/Viewport.xml b/doc/classes/Viewport.xml
index 6d8ada9370..711f6eadf8 100644
--- a/doc/classes/Viewport.xml
+++ b/doc/classes/Viewport.xml
@@ -187,7 +187,7 @@
Helper method which calls the [code]set_text()[/code] method on the currently focused [Control], provided that it is defined (e.g. if the focused Control is [Button] or [LineEdit]).
</description>
</method>
- <method name="push_unhandled_input" is_deprecated="true">
+ <method name="push_unhandled_input" deprecated="Use [method push_input] instead.">
<return type="void" />
<param index="0" name="event" type="InputEvent" />
<param index="1" name="in_local_coords" type="bool" default="false" />
@@ -202,7 +202,6 @@
If an earlier method marks the input as handled via [method set_input_as_handled], any later method in this list will not be called.
If none of the methods handle the event and [member physics_object_picking] is [code]true[/code], the event is used for physics object picking.
[b]Note:[/b] This method doesn't propagate input events to embedded [Window]s or [SubViewport]s.
- [i]Deprecated.[/i] Use [method push_input] instead.
</description>
</method>
<method name="set_canvas_cull_mask_bit">
diff --git a/doc/classes/Window.xml b/doc/classes/Window.xml
index ab14f64aa1..57d26bf384 100644
--- a/doc/classes/Window.xml
+++ b/doc/classes/Window.xml
@@ -357,11 +357,10 @@
Centers a native window on the current screen and an embedded window on its embedder [Viewport].
</description>
</method>
- <method name="move_to_foreground" is_deprecated="true">
+ <method name="move_to_foreground" deprecated="Use [method Window.grab_focus] instead.">
<return type="void" />
<description>
Moves the [Window] on top of other windows and focuses it.
- [i]Deprecated.[/i] Use [method Window.grab_focus] instead.
</description>
</method>
<method name="popup">
diff --git a/doc/classes/XRInterface.xml b/doc/classes/XRInterface.xml
index 6fb43d77d9..5276e05379 100644
--- a/doc/classes/XRInterface.xml
+++ b/doc/classes/XRInterface.xml
@@ -102,18 +102,16 @@
Is [code]true[/code] if this interface has been initialized.
</description>
</method>
- <method name="is_passthrough_enabled" is_deprecated="true">
+ <method name="is_passthrough_enabled" deprecated="Check if [member environment_blend_mode] is [constant XRInterface.XR_ENV_BLEND_MODE_ALPHA_BLEND], instead.">
<return type="bool" />
<description>
Is [code]true[/code] if passthrough is enabled.
- [i]Deprecated.[/i] Check if [member environment_blend_mode] is [constant XRInterface.XR_ENV_BLEND_MODE_ALPHA_BLEND], instead.
</description>
</method>
- <method name="is_passthrough_supported" is_deprecated="true">
+ <method name="is_passthrough_supported" deprecated="Check that [constant XRInterface.XR_ENV_BLEND_MODE_ALPHA_BLEND] is supported using [method get_supported_environment_blend_modes], instead.">
<return type="bool" />
<description>
Is [code]true[/code] if this interface supports passthrough.
- [i]Deprecated.[/i] Check that [constant XRInterface.XR_ENV_BLEND_MODE_ALPHA_BLEND] is supported using [method get_supported_environment_blend_modes], instead.
</description>
</method>
<method name="set_environment_blend_mode">
@@ -146,19 +144,17 @@
[b]Note:[/b] 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.
</description>
</method>
- <method name="start_passthrough" is_deprecated="true">
+ <method name="start_passthrough" deprecated="Set the [member environment_blend_mode] to [constant XRInterface.XR_ENV_BLEND_MODE_ALPHA_BLEND], instead.">
<return type="bool" />
<description>
Starts passthrough, will return [code]false[/code] if passthrough couldn't be started.
[b]Note:[/b] The viewport used for XR must have a transparent background, otherwise passthrough may not properly render.
- [i]Deprecated.[/i] Set the [member environment_blend_mode] to [constant XRInterface.XR_ENV_BLEND_MODE_ALPHA_BLEND], instead.
</description>
</method>
- <method name="stop_passthrough" is_deprecated="true">
+ <method name="stop_passthrough" deprecated="Set the [member environment_blend_mode] to [constant XRInterface.XR_ENV_BLEND_MODE_OPAQUE], instead.">
<return type="void" />
<description>
Stops passthrough.
- [i]Deprecated.[/i] Set the [member environment_blend_mode] to [constant XRInterface.XR_ENV_BLEND_MODE_OPAQUE], instead.
</description>
</method>
<method name="supports_play_area_mode">
diff --git a/doc/tools/make_rst.py b/doc/tools/make_rst.py
index 76a665d3c0..e52d863f7d 100755
--- a/doc/tools/make_rst.py
+++ b/doc/tools/make_rst.py
@@ -77,6 +77,15 @@ BASE_STRINGS = [
"There is currently no description for this operator. Please help us by :ref:`contributing one <doc_updating_the_class_reference>`!",
"There is currently no description for this theme property. Please help us by :ref:`contributing one <doc_updating_the_class_reference>`!",
"There are notable differences when using this API with C#. See :ref:`doc_c_sharp_differences` for more information.",
+ "Deprecated:",
+ "Experimental:",
+ "This signal may be changed or removed in future versions.",
+ "This constant may be changed or removed in future versions.",
+ "This property may be changed or removed in future versions.",
+ "This constructor may be changed or removed in future versions.",
+ "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.",
]
strings_l10n: Dict[str, str] = {}
@@ -158,6 +167,9 @@ class State:
if inherits is not None:
class_def.inherits = inherits
+ class_def.deprecated = class_root.get("deprecated")
+ class_def.experimental = class_root.get("experimental")
+
brief_desc = class_root.find("brief_description")
if brief_desc is not None and brief_desc.text:
class_def.brief_description = brief_desc.text
@@ -191,6 +203,8 @@ class State:
property_def = PropertyDef(
property_name, type_name, setter, getter, property.text, default_value, overrides
)
+ property_def.deprecated = property.get("deprecated")
+ property_def.experimental = property.get("experimental")
class_def.properties[property_name] = property_def
constructors = class_root.find("constructors")
@@ -216,6 +230,8 @@ class State:
method_def = MethodDef(method_name, return_type, params, method_desc, qualifiers)
method_def.definition_name = "constructor"
+ method_def.deprecated = constructor.get("deprecated")
+ method_def.experimental = constructor.get("experimental")
if method_name not in class_def.constructors:
class_def.constructors[method_name] = []
@@ -244,6 +260,8 @@ class State:
method_desc = desc_element.text
method_def = MethodDef(method_name, return_type, params, method_desc, qualifiers)
+ method_def.deprecated = method.get("deprecated")
+ method_def.experimental = method.get("experimental")
if method_name not in class_def.methods:
class_def.methods[method_name] = []
@@ -273,6 +291,8 @@ class State:
method_def = MethodDef(method_name, return_type, params, method_desc, qualifiers)
method_def.definition_name = "operator"
+ method_def.deprecated = operator.get("deprecated")
+ method_def.experimental = operator.get("experimental")
if method_name not in class_def.operators:
class_def.operators[method_name] = []
@@ -288,6 +308,8 @@ class State:
enum = constant.get("enum")
is_bitfield = constant.get("is_bitfield") == "true"
constant_def = ConstantDef(constant_name, value, constant.text, is_bitfield)
+ constant_def.deprecated = constant.get("deprecated")
+ constant_def.experimental = constant.get("experimental")
if enum is None:
if constant_name in class_def.constants:
print_error(f'{class_name}.xml: Duplicate constant "{constant_name}".', self)
@@ -345,6 +367,8 @@ class State:
signal_desc = desc_element.text
signal_def = SignalDef(signal_name, params, signal_desc)
+ signal_def.deprecated = signal.get("deprecated")
+ signal_def.experimental = signal.get("experimental")
class_def.signals[signal_name] = signal_def
theme_items = class_root.find("theme_items")
@@ -357,7 +381,7 @@ class State:
theme_item_id = "{}_{}".format(theme_item_data_name, theme_item_name)
if theme_item_id in class_def.theme_items:
print_error(
- f'{class_name}.xml: Duplicate theme item "{theme_item_name}" of type "{theme_item_data_name}".',
+ f'{class_name}.xml: Duplicate theme property "{theme_item_name}" of type "{theme_item_data_name}".',
self,
)
continue
@@ -447,6 +471,8 @@ class DefinitionBase:
) -> None:
self.definition_name = definition_name
self.name = name
+ self.deprecated: Optional[str] = None
+ self.experimental: Optional[str] = None
class PropertyDef(DefinitionBase):
@@ -540,7 +566,7 @@ class ThemeItemDef(DefinitionBase):
def __init__(
self, name: str, type_name: TypeName, data_name: str, text: Optional[str], default_value: Optional[str]
) -> None:
- super().__init__("theme item", name)
+ super().__init__("theme property", name)
self.type_name = type_name
self.data_name = data_name
@@ -892,6 +918,8 @@ def make_rst_class(class_def: ClassDef, state: State, dry_run: bool, output_dir:
f.write(f".. _class_{class_name}:\n\n")
f.write(make_heading(class_name, "=", False))
+ f.write(make_deprecated_experimental(class_def, state))
+
### INHERITANCE TREE ###
# Ascendants
@@ -1066,6 +1094,8 @@ def make_rst_class(class_def: ClassDef, state: State, dry_run: bool, output_dir:
# Add signal description, or a call to action if it's missing.
+ f.write(make_deprecated_experimental(signal, state))
+
if signal.description is not None and signal.description.strip() != "":
f.write(f"{format_text_block(signal.description.strip(), signal, state)}\n\n")
else:
@@ -1111,6 +1141,8 @@ def make_rst_class(class_def: ClassDef, state: State, dry_run: bool, output_dir:
# Add enum constant description.
+ f.write(make_deprecated_experimental(value, state))
+
if value.text is not None and value.text.strip() != "":
f.write(f"{format_text_block(value.text.strip(), value, state)}")
else:
@@ -1140,7 +1172,9 @@ def make_rst_class(class_def: ClassDef, state: State, dry_run: bool, output_dir:
f.write(f"**{constant.name}** = ``{constant.value}``\n\n")
- # Add enum constant description.
+ # Add constant description.
+
+ f.write(make_deprecated_experimental(constant, state))
if constant.text is not None and constant.text.strip() != "":
f.write(f"{format_text_block(constant.text.strip(), constant, state)}")
@@ -1236,6 +1270,8 @@ def make_rst_class(class_def: ClassDef, state: State, dry_run: bool, output_dir:
# Add property description, or a call to action if it's missing.
+ f.write(make_deprecated_experimental(property_def, state))
+
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")
else:
@@ -1274,6 +1310,8 @@ def make_rst_class(class_def: ClassDef, state: State, dry_run: bool, output_dir:
# Add constructor description, or a call to action if it's missing.
+ f.write(make_deprecated_experimental(m, state))
+
if m.description is not None and m.description.strip() != "":
f.write(f"{format_text_block(m.description.strip(), m, state)}\n\n")
else:
@@ -1315,6 +1353,8 @@ def make_rst_class(class_def: ClassDef, state: State, dry_run: bool, output_dir:
# Add method description, or a call to action if it's missing.
+ f.write(make_deprecated_experimental(m, state))
+
if m.description is not None and m.description.strip() != "":
f.write(f"{format_text_block(m.description.strip(), m, state)}\n\n")
else:
@@ -1355,6 +1395,8 @@ def make_rst_class(class_def: ClassDef, state: State, dry_run: bool, output_dir:
# Add operator description, or a call to action if it's missing.
+ f.write(make_deprecated_experimental(m, state))
+
if m.description is not None and m.description.strip() != "":
f.write(f"{format_text_block(m.description.strip(), m, state)}\n\n")
else:
@@ -1392,6 +1434,8 @@ def make_rst_class(class_def: ClassDef, state: State, dry_run: bool, output_dir:
# Add theme property description, or a call to action if it's missing.
+ f.write(make_deprecated_experimental(theme_item_def, state))
+
if theme_item_def.text is not None and theme_item_def.text.strip() != "":
f.write(f"{format_text_block(theme_item_def.text.strip(), theme_item_def, state)}\n\n")
else:
@@ -1542,6 +1586,28 @@ def make_getter_signature(class_def: ClassDef, property_def: PropertyDef, state:
return f"{ret_type} {signature}"
+def make_deprecated_experimental(item: DefinitionBase, state: State) -> str:
+ result = ""
+
+ if item.deprecated is not None:
+ deprecated_prefix = translate("Deprecated:")
+ if item.deprecated.strip() == "":
+ default_message = translate(f"This {item.definition_name} may be changed or removed in future versions.")
+ result += f"**{deprecated_prefix}** {default_message}\n\n"
+ else:
+ result += f"**{deprecated_prefix}** {format_text_block(item.deprecated.strip(), item, state)}\n\n"
+
+ if item.experimental is not None:
+ experimental_prefix = translate("Experimental:")
+ if item.experimental.strip() == "":
+ default_message = translate(f"This {item.definition_name} may be changed or removed in future versions.")
+ result += f"**{experimental_prefix}** {default_message}\n\n"
+ else:
+ result += f"**{experimental_prefix}** {format_text_block(item.experimental.strip(), item, state)}\n\n"
+
+ return result
+
+
def make_heading(title: str, underline: str, l10n: bool = True) -> str:
if l10n:
new_title = translate(title)
@@ -1965,7 +2031,7 @@ def format_text_block(
elif target_name in class_def.theme_items:
print_warning(
- f'{state.current_class}.xml: Found a code string "{inside_code_text}" that matches the {target_class_name}.{target_name} theme item in {context_name}. {code_warning_if_intended_string}',
+ f'{state.current_class}.xml: Found a code string "{inside_code_text}" that matches the {target_class_name}.{target_name} theme property in {context_name}. {code_warning_if_intended_string}',
state,
)
@@ -2076,7 +2142,7 @@ def format_text_block(
elif tag_state.name == "theme_item":
if target_name not in class_def.theme_items:
print_error(
- f'{state.current_class}.xml: Unresolved theme item reference "{link_target}" in {context_name}.',
+ f'{state.current_class}.xml: Unresolved theme property reference "{link_target}" in {context_name}.',
state,
)
else:
diff --git a/editor/doc_tools.cpp b/editor/doc_tools.cpp
index 18c6c8b69b..ee3e54e9df 100644
--- a/editor/doc_tools.cpp
+++ b/editor/doc_tools.cpp
@@ -87,7 +87,9 @@ void DocTools::merge_from(const DocTools &p_data) {
const DocData::ClassDoc &cf = p_data.class_list[c.name];
c.is_deprecated = cf.is_deprecated;
+ c.deprecated_message = cf.deprecated_message;
c.is_experimental = cf.is_experimental;
+ c.experimental_message = cf.experimental_message;
c.keywords = cf.keywords;
c.description = cf.description;
@@ -139,7 +141,9 @@ void DocTools::merge_from(const DocTools &p_data) {
m.description = mf.description;
m.is_deprecated = mf.is_deprecated;
+ m.deprecated_message = mf.deprecated_message;
m.is_experimental = mf.is_experimental;
+ m.experimental_message = mf.experimental_message;
break;
}
}
@@ -156,7 +160,9 @@ void DocTools::merge_from(const DocTools &p_data) {
m.description = mf.description;
m.is_deprecated = mf.is_deprecated;
+ m.deprecated_message = mf.deprecated_message;
m.is_experimental = mf.is_experimental;
+ m.experimental_message = mf.experimental_message;
m.keywords = mf.keywords;
break;
}
@@ -173,7 +179,9 @@ void DocTools::merge_from(const DocTools &p_data) {
m.description = mf.description;
m.is_deprecated = mf.is_deprecated;
+ m.deprecated_message = mf.deprecated_message;
m.is_experimental = mf.is_experimental;
+ m.experimental_message = mf.experimental_message;
m.keywords = mf.keywords;
break;
}
@@ -190,7 +198,9 @@ void DocTools::merge_from(const DocTools &p_data) {
m.description = mf.description;
m.is_deprecated = mf.is_deprecated;
+ m.deprecated_message = mf.deprecated_message;
m.is_experimental = mf.is_experimental;
+ m.experimental_message = mf.experimental_message;
m.keywords = mf.keywords;
break;
}
@@ -207,7 +217,9 @@ void DocTools::merge_from(const DocTools &p_data) {
m.description = mf.description;
m.is_deprecated = mf.is_deprecated;
+ m.deprecated_message = mf.deprecated_message;
m.is_experimental = mf.is_experimental;
+ m.experimental_message = mf.experimental_message;
m.keywords = mf.keywords;
break;
}
@@ -224,7 +236,9 @@ void DocTools::merge_from(const DocTools &p_data) {
p.description = pf.description;
p.is_deprecated = pf.is_deprecated;
+ p.deprecated_message = pf.deprecated_message;
p.is_experimental = pf.is_experimental;
+ p.experimental_message = pf.experimental_message;
p.keywords = pf.keywords;
break;
}
@@ -290,7 +304,9 @@ void DocTools::merge_from(const DocTools &p_data) {
m.description = mf.description;
m.is_deprecated = mf.is_deprecated;
+ m.deprecated_message = mf.deprecated_message;
m.is_experimental = mf.is_experimental;
+ m.experimental_message = mf.experimental_message;
break;
}
}
@@ -1068,12 +1084,22 @@ static Error _parse_methods(Ref<XMLParser> &parser, Vector<DocData::MethodDoc> &
if (parser->has_attribute("qualifiers")) {
method.qualifiers = parser->get_named_attribute_value("qualifiers");
}
+#ifndef DISABLE_DEPRECATED
if (parser->has_attribute("is_deprecated")) {
method.is_deprecated = parser->get_named_attribute_value("is_deprecated").to_lower() == "true";
}
if (parser->has_attribute("is_experimental")) {
method.is_experimental = parser->get_named_attribute_value("is_experimental").to_lower() == "true";
}
+#endif
+ if (parser->has_attribute("deprecated")) {
+ method.is_deprecated = true;
+ method.deprecated_message = parser->get_named_attribute_value("deprecated");
+ }
+ if (parser->has_attribute("experimental")) {
+ method.is_experimental = true;
+ method.experimental_message = parser->get_named_attribute_value("experimental");
+ }
if (parser->has_attribute("keywords")) {
method.keywords = parser->get_named_attribute_value("keywords");
}
@@ -1216,13 +1242,22 @@ Error DocTools::_load(Ref<XMLParser> parser) {
inheriting[c.inherits].insert(name);
+#ifndef DISABLE_DEPRECATED
if (parser->has_attribute("is_deprecated")) {
c.is_deprecated = parser->get_named_attribute_value("is_deprecated").to_lower() == "true";
}
-
if (parser->has_attribute("is_experimental")) {
c.is_experimental = parser->get_named_attribute_value("is_experimental").to_lower() == "true";
}
+#endif
+ if (parser->has_attribute("deprecated")) {
+ c.is_deprecated = true;
+ c.deprecated_message = parser->get_named_attribute_value("deprecated");
+ }
+ if (parser->has_attribute("experimental")) {
+ c.is_experimental = true;
+ c.experimental_message = parser->get_named_attribute_value("experimental");
+ }
if (parser->has_attribute("keywords")) {
c.keywords = parser->get_named_attribute_value("keywords");
@@ -1304,12 +1339,22 @@ Error DocTools::_load(Ref<XMLParser> parser) {
prop2.is_bitfield = parser->get_named_attribute_value("is_bitfield").to_lower() == "true";
}
}
+#ifndef DISABLE_DEPRECATED
if (parser->has_attribute("is_deprecated")) {
prop2.is_deprecated = parser->get_named_attribute_value("is_deprecated").to_lower() == "true";
}
if (parser->has_attribute("is_experimental")) {
prop2.is_experimental = parser->get_named_attribute_value("is_experimental").to_lower() == "true";
}
+#endif
+ if (parser->has_attribute("deprecated")) {
+ prop2.is_deprecated = true;
+ prop2.deprecated_message = parser->get_named_attribute_value("deprecated");
+ }
+ if (parser->has_attribute("experimental")) {
+ prop2.is_experimental = true;
+ prop2.experimental_message = parser->get_named_attribute_value("experimental");
+ }
if (parser->has_attribute("keywords")) {
prop2.keywords = parser->get_named_attribute_value("keywords");
}
@@ -1380,12 +1425,22 @@ Error DocTools::_load(Ref<XMLParser> parser) {
constant2.is_bitfield = parser->get_named_attribute_value("is_bitfield").to_lower() == "true";
}
}
+#ifndef DISABLE_DEPRECATED
if (parser->has_attribute("is_deprecated")) {
constant2.is_deprecated = parser->get_named_attribute_value("is_deprecated").to_lower() == "true";
}
if (parser->has_attribute("is_experimental")) {
constant2.is_experimental = parser->get_named_attribute_value("is_experimental").to_lower() == "true";
}
+#endif
+ if (parser->has_attribute("deprecated")) {
+ constant2.is_deprecated = true;
+ constant2.deprecated_message = parser->get_named_attribute_value("deprecated");
+ }
+ if (parser->has_attribute("experimental")) {
+ constant2.is_experimental = true;
+ constant2.experimental_message = parser->get_named_attribute_value("experimental");
+ }
if (parser->has_attribute("keywords")) {
constant2.keywords = parser->get_named_attribute_value("keywords");
}
@@ -1438,21 +1493,21 @@ static void _write_method_doc(Ref<FileAccess> f, const String &p_name, Vector<Do
additional_attributes += " qualifiers=\"" + m.qualifiers.xml_escape(true) + "\"";
}
if (m.is_deprecated) {
- additional_attributes += " is_deprecated=\"true\"";
+ additional_attributes += " deprecated=\"" + m.deprecated_message.xml_escape(true) + "\"";
}
if (m.is_experimental) {
- additional_attributes += " is_experimental=\"true\"";
+ additional_attributes += " experimental=\"" + m.experimental_message.xml_escape(true) + "\"";
}
if (!m.keywords.is_empty()) {
additional_attributes += String(" keywords=\"") + m.keywords.xml_escape(true) + "\"";
}
- _write_string(f, 2, "<" + p_name + " name=\"" + m.name.xml_escape() + "\"" + additional_attributes + ">");
+ _write_string(f, 2, "<" + p_name + " name=\"" + m.name.xml_escape(true) + "\"" + additional_attributes + ">");
if (!m.return_type.is_empty()) {
String enum_text;
if (!m.return_enum.is_empty()) {
- enum_text = " enum=\"" + m.return_enum + "\"";
+ enum_text = " enum=\"" + m.return_enum.xml_escape(true) + "\"";
if (m.return_is_bitfield) {
enum_text += " is_bitfield=\"true\"";
}
@@ -1470,16 +1525,16 @@ static void _write_method_doc(Ref<FileAccess> f, const String &p_name, Vector<Do
String enum_text;
if (!a.enumeration.is_empty()) {
- enum_text = " enum=\"" + a.enumeration + "\"";
+ enum_text = " enum=\"" + a.enumeration.xml_escape(true) + "\"";
if (a.is_bitfield) {
enum_text += " is_bitfield=\"true\"";
}
}
if (!a.default_value.is_empty()) {
- _write_string(f, 3, "<param index=\"" + itos(j) + "\" name=\"" + a.name.xml_escape() + "\" type=\"" + a.type.xml_escape(true) + "\"" + enum_text + " default=\"" + a.default_value.xml_escape(true) + "\" />");
+ _write_string(f, 3, "<param index=\"" + itos(j) + "\" name=\"" + a.name.xml_escape(true) + "\" type=\"" + a.type.xml_escape(true) + "\"" + enum_text + " default=\"" + a.default_value.xml_escape(true) + "\" />");
} else {
- _write_string(f, 3, "<param index=\"" + itos(j) + "\" name=\"" + a.name.xml_escape() + "\" type=\"" + a.type.xml_escape(true) + "\"" + enum_text + " />");
+ _write_string(f, 3, "<param index=\"" + itos(j) + "\" name=\"" + a.name.xml_escape(true) + "\" type=\"" + a.type.xml_escape(true) + "\"" + enum_text + " />");
}
}
@@ -1517,10 +1572,10 @@ Error DocTools::save_classes(const String &p_default_path, const HashMap<String,
if (!c.inherits.is_empty()) {
header += " inherits=\"" + c.inherits.xml_escape(true) + "\"";
if (c.is_deprecated) {
- header += " is_deprecated=\"true\"";
+ header += " deprecated=\"" + c.deprecated_message.xml_escape(true) + "\"";
}
if (c.is_experimental) {
- header += " is_experimental=\"true\"";
+ header += " experimental=\"" + c.experimental_message.xml_escape(true) + "\"";
}
}
if (!c.keywords.is_empty()) {
@@ -1548,7 +1603,7 @@ Error DocTools::save_classes(const String &p_default_path, const HashMap<String,
_write_string(f, 1, "<tutorials>");
for (int i = 0; i < c.tutorials.size(); i++) {
DocData::TutorialDoc tutorial = c.tutorials.get(i);
- String title_attribute = (!tutorial.title.is_empty()) ? " title=\"" + _translate_doc_string(tutorial.title).xml_escape() + "\"" : "";
+ String title_attribute = (!tutorial.title.is_empty()) ? " title=\"" + _translate_doc_string(tutorial.title).xml_escape(true) + "\"" : "";
_write_string(f, 2, "<link" + title_attribute + ">" + tutorial.link.xml_escape() + "</link>");
}
_write_string(f, 1, "</tutorials>");
@@ -1565,7 +1620,7 @@ Error DocTools::save_classes(const String &p_default_path, const HashMap<String,
for (int i = 0; i < c.properties.size(); i++) {
String additional_attributes;
if (!c.properties[i].enumeration.is_empty()) {
- additional_attributes += " enum=\"" + c.properties[i].enumeration + "\"";
+ additional_attributes += " enum=\"" + c.properties[i].enumeration.xml_escape(true) + "\"";
if (c.properties[i].is_bitfield) {
additional_attributes += " is_bitfield=\"true\"";
}
@@ -1574,10 +1629,10 @@ Error DocTools::save_classes(const String &p_default_path, const HashMap<String,
additional_attributes += " default=\"" + c.properties[i].default_value.xml_escape(true) + "\"";
}
if (c.properties[i].is_deprecated) {
- additional_attributes += " is_deprecated=\"true\"";
+ additional_attributes += " deprecated=\"" + c.properties[i].deprecated_message.xml_escape(true) + "\"";
}
if (c.properties[i].is_experimental) {
- additional_attributes += " is_experimental=\"true\"";
+ additional_attributes += " experimental=\"" + c.properties[i].experimental_message.xml_escape(true) + "\"";
}
if (!c.properties[i].keywords.is_empty()) {
additional_attributes += String(" keywords=\"") + c.properties[i].keywords.xml_escape(true) + "\"";
@@ -1586,9 +1641,9 @@ Error DocTools::save_classes(const String &p_default_path, const HashMap<String,
const DocData::PropertyDoc &p = c.properties[i];
if (c.properties[i].overridden) {
- _write_string(f, 2, "<member name=\"" + p.name + "\" type=\"" + p.type.xml_escape(true) + "\" setter=\"" + p.setter + "\" getter=\"" + p.getter + "\" overrides=\"" + p.overrides + "\"" + additional_attributes + " />");
+ _write_string(f, 2, "<member name=\"" + p.name.xml_escape(true) + "\" type=\"" + p.type.xml_escape(true) + "\" setter=\"" + p.setter.xml_escape(true) + "\" getter=\"" + p.getter.xml_escape(true) + "\" overrides=\"" + p.overrides.xml_escape(true) + "\"" + additional_attributes + " />");
} else {
- _write_string(f, 2, "<member name=\"" + p.name + "\" type=\"" + p.type.xml_escape(true) + "\" setter=\"" + p.setter + "\" getter=\"" + p.getter + "\"" + additional_attributes + ">");
+ _write_string(f, 2, "<member name=\"" + p.name.xml_escape(true) + "\" type=\"" + p.type.xml_escape(true) + "\" setter=\"" + p.setter.xml_escape(true) + "\" getter=\"" + p.getter.xml_escape(true) + "\"" + additional_attributes + ">");
_write_string(f, 3, _translate_doc_string(p.description).strip_edges().xml_escape());
_write_string(f, 2, "</member>");
}
@@ -1605,10 +1660,10 @@ Error DocTools::save_classes(const String &p_default_path, const HashMap<String,
String additional_attributes;
if (c.constants[i].is_deprecated) {
- additional_attributes += " is_deprecated=\"true\"";
+ additional_attributes += " deprecated=\"" + c.constants[i].deprecated_message.xml_escape(true) + "\"";
}
if (c.constants[i].is_experimental) {
- additional_attributes += " is_experimental=\"true\"";
+ additional_attributes += " experimental=\"" + c.constants[i].experimental_message.xml_escape(true) + "\"";
}
if (!c.constants[i].keywords.is_empty()) {
additional_attributes += String(" keywords=\"") + c.constants[i].keywords.xml_escape(true) + "\"";
@@ -1617,18 +1672,18 @@ Error DocTools::save_classes(const String &p_default_path, const HashMap<String,
if (k.is_value_valid) {
if (!k.enumeration.is_empty()) {
if (k.is_bitfield) {
- _write_string(f, 2, "<constant name=\"" + k.name + "\" value=\"" + k.value.xml_escape(true) + "\" enum=\"" + k.enumeration + "\" is_bitfield=\"true\"" + additional_attributes + ">");
+ _write_string(f, 2, "<constant name=\"" + k.name.xml_escape(true) + "\" value=\"" + k.value.xml_escape(true) + "\" enum=\"" + k.enumeration.xml_escape(true) + "\" is_bitfield=\"true\"" + additional_attributes + ">");
} else {
- _write_string(f, 2, "<constant name=\"" + k.name + "\" value=\"" + k.value.xml_escape(true) + "\" enum=\"" + k.enumeration + "\"" + additional_attributes + ">");
+ _write_string(f, 2, "<constant name=\"" + k.name.xml_escape(true) + "\" value=\"" + k.value.xml_escape(true) + "\" enum=\"" + k.enumeration.xml_escape(true) + "\"" + additional_attributes + ">");
}
} else {
- _write_string(f, 2, "<constant name=\"" + k.name + "\" value=\"" + k.value.xml_escape(true) + "\"" + additional_attributes + ">");
+ _write_string(f, 2, "<constant name=\"" + k.name.xml_escape(true) + "\" value=\"" + k.value.xml_escape(true) + "\"" + additional_attributes + ">");
}
} else {
if (!k.enumeration.is_empty()) {
- _write_string(f, 2, "<constant name=\"" + k.name + "\" value=\"platform-dependent\" enum=\"" + k.enumeration + "\"" + additional_attributes + ">");
+ _write_string(f, 2, "<constant name=\"" + k.name.xml_escape(true) + "\" value=\"platform-dependent\" enum=\"" + k.enumeration.xml_escape(true) + "\"" + additional_attributes + ">");
} else {
- _write_string(f, 2, "<constant name=\"" + k.name + "\" value=\"platform-dependent\"" + additional_attributes + ">");
+ _write_string(f, 2, "<constant name=\"" + k.name.xml_escape(true) + "\" value=\"platform-dependent\"" + additional_attributes + ">");
}
}
_write_string(f, 3, _translate_doc_string(k.description).strip_edges().xml_escape());
@@ -1655,7 +1710,7 @@ Error DocTools::save_classes(const String &p_default_path, const HashMap<String,
additional_attributes += String(" keywords=\"") + ti.keywords.xml_escape(true) + "\"";
}
- _write_string(f, 2, "<theme_item name=\"" + ti.name + "\" data_type=\"" + ti.data_type + "\" type=\"" + ti.type + "\"" + additional_attributes + ">");
+ _write_string(f, 2, "<theme_item name=\"" + ti.name.xml_escape(true) + "\" data_type=\"" + ti.data_type.xml_escape(true) + "\" type=\"" + ti.type.xml_escape(true) + "\"" + additional_attributes + ">");
_write_string(f, 3, _translate_doc_string(ti.description).strip_edges().xml_escape());
diff --git a/editor/editor_help.cpp b/editor/editor_help.cpp
index 7f15eca11d..a31da1bd13 100644
--- a/editor/editor_help.cpp
+++ b/editor/editor_help.cpp
@@ -211,7 +211,7 @@ void EditorHelp::_class_desc_select(const String &p_select) {
emit_signal(SNAME("go_to_help"), "class_name:" + p_select.substr(1, p_select.length()));
return;
} else if (p_select.begins_with("@")) {
- int tag_end = p_select.find(" ");
+ int tag_end = p_select.find_char(' ');
String tag = p_select.substr(1, tag_end - 1);
String link = p_select.substr(tag_end + 1, p_select.length()).lstrip(" ");
@@ -244,7 +244,7 @@ void EditorHelp::_class_desc_select(const String &p_select) {
topic = "class_annotation";
table = &annotation_line;
} else if (tag == "theme_item") {
- topic = "theme_item";
+ topic = "class_theme_item";
table = &theme_property_line;
} else {
return;
@@ -284,7 +284,7 @@ void EditorHelp::_class_desc_select(const String &p_select) {
}
if (link.contains(".")) {
- int class_end = link.find(".");
+ int class_end = link.find_char('.');
emit_signal(SNAME("go_to_help"), topic + ":" + link.substr(0, class_end) + ":" + link.substr(class_end + 1, link.length()));
}
}
@@ -317,8 +317,8 @@ void EditorHelp::_add_type(const String &p_type, const String &p_enum, bool p_is
class_desc->push_color(Color(theme_cache.type_color, 0.5));
class_desc->push_hint(TTR("No return value."));
class_desc->add_text("void");
- class_desc->pop();
- class_desc->pop();
+ class_desc->pop(); // hint
+ class_desc->pop(); // color
return;
}
@@ -345,15 +345,15 @@ void EditorHelp::_add_type(const String &p_type, const String &p_enum, bool p_is
class_desc->push_meta("#Array"); // class
class_desc->add_text("Array");
- class_desc->pop();
+ class_desc->pop(); // meta
class_desc->add_text("[");
} else if (is_bitfield) {
class_desc->push_color(Color(theme_cache.type_color, 0.5));
class_desc->push_hint(TTR("This value is an integer composed as a bitmask of the following flags."));
class_desc->add_text("BitField");
- class_desc->pop();
+ class_desc->pop(); // hint
class_desc->add_text("[");
- class_desc->pop();
+ class_desc->pop(); // color
}
if (is_enum_type) {
@@ -370,10 +370,10 @@ void EditorHelp::_add_type(const String &p_type, const String &p_enum, bool p_is
} else if (is_bitfield) {
class_desc->push_color(Color(theme_cache.type_color, 0.5));
class_desc->add_text("]");
- class_desc->pop();
+ class_desc->pop(); // color
}
}
- class_desc->pop();
+ class_desc->pop(); // color
}
void EditorHelp::_add_type_icon(const String &p_type, int p_size, const String &p_fallback) {
@@ -405,23 +405,60 @@ String EditorHelp::_fix_constant(const String &p_constant) const {
return p_constant;
}
-// Macros for assigning the deprecation/experimental information to class members
+// Macros for assigning the deprecated/experimental marks to class members in overview.
+
#define DEPRECATED_DOC_TAG \
+ class_desc->push_font(theme_cache.doc_bold_font); \
class_desc->push_color(get_theme_color(SNAME("error_color"), EditorStringName(Editor))); \
Ref<Texture2D> error_icon = get_editor_theme_icon(SNAME("StatusError")); \
- class_desc->add_text(" "); \
class_desc->add_image(error_icon, error_icon->get_width(), error_icon->get_height()); \
- class_desc->add_text(" (" + TTR("Deprecated") + ")"); \
+ class_desc->add_text(String::chr(160) + TTR("Deprecated")); \
+ class_desc->pop(); \
class_desc->pop();
#define EXPERIMENTAL_DOC_TAG \
+ class_desc->push_font(theme_cache.doc_bold_font); \
class_desc->push_color(get_theme_color(SNAME("warning_color"), EditorStringName(Editor))); \
Ref<Texture2D> warning_icon = get_editor_theme_icon(SNAME("NodeWarning")); \
- class_desc->add_text(" "); \
class_desc->add_image(warning_icon, warning_icon->get_width(), warning_icon->get_height()); \
- class_desc->add_text(" (" + TTR("Experimental") + ")"); \
+ class_desc->add_text(String::chr(160) + TTR("Experimental")); \
+ class_desc->pop(); \
class_desc->pop();
+// Macros for displaying the deprecated/experimental info in class member descriptions.
+
+#define DEPRECATED_DOC_MSG(m_message, m_default_message) \
+ Ref<Texture2D> error_icon = get_editor_theme_icon(SNAME("StatusError")); \
+ class_desc->add_image(error_icon, error_icon->get_width(), error_icon->get_height()); \
+ class_desc->add_text(" "); \
+ class_desc->push_color(get_theme_color(SNAME("error_color"), EditorStringName(Editor))); \
+ class_desc->push_font(theme_cache.doc_bold_font); \
+ class_desc->add_text(TTR("Deprecated:")); \
+ class_desc->pop(); \
+ class_desc->pop(); \
+ class_desc->add_text(" "); \
+ if ((m_message).is_empty()) { \
+ class_desc->add_text(m_default_message); \
+ } else { \
+ _add_text(m_message); \
+ }
+
+#define EXPERIMENTAL_DOC_MSG(m_message, m_default_message) \
+ Ref<Texture2D> warning_icon = get_editor_theme_icon(SNAME("NodeWarning")); \
+ class_desc->add_image(warning_icon, warning_icon->get_width(), warning_icon->get_height()); \
+ class_desc->add_text(" "); \
+ class_desc->push_color(get_theme_color(SNAME("warning_color"), EditorStringName(Editor))); \
+ class_desc->push_font(theme_cache.doc_bold_font); \
+ class_desc->add_text(TTR("Experimental:")); \
+ class_desc->pop(); \
+ class_desc->pop(); \
+ class_desc->add_text(" "); \
+ if ((m_message).is_empty()) { \
+ class_desc->add_text(m_default_message); \
+ } else { \
+ _add_text(m_message); \
+ }
+
void EditorHelp::_add_method(const DocData::MethodDoc &p_method, bool p_overview, bool p_override) {
if (p_override) {
method_line[p_method.name] = class_desc->get_paragraph_count() - 2; // Gets overridden if description.
@@ -439,7 +476,7 @@ void EditorHelp::_add_method(const DocData::MethodDoc &p_method, bool p_overview
_add_type(p_method.return_type, p_method.return_enum, p_method.return_is_bitfield);
if (p_overview) {
- class_desc->pop(); // align
+ class_desc->pop(); // paragraph
class_desc->pop(); // cell
class_desc->push_cell();
} else {
@@ -451,8 +488,8 @@ void EditorHelp::_add_method(const DocData::MethodDoc &p_method, bool p_overview
}
class_desc->push_color(theme_cache.headline_color);
- _add_text(p_method.name);
- class_desc->pop();
+ class_desc->add_text(p_method.name);
+ class_desc->pop(); // color
if (p_overview && !p_method.description.strip_edges().is_empty()) {
class_desc->pop(); // meta
@@ -460,7 +497,7 @@ void EditorHelp::_add_method(const DocData::MethodDoc &p_method, bool p_overview
class_desc->push_color(theme_cache.symbol_color);
class_desc->add_text("(");
- class_desc->pop();
+ class_desc->pop(); // color
for (int j = 0; j < p_method.arguments.size(); j++) {
class_desc->push_color(theme_cache.text_color);
@@ -468,35 +505,38 @@ void EditorHelp::_add_method(const DocData::MethodDoc &p_method, bool p_overview
class_desc->add_text(", ");
}
- _add_text(p_method.arguments[j].name);
+ class_desc->add_text(p_method.arguments[j].name);
class_desc->add_text(": ");
_add_type(p_method.arguments[j].type, p_method.arguments[j].enumeration, p_method.arguments[j].is_bitfield);
+
if (!p_method.arguments[j].default_value.is_empty()) {
class_desc->push_color(theme_cache.symbol_color);
class_desc->add_text(" = ");
- class_desc->pop();
+ class_desc->pop(); // color
+
class_desc->push_color(theme_cache.value_color);
class_desc->add_text(_fix_constant(p_method.arguments[j].default_value));
- class_desc->pop();
+ class_desc->pop(); // color
}
- class_desc->pop();
+ class_desc->pop(); // color
}
if (is_vararg) {
class_desc->push_color(theme_cache.text_color);
- if (p_method.arguments.size()) {
+ if (!p_method.arguments.is_empty()) {
class_desc->add_text(", ");
}
+ class_desc->pop(); // color
+
class_desc->push_color(theme_cache.symbol_color);
class_desc->add_text("...");
- class_desc->pop();
- class_desc->pop();
+ class_desc->pop(); // color
}
class_desc->push_color(theme_cache.symbol_color);
class_desc->add_text(")");
- class_desc->pop();
+ class_desc->pop(); // color
if (!p_method.qualifiers.is_empty()) {
class_desc->push_color(theme_cache.qualifier_color);
@@ -517,23 +557,26 @@ void EditorHelp::_add_method(const DocData::MethodDoc &p_method, bool p_overview
if (!hint.is_empty()) {
class_desc->push_hint(hint);
class_desc->add_text(qualifier);
- class_desc->pop();
+ class_desc->pop(); // hint
} else {
class_desc->add_text(qualifier);
}
}
- class_desc->pop();
- }
- if (p_method.is_deprecated) {
- DEPRECATED_DOC_TAG;
- }
-
- if (p_method.is_experimental) {
- EXPERIMENTAL_DOC_TAG;
+ class_desc->pop(); // color
}
if (p_overview) {
+ if (p_method.is_deprecated) {
+ class_desc->add_text(" ");
+ DEPRECATED_DOC_TAG;
+ }
+
+ if (p_method.is_experimental) {
+ class_desc->add_text(" ");
+ EXPERIMENTAL_DOC_TAG;
+ }
+
class_desc->pop(); // cell
}
}
@@ -549,20 +592,20 @@ void EditorHelp::_push_normal_font() {
}
void EditorHelp::_pop_normal_font() {
- class_desc->pop();
- class_desc->pop();
+ class_desc->pop(); // font_size
+ class_desc->pop(); // font
}
void EditorHelp::_push_title_font() {
- class_desc->push_color(theme_cache.title_color);
class_desc->push_font(theme_cache.doc_title_font);
class_desc->push_font_size(theme_cache.doc_title_font_size);
+ class_desc->push_color(theme_cache.title_color);
}
void EditorHelp::_pop_title_font() {
- class_desc->pop();
- class_desc->pop();
- class_desc->pop();
+ class_desc->pop(); // color
+ class_desc->pop(); // font_size
+ class_desc->pop(); // font
}
void EditorHelp::_push_code_font() {
@@ -571,8 +614,8 @@ void EditorHelp::_push_code_font() {
}
void EditorHelp::_pop_code_font() {
- class_desc->pop();
- class_desc->pop();
+ class_desc->pop(); // font_size
+ class_desc->pop(); // font
}
Error EditorHelp::_goto_desc(const String &p_class) {
@@ -596,11 +639,27 @@ Error EditorHelp::_goto_desc(const String &p_class) {
return OK;
}
-void EditorHelp::_update_method_list(const Vector<DocData::MethodDoc> p_methods, MethodType p_method_type) {
+void EditorHelp::_update_method_list(MethodType p_method_type, const Vector<DocData::MethodDoc> &p_methods) {
+ class_desc->add_newline();
+ class_desc->add_newline();
+
+ static const char *titles_by_type[METHOD_TYPE_MAX] = {
+ TTRC("Methods"),
+ TTRC("Constructors"),
+ TTRC("Operators"),
+ };
+ const String title = TTRGET(titles_by_type[p_method_type]);
+
+ section_line.push_back(Pair<String, int>(title, class_desc->get_paragraph_count() - 2));
+ _push_title_font();
+ class_desc->add_text(title);
+ _pop_title_font();
+
+ class_desc->add_newline();
class_desc->add_newline();
- _push_code_font();
class_desc->push_indent(1);
+ _push_code_font();
class_desc->push_table(2);
class_desc->set_table_column_expand(1, true);
@@ -650,18 +709,30 @@ void EditorHelp::_update_method_list(const Vector<DocData::MethodDoc> p_methods,
}
class_desc->pop(); // table
- class_desc->pop();
_pop_code_font();
-
- class_desc->add_newline();
- class_desc->add_newline();
+ class_desc->pop(); // indent
}
-void EditorHelp::_update_method_descriptions(const DocData::ClassDoc p_classdoc, const Vector<DocData::MethodDoc> p_methods, MethodType p_method_type) {
- String link_color_text = theme_cache.title_color.to_html(false);
+void EditorHelp::_update_method_descriptions(const DocData::ClassDoc &p_classdoc, MethodType p_method_type, const Vector<DocData::MethodDoc> &p_methods) {
+#define DTR_DOC(m_string) (p_classdoc.is_script_doc ? (m_string) : DTR(m_string))
class_desc->add_newline();
class_desc->add_newline();
+ class_desc->add_newline();
+
+ static const char *titles_by_type[METHOD_TYPE_MAX] = {
+ TTRC("Method Descriptions"),
+ TTRC("Constructor Descriptions"),
+ TTRC("Operator Descriptions"),
+ };
+ const String title = TTRGET(titles_by_type[p_method_type]);
+
+ section_line.push_back(Pair<String, int>(title, class_desc->get_paragraph_count() - 2));
+ _push_title_font();
+ class_desc->add_text(title);
+ _pop_title_font();
+
+ String link_color_text = theme_cache.title_color.to_html(false);
for (int pass = 0; pass < 2; pass++) {
Vector<DocData::MethodDoc> methods_filtered;
@@ -674,6 +745,10 @@ void EditorHelp::_update_method_descriptions(const DocData::ClassDoc p_classdoc,
}
for (int i = 0; i < methods_filtered.size(); i++) {
+ class_desc->add_newline();
+ class_desc->add_newline();
+ class_desc->add_newline();
+
_push_code_font();
// For constructors always point to the first one.
_add_method(methods_filtered[i], false, (p_method_type != METHOD_TYPE_CONSTRUCTOR || i == 0));
@@ -682,17 +757,43 @@ void EditorHelp::_update_method_descriptions(const DocData::ClassDoc p_classdoc,
class_desc->add_newline();
class_desc->add_newline();
- class_desc->push_color(theme_cache.text_color);
- _push_normal_font();
class_desc->push_indent(1);
- if (methods_filtered[i].errors_returned.size()) {
- class_desc->append_text(TTR("Error codes returned:"));
+ _push_normal_font();
+ class_desc->push_color(theme_cache.text_color);
+
+ if (methods_filtered[i].is_deprecated) {
+ static const char *messages_by_type[METHOD_TYPE_MAX] = {
+ TTRC("This method may be changed or removed in future versions."),
+ TTRC("This constructor may be changed or removed in future versions."),
+ TTRC("This operator may be changed or removed in future versions."),
+ };
+ DEPRECATED_DOC_MSG(DTR_DOC(methods_filtered[i].deprecated_message), TTRGET(messages_by_type[p_method_type]));
+
+ class_desc->add_newline();
+ class_desc->add_newline();
+ }
+
+ if (methods_filtered[i].is_experimental) {
+ static const char *messages_by_type[METHOD_TYPE_MAX] = {
+ TTRC("This method may be changed or removed in future versions."),
+ TTRC("This constructor may be changed or removed in future versions."),
+ TTRC("This operator may be changed or removed in future versions."),
+ };
+ EXPERIMENTAL_DOC_MSG(DTR_DOC(methods_filtered[i].experimental_message), TTRGET(messages_by_type[p_method_type]));
+
+ class_desc->add_newline();
+ class_desc->add_newline();
+ }
+
+ if (!methods_filtered[i].errors_returned.is_empty()) {
+ class_desc->add_text(TTR("Error codes returned:"));
class_desc->add_newline();
class_desc->push_list(0, RichTextLabel::LIST_DOTS, false);
for (int j = 0; j < methods_filtered[i].errors_returned.size(); j++) {
if (j > 0) {
class_desc->add_newline();
}
+
int val = methods_filtered[i].errors_returned[j];
String text = itos(val);
for (int k = 0; k < CoreConstants::get_global_constant_count(); k++) {
@@ -702,21 +803,20 @@ void EditorHelp::_update_method_descriptions(const DocData::ClassDoc p_classdoc,
}
}
- class_desc->push_bold();
- class_desc->append_text(text);
- class_desc->pop();
+ class_desc->push_font(theme_cache.doc_bold_font);
+ class_desc->add_text(text);
+ class_desc->pop(); // font
}
- class_desc->pop();
+ class_desc->pop(); // list
+
class_desc->add_newline();
class_desc->add_newline();
}
- if (!methods_filtered[i].description.strip_edges().is_empty()) {
- _add_text(DTR(methods_filtered[i].description));
- } else {
- class_desc->add_image(get_editor_theme_icon(SNAME("Error")));
- class_desc->add_text(" ");
- class_desc->push_color(theme_cache.comment_color);
+ const String descr = DTR_DOC(methods_filtered[i].description).strip_edges();
+ if (!descr.is_empty()) {
+ _add_text(descr);
+ } else {
String message;
if (p_classdoc.is_script_doc) {
static const char *messages_by_type[METHOD_TYPE_MAX] = {
@@ -733,19 +833,21 @@ void EditorHelp::_update_method_descriptions(const DocData::ClassDoc p_classdoc,
};
message = TTRGET(messages_by_type[p_method_type]).replace("$url", CONTRIBUTE_URL).replace("$color", link_color_text);
}
+
+ class_desc->add_image(get_editor_theme_icon(SNAME("Error")));
+ class_desc->add_text(" ");
+ class_desc->push_color(theme_cache.comment_color);
class_desc->append_text(message);
- class_desc->pop();
+ class_desc->pop(); // color
}
- class_desc->pop();
+ class_desc->pop(); // color
_pop_normal_font();
- class_desc->pop();
-
- class_desc->add_newline();
- class_desc->add_newline();
- class_desc->add_newline();
+ class_desc->pop(); // indent
}
}
+
+#undef DTR_DOC
}
void EditorHelp::_update_doc() {
@@ -758,46 +860,52 @@ void EditorHelp::_update_doc() {
class_desc->clear();
method_line.clear();
section_line.clear();
+ section_line.push_back(Pair<String, int>(TTR("Top"), 0));
String link_color_text = theme_cache.title_color.to_html(false);
DocData::ClassDoc cd = doc->class_list[edited_class]; // Make a copy, so we can sort without worrying.
+#define DTR_DOC(m_string) (cd.is_script_doc ? (m_string) : DTR(m_string))
+
// Class name
- section_line.push_back(Pair<String, int>(TTR("Top"), 0));
+
_push_title_font();
+
class_desc->add_text(TTR("Class:") + " ");
_add_type_icon(edited_class, theme_cache.doc_title_font_size, "Object");
class_desc->add_text(" ");
+
class_desc->push_color(theme_cache.headline_color);
- _add_text(edited_class);
+ class_desc->add_text(edited_class);
class_desc->pop(); // color
+
_pop_title_font();
if (cd.is_deprecated) {
- class_desc->add_text(" ");
- Ref<Texture2D> error_icon = get_editor_theme_icon(SNAME("StatusError"));
- class_desc->add_image(error_icon, error_icon->get_width(), error_icon->get_height());
+ class_desc->add_newline();
+ DEPRECATED_DOC_MSG(DTR_DOC(cd.deprecated_message), TTR("This class may be changed or removed in future versions."));
}
+
if (cd.is_experimental) {
- class_desc->add_text(" ");
- Ref<Texture2D> warning_icon = get_editor_theme_icon(SNAME("NodeWarning"));
- class_desc->add_image(warning_icon, warning_icon->get_width(), warning_icon->get_height());
+ class_desc->add_newline();
+ EXPERIMENTAL_DOC_MSG(DTR_DOC(cd.experimental_message), TTR("This class may be changed or removed in future versions."));
}
- class_desc->add_newline();
-
- const String non_breaking_space = String::chr(160);
// Inheritance tree
+ const String non_breaking_space = String::chr(160);
+
// Ascendents
if (!cd.inherits.is_empty()) {
- class_desc->push_color(theme_cache.title_color);
+ class_desc->add_newline();
+
_push_normal_font();
+ class_desc->push_color(theme_cache.title_color);
+
class_desc->add_text(TTR("Inherits:") + " ");
String inherits = cd.inherits;
-
while (!inherits.is_empty()) {
_add_type_icon(inherits, theme_cache.doc_font_size, "ArrowRight");
class_desc->add_text(non_breaking_space); // Otherwise icon borrows hyperlink from _add_type().
@@ -810,13 +918,14 @@ void EditorHelp::_update_doc() {
}
}
+ class_desc->pop(); // color
_pop_normal_font();
- class_desc->pop();
- class_desc->add_newline();
}
// Descendants
if ((cd.is_script_doc || ClassDB::class_exists(cd.name)) && doc->inheriting.has(cd.name)) {
+ class_desc->add_newline();
+
_push_normal_font();
class_desc->push_color(theme_cache.title_color);
class_desc->add_text(TTR("Inherited by:") + " ");
@@ -830,58 +939,40 @@ void EditorHelp::_update_doc() {
class_desc->add_text(non_breaking_space); // Otherwise icon borrows hyperlink from _add_type().
_add_type(itr->get());
}
- _pop_normal_font();
-
- class_desc->pop();
- class_desc->add_newline();
- }
-
- // Note if deprecated.
- if (cd.is_deprecated) {
- Ref<Texture2D> error_icon = get_editor_theme_icon(SNAME("StatusError"));
- class_desc->push_color(get_theme_color(SNAME("error_color"), EditorStringName(Editor)));
- class_desc->add_image(error_icon, error_icon->get_width(), error_icon->get_height());
- class_desc->add_text(String(" ") + TTR("This class is marked as deprecated. It will be removed in future versions."));
- class_desc->pop();
- class_desc->add_newline();
- }
- // Note if experimental.
- if (cd.is_experimental) {
- Ref<Texture2D> warning_icon = get_editor_theme_icon(SNAME("NodeWarning"));
- class_desc->push_color(get_theme_color(SNAME("warning_color"), EditorStringName(Editor)));
- class_desc->add_image(warning_icon, warning_icon->get_width(), warning_icon->get_height());
- class_desc->add_text(String(" ") + TTR("This class is marked as experimental. It is subject to likely change or possible removal in future versions. Use at your own discretion."));
- class_desc->pop();
- class_desc->add_newline();
+ class_desc->pop(); // color
+ _pop_normal_font();
}
bool has_description = false;
- class_desc->add_newline();
- class_desc->add_newline();
-
// Brief description
- if (!cd.brief_description.strip_edges().is_empty()) {
+ const String brief_class_descr = DTR_DOC(cd.brief_description).strip_edges();
+ if (!brief_class_descr.is_empty()) {
has_description = true;
- class_desc->push_color(theme_cache.text_color);
- class_desc->push_font(theme_cache.doc_bold_font);
- class_desc->push_indent(1);
- _add_text(DTR(cd.brief_description));
- class_desc->pop();
- class_desc->pop();
- class_desc->pop();
-
- class_desc->add_newline();
class_desc->add_newline();
class_desc->add_newline();
+
+ class_desc->push_indent(1);
+ class_desc->push_font(theme_cache.doc_bold_font);
+ class_desc->push_color(theme_cache.text_color);
+
+ _add_text(brief_class_descr);
+
+ class_desc->pop(); // color
+ class_desc->pop(); // font
+ class_desc->pop(); // indent
}
// Class description
- if (!cd.description.strip_edges().is_empty()) {
+ const String class_descr = DTR_DOC(cd.description).strip_edges();
+ if (!class_descr.is_empty()) {
has_description = true;
+ class_desc->add_newline();
+ class_desc->add_newline();
+
section_line.push_back(Pair<String, int>(TTR("Description"), class_desc->get_paragraph_count() - 2));
description_line = class_desc->get_paragraph_count() - 2;
_push_title_font();
@@ -890,53 +981,64 @@ void EditorHelp::_update_doc() {
class_desc->add_newline();
class_desc->add_newline();
- class_desc->push_color(theme_cache.text_color);
- _push_normal_font();
+
class_desc->push_indent(1);
- _add_text(DTR(cd.description));
- class_desc->pop();
+ _push_normal_font();
+ class_desc->push_color(theme_cache.text_color);
+
+ _add_text(class_descr);
+
+ class_desc->pop(); // color
_pop_normal_font();
- class_desc->pop();
+ class_desc->pop(); // indent
+ }
+ if (!has_description) {
class_desc->add_newline();
class_desc->add_newline();
- class_desc->add_newline();
- }
- if (!has_description) {
+ class_desc->push_indent(1);
+ _push_normal_font();
+
class_desc->add_image(get_editor_theme_icon(SNAME("Error")));
class_desc->add_text(" ");
- class_desc->push_color(theme_cache.comment_color);
+ class_desc->push_color(theme_cache.comment_color);
if (cd.is_script_doc) {
- class_desc->append_text(TTR("There is currently no description for this class."));
+ class_desc->add_text(TTR("There is currently no description for this class."));
} else {
class_desc->append_text(TTR("There is currently no description for this class. Please help us by [color=$color][url=$url]contributing one[/url][/color]!").replace("$url", CONTRIBUTE_URL).replace("$color", link_color_text));
}
+ class_desc->pop(); // color
- class_desc->add_newline();
- class_desc->add_newline();
+ _pop_normal_font();
+ class_desc->pop(); // indent
}
#ifdef MODULE_MONO_ENABLED
if (classes_with_csharp_differences.has(cd.name)) {
+ class_desc->add_newline();
+ class_desc->add_newline();
+
const String &csharp_differences_url = vformat("%s/tutorials/scripting/c_sharp/c_sharp_differences.html", VERSION_DOCS_URL);
- class_desc->push_color(theme_cache.text_color);
- _push_normal_font();
class_desc->push_indent(1);
- _add_text("[b]" + TTR("Note:") + "[/b] " + vformat(TTR("There are notable differences when using this API with C#. See [url=%s]C# API differences to GDScript[/url] for more information."), csharp_differences_url));
- class_desc->pop();
- _pop_normal_font();
- class_desc->pop();
+ _push_normal_font();
+ class_desc->push_color(theme_cache.text_color);
- class_desc->add_newline();
- class_desc->add_newline();
+ class_desc->append_text("[b]" + TTR("Note:") + "[/b] " + vformat(TTR("There are notable differences when using this API with C#. See [url=%s]C# API differences to GDScript[/url] for more information."), csharp_differences_url));
+
+ class_desc->pop(); // color
+ _pop_normal_font();
+ class_desc->pop(); // indent
}
#endif
// Online tutorials
- if (cd.tutorials.size()) {
+ if (!cd.tutorials.is_empty()) {
+ class_desc->add_newline();
+ class_desc->add_newline();
+
_push_title_font();
class_desc->add_text(TTR("Online Tutorials"));
_pop_title_font();
@@ -945,26 +1047,29 @@ void EditorHelp::_update_doc() {
class_desc->push_indent(1);
_push_code_font();
+ class_desc->push_color(theme_cache.symbol_color);
for (int i = 0; i < cd.tutorials.size(); i++) {
- const String link = DTR(cd.tutorials[i].link);
- String linktxt = (cd.tutorials[i].title.is_empty()) ? link : DTR(cd.tutorials[i].title);
- const int seppos = linktxt.find("//");
- if (seppos != -1) {
- linktxt = link.substr(seppos + 2);
+ const String link = DTR_DOC(cd.tutorials[i].link).strip_edges();
+
+ String link_text = DTR_DOC(cd.tutorials[i].title).strip_edges();
+ if (link_text.is_empty()) {
+ const int sep_pos = link.find("//");
+ if (sep_pos >= 0) {
+ link_text = link.substr(sep_pos + 2);
+ } else {
+ link_text = link;
+ }
}
- class_desc->push_color(theme_cache.symbol_color);
- class_desc->append_text("[url=" + link + "]" + linktxt + "[/url]");
- class_desc->pop();
class_desc->add_newline();
+ _add_bulletpoint();
+ class_desc->append_text("[url=" + link + "]" + link_text + "[/url]");
}
+ class_desc->pop(); // color
_pop_code_font();
- class_desc->pop();
-
- class_desc->add_newline();
- class_desc->add_newline();
+ class_desc->pop(); // indent
}
// Properties overview
@@ -984,15 +1089,19 @@ void EditorHelp::_update_doc() {
}
if (has_properties) {
+ class_desc->add_newline();
+ class_desc->add_newline();
+
section_line.push_back(Pair<String, int>(TTR("Properties"), class_desc->get_paragraph_count() - 2));
_push_title_font();
class_desc->add_text(TTR("Properties"));
_pop_title_font();
class_desc->add_newline();
+ class_desc->add_newline();
- _push_code_font();
class_desc->push_indent(1);
+ _push_code_font();
class_desc->push_table(4);
class_desc->set_table_column_expand(1, true);
@@ -1006,29 +1115,29 @@ void EditorHelp::_update_doc() {
if (cd.properties[i].name.begins_with("_") && cd.properties[i].description.strip_edges().is_empty()) {
continue;
}
+
if (is_generating_overridden_properties && !cd.properties[i].overridden) {
is_generating_overridden_properties = false;
// No need for the extra spacing when there's no overridden property.
if (overridden_property_exists) {
class_desc->push_cell();
- class_desc->pop();
+ class_desc->pop(); // cell
class_desc->push_cell();
- class_desc->pop();
+ class_desc->pop(); // cell
class_desc->push_cell();
- class_desc->pop();
+ class_desc->pop(); // cell
class_desc->push_cell();
- class_desc->pop();
+ class_desc->pop(); // cell
}
}
- property_line[cd.properties[i].name] = class_desc->get_paragraph_count() - 2; //gets overridden if description
+
+ property_line[cd.properties[i].name] = class_desc->get_paragraph_count() - 2; // Gets overridden if description.
// Property type.
class_desc->push_cell();
class_desc->push_paragraph(HORIZONTAL_ALIGNMENT_RIGHT, Control::TEXT_DIRECTION_AUTO, "");
- _push_code_font();
_add_type(cd.properties[i].type, cd.properties[i].enumeration, cd.properties[i].is_bitfield);
- _pop_code_font();
- class_desc->pop();
+ class_desc->pop(); // paragraph
class_desc->pop(); // cell
bool describe = false;
@@ -1052,69 +1161,60 @@ void EditorHelp::_update_doc() {
// Property name.
class_desc->push_cell();
- _push_code_font();
class_desc->push_color(theme_cache.headline_color);
if (describe) {
class_desc->push_meta("@member " + cd.properties[i].name);
}
- _add_text(cd.properties[i].name);
+ class_desc->add_text(cd.properties[i].name);
if (describe) {
- class_desc->pop();
+ class_desc->pop(); // meta
}
- class_desc->pop();
- _pop_code_font();
+ class_desc->pop(); // color
class_desc->pop(); // cell
// Property value.
class_desc->push_cell();
- _push_code_font();
if (!cd.properties[i].default_value.is_empty()) {
if (cd.properties[i].overridden) {
class_desc->push_color(theme_cache.override_color);
- class_desc->add_text(" [");
- class_desc->push_meta("@member " + cd.properties[i].overrides + "." + cd.properties[i].name);
- _add_text(vformat(TTR("overrides %s:"), cd.properties[i].overrides));
- class_desc->pop();
+ class_desc->add_text("[");
+ const String link = vformat("[url=@member %s.%s]%s[/url]", cd.properties[i].overrides, cd.properties[i].name, cd.properties[i].overrides);
+ class_desc->append_text(vformat(TTR("overrides %s:"), link));
class_desc->add_text(" " + _fix_constant(cd.properties[i].default_value) + "]");
+ class_desc->pop(); // color
overridden_property_exists = true;
} else {
class_desc->push_color(theme_cache.symbol_color);
- class_desc->add_text(" [" + TTR("default:") + " ");
+ class_desc->add_text("[" + TTR("default:") + " ");
+ class_desc->pop(); // color
class_desc->push_color(theme_cache.value_color);
class_desc->add_text(_fix_constant(cd.properties[i].default_value));
- class_desc->pop();
+ class_desc->pop(); // color
class_desc->push_color(theme_cache.symbol_color);
class_desc->add_text("]");
- class_desc->pop();
+ class_desc->pop(); // color
}
- class_desc->pop(); // color
- }
-
- if (cd.properties[i].is_deprecated) {
- DEPRECATED_DOC_TAG;
}
- if (cd.properties[i].is_experimental) {
- EXPERIMENTAL_DOC_TAG;
- }
-
- _pop_code_font();
class_desc->pop(); // cell
- // Property setters and getters.
+ // Property setter/getter and deprecated/experimental marks.
class_desc->push_cell();
- _push_code_font();
+
+ bool has_prev_text = false;
if (cd.is_script_doc && (!cd.properties[i].setter.is_empty() || !cd.properties[i].getter.is_empty())) {
+ has_prev_text = true;
+
class_desc->push_color(theme_cache.symbol_color);
- class_desc->add_text(" [" + TTR("property:") + " ");
+ class_desc->add_text("[" + TTR("property:") + " ");
class_desc->pop(); // color
if (!cd.properties[i].setter.is_empty()) {
@@ -1138,16 +1238,28 @@ void EditorHelp::_update_doc() {
class_desc->pop(); // color
}
- _pop_code_font();
+ if (cd.properties[i].is_deprecated) {
+ if (has_prev_text) {
+ class_desc->add_text(" ");
+ }
+ has_prev_text = true;
+ DEPRECATED_DOC_TAG;
+ }
+
+ if (cd.properties[i].is_experimental) {
+ if (has_prev_text) {
+ class_desc->add_text(" ");
+ }
+ has_prev_text = true;
+ EXPERIMENTAL_DOC_TAG;
+ }
+
class_desc->pop(); // cell
}
class_desc->pop(); // table
- class_desc->pop();
_pop_code_font();
-
- class_desc->add_newline();
- class_desc->add_newline();
+ class_desc->pop(); // indent
}
// Methods overview
@@ -1172,53 +1284,33 @@ void EditorHelp::_update_doc() {
if (sort_methods) {
cd.constructors.sort();
}
-
- section_line.push_back(Pair<String, int>(TTR("Constructors"), class_desc->get_paragraph_count() - 2));
- _push_title_font();
- class_desc->add_text(TTR("Constructors"));
- _pop_title_font();
-
- _update_method_list(cd.constructors, METHOD_TYPE_CONSTRUCTOR);
+ _update_method_list(METHOD_TYPE_CONSTRUCTOR, cd.constructors);
}
if (!methods.is_empty()) {
if (sort_methods) {
methods.sort();
}
-
- section_line.push_back(Pair<String, int>(TTR("Methods"), class_desc->get_paragraph_count() - 2));
- _push_title_font();
- class_desc->add_text(TTR("Methods"));
- _pop_title_font();
-
- _update_method_list(methods, METHOD_TYPE_METHOD);
+ _update_method_list(METHOD_TYPE_METHOD, methods);
}
if (!cd.operators.is_empty()) {
if (sort_methods) {
cd.operators.sort();
}
-
- section_line.push_back(Pair<String, int>(TTR("Operators"), class_desc->get_paragraph_count() - 2));
- _push_title_font();
- class_desc->add_text(TTR("Operators"));
- _pop_title_font();
-
- _update_method_list(cd.operators, METHOD_TYPE_OPERATOR);
+ _update_method_list(METHOD_TYPE_OPERATOR, cd.operators);
}
// Theme properties
if (!cd.theme_properties.is_empty()) {
+ class_desc->add_newline();
+ class_desc->add_newline();
+
section_line.push_back(Pair<String, int>(TTR("Theme Properties"), class_desc->get_paragraph_count() - 2));
_push_title_font();
class_desc->add_text(TTR("Theme Properties"));
_pop_title_font();
- class_desc->add_newline();
- class_desc->add_newline();
-
- class_desc->push_indent(1);
-
String theme_data_type;
HashMap<String, String> data_type_names;
data_type_names["color"] = TTR("Colors");
@@ -1229,23 +1321,32 @@ void EditorHelp::_update_doc() {
data_type_names["style"] = TTR("Styles");
for (int i = 0; i < cd.theme_properties.size(); i++) {
- theme_property_line[cd.theme_properties[i].name] = class_desc->get_paragraph_count() - 2; // Gets overridden if description.
-
if (theme_data_type != cd.theme_properties[i].data_type) {
theme_data_type = cd.theme_properties[i].data_type;
+ class_desc->add_newline();
+ class_desc->add_newline();
+
+ class_desc->push_indent(1);
_push_title_font();
+
if (data_type_names.has(theme_data_type)) {
class_desc->add_text(data_type_names[theme_data_type]);
} else {
- class_desc->add_text("");
+ class_desc->add_text(theme_data_type);
}
- _pop_title_font();
- class_desc->add_newline();
- class_desc->add_newline();
+ _pop_title_font();
+ class_desc->pop(); // indent
}
+ class_desc->add_newline();
+ class_desc->add_newline();
+
+ theme_property_line[cd.theme_properties[i].name] = class_desc->get_paragraph_count() - 2; // Gets overridden if description.
+
+ class_desc->push_indent(1);
+
// Theme item header.
_push_code_font();
_add_bulletpoint();
@@ -1256,41 +1357,52 @@ void EditorHelp::_update_doc() {
// Theme item name.
class_desc->push_color(theme_cache.headline_color);
class_desc->add_text(" ");
- _add_text(cd.theme_properties[i].name);
- class_desc->pop();
+ class_desc->add_text(cd.theme_properties[i].name);
+ class_desc->pop(); // color
// Theme item default value.
if (!cd.theme_properties[i].default_value.is_empty()) {
class_desc->push_color(theme_cache.symbol_color);
class_desc->add_text(" [" + TTR("default:") + " ");
- class_desc->pop();
+ class_desc->pop(); // color
+
class_desc->push_color(theme_cache.value_color);
class_desc->add_text(_fix_constant(cd.theme_properties[i].default_value));
- class_desc->pop();
+ class_desc->pop(); // color
+
class_desc->push_color(theme_cache.symbol_color);
class_desc->add_text("]");
- class_desc->pop();
+ class_desc->pop(); // color
}
_pop_code_font();
// Theme item description.
- if (!cd.theme_properties[i].description.strip_edges().is_empty()) {
+ class_desc->push_indent(1);
+ _push_normal_font();
+ class_desc->push_color(theme_cache.comment_color);
+
+ const String descr = DTR_DOC(cd.theme_properties[i].description).strip_edges();
+ if (!descr.is_empty()) {
+ _add_text(descr);
+ } else {
+ class_desc->add_image(get_editor_theme_icon(SNAME("Error")));
+ class_desc->add_text(" ");
class_desc->push_color(theme_cache.comment_color);
- _push_normal_font();
- class_desc->push_indent(1);
- _add_text(DTR(cd.theme_properties[i].description));
- class_desc->pop(); // indent
- _pop_normal_font();
+ if (cd.is_script_doc) {
+ class_desc->add_text(TTR("There is currently no description for this theme property."));
+ } else {
+ class_desc->append_text(TTR("There is currently no description for this theme property. Please help us by [color=$color][url=$url]contributing one[/url][/color]!").replace("$url", CONTRIBUTE_URL).replace("$color", link_color_text));
+ }
class_desc->pop(); // color
}
- class_desc->add_newline();
- class_desc->add_newline();
- }
+ class_desc->pop(); // color
+ _pop_normal_font();
+ class_desc->pop(); // indent
- class_desc->pop();
- class_desc->add_newline();
+ class_desc->pop(); // indent
+ }
}
// Signals
@@ -1299,76 +1411,111 @@ void EditorHelp::_update_doc() {
cd.signals.sort();
}
+ class_desc->add_newline();
+ class_desc->add_newline();
+
section_line.push_back(Pair<String, int>(TTR("Signals"), class_desc->get_paragraph_count() - 2));
_push_title_font();
class_desc->add_text(TTR("Signals"));
_pop_title_font();
- class_desc->add_newline();
- class_desc->add_newline();
-
- class_desc->push_indent(1);
-
for (int i = 0; i < cd.signals.size(); i++) {
+ class_desc->add_newline();
+ class_desc->add_newline();
+
signal_line[cd.signals[i].name] = class_desc->get_paragraph_count() - 2; // Gets overridden if description.
+ class_desc->push_indent(1);
+
+ // Signal header.
_push_code_font();
_add_bulletpoint();
class_desc->push_color(theme_cache.headline_color);
- _add_text(cd.signals[i].name);
- class_desc->pop();
+ class_desc->add_text(cd.signals[i].name);
+ class_desc->pop(); // color
+
class_desc->push_color(theme_cache.symbol_color);
class_desc->add_text("(");
- class_desc->pop();
+ class_desc->pop(); // color
+
for (int j = 0; j < cd.signals[i].arguments.size(); j++) {
class_desc->push_color(theme_cache.text_color);
+
if (j > 0) {
class_desc->add_text(", ");
}
- _add_text(cd.signals[i].arguments[j].name);
+ class_desc->add_text(cd.signals[i].arguments[j].name);
class_desc->add_text(": ");
_add_type(cd.signals[i].arguments[j].type, cd.signals[i].arguments[j].enumeration, cd.signals[i].arguments[j].is_bitfield);
+
+ // Signals currently do not support default argument values, neither the core nor GDScript.
+ // This code is just for completeness.
if (!cd.signals[i].arguments[j].default_value.is_empty()) {
class_desc->push_color(theme_cache.symbol_color);
class_desc->add_text(" = ");
- class_desc->pop();
- _add_text(cd.signals[i].arguments[j].default_value);
+ class_desc->pop(); // color
+
+ class_desc->push_color(theme_cache.value_color);
+ class_desc->add_text(_fix_constant(cd.signals[i].arguments[j].default_value));
+ class_desc->pop(); // color
}
- class_desc->pop();
+ class_desc->pop(); // color
}
class_desc->push_color(theme_cache.symbol_color);
class_desc->add_text(")");
+ class_desc->pop(); // color
+
+ _pop_code_font();
+
+ class_desc->add_newline();
+
+ // Signal description.
+ class_desc->push_indent(1);
+ _push_normal_font();
+ class_desc->push_color(theme_cache.comment_color);
+
+ const String descr = DTR_DOC(cd.signals[i].description).strip_edges();
+ const bool is_multiline = descr.find_char('\n') > 0;
if (cd.signals[i].is_deprecated) {
- DEPRECATED_DOC_TAG;
+ DEPRECATED_DOC_MSG(DTR_DOC(cd.signals[i].deprecated_message), TTR("This signal may be changed or removed in future versions."));
+ class_desc->add_newline();
+ if (is_multiline) {
+ class_desc->add_newline();
+ }
}
if (cd.signals[i].is_experimental) {
- EXPERIMENTAL_DOC_TAG;
+ EXPERIMENTAL_DOC_MSG(DTR_DOC(cd.signals[i].experimental_message), TTR("This signal may be changed or removed in future versions."));
+ class_desc->add_newline();
+ if (is_multiline) {
+ class_desc->add_newline();
+ }
}
- class_desc->pop();
- _pop_code_font();
-
- if (!cd.signals[i].description.strip_edges().is_empty()) {
+ if (!descr.is_empty()) {
+ _add_text(descr);
+ } else {
+ class_desc->add_image(get_editor_theme_icon(SNAME("Error")));
+ class_desc->add_text(" ");
class_desc->push_color(theme_cache.comment_color);
- _push_normal_font();
- class_desc->push_indent(1);
- _add_text(DTR(cd.signals[i].description));
- class_desc->pop(); // indent
- _pop_normal_font();
+ if (cd.is_script_doc) {
+ class_desc->add_text(TTR("There is currently no description for this signal."));
+ } else {
+ class_desc->append_text(TTR("There is currently no description for this signal. Please help us by [color=$color][url=$url]contributing one[/url][/color]!").replace("$url", CONTRIBUTE_URL).replace("$color", link_color_text));
+ }
class_desc->pop(); // color
}
- class_desc->add_newline();
- class_desc->add_newline();
- }
+ class_desc->pop(); // color
+ _pop_normal_font();
+ class_desc->pop(); // indent
- class_desc->pop();
- class_desc->add_newline();
+ class_desc->pop(); // indent
+ }
}
// Constants and enums
@@ -1404,13 +1551,13 @@ void EditorHelp::_update_doc() {
}
}
if (has_enums) {
+ class_desc->add_newline();
+ class_desc->add_newline();
+
section_line.push_back(Pair<String, int>(TTR("Enumerations"), class_desc->get_paragraph_count() - 2));
_push_title_font();
class_desc->add_text(TTR("Enumerations"));
_pop_title_font();
- class_desc->push_indent(1);
-
- class_desc->add_newline();
for (KeyValue<String, Vector<DocData::ConstantDoc>> &E : enums) {
String key = E.key;
@@ -1423,130 +1570,196 @@ void EditorHelp::_update_doc() {
}
}
- enum_line[E.key] = class_desc->get_paragraph_count() - 2;
+ class_desc->add_newline();
+ class_desc->add_newline();
+
+ // Enum header.
_push_code_font();
+ enum_line[E.key] = class_desc->get_paragraph_count() - 2;
class_desc->push_color(theme_cache.title_color);
if (E.value.size() && E.value[0].is_bitfield) {
class_desc->add_text("flags ");
} else {
class_desc->add_text("enum ");
}
- class_desc->pop();
+ class_desc->pop(); // color
class_desc->push_color(theme_cache.headline_color);
class_desc->add_text(key);
- class_desc->pop();
+ class_desc->pop(); // color
class_desc->push_color(theme_cache.symbol_color);
class_desc->add_text(":");
- class_desc->pop();
-
- if (cd.enums[key].is_deprecated) {
- DEPRECATED_DOC_TAG;
- }
- if (cd.enums[key].is_experimental) {
- EXPERIMENTAL_DOC_TAG;
- }
+ class_desc->pop(); // color
_pop_code_font();
- class_desc->add_newline();
- class_desc->add_newline();
-
// Enum description.
- if (key != "@unnamed_enums" && cd.enums.has(key) && !cd.enums[key].description.strip_edges().is_empty()) {
- class_desc->push_color(theme_cache.text_color);
- _push_normal_font();
- class_desc->push_indent(1);
- _add_text(cd.enums[key].description);
- class_desc->pop();
- _pop_normal_font();
- class_desc->pop();
+ if (key != "@unnamed_enums" && cd.enums.has(key)) {
+ const String descr = DTR_DOC(cd.enums[key].description).strip_edges();
+ const bool is_multiline = descr.find_char('\n') > 0;
+ if (cd.enums[key].is_deprecated || cd.enums[key].is_experimental || !descr.is_empty()) {
+ class_desc->add_newline();
- class_desc->add_newline();
- class_desc->add_newline();
+ class_desc->push_indent(1);
+ _push_normal_font();
+ class_desc->push_color(theme_cache.text_color);
+
+ bool has_prev_text = false;
+
+ if (cd.enums[key].is_deprecated) {
+ has_prev_text = true;
+ DEPRECATED_DOC_MSG(DTR_DOC(cd.enums[key].deprecated_message), TTR("This enumeration may be changed or removed in future versions."));
+ }
+
+ if (cd.enums[key].is_experimental) {
+ if (has_prev_text) {
+ class_desc->add_newline();
+ if (is_multiline) {
+ class_desc->add_newline();
+ }
+ }
+ has_prev_text = true;
+ EXPERIMENTAL_DOC_MSG(DTR_DOC(cd.enums[key].experimental_message), TTR("This enumeration may be changed or removed in future versions."));
+ }
+
+ if (!descr.is_empty()) {
+ if (has_prev_text) {
+ class_desc->add_newline();
+ if (is_multiline) {
+ class_desc->add_newline();
+ }
+ }
+ has_prev_text = true;
+ _add_text(descr);
+ }
+
+ class_desc->pop(); // color
+ _pop_normal_font();
+ class_desc->pop(); // indent
+ }
}
- class_desc->push_indent(1);
Vector<DocData::ConstantDoc> enum_list = E.value;
+ HashMap<String, int> enum_values;
+ const int enum_start_line = enum_line[E.key];
- HashMap<String, int> enumValuesContainer;
- int enumStartingLine = enum_line[E.key];
-
+ bool prev_is_multiline = true; // Use a large margin for the first item.
for (int i = 0; i < enum_list.size(); i++) {
+ const String descr = DTR_DOC(enum_list[i].description).strip_edges();
+ const bool is_multiline = descr.find_char('\n') > 0;
+
+ class_desc->add_newline();
+ if (prev_is_multiline || is_multiline) {
+ class_desc->add_newline();
+ }
+ prev_is_multiline = is_multiline;
+
if (cd.name == "@GlobalScope") {
- enumValuesContainer[enum_list[i].name] = enumStartingLine;
+ enum_values[enum_list[i].name] = enum_start_line;
}
// Add the enum constant line to the constant_line map so we can locate it as a constant.
constant_line[enum_list[i].name] = class_desc->get_paragraph_count() - 2;
- _push_code_font();
+ class_desc->push_indent(1);
+ // Enum value header.
+ _push_code_font();
_add_bulletpoint();
+
class_desc->push_color(theme_cache.headline_color);
- _add_text(enum_list[i].name);
- class_desc->pop();
+ class_desc->add_text(enum_list[i].name);
+ class_desc->pop(); // color
+
class_desc->push_color(theme_cache.symbol_color);
class_desc->add_text(" = ");
- class_desc->pop();
+ class_desc->pop(); // color
+
class_desc->push_color(theme_cache.value_color);
class_desc->add_text(_fix_constant(enum_list[i].value));
- class_desc->pop();
-
- if (enum_list[i].is_deprecated) {
- DEPRECATED_DOC_TAG;
- }
-
- if (enum_list[i].is_experimental) {
- EXPERIMENTAL_DOC_TAG;
- }
+ class_desc->pop(); // color
_pop_code_font();
- class_desc->add_newline();
+ // Enum value description.
+ if (enum_list[i].is_deprecated || enum_list[i].is_experimental || !descr.is_empty()) {
+ class_desc->add_newline();
- if (!enum_list[i].description.strip_edges().is_empty()) {
- class_desc->push_color(theme_cache.comment_color);
+ class_desc->push_indent(1);
_push_normal_font();
- _add_text(DTR(enum_list[i].description));
- _pop_normal_font();
- class_desc->pop();
- if (DTR(enum_list[i].description).find("\n") > 0) {
- class_desc->add_newline();
+ class_desc->push_color(theme_cache.comment_color);
+
+ bool has_prev_text = false;
+
+ if (enum_list[i].is_deprecated) {
+ has_prev_text = true;
+ DEPRECATED_DOC_MSG(DTR_DOC(enum_list[i].deprecated_message), TTR("This constant may be changed or removed in future versions."));
}
+
+ if (enum_list[i].is_experimental) {
+ if (has_prev_text) {
+ class_desc->add_newline();
+ if (is_multiline) {
+ class_desc->add_newline();
+ }
+ }
+ has_prev_text = true;
+ EXPERIMENTAL_DOC_MSG(DTR_DOC(enum_list[i].experimental_message), TTR("This constant may be changed or removed in future versions."));
+ }
+
+ if (!descr.is_empty()) {
+ if (has_prev_text) {
+ class_desc->add_newline();
+ if (is_multiline) {
+ class_desc->add_newline();
+ }
+ }
+ has_prev_text = true;
+ _add_text(descr);
+ }
+
+ class_desc->pop(); // color
+ _pop_normal_font();
+ class_desc->pop(); // indent
}
- class_desc->add_newline();
+ class_desc->pop(); // indent
}
if (cd.name == "@GlobalScope") {
- enum_values_line[E.key] = enumValuesContainer;
+ enum_values_line[E.key] = enum_values;
}
-
- class_desc->pop();
-
- class_desc->add_newline();
}
-
- class_desc->pop();
- class_desc->add_newline();
}
// Constants
- if (constants.size()) {
+ if (!constants.is_empty()) {
+ class_desc->add_newline();
+ class_desc->add_newline();
+
section_line.push_back(Pair<String, int>(TTR("Constants"), class_desc->get_paragraph_count() - 2));
_push_title_font();
class_desc->add_text(TTR("Constants"));
_pop_title_font();
- class_desc->push_indent(1);
-
- class_desc->add_newline();
+ bool prev_is_multiline = true; // Use a large margin for the first item.
for (int i = 0; i < constants.size(); i++) {
+ const String descr = DTR_DOC(constants[i].description).strip_edges();
+ const bool is_multiline = descr.find_char('\n') > 0;
+
+ class_desc->add_newline();
+ if (prev_is_multiline || is_multiline) {
+ class_desc->add_newline();
+ }
+ prev_is_multiline = is_multiline;
+
constant_line[constants[i].name] = class_desc->get_paragraph_count() - 2;
+ class_desc->push_indent(1);
+
+ // Constant header.
_push_code_font();
if (constants[i].value.begins_with("Color(") && constants[i].value.ends_with(")")) {
@@ -1555,50 +1768,70 @@ void EditorHelp::_update_doc() {
if (color.size() >= 3) {
class_desc->push_color(Color(color[0], color[1], color[2]));
_add_bulletpoint();
- class_desc->pop();
+ class_desc->pop(); // color
}
} else {
_add_bulletpoint();
}
class_desc->push_color(theme_cache.headline_color);
- _add_text(constants[i].name);
- class_desc->pop();
+ class_desc->add_text(constants[i].name);
+ class_desc->pop(); // color
+
class_desc->push_color(theme_cache.symbol_color);
class_desc->add_text(" = ");
- class_desc->pop();
+ class_desc->pop(); // color
+
class_desc->push_color(theme_cache.value_color);
class_desc->add_text(_fix_constant(constants[i].value));
- class_desc->pop();
-
- if (constants[i].is_deprecated) {
- DEPRECATED_DOC_TAG;
- }
-
- if (constants[i].is_experimental) {
- EXPERIMENTAL_DOC_TAG;
- }
+ class_desc->pop(); // color
_pop_code_font();
- class_desc->add_newline();
+ // Constant description.
+ if (constants[i].is_deprecated || constants[i].is_experimental || !descr.is_empty()) {
+ class_desc->add_newline();
- if (!constants[i].description.strip_edges().is_empty()) {
- class_desc->push_color(theme_cache.comment_color);
+ class_desc->push_indent(1);
_push_normal_font();
- _add_text(DTR(constants[i].description));
- _pop_normal_font();
- class_desc->pop();
- if (DTR(constants[i].description).find("\n") > 0) {
- class_desc->add_newline();
+ class_desc->push_color(theme_cache.comment_color);
+
+ bool has_prev_text = false;
+
+ if (constants[i].is_deprecated) {
+ has_prev_text = true;
+ DEPRECATED_DOC_MSG(DTR_DOC(constants[i].deprecated_message), TTR("This constant may be changed or removed in future versions."));
+ }
+
+ if (constants[i].is_experimental) {
+ if (has_prev_text) {
+ class_desc->add_newline();
+ if (is_multiline) {
+ class_desc->add_newline();
+ }
+ }
+ has_prev_text = true;
+ EXPERIMENTAL_DOC_MSG(DTR_DOC(constants[i].experimental_message), TTR("This constant may be changed or removed in future versions."));
+ }
+
+ if (!descr.is_empty()) {
+ if (has_prev_text) {
+ class_desc->add_newline();
+ if (is_multiline) {
+ class_desc->add_newline();
+ }
+ }
+ has_prev_text = true;
+ _add_text(descr);
}
+
+ class_desc->pop(); // color
+ _pop_normal_font();
+ class_desc->pop(); // indent
}
- class_desc->add_newline();
+ class_desc->pop(); // indent
}
-
- class_desc->pop();
- class_desc->add_newline();
}
}
@@ -1608,112 +1841,126 @@ void EditorHelp::_update_doc() {
cd.annotations.sort();
}
+ class_desc->add_newline();
+ class_desc->add_newline();
+
section_line.push_back(Pair<String, int>(TTR("Annotations"), class_desc->get_paragraph_count() - 2));
_push_title_font();
class_desc->add_text(TTR("Annotations"));
_pop_title_font();
- class_desc->add_newline();
- class_desc->add_newline();
-
- class_desc->push_indent(1);
-
for (int i = 0; i < cd.annotations.size(); i++) {
+ class_desc->add_newline();
+ class_desc->add_newline();
+
annotation_line[cd.annotations[i].name] = class_desc->get_paragraph_count() - 2; // Gets overridden if description.
+ class_desc->push_indent(1);
+
+ // Annotation header.
_push_code_font();
_add_bulletpoint();
+
class_desc->push_color(theme_cache.headline_color);
- _add_text(cd.annotations[i].name);
- class_desc->pop();
+ class_desc->add_text(cd.annotations[i].name);
+ class_desc->pop(); // color
if (cd.annotations[i].arguments.size() > 0) {
class_desc->push_color(theme_cache.symbol_color);
class_desc->add_text("(");
- class_desc->pop();
+ class_desc->pop(); // color
+
for (int j = 0; j < cd.annotations[i].arguments.size(); j++) {
class_desc->push_color(theme_cache.text_color);
+
if (j > 0) {
class_desc->add_text(", ");
}
- _add_text(cd.annotations[i].arguments[j].name);
+ class_desc->add_text(cd.annotations[i].arguments[j].name);
class_desc->add_text(": ");
_add_type(cd.annotations[i].arguments[j].type);
+
if (!cd.annotations[i].arguments[j].default_value.is_empty()) {
class_desc->push_color(theme_cache.symbol_color);
class_desc->add_text(" = ");
- class_desc->pop();
- _add_text(cd.annotations[i].arguments[j].default_value);
+ class_desc->pop(); // color
+
+ class_desc->push_color(theme_cache.value_color);
+ class_desc->add_text(_fix_constant(cd.annotations[i].arguments[j].default_value));
+ class_desc->pop(); // color
}
- class_desc->pop();
+ class_desc->pop(); // color
}
if (cd.annotations[i].qualifiers.contains("vararg")) {
class_desc->push_color(theme_cache.text_color);
- if (cd.annotations[i].arguments.size()) {
+ if (!cd.annotations[i].arguments.is_empty()) {
class_desc->add_text(", ");
}
+ class_desc->pop(); // color
+
class_desc->push_color(theme_cache.symbol_color);
class_desc->add_text("...");
- class_desc->pop();
- class_desc->pop();
+ class_desc->pop(); // color
}
class_desc->push_color(theme_cache.symbol_color);
class_desc->add_text(")");
- class_desc->pop();
+ class_desc->pop(); // color
}
if (!cd.annotations[i].qualifiers.is_empty()) {
class_desc->push_color(theme_cache.qualifier_color);
class_desc->add_text(" ");
- _add_text(cd.annotations[i].qualifiers);
- class_desc->pop();
+ class_desc->add_text(cd.annotations[i].qualifiers);
+ class_desc->pop(); // color
}
_pop_code_font();
- if (!cd.annotations[i].description.strip_edges().is_empty()) {
- class_desc->push_color(theme_cache.comment_color);
- _push_normal_font();
- class_desc->push_indent(1);
- _add_text(DTR(cd.annotations[i].description));
- class_desc->pop(); // indent
- _pop_normal_font();
- class_desc->pop(); // color
+ class_desc->add_newline();
+
+ // Annotation description.
+ class_desc->push_indent(1);
+ _push_normal_font();
+ class_desc->push_color(theme_cache.comment_color);
+
+ const String descr = DTR_DOC(cd.annotations[i].description).strip_edges();
+ if (!descr.is_empty()) {
+ _add_text(descr);
} else {
- class_desc->push_indent(1);
class_desc->add_image(get_editor_theme_icon(SNAME("Error")));
class_desc->add_text(" ");
class_desc->push_color(theme_cache.comment_color);
if (cd.is_script_doc) {
- class_desc->append_text(TTR("There is currently no description for this annotation."));
+ class_desc->add_text(TTR("There is currently no description for this annotation."));
} else {
class_desc->append_text(TTR("There is currently no description for this annotation. Please help us by [color=$color][url=$url]contributing one[/url][/color]!").replace("$url", CONTRIBUTE_URL).replace("$color", link_color_text));
}
- class_desc->pop();
- class_desc->pop(); // indent
+ class_desc->pop(); // color
}
- class_desc->add_newline();
- class_desc->add_newline();
- }
- class_desc->pop();
- class_desc->add_newline();
+ class_desc->pop(); // color
+ _pop_normal_font();
+ class_desc->pop(); // indent
+
+ class_desc->pop(); // indent
+ }
}
// Property descriptions
if (has_property_descriptions) {
+ class_desc->add_newline();
+ class_desc->add_newline();
+ class_desc->add_newline();
+
section_line.push_back(Pair<String, int>(TTR("Property Descriptions"), class_desc->get_paragraph_count() - 2));
_push_title_font();
class_desc->add_text(TTR("Property Descriptions"));
_pop_title_font();
- class_desc->add_newline();
- class_desc->add_newline();
-
for (int i = 0; i < cd.properties.size(); i++) {
if (cd.properties[i].overridden) {
continue;
@@ -1723,6 +1970,10 @@ void EditorHelp::_update_doc() {
continue;
}
+ class_desc->add_newline();
+ class_desc->add_newline();
+ class_desc->add_newline();
+
property_line[cd.properties[i].name] = class_desc->get_paragraph_count() - 2;
class_desc->push_table(2);
@@ -1731,16 +1982,15 @@ void EditorHelp::_update_doc() {
class_desc->push_cell();
_push_code_font();
_add_bulletpoint();
-
_add_type(cd.properties[i].type, cd.properties[i].enumeration, cd.properties[i].is_bitfield);
- class_desc->add_text(" ");
_pop_code_font();
class_desc->pop(); // cell
class_desc->push_cell();
_push_code_font();
+
class_desc->push_color(theme_cache.headline_color);
- _add_text(cd.properties[i].name);
+ class_desc->add_text(cd.properties[i].name);
class_desc->pop(); // color
if (!cd.properties[i].default_value.is_empty()) {
@@ -1757,14 +2007,6 @@ void EditorHelp::_update_doc() {
class_desc->pop(); // color
}
- if (cd.properties[i].is_deprecated) {
- DEPRECATED_DOC_TAG;
- }
-
- if (cd.properties[i].is_experimental) {
- EXPERIMENTAL_DOC_TAG;
- }
-
if (cd.is_script_doc && (!cd.properties[i].setter.is_empty() || !cd.properties[i].getter.is_empty())) {
class_desc->push_color(theme_cache.symbol_color);
class_desc->add_text(" [" + TTR("property:") + " ");
@@ -1813,7 +2055,7 @@ void EditorHelp::_update_doc() {
// Setters with additional arguments are exposed in the method list, so we link them here for quick access.
class_desc->push_meta("@method " + cd.properties[i].setter);
class_desc->add_text(cd.properties[i].setter + TTR("(value)"));
- class_desc->pop();
+ class_desc->pop(); // meta
} else {
class_desc->add_text(cd.properties[i].setter + TTR("(value)"));
}
@@ -1840,7 +2082,7 @@ void EditorHelp::_update_doc() {
// Getters with additional arguments are exposed in the method list, so we link them here for quick access.
class_desc->push_meta("@method " + cd.properties[i].getter);
class_desc->add_text(cd.properties[i].getter + "()");
- class_desc->pop();
+ class_desc->pop(); // meta
} else {
class_desc->add_text(cd.properties[i].getter + "()");
}
@@ -1861,64 +2103,66 @@ void EditorHelp::_update_doc() {
class_desc->add_newline();
class_desc->add_newline();
- class_desc->push_color(theme_cache.text_color);
- _push_normal_font();
class_desc->push_indent(1);
- if (!cd.properties[i].description.strip_edges().is_empty()) {
- _add_text(DTR(cd.properties[i].description));
+ _push_normal_font();
+ class_desc->push_color(theme_cache.text_color);
+
+ if (cd.properties[i].is_deprecated) {
+ DEPRECATED_DOC_MSG(DTR_DOC(cd.properties[i].deprecated_message), TTR("This property may be changed or removed in future versions."));
+ class_desc->add_newline();
+ class_desc->add_newline();
+ }
+
+ if (cd.properties[i].is_experimental) {
+ EXPERIMENTAL_DOC_MSG(DTR_DOC(cd.properties[i].experimental_message), TTR("This property may be changed or removed in future versions."));
+ class_desc->add_newline();
+ class_desc->add_newline();
+ }
+
+ const String descr = DTR_DOC(cd.properties[i].description).strip_edges();
+ if (!descr.is_empty()) {
+ _add_text(descr);
} else {
class_desc->add_image(get_editor_theme_icon(SNAME("Error")));
class_desc->add_text(" ");
class_desc->push_color(theme_cache.comment_color);
if (cd.is_script_doc) {
- class_desc->append_text(TTR("There is currently no description for this property."));
+ class_desc->add_text(TTR("There is currently no description for this property."));
} else {
class_desc->append_text(TTR("There is currently no description for this property. Please help us by [color=$color][url=$url]contributing one[/url][/color]!").replace("$url", CONTRIBUTE_URL).replace("$color", link_color_text));
}
- class_desc->pop();
+ class_desc->pop(); // color
}
- class_desc->pop();
- _pop_normal_font();
- class_desc->pop();
- class_desc->add_newline();
- class_desc->add_newline();
- class_desc->add_newline();
+ class_desc->pop(); // color
+ _pop_normal_font();
+ class_desc->pop(); // indent
}
}
// Constructor descriptions
if (!cd.constructors.is_empty()) {
- section_line.push_back(Pair<String, int>(TTR("Constructor Descriptions"), class_desc->get_paragraph_count() - 2));
- _push_title_font();
- class_desc->add_text(TTR("Constructor Descriptions"));
- _pop_title_font();
-
- _update_method_descriptions(cd, cd.constructors, METHOD_TYPE_CONSTRUCTOR);
+ _update_method_descriptions(cd, METHOD_TYPE_CONSTRUCTOR, cd.constructors);
}
// Method descriptions
if (!methods.is_empty()) {
- section_line.push_back(Pair<String, int>(TTR("Method Descriptions"), class_desc->get_paragraph_count() - 2));
- _push_title_font();
- class_desc->add_text(TTR("Method Descriptions"));
- _pop_title_font();
-
- _update_method_descriptions(cd, methods, METHOD_TYPE_METHOD);
+ _update_method_descriptions(cd, METHOD_TYPE_METHOD, methods);
}
// Operator descriptions
if (!cd.operators.is_empty()) {
- section_line.push_back(Pair<String, int>(TTR("Operator Descriptions"), class_desc->get_paragraph_count() - 2));
- _push_title_font();
- class_desc->add_text(TTR("Operator Descriptions"));
- _pop_title_font();
-
- _update_method_descriptions(cd, cd.operators, METHOD_TYPE_OPERATOR);
+ _update_method_descriptions(cd, METHOD_TYPE_OPERATOR, cd.operators);
}
+ // Allow the document to be scrolled slightly below the end.
+ class_desc->add_newline();
+ class_desc->add_newline();
+
// Free the scroll.
scroll_locked = false;
+
+#undef DTR_DOC
}
void EditorHelp::_request_help(const String &p_string) {
@@ -2081,6 +2325,7 @@ static void _add_text_to_rt(const String &p_bbcode, RichTextLabel *p_rt, Control
bbcode = bbcode.replace("[codeblock]\n", "[codeblock]");
bbcode = bbcode.replace("[codeblock skip-lint]\n", "[codeblock skip-lint]"); // Extra argument to silence validation warnings.
bbcode = bbcode.replace("\n[/codeblock]", "[/codeblock]");
+ bbcode = bbcode.replace("[/codeblock]\n", "[/codeblock]");
List<String> tag_stack;
bool code_tag = false;
@@ -2088,7 +2333,7 @@ static void _add_text_to_rt(const String &p_bbcode, RichTextLabel *p_rt, Control
int pos = 0;
while (pos < bbcode.length()) {
- int brk_pos = bbcode.find("[", pos);
+ int brk_pos = bbcode.find_char('[', pos);
if (brk_pos < 0) {
brk_pos = bbcode.length();
@@ -2106,7 +2351,7 @@ static void _add_text_to_rt(const String &p_bbcode, RichTextLabel *p_rt, Control
break; // Nothing else to add.
}
- int brk_end = bbcode.find("]", brk_pos + 1);
+ int brk_end = bbcode.find_char(']', brk_pos + 1);
if (brk_end == -1) {
String text = bbcode.substr(brk_pos, bbcode.length() - brk_pos);
@@ -2144,6 +2389,9 @@ static void _add_text_to_rt(const String &p_bbcode, RichTextLabel *p_rt, Control
p_rt->pop();
p_rt->pop();
p_rt->pop();
+ if (pos < bbcode.length()) {
+ p_rt->add_newline();
+ }
}
}
code_tag = false;
@@ -2154,7 +2402,7 @@ static void _add_text_to_rt(const String &p_bbcode, RichTextLabel *p_rt, Control
pos = brk_pos + 1;
} else if (tag.begins_with("method ") || tag.begins_with("constructor ") || tag.begins_with("operator ") || tag.begins_with("member ") || tag.begins_with("signal ") || tag.begins_with("enum ") || tag.begins_with("constant ") || tag.begins_with("annotation ") || tag.begins_with("theme_item ")) {
- const int tag_end = tag.find(" ");
+ const int tag_end = tag.find_char(' ');
const String link_tag = tag.substr(0, tag_end);
const String link_target = tag.substr(tag_end + 1, tag.length()).lstrip(" ");
@@ -2166,7 +2414,7 @@ static void _add_text_to_rt(const String &p_bbcode, RichTextLabel *p_rt, Control
Color target_color = link_color;
if (link_tag == "method" || link_tag == "constructor" || link_tag == "operator") {
target_color = link_method_color;
- } else if (link_tag == "member" || link_tag == "signal" || link_tag == "theme property") {
+ } else if (link_tag == "member" || link_tag == "signal" || link_tag == "theme_item") {
target_color = link_property_color;
} else if (link_tag == "annotation") {
target_color = link_annotation_color;
@@ -2182,7 +2430,7 @@ static void _add_text_to_rt(const String &p_bbcode, RichTextLabel *p_rt, Control
pos = brk_end + 1;
} else if (tag.begins_with("param ")) {
- const int tag_end = tag.find(" ");
+ const int tag_end = tag.find_char(' ');
const String param_name = tag.substr(tag_end + 1, tag.length()).lstrip(" ");
// Use monospace font with translucent background color to make code easier to distinguish from other text.
@@ -2298,7 +2546,7 @@ static void _add_text_to_rt(const String &p_bbcode, RichTextLabel *p_rt, Control
p_rt->add_text("]");
pos = brk_end + 1;
} else if (tag == "url") {
- int end = bbcode.find("[", brk_end);
+ int end = bbcode.find_char('[', brk_end);
if (end == -1) {
end = bbcode.length();
}
@@ -2322,7 +2570,7 @@ static void _add_text_to_rt(const String &p_bbcode, RichTextLabel *p_rt, Control
HashMap<String, String> bbcode_options;
for (int i = 0; i < subtags.size(); i++) {
const String &expr = subtags[i];
- int value_pos = expr.find("=");
+ int value_pos = expr.find_char('=');
if (value_pos > -1) {
bbcode_options[expr.substr(0, value_pos)] = expr.substr(value_pos + 1).unquote();
}
@@ -2343,7 +2591,7 @@ static void _add_text_to_rt(const String &p_bbcode, RichTextLabel *p_rt, Control
}
}
}
- int end = bbcode.find("[", brk_end);
+ int end = bbcode.find_char('[', brk_end);
if (end == -1) {
end = bbcode.length();
}
@@ -2668,13 +2916,13 @@ DocTools *EditorHelp::get_doc_data() {
/// EditorHelpBit ///
-void EditorHelpBit::_go_to_help(String p_what) {
+void EditorHelpBit::_go_to_help(const String &p_what) {
EditorNode::get_singleton()->set_visible_editor(EditorNode::EDITOR_SCRIPT);
ScriptEditor::get_singleton()->goto_help(p_what);
emit_signal(SNAME("request_hide"));
}
-void EditorHelpBit::_meta_clicked(String p_select) {
+void EditorHelpBit::_meta_clicked(const String &p_select) {
if (p_select.begins_with("$")) { // enum
String select = p_select.substr(1, p_select.length());
String class_name;
@@ -2967,7 +3215,7 @@ void EditorHelpTooltip::parse_tooltip(const String &p_text) {
formatted_text = TTR("Signal:");
} else if (type == "theme_item") {
description = get_theme_item_description(class_name, property_name);
- formatted_text = TTR("Theme Item:");
+ formatted_text = TTR("Theme Property:");
} else {
ERR_FAIL_MSG("Invalid tooltip type '" + type + "'. Valid types are 'class', 'property', 'method', 'signal', and 'theme_item'.");
}
diff --git a/editor/editor_help.h b/editor/editor_help.h
index 49d13c5522..5018f6570d 100644
--- a/editor/editor_help.h
+++ b/editor/editor_help.h
@@ -179,8 +179,8 @@ class EditorHelp : public VBoxContainer {
Error _goto_desc(const String &p_class);
//void _update_history_buttons();
- void _update_method_list(const Vector<DocData::MethodDoc> p_methods, MethodType p_method_type);
- void _update_method_descriptions(const DocData::ClassDoc p_classdoc, const Vector<DocData::MethodDoc> p_methods, MethodType p_method_type);
+ void _update_method_list(MethodType p_method_type, const Vector<DocData::MethodDoc> &p_methods);
+ void _update_method_descriptions(const DocData::ClassDoc &p_classdoc, MethodType p_method_type, const Vector<DocData::MethodDoc> &p_methods);
void _update_doc();
void _request_help(const String &p_string);
@@ -259,8 +259,8 @@ class EditorHelpBit : public MarginContainer {
inline static HashMap<StringName, HashMap<StringName, String>> doc_theme_item_cache;
RichTextLabel *rich_text = nullptr;
- void _go_to_help(String p_what);
- void _meta_clicked(String p_select);
+ void _go_to_help(const String &p_what);
+ void _meta_clicked(const String &p_select);
String text;
diff --git a/modules/gdscript/doc_classes/@GDScript.xml b/modules/gdscript/doc_classes/@GDScript.xml
index 933bfba5ba..9982edfbd3 100644
--- a/modules/gdscript/doc_classes/@GDScript.xml
+++ b/modules/gdscript/doc_classes/@GDScript.xml
@@ -57,12 +57,11 @@
[/codeblock]
</description>
</method>
- <method name="convert" is_deprecated="true">
+ <method name="convert" deprecated="Use [method @GlobalScope.type_convert] instead.">
<return type="Variant" />
<param index="0" name="what" type="Variant" />
<param index="1" name="type" type="int" />
<description>
- [i]Deprecated.[/i] Use [method @GlobalScope.type_convert] instead.
Converts [param what] to [param type] in the best way possible. The [param type] uses the [enum Variant.Type] values.
[codeblock]
var a = [4, 2.5, 1.2]
diff --git a/modules/gdscript/editor/gdscript_docgen.cpp b/modules/gdscript/editor/gdscript_docgen.cpp
index 659140b9b1..601db5414b 100644
--- a/modules/gdscript/editor/gdscript_docgen.cpp
+++ b/modules/gdscript/editor/gdscript_docgen.cpp
@@ -268,7 +268,9 @@ void GDScriptDocGen::_generate_docs(GDScript *p_script, const GDP::ClassNode *p_
doc.tutorials.append(td);
}
doc.is_deprecated = p_class->doc_data.is_deprecated;
+ doc.deprecated_message = p_class->doc_data.deprecated_message;
doc.is_experimental = p_class->doc_data.is_experimental;
+ doc.experimental_message = p_class->doc_data.experimental_message;
for (const GDP::ClassNode::Member &member : p_class->members) {
switch (member.type) {
@@ -295,7 +297,9 @@ void GDScriptDocGen::_generate_docs(GDScript *p_script, const GDP::ClassNode *p_
const_doc.is_value_valid = true;
const_doc.description = m_const->doc_data.description;
const_doc.is_deprecated = m_const->doc_data.is_deprecated;
+ const_doc.deprecated_message = m_const->doc_data.deprecated_message;
const_doc.is_experimental = m_const->doc_data.is_experimental;
+ const_doc.experimental_message = m_const->doc_data.experimental_message;
doc.constants.push_back(const_doc);
} break;
@@ -309,7 +313,9 @@ void GDScriptDocGen::_generate_docs(GDScript *p_script, const GDP::ClassNode *p_
method_doc.name = func_name;
method_doc.description = m_func->doc_data.description;
method_doc.is_deprecated = m_func->doc_data.is_deprecated;
+ method_doc.deprecated_message = m_func->doc_data.deprecated_message;
method_doc.is_experimental = m_func->doc_data.is_experimental;
+ method_doc.experimental_message = m_func->doc_data.experimental_message;
method_doc.qualifiers = m_func->is_static ? "static" : "";
if (m_func->return_type) {
@@ -349,7 +355,9 @@ void GDScriptDocGen::_generate_docs(GDScript *p_script, const GDP::ClassNode *p_
signal_doc.name = signal_name;
signal_doc.description = m_signal->doc_data.description;
signal_doc.is_deprecated = m_signal->doc_data.is_deprecated;
+ signal_doc.deprecated_message = m_signal->doc_data.deprecated_message;
signal_doc.is_experimental = m_signal->doc_data.is_experimental;
+ signal_doc.experimental_message = m_signal->doc_data.experimental_message;
for (const GDScriptParser::ParameterNode *p : m_signal->parameters) {
DocData::ArgumentDoc arg_doc;
@@ -371,7 +379,9 @@ void GDScriptDocGen::_generate_docs(GDScript *p_script, const GDP::ClassNode *p_
prop_doc.name = var_name;
prop_doc.description = m_var->doc_data.description;
prop_doc.is_deprecated = m_var->doc_data.is_deprecated;
+ prop_doc.deprecated_message = m_var->doc_data.deprecated_message;
prop_doc.is_experimental = m_var->doc_data.is_experimental;
+ prop_doc.experimental_message = m_var->doc_data.experimental_message;
_doctype_from_gdtype(m_var->get_datatype(), prop_doc.type, prop_doc.enumeration);
switch (m_var->property) {
@@ -417,7 +427,9 @@ void GDScriptDocGen::_generate_docs(GDScript *p_script, const GDP::ClassNode *p_
DocData::EnumDoc enum_doc;
enum_doc.description = m_enum->doc_data.description;
enum_doc.is_deprecated = m_enum->doc_data.is_deprecated;
+ enum_doc.deprecated_message = m_enum->doc_data.deprecated_message;
enum_doc.is_experimental = m_enum->doc_data.is_experimental;
+ enum_doc.experimental_message = m_enum->doc_data.experimental_message;
doc.enums[name] = enum_doc;
for (const GDP::EnumNode::Value &val : m_enum->values) {
@@ -428,7 +440,9 @@ void GDScriptDocGen::_generate_docs(GDScript *p_script, const GDP::ClassNode *p_
const_doc.enumeration = name;
const_doc.description = val.doc_data.description;
const_doc.is_deprecated = val.doc_data.is_deprecated;
+ const_doc.deprecated_message = val.doc_data.deprecated_message;
const_doc.is_experimental = val.doc_data.is_experimental;
+ const_doc.experimental_message = val.doc_data.experimental_message;
doc.constants.push_back(const_doc);
}
@@ -448,7 +462,9 @@ void GDScriptDocGen::_generate_docs(GDScript *p_script, const GDP::ClassNode *p_
const_doc.enumeration = "@unnamed_enums";
const_doc.description = m_enum_val.doc_data.description;
const_doc.is_deprecated = m_enum_val.doc_data.is_deprecated;
+ const_doc.deprecated_message = m_enum_val.doc_data.deprecated_message;
const_doc.is_experimental = m_enum_val.doc_data.is_experimental;
+ const_doc.experimental_message = m_enum_val.doc_data.experimental_message;
doc.constants.push_back(const_doc);
} break;
diff --git a/modules/gdscript/gdscript_parser.cpp b/modules/gdscript/gdscript_parser.cpp
index 649bd735c6..4625855329 100644
--- a/modules/gdscript/gdscript_parser.cpp
+++ b/modules/gdscript/gdscript_parser.cpp
@@ -3609,11 +3609,17 @@ GDScriptParser::MemberDocData GDScriptParser::parse_doc_comment(int p_line, bool
if (state == DOC_LINE_NORMAL) {
String stripped_line = doc_line.strip_edges();
- if (stripped_line.begins_with("@deprecated")) {
+ if (stripped_line == "@deprecated" || stripped_line.begins_with("@deprecated:")) {
result.is_deprecated = true;
+ if (stripped_line.begins_with("@deprecated:")) {
+ result.deprecated_message = stripped_line.trim_prefix("@deprecated:").strip_edges();
+ }
continue;
- } else if (stripped_line.begins_with("@experimental")) {
+ } else if (stripped_line == "@experimental" || stripped_line.begins_with("@experimental:")) {
result.is_experimental = true;
+ if (stripped_line.begins_with("@experimental:")) {
+ result.experimental_message = stripped_line.trim_prefix("@experimental:").strip_edges();
+ }
continue;
}
}
@@ -3712,11 +3718,17 @@ GDScriptParser::ClassDocData GDScriptParser::parse_class_doc_comment(int p_line,
result.tutorials.append(Pair<String, String>(title, link));
continue;
- } else if (stripped_line.begins_with("@deprecated")) {
+ } else if (stripped_line == "@deprecated" || stripped_line.begins_with("@deprecated:")) {
result.is_deprecated = true;
+ if (stripped_line.begins_with("@deprecated:")) {
+ result.deprecated_message = stripped_line.trim_prefix("@deprecated:").strip_edges();
+ }
continue;
- } else if (stripped_line.begins_with("@experimental")) {
+ } else if (stripped_line == "@experimental" || stripped_line.begins_with("@experimental:")) {
result.is_experimental = true;
+ if (stripped_line.begins_with("@experimental:")) {
+ result.experimental_message = stripped_line.trim_prefix("@experimental:").strip_edges();
+ }
continue;
}
}
diff --git a/modules/gdscript/gdscript_parser.h b/modules/gdscript/gdscript_parser.h
index c064a2d0f4..6664e6df04 100644
--- a/modules/gdscript/gdscript_parser.h
+++ b/modules/gdscript/gdscript_parser.h
@@ -274,13 +274,17 @@ public:
String description;
Vector<Pair<String, String>> tutorials;
bool is_deprecated = false;
+ String deprecated_message;
bool is_experimental = false;
+ String experimental_message;
};
struct MemberDocData {
String description;
bool is_deprecated = false;
+ String deprecated_message;
bool is_experimental = false;
+ String experimental_message;
};
#endif // TOOLS_ENABLED
diff --git a/modules/gltf/doc_classes/GLTFDocument.xml b/modules/gltf/doc_classes/GLTFDocument.xml
index 1b52a82298..1f172633da 100644
--- a/modules/gltf/doc_classes/GLTFDocument.xml
+++ b/modules/gltf/doc_classes/GLTFDocument.xml
@@ -10,7 +10,7 @@
</description>
<tutorials>
<link title="Runtime file loading and saving">$DOCS_URL/tutorials/io/runtime_file_loading_and_saving.html</link>
- <link title="glTF 'What the duck?' guide">https://www.khronos.org/files/gltf20-reference-guide.pdf</link>
+ <link title="glTF &apos;What the duck?&apos; guide">https://www.khronos.org/files/gltf20-reference-guide.pdf</link>
<link title="Khronos glTF specification">https://registry.khronos.org/glTF/</link>
</tutorials>
<methods>
diff --git a/modules/gltf/doc_classes/GLTFPhysicsBody.xml b/modules/gltf/doc_classes/GLTFPhysicsBody.xml
index ca66cd54b0..5cfc22f6b2 100644
--- a/modules/gltf/doc_classes/GLTFPhysicsBody.xml
+++ b/modules/gltf/doc_classes/GLTFPhysicsBody.xml
@@ -55,7 +55,7 @@
<member name="inertia_orientation" type="Quaternion" setter="set_inertia_orientation" getter="get_inertia_orientation" default="Quaternion(0, 0, 0, 1)">
The inertia orientation of the physics body. This defines the rotation of the inertia's principle axes relative to the object's local axes. This is only used when the body type is "rigid" or "vehicle" and [member inertia_diagonal] is set to a non-zero value.
</member>
- <member name="inertia_tensor" type="Basis" setter="set_inertia_tensor" getter="get_inertia_tensor" default="Basis(0, 0, 0, 0, 0, 0, 0, 0, 0)" is_deprecated="true">
+ <member name="inertia_tensor" type="Basis" setter="set_inertia_tensor" getter="get_inertia_tensor" default="Basis(0, 0, 0, 0, 0, 0, 0, 0, 0)" deprecated="">
The inertia tensor of the physics body, in kilogram meter squared (kg⋅m²). This is only used when the body type is "rigid" or "vehicle".
When converted to a Godot [RigidBody3D] node, if this value is zero, then the inertia will be calculated automatically.
</member>
diff --git a/modules/gridmap/doc_classes/GridMap.xml b/modules/gridmap/doc_classes/GridMap.xml
index 3094a7bf80..da11cd216f 100644
--- a/modules/gridmap/doc_classes/GridMap.xml
+++ b/modules/gridmap/doc_classes/GridMap.xml
@@ -138,11 +138,11 @@
Returns the position of a grid cell in the GridMap's local coordinate space. To convert the returned value into global coordinates, use [method Node3D.to_global]. See also [method map_to_local].
</description>
</method>
- <method name="resource_changed" is_deprecated="true">
+ <method name="resource_changed" deprecated="Use [signal Resource.changed] instead.">
<return type="void" />
<param index="0" name="resource" type="Resource" />
<description>
- [i]Obsoleted.[/i] Use [signal Resource.changed] instead.
+ This method does nothing.
</description>
</method>
<method name="set_cell_item">
diff --git a/modules/multiplayer/doc_classes/SceneReplicationConfig.xml b/modules/multiplayer/doc_classes/SceneReplicationConfig.xml
index 1a51e4b6e9..8b9203d316 100644
--- a/modules/multiplayer/doc_classes/SceneReplicationConfig.xml
+++ b/modules/multiplayer/doc_classes/SceneReplicationConfig.xml
@@ -51,20 +51,18 @@
Returns whether the property identified by the given [param path] is configured to be synchronized on spawn.
</description>
</method>
- <method name="property_get_sync" is_deprecated="true">
+ <method name="property_get_sync" deprecated="Use [method property_get_replication_mode] instead.">
<return type="bool" />
<param index="0" name="path" type="NodePath" />
<description>
Returns whether the property identified by the given [param path] is configured to be synchronized on process.
- [i]Deprecated.[/i] Use [method property_get_replication_mode] instead.
</description>
</method>
- <method name="property_get_watch" is_deprecated="true">
+ <method name="property_get_watch" deprecated="Use [method property_get_replication_mode] instead.">
<return type="bool" />
<param index="0" name="path" type="NodePath" />
<description>
Returns whether the property identified by the given [param path] is configured to be reliably synchronized when changes are detected on process.
- [i]Deprecated.[/i] Use [method property_get_replication_mode] instead.
</description>
</method>
<method name="property_set_replication_mode">
@@ -83,22 +81,20 @@
Sets whether the property identified by the given [param path] is configured to be synchronized on spawn.
</description>
</method>
- <method name="property_set_sync" is_deprecated="true">
+ <method name="property_set_sync" deprecated="Use [method property_set_replication_mode] with [constant REPLICATION_MODE_ALWAYS] instead.">
<return type="void" />
<param index="0" name="path" type="NodePath" />
<param index="1" name="enabled" type="bool" />
<description>
Sets whether the property identified by the given [param path] is configured to be synchronized on process.
- [i]Deprecated.[/i] Use [method property_set_replication_mode] with [constant REPLICATION_MODE_ALWAYS] instead.
</description>
</method>
- <method name="property_set_watch" is_deprecated="true">
+ <method name="property_set_watch" deprecated="Use [method property_set_replication_mode] with [constant REPLICATION_MODE_ON_CHANGE] instead.">
<return type="void" />
<param index="0" name="path" type="NodePath" />
<param index="1" name="enabled" type="bool" />
<description>
Sets whether the property identified by the given [param path] is configured to be reliably synchronized when changes are detected on process.
- [i]Deprecated.[/i] Use [method property_set_replication_mode] with [constant REPLICATION_MODE_ON_CHANGE] instead.
</description>
</method>
<method name="remove_property">