class ARemoveAction

#include <RemoveAction.h>

class ARemoveAction: public ABasePrototype
{
public:
    // methods

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

    void SetRemovePrefab(
        TSubclassOf<AActor> RemoveBlueprint,
        TSubclassOf<AActor> ToolBlueprint,
        AActor* RemoveAttachActor = nullptr,
        USceneComponent* RemoveAttachComponent = nullptr,
        FName RemoveSocketName = NAME_None,
        AActor* ToolAttachActor = nullptr,
        USceneComponent* ToolAttachComponent = nullptr,
        FName ToolSocketName = NAME_None
        );

    FRemoveGroup SetRemovePrefabLong(
        FString grabbablePrefabPath,
        FString removePrefabPath,
        AActor* removePrefabParent = nullptr,
        FString _toolPrefabPath = "",
        InheritTransformFrom _inheritTransformGrabbale = none,
        InheritTransformFrom _inheritTransformRemove = none
        );
};

// direct descendants

class ABPRemoveAction;

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;