// Copyright ExByte Studios. Item Interaction Ecosystem. #pragma once #include "CoreMinimal.h" #include "InteractionAction.h" #include "WorldInteractionActions.generated.h" /** * World interaction actions (section 16). Each routes through the player's * UItemInteractionComponent::ServerExecuteMode so it shares the one validated * execution path (carry/equip/install/use live in UWorldInteractionComponent). */ UCLASS(meta = (DisplayName = "Action: Carry (Attached)")) class ITEMWORLD_API UInteractionAction_CarryAttached : public UInteractionAction { GENERATED_BODY() public: UInteractionAction_CarryAttached(); virtual void Execute_Implementation(const FInteractionContext& Context) override; }; UCLASS(meta = (DisplayName = "Action: Carry (Physics)")) class ITEMWORLD_API UInteractionAction_CarryPhysics : public UInteractionAction { GENERATED_BODY() public: UInteractionAction_CarryPhysics(); virtual void Execute_Implementation(const FInteractionContext& Context) override; }; UCLASS(meta = (DisplayName = "Action: Equip")) class ITEMWORLD_API UInteractionAction_Equip : public UInteractionAction { GENERATED_BODY() public: UInteractionAction_Equip(); virtual void Execute_Implementation(const FInteractionContext& Context) override; }; UCLASS(meta = (DisplayName = "Action: Drop Held Item")) class ITEMWORLD_API UInteractionAction_DropHeldItem : public UInteractionAction { GENERATED_BODY() public: UInteractionAction_DropHeldItem(); virtual void Execute_Implementation(const FInteractionContext& Context) override; }; UCLASS(meta = (DisplayName = "Action: Install Into World Slot")) class ITEMWORLD_API UInteractionAction_InstallIntoWorldSlot : public UInteractionAction { GENERATED_BODY() public: UInteractionAction_InstallIntoWorldSlot(); virtual void Execute_Implementation(const FInteractionContext& Context) override; }; UCLASS(meta = (DisplayName = "Action: Remove From World Slot")) class ITEMWORLD_API UInteractionAction_RemoveFromWorldSlot : public UInteractionAction { GENERATED_BODY() public: UInteractionAction_RemoveFromWorldSlot(); virtual void Execute_Implementation(const FInteractionContext& Context) override; }; UCLASS(meta = (DisplayName = "Action: Use Held On Target")) class ITEMWORLD_API UInteractionAction_UseHeldOnTarget : public UInteractionAction { GENERATED_BODY() public: UInteractionAction_UseHeldOnTarget(); virtual void Execute_Implementation(const FInteractionContext& Context) override; };