protected override bool GetTouch2DImpl(byte device, byte control, ref Vector2 position, ref byte state)
    {
        if (owner.isBoundToClient == false)
        {
            return(false);
        }

        AirVRVector2D pos = new AirVRVector2D();

        if (ocs_GetInputTouch2D(owner.playerID, device, control, ref pos, ref state) == false)
        {
            return(false);
        }

        position = pos.toVector2();
        return(true);
    }
    protected override bool GetAxis2DImpl(byte device, byte control, ref Vector2 axis2D)
    {
        if (owner.isBoundToClient == false)
        {
            return(false);
        }

        AirVRVector2D axis = new AirVRVector2D();

        if (ocs_GetInputAxis2D(owner.playerID, device, control, ref axis) == false)
        {
            return(false);
        }

        axis2D = axis.toVector2();
        return(true);
    }
 private static extern bool ocs_GetInputTouch2D(int playerID, byte device, byte control, ref AirVRVector2D position, ref byte state);
 private static extern bool ocs_GetInputAxis2D(int playerID, byte device, byte control, ref AirVRVector2D axis2D);