1
0
Fork 0
Commit Graph

829 Commits

Author SHA1 Message Date
rune-scape d58b2e879f Get rid of easily removable uses of const_cast 2024-12-01 17:50:13 -08:00
Rémi Verschelde 56a7dba10b
Merge pull request #99799 from akien-mga/fix-typos
Fix various typos and code style issues
2024-11-29 22:02:53 +01:00
cixil 8a42e3d3ef
Avoid duplicating signals from scene instances into packed scenes 2024-11-29 18:29:08 +01:00
Rémi Verschelde 88e81ee730
Fix various typos and code style issues 2024-11-28 17:40:42 +01:00
Thaddeus Crews 37305e40bc Merge pull request #95711 from TokageItLab/warn-oneshot-prop
Add hint for oneshot property & warning when it will be updated continuously by Force Continuous in `AnimationMixer`
2024-11-22 14:54:30 -06:00
Adam Scott 4988fa1ece
Force `get_thread_count()` to `1` if single threaded 2024-11-18 22:27:17 -05:00
Thaddeus Crews 323b2d53d7
Merge pull request #98963 from RandomShaper/fix_classdb_deadlock
Fix deadlocks related to ClassDB queries about global classes
2024-11-10 12:12:24 -06:00
Silc Lizard (Tokage) Renew 761a20f7a7 Add hint for oneshot & warning when it will be updated continuously 2024-11-11 01:12:45 +09:00
Pedro J. Estébanez 56bdef9f6f Fix deadlocks related to ClassDB queries about global classes
`ClassDB::can_instantiate()` and other reflection methods deadlock if the type is an script global class, when such script indirectly uses a not-yet-registered class. The reason is the `ClassDB` read lock is still held when invoking the `ResourceLoader` to load the class script, which may in turn need to lock for writing (for the class registration).

In particular, this happens with some types related to animation tree, that aren't registered at engine startup, but can happen with others, especially ones from the user. Registration statements are also added for the animation-related types that were lacking them.
2024-11-08 18:15:58 +01:00
Thaddeus Crews bb5f390fb9
Style: Apply `clang-tidy` fixes (superficial)
• `modernize-use-bool-literals`, `modernize-use-nullptr`, and `readability-braces-around-statements`
2024-11-04 12:11:14 -06:00
A Thousand Ships ec650a2f09
[Core,Drivers] Improve use of `Ref.is_null/valid`
Use `is_null` over `!is_valid` and vice versa.
2024-11-01 16:50:11 +01:00
A Thousand Ships 38f9769bc6
[Core] Improve error messages with `vformat` 2024-10-30 15:55:51 +01:00
Adam Scott 0d350e7108
Set clang-format `RemoveSemicolon` rule to `true`
- Set clang-format `Standard` rule to `c++20`
2024-10-25 13:49:43 -04:00
Rémi Verschelde 9ce149c7a3
Merge pull request #93299 from rune-scape/fix-ref
Fix RefCounted releasing early and not clearing reference
2024-10-02 15:00:47 +02:00
Danil Alexeev 85dfd89653 Add `@export_tool_button` annotation for easily creating inspector buttons
Co-authored-by: jordi <creptthrust@gmail.com>
Co-authored-by: K. S. Ernest (iFire) Lee <ernest.lee@chibifire.com>
Co-authored-by: Mack <86566939+Macksaur@users.noreply.github.com>
2024-09-27 22:24:15 +01:00
Rémi Verschelde 8a9a26ef19
Merge pull request #93311 from dsnopek/gdextension-required-virtuals
GDExtension: Mark virtual function as `is_required` in `extension_api.json`
2024-09-27 13:53:16 +02:00
Rémi Verschelde 9d5b59b2ae
Merge pull request #94864 from rune-scape/add-missing-method-bind
Add missing CallableCustomMethodPointer for const methods
2024-09-26 12:45:27 +02:00
Thaddeus Crews 9f9ee0c813
SCons: Add unobtrusive type hints in SCons files 2024-09-25 09:34:35 -05:00
kobewi 7aef30c2a8 Discard additional redo on commiting actions 2024-09-24 15:47:55 +02:00
rune-scape a84c480049 Add missing CallableCustomMethodPointer for const methods 2024-09-23 11:46:10 -07:00
rune-scape cee0e6667a Refactor ref-counting code and fix ref counted releasing before aquiring 2024-09-21 11:36:58 -07:00
Rémi Verschelde dd7cb059f5
Merge pull request #87344 from AThousandShips/signal_connected
[Core] Add way to check if a signal has any connections
2024-09-21 11:50:24 +02:00
Rémi Verschelde 621cadcf65
Merge pull request #97168 from Hilderin/fix-reloading-scripts-already-in-use
Fix reloading scripts already in use
2024-09-20 21:35:08 +02:00
Hilderin 9638220473 Fix reloading scripts already in use 2024-09-20 12:12:24 -04:00
A Thousand Ships 203d3be200
[Core] Add way to check if a signal has any connections
Added to `Object` and `Signal`
2024-09-20 16:39:09 +02:00
Haoyu Qiu 818acb4290 Make editor use translation domains
How editor plugins use this feature:
1. Pick a unique translation domain name.
2. `_enter_tree()`: load translations into that translation domain.
3. Call `set_translation_domain()` for its root UI node.
4. `_exit_tree()`: remove that translation domain.

