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 support for external/global editor plugins #10156

Closed
LemmaEOF opened this issue Jul 8, 2024 · 2 comments
Closed

Add support for external/global editor plugins #10156

LemmaEOF opened this issue Jul 8, 2024 · 2 comments

Comments

@LemmaEOF
Copy link

LemmaEOF commented Jul 8, 2024

Describe the project you are working on

I'm currently writing an editor plugin for one of my game projects in order to add a new main screen view for easier editing. It's a massive hassle to have to go in to editor settings and disable then re-enable the plugin every time I make a new change, so I'm using mrpedrobraga's Plugin Refresher to make this a one-click operator.

Describe the problem or limitation you are having in your project

Plugin Refresher is GPLv3! If I were making an open-source game this wouldn't be an issue, but due to various restrictions this project is going to be proprietary. The add-on system in Godot requires that I copy Plugin Refresher's code into my project and then commit it into my version control system; I could put it in gitignore but it gets added to the project.godot as an enabled plugin, meaning any collaborators I end up having would also need to download it separately and put it in the exact same place.

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

Godot needs a concept of "global" editor plugins - plugins that only affect the editor and are not used at run time, and so can be kept in a separate location to apply to all Godot projects opened on that machine. An individual project wouldn't need to know about global editor plugins, and the editor would be able to look in the global plugin location and load them automatically.

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

The project manager would be given a new top tab for installing global editor plugins next to the Asset Library Projects tab. The UI for the plugin list view is already implemented in the editor so can be easily re-used in the asset manager screen.

Because only some plugins are editor-exclusive, a new field in plugin.cfg would be added - environment, which would support values of "editor", "runtime", or "both", with a default value of "both" if the field is not specified. Only plugins that explicitly mark themselves as an editor-only environment would be usable as global editor plugins.

The code for global editor plugins can be kept in the same directory as the project manager metadata files.

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

I think this would be used pretty often! Plugin Refresher isn't the only editor plugin that would benefit from being global. Others include:

  • vim-motion by wovrik - Vim keybindings are a personal decision, and adding it to a project would force them onto all collaborators due to the aforementioned plugin.godot problem.
  • Local asset browser by kaifungamedev - the same GPLv3 problem as Plugin Refresher; the code shouldn't have to be included in VCS where it could violate the GPL license.
  • Quick layout changer by mathrick - this only affects the editor and shouldn't need to be bundled with the final compiled game.

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

There is actually an add-on for this! Globalize Plugins by dugramen implements a system for globally-loaded editor plugins. However, it is still itself a local plugin, requiring you to set it up again for every new project and keep it in your version management. I believe this is insufficient, and a proper global solution is still necessary.

@Calinou
Copy link
Member

Calinou commented Jul 8, 2024

Thanks for the proposal! Consolidating in #831.

@LemmaEOF
Copy link
Author

LemmaEOF commented Jul 8, 2024

Sounds good! Sadly "editor plugin" matches far too many issues for this to really be searchable.

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

2 participants