OnEquipmentChanged
Fired when any equipment slot changes: Blueprint:Event On Equipment Changed
Slot Index: [int32]
New Item: [FItemInstance]
Old Item: [FItemInstance]
Slot Definition: [FEquipmentSlotDefinition]
↓
[Update UI slot]
C++:
EquipmentComponent->OnEquipmentChanged.AddDynamic(this, &AMyClass::HandleEquipmentChanged);
void AMyClass::HandleEquipmentChanged(
int32 SlotIndex,
const FItemInstance& NewItem,
const FItemInstance& OldItem,
const FEquipmentSlotDefinition& SlotDefinition)
{
// Update equipment UI
EquipmentUI->UpdateSlot(SlotIndex, NewItem);
// OldItem is valid if something was previously equipped
if (!OldItem.IsEmpty())
{
UE_LOG(LogTemp, Log, TEXT("Replaced %s in slot %s"),
*OldItem.ItemID.ToString(), *SlotDefinition.SlotName.ToString());
}
}
OnEquipmentVisualUpdate
Fired when visuals are updated: C++:EquipmentComponent->OnEquipmentVisualUpdate.AddDynamic(this, &AMyClass::HandleVisualUpdate);
void AMyClass::HandleVisualUpdate(
int32 SlotIndex,
USkeletalMesh* NewMesh,
const FEquipmentSlotDefinition& SlotDefinition)
{
// NewMesh is null when the slot was cleared
}
OnEquippedItemChargesChanged
C++:EquipmentComponent->OnEquippedItemChargesChanged.AddDynamic(this, &AMyClass::HandleChargesChanged);
void AMyClass::HandleChargesChanged(int32 SlotIndex, int32 OldCharges, int32 NewCharges)
{
// Refresh ammo counter in HUD
HUD->SetAmmoCount(NewCharges);
}