コード例 #1
0
        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>();
                }
            }
        }
コード例 #2
0
        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);
            }
        }
コード例 #3
0
 internal void UnregisterHandler(ISGControlledElement handler)
 {
     m_EventHandlers.Remove(handler);
 }
コード例 #4
0
 SGControllerEvent(ISGControlledElement controlledTarget)
 {
     target = controlledTarget;
 }