The Skins plugin goes through a series of steps to load all the used assets. There are two processes involved through the lifecycle of the game:

  1. Plugin Initialization — Performed once at plugin startup
  2. Skins Reload — Performed when the user requests a skin reload

Plugin Initialization

Config Manager

Performs initialization of the BepInEx config file.

Mod Data Locations

Creates necessary folders for Skins to operate.

Loads Gear Dump

Loads existing gear dump (used for editor), and prepares for further writes to the dump.

Load Shader References

Loads references to shaders that we are aware of (for editor and caching).

Write Internal Data

Writes internal data for editor use

Skin Group Initialization

Normalize Folders

Performs folder name normalization unless disabled in config (default: not disabled).

Move Per-Profile Skins to Global Skins Folder

Moves all per-profile Skin Group folders to the global skins folder if possible and enabled in config (default: enabled).

Registers Dummy Vanilla Skins Group

Registers the virtual vanilla GTFO skins Skin Group.

Load Global Skins

Loads all skins in the global skins folder.

Load Per-Profile Skins

Loads all skins in the per-profile skins folder.

Register Types for IL2CPP

Register Mono types in il2cpp for Behaviours.

Apply Harmony Patches

Apply necessary patches for material modification at runtime.

Start Skin Process and Dev UI OnAllManagersSetup

Start processes to monitor keybinds and create dev UI elements once managers are setup.

Skins Reload

Clear Skin Groups

Remove all skin group references.

Unload Assets

Unload managed textures and texture macros.

Re-Initialize

Performs Skin Group Initialization.

Update All ManagedMaterialTargets

Update all Mesh Renders and Filters that are currently managed so that their texture references are updated.