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

spinner

Module Mounting Flow

spinner

Subsystems

Subsystem
Description

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

Class
Description

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

Enum
Values
Description

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:

Strategy
Mechanism
Use Case

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