class AUseAction

#include <UseAction.h>

class AUseAction: public ABasePrototype
{
public:
    // methods

    virtual void Initialize();
    virtual void Perform();
    virtual void Undo();

    void SetUsePrefab(
        TSubclassOf<AActor> UseBlueprint,
        TSubclassOf<AActor> ColliderBlueprint,
        bool UsePrefabAlreadyExists = false,
        AActor* UseAttachActor = nullptr,
        USceneComponent* UseAttachComponent = nullptr,
        FName UseSocketName = NAME_None,
        AActor* ColliderAttachActor = nullptr,
        USceneComponent* ColliderAttachComponent = nullptr,
        FName ColliderSocketName = NAME_None
        );
};

// direct descendants

class ABPUseAction;

Inherited Members

public:
    // classes

    class InstrumentTransforms;

    // fields

    TArray<FORamaVR> afterSpawnFunctions;
    TMap<AActor*, UAnimSequence*> CharacterAnimationsMap;
    TMap<AActor*, UAnimSequence*> CharacterUndoAnimations;
    TArray<AActor*> BoundActorCharacterAnimated;
    USceneComponent* _rootComp;
    int OverrideSetPath = -1;
    int AlternativePath = -1;
    FString ActionName = TEXT("");

    // methods

    FString GetActionName();
    void SetActioName();
    AAction* GetActionNode();
    void SetActionNode();
    int32 GetAlternativePath();
    void SetAlternativePath();
    virtual void Perform() = 0;
    virtual void Undo() = 0;
    virtual void Initialize() = 0;
    virtual void InitializeHolograms() = 0;
    virtual void DifficultyRestrictions() = 0;
    virtual void SetNextModule(FORamaVR action) = 0;
    virtual void SetNextModulePath(FORamaVRSetPath Action, int pathToSet) = 0;
    virtual void Initialize();
    virtual void Perform();
    virtual void Undo();
    virtual void InitializeHolograms();
    void SetAfterSpawn(FORamaVR afterSpawnFunction);
    void SetUndoAction(FORamaVR undoActionFunction);

    void SetPerformAction(
        FORamaVR performActionFunction,
        int numOfTriggerToPlay = -1
        );

    void BindCharacterAnimationToPerform(
        TSubclassOf<AActor> Actor,
        UAnimSequence* seq
        );

    void BindCharacterAnimationOnUndo(TSubclassOf<AActor> Actor, UAnimSequence* seq);
    virtual void DifficultyRestrictions();
    virtual void ActionCall();
    void SetEventListener(FString _event);

    void SetHologramObject(
        TSubclassOf<AActor> Class,
        AActor* AttachActor = nullptr,
        USceneComponent* AttachParent = nullptr,
        FName SocketName = NAME_None
        );

    virtual void SetNextModule(FORamaVR action);
    virtual void SetNextModulePath(FORamaVRSetPath Action, int pathToSet);
    FString GetClassName() const;