Skip to content

Universal plugins [wip]

Rafał Mikrut requested to merge github/fork/RandomShaper/universal_plugins into master

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

image

Plugin creation dialog

image

Default plugin code

image (The explanation is added only for model=2 plugins.)

File system dock

image

File dialog

Browsing resources

image

Directory dialog

image

This code is generously donated by IMVU.

Merge request reports