private void OnEnable()
        {
            if (_newPosesAction != null)
            {
                _newPosesAction.enabled = true;
            }

            _instance = SteamVR.instance;
            if (_instance == null)
            {
                return;
            }

            _deviceIndex        = (int)_steamVrTrackedObject.index;
            _deviceType         = GetDeviceType((uint)_deviceIndex);
            _deviceSerialNumber =
                _instance.GetStringProperty(ETrackedDeviceProperty.Prop_SerialNumber_String, (uint)_deviceIndex);
        }
    private void OnNewPoses(TrackedDevicePose_t[] poses)
    {
        if (!m_SteamVR_TrackedObject.isValid)
        {
            return;
        }

        int index = (int)m_SteamVR_TrackedObject.index;

        if (index == -1)
        {
            return;
        }

        if (poses.Length <= index)
        {
            return;
        }

        if (!poses[index].bDeviceIsConnected)
        {
            return;
        }

        if (!poses[index].bPoseIsValid)
        {
            return;
        }

        if (poses[index].eTrackingResult != ETrackingResult.Running_OK)
        {
            return;
        }

        // set index on this device
        m_Index = index;

        // get and check device type
        OPTDeviceType type = GetDeviceClass(index);

        if (type == OPTDeviceType.Unknown)
        {
            return;
        }

        // get and check device serial number
        string deviceSN = GetStringProperty((uint)index, ETrackedDeviceProperty.Prop_SerialNumber_String);

        if (deviceSN == null)
        {
            return;
        }

        m_DeviceSerialNumber = deviceSN;

        // get device position and rotation
        var        pose = new SteamVR_Utils.RigidTransform(poses[index].mDeviceToAbsoluteTracking);
        Vector3    pos  = pose.pos;
        Quaternion rot  = pose.rot;

        HI5_DataTransform.PushOpticalData(deviceSN, type, pos, rot);

        if (HI5_BindInfoManager.IsGloveBinded(Hand.LEFT) && HI5_BindInfoManager.IsGloveBinded(Hand.RIGHT))
        {
            return;
        }

        CheckDeviceBinded(index);
    }