Plugins can also set the translation domain to `godot.editor` for
nested nodes that should use editor translations. `EditorFileDialog`
automatically does this.
2024-09-17 13:09:44 +08:00
Haoyu Qiu c5d147b9b5 Allow configuring which translation domain Object.tr uses 2024-09-17 13:09:44 +08:00
Clay John 48403b5358
Merge pull request #96959 from RandomShaper/revamp_languages_exit
WorkerThreadPool: Revamp interaction with ScriptServer
2024-09-16 16:05:57 -07:00
Pedro J. Estébanez 5d371e3378 WorkerThreadPool: Add safety point between languages finished and pool termination 2024-09-16 18:20:10 +02:00
Pedro J. Estébanez 2a483fa9ba WorkerThreadPool: Refactor running and exit-requested as runlevels 2024-09-16 18:06:22 +02:00
Pedro J. Estébanez 2640960706 WorkerThreadPool: Improve logic
- The main thread function and the collaborative wait functions have a much more similar structure than earlier, which yields (pun intended) better maintainability.
- Also, there are not assertions anymore about the reason for ending a wait being valid, because spurious awakes can happen and so the assert would fail without that indicating an issue.
2024-09-16 18:03:36 +02:00
Rémi Verschelde f7daa0fb2f
Merge pull request #96856 from RandomShaper/selfdestruct_correctness
Object: Let debug lock handle callee destruction within call chain gracefully
2024-09-16 13:35:06 +02:00
Rémi Verschelde 8ebfd89359
Merge pull request #96024 from Ryan-000/expose_get_rpc_config
Expose `get_rpc_config` and `get_node_rpc_config`
2024-09-16 13:34:34 +02:00
Pedro J. Estébanez e2fd88ed91 Revert "WorkerThreadPool: Enhance lifetime for more flexibility"
This reverts commit 2d1dd41ef5.
2024-09-13 14:39:11 +02:00
A Thousand Ships df29cc696f
[Core] Optionally delete `Ref` `nullptr` comparisons
Adds an optional (default false) compile option to enable comparing
`Ref` to `nullptr` to ensure correct use, as well as future expandsion
for more general dev checks (enabled with `dev_mode`)
2024-09-12 11:26:49 +02:00
Rémi Verschelde 23e51c3cb5
Merge pull request #92888 from Hilderin/fix-unable-to-use-resourceLoader-in-c#-after-threaded-load
Fix inability to use ResourceLoader in C# after threaded load in GDScript
2024-09-12 09:25:05 +02:00
Rémi Verschelde cd9da3344f
Merge pull request #95292 from aaronp64/is_parent_class_perf
Improve `ClassDB::_is_parent_class` performance
2024-09-12 09:17:39 +02:00
Pedro J. Estébanez 10e2318bde Object: Let debug lock handle callee destruction within call chain gracefully
Co-authored-by: lawnjelly <lawnjelly@gmail.com>
2024-09-12 08:51:24 +02:00
Hilderin 27d1fb63e1 Fix Unable to use ResourceLoader in C# after threaded load in GDScript #92798 2024-09-11 19:03:55 -04:00
David Snopek c2af6bcb59 GDExtension: Mark virtual function as `is_required` in `extension_api.json`
Co-authored-by: Jovan Gerodetti <jovan.gerodetti@titannano.de>
2024-09-11 16:48:14 -05:00
Rémi Verschelde 658b8a8704
Merge pull request #96760 from RandomShaper/wtp_langs_exit_thread
Make use of languages' thread enter/exit more correct
2024-09-11 12:35:07 +02:00
Pedro J. Estébanez c8acf561ef Make languages' thread enter/exit more resilient 2024-09-10 17:22:32 +02:00
Pedro J. Estébanez 2d1dd41ef5 WorkerThreadPool: Enhance lifetime for more flexibility 2024-09-10 11:08:51 +02:00
rune-scape 0dde931bc9 StringName: Fix empty hash
+Fixed compat hashes
2024-09-09 13:30:02 -07:00
Rémi Verschelde 0b4ae20156
Merge pull request #78656 from Repiteo/typed-dictionary
Implement typed dictionaries
2024-09-06 22:38:13 +02:00
Rémi Verschelde 58b3481eaf
Merge pull request #89649 from dalexeev/core-bind-and-doc-iter-virtual-methods
Core: Bind and document iterator API virtual methods
2024-09-06 11:10:58 +02:00
Ryan 8835f326b1 Expose get_rpc_config and get_node_rpc_config
add documentation

Update doc/classes/Node.xml

change name of get_node_rpc_config to get_rpc_config

