// This method returns a square Sector edged in walls but otherwise open and doesn't include default exits between Sectors public Dictionary <GridPosition, MazeNode> CreateSimpleSector() { int WidthOffset = Mathf.FloorToInt(m_Width / 2); int LeftEdge = m_Origin.x - WidthOffset; int RightEdge = m_Origin.x + WidthOffset; int HeightOffset = Mathf.FloorToInt(m_Height / 2); int TopEdge = m_Origin.y + HeightOffset; int BottomEdge = m_Origin.y - HeightOffset; Dictionary <GridPosition, MazeNode> NodeList = new Dictionary <GridPosition, MazeNode>(); Vector3 ExitPoint = Vector3.zero; for (int x = LeftEdge; x <= RightEdge; x++) { for (int y = TopEdge; y >= BottomEdge; y--) { MazeNode NewNode = new MazeNode(new GridPosition(x, y, m_Origin.z)); if (x > LeftEdge) { ExitPoint = new Vector3(-1, 0, 0); NewNode.AddExitPoint(ExitPoint); } if (x < RightEdge) { ExitPoint = new Vector3(1, 0, 0); NewNode.AddExitPoint(ExitPoint); } if (y < TopEdge) { ExitPoint = new Vector3(0, 1, 0); NewNode.AddExitPoint(ExitPoint); } if (y > BottomEdge) { ExitPoint = new Vector3(0, -1, 0); NewNode.AddExitPoint(ExitPoint); } GridPosition Key = new GridPosition(x, y, 0); NodeList.Add(Key, NewNode); } } return(NodeList); }
private void ConnectNodes(MazeNode Node1, MazeNode Node2) { if (Node1.Position.x > Node2.Position.x) { Node1.AddExitPoint(new GridPosition(-1, 0, 0)); Node2.AddExitPoint(new GridPosition(1, 0, 0)); } else if (Node1.Position.x < Node2.Position.x) { Node1.AddExitPoint(new GridPosition(1, 0, 0)); Node2.AddExitPoint(new GridPosition(-1, 0, 0)); } if (Node1.Position.y > Node2.Position.y) { Node1.AddExitPoint(new GridPosition(0, -1, 0)); Node2.AddExitPoint(new GridPosition(0, 1, 0)); } else if (Node1.Position.y < Node2.Position.y) { Node1.AddExitPoint(new GridPosition(0, 1, 0)); Node2.AddExitPoint(new GridPosition(0, -1, 0)); } }