private static bool DrawSubGridHandle(SubGrid subGrid, SubGrid activeSubGrid, Color subGridColor) { Vector2Int subGridOriginPosition = subGrid.GetOriginCoordinate(); Vector3 subGridWorldPosition = subGrid.GetNavGrid().GetOriginWorldPosition() + new Vector3(subGridOriginPosition.x, 0, subGridOriginPosition.y); Vector3[] vertexs = { subGridWorldPosition, //Bottom-Left subGridWorldPosition + new Vector3(subGrid.Width, 0, 0), //Bottom-Right subGridWorldPosition + new Vector3(subGrid.Width, 0, subGrid.Height), //Top-Right subGridWorldPosition + new Vector3(0, 0, subGrid.Height) //Top-Left }; Handles.DrawSolidRectangleWithOutline(vertexs, subGridColor, Color.black); if (subGrid.Equals(activeSubGrid)) { return(false); } float centerX = vertexs[0].x + ((vertexs[1].x - vertexs[0].x) / 2f); float centerZ = vertexs[0].z + ((vertexs[3].z - vertexs[0].z) / 2f); Vector3 centerPosition = new Vector3(centerX, vertexs[0].y, centerZ); float buttonSize = 6f; if (Handles.Button(centerPosition, Quaternion.LookRotation(Vector3.up), buttonSize, buttonSize, Handles.RectangleHandleCap)) { return(true); } return(false); }
private void DrawNodeHandles(NavGridTool tool, SubGrid subGrid) { float NODE_SIZE = 0.45f; NavGrid navGrid = subGrid.GetNavGrid(); Vector2Int subGridOriginPosition = subGrid.GetOriginCoordinate(); Vector3 subGridWorldPosition = navGrid.GetOriginWorldPosition() + new Vector3(subGridOriginPosition.x, 0, subGridOriginPosition.y); int width = subGrid.Width; int height = subGrid.Height; //Draw each node for (int y = 0; y < height; y++) { for (int x = 0; x < width; x++) { Vector2Int nodeCoordinates = new Vector2Int( subGridOriginPosition.x + x, subGridOriginPosition.y + y ); Handles.color = tool.ChooseNodeColor(nodeCoordinates); if (currentMode == Mode.EDIT) { //Draw nodes as buttons and watch for input if (Handles.Button(subGridWorldPosition + new Vector3(x, 0, y), Quaternion.LookRotation(Vector3.up), NODE_SIZE, NODE_SIZE, Handles.CubeHandleCap)) { HandleNodeClick(subGrid, nodeCoordinates); } } } } }