public void RemoveHover(ProximityController controller) { #if UNITY_EDITOR if (debugHover) { Debug.Log(name + ": Remove hover: " + controller.name); } #endif List <ProximityController> controllerList = new List <ProximityController>() { controller }; // If there is a controller and it holds this object: int numRemaining = controller.RemoveHoveredItem(this); hoveredList.Remove(controller); CheckHoverState(controllerList); if (numRemaining > 0) { // turn on other hovered object Interactable other = controller.GetTopHoveredItem(); if (other != null) { if (other.GetComponent <Interactable> () != null) { other.GetComponent <Interactable> ().CheckHoverState(controllerList); } } } }
public bool SetHoverState(ProximityController controller, HoverState newHoverState) { if (newHoverState == HoverState.Hovered || newHoverState == HoverState.None) { Debug.LogError("Use AddHover or RemoveHover for setting hover state"); // DSL: Might just want to re-route return(false); } // HoverState.Pressed or HoverState.DraggedAway if (newHoverState == HoverState.Pressed) { if (hoverState != HoverState.Hovered && hoverState != HoverState.DraggedAway) { Debug.LogError("Cannot move to Pressed state from " + hoverState); // DSL: Might just want to re-route return(false); } if (!controller.SortedHoveredObjectsContains(this)) { controller.AddHoveredItem(this); } if (!hoveredList.Contains(controller)) { hoveredList.Add(controller); } } else if (newHoverState == HoverState.DraggedAway) { if (hoverState != HoverState.Pressed) { Debug.LogError("Cannot move to DraggedAway state from " + hoverState); // DSL: Might just want to re-route return(false); } if (controller.SortedHoveredObjectsContains(this)) { controller.RemoveHoveredItem(this); } hoveredList.Remove(controller); } List <ProximityController> controllerList = new List <ProximityController>() { controller }; ApplyHoverState(newHoverState, true, controllerList); hoverState = newHoverState; return(true); }