class IMagesInputDevice

#include <MagesInputDevice.h>

class IMagesInputDevice
{
public:
    // fields

    bool IsCurrentlyTracked;

    // methods

    virtual void Initialize(UMagesHand* Hand) = 0;
    virtual TArray<UShapeComponent> SetupDefaultPhysicalColliders(FTransform ModelParent) = 0;
    virtual bool ReadyToInitialize() = 0;
    virtual TArray<UShapeComponent*> SetupDefaultColliders() = 0;
    virtual FString GetDeviceName() = 0;

    virtual void TriggerHapticPulse(
        uint8 durationMicroSec,
        EMagesButtons Button = Touchpad
        ) = 0;

    virtual AActor* SetupDefaultRenderModel() = 0;
    virtual float GetAxis1D(EMagesButtons button) = 0;
    virtual FVector2D GetAxis2D(EMagesButtons button) = 0;
    virtual bool GetPressDown(EMagesButtons button) = 0;
    virtual bool GetPressUp(EMagesButtons button) = 0;
    virtual bool GetPress(EMagesButtons button) = 0;
    virtual bool GetTouchDown(EMagesButtons button) = 0;
    virtual bool GetTouchUp(EMagesButtons button) = 0;
    virtual bool GetTouch(EMagesButtons button) = 0;
    virtual bool GetNearTouchDown(EMagesButtons button) = 0;
    virtual bool GetNearTouchUp(EMagesButtons button) = 0;
    virtual bool GetNearTouch(EMagesButtons button) = 0;
};