Describe the project you are working on:
Prototyping/Learning Godot 3.2b5
Describe the problem or limitation you are having in your project:
Testing out different versions of a node (example, camera vs InterpolatedCamera, but could be anything). But there is no way I can see to disable a Node from the editor. I have to either convert the node to a different type, or delete it.
Describe how this feature / enhancement will help you overcome this problem or limitation:
Disabling a node (and it's children) will improve debugability and prototyping speed.
Show a mock up screenshots/video or a flow diagram explaining how your proposal will work:
Right-Click a node, toggle "Disable".
Describe implementation detail for your proposal (in code), if possible:
The posting here: https://godotengine.org/qa/49696/how-to-disable-enable-a-node
suggests that there's a method set_process(bool) that can be called on a node.
Though there would also need to be editor changes (grey out the node with some help-text if the user hovers or clicks on it)
EDIT: from https://www.reddit.com/r/godot/comments/4afrab/how_do_i_disable_a_node/ it seems that you could use remove_child() to better disable it.
If this enhancement will not be used often, can it be worked around with a few lines of script?:
yes, no impact.
Is there a reason why this should be core and not an add-on in the asset library?:
it seems useful enough for anyone, especially those prototyping for the first time with godot.
I would like individual nodes to be "paused" more, because it always bothered me that pausing can only be done globaly. But a way to pause them from the editor would also be nice.
Yeah, as far as an implementation of this feature goes, I would much prefer the ability to arbitrarily pause any given node tree within the SceneTree. I spent some time trying to help this guy figure out the best way to instantiate scenes, keep them loaded in memory AND in the tree, but still paused, and not need to pause them on a global scale. The best we could come up with was to do a propagate_call operation that uses set_process(false) and set_physics_process(false) to individually update all of the different nodes in the hierarchy (since, for whatever reason, he didn't seem to be getting the right affect when just changing the root node?)
Regardless, being able to pause an arbitrary node hierarchy would greatly improve the usability of the whole "temporarily disabling a node" issue. Godot newcomers are frequently confused by the topic what-with the great variety of ways in which nodes can be disabled and the differences between them (global pausing, toggling process flags, detaching from the tree, etc.). While the level of granular control is nice, the usability isn't. There should be a de facto standard that doesn't disrupt the game state relationships (the SceneTree structure) and which doesn't necessitate multiple method calls (process flags) or reliance on global state (pausing).
At that point, you can implement this feature by just setting the pause state of the Node as you already can. Maybe add some kind of toggle utility to the Scene dock UI if people really want quick access to editing that property.
Here is my usecase for this:
I'm developing a card game. Cards are composed of various components, which I do using classes that extend from Nodes. During prototyping, some components are WIP's, some are deprecated but useful as a backup etc. I'm currently implementing the node disabling functionality myself, with an 'Active' exported bool - that is a much less clean solution than an editor supported one, and has problems such as no visual indication which components are active and which are not.
Closing in favor of #1835
If there's anything here not covered by that proposal, please comment in there.
Most helpful comment
Here is my usecase for this:
I'm developing a card game. Cards are composed of various components, which I do using classes that extend from Nodes. During prototyping, some components are WIP's, some are deprecated but useful as a backup etc. I'm currently implementing the node disabling functionality myself, with an 'Active' exported bool - that is a much less clean solution than an editor supported one, and has problems such as no visual indication which components are active and which are not.