private void AddPathes(Chain c, List <Path> newPathes, List <PathEvent> newEvents) { if (inspectedChains.Contains(c)) { return; } else { inspectedChains.Add(c); } foreach (State s in c.states) { foreach (Path p in s.pathes) { if (p.aimState != null && GuidManager.GetChainByState(p.aimState) != c) { AddPathes(GuidManager.GetChainByState(p.aimState), newPathes, newEvents); } if (p.withEvent) { newEvents.Add(new PathEvent()); newPathes.Add(p); } } } inspectedChains.Clear(); }
private void InvokeEvent(Path p) { if (!PersonChain.states.Contains(p.aimState)) { PersonChain = GuidManager.GetChainByState(p.aimState); } if (pathEventsList.ContainsKey(p)) { pathEventsList[p].Invoke(); } }