Esempio n. 1
0
        public void SetActiveDistanceGrabbable(VR_Grabbable grabbable)
        {
            activeDistanceGrabbable = grabbable;

            if (activeDistanceHighlight != null)
            {
                activeDistanceHighlight.UnHighlight(this);
            }


            if (grabbable != null)
            {
                activeDistanceHighlight = grabbable.GetComponent <VR_Highlight>();
            }
            else
            {
                activeDistanceHighlight = null;
            }
        }
Esempio n. 2
0
        /// <summary>
        /// Find the near avalible grabbable to this controller
        /// </summary>
        /// <returns></returns>
        private VR_Highlight FindNearHighlight()
        {
            if (highlightList.Count == 0)
            {
                return(null);
            }

            VR_Highlight highlight   = null;
            float        minDistance = float.MaxValue;

            for (int n = 0; n < highlightList.Count; n++)
            {
                if (highlightList[n].enabled && highlightList[n].CanHighlight() && highlightList[n].CanHighlightUsingController(this))
                {
                    Transform highlightPoint = ControllerType == VR_ControllerType.Right ? highlightList[n].HighlightPointRightHand : highlightList[n].HighlightPointLeftHand;

                    if (highlightPoint != null)
                    {
                        float d = (Position - highlightPoint.position).magnitude;

                        if (d < minDistance && d <= highlightList[n].HighlightDistance)
                        {
                            highlight   = highlightList[n];
                            minDistance = d;
                        }
                    }
                }
            }

            if (highlight == null)
            {
                highlight = activeDistanceHighlight;
            }
            else if (activeDistanceHighlight != null)
            {
                activeDistanceHighlight.UnHighlight(this);
            }


            return(highlight);
        }
Esempio n. 3
0
        private void UpdateHighlightState()
        {
            if (CanHighlight())
            {
                VR_Highlight highlight = FindNearHighlight();

                //if we lost the nearest object
                if (highlight == null && currentHighlight != null)
                {
                    currentHighlight.UnHighlight(this);
                    currentHighlight = null;
                }

                //if we found a new object and we dont have highlight
                if (currentHighlight == null && highlight != null)
                {
                    currentHighlight = highlight;
                    highlight.Highlight(this);
                }

                //if we found a new closer object
                else if (highlight != null && highlight != currentHighlight)
                {
                    currentHighlight.UnHighlight(this);
                    highlight.Highlight(this);
                    currentHighlight = highlight;
                }

                //update the current higlight object, be sure that it is always on
                else if (highlight != null && currentHighlight == highlight && !currentHighlight.IsHighlight)
                {
                    currentHighlight.Highlight(this);
                }
            }
            else if (currentHighlight != null)
            {
                currentHighlight.UnHighlight(this);
                currentHighlight = null;
            }
        }
Esempio n. 4
0
 public void RemoveHighlight(VR_Highlight h)
 {
     highlightList.Remove(h);
 }
Esempio n. 5
0
 public void RegisterHighlight(VR_Highlight h)
 {
     highlightList.Add(h);
 }