void AddLinkToParent(MazeMapPosition currentPosition, List <MazeMapPosition> links) { if (currentPosition == null) { return; } links.Add(currentPosition); AddLinkToParent(currentPosition.Parent, links); }
public static MazeMapPosition Add(ulong[] position, MazeMapPosition parentMapPosition) { var key = MakeKey(position); if (!allMapPosition.ContainsKey(key)) { var newOne = new MazeMapPosition { Parent = parentMapPosition, Position = position }; allMapPosition.Add(key, new List <MazeMapPosition> { newOne }); return(newOne); } var positionList = allMapPosition[key]; if (positionList == null || !positionList.Any()) { throw new Exception("MapHistory.cs/Add() ; positionList == null || !positionList.Any()"); } for (var i = 0; i < positionList.Count; ++i) { if (AreSame(positionList[i].Position, position)) { return(null); } } var newMapPosition = new MazeMapPosition { Parent = parentMapPosition, Position = position }; positionList.Add(newMapPosition); return(newMapPosition); }