Commit Graph

98 Commits

Author SHA1 Message Date
demolke 0468bea899 Add per-bone meta to Skeleton3D
Individual bones are not represented as `Node`s in Godot, in order to support meta functionality for them the skeleton has to carry the information similarly to how other per-bone properties are handled.
- Also adds support for GLTF import/export
2024-09-16 16:26:15 +02:00
Rémi Verschelde b1088047a0
Merge pull request #95124 from kleonc/skeleton2d_fix_set_get_always_returning_true
Fix `Skeleton2D.{_set|_get}` always returning true
2024-08-19 14:34:09 +02:00
A Thousand Ships 602a348ab1
Make `Skeleton3D` bone simulator an internal child 2024-08-07 11:38:16 +02:00
kleonc 115cd47fd6 Fix Skeleton2D.{_set|_get} always returning true 2024-08-04 18:44:07 +02:00
Silc Lizard (Tokage) Renew 9c1f23c3db Re-add Skeleton3D::animate_physical_bones 2024-07-14 14:24:25 +09:00
Silc Lizard (Tokage) Renew 793f3832e5 Rework migration of animate_physical_bones to compatibility 2024-06-25 18:54:59 +09:00
Silc Lizard (Tokage) Renew 5774d57496 Optimize update flag by SkeletonModifier 2024-06-23 17:01:01 +09:00
Silc Lizard (Tokage) Renew a57f9f863d Add get_concatenated_bone_names() to Skeleton3D for Modifier's hint 2024-06-10 10:19:36 +09:00
Dario e54b928974 Replace List with LocalVector on Skeleton3D's bone transform update. 2024-05-20 11:58:36 -03:00
kobewi 413c11357d Use Core/Scene stringnames consistently 2024-05-13 23:41:07 +02:00
kobewi a262d2d881 Add shorthand for using singleton string names 2024-05-11 18:53:08 +02:00
A Thousand Ships a0dbdcc3ab
Replace `find` with `contains/has` where applicable
* Replaces `find(...) != -1` with `contains` for `String`
* Replaces `find(...) == -1` with `!contains` for `String`
* Replaces `find(...) != -1` with `has` for containers
* Replaces `find(...) == -1` with `!has` for containers
2024-05-08 12:37:42 +02: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
Rémi Verschelde 84013a31ea
Merge pull request #91122 from TokageItLab/simulator-memdel
Modify allocation process of the PhysicalBoneSimulator in Skeleton3D
2024-05-04 11:52:22 +02:00
Silc Lizard (Tokage) Renew a22923daf7 Static allocation bones copy for SkeletonModifier
Co-authored-by: SlugFiller <5435495+SlugFiller@users.noreply.github.com>
2024-05-04 11:16:26 +09:00
Silc Lizard (Tokage) Renew 4900dddb88 Modify allocation process of the PhysicalBoneSimulator in Skeleton3D 2024-05-03 06:00:10 +09:00
Silc Lizard (Tokage) Renew 78a5ef4158 replace bone_pose_updated to skeleton_updated signal 2024-04-13 05:48:42 +09:00
Kusok c0cc9d2b5e Fix deprecated=no build 2024-04-06 23:13:38 +08:00
Silc Lizard (Tokage) Renew bf3ef56c2f Remove unavailable property binding reset_on_save from Skeleton3D 2024-04-05 08:47:50 +09:00
Silc Lizard (Tokage) Renew 04dd299cba Skeleton3D: Add SkeletonModifier / Deprecate Override / Separate PB 2024-04-05 01:28:26 +09:00
smix8 35dafc9fa8 Split monolithic physics class files
Splits monolithic physics class files.
2024-02-27 11:18:16 +01:00
Zi Ye 995bc8d049 Make Skeleton3D::add_bone return the new bone index right away, instead of requiring an additional call to get_bone_count. 2024-02-25 05:24:48 -06:00
nikitalita 3fbbc3bbd6 Fix `Skeleton3D` deprecated format missing pose 2024-02-05 23:36:31 -08:00
Yuri Sizov 36f5050c34 Merge pull request #87050 from nikitalita/convert-3.x-skeletons
Skeleton3D: Convert 3.x skeletons
2024-01-22 20:38:51 +01:00
nikitalita bcad569ed9 Skeleton3D: Convert 3.x skeletons 2024-01-19 17:43:09 -08:00
kobewi 0e8f90f4c8 Update deferred calls to use Callables 2024-01-09 16:11:47 +01:00
kobewi de4a3fa151 Unify and streamline connecting to Resource changes 2023-07-17 19:35:57 +02:00
Ninni Pipping dcd2b883eb Use NULL instead of COND checks when appropriate
Restricted to scene
2023-06-10 08:56:30 +02:00
Lyuma c567d46a2f Skeleton3D: Only reset rest_dirty after ALL bone transforms have finished update 2023-06-08 19:23:14 -07:00
detomon ea80213eee Fix adding bones with the same name after calling Skeleton3D.clear_bones() 2023-06-05 11:55:09 +02:00
Artyom Lunchenkov f645eee62e Improve Skeleton3D::find_bone() performance 2023-05-23 21:02:46 +06:00
Lyuma 565803ce3d Fix get_bone_pose_global_no_override() 2023-05-18 03:14:45 -07:00
Juan Linietsky 98c655ec8d Refactor Node Processing
* Node processing works on the concept of process groups.
* A node group can be inherited, run on main thread, or a sub-thread.
* Groups can be ordered.
* Process priority is now present for physics.

