2
0
Эх сурвалжийг харах

Merge pull request #57947 from akien-mga/3.x-cherrypicks

Rémi Verschelde 3 жил өмнө
parent
commit
2771e3a0ae
100 өөрчлөгдсөн 130 нэмэгдсэн , 60 устгасан
  1. 1 1
      CHANGELOG.md
  2. 5 3
      CONTRIBUTING.md
  3. 1 1
      core/command_queue_mt.h
  4. 1 1
      core/compressed_translation.h
  5. 1 1
      core/io/marshalls.cpp
  6. 45 7
      core/math/expression.cpp
  7. 2 2
      core/math/face3.h
  8. 1 1
      core/pool_allocator.h
  9. 1 1
      doc/classes/AudioStreamPlayer2D.xml
  10. 1 1
      doc/classes/AudioStreamPlayer3D.xml
  11. 1 1
      doc/classes/BakedLightmap.xml
  12. 2 1
      doc/classes/Input.xml
  13. 1 1
      doc/classes/NavigationAgent.xml
  14. 1 1
      doc/classes/NavigationAgent2D.xml
  15. 12 0
      doc/classes/Node.xml
  16. 1 1
      doc/classes/Object.xml
  17. 1 1
      doc/classes/Viewport.xml
  18. 5 5
      doc/tools/make_rst.py
  19. 7 3
      doc/translations/extract.py
  20. 1 1
      drivers/gles3/rasterizer_scene_gles3.cpp
  21. 1 1
      drivers/gles3/shaders/scene.glsl
  22. 1 1
      editor/editor_audio_buses.cpp
  23. 9 1
      editor/editor_feature_profile.cpp
  24. 1 1
      editor/editor_file_system.cpp
  25. 1 1
      editor/editor_inspector.cpp
  26. 1 1
      editor/rename_dialog.cpp
  27. 1 1
      main/tests/test_math.cpp
  28. 0 0
      misc/dist/osx_tools.app/Contents/Resources/af.lproj/InfoPlist.strings
  29. 0 0
      misc/dist/osx_tools.app/Contents/Resources/ar.lproj/InfoPlist.strings
  30. 0 0
      misc/dist/osx_tools.app/Contents/Resources/az.lproj/InfoPlist.strings
  31. 0 0
      misc/dist/osx_tools.app/Contents/Resources/bg.lproj/InfoPlist.strings
  32. 0 0
      misc/dist/osx_tools.app/Contents/Resources/bn.lproj/InfoPlist.strings
  33. 0 0
      misc/dist/osx_tools.app/Contents/Resources/br.lproj/InfoPlist.strings
  34. 0 0
      misc/dist/osx_tools.app/Contents/Resources/ca.lproj/InfoPlist.strings
  35. 0 0
      misc/dist/osx_tools.app/Contents/Resources/cs.lproj/InfoPlist.strings
  36. 0 0
      misc/dist/osx_tools.app/Contents/Resources/da.lproj/InfoPlist.strings
  37. 0 0
      misc/dist/osx_tools.app/Contents/Resources/de.lproj/InfoPlist.strings
  38. 0 0
      misc/dist/osx_tools.app/Contents/Resources/el.lproj/InfoPlist.strings
  39. 0 0
      misc/dist/osx_tools.app/Contents/Resources/eo.lproj/InfoPlist.strings
  40. 0 0
      misc/dist/osx_tools.app/Contents/Resources/es.lproj/InfoPlist.strings
  41. 0 0
      misc/dist/osx_tools.app/Contents/Resources/es_AR.lproj/InfoPlist.strings
  42. 0 0
      misc/dist/osx_tools.app/Contents/Resources/et.lproj/InfoPlist.strings
  43. 0 0
      misc/dist/osx_tools.app/Contents/Resources/eu.lproj/InfoPlist.strings
  44. 0 0
      misc/dist/osx_tools.app/Contents/Resources/fa.lproj/InfoPlist.strings
  45. 0 0
      misc/dist/osx_tools.app/Contents/Resources/fi.lproj/InfoPlist.strings
  46. 0 0
      misc/dist/osx_tools.app/Contents/Resources/fil.lproj/InfoPlist.strings
  47. 0 0
      misc/dist/osx_tools.app/Contents/Resources/fr.lproj/InfoPlist.strings
  48. 0 0
      misc/dist/osx_tools.app/Contents/Resources/ga.lproj/InfoPlist.strings
  49. 0 0
      misc/dist/osx_tools.app/Contents/Resources/gl.lproj/InfoPlist.strings
  50. 0 0
      misc/dist/osx_tools.app/Contents/Resources/he.lproj/InfoPlist.strings
  51. 0 0
      misc/dist/osx_tools.app/Contents/Resources/hi.lproj/InfoPlist.strings
  52. 0 0
      misc/dist/osx_tools.app/Contents/Resources/hr.lproj/InfoPlist.strings
  53. 0 0
      misc/dist/osx_tools.app/Contents/Resources/hu.lproj/InfoPlist.strings
  54. 0 0
      misc/dist/osx_tools.app/Contents/Resources/id.lproj/InfoPlist.strings
  55. 0 0
      misc/dist/osx_tools.app/Contents/Resources/is.lproj/InfoPlist.strings
  56. 0 0
      misc/dist/osx_tools.app/Contents/Resources/it.lproj/InfoPlist.strings
  57. 0 0
      misc/dist/osx_tools.app/Contents/Resources/ja.lproj/InfoPlist.strings
  58. 0 0
      misc/dist/osx_tools.app/Contents/Resources/ka.lproj/InfoPlist.strings
  59. 0 0
      misc/dist/osx_tools.app/Contents/Resources/km.lproj/InfoPlist.strings
  60. 0 0
      misc/dist/osx_tools.app/Contents/Resources/ko.lproj/InfoPlist.strings
  61. 0 0
      misc/dist/osx_tools.app/Contents/Resources/lt.lproj/InfoPlist.strings
  62. 0 0
      misc/dist/osx_tools.app/Contents/Resources/lv.lproj/InfoPlist.strings
  63. 0 0
      misc/dist/osx_tools.app/Contents/Resources/mi.lproj/InfoPlist.strings
  64. 0 0
      misc/dist/osx_tools.app/Contents/Resources/mk.lproj/InfoPlist.strings
  65. 0 0
      misc/dist/osx_tools.app/Contents/Resources/ml.lproj/InfoPlist.strings
  66. 0 0
      misc/dist/osx_tools.app/Contents/Resources/mr.lproj/InfoPlist.strings
  67. 0 0
      misc/dist/osx_tools.app/Contents/Resources/ms.lproj/InfoPlist.strings
  68. 0 0
      misc/dist/osx_tools.app/Contents/Resources/nb.lproj/InfoPlist.strings
  69. 0 0
      misc/dist/osx_tools.app/Contents/Resources/nl.lproj/InfoPlist.strings
  70. 0 0
      misc/dist/osx_tools.app/Contents/Resources/or.lproj/InfoPlist.strings
  71. 0 0
      misc/dist/osx_tools.app/Contents/Resources/pl.lproj/InfoPlist.strings
  72. 0 0
      misc/dist/osx_tools.app/Contents/Resources/pt.lproj/InfoPlist.strings
  73. 0 0
      misc/dist/osx_tools.app/Contents/Resources/pt_BR.lproj/InfoPlist.strings
  74. 0 0
      misc/dist/osx_tools.app/Contents/Resources/ro.lproj/InfoPlist.strings
  75. 0 0
      misc/dist/osx_tools.app/Contents/Resources/ru.lproj/InfoPlist.strings
  76. 0 0
      misc/dist/osx_tools.app/Contents/Resources/si.lproj/InfoPlist.strings
  77. 0 0
      misc/dist/osx_tools.app/Contents/Resources/sk.lproj/InfoPlist.strings
  78. 0 0
      misc/dist/osx_tools.app/Contents/Resources/sl.lproj/InfoPlist.strings
  79. 0 0
      misc/dist/osx_tools.app/Contents/Resources/sq.lproj/InfoPlist.strings
  80. 0 0
      misc/dist/osx_tools.app/Contents/Resources/sr-Cyrl.lproj/InfoPlist.strings
  81. 0 0
      misc/dist/osx_tools.app/Contents/Resources/sr-Latn.lproj/InfoPlist.strings
  82. 0 0
      misc/dist/osx_tools.app/Contents/Resources/sv.lproj/InfoPlist.strings
  83. 0 0
      misc/dist/osx_tools.app/Contents/Resources/ta.lproj/InfoPlist.strings
  84. 0 0
      misc/dist/osx_tools.app/Contents/Resources/te.lproj/InfoPlist.strings
  85. 0 0
      misc/dist/osx_tools.app/Contents/Resources/th.lproj/InfoPlist.strings
  86. 0 0
      misc/dist/osx_tools.app/Contents/Resources/tr.lproj/InfoPlist.strings
  87. 0 0
      misc/dist/osx_tools.app/Contents/Resources/tt.lproj/InfoPlist.strings
  88. 0 0
      misc/dist/osx_tools.app/Contents/Resources/tzm.lproj/InfoPlist.strings
  89. 0 0
      misc/dist/osx_tools.app/Contents/Resources/uk.lproj/InfoPlist.strings
  90. 0 0
      misc/dist/osx_tools.app/Contents/Resources/ur_PK.lproj/InfoPlist.strings
  91. 0 0
      misc/dist/osx_tools.app/Contents/Resources/vi.lproj/InfoPlist.strings
  92. 0 0
      misc/dist/osx_tools.app/Contents/Resources/zh_CN.lproj/InfoPlist.strings
  93. 0 0
      misc/dist/osx_tools.app/Contents/Resources/zh_HK.lproj/InfoPlist.strings
  94. 0 0
      misc/dist/osx_tools.app/Contents/Resources/zh_TW.lproj/InfoPlist.strings
  95. 8 8
      misc/hooks/pre-commit-black
  96. 8 8
      misc/hooks/pre-commit-clang-format
  97. 5 0
      misc/scripts/codespell.sh
  98. 1 1
      modules/camera/camera_osx.h
  99. 1 1
      modules/camera/camera_osx.mm
  100. 1 1
      modules/fbx/fbx_parser/ByteSwapper.h

