godotengine / godot-proposals

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

Obsolete 2D, 3D, Script, Assetlib and MainWindow in favor of dockable tabs like Unity Engine #1890

Open Shadowblitz16 opened 3 years ago

Shadowblitz16 commented 3 years ago

Describe the project you are working on: Sprite Editor

Describe the problem or limitation you are having in your project: Not related to the issue

Describe the feature / enhancement and how it helps to overcome the problem or limitation: Make center panel obsolete in favour of true dock system. and resource/node based editors like what unity does

This allows developers more control over what their workspace looks like.

All of these can be achieved with a true docking system. you would literally be able to dock panels in panels in panels

This would get rid of the need to have dock buttons on panels because you could literally drag and drop it anywhere beside anything.

Describe how your proposal will work, with code, pseudocode, mockups, and/or diagrams: Basicly the editor would have 5 dockable area's

You would be able to enable panels through a view menu and dock them in each area or have them floating. Each tab would additionally have these 4 areas where you could dock things to split it regardless of weather its docked or floating...

A script editor is opened by clicking on a script or a existing script tab. 2d a 3d scenes would be abstracted away into a scene view control with a 2d and 3d toggle tool mode similar to unity. The asset lib would be relocated under the project menu.

Each of these panels would be resizeable to 0 or the whole editor size and both x and y axis When they become hidden due to resizing them too big or small they would need to be enabled again through the view menu

Plugins would then be made to support opening custom editors when a Node or Resource is selected Resources would probably require a double click

If this enhancement will not be used often, can it be worked around with a few lines of script?: I can guarantee this system would be used more because its mostly the same system its just more flexible. Also it can't be worked around without redesigning the whole editor with plugins

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

YuriSizov commented 3 years ago

Just look up how unity3d editor tabs work

It's easy to say "just do it the same way as that other thing looks", but this requires actual practical proposed solution and research into the matter. This proposal provides neither. We all have our wishes about UX of the editor, but we need concrete suggestions, not vague ideas. Sorry.

Shadowblitz16 commented 3 years ago

I edited the original post

Zireael07 commented 3 years ago

Duplicate or related to #1508 ?

Shadowblitz16 commented 3 years ago

@Zireael07
They are related but not a duplicate . Mine add more to the table then his suggestion

Zireael07 commented 3 years ago

I wasn't sure, that's why I said "or" :P At any rate, it's good to have a link to related issues.

FeatherAntennae commented 3 years ago

I love the idea, but I think the whole docking system using predefined section is kind of clunky and is bound to have limited functionalities that will inevitably conflict with someone's idea of a perfect workspace.

I think the implementation could be made simpler and more flexible if we took a different approach to the whole thing. I think Blender has a good approach for this.

First we'd need a better "subdivisable container" with only a few basic purposes :


This would make every part of the editor a lot more flexible while also making it a lot easier to maintain by immensely reducing the complexity. We wouldn't have to differentiate between a few dozen different types of docks, windows, popups, menus, tabs, and views JUST for visually organizing the editor.

We would just have a list of windows / views / containers that would really be just floating sections waiting to be either pinned to a "subdivisable container" or popped as its own window that can be "docked" or "pinned" to any of those container in time.

Engine devs could build a solid default workspace that's easy to tweak as needs evolve, plugins could add different workspace configurations for the user to choose, and the user could change the entire workspace as they need.


Not that I think everything should be redone from scratch, far from it, but I think that to get something like this to work well, we need to make abstraction of the current content of the editor and how it is actually implemented (because that's very much spaghetti), while keeping in mind only what type of content is or could be in the editor at the highest level; without thinking about the sub-components.

Looking at it as such, the editor is pretty simple. The main elements are :

It would be pretty easy to reproduce this behaviour with such a container available, while also making it easy to improve.

Jummit commented 3 years ago

I love the idea, but I think the whole docking system using predefined section is kind of clunky and is bound to have limited functionalities that will inevitably conflict with someone's idea of a perfect workspace.

l but I think the implementation could be made simpler and more flexible if we took a different approach to the whole thing. I think Blender has a good approach for this.

This is quickly getting off-topic as many proposals do, but I think it was already decided that a fully-customizable UI system is not on the table, because it makes it harder to make context-dependent adjustments.

I have no strong opinion on the matter, but I made a "Customizable UI" plugin that adds what you described: https://github.com/Jummit/customizable-ui, which could be used for reference.

Shadowblitz16 commented 3 years ago

@FeatherAntennae I really don't want to do anything like blender's split containers. I find blender to be the most unintuitive gui layout possible

@Jummit what do you mean context dependant adjustments? I still can't use godot on my 1 monitor screen with youtube which unity can do fairly easily

Anutrix commented 1 year ago

Now that https://github.com/godotengine/godot/pull/62378 is merged, what's the plan 2D, 3D, Asset Manager sections. Any plans on making them also undockable?