Co-Authored-By: moondog <159832633+dog-on-moon@users.noreply.github.com>
Co-Authored-By: Micky <66727710+Mickeon@users.noreply.github.com>
2024-09-04 15:45:22 -04:00
Thaddeus Crews 9853a69144
Implement typed dictionaries 2024-09-04 10:27:26 -05:00
Rémi Verschelde 13a90e938f
Merge pull request #70096 from rune-scape/stringname-dict
StringName Dictionary keys
2024-09-03 17:38:06 +02:00
Jan Haller 82b2a58f4c Fix `bool` type appearing in GDExtension header 2024-08-31 22:40:48 +02:00
Rémi Verschelde 4c0ce657d5
Merge pull request #96322 from RandomShaper/wtp_info
WorkerThreadPool: Print info about thread count at startup
2024-08-30 23:37:58 +02:00
Danil Alexeev 49bcdf78a7
Core: Сheck `r_error` after calling `callp()` 2024-08-30 21:09:30 +03:00
Pedro J. Estébanez db4672f83f WorkerThreadPool: Print info about thread count at startup 2024-08-30 13:04:46 +02:00
Rémi Verschelde a5830f6eb9
Merge pull request #96317 from Chaosus/objectdb_write_path_instead_of_name_at_cleanup
Write path instead of name at verbose output of leaked instances
2024-08-30 11:43:13 +02:00
Rémi Verschelde 909629d9f9
Merge pull request #96166 from AThousandShips/more_lock_raii
Use `MutexLock` in more places
2024-08-30 09:59:19 +02:00
Rémi Verschelde f0ee0bdd37
Merge pull request #93972 from Hilderin/fix-editor-needs-restart-after-adding-gdextensions
Fix editor needs restart after adding GDExtensions
2024-08-30 09:59:05 +02:00
Chaosus 75055a8278 Write path instead of name at verbose output of leaked instances 2024-08-30 10:58:50 +03:00
rune-scape 154049ce17 StringName Dictionary keys
also added 'is_string()' method to Variant
and refactored many String type comparisons to use it instead
2024-08-29 13:39:27 -07:00
demolke c409e6d722 Import/export GLTF extras to node->meta
This is useful for custom tagging of objects with properties (for example in Blender) and having this available in the editor for scripting.

- Adds import logic to propagate the parsed GLTF extras all the way to the resulting Node->meta
- Adds export logic to save Godot Object meta into GLTF extras
- Supports `nodes`, `meshes` and `materials` (in GLTF sense of the words)
2024-08-29 19:17:04 +02:00
A Thousand Ships e33fdb4296
Use `MutexLock` in more places 2024-08-29 14:12:59 +02:00
Hilderin ef6f873938 Fix editor needs restart after adding GDExtensions 2024-08-29 06:15:32 -04:00
Pedro J. Estébanez 5dade0e08b WorkerThreadPool: Fix end-of-yield logic potentially leading to deadlocks 2024-08-28 15:26:08 +02:00
Rémi Verschelde 3e8d051a4a
Merge pull request #94068 from dalexeev/core-remove-is-gpl-reversed
Core: Remove unused method `_is_gpl_reversed()`
2024-08-28 00:11:58 +02:00
Danil Alexeev be5068d44b
Core: Bind and document iterator API virtual methods 2024-08-27 21:57:22 +03:00
Thaddeus Crews 231f3323d3
Core: Fix unreachable code 2024-08-27 10:26:06 -05:00
Rémi Verschelde 9dfc41568a
Merge pull request #95984 from timothyqiu/what-identifier
Add `String.is_valid_unicode_identifier()`
2024-08-27 16:55:06 +02:00
Danil Alexeev 2d8f6c1b1d
GDScript: Fix message when calling non-tool function in tool mode 2024-08-27 12:30:15 +03:00
Haoyu Qiu 8bf4ecc026 Add `String.is_valid_unicode_identifier()`
- Adds `is_valid_unicode_identifier()`
- Adds `is_valid_ascii_identifier()`
- Deprecates `is_valid_identifier()`
- Renames `validate_identifier()` to `validate_ascii_identifier()`
2024-08-27 11:34:08 +08:00
Rémi Verschelde 0ba0be27c7
Merge pull request #94169 from RandomShaper/wtp_rl_prize
Batch of fixes for `WorkerThreadPool` and `ResourceLoader`
2024-08-26 10:51:25 +02:00
Rémi Verschelde b4f268fae8
Merge pull request #91018 from Daylily-Zeleen/daylily-zeleen/optionally_postinitialization_for_extension_owner
Allow ClassDB to create a Object without postinitialization for GDExtension.
2024-08-26 10:51:17 +02:00
Rémi Verschelde 091212b4f1
Merge pull request #93602 from aaronp64/inspector_latency
Improve Editor Inspector/Theme item lookup performance
2024-08-22 00:10:26 +02:00
Pedro J. Estébanez f4d76853b9 WorkerThreadPool (plus friends): Overhaul unlock allowance zones
This fixes a rare but possible deadlock, maybe due to undefined behavior. The new implementation is safer, at the cost of some added boilerplate.
2024-08-21 12:22:52 +02:00
Pedro J. Estébanez 28619e26cf ResourceLoader: Enhance deadlock prevention
Benefits:
- Simpler code. The main load function is renamed so it's apparent that it's not just a thread entry point anymore.
- Cache and thread modes of the original task are honored. A beautiful consequence of this is that, unlike formerly, re-issued loads can use the resource cache, which makes this mechanism much more performant.
- The newly added getter for caller task id in WorkerThreadPool allows to remove the custom tracking of that in ResourceLoader.
- The check to replace a cached resource and the replacement itself happen atomically. That fixes deadlock prevention leading to multiple resource instances of the same one on disk. As a side effect, it also makes the regular check for replace load mode more robust.
2024-08-21 12:19:43 +02:00
aaronp64 7593e55527 Improve Editor Inspector/Theme item lookup performance
Changes to reduce the latency between changing node selection in the editor and seeing the new node reflected in the Inspector tab

