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; } }