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; } }
/// <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); }
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; } }
public void RemoveHighlight(VR_Highlight h) { highlightList.Remove(h); }
public void RegisterHighlight(VR_Highlight h) { highlightList.Add(h); }