I appreciate that you as a user expect it to just work, and that is of course our goal, so the software is easy to use. However, it can sometimes be quite tricky to address all the details even for seemingly simple operations. For example, you want to preserve the keys when you drag across skeletons
a reasonable request. However, things can be keyed in many animations, so what happens? Do we bring the keys over only from the current animation, adding them to the current animation in the target skeleton? Or do we create all animations in the target skeleton (unless an animation with the same name already exists) to match all the animations that have keys for the items being transferred? What if you want to drag across skeletons but don't want the keys at all? Are there other actions you might want? We need to figure out all the actions that should be allowed, then we probably need to show a dialog to ask which you want.
I know you likely don't particularly care about the technical difficulties, but there is a lot of complexity when moving across skeletons and that is the reason why not all the expected functionality is there yet. Each action across skeletons is a fair amount of work and is especially error prone because references to things in the old skeleton can easily go unnoticed until much later, leaving a corrupt/broken project.
Note in your video when you copy a bone, you get a "toast" (message in the bottom center of the viewport) about what was copied or pasted, for example: Bone transforms copied.
That lets you know you've copied the bone transform, not the bone itself or something else. Hitting ctrl+C
may not always do what you expect, as it depends on the context of what you were doing last. Specifically, there are selections in various views (the viewport, tree, dopesheet, etc) so what is copied? When you interact with a view it gains focus, indicated by the view name being underlined. The toast messages can be helpful to clarify what is happening what you copy, for example when copying keys (in the dopesheet) versus bone transforms (in the viewport or tree). As we add more functionality we may need menus to allow choosing what is copied, eg a bone transform versus the bone itself. This is sometimes called "copy special".
After copying, in some cases you can select a different object then paste to have what you copied applied to the other object. For example, you can transfer bone transforms this way, or keys (currently only within the same skeleton). If you paste and there is no selection or the selection isn't valid for transferring what you copied, then it will apply what you copied to the object you copied it from. If you haven't changed what you copied, it appears to do nothing, though it is actually applying what you copied and a toast tells you what was pasted. This is what was happening in your video when you copy/pasted keys
since currently you can't paste keys across skeletons, it was pasting the keys on top of the existing keys, effectively not making a change. Note when you copy/pasted bone transforms, it is allowed across skeletons and was applying the changes, but the bones were already in the same place so no change could be seen.
As you found, using Import project
, Animation is a workaround for not being able to copy/paste keys, though it is a bit clumsy. Note that the imported animation was renamed to anim2
because an animation already existed with the name anim
. If there wasn't an anim
animation you wouldn't have needed a rename step. We will add an option to overwrite existing animations (and maybe merge?).
Anyway, getting back to your requests, I absolutely agree that we should improve the use cases you've shown in your video. I've create an issue to track the work:
https://github.com/EsotericSoftware/spine-editor/issues/582
As for an ETA, we aren't able to fit this into 4.0 as we are currently focusing on stability so we can get the non-beta release out. Version 4.1 will be a quality of life release, so this would fit well there. If you have other requests to streamline your workflow, please let us know and we'll do our best to make things work more smoothly.