Skip to content

Player Components

Overview

Player-related components live on PlayerState or PlayerController and handle saveable player-wide data (unlock slots, equipment mesh visibility, new-player flag), extended player info (possessed pawn lifecycle), and player class (replicated class tag, startup abilities, friendly/data info).

Key traits:

  • UMIPControllerCommonSaveableObjectsComponent – Saveable; holds extra unlocked inventory slots per inventory tag, equipment mesh hidden overrides, and "new player" flag. Integrates with inventory expansion and save/load.
  • UMIPExtendedPlayerInfoComponent – Extends MIPChatSystem's UMIPPlayerInfoComponent; reacts to possessed pawn change and end play to keep player info in sync; handles update on logout.
  • UMIPPlayerClassComponent – Replicated player class (FGameplayTag); provides class data info, friendly info, startup abilities; broadcasts when class is initialized.

All paths below are relative to Plugins/ModularInventoryPlus/Source/ModularInventoryPlus/.


Key Classes & Files

Class File
UMIPControllerCommonSaveableObjectsComponent Public/Player/MIPControllerCommonSaveableObjectsComponent.h
UMIPExtendedPlayerInfoComponent Public/Player/MIPExtendedPlayerInfoComponent.h
UMIPPlayerClassComponent Public/Player/MIPPlayerClassComponent.h

UMIPControllerCommonSaveableObjectsComponent

  • Base: UMIPBaseSaveableComponent.
  • Attachment: PlayerController (typical).
  • Unlock slots: ExtraUnlockedInventorySlotsMap (SaveGame) – FGameplayTag → extra unlocked count. UnlockInventorySlots(InInventory, InInventoryTag, InValue, bInPermanent, bInLoaded) is protected; called by inventory expansion or internal flow. Friend: AMIPBaseInventoryExpansionActor.
  • Equipment mesh: ToggleEquipmentMeshShownState(InEquipmentSlotTag), RemoveEquipmentShownState(InEquipmentSlotTag), GetEquipmentMeshShownState(InEquipmentSlotTag). EquipmentMeshHiddenOverridesMap (SaveGame) – slot tag → bool hidden override.
  • New player: bNewPlayer (SaveGame); IsNewPlayer(). Set false in OnLoaded_Implementation(); OnLoggingOut() override for cleanup if needed.

UMIPExtendedPlayerInfoComponent

  • Base: UMIPPlayerInfoComponent (from MIPChatSystem module).
  • Attachment: PlayerController.
  • Flow: BeginPlay → bind to possessed pawn change; OnPossessedPawnChanged, OnPossessedPawnEndPlay; on logout, UpdatePlayerInfoForPawnOnLoggingOut(InPawn). Keeps player info consistent when pawn is possessed/destroyed.

UMIPPlayerClassComponent

  • Base: UMIPBasePlayerStateComponent.
  • Attachment: PlayerState.
  • Properties: Class (FGameplayTag, SaveGame, ReplicatedUsing=OnRep_Class), ClassIndex (SaveGame). Resolved via MIPPlayerClassSettingsDataAssetPlayerClassAllInfoPtr.
  • API: SetClass(InClass); GetPlayerClass(), GetPlayerClassFriendlyInfo(), GetPlayerClassDataInfo(), GetStartupAbilities().
  • Delegate: OnPlayerClassInitializedDelegate(FMIPPlayerClassDataInfo, FMIPPlayerClassFriendlyInfo) – fired when class is set/initialized.

Integration

  • Inventory slot unlocks: UMIPBaseInventoryManagerComponent uses permanent unlock count from UMIPControllerCommonSaveableObjectsComponent (friend/callback); see Inventory.
  • Equipment mesh show/hide is consumed by equipment or UI systems that read GetEquipmentMeshShownState.
  • Player class is used for class-restricted items, abilities, and UI; startup abilities are applied from GetStartupAbilities().