ModuleManager
Editor-time module management system for mounting and unmounting shared Paragon engine repositories into a Unity project. Modules are Plastic SCM repositories that can be linked into the project workspace via xlinks (Plastic SCM cross-repository links) or symlinks (filesystem symbolic links).
Architecture
Module Mounting Flow
Subsystems
Plastic SCM API wrapper — repository discovery, workspace management, branch/changeset operations, xlink/symlink creation
Editor
UI components — settings provider, module element, toolbar (documented separately)
Core Classes
Represents a single mountable module — tracks repository, workspace, mount/target paths, and handles mounting/unmounting
Static manager — creates, retrieves, and removes modules; persists settings to ProjectSettings/
ScriptableObject storing the dictionary of registered engine modules
Enums
MountState
NONE, XLINK, SYMLINK
How a module is currently linked into the project
Key Concepts
Module Mounting
An engine module is a shared Paragon repository (e.g., a core framework library) that can be mounted into the current project. Mounting creates a link from a mount path (within the project workspace) to a target path (within the module's workspace).
Two mount strategies are supported:
XLINK
Plastic SCM cross-repository link
Production — versioned, pinned to a specific changeset
SYMLINK
Filesystem symbolic link
Development — live editing of the linked module
Settings Persistence
Module configuration is stored in ProjectSettings/EngineModuleSettings.asset using Unity's InternalEditorUtility.SaveToSerializedFileAndForget. This keeps settings in the project (trackable in version control) without polluting the Assets folder.
Initialization
EngineModuleManager initializes in its static constructor. It loads settings, resolves the project's Plastic SCM workspace, and initializes all registered modules (resolving their repositories and workspaces).
Quick Start
Last updated