API Reference
Public types grouped by area. Every identifier here exists in the CrimsonCommon runtime module's public headers.
Tag stacks
| Type | Description |
|---|---|
FCrimsonTagStack / FCrimsonFloatTagStack | One (tag, count) item; GetTag(), GetStackCount() |
FCrimsonTagStackContainer | Replicated int container: AddStack / RemoveStack / ClearStacks / GetStackCount / ContainsTag / GetStacks |
FCrimsonFloatTagStackContainer | Replicated float container; adds SetStack to overwrite a value outright |
UCrimsonTagStackStatics | Blueprint library: Add/Remove/Clear/Get/Contains TagStack (+ Float variants, Set Float Tag Stack) |
Ability system bridge
| Type | Description |
|---|---|
UCrimsonAbilitySet | Data asset bundling abilities/effects/attributes; GiveToAbilitySystem(ASC, &Handles, Source) (C++) / K2_GiveToAbilitySystem -> "Give To Ability System" (BP) |
FCrimsonAbilitySet_GrantedHandles | Tracks a grant for revocation; TakeFromAbilitySystem(ASC) |
UCrimsonAbilitySetStatics | RevokeAbilitySet(Handles, ASC) - BP-friendly revoke (server only) |
ICrimsonAbilitySystemOwner | Bridge interface: GrantAbilitySet(Set, Source, &Handles), RemoveGrantedAbilitySet(Handles) - no ASC getter |
FCrimsonAbilitySet_GameplayAbility / _GameplayEffect / _AttributeSet | The asset's entry structs (ability+input tag, effect+level, attribute set+defaults) |
FCrimsonAttributeDefault | One (FGameplayAttribute, Value) base-value override applied at grant time |
Interaction contracts
| Type | Description |
|---|---|
ICrimsonInteractableTarget | GatherInteractionOptions (C++) / K2_GatherInteractionOptions (BP); plus CustomizeInteractionEventData, OnInteractableHovered/Unhovered, NotifyInteractionSuccess |
ICrimsonInteractionInstigator | ChooseBestInteractionOption(Query, Options) - arbitrate when several options are offered |
FCrimsonInteractionOption | One option: Text/SubText, InputType, InputHoldDuration, and ability fields (grant / target ASC / action ability) |
FCrimsonInteractionQuery | RequestingAvatar, RequestingController, OptionalObjectData |
FCrimsonInteractionOptionBuilder | Accumulates options and stamps each one's target scope |
ECrimsonInteractionInputType | Instant / Hold |
Messaging
| Type | Description |
|---|---|
UCrimsonMessageSubsystem | Get(WorldContext); BroadcastMessage<T> / K2_BroadcastMessage ("Broadcast Message"); RegisterListener<T> (lambda / member-fn / params); UnregisterListener |
FCrimsonMessageListenerHandle | Binding handle; Unregister(), IsValid() |
FCrimsonMessageListenerParams<T> | Advanced params - PartialMatch + pre-bound callback |
ECrimsonMessageMatch | ExactMatch / PartialMatch |
UCrimsonAsyncAction_ListenForMessage | Blueprint async "Listen for Crimson Messages" node |
Context menu
| Type | Description |
|---|---|
UCrimsonContextAction | Blueprintable, EditInlineNew, DefaultToInstanced base. BlueprintNativeEvent hooks: GetAvailability (Hidden/Disabled/Enabled; default maps IsAvailable), GetDisabledReason, ValidateExecution (server anti-cheat), ExecuteAction(Context, Payload) (server-side), GetDynamicDisplayName. Properties: ActionTag, SectionTag, SortPriority, bIsDefault, bIsDestructive, ConfirmationMode, ConfirmationPrompt, CloseBehavior. GetActionId() = wire identity (tag name, else class name) |
UCrimsonContextActionSet | Reusable UPrimaryDataAsset holding an action list (mirrors UCrimsonAbilitySet) - the designer-friendly authoring path. AppendTo(OutActions) for providers. Same loaded asset on client and server -> deterministic |
UCrimsonContextAction_GrantAbility | Built-in: TryActivateAbilityByClass on the instigator's ASC |
UCrimsonContextAction_DebugMessage | Test/debug action: logs Message at Display verbosity when executed server-side. Drop into any action list to verify the full menu round-trip without gameplay code |
UCrimsonContextAction_FromInteractionOption | Transient wrapper letting ICrimsonInteractableTargets surface in the menu. Wire id derives from the option ability class; ValidateExecution enforces the crimson.ContextMenu.MaxExecuteDistance range CVar (default 1000 cm, <= 0 disables) |
UCrimsonContextActionGatherer | THE single gather path (provider interface, else interactable actor + components, then registered contributors) + Hidden filtering + deterministic sort (destructive last, section, priority). Helpers: GatherActions, ResolveAction(Actions, ActionId, Occurrence), MakeActionHandle(Actions, Action, OutId, OutOccurrence) |
ICrimsonContextActionProvider | GatherContextActions - must return a deterministic, identically-ordered list on client and server. Optional native ValidateContextActionRequest(Context) rejects wrong-instigator requests server-side (e.g. another player's item) |
ICrimsonContextActionContributor | Inject actions into OTHER objects' menus (quests add "Turn In" to an NPC). GatherContextActionsForTarget inspects Context.Target and appends only when relevant. Same determinism contract as providers |
UCrimsonContextActionContributorRegistry | UWorldSubsystem: RegisterContributor(Object, Priority) / UnregisterContributor. Consulted by the gatherer after the target's own gather, in deterministic (priority, class name) order. Register symmetrically on server and client or contributed actions cannot resolve |
FCrimsonContextActionContext / FCrimsonContextActionHandle | Execution context (instigator/target) / RPC payload ({ Provider, ActionId, Occurrence, Payload } - stable id + occurrence-among-same-id, plus an optional FInstancedStruct argument) |
UCrimsonContextActionPlayerComponent | Player-controller component with the Server_ExecuteContextAction RPC (not auto-attached). Server flow: re-gather via the gatherer -> ValidateContextActionRequest -> resolve by (ActionId, Occurrence) -> GetAvailability == Enabled -> ValidateExecution -> execute. Stale requests drop gracefully |
UI foundation
| Type | Description |
|---|---|
UCrimsonPrimaryGameLayout | Layer stack: GetPrimaryGameLayout(PC/LP), PushWidgetToLayerStack<T> / ...Async, RegisterLayer, GetLayerWidget, FindAndRemoveWidgetFromLayer |
UCrimsonGameUIManagerSubsystem / UCrimsonGameUIPolicy | Create and own each local player's root layout; reach it via GetCurrentUIPolicy() -> GetRootLayout (on the policy); local-multiplayer interaction mode |
UCrimsonUIExtensionSubsystem | Extension points/widgets: RegisterExtensionPoint, RegisterExtensionAsWidget (+ For Context / As Data), Unregister*, BP K2_* |
FCrimsonUIExtensionPointHandle / FCrimsonUIExtensionHandle | Handles returned by registration |
UCrimsonUIExtensions | Statics: PushContentToLayer_ForPlayer, PushStreamedContentToLayer_ForPlayer, Suspend/ResumeInputForPlayer |
Modular actors & player layer
| Type | Description |
|---|---|
ACrimsonModular* | Character, Pawn, PlayerController, PlayerState, GameMode[Base], GameState[Base], AIController - GFP-extensible framework bases |
UCrimsonCommonGameInstance | Primary-player tracking + OnPrimaryPlayerSet hook |
UCrimsonCommonLocalPlayer | Player-side delegate broadcaster |
ACrimsonCommonPlayerController | Controller -> local-player bridge |
UCrimsonUserSubsystem | CommonUser port: login, privileges, online context |
UCrimsonSessionSubsystem | CommonUser port: host/join/matchmaking, beacons |
ECrimsonUser* enums + FCrimsonOnlineResultInformation | Online context / init state / privilege / availability / async-task state, and a result wrapper (in CrimsonUserTypes.h) |
Input, teams & utilities
| Type | Description |
|---|---|
FCrimsonChordRequirement | Shift/Ctrl/Alt modifier requirement; GetDisplayName(BaseKey) |
ECrimsonGamepadSensitivity | Ten-point Slow->Insane preset scale |
ICrimsonInputBindingProvider | Read/write chord requirements per mapping+slot (implemented by CrimsonInput, consumed by CrimsonSettings) |
ICrimsonTeamAgentInterface / FOnCrimsonTeamTagsChangedDelegate | Team/faction membership tags + change delegate; BroadcastTeamChange (full system in CrimsonTeams) |
UCrimsonTagLabelSettings | Project Settings -> Crimson -> Crimson Tag Labels; GetNameForTag (C++) / "Get Tag Label" (BP) |
ECrimsonStatDisplayMode / ECrimsonDisplayablePerformanceStat | Perf-stat HUD display mode and the displayable stat set (FPS, frame/latency, packet) |
FCrimsonAsyncMixin | Sequential async-load mixin (ported from Epic's AsyncMixin) |
Logging
| Macro | Use |
|---|---|
CRIMSON_DECLARE_LOG_CATEGORY / CRIMSON_DEFINE_LOG_CATEGORY | Declare (header) / define (module .cpp) a named, filterable category |
CRIMSON_LOG_VERBOSE / _INFO / _DISPLAY / _WARN / _ERROR / _FATAL | Log at a verbosity; Msg accepts any value FString can build from |