- Use Vector instead of List for ThemeOwner::get_theme_type_dependencies and related functions
- Use Vector instead of List for ThemeContext::themes, set_themes(), and get_themes()
- Add ClassDB:get_inheritance_chain_nocheck to get all parent/ancestor classes at once, to avoid repeated ClassDB locking overhead
- Update BIND_THEME_ITEM macros and ThemeDB::update_class_instance_items to use provided StringNames for call to ThemeItemSetter, instead of creating a new StringName in each call

These changes reduce the time taken by EditorInspector::update_tree by around 30-35%
2024-08-20 13:39:40 -04:00
Daylily-Zeleen 3d575801ce Allow ClassDB to create a Object without postinitialization for GDExtension. 2024-08-20 20:19:02 +08:00
Pedro J. Estébanez 32b7f835d8 Avoid potential crash on signal disconnection 2024-08-19 12:18:04 +02:00
voidedWarranties d65ea6fb9c Fix virtual binding for `ScriptLanguageExtension::_reload_scripts` 2024-08-17 21:09:32 -07:00
Haoyu Qiu 7343dc3a5d Split TranslationServer into its own file 2024-08-15 15:00:47 +08:00
aaronp64 6e5175592d Improve ClassDB::_is_parent_class performance
Change ClassDB::_is_parent_class to use ClassInfo::inherits_ptr, instead of looking up each inherited class name.
2024-08-08 13:16:42 -04:00
Hilderin 1ed723bd19 Fix global class cache file not present when no class name 2024-07-31 16:57:25 -04:00
Alvin Wong c9f4436073
Fix use-after-free in WorkerThreadPool 2024-07-29 14:26:48 +02:00
Rémi Verschelde 293c0f7646
Merge pull request #94526 from RandomShaper/wtp_rl_prize_prequel
Batch of fixes for WorkerThreadPool and ResourceLoader (safe set)
2024-07-19 11:11:03 +02:00
Rémi Verschelde ab67408390
Merge pull request #94238 from RandomShaper/ref_is_now_rc
Make errors on `RefCounted.free()` more accurate
2024-07-17 11:43:32 +02:00
Pedro J. Estébanez 5b5cdf2414 Fixup recent changes to threading concerns
ResourceLoader:
- Fix invalid tokens being returned.
- Remove no longer written `ThreadLoadTask::dependent_path` and the code reading from it.
- Clear deadlock hazard by keeping the mutex unlocked during userland polling.

WorkerThreadPool:
- Include thread call queue override in the thread state reset set, which allows to simplify the code that handled that (imperfectly) in the ResourceLoader.
- Handle the mutex type correctly on entering an allowance zone.

CommandQueueMT:
- Handle the additional possibility of command buffer reallocation that mutex unlock allowance introduces.
2024-07-16 11:03:02 +02:00
Pedro J. Estébanez 10b543f8a7 WorkerThreadPool: Fix wrong sync logic breaking task map integrity 2024-07-15 12:15:25 +02:00
Pedro J. Estébanez 76bfe8e0fd Make errors on RefCounted.free() more accurate 2024-07-15 08:51:42 +02:00
Rémi Verschelde fe5d567917
Merge pull request #93942 from MikeSchulze/73525
Fix GDScript analyzer error when instantiating EditorPlugins.
2024-07-11 09:41:09 +02:00
baptr 810fcc7431 Fix gdscript analyzer error when instantiating EditorPlugins.
Editor code is not instantiable outside of the editor
(1d14c054a1/core/object/class_db.cpp (L369)).
This is fine for editor plugins and the like, but the GDScript analyzer
balks at it, causing F5 runs to fail: #73525.

Instead, we really just want to know if the type is abstract - so add
a new ClassDB method to check that and nothing else.

Update core/object/class_db.cpp

Apply code review comments

