private static NodeWalkable GetPlayerStartNode(Node[] gridNodes, int gridSize) { Vector3Int playerStartNodeCoordinates = new Vector3Int(gridSize / 2, gridSize / 2, 0); int playerStartNodeIndex = WorldGridUtil.ConvertNodeCoordinatesToIndex(playerStartNodeCoordinates, gridSize); NodeWalkable playerStartNode = gridNodes[playerStartNodeIndex] as NodeWalkable; Debug.Assert(playerStartNode != null, "Invalid player start node!"); return(playerStartNode); }
private Node TryGetNodeAtCoordinates(Vector3Int nodeCoordinates) { Node node = default; if (CheckIfNodeCoordinatesAreValid(nodeCoordinates) == true) { int nodeIndex = WorldGridUtil.ConvertNodeCoordinatesToIndex(nodeCoordinates, GridSize); node = m_GridNodes[nodeIndex]; } return(node); }
public override WorldGridModel GenerateWorldGridModel(Transform gridRoot) { int nodeCount = m_GridSize * m_GridSize * m_GridSize; Node[] gridNodes = new Node[nodeCount]; for (int i = 0; i < nodeCount; ++i) { Vector3Int nodeCoordinates = WorldGridUtil.ConvertNodeIndexToCoordinates(i, m_GridSize); gridNodes[i] = CreateGridNode(nodeCoordinates, m_GridSize, gridRoot); } NodeWalkable playerStartNode = GetPlayerStartNode(gridNodes, m_GridSize); if (m_ObstacleDensity > 0) { AddObstacles(gridNodes, playerStartNode, m_ObstacleDensity, m_ObstaclePattern, m_MinimumPlayerStartClearance); } WorldGridModel gridModel = new WorldGridModel(gridNodes, m_GridSize, playerStartNode); return(gridModel); }