Exemplo n.º 1
0
    public void Initialize()
    {
        if (_overviewContext == null)
        {
            _overviewContext = new OverviewEditorContext();
        }
        if (_eventEditorContext == null || _eventEditorContext.TriggerRoot == null)
        {
            TriggerRoot triggerRoot = GameObject.FindObjectOfType <TriggerRoot>();
            if (!triggerRoot)
            {
                triggerRoot = (new GameObject("Events")).AddComponent <TriggerRoot>();
            }
            GlobalSymbolTableAccessor accessor = triggerRoot.GetComponent <GlobalSymbolTableAccessor>();
            if (!accessor.GlobalSymbolTable)
            {
                accessor.GlobalSymbolTable = ScriptableObject.CreateInstance <GlobalSymbolTable>();
            }

            List <Trigger> triggers = new List <Trigger>();
            PopulateTriggerList(triggerRoot.transform, triggers);

            _eventEditorContext = new EventEditorContext(this, _overviewContext, triggerRoot, triggers, accessor.GlobalSymbolTable);

            _variableView.Context  = _eventEditorContext;
            _overviewTab.Context   = _eventEditorContext;
            _triggerEditor.Context = _eventEditorContext;
            return;
        }

        if (Selection.activeGameObject)
        {
            TriggerRoot[] roots        = Selection.activeGameObject.GetComponentsInParent <TriggerRoot>(true);
            TriggerRoot   selectedRoot = null;
            if (roots.Length != 0)
            {
                selectedRoot = roots[0];
            }

            if (selectedRoot)
            {
                if (selectedRoot != _eventEditorContext.TriggerRoot)
                {
                    List <Trigger> triggers = new List <Trigger>();
                    PopulateTriggerList(selectedRoot.transform, triggers);

                    GlobalSymbolTableAccessor accessor = selectedRoot.GetComponent <GlobalSymbolTableAccessor>();
                    accessor.hideFlags = HideFlags.None;
                    if (!accessor.GlobalSymbolTable)
                    {
                        accessor.GlobalSymbolTable = ScriptableObject.CreateInstance <GlobalSymbolTable>();
                    }
                    //SelectTrigger(null);
                    _eventEditorContext = new EventEditorContext(this, _overviewContext, selectedRoot, triggers, accessor.GlobalSymbolTable);

                    _variableView.Context  = _eventEditorContext;
                    _overviewTab.Context   = _eventEditorContext;
                    _triggerEditor.Context = _eventEditorContext;
                }
            }
        }

        if (_eventEditorContext.TriggerRoot)
        {
            _eventEditorContext.TriggerRoot.gameObject.hideFlags = HideFlags.None;
            _eventEditorContext.TriggerRoot.hideFlags            = HideFlags.None;
        }
    }