-
-
Notifications
You must be signed in to change notification settings - Fork 21.3k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Implement AnimationMixer
as a base class of AnimationPlayer
and AnimationTree
#80813
Implement AnimationMixer
as a base class of AnimationPlayer
and AnimationTree
#80813
Conversation
AnimationManager
as a base class of AnimationPlayer
and AnimationTree
009814c
to
ad35ee2
Compare
For compatibility, the old setters and getters have been added. It means that some internal properties will have two property names, setters and getters. @reduz has rejected this and suggested implementing separate property names, setters and getters for AnimationPlayer and AnimationTree, but I disagree strongly with that. It makes the result in missing properties during interconversion between AnimationPlayer and AnimationTree. This causes problems with the "Change type" option of the SceneTreeDock and the creation of the DummyPlayer (these use For that, @reduz suggested putting an option in AnimationPlayerEditor, but honestly it's confusing and there is no need to ignore SceneTreeDock. Having two property names, setters and getters is certainly redundant, but I argue that redundancy is far better than going the inconvenient way and having a method that only those who have read the manuals can understand. Edited: |
ad35ee2
to
6891b20
Compare
Just to be clear, this is still a breaking compatibility change because the inheritance chain is modified. This may or may not be an issue for 3rd party language bindings. And we may or may not accept it as allowed. |
f2d74d6
to
156ac7f
Compare
b721bd2
to
21a380b
Compare
What I remember for about reset_on_save is if there is no reset animation, I think it is made to use the initial (mostly zero) value to avoid updating the scene file. If you disable reset_on_save, does that mean that onion skin will work? And for onion skin, does it mean that reset_on_save is not available? |
Unless it changed after I implemented it, reset-on-save would only work in The problem with onion skinning is that it works like this:
It didn't require a reset animation, nor it it fitting for this purpose the way I envisioned it, because the current values in the animated properties may not even be the ones in the animation. For instance, say you have a With the reset animation there are a couple of downsides:
Neither is the end of the world, and I think that is good enough to bring onion skinning back to life. However, as I said, I'd like it to work as transparently (no pun intended) as it used to do in a future iteration. |
Implement godotengine/godot-proposals#5972.
Currently AnimationPlayer and AnimationTree have separate duplicate implementations of playback and blending, so implement the base class to unify them.
Internally, this is a major change, but most compatibility will be kept.
However, Changes to conflicting method and property names between AnimationPlayer and AnimationTree are unavoidable, since retaining only one of them will destroy compatibility with the other.
AnimationPlayer.playback_active
AnimationTree.active
AnimationMixer.active
(but not change the setter/getter method since AnimationPlayer has already have theAnimationPlayer.set_active()
as setter ofAnimationPlayer.playback_active
)AnimationPlayer.playback_process_mode
AnimationTree.process_callback
AnimationMixer.callback_mode_process
AnimationPlayer.method_call_mode
AnimationMixer.callback_mode_method
(to follow above change to make group in the inspector)Note: Old methods and property names will be kept for compatibility.
This change allows AnimationTree to have an AnimationLibrary. Also, when an AnimationTree is selected, a dummy AnimationPlayer is added to the editor internally.
If the AnimationTree specifies an AnimationPlayer, the dummy AnimationPlayer's resources will be referenced specified AnimationPlayer (make them read-only in AnimationTree).
Todo:
active
property between dummy player and selected nodeDeterministic
option, see commentRework AnimationPlaybackTrack to fix AnimationTree does not stop playing looping AnimationPlayer's Animation Playback tracks #70338Will do it later as a separate PRAnimationNodeStateMachine
AnimationTree
despite nothing explicitly defining them. #80971end_offset
does not work when it exists outside the animation length #75197