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:
- Plugin Initialization — Performed once at plugin startup
- 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.