예제 #1
0
        private void SelectClosestRadialItem()
        {
            RadialItem lastClosest     = closest;
            float      closestDistance = 9999f;

            GameObject hand = GetHand();

            if (closest != null && Vector3.Distance(closest.transform.position, hand.transform.position) > m_maxDistance * m_scale)
            {
                closest = null;
            }

            foreach (RadialItem item in radialItems)
            {
                if (item != closest)
                {
                    item.Deselect();
                }
            }

            foreach (RadialItem item in radialItems)
            {
                if (!item.Active)
                {
                    continue;
                }
                float distance = Vector3.Distance(item.transform.position, hand.transform.position);
                if (distance < closestDistance)
                {
                    closestDistance = distance;
                    closest         = item;
                }
            }

            if (closest != null && closest != lastClosest)
            {
                if (closestDistance < m_maxDistance * m_scale)
                {
                    CellSound.Post(AK.EVENTS.GAME_MENU_SELECT_GEAR, closest.transform.position);
                    SteamVR_InputHandler.TriggerHapticPulse(0.02f, 40f, 0.25f, Controllers.GetDeviceFromInteractionHandType(targetHand));
                    closest.Select();
                    m_lastHovered = closest;
                }
                else
                {
                    closest = null;
                }
            }
        }