예제 #1
0
    private void Insert(Trigger trigger)
    {
        // Build stack of trigger's lineage up to (and excluding) the Event root.
        Stack<GameObject> triggerParents = new Stack<GameObject>();
        Transform current = trigger.transform.parent.transform;
        while (current != null && current != _rootNode.GameObject.transform)
        {
            triggerParents.Push(current.gameObject);
            current = current.parent;
        }

        // Pop the oldest ancestor and traverse tree down lineage adding new nodes as necessary.
        GameObject currentGameObject;
        TriggerCollectionNode currentNode = _rootNode;
        while (triggerParents.Count > 0)
        {
            currentGameObject = triggerParents.Pop();
            TriggerCollectionNode node = currentNode.FirstOrDefault((otherNode) => otherNode.GameObject == currentGameObject);
            if (node != null)
            {
                currentNode = node;
            }
            else
            {
                TriggerCollectionNode newNode = new TriggerCollectionNode(_context, _overviewContext, currentGameObject);
                currentNode.AddChild(newNode);
                currentNode = newNode;
            }
        }

        currentNode.AddChild(new TriggerCollectionNode(_context, _overviewContext, trigger.gameObject));
    }
예제 #2
0
 public void Initialize()
 {
     _rootNode = new TriggerCollectionNode(_context, _overviewContext, _rootNode.GameObject);
     _triggers.Clear();
     PopulateTriggerList(_rootNode.GameObject.transform, _triggers);
     BuildTree(_rootNode);
 }
예제 #3
0
 public TriggerCollection(EventEditorContext context, OverviewEditorContext overviewContext, TriggerRoot root)
 {
     _rootNode = new TriggerCollectionNode(context, overviewContext, root.gameObject);
     _triggers = new List<Trigger>();
     _context = context;
     _overviewContext = overviewContext;
     Initialize();
 }
예제 #4
0
    private void BuildTree(TriggerCollectionNode node)
    {
        foreach (Transform child in node.GameObject.transform)
        {
            var childNode = new TriggerCollectionNode(_context, _overviewContext, child.gameObject);
            node.AddChild(childNode);

            if (child.gameObject.GetComponent<Trigger>())
            {
                continue;
            }
            BuildTree(childNode);
        }
        /*
        foreach (Trigger trigger in triggers)
        {
            Insert(trigger);
        }*/
    }