> For the complete documentation index, see [llms.txt](https://dante-3.gitbook.io/dante-docs/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://dante-3.gitbook.io/dante-docs/modular-experience-system/api-reference.md).

# API Reference

Quick reference for all classes, methods, properties, and delegates.

## Core Classes

### UModularExperienceDefinition

**Module:** ModularExperienceSystem\
**Parent:** `UPrimaryDataAsset`\
**Description:** Gameplay experience definition — action list and optional parent chain

| Property           | Type                          | Category   | Description                     |
| ------------------ | ----------------------------- | ---------- | ------------------------------- |
| `ParentExperience` | `FPrimaryAssetId`             | Experience | Optional parent experience      |
| `Actions`          | `TArray<UGameFeatureAction*>` | Gameplay   | Actions to activate (Instanced) |

| Method                    | Type         | Description                         |
| ------------------------- | ------------ | ----------------------------------- |
| `GetActionByClass(Class)` | BP Pure      | First action of the specified class |
| `FindAction<T>()`         | C++ Template | Type-safe action lookup             |

### UModularExperienceManagerComponent

**Module:** ModularExperienceSystem\
**Parent:** `UGameStateComponent`, `IModularLoadingProcessInterface`\
**Description:** Experience loading pipeline state machine — added to GameState

| Method                                        | Type         | Description                           |
| --------------------------------------------- | ------------ | ------------------------------------- |
| `ChangeCurrentExperience(Id)`                 | BP Callable  | Start loading (one-time)              |
| `IsExperienceLoaded()`                        | BP Pure      | Is loaded                             |
| `GetCurrentExperience()`                      | BP Pure      | Loaded definition (or nullptr)        |
| `CallOrRegister_OnExperienceLoaded(Delegate)` | C++          | Register delegate or call immediately |
| `ShouldShowLoadingScreen(OutReason)`          | C++ Override | Loading screen control                |

| Delegate              | Parameters                            |
| --------------------- | ------------------------------------- |
| `FOnExperienceLoaded` | `const UModularExperienceDefinition*` |

| EExperienceLoadState |                    |
| -------------------- | ------------------ |
| `Unloaded`           | `Loading`          |
| `LoadingParentChain` | `ExecutingActions` |
| `Loaded`             | `Deactivating`     |

### UModularGameFeatureAction

**Module:** ModularExperienceSystem\
**Parent:** `UGameFeatureAction`\
**Description:** Blueprint-friendly per-world action base class

| Method                          | Type            | Description       |
| ------------------------------- | --------------- | ----------------- |
| `OnActivatedForWorld(World)`    | BP Native Event | World activated   |
| `OnDeactivatedFromWorld(World)` | BP Native Event | World deactivated |

### UModularExperienceSubsystem

**Module:** ModularExperienceSystem\
**Parent:** `UWorldSubsystem`\
**Description:** Blueprint access, Auto Setup, receiver registration

| Property            | Type                        | Description                   |
| ------------------- | --------------------------- | ----------------------------- |
| `OnExperienceReady` | `FOnExperienceReadyDynamic` | Blueprint Assignable delegate |

| Method                     | Type        | Description                 |
| -------------------------- | ----------- | --------------------------- |
| `GetExperienceManager()`   | BP Pure     | Manager component           |
| `IsExperienceLoaded()`     | BP Pure     | Is loaded                   |
| `GetCurrentExperience()`   | BP Pure     | Loaded definition           |
| `WaitForExperienceReady()` | BP Callable | Wait via delegate + trigger |

| Delegate                    | Parameters                            |
| --------------------------- | ------------------------------------- |
| `FOnExperienceReadyDynamic` | `const UModularExperienceDefinition*` |

## User Facing Experience

### UMES\_UserFacingExperience

**Module:** ModularExperienceSystem\
**Parent:** `UPrimaryDataAsset`

| Property               | Type                         | Default | Description                        |
| ---------------------- | ---------------------------- | ------- | ---------------------------------- |
| `MapID`                | `FPrimaryAssetId`            | —       | Map to load                        |
| `ExperienceID`         | `FPrimaryAssetId`            | —       | Experience to activate             |
| `bIsDefaultExperience` | `bool`                       | `false` | Quick-play priority                |
| `bShowInFrontEnd`      | `bool`                       | `true`  | Show in menu                       |
| `MaxPlayerCount`       | `int32`                      | `16`    | Max players                        |
| `FacingActions`        | `TArray<UMES_FacingAction*>` | —       | Optional configuration (Instanced) |

| Method                          | Type         | Description                                |
| ------------------------------- | ------------ | ------------------------------------------ |
| `GetFacingActionByClass(Class)` | BP Pure      | First facing action of the specified class |
| `FindFacingAction<T>()`         | C++ Template | Type-safe facing action lookup             |

### UMES\_FacingAction (Abstract Base)

**Parent:** `UObject`

| Method                                | Type            | Description        |
| ------------------------------------- | --------------- | ------------------ |
| `ApplyBeforeTravel(Context, Options)` | BP Native Event | Runs before travel |
| `GetDisplayDescription()`             | BP Native Event | Description text   |

### UMES\_FacingAction\_DisplayInfo

| Property      | Type          | Description             |
| ------------- | ------------- | ----------------------- |
| `DisplayName` | `FText`       | Main title              |
| `SubTitle`    | `FText`       | Subtitle                |
| `Description` | `FText`       | Description (MultiLine) |
| `Thumbnail`   | `UTexture2D*` | Menu icon               |
| `Background`  | `UTexture2D*` | Background image        |

### UMES\_FacingAction\_ExtraArgs

| Property    | Type                     | Description         |
| ----------- | ------------------------ | ------------------- |
| `ExtraArgs` | `TMap<FString, FString>` | URL key/value pairs |

### UMES\_FacingAction\_LoadingScreen

| Property              | Type                         | Description                 |
| --------------------- | ---------------------------- | --------------------------- |
| `LoadingScreenWidget` | `TSoftClassPtr<UUserWidget>` | Loading screen widget class |
| `MinimumDisplayTime`  | `float`                      | Minimum display time (sec)  |

## Async Actions

### UAsyncAction\_ExperienceReady

| Method                            | Parameters              | Description                            |
| --------------------------------- | ----------------------- | -------------------------------------- |
| `WaitForExperienceReady(Context)` | `UObject* WorldContext` | Fires OnReady when experience is ready |

| Delegate  | Parameters                      |
| --------- | ------------------------------- |
| `OnReady` | `UModularExperienceDefinition*` |

### UAsyncAction\_OpenUserFacingExperience

| Method                                                            | Parameters   | Description                |
| ----------------------------------------------------------------- | ------------ | -------------------------- |
| `OpenUserFacingExperience(Context, Id, bServerTravel)`            | By ID        | Load asset + map travel    |
| `OpenUserFacingExperienceFromObject(Context, UFE, bServerTravel)` | By reference | Direct object + map travel |

| Delegate   | Parameters                   |
| ---------- | ---------------------------- |
| `OnLoaded` | `UMES_UserFacingExperience*` |
| `OnFailed` | `FString ErrorReason`        |

## Function Library (UModularExperienceFunctionLibrary)

| Function                                   | Return                                | Description          |
| ------------------------------------------ | ------------------------------------- | -------------------- |
| `GetExperienceManager(Context)`            | `UModularExperienceManagerComponent*` | Manager component    |
| `GetCurrentExperienceDefinition(Context)`  | `UModularExperienceDefinition*`       | Loaded experience    |
| `GetCurrentExperienceId(Context)`          | `FPrimaryAssetId`                     | Loaded experience ID |
| `IsExperienceLoaded(Context)`              | `bool`                                | Is loaded            |
| `GetExperienceSubsystem(Context)`          | `UModularExperienceSubsystem*`        | World subsystem      |
| `GetUserFacingExperienceIdByName(Name)`    | `FPrimaryAssetId`                     | ID from name         |
| `GetAllUserFacingExperiences()`            | `TArray<UMES_UserFacingExperience*>`  | All UFEs (sync)      |
| `FindActionInDefinition(Def, Class)`       | `UGameFeatureAction*`                 | Action lookup        |
| `FindFacingActionInExperience(UFE, Class)` | `UMES_FacingAction*`                  | Facing action lookup |

## Settings

### UMES\_DeveloperSettings

**Config:** `EditorPerProjectUserSettings`\
**Location:** Editor → Preferences → Project → Modular Experience System

| Property             | Type              | Default | Description                                             |
| -------------------- | ----------------- | ------- | ------------------------------------------------------- |
| `bAutoSetup`         | `bool`            | `true`  | Automatic component injection and receiver registration |
| `ExperienceOverride` | `FPrimaryAssetId` | (empty) | Editor-only experience override                         |

### AMES\_WorldSettings

**Parent:** `AWorldSettings`

| Property                    | Type              | Description            |
| --------------------------- | ----------------- | ---------------------- |
| `DefaultGameplayExperience` | `FPrimaryAssetId` | Map default experience |

### UMES\_AssetManager

**Parent:** `UAssetManager`

| Method                                        | Description                |
| --------------------------------------------- | -------------------------- |
| `Get()`                                       | Singleton                  |
| `ShouldLogAssetLoads()`                       | Is logging enabled         |
| `SynchronousLoadAsset(Path)`                  | Synchronous loading        |
| `GetAsset<T>(SoftPtr, bKeepInMemory)`         | Template asset loading     |
| `GetSubclass<T>(SoftClassPtr, bKeepInMemory)` | Template class loading     |
| `AddLoadedAsset(Asset)`                       | Register for GC protection |

## Framework Classes (ModularExperienceFramework)

| Class                   | Parent              | Component Receiver | Additional Overrides           |
| ----------------------- | ------------------- | ------------------ | ------------------------------ |
| `AMES_GameModeBase`     | `AGameModeBase`     | No                 | Constructor defaults           |
| `AMES_GameMode`         | `AGameMode`         | No                 | Constructor defaults           |
| `AMES_GameStateBase`    | `AGameStateBase`    | Yes                | —                              |
| `AMES_GameState`        | `AGameState`        | Yes                | `HandleMatchHasStarted`        |
| `AMES_Character`        | `ACharacter`        | Yes                | —                              |
| `AMES_Pawn`             | `APawn`             | Yes                | —                              |
| `AMES_PlayerController` | `APlayerController` | Yes                | `ReceivedPlayer`, `PlayerTick` |
| `AMES_PlayerState`      | `APlayerState`      | Yes                | `Reset`, `CopyProperties`      |
| `AMES_AIController`     | `AAIController`     | Yes                | —                              |

## Loading Screen

### IModularLoadingProcessInterface

| Method                                              | Description                    |
| --------------------------------------------------- | ------------------------------ |
| `ShouldShowLoadingScreen(OutReason)`                | Should loading screen be shown |
| `static ShouldShowLoadingScreen(Object, OutReason)` | Static helper                  |

### UModularLoadingScreenManager

**Parent:** `UGameInstanceSubsystem`, `FTickableGameObject`

| Method                                            | Description              |
| ------------------------------------------------- | ------------------------ |
| `RegisterLoadingProcessor(Interface)`             | Register processor       |
| `UnregisterLoadingProcessor(Interface)`           | Unregister processor     |
| `GetLoadingScreenDisplayStatus()`                 | Is visible               |
| `GetDebugReasonForShowingOrHidingLoadingScreen()` | Debug info (BP Callable) |

| Delegate                                   | Parameters      |
| ------------------------------------------ | --------------- |
| `OnLoadingScreenVisibilityChangedDelegate` | `bool bVisible` |
