void NotifyEventHandler(IControlledElement eventHandler, int eventID) { ControllerChangedEvent e = new ControllerChangedEvent(); e.controller = this; e.target = eventHandler; e.change = eventID; eventHandler.OnControllerChanged(ref e); if (e.isPropagationStopped) { return; } if (eventHandler is VisualElement) { var element = eventHandler as VisualElement; eventHandler = element.GetFirstAncestorOfType <IControlledElement>(); while (eventHandler != null) { eventHandler.OnControllerChanged(ref e); if (e.isPropagationStopped) { break; } eventHandler = (eventHandler as VisualElement).GetFirstAncestorOfType <IControlledElement>(); } } }
public void RegisterHandler(IControlledElement handler) { //Debug.Log("RegisterHandler of " + handler.GetType().Name + " on " + GetType().Name ); if (m_EventHandlers.Contains(handler)) { Debug.LogError("Handler registered twice"); } else { m_EventHandlers.Add(handler); NotifyEventHandler(handler, AnyThing); } }
public void UnregisterHandler(IControlledElement handler) { m_EventHandlers.Remove(handler); }