Co-Authored-By: Bryce <1522777+baptr@users.noreply.github.com>
2024-07-10 10:24:57 +02:00
David Snopek 91fcdff01e GDExtension: Fix setting base class properties on a runtime class 2024-07-08 12:33:55 -05:00
Danil Alexeev 151f34bb80
Core: Remove unused method `_is_gpl_reversed()` 2024-07-08 12:31:09 +03:00
Pedro J. Estébanez f2f9a6b8a1 WorkerThreadPool: Fix wrong pointer used in the case of BinaryMutex 2024-06-28 19:46:55 +02:00
Rémi Verschelde 6f8b90e412
Merge pull request #93032 from RandomShaper/wtp_antilock
GDScript: Avoid deadlock possibility in multi-threaded load
2024-06-28 14:42:48 +02:00
Raul Santos 175e5bcf4e
Lookup method also in base scripts of a PlaceHolderScriptInstance 2024-06-22 08:11:48 +02:00
Pedro J. Estébanez 03d14e436b WorkerThreadPool: Refactor deadlock prevention collaboration into a generic mechanism
This is strictly beyond a refactor because it also changes when the mutexes are relocked,
but that's only for extra safety.
2024-06-19 14:01:54 +02:00
Rémi Verschelde 0a83e7c5da
Merge pull request #93288 from rune-scape/gdextension-const-stringname-weird
Object: Use const correct `GDExtensionConstStringNamePtr`
2024-06-18 17:59:25 +02:00
rune-scape ca916a536a Object: use correct GDExtensionConstStringNamePtr 2024-06-17 19:06:40 -07:00
Jovan Gerodetti 21586da50e Make profiling_get_frame_data call the correct GDVIRTUAL method. 2024-06-18 00:53:25 +02:00
Pedro J. Estébanez 21c03d1956 WorkerThreadPool: Fix thread message queue not restored after overridden in a task
Also, simplifies the thread override teardown in MessageQueue.
2024-06-13 10:31:08 +02:00
Rémi Verschelde 5bab95a556
Merge pull request #92827 from raulsntos/core/node-to_string
Use GDExtension `to_string` in Node
2024-06-12 10:00:29 +02:00
Raul Santos 29bf60cc02
Use GDExtension `to_string` in Node
Matches the `Object::to_string` implementation.
2024-06-11 17:40:51 +02:00
Rémi Verschelde 94929439b6
Revert "Fix method name for custom callable"
This reverts commit e88095ed8f.

Fixes #92695.
2024-06-11 11:02:03 +02:00
Chris Cranford 8577340501 Expose several EngineDebugger methods and signals as plugin callbacks 2024-06-10 19:46:23 -04:00
Pedro J. Estébanez f61c63e3a1 Avoid editor error reporting using resource loader thread's call queues 2024-05-31 09:42:37 +02:00
Rémi Verschelde 4808f24312
Merge pull request #92350 from 4d49/undo-redo-fix-callable-name
Fix `UndoRedo` method name for custom `Callable`
2024-05-28 15:49:26 +02:00
Mansur Isaev e88095ed8f Fix method name for custom callable 2024-05-25 10:23:10 +04:00
Mikael Hermansson e312f147aa Fix `ClassDB` not checking for `API_EDITOR_EXTENSION` 2024-05-25 00:23:12 +02:00
David Snopek 62f9365b21 Don't use `ERR_PRINT_ONCE()` for runtime class error because it will hide errors 2024-05-21 13:55:56 -05:00
Rémi Verschelde bdefe53992
Merge pull request #91909 from KoBeWi/have_fun_reviewing_this
Use Core/Scene stringnames consistently
2024-05-14 12:07:03 +02:00
kobewi 413c11357d Use Core/Scene stringnames consistently 2024-05-13 23:41:07 +02:00
Rémi Verschelde 5cb9a748d6
Merge pull request #91630 from RandomShaper/enh_mat_sh_update
Let materials' shaders update happen on loader threads
2024-05-13 17:32:11 +02:00
kobewi a262d2d881 Add shorthand for using singleton string names 2024-05-11 18:53:08 +02:00
David Snopek 14506a4282 GDExtension: Prevent crash during shutdown as singletons are deleted 2024-05-10 13:17:36 -05:00
Pedro J. Estébanez b834037841 Object: Add missing lock 2024-05-08 17:41:40 +02:00
Rémi Verschelde a1905b8e7d
Merge pull request #91570 from Naros/preferred_file_name_casing_default
Add default implementation of `ScriptLanguageExtension::preferred_file_name_casing`
2024-05-07 09:04:48 +02:00
Pedro J. Estébanez 187e5ef258 Let materials' shaders update happen on loader threads 2024-05-06 19:40:00 +02:00
Chris Cranford fdc5b42646 Add default implementation of `ScriptLanguageExtension::preferred_file_name_casing`. 2024-05-04 18:50:04 -04:00
A Thousand Ships 955d5affa8
Reduce and prevent unnecessary random-access to `List`
Random-access access to `List` when iterating is `O(n^2)` (`O(n)` when
accessing a single element)

