Skip to content
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

Add a node preset system #6057

Open
ettiSurreal opened this issue Jan 7, 2023 · 2 comments
Open

Add a node preset system #6057

ettiSurreal opened this issue Jan 7, 2023 · 2 comments

Comments

@ettiSurreal
Copy link

Describe the project you are working on

Mainly motivated after seeing a discussion in #5003, but this proposal can be applied to any project.

Describe the problem or limitation you are having in your project

Nodes like MeshInstance, CollisionShape and PointLight2D require a very simple and repetitive setup, such as just adding a Box or a Capsule shape, or adding a Gradient2D resource.
This is often very tedious to do, especially with nodes like PointLight2D and might make simple things like shapes more difficult to discover for new users, especially those used to other engines where you can usually just look that specific shape up and add it straight away, which might make them assume the engine just doesn't have those built in and that the user needs to import their own (speaking from personal experience).

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

A simple Node Preset system, the engine would ship with some common presets built-in.
Presets can be selected in the Create New Node window as well as in the inspector.
The user also has an option to create custom presets for any node, this saves the node settings, used resources and their settings, and the attached script and its settings to a file.

The selecting a preset simply changes the settings of a node (does not override them, the user can still reset them to node default), as well as add resources, the settings of which can also be changed by the preset.
The Transform settings Control and Node2D and Node3D will most likely have to be ignored by the preset, as then selecting a custom preset from the inspector will reset the nodes transform.

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

A few very rough UI-Mockups, only to get the basic idea across.

Selecting a preset from the Add Node dialog, I am not sure how to mark custom presets in this case.
image

Also works with searching.
image

Selecting a preset from the Inspector, custom ones are marked with a blue rectangle. There is also an option to save the current settings as a preset, which would prompt you to name it first.
The Big Red Box custom preset in this case sets the MeshInstance3Ds mesh resource to BoxMesh with non-default scale, and a material that makes it red (either adding it to the mesh resource material slot or the override slot in GeometryInstance3D.
image

Please note the icons, colors and names of resources are only used as a placeholder here, as the actual presets would likely have unique/customizable ones.

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

I am not exactly sure how possible it would be to extend the editor to be able to do this through an add-on.

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

This is mainly to help users save time not having to do repetitive tasks and help new users discover certain things more easily.

@ettiSurreal ettiSurreal changed the title Add built-in and custom node preset system Add a node preset system Jan 7, 2023
@TheDuriel
Copy link

This can practically be achieved through the use of class_name scripts, and setting the defaults you want in _init(). You don't get a fancy preset picker. But you do get the various classes populating the editor. Many of Godots Button classes are practically this, setting a few properties and doing nothing else.

@eon-s
Copy link

eon-s commented Apr 19, 2024

I forgot to search proposals when opening a discussion, but consider the usability improvements and use cases mentioned here too #9557 in case this is going to be developed.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

4 participants