godotengine / godot-proposals

Godot Improvement Proposals (GIPs)
MIT License
1.16k stars 97 forks source link

Allow AnimationNodeStateMachineTransition>Advance>Condition to be negated #6919

Open Lagomorpheux opened 1 year ago

Lagomorpheux commented 1 year ago

Describe the project you are working on

A 2D game in which I'm using an AnimationTree with several states. The relevant states (BlendSpace2D nodes of the animation tree) for this feature request are "move" and "idle".

Describe the problem or limitation you are having in your project

I can create a "is_moving" condition for "move", but I can't use that same boolean for idle. In the current state of the engine, I have to use an "idle" condition that is always the opposite of "is_moving" and control that in a different way.

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

In the editor, add a checkbox called "Negate" or some other descriptive name. If checked, it negates the condition.

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

This will simplify the set of boolean variables needed for controlling the transitions.

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

It can be worked out in the current state, only it is inconvenient and from a design point of view, it allows incorrect variable configurations (i.e. if mistakes are made, you can have both "is_moving" and "idle" with the same value).

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

From the editor's point of view, it's just a checkbox that I think it will be intuitive to use and it will let the engine do more for the user. Also, the feature request is generic enough to fit more than one type of game.

fire commented 1 year ago

@TokageItLab Any thoughts on the animation tree feature?

TokageItLab commented 1 year ago

It would be better if we could set the Callable type to the inspector in a more generic way.