* Removed subscript operator, in favor of a more explicit `get`
* Added conversion from `Iterator` to `ConstIterator`
* Remade existing operations into other solutions when applicable
2024-05-04 16:08:55 +02:00
K. S. Ernest (iFire) Lee f9b488508c
Add PackedVector4Array Variant type
Co-authored-by: A Thousand Ships <96648715+AThousandShips@users.noreply.github.com>
Co-authored-by: Rémi Verschelde <rverschelde@gmail.com>
2024-05-03 00:58:27 +02:00
Rémi Verschelde 947f5a8741
Merge pull request #91247 from AThousandShips/callable_fix
Fix unsafe uses of `Callable.is_null()`
2024-04-29 10:10:32 +02:00
A Thousand Ships 31e7ee63f2
Fix unsafe uses of `Callable.is_null()`
`Callable.is_null()` is not equivalent to `!Callable.is_valid()` and
doesn't guarantee the call is valid.
2024-04-27 16:22:57 +02:00
Jan Haller 27a637d287 GDExtension: provide `free_property_list_func` with length of array 2024-04-27 14:13:17 +02:00
Rémi Verschelde 2e92fb00d4
Merge pull request #90540 from Repiteo/core/type-info-use-type-traits
Core: Use `<type_traits>` where applicable
2024-04-24 18:55:07 +02:00
Rémi Verschelde e50867ae34
Merge pull request #90776 from Naros/avoid-script-language-not-overridden
Defer call to `set_break_language`
2024-04-19 16:27:33 +02:00
Rémi Verschelde 0b8042180e
Merge pull request #90447 from dsnopek/gdextension-hot-reload-not-classdb-instantiate
Fix GDExtension hot reload for classes not created via `ClassDB::instantiate()`
2024-04-19 16:27:26 +02:00
Pedro J. Estébanez 8192d1cbc7 WorkerThreadPool: Fix yield-over for not-yet-started tasks 2024-04-18 19:25:19 +02:00
Rémi Verschelde 866f2c56f7
Merge pull request #90674 from RadiantUwU/change_stuff
Implement `Object.remove_user_signal(signal: StringName)`
2024-04-18 12:24:34 +02:00
Radiant e263b11cdd Implement remove_user_signal()
Co-authored-by: Timothe Bonhoure <tbonhoure@ymail.Com>
Co-authored-by: Rémi Verschelde <rverschelde@gmail.com>
Co-authored-by: A Thousand Ships <96648715+AThousandShips@users.noreply.github.com>
2024-04-18 11:22:59 +03:00
Pedro J. Estébanez 9653bcaa43 WorkerThreadPool: Polish yielding (fix corner case, remove misleading warning) 2024-04-17 18:32:14 +02:00
Chris Cranford d0fa2c3cfa Defer call to set_break_language 2024-04-16 20:01:53 -04:00
Thaddeus Crews 127025679b
Core: Use `<type_traits>` where applicable 2024-04-11 13:13:59 -05:00
Pedro J. Estébanez 1b104ffcd8 WorkerThreadPool: Support daemon-like tasks (via yield semantics) 2024-04-10 18:47:42 +02:00
Pedro J. Estébanez 71facbaa88 WorkerThreadPool: Fix data race 2024-04-10 18:47:41 +02:00
A Thousand Ships 64146cb7f3
[Core] Add iteration support to `Array` 2024-04-10 14:49:34 +02:00
David Snopek 87aec2745d Fix GDExtension hot reload for classes not created via `ClassDB::instantiate()` 2024-04-09 13:40:33 -05:00
Rémi Verschelde 48cf825839
Merge pull request #89451 from AThousandShips/emit_fix
[Core] Disconnect one-shot signals before calling callbacks
2024-03-24 01:15:52 +01:00
Rémi Verschelde d5f944ff10
Merge pull request #89261 from paulloz/core/fix-script-reloading-outside-script-editor
Fix how scripts reload outside of ScriptEditor
2024-03-24 01:15:23 +01:00
A Thousand Ships db455e5bee
[Core] Disconnect one-shot signals before calling callbacks
This prevents infinite recursion with one-shot connections emitting
themselves
2024-03-20 20:24:44 +01:00
Paul Joannon 63674648fb
Fix how scripts reload outside of ScriptEditor 2024-03-18 10:29:06 +01:00
Rémi Verschelde 68ad520da4
Merge pull request #89519 from YeldhamDev/are_you_kidding_me_right_now
Fix translation fallback not working in the Project Manager
2024-03-15 17:01:34 +01:00
Michael Alexsander 11937d3a79
Fix translation fallback not working in the Project Manager 2024-03-15 12:00:20 -03:00
Rémi Verschelde 7d4804e945
Merge pull request #89490 from AThousandShips/queue_print_fix
[Core] Prevent further infinite recursion when printing errors
2024-03-15 10:40:08 +01:00
A Thousand Ships 14897f6dd7
[Core] Prevent further infinite recursion when printing errors 2024-03-14 22:44:22 +01:00
Rémi Verschelde 4163fb9c26
Merge pull request #89489 from YeldhamDev/yet_another_etr_fix
Fix some translations not properly falling back
2024-03-14 22:35:41 +01:00
Rémi Verschelde 453485aede
Merge pull request #89270 from Repiteo/enforce-typename-in-templates
Enforce template syntax `typename` over `class`
2024-03-14 22:34:37 +01:00
Michael Alexsander 05f6c56a48
Fix some translations not properly falling back 2024-03-14 16:38:12 -03:00
A Thousand Ships 0c19d0f5a0
Add extension support for argument count to `ScriptInstance` 2024-03-13 22:40:09 +01:00
Rémi Verschelde a1c476f9d7
Merge pull request #87680 from AThousandShips/the_angry_count
Add methods to get argument count of methods
2024-03-13 22:16:43 +01:00
Thaddeus Crews 5a6e3cbcb0
SCons: Remove `run_in_subprocess` dependency 2024-03-11 13:20:09 -05:00
Rémi Verschelde 0475011c66
Merge pull request #82084 from ogapo/pr/pck-cache-merge
Merge `uid_cache.bin` and `global_script_class_cache.cfg` after mounting PCKs
2024-03-11 14:01:16 +01:00
Thaddeus Crews 8116d70d4b
SCons: Convert remaining `run_in_subprocess` to `env.Run` 2024-03-10 14:01:23 -05:00
A Thousand Ships 59bcc2888c
Add methods to get argument count of methods
Added to:
* `Callable`s
* `Object`s
* `ClassDB`
* `Script(Instance)`s
2024-03-10 11:02:43 +01:00
Thaddeus Crews d9fa40f2df
Enforce `\n` eol for Python writes
• Ensure utf-8 encoding if previously unspecified
2024-03-09 14:29:24 -06:00
Thaddeus Crews 9903e6779b
Enforce template syntax `typename` over `class` 2024-03-07 22:39:09 -06:00
David Nikdel 5e6adb4a2d Merge uid_cache.bin and global_script_class_cache.cfg after mounting PCKs
fixes godotengine#82061
fixes godotengine#61556

