API Reference

Types are in CrimsonSettings unless noted. BP = Blueprint-callable.

Authoring & registry

TypeKindDescription
UCrimsonSettingsDataAssetUDataAssetSections of FCrimsonSettingDescriptor entries. Per entry: Type, DevName, DisplayName, Description, Storage (bPersistToSharedStore, StorageKey), type fields (range/step/options/action text), Metadata (PerformanceImpact, bRequiresRestart, bRequiresConfirmation, SettingTags, ConflictRules).
UCrimsonSettingRegistryAbstract, BlueprintableBP: Populate From Data Asset, K2_BindSetting, K2_RegisterVideo/Audio/Input/GameplaySettings, Apply Preset, Save/Load/Delete Profile, Profile Exists, Set Preview Mode. C++: OnInitialize, Initialize, RegisterSetting, Regenerate, FindSettingByDevName.
UCrimsonSettingBlueprintLibraryUBlueprintFunctionLibraryFactory nodes: Create Collection, Create Scalar/Discrete Setting, Create Action, Add Setting To Collection; Get Saved Profile Slot Names.

Settings & value types

TypeKindDescription
UCrimsonSettingAbstract UObjectBase: DevName, DisplayName, description, Tags, PerformanceImpact, restart/confirmation flags, edit conditions, conflict rules.
UCrimsonSettingValueScalar_BPScalar valueSlider. OnGetValue/OnSetValue/OnGetFormattedText; BPSourceRange/BPSourceStep/BPDefaultValue; optional keyed storage source.
UCrimsonSettingValueDiscrete_BPDiscrete valueOptions. OnGetOptions/OnGetIndex/OnSetIndex; BPOptions/BPDefaultIndex; optional keyed storage source.
UCrimsonSettingValueScalarDynamic / ...DiscreteDynamicC++ valueData-source-backed (SetDynamicGetter/SetDynamicSetter). Discrete has _Bool/_Number/_Enum/_Color/_Vector2D variants.
UCrimsonSettingActionActionButton; fires a named action tag or custom delegate.
UCrimsonSettingCollection / ...CollapsibleContainerSection grouping; collapsible variant fires OnExpandedChanged.
ECrimsonSettingChangeReasonEnumChange, DependencyChanged, ResetToDefault, RestoreToInitial.
ECrimsonSettingPerformanceImpactEnumNone/Low/Medium/High/VeryHigh - drives the row badge.

Storage

TypeKindDescription
UCrimsonSettingsSharedULocalPlayerSaveGamePer-player save. Keyed store BP: Get/Set Float/Int/Bool/String Value, Has Keyed Value. Broadcasts OnSettingChanged; SaveSettings. Static LoadOrCreateSettings(LocalPlayer) (no singleton).
UCrimsonSharedSettingsSubsystemULocalPlayerSubsystemOwns/loads the per-player UCrimsonSettingsShared; BP Get Shared Settings; static Get(LocalPlayer); debounced auto-save on change.
UCrimsonSettingsLocalUGameUserSettingsMachine-local (GameUserSettings.ini): display, audio, input, scalability. Static Get(); RunAutoBenchmark(bSaveImmediately) (the screen's RunHardwareBenchmark calls it).
FCrimsonSettingDataSourceC++ interfaceResolve/GetValueAsString/SetValue over a ULocalPlayer context. Impls: ...LocalSettingDataSourceStatic, ...SettingDataSourceDynamic, FCrimsonKeyedSharedSettingDataSource.
UCrimsonSettingsProfile / ...ProfileIndexUSaveGameA TMap<FName,FString> snapshot of all settings, and the index of saved slots.
UCrimsonSettingPreset / FCrimsonSettingPresetEntryUDataAsset / structA named batch of DevName -> value overrides applied via Apply Preset.

Presentation

TypeKindDescription
UCrimsonSettingScreenCommonActivatableWidgetScreen base. Override Create Registry; requires a Settings_Panel bind-widget. bLivePreview/SetLivePreview, ApplyChanges/CancelChanges, RunHardwareBenchmark. Hooks: K2_OnRestartRequired, K2_OnConfirmationRequired, ConfirmSettingChange/RevertSettingChange.
UCrimsonSettingPanelCommonUserWidgetScrollable list. Set Search Text, Set Tag Filter, Clear Tag Filter.
UCrimsonSettingListEntryRow widgetK2_OnSettingAssigned, K2_OnSettingStateChanged (dirty/default), K2_OnConflictWarningChanged; IsSettingDirty, IsSettingAtDefault, GetConflictWarningText.
UCrimsonSettingRegistryChangeTrackerUObjectDrives Apply/Cancel; AnyDirtySettingRequiresRestart().
FCrimsonSettingConflictRuleStructWatches another setting's value and surfaces an inline warning.
CrimsonSettingsTagsNamespaceBuilt-in category tags (Performance/Visual/Audio/Input/Gameplay/Accessibility) for tag filtering.
UCrimsonFirstRunWizard / UCrimsonFirstRunStepWidgetsFirst-run setup sequence; HasCompletedSetup() static; auto-skip when already completed.