/// <summary> /// Получает самую дальнюю от коннекторов ноду, являющуюся соседней текущей ноде. /// </summary> private SpawnNode GetFarthestFromConnectorstNeighborNode(SpawnNode node) { var nextItems = ListUtils.CreateListFrom(node.Index, _allNodes); var prevItems = ListUtils.CreateReversedListFrom(node.Index, _allNodes); //если соседняя нода занята, то вернуть ноду с другой стороны if (nextItems[0].NodeType != SpawnNodeType.Empty) { return(prevItems[0]); } if (prevItems[0].NodeType != SpawnNodeType.Empty) { return(nextItems[0]); } for (int i = 0; i < nextItems.Count; i++) { if (nextItems[i].NodeType != SpawnNodeType.Connector) { return(prevItems[0]); } if (prevItems[i].NodeType != SpawnNodeType.Connector) { return(nextItems[0]); } } Debug.LogError("node with connector not found"); return(null); }
private int GetNearNodeDistance(SpawnNode node, params SpawnNodeType[] types) { int distance = 0; var nextItems = ListUtils.CreateListFrom(node.Index, _allNodes); var prevItems = ListUtils.CreateReversedListFrom(node.Index, _allNodes); for (int i = 0; i < nextItems.Count; i++) { distance++; if (nextItems[i].NodeType.In(types) || prevItems[i].NodeType.In(types)) { return(distance); } } return(distance); }
private SpawnNode GetNearNode(SpawnNode node, params SpawnNodeType[] types) { var nextItems = ListUtils.CreateListFrom(node.Index, _allNodes); var prevItems = ListUtils.CreateReversedListFrom(node.Index, _allNodes); for (int i = 0; i < nextItems.Count; i++) { if (nextItems[i].NodeType.In(types)) { return(nextItems[i]); } if (prevItems[i].NodeType.In(types)) { return(prevItems[i]); } } Debug.LogError("Empty node not found"); return(null); }