class UMagesDevice

#include <MagesDevice.h>

class UMagesDevice: public UActorComponent
{
public:
    // fields

    bool IsCurrentlyTracked;

    // methods

    virtual void TickComponent(
        float DeltaTime,
        ELevelTick TickType,
        FActorComponentTickFunction* ThisTickFunction
        );

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

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

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