void NotifyEventHandler(ISGControlledElement eventHandler, IGraphDataAction changeAction) { SGControllerChangedEvent e = new SGControllerChangedEvent(); e.controller = this; e.target = eventHandler; e.change = changeAction; eventHandler.OnControllerChanged(ref e); if (e.isPropagationStopped) { return; } if (eventHandler is VisualElement) { var element = eventHandler as VisualElement; eventHandler = element.GetFirstOfType <ISGControlledElement>(); while (eventHandler != null) { eventHandler.OnControllerChanged(ref e); if (e.isPropagationStopped) { break; } eventHandler = (eventHandler as VisualElement).GetFirstAncestorOfType <ISGControlledElement>(); } } }
internal void RegisterHandler(ISGControlledElement 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, DummyChange); } }
internal void UnregisterHandler(ISGControlledElement handler) { m_EventHandlers.Remove(handler); }
SGControllerEvent(ISGControlledElement controlledTarget) { target = controlledTarget; }