Universal plugins [wip]
Created by: RandomShaper
Goal
The main idea is creating a system that allows plugins to be installed into a specific project or globally (at the OS user level) so they are available for every project.
Remarks
- Each commit adds a logical step on top of which others are built.
- Given the big scope of this PR, it's better to review it on a per-commit basis.
- Some of them (especially, the one marked with
[f]
) are meant to be squashed together before merging. - Feedback and testing is welcome!
Materials
Specification
Please read the full design document.
The most recent commit (Improve UX of universal plugins) is not covered by the design document. It does a number of changes (detailed in the full commit message) to make the feature as easy-to-use as possible).
Screenshots
-
Legacy Plugin is a legacy (
model=1
, the default) plugin at<project_dir>/addons/
. -
Universal Plugin A is a universal (
model=2
) plugin at<project_dir>/addons/
(project-level, available to this project only). -
Universal Plugin B is a universal (
model=2
) plugin at<godot_config_dir>/addons/
(user-level, available to all projects). -
Universal Plugin C is a universal (
model=2
) plugin packed as a PCK file at<godot_config_dir>/addons/
(user-level, available to all projects).
Plugin settings
Plugin creation dialog
Default plugin code
(The explanation is added only for
model=2
plugins.)
File system dock
File dialog
Browsing resources
Directory dialog
This code is generously donated by IMVU.