// Oleg Petruny proprietary.

#pragma once

#include "Components/ActorComponent.h"
#include "CoreMinimal.h"

#include "InteractableModificator.generated.h"

enum class EActivatorType : uint8;

UCLASS(Abstract, Blueprintable, BlueprintType)
class UInteractableModificator : public UActorComponent
{
    GENERATED_BODY()

public:
    void OnRegister() override;

    UFUNCTION(BlueprintCallable)
    const class UInputMappingContext* GetMappingContext() const;
    UFUNCTION(BlueprintCallable)
    EActivatorType GetActivatorTypes() const;

    UFUNCTION(BlueprintNativeEvent, BlueprintCallable)
    void Bind(class UEnhancedInputComponent* input);
    virtual void Bind_Implementation(class UEnhancedInputComponent* input) {}

    UFUNCTION(BlueprintNativeEvent, BlueprintCallable)
    void Unbind();
    virtual void Unbind_Implementation() {}

protected:
    UPROPERTY(EditDefaultsOnly, NoClear)
    TSoftObjectPtr<class UInputMappingContext> inputMapping;

    UPROPERTY(EditDefaultsOnly, NoClear, meta = (Bitmask, BitmaskEnum = "EActivatorType"))
    int32 activatorTypes = 0;

};
