godotengine / godot-proposals

Godot Improvement Proposals (GIPs)
MIT License
1.12k stars 69 forks source link

Adding Copy/Paste/Cut options for AnimationTree Editor #8146

Open CsloudX opened 11 months ago

CsloudX commented 11 months ago

Describe the project you are working on

a fps game

Describe the problem or limitation you are having in your project

First, my graph like this: image then, I change my graph to this: image And want to reuse my RunningLocomotion BlendSpace in Locomotion StateMachine image

I want to move a BlendSpace2d node into another blending node. However, there is no way to move a node into another without re-making it. It would be good some simple options such as copy, paste, cut, duplicate and similar.

Describe the feature / enhancement and how it helps to overcome the problem or limitation

Adding the options when right mouse input is pressed and enable keys such as Ctrl + C

Describe how your proposal will work, with code, pseudo-code, mock-ups, and/or diagrams

/

If this enhancement will not be used often, can it be worked around with a few lines of script?

/

Is there a reason why this should be core and not an add-on in the asset library?

/

astillich commented 11 months ago

I ran into this, too and I'm thinking about giving an implementation a try. I think it needs https://github.com/godotengine/godot-proposals/issues/7899 and https://github.com/godotengine/godot-proposals/issues/4336 first, but instead of using weird paths I'd just extend ResourceSaver / ResourceLoader with methods dealing with PackedByteArray.

Then the various animation editors could serialize data for the clipboard and deserialize clipboard data, making copy paste across the different editors possible.

I haven't checked yet, but if the editor instances are not recreated each time you switch to a blend tree / state machine, I could get away with just cloning stuff like the visual shader editor seems to do. I'll have a closer look in the evening, but maybe somebody can provide some pointers.

EDIT: this issue https://github.com/godotengine/godot/issues/80009 is related.

astillich commented 11 months ago

My lunch break investigation showed that the editors are only created once. The approach the visual shader editor uses can be used here, including supporting copy & paste between different trees / state machines / etc. The only real disadvantage is that you can't copy & paste between different Godot editor instances, but that's something people can live with, I think.

colinmbo commented 1 month ago

This is extremely important functionality that I'm surprised isn't getting much attention. There should be no reason to manually rebuild the same nodes any time you want to restructure your state machine. Seems like a massive oversight in the design of the AnimationTree to not provide this fundamental capability.

Calinou commented 1 month ago

@colinmbo Please don't bump issues without contributing significant new information. Use the :+1: reaction button on the first post instead.