public static Vector3 ConvertToWorldCoords(AxialCoords localCoords) { float x = (localCoords.X + localCoords.Z * 0.5f - localCoords.Z / 2) * (HexDimensions.InnerRadius * 2f); float z = localCoords.Z * (HexDimensions.OuterRadius * 1.5f); return(new Vector3(x, 0f, z)); }
private void GenerateMap(HexMap.Data data) { Vector3 coords = data.Origin; float rowOffset = HexDimensions.InnerRadius + HexDimensions.BridgeWidth; for (int row = 0; row < data.Rows; row++) { for (int col = 0; col < data.Columns; col++) { //AxialCoords hexCoords = new AxialCoords(col-row/2, row); AxialCoords hexCoords = AxialCoords.ConvertToAxialCoords(row, col); HexCell cell = new HexCell(hexCoords, this.GetElevation(coords)); this.MapData.Cells.Add(coords, cell); coords = new Vector3( coords.x + HexDimensions.HorizontalSpacing + HexDimensions.BridgeWidth, coords.y, coords.z ); } coords = new Vector3( //(row + 1) * rowOffset, (row + 1) % 2 == 0 ? data.Origin.x : rowOffset + data.Origin.x, coords.y, coords.z + HexDimensions.VerticalSpacing + HexDimensions.BridgeWidth ); } }
public static Vector3 ConvertToCubeCoords(AxialCoords axialCoords) { return(new Vector3( axialCoords.X, axialCoords.Y, axialCoords.Z )); }
private static OffsetCoords ConvertAxialToOffset(AxialCoords axialCoords) { var q = axialCoords.Q; var r = axialCoords.R; var x = q + (r / 2); var y = r; return(new OffsetCoords(x, y)); }
public AxialCoords GetNeighborLocalPosition(Vector3 neighborCoords) { return(this.Coords + AxialCoords.ConvertToAxialCoords(neighborCoords)); }
public Vector3 GetNeighborWorldPosition(Vector3 neighborCoords) { AxialCoords localPosition = this.Coords + AxialCoords.ConvertToAxialCoords(neighborCoords); return(AxialCoords.ConvertToWorldCoords(localPosition + AxialCoords.ConvertToAxialCoords(neighborCoords))); }
public HexCell(AxialCoords coords, int elevation) { this.Coords = coords; this.Elevation = elevation; }