This is the first steps towards implementing https://github.com/godotengine/godot-proposals/issues/6424.
No threading or thread guards exist yet in most of the scene code other than Node. That will have to be added later.
2023-05-09 19:17:51 +02:00
Lyuma fd25bb50ab Remove SkeletonModificationStack3D, and Skeleton3D api cleanup
Removes all 3D modification resources. SkeletonIK3D is a node and still supported.
Remove deprecated Skeleton3D functionality for 4.0, so we can add it back in 4.x.
Remove local_pose_override feature from Skeleton3D and BoneAttachment3D.
Expose Skeleton3D::get_version() so IK scripts/extensions can cache bones.

Note: This change only affects 3D. SkeletonModification2D will work as before.
2023-01-12 12:04:53 -08:00
Rémi Verschelde d95794ec8a
One Copyright Update to rule them all
As many open source projects have started doing it, we're removing the
current year from the copyright notice, so that we don't need to bump
it every year.

It seems like only the first year of publication is technically
relevant for copyright notices, and even that seems to be something
that many companies stopped listing altogether (in a version controlled
codebase, the commits are a much better source of date of publication
than a hardcoded copyright statement).

We also now list Godot Engine contributors first as we're collectively
the current maintainers of the project, and we clarify that the
"exclusive" copyright of the co-founders covers the timespan before
opensourcing (their further contributions are included as part of Godot
Engine contributors).

Also fixed "cf." Frenchism - it's meant as "refer to / see".
2023-01-05 13:25:55 +01:00
Adam Scott ea33001b95 Add safety-checks before some servers `free()` 2022-12-29 16:23:38 -05:00
Silc Renew ac1db40614 Improve BoneRenamer to avoid conflicting with original bone name 2022-11-16 16:36:33 +09:00
hare_ware 913f57f695 Fix Skeleton3D falsely assuming all physical bones will be children of their first bone 2022-10-31 06:59:42 -04:00
Tomasz Chabora 882a4f8906 Port remaining connections to callable_mp 2022-09-18 13:08:54 +02:00
Silc Renew 28b11e216a Clean-up/change some Skeleton3D API 2022-08-30 23:03:12 +09:00
benbot 9c1bcdcf1a removes unused skeleton functions and stray comments in RigidDynamicBody3D 2022-08-24 16:49:39 -04:00
Rémi Verschelde 1f61d47766
Merge pull request #64339 from YuriSizov/core-multilevel-validate-property 2022-08-22 21:39:48 +02:00
Yuri Sizov 1a24c9e14b Make `_validate_property` a multilevel method 2022-08-22 18:35:11 +03:00
Silc Renew b27fe6452d add init bone poses 2022-08-18 18:41:37 +09:00
Silc Renew dde235ad82 add position track normalization & post process key value for retarget 2022-07-26 18:48:08 +09:00
Silc Renew f3af3aedfe add rest fixer to importer retarget 2022-07-16 19:53:11 +09:00
baihan da7eb96804 Fix physical bone is not animated in running project. 2022-06-19 09:46:34 +08:00
Aaron Record 900c676b02 Use range iterators for RBSet in most cases 2022-05-19 12:09:16 +02:00
Haoyu Qiu fc3b845c07 Add dedicated macros for property name extraction
* Replace case-by-case extraction with PNAME & GNAME
* Fix group handling when group hint begins with property name
* Exclude properties that are PROPERTY_USAGE_NO_EDITOR
* Extract missing ADD_ARRAY*, ADD_SUBGROUP* macros
2022-05-19 14:08:47 +08:00
reduz 746dddc067 Replace most uses of Map by HashMap
* Map is unnecessary and inefficient in almost every case.
* Replaced by the new HashMap.
* Renamed Map to RBMap and Set to RBSet for cases that still make sense
  (order matters) but use is discouraged.

There were very few cases where replacing by HashMap was undesired because
keeping the key order was intended.
I tried to keep those (as RBMap) as much as possible, but might have missed
some. Review appreciated!
2022-05-16 10:37:48 +02:00