Also, distinguish between main pack and DLC packs.
It's desirable to downloaded content to be as small as possible. This change avoids bloating non-main pack files with new versions of resources that are all read on startup and never used again. They have no effect if loaded after startup.
- project.godot/project.binary file
- extension_list.cfg
- app icon and boot_splash
- .ico and .icns files (these can still be opted in for DLC by listing them explicitly in the include filter)
2024-03-06 12:14:21 -05:00
Rémi Verschelde 9b94c80e9a
Merge pull request #89175 from paulloz/dotnet/fix-exported-nodes-reset-without-build-artifacts
Hint fallback property as node when it is a node
2024-03-06 13:32:00 +01:00
Rémi Verschelde b85337b7ea
Merge pull request #87222 from RandomShaper/fix_obj_leaks_report
Fix inaccuracies in the report of leaked objects
2024-03-06 13:16:48 +01:00
Pedro J. Estébanez fdc47adf1e Help compilers optimize Object::cast_to() 2024-03-06 12:45:26 +01:00
Sofox f249667dc8 Fixed MERGE_ALL commit from repeating actions 2024-03-05 23:40:26 +00:00
Paul Joannon e7c90e0884
Hint fallback property as node when it is a node 2024-03-05 12:47:11 +01:00
RedMser 2bd714e34e
Allow configuring the script filename casing rule
Defaults to "Auto", which detects the casing based on the
preference of the currently selected language (C# for example
prefers PascalCase whereas GDScript prefers snake_case).
2024-03-05 09:43:29 +01:00
Rémi Verschelde 50ca190286
Merge pull request #89055 from dsnopek/gdextension-script-free-lists
GDExtension: Pass count when freeing method and property lists for script instances
2024-03-04 13:33:45 +01:00
David Snopek 0badf07657 GDExtension: Pass count when freeing method and property lists for script instances 2024-03-02 10:13:37 -06:00
Rémi Verschelde c1377920cd
Merge pull request #86743 from Mickeon/autocompletion-optimise-object
Optimise comparisons for Object's `get_argument_options`
2024-03-01 14:56:06 +01:00
Micky cd2032a90b Optimise Object's `get_argument_options` 2024-02-29 18:00:54 +01:00
Rémi Verschelde 9101067666
Merge pull request #88958 from 398utubzyt/gltf/use-correct-name
Fix compilation errors when `DISABLE_DEPRECATED` is defined
2024-02-29 13:54:35 +01:00
Michael Alexsander d70c45b5c8
Add option to add built-in strings in the POT generation 2024-02-28 11:34:26 -03:00
398utubzyt 4c69e8c026 Fix compilation errors when `DISABLE_DEPRECATED` is defined 2024-02-28 05:09:29 -08:00
Rémi Verschelde 8b9a6cfa9f
Merge pull request #88870 from dsnopek/gdextension-fix-runtime-class-ancestor-methods
GDExtension: Fix calling ancestor methods on runtime classes
2024-02-27 10:18:31 +01:00
David Snopek 3335528954 GDExtension: Fix calling ancestor methods on runtime classes 2024-02-26 10:23:23 -06:00
Robert Yevdokimov 13e82094ee Remove word duplicates in comments and strings, and fix casing and punctuation 2024-02-23 17:28:28 -05:00
Rémi Verschelde 45dd2bd31e
Merge pull request #88683 from dsnopek/runtime-classes-in-modules
Allow registering "runtime classes" in modules (not just GDExtension)
2024-02-23 11:29:46 +01:00
Raul Santos 5ba92e5a57
Fix some DEFVALs to use the right type
- Use `StringName()` in DEFVAL for StringNames.
- Use `Variant()` in DEFVAL for Variants.
2024-02-23 01:50:18 +01:00
David Snopek 4d0b989bb8 Allow registering "runtime classes" in modules (not just GDExtension) 2024-02-22 14:50:41 -06:00
Rémi Verschelde b652a81da7
Merge pull request #82554 from dsnopek/gdextension-placeholders
Allow registering "runtime classes" from GDExtension
2024-02-20 17:13:24 +01:00
David Snopek ea75307a11 Allow registering "runtime classes" 2024-02-20 09:20:58 -06:00
Rémi Verschelde 09df8f4a56
Merge pull request #87952 from paulloz/dotnet/byebye-signal-callback-generation
Disable signal callback generation in C#
2024-02-15 15:44:55 +01:00
Muller-Castro a8bc9f3e78 Add const lvalue ref to core/* container parameters 2024-02-14 11:20:36 -03:00
Paul Joannon 9fa2355cef
Disable signal callback generation in C# 2024-02-14 13:26:45 +01:00
Rémi Verschelde 306dd5be3f
Merge pull request #87758 from dsnopek/gdextension-register-virtual-method
Allow GDExtensions to register virtual methods and call them on scripts
2024-02-12 23:29:37 +01:00
David Snopek be11002e41 Allow GDExtensions to register virtual methods and call them on scripts 2024-02-12 13:29:18 -06:00
Thaddeus Crews b3cac9c092
Allow Ref `instantiate` to accept constructor args 2024-02-10 13:19:14 -06:00
Rémi Verschelde 1774c17b64
Merge pull request #87625 from YuriSizov/editor-lightweight-script-previews
Generate script resource preview without parsing
2024-02-09 12:34:36 +01:00
Rémi Verschelde 63d6bda8e9
Merge pull request #87871 from vittorioromeo/use_v_shorthand
Use `_v` shorthand for type traits and `if constexpr` where appropriate
2024-02-05 15:00:23 +01:00
EterDelta fee70558f8 Expose NOTIFICATION_EXTENSION_RELOADED to ClassDB 2024-02-02 14:57:00 -05:00
vittorioromeo 55ed34e37c Use '_v' shorthand for type traits and 'if constexpr' where appropriate 2024-02-02 15:43:21 +01:00
A Thousand Ships 15369fdb1d
Remove unnecessary `this->` expressions 2024-01-29 09:59:18 +01:00
Yuri Sizov 9c919ea285 Generate script resource preview without parsing 2024-01-26 19:04:10 +01:00
Yuri Sizov 412f5b3422 Merge pull request #87353 from OverloadedOrama/max-undo-steps
Implement maximum undo steps in UndoRedo
2024-01-24 14:08:25 +01:00
Emmanouil Papadeas c73bfd5d81 Implement maximum undo steps in UndoRedo 2024-01-22 21:38:10 +02:00
Rémi Verschelde 266ae93291
Merge pull request #87331 from KoBeWi/you_can_ref_count_on_that
Simplify RefCounted check in `free()`
2024-01-18 16:35:38 +01:00
Rémi Verschelde baf87e2717
Merge pull request #87294 from vnen/allow-free-callable
Allow `free()` to be used as Callable
2024-01-18 16:35:14 +01:00
George Marques b4e08eb752
Allow `free()` to be used as Callable
This method is registered in a special way so ClassDB doesn't naturally
know about its existence. Here it is hardcoded if any other option fail
to check if it is about the `free()` method and, if so, say it exists
and return a Callable.
2024-01-18 09:33:44 -03:00
kobewi 2de8bc00a1 Simplify RefCounted check in free() 2024-01-18 12:29:58 +01:00
Rémi Verschelde fa81059b9d
Merge pull request #85939 from adamscott/single-threaded-godot-4
Add `THREADS_ENABLED` macro in order to compile Godot to run on the main thread
2024-01-18 09:33:52 +01:00
Adam Scott bd70b8e1f6
Add THREADS_ENABLED macro in order to compile Godot to run on the main thread 2024-01-17 13:58:29 -05:00
Yuri Sizov c027aecc2e Merge pull request #86676 from rune-scape/sparse-script-reload
GDScript: Hot-reload changed scripts only
2024-01-17 18:52:54 +01:00
Pedro J. Estébanez a04a67ead6 Fix inaccuracies in the report of leaked objects 2024-01-15 19:35:14 +01:00
Rémi Verschelde dc79e956b6
Merge pull request #86587 from RandomShaper/wtp_enhance
Enhance & fix `WorkerThreadPool`
2024-01-11 17:38:09 +01:00
Pedro J. Estébanez a731774813 WorkerThreadPool: Avoid most runtime allocations
Just a little optimization.

**NOTE:**
With `RID_Owner` we could replace each pair of `PagedAllocator` and
`HashMap`-of-ids-to-pointers. However, that would force us to expose
`RID` as the task/group id, instead of `int`, which would break the
API. Too bad. Let's wait until Godot 5.0.
2024-01-08 12:46:31 +01:00
Pedro J. Estébanez ae418f9469 WorkerThreadPool: Avoid deadlocks when CommandQueueMT is involved
This commit lets CommandQueueMT play nicely with the WorkerThreadPool to avoid
non-progressable situations caused by an interdependence between both. While a
command queue is being flushed, it allows the WTP to release its lock while tasks
are being awaited so they can make progress in case they need in turn to post
to the command queue.
2024-01-08 12:45:43 +01:00