Пример #1
0
            public void Add(Segment node, out StaticNode target)
            {
                if (!_nodes.ContainsKey(node.Value))
                {
                    lock (this) {
                        if (!_nodes.ContainsKey(node.Value))
                        {
                            _nodes.Add(node.Value, new StaticNode(node.Value));
                        }
                    }
                }

                target = _nodes[node.Value];
            }
Пример #2
0
    void CreateNewStaticNode(Transform t, bool clockDirectionLeft)
    {
        Node previousNode = t.transform.GetComponent <Node>();


        enabled = false;
        StaticNode n = t.gameObject.AddComponent <StaticNode>();

        n.clockDirectionLeft = clockDirectionLeft;
        child.SetParent(n);
        n.SetParent(this);
        n.SetChild(child);
        n.AllotRopeLength(AvailableRopeLength - (position - n.position).magnitude);
        SetChild(n);
        if (previousNode != null)
        {
            StuckEnemyCheck.instance.CheckStuckEnemy(n, previousNode);
        }
    }
Пример #3
0
        private void AddInternal(Route route, Stack <Segment> segments, StaticNode node)
        {
            if (segments.Count == 0)
            {
                node.Leaves.Add(route);
                return;
            }

            var segment = segments.Pop();

            if (segment is StaticSegment)
            {
                StaticNode subNode;
                node.StaticSegments.Add(segment, out subNode);
                AddInternal(route, segments, subNode);
            }
            else
            {
                node.Leaves.Add(route);
            }
        }
Пример #4
0
 public StaticNode(StaticNode firstChild, StaticNode nextSibling, string value)
 {
     FirstChild  = firstChild;
     NextSibling = nextSibling;
     Value       = value;
 }
Пример #5
0
 public override void SetParent(Node parent)
 {
     base.SetParent(parent);
     treeNode = parent as StaticNode;
 }
Пример #6
0
        private void FindCandidates(string[] segments, string method, int currentSegment, StaticNode node, List <Route> result)
        {
            var pathIsNotTooLong = currentSegment < segments.Length;

            if (pathIsNotTooLong)
            {
                var nextSegment = segments[currentSegment];

                var subNode = node.StaticSegments.Get(nextSegment);
                if (subNode != null)
                {
                    FindCandidates(segments, method, currentSegment + 1, subNode, result);
                }
            }

            foreach (var route in node.Leaves)
            {
                if (route.Method == method && route.Segments.Segments.Length == segments.Length)
                {
                    result.Add(route);
                }
            }
        }