+ 1 - 1
CHANGELOG.md

@@ -403,7 +403,7 @@ See the [release announcement](https://godotengine.org/article/godot-3-4-is-rele
 - Label: Fix valign with stylebox borders ([GH-50478](https://github.com/godotengine/godot/pull/50478)).
 - RichTextLabel: Fix auto-wrapping on CJK texts ([GH-49280](https://github.com/godotengine/godot/pull/49280)).
 - RichTextLabel: Fix character horizontal offset calculation ([GH-52752](https://github.com/godotengine/godot/pull/52752)).
-- RichTextLabel: Honor content marging when drawing font shadow ([GH-54054](https://github.com/godotengine/godot/pull/54054)).
+- RichTextLabel: Honor content margin when drawing font shadow ([GH-54054](https://github.com/godotengine/godot/pull/54054)).
 - RichTextLabel: Fix meta link detection when used inside a fill tag ([GH-54114](https://github.com/godotengine/godot/pull/54114)).
 - TabContainer: Fix moving dropped tab to incorrect child index ([GH-51177](https://github.com/godotengine/godot/pull/51177)).
 - Tabs: Fix invisible tabs not being ignored ([GH-53551](https://github.com/godotengine/godot/pull/53551)).

+ 5 - 3
CONTRIBUTING.md

@@ -66,8 +66,10 @@ understand that:
 
 To speed up our work, **please upload a minimal project** that isolates
 and reproduces the issue. This is always the **best way for us to fix it**.
-You can attach a ZIP file with the minimal project directly to the bug report,
-by drag and dropping the file in the GitHub edition field.
+We recommend attaching a ZIP file with the minimal project directly to the bug report,
+by drag and dropping the file in the GitHub edition field. This ensures the file
+can remain available for a long period of time. Only use third-party file hosts
+if your ZIP file isn't accepted by GitHub because it's too large.
 
 We recommend always attaching a minimal reproduction project, even if the issue
 may seem simple to reproduce manually.
@@ -79,7 +81,7 @@ it'll be considered too difficult to diagnose.
 Now that you've read the guidelines, click the link below to create a
 bug report:
 
-- **[Report a bug](https://github.com/godotengine/godot/issues/new?assignees=&labels=&template=bug_report.md&title=)**
+- **[Report a bug](https://github.com/godotengine/godot/issues/new?assignees=&labels=&template=bug_report.yml)**
 
 ## Proposing features or improvements
 

+ 1 - 1
core/command_queue_mt.h

@@ -299,7 +299,7 @@ class CommandQueueMT {
 	DECL_CMD(0)
 	SPACE_SEP_LIST(DECL_CMD, 13)
 
-	/* comands that return */
+	/* commands that return */
 	DECL_CMD_RET(0)
 	SPACE_SEP_LIST(DECL_CMD_RET, 13)
 

+ 1 - 1
core/compressed_translation.h

@@ -38,7 +38,7 @@ class PHashTranslation : public Translation {
 
 	//this translation uses a sort of modified perfect hash algorithm
 	//it requires hashing strings twice and then does a binary search,
-	//so it's slower, but at the same time it has an extreemly high chance
+	//so it's slower, but at the same time it has an extremely high chance
 	//of catching untranslated strings
 
 	//load/store friendly types

+ 1 - 1
core/io/marshalls.cpp

@@ -764,7 +764,7 @@ static void _encode_string(const String &p_string, uint8_t *&buf, int &r_len) {
 }
 
 Error encode_variant(const Variant &p_variant, uint8_t *r_buffer, int &r_len, bool p_full_objects, int p_depth) {
-	ERR_FAIL_COND_V_MSG(p_depth > Variant::MAX_RECURSION_DEPTH, ERR_OUT_OF_MEMORY, "Potential inifite recursion detected. Bailing.");
+	ERR_FAIL_COND_V_MSG(p_depth > Variant::MAX_RECURSION_DEPTH, ERR_OUT_OF_MEMORY, "Potential infinite recursion detected. Bailing.");
 	uint8_t *buf = r_buffer;
 
 	r_len = 0;

+ 45 - 7
core/math/expression.cpp

@@ -749,6 +749,14 @@ static bool _is_number(CharType c) {
 	return (c >= '0' && c <= '9');
 }
 
+static bool _is_hex_digit(char32_t c) {
+	return (c >= '0' && c <= '9') || (c >= 'a' && c <= 'f') || (c >= 'A' && c <= 'F');
+}
+
+static bool _is_binary_digit(char32_t c) {
+	return (c == '0' || c == '1');
+}
+
 Error Expression::_get_token(Token &r_token) {
 	while (true) {
 #define GET_CHAR() (str_ofs >= expression.length() ? 0 : expression[str_ofs++])
@@ -1011,30 +1019,58 @@ Error Expression::_get_token(Token &r_token) {
 					String num;
 #define READING_SIGN 0
 #define READING_INT 1
-#define READING_DEC 2
-#define READING_EXP 3
-#define READING_DONE 4
+#define READING_HEX 2
+#define READING_BIN 3
+#define READING_DEC 4
+#define READING_EXP 5
+#define READING_DONE 6
 					int reading = READING_INT;
 
 					CharType c = cchar;
 					bool exp_sign = false;
 					bool exp_beg = false;
+					bool bin_beg = false;
+					bool hex_beg = false;
 					bool is_float = false;
+					bool is_first_char = true;
 
 					while (true) {
 						switch (reading) {
 							case READING_INT: {
 								if (_is_number(c)) {
-									//pass
+									if (is_first_char && c == '0') {
+										if (next_char == 'b') {
+											reading = READING_BIN;
+										} else if (next_char == 'x') {
+											reading = READING_HEX;
+										}
+									}
 								} else if (c == '.') {
 									reading = READING_DEC;
 									is_float = true;
 								} else if (c == 'e') {
 									reading = READING_EXP;
+									is_float = true;
 								} else {
 									reading = READING_DONE;
 								}
 
+							} break;
+							case READING_BIN: {
+								if (bin_beg && !_is_binary_digit(c)) {
+									reading = READING_DONE;
+								} else if (c == 'b') {
+									bin_beg = true;
+								}
+
+							} break;
+							case READING_HEX: {
+								if (hex_beg && !_is_hex_digit(c)) {
+									reading = READING_DONE;
+								} else if (c == 'x') {
+									hex_beg = true;
+								}
+
 							} break;
 							case READING_DEC: {
 								if (_is_number(c)) {
@@ -1051,9 +1087,6 @@ Error Expression::_get_token(Token &r_token) {
 									exp_beg = true;
 
 								} else if ((c == '-' || c == '+') && !exp_sign && !exp_beg) {
-									if (c == '-') {
-										is_float = true;
-									}
 									exp_sign = true;
 
 								} else {
@@ -1067,6 +1100,7 @@ Error Expression::_get_token(Token &r_token) {
 						}
 						num += String::chr(c);
 						c = GET_CHAR();
+						is_first_char = false;
 					}
 
 					str_ofs--;
@@ -1075,6 +1109,10 @@ Error Expression::_get_token(Token &r_token) {
 
 					if (is_float) {
 						r_token.value = num.to_double();
+					} else if (bin_beg) {
+						r_token.value = num.bin_to_int64();
+					} else if (hex_beg) {
+						r_token.value = num.hex_to_int64();
 					} else {
 						r_token.value = num.to_int64();
 					}

+ 2 - 2
core/math/face3.h

@@ -50,8 +50,8 @@ public:
 	/**
 	 *
 	 * @param p_plane plane used to split the face
-	 * @param p_res array of at least 3 faces, amount used in functio return
-	 * @param p_is_point_over array of at least 3 booleans, determining which face is over the plane, amount used in functio return
+	 * @param p_res array of at least 3 faces, amount used in function return
+	 * @param p_is_point_over array of at least 3 booleans, determining which face is over the plane, amount used in function return
 	 * @param _epsilon constant used for numerical error rounding, to add "thickness" to the plane (so coplanar points can happen)
 	 * @return amount of faces generated by the split, either 0 (means no split possible), 2 or 3
 	 */

+ 1 - 1
core/pool_allocator.h

@@ -37,7 +37,7 @@
 	@author Juan Linietsky <[email protected]>
  * Generic Pool Allocator.
  * This is a generic memory pool allocator, with locking, compacting and alignment. (@TODO alignment)
- * It used as a standard way to manage alloction in a specific region of memory, such as texture memory,
+ * It used as a standard way to manage allocation in a specific region of memory, such as texture memory,
  * audio sample memory, or just any kind of memory overall.
  * (@TODO) abstraction should be greater, because in many platforms, you need to manage a nonreachable memory.
 */

+ 1 - 1
doc/classes/AudioStreamPlayer2D.xml

@@ -47,7 +47,7 @@
 	</methods>
 	<members>
 		<member name="area_mask" type="int" setter="set_area_mask" getter="get_area_mask" default="1">
-			Areas in which this sound plays.
+			Determines which [Area2D] layers affect the sound for reverb and audio bus effects. Areas can be used to redirect [AudioStream]s so that they play in a certain audio bus. An example of how you might use this is making a "water" area so that sounds played in the water are redirected through an audio bus to make them sound like they are being played underwater.
 		</member>
 		<member name="attenuation" type="float" setter="set_attenuation" getter="get_attenuation" default="1.0">
 			Dampens audio over distance with this as an exponent.

+ 1 - 1
doc/classes/AudioStreamPlayer3D.xml

@@ -48,7 +48,7 @@
 	</methods>
 	<members>
 		<member name="area_mask" type="int" setter="set_area_mask" getter="get_area_mask" default="1">
-			Areas in which this sound plays.
+			Determines which [Area] layers affect the sound for reverb and audio bus effects. Areas can be used to redirect [AudioStream]s so that they play in a certain audio bus. An example of how you might use this is making a "water" area so that sounds played in the water are redirected through an audio bus to make them sound like they are being played underwater.
 		</member>
 		<member name="attenuation_filter_cutoff_hz" type="float" setter="set_attenuation_filter_cutoff_hz" getter="get_attenuation_filter_cutoff_hz" default="5000.0">
 			Dampens audio using a low-pass filter above this frequency, in Hz. To disable the dampening effect entirely, set this to [code]20500[/code] as this frequency is above the human hearing limit.

+ 1 - 1
doc/classes/BakedLightmap.xml

@@ -81,7 +81,7 @@
 			The calculated light data.
 		</member>
 		<member name="quality" type="int" setter="set_bake_quality" getter="get_bake_quality" enum="BakedLightmap.BakeQuality" default="1">
-			Determines the amount of samples per texel used in indrect light baking. The amount of samples for each quality level can be configured in the project settings.
+			Determines the amount of samples per texel used in indirect light baking. The amount of samples for each quality level can be configured in the project settings.
 		</member>
 		<member name="use_color" type="bool" setter="set_use_color" getter="is_using_color" default="true">
 			Store full color values in the lightmap textures. When disabled, lightmap textures will store a single brightness channel. Can be disabled to reduce disk usage if the scene contains only white lights or you don't mind losing color information in indirect lighting.

+ 2 - 1
doc/classes/Input.xml

@@ -408,7 +408,8 @@
 			<return type="void" />
 			<argument index="0" name="to" type="Vector2" />
 			<description>
-				Sets the mouse position to the specified vector.
+				Sets the mouse position to the specified vector, provided in pixels and relative to an origin at the upper left corner of the game window.
+				Mouse position is clipped to the limits of the screen resolution, or to the limits of the game window if [enum MouseMode] is set to [constant MOUSE_MODE_CONFINED].
 			</description>
 		</method>
 	</methods>

+ 1 - 1
doc/classes/NavigationAgent.xml

@@ -123,7 +123,7 @@
 			The distance threshold before a target is considered to be reached. This will allow an agent to not have to hit a point on the path exactly, but in the area.
 		</member>
 		<member name="time_horizon" type="float" setter="set_time_horizon" getter="get_time_horizon" default="5.0">
-			The minimal amount of time for which this agent's velocities, that are computed with the collision avoidance algorithim, are safe with respect to other agents. The larger the number, the sooner the agent will respond to other agents, but the less freedom in choosing its velocities. Must be positive.
+			The minimal amount of time for which this agent's velocities, that are computed with the collision avoidance algorithm, are safe with respect to other agents. The larger the number, the sooner the agent will respond to other agents, but the less freedom in choosing its velocities. Must be positive.
 		</member>
 	</members>
 	<signals>

+ 1 - 1
doc/classes/NavigationAgent2D.xml

@@ -117,7 +117,7 @@
 			The distance threshold before a target is considered to be reached. This will allow an agent to not have to hit a point on the path exactly, but in the area.
 		</member>
 		<member name="time_horizon" type="float" setter="set_time_horizon" getter="get_time_horizon" default="20.0">
-			The minimal amount of time for which this agent's velocities, that are computed with the collision avoidance algorithim, are safe with respect to other agents. The larger the number, the sooner the agent will respond to other agents, but the less freedom in choosing its velocities. Must be positive.
+			The minimal amount of time for which this agent's velocities, that are computed with the collision avoidance algorithm, are safe with respect to other agents. The larger the number, the sooner the agent will respond to other agents, but the less freedom in choosing its velocities. Must be positive.
 		</member>
 	</members>
 	<signals>

+ 12 - 0
doc/classes/Node.xml

@@ -718,6 +718,18 @@
 		</member>
 	</members>
 	<signals>
+		<signal name="child_entered_tree">
+			<argument index="0" name="node" type="Node" />
+			<description>
+				Emitted when a child node enters the scene tree, either because it entered on its own or because this node entered with it.
+			</description>
+		</signal>
+		<signal name="child_exited_tree">
+			<argument index="0" name="node" type="Node" />
+			<description>
+				Emitted when a child node exits the scene tree, either because it exited on its own or because this node exited.
+			</description>
+		</signal>
 		<signal name="ready">
 			<description>
 				Emitted when the node is ready.

+ 1 - 1
doc/classes/Object.xml

@@ -340,7 +340,7 @@
 			<argument index="0" name="property" type="String" />
 			<argument index="1" name="value" type="Variant" />
 			<description>
-				Assigns a new value to the given property. If the [code]property[/code] does not exist, nothing will happen.
+				Assigns a new value to the given property. If the [code]property[/code] does not exist or the given value's type doesn't match, nothing will happen.
 				[b]Note:[/b] In C#, the property name must be specified as snake_case if it is defined by a built-in Godot node. This doesn't apply to user-defined properties where you should use the same convention as in the C# source (typically PascalCase).
 			</description>
 		</method>

+ 1 - 1
doc/classes/Viewport.xml

@@ -56,7 +56,7 @@
 		<method name="get_mouse_position" qualifiers="const">
 			<return type="Vector2" />
 			<description>
-				Returns the mouse's positon in this [Viewport] using the coordinate system of this [Viewport].
+				Returns the mouse's position in this [Viewport] using the coordinate system of this [Viewport].
 			</description>
 		</method>
 		<method name="get_render_info">

+ 5 - 5
doc/tools/make_rst.py

@@ -471,19 +471,19 @@ def make_rst_class(class_def, state, dry_run, output_dir):  # type: (ClassDef, S
     # Inheritance tree
     # Ascendants
     if class_def.inherits:
-        inh = class_def.inherits.strip()
+        inherits = class_def.inherits.strip()
         f.write("**" + translate("Inherits:") + "** ")
         first = True
-        while inh in state.classes:
+        while inherits in state.classes:
             if not first:
                 f.write(" **<** ")
             else:
                 first = False
 
-            f.write(make_type(inh, state))
-            inode = state.classes[inh].inherits
+            f.write(make_type(inherits, state))
+            inode = state.classes[inherits].inherits
             if inode:
-                inh = inode.strip()
+                inherits = inode.strip()
             else:
                 break
         f.write("\n\n")

+ 7 - 3
doc/translations/extract.py

@@ -218,10 +218,14 @@ def _make_translation_catalog(classes):
         desc_list = classes[class_name]
         for elem in desc_list.doc.iter():
             if elem.tag in EXTRACT_TAGS:
-                if not elem.text or len(elem.text) == 0:
+                elem_text = elem.text
+                if elem.tag == "link":
+                    elem_text = elem.attrib["title"] if "title" in elem.attrib else ""
+                if not elem_text or len(elem_text) == 0:
                     continue
-                line_no = elem._start_line_number if elem.text[0] != "\n" else elem._start_line_number + 1
-                desc_str = elem.text.strip()
+
+                line_no = elem._start_line_number if elem_text[0] != "\n" else elem._start_line_number + 1
+                desc_str = elem_text.strip()
                 code_block_regions = _make_codeblock_regions(desc_str, desc_list.path)
                 desc_msg = _strip_and_split_desc(desc_str, code_block_regions)
                 desc_obj = Desc(line_no, desc_msg, desc_list)

+ 1 - 1
drivers/gles3/rasterizer_scene_gles3.cpp

@@ -1242,7 +1242,7 @@ bool RasterizerSceneGLES3::_setup_material(RasterizerStorageGLES3::Material *p_m
 		glBindTexture(target, tex);
 
 		if (t && storage->config.srgb_decode_supported) {
-			//if SRGB decode extension is present, simply switch the texture to whathever is needed
+			//if SRGB decode extension is present, simply switch the texture to whatever is needed
 			bool must_srgb = false;
 
 			if (t->srgb && (texture_hints[i] == ShaderLanguage::ShaderNode::Uniform::HINT_ALBEDO || texture_hints[i] == ShaderLanguage::ShaderNode::Uniform::HINT_BLACK_ALBEDO)) {

+ 1 - 1
drivers/gles3/shaders/scene.glsl

@@ -1812,7 +1812,7 @@ void main() {
 		discard;
 #endif //ubershader-runtime
 
-	//lay out everything, whathever is unused is optimized away anyway
+	//lay out everything, whatever is unused is optimized away anyway
 	highp vec3 vertex = vertex_interp;
 	vec3 view = -normalize(vertex_interp);
 	vec3 albedo = vec3(1.0);

+ 1 - 1
editor/editor_audio_buses.cpp

@@ -324,7 +324,7 @@ float EditorAudioBus::_normalized_volume_to_scaled_db(float normalized) {
 	/* There are three different formulas for the conversion from normalized
 	 * values to relative decibal values.
 	 * One formula is an exponential graph which intends to counteract
-	 * the logorithmic nature of human hearing. This is an approximation
+	 * the logarithmic nature of human hearing. This is an approximation
 	 * of the behaviour of a 'logarithmic potentiometer' found on most
 	 * musical instruments and also emulated in popular software.
 	 * The other two equations are hand-tuned linear tapers that intend to

+ 9 - 1
editor/editor_feature_profile.cpp

@@ -595,7 +595,15 @@ void EditorFeatureProfileManager::_class_list_item_selected() {
 	List<PropertyInfo> props;
 	ClassDB::get_property_list(class_name, &props, true);
 
-	if (props.size() > 0) {
+	bool has_editor_props = false;
+	for (List<PropertyInfo>::Element *E = props.front(); E; E = E->next()) {
+		if (E->get().usage & PROPERTY_USAGE_EDITOR) {
+			has_editor_props = true;
+			break;
+		}
+	}
+
+	if (has_editor_props) {
 		TreeItem *properties = property_list->create_item(root);
 		properties->set_text(0, TTR("Class Properties:"));
 

+ 1 - 1
editor/editor_file_system.cpp

@@ -1544,7 +1544,7 @@ Error EditorFileSystem::_reimport_group(const String &p_group_file, const Vector
 			for (List<String>::Element *E = sk.front(); E; E = E->next()) {
 				String param = E->get();
 				Variant value = config->get_value("params", param);
-				//override with whathever is in file
+				//override with whatever is in file
 				source_file_options[p_files[i]][param] = value;
 			}
 		}

+ 1 - 1
editor/editor_inspector.cpp

@@ -1709,7 +1709,7 @@ void EditorInspector::update_tree() {
 						if (F->get().label != String()) {
 							ep->set_label(F->get().label);
 						} else {
-							//use existin one
+							//use existing one
 							ep->set_label(name);
 						}
 						for (int i = 0; i < F->get().properties.size(); i++) {

+ 1 - 1
editor/rename_dialog.cpp

@@ -535,7 +535,7 @@ String RenameDialog::_postprocess(const String &subject) {
 		// To Lowercase
 		result = result.to_lower();
 	} else if (case_id == 2) {
-		// To Upercase
+		// To Uppercase
 		result = result.to_upper();
 	}
 

+ 1 - 1
main/tests/test_math.cpp

@@ -319,7 +319,7 @@ public:
 						curly_stack++;
 						break;
 					} else {
-						break; //whathever else
+						break; //whatever else
 					}
 				}
 

+ 0 - 0
misc/dist/osx_tools.app/Contents/Resources/af.lproj/InfoPlist.strings


+ 0 - 0
misc/dist/osx_tools.app/Contents/Resources/ar.lproj/InfoPlist.strings


+ 0 - 0
misc/dist/osx_tools.app/Contents/Resources/az.lproj/InfoPlist.strings


+ 0 - 0
misc/dist/osx_tools.app/Contents/Resources/bg.lproj/InfoPlist.strings


+ 0 - 0
misc/dist/osx_tools.app/Contents/Resources/bn.lproj/InfoPlist.strings


+ 0 - 0
misc/dist/osx_tools.app/Contents/Resources/br.lproj/InfoPlist.strings


+ 0 - 0
misc/dist/osx_tools.app/Contents/Resources/ca.lproj/InfoPlist.strings


+ 0 - 0
misc/dist/osx_tools.app/Contents/Resources/cs.lproj/InfoPlist.strings


+ 0 - 0
misc/dist/osx_tools.app/Contents/Resources/da.lproj/InfoPlist.strings


+ 0 - 0
misc/dist/osx_tools.app/Contents/Resources/de.lproj/InfoPlist.strings


+ 0 - 0
misc/dist/osx_tools.app/Contents/Resources/el.lproj/InfoPlist.strings


+ 0 - 0
misc/dist/osx_tools.app/Contents/Resources/eo.lproj/InfoPlist.strings


+ 0 - 0
misc/dist/osx_tools.app/Contents/Resources/es.lproj/InfoPlist.strings


+ 0 - 0
misc/dist/osx_tools.app/Contents/Resources/es_AR.lproj/InfoPlist.strings


+ 0 - 0
misc/dist/osx_tools.app/Contents/Resources/et.lproj/InfoPlist.strings


+ 0 - 0
misc/dist/osx_tools.app/Contents/Resources/eu.lproj/InfoPlist.strings


+ 0 - 0
misc/dist/osx_tools.app/Contents/Resources/fa.lproj/InfoPlist.strings


+ 0 - 0
misc/dist/osx_tools.app/Contents/Resources/fi.lproj/InfoPlist.strings


+ 0 - 0
misc/dist/osx_tools.app/Contents/Resources/fil.lproj/InfoPlist.strings


+ 0 - 0
misc/dist/osx_tools.app/Contents/Resources/fr.lproj/InfoPlist.strings


+ 0 - 0
misc/dist/osx_tools.app/Contents/Resources/ga.lproj/InfoPlist.strings


+ 0 - 0
misc/dist/osx_tools.app/Contents/Resources/gl.lproj/InfoPlist.strings


+ 0 - 0
misc/dist/osx_tools.app/Contents/Resources/he.lproj/InfoPlist.strings


+ 0 - 0
misc/dist/osx_tools.app/Contents/Resources/hi.lproj/InfoPlist.strings


+ 0 - 0
misc/dist/osx_tools.app/Contents/Resources/hr.lproj/InfoPlist.strings


+ 0 - 0
misc/dist/osx_tools.app/Contents/Resources/hu.lproj/InfoPlist.strings


+ 0 - 0
misc/dist/osx_tools.app/Contents/Resources/id.lproj/InfoPlist.strings


+ 0 - 0
misc/dist/osx_tools.app/Contents/Resources/is.lproj/InfoPlist.strings


+ 0 - 0
misc/dist/osx_tools.app/Contents/Resources/it.lproj/InfoPlist.strings


+ 0 - 0
misc/dist/osx_tools.app/Contents/Resources/ja.lproj/InfoPlist.strings


+ 0 - 0
misc/dist/osx_tools.app/Contents/Resources/ka.lproj/InfoPlist.strings


+ 0 - 0
misc/dist/osx_tools.app/Contents/Resources/km.lproj/InfoPlist.strings


+ 0 - 0
misc/dist/osx_tools.app/Contents/Resources/ko.lproj/InfoPlist.strings


+ 0 - 0
misc/dist/osx_tools.app/Contents/Resources/lt.lproj/InfoPlist.strings


+ 0 - 0
misc/dist/osx_tools.app/Contents/Resources/lv.lproj/InfoPlist.strings


+ 0 - 0
misc/dist/osx_tools.app/Contents/Resources/mi.lproj/InfoPlist.strings


+ 0 - 0
misc/dist/osx_tools.app/Contents/Resources/mk.lproj/InfoPlist.strings


+ 0 - 0
misc/dist/osx_tools.app/Contents/Resources/ml.lproj/InfoPlist.strings


+ 0 - 0
misc/dist/osx_tools.app/Contents/Resources/mr.lproj/InfoPlist.strings


+ 0 - 0
misc/dist/osx_tools.app/Contents/Resources/ms.lproj/InfoPlist.strings


+ 0 - 0
misc/dist/osx_tools.app/Contents/Resources/nb.lproj/InfoPlist.strings


+ 0 - 0
misc/dist/osx_tools.app/Contents/Resources/nl.lproj/InfoPlist.strings


+ 0 - 0
misc/dist/osx_tools.app/Contents/Resources/or.lproj/InfoPlist.strings


+ 0 - 0
misc/dist/osx_tools.app/Contents/Resources/pl.lproj/InfoPlist.strings


+ 0 - 0
misc/dist/osx_tools.app/Contents/Resources/pt.lproj/InfoPlist.strings


+ 0 - 0
misc/dist/osx_tools.app/Contents/Resources/pt_BR.lproj/InfoPlist.strings


+ 0 - 0
misc/dist/osx_tools.app/Contents/Resources/ro.lproj/InfoPlist.strings


+ 0 - 0
misc/dist/osx_tools.app/Contents/Resources/ru.lproj/InfoPlist.strings


+ 0 - 0
misc/dist/osx_tools.app/Contents/Resources/si.lproj/InfoPlist.strings


+ 0 - 0
misc/dist/osx_tools.app/Contents/Resources/sk.lproj/InfoPlist.strings


+ 0 - 0
misc/dist/osx_tools.app/Contents/Resources/sl.lproj/InfoPlist.strings


+ 0 - 0
misc/dist/osx_tools.app/Contents/Resources/sq.lproj/InfoPlist.strings


+ 0 - 0
misc/dist/osx_tools.app/Contents/Resources/sr-Cyrl.lproj/InfoPlist.strings


+ 0 - 0
misc/dist/osx_tools.app/Contents/Resources/sr-Latn.lproj/InfoPlist.strings


+ 0 - 0
misc/dist/osx_tools.app/Contents/Resources/sv.lproj/InfoPlist.strings


+ 0 - 0
misc/dist/osx_tools.app/Contents/Resources/ta.lproj/InfoPlist.strings


+ 0 - 0
misc/dist/osx_tools.app/Contents/Resources/te.lproj/InfoPlist.strings


+ 0 - 0
misc/dist/osx_tools.app/Contents/Resources/th.lproj/InfoPlist.strings


+ 0 - 0
misc/dist/osx_tools.app/Contents/Resources/tr.lproj/InfoPlist.strings


+ 0 - 0
misc/dist/osx_tools.app/Contents/Resources/tt.lproj/InfoPlist.strings


+ 0 - 0
misc/dist/osx_tools.app/Contents/Resources/tzm.lproj/InfoPlist.strings


+ 0 - 0
misc/dist/osx_tools.app/Contents/Resources/uk.lproj/InfoPlist.strings


+ 0 - 0
misc/dist/osx_tools.app/Contents/Resources/ur_PK.lproj/InfoPlist.strings


+ 0 - 0
misc/dist/osx_tools.app/Contents/Resources/vi.lproj/InfoPlist.strings


+ 0 - 0
misc/dist/osx_tools.app/Contents/Resources/zh_CN.lproj/InfoPlist.strings


+ 0 - 0
misc/dist/osx_tools.app/Contents/Resources/zh_HK.lproj/InfoPlist.strings


+ 0 - 0
misc/dist/osx_tools.app/Contents/Resources/zh_TW.lproj/InfoPlist.strings


+ 8 - 8
misc/hooks/pre-commit-black

@@ -139,11 +139,11 @@ fi
 while true; do
     if [ $terminal = "0" ] ; then
         if [ -x "$ZENITY" ] ; then
-            ans=$($ZENITY --text-info --filename="$patch" --width=800 --height=600 --title="Do you want to apply that patch?" --ok-label="Apply" --cancel-label="Do not apply" --extra-button="Apply and stage")
+            choice=$($ZENITY --text-info --filename="$patch" --width=800 --height=600 --title="Do you want to apply that patch?" --ok-label="Apply" --cancel-label="Do not apply" --extra-button="Apply and stage")
             if [ "$?" = "0" ] ; then
                 yn="Y"
             else
-                if [ "$ans" = "Apply and stage" ] ; then
+                if [ "$choice" = "Apply and stage" ] ; then
                     yn="S"
                 else
                     yn="N"
@@ -151,10 +151,10 @@ while true; do
             fi
         elif [ -x "$XMSG" ] ; then
             $XMSG -file "$patch" -buttons "Apply":100,"Apply and stage":200,"Do not apply":0 -center -default "Do not apply" -geometry 800x600 -title "Do you want to apply that patch?"
-            ans=$?
-            if [ "$ans" = "100" ] ; then
+            choice=$?
+            if [ "$choice" = "100" ] ; then
                 yn="Y"
-            elif [ "$ans" = "200" ] ; then
+            elif [ "$choice" = "200" ] ; then
                 yn="S"
             else
                 yn="N"
@@ -162,10 +162,10 @@ while true; do
         elif [ \( \( "$OSTYPE" = "msys" \) -o \( "$OSTYPE" = "win32" \) \) -a \( -x "$PWSH" \) ]; then
             winmessage="$(canonicalize_filename "./.git/hooks/winmessage.ps1")"
             $PWSH -noprofile -executionpolicy bypass -file "$winmessage" -file "$patch" -buttons "Apply":100,"Apply and stage":200,"Do not apply":0 -center -default "Do not apply" -geometry 800x600 -title "Do you want to apply that patch?"
-            ans=$?
-            if [ "$ans" = "100" ] ; then
+            choice=$?
+            if [ "$choice" = "100" ] ; then
                 yn="Y"
-            elif [ "$ans" = "200" ] ; then
+            elif [ "$choice" = "200" ] ; then
                 yn="S"
             else
                 yn="N"

+ 8 - 8
misc/hooks/pre-commit-clang-format

@@ -179,11 +179,11 @@ fi
 while true; do
     if [ $terminal = "0" ] ; then
         if [ -x "$ZENITY" ] ; then
-            ans=$($ZENITY --text-info --filename="$patch" --width=800 --height=600 --title="Do you want to apply that patch?" --ok-label="Apply" --cancel-label="Do not apply" --extra-button="Apply and stage")
+            choice=$($ZENITY --text-info --filename="$patch" --width=800 --height=600 --title="Do you want to apply that patch?" --ok-label="Apply" --cancel-label="Do not apply" --extra-button="Apply and stage")
             if [ "$?" = "0" ] ; then
                 yn="Y"
             else
-                if [ "$ans" = "Apply and stage" ] ; then
+                if [ "$choice" = "Apply and stage" ] ; then
                     yn="S"
                 else
                     yn="N"
@@ -191,10 +191,10 @@ while true; do
             fi
         elif [ -x "$XMSG" ] ; then
             $XMSG -file "$patch" -buttons "Apply":100,"Apply and stage":200,"Do not apply":0 -center -default "Do not apply" -geometry 800x600 -title "Do you want to apply that patch?"
-            ans=$?
-            if [ "$ans" = "100" ] ; then
+            choice=$?
+            if [ "$choice" = "100" ] ; then
                 yn="Y"
-            elif [ "$ans" = "200" ] ; then
+            elif [ "$choice" = "200" ] ; then
                 yn="S"
             else
                 yn="N"
@@ -202,10 +202,10 @@ while true; do
         elif [ \( \( "$OSTYPE" = "msys" \) -o \( "$OSTYPE" = "win32" \) \) -a \( -x "$PWSH" \) ]; then
             winmessage="$(canonicalize_filename "./.git/hooks/winmessage.ps1")"
             $PWSH -noprofile -executionpolicy bypass -file "$winmessage" -file "$patch" -buttons "Apply":100,"Apply and stage":200,"Do not apply":0 -center -default "Do not apply" -geometry 800x600 -title "Do you want to apply that patch?"
-            ans=$?
-            if [ "$ans" = "100" ] ; then
+            choice=$?
+            if [ "$choice" = "100" ] ; then
                 yn="Y"
-            elif [ "$ans" = "200" ] ; then
+            elif [ "$choice" = "200" ] ; then
                 yn="S"
             else
                 yn="N"

+ 5 - 0
misc/scripts/codespell.sh

@@ -0,0 +1,5 @@
+#!/bin/sh
+SKIP_LIST="./thirdparty,*.gen.*,*.po,*.pot,package-lock.json,./core/string/locales.h,./DONORS.md,./misc/scripts/codespell.sh"
+IGNORE_LIST="ba,childs,curvelinear,doubleclick,expct,fave,findn,gird,inout,leapyear,lod,nd,numer,ois,readded,ro,statics,te,varn"
+
+codespell -w -q 3 -S "${SKIP_LIST}" -L "${IGNORE_LIST}"

+ 1 - 1
modules/camera/camera_osx.h

@@ -32,7 +32,7 @@
 #define CAMERAOSX_H
 
 ///@TODO this is a near duplicate of CameraIOS, we should find a way to combine those to minimize code duplication!!!!
-// If you fix something here, make sure you fix it there as wel!
+// If you fix something here, make sure you fix it there as well!
 
 #include "servers/camera_server.h"
 

+ 1 - 1
modules/camera/camera_osx.mm

@@ -29,7 +29,7 @@
 /*************************************************************************/
 
 ///@TODO this is a near duplicate of CameraIOS, we should find a way to combine those to minimize code duplication!!!!
-// If you fix something here, make sure you fix it there as wel!
+// If you fix something here, make sure you fix it there as well!
 
 #include "camera_osx.h"
 #include "servers/camera/camera_feed.h"

+ 1 - 1
modules/fbx/fbx_parser/ByteSwapper.h

@@ -70,7 +70,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 ----------------------------------------------------------------------
 */
 
-/** @file Helper class tp perform various byte oder swappings
+/** @file Helper class to perform various byte order swappings
    (e.g. little to big endian) */
 #ifndef BYTE_SWAPPER_H
 #define BYTE_SWAPPER_H

Энэ ялгаанд хэт олон файл өөрчлөгдсөн тул зарим файлыг харуулаагүй болно