From ddb9a73d3debce9cb17e7ba961bea1788ce87db3 Mon Sep 17 00:00:00 2001 From: Tommaso Bianchi Date: Sat, 10 Jun 2017 19:58:21 +0200 Subject: [PATCH 1/2] Fixed HexMap::GetHexesWithinRangeOf The center of the hexes returned by this function was not the same as the one passed as a parameter --- Assets/HexMap.cs | 17 +++++++++++++++-- Assets/HexMap_Continent.cs | 3 +-- 2 files changed, 16 insertions(+), 4 deletions(-) diff --git a/Assets/HexMap.cs b/Assets/HexMap.cs index 7d54343..196df19 100644 --- a/Assets/HexMap.cs +++ b/Assets/HexMap.cs @@ -202,13 +202,26 @@ public void UpdateHexVisuals() } } + /// + /// Pick hexes around a center one within a given range. + /// If range = 0 returns only the centerHex. + /// + /// The center hex + /// The maximum distance between a selected hex and the centerHex + /// An unordered array of hexes containing all the selected ones public Hex[] GetHexesWithinRangeOf(Hex centerHex, int range) { + if(centerHex == null || range < 0) + { + Debug.LogError("HexMap::GetHexesWithinRangeOf cannot be called with centerHex = " + centerHex + " and range = " + range); + return new Hex[] { }; + } + List results = new List(); - for (int dx = -range; dx < range-1; dx++) + for (int dx = -range; dx < range + 1; dx++) { - for (int dy = Mathf.Max(-range+1, -dx-range); dy < Mathf.Min(range, -dx+range-1); dy++) + for (int dy = Mathf.Max(-range, -dx-range); dy < Mathf.Min(range, -dx+range) + 1; dy++) { results.Add( GetHexAt(centerHex.Q + dx, centerHex.R + dy) ); } diff --git a/Assets/HexMap_Continent.cs b/Assets/HexMap_Continent.cs index c9ac66b..93b6b3c 100644 --- a/Assets/HexMap_Continent.cs +++ b/Assets/HexMap_Continent.cs @@ -28,7 +28,6 @@ override public void GenerateMap() ElevateArea(x, y, range); } - } // Add lumpiness Perlin Noise? @@ -88,7 +87,7 @@ void ElevateArea(int q, int r, int range, float centerHeight = .8f) { //if(h.Elevation < 0) //h.Elevation = 0; - + h.Elevation = centerHeight * Mathf.Lerp( 1f, 0.25f, Mathf.Pow(Hex.Distance(centerHex, h) / range,2f) ); } } From ecb6f124ba0b79398bcfd52093be3324957b066c Mon Sep 17 00:00:00 2001 From: TommasoBianchi Date: Sun, 25 Jun 2017 19:35:17 +0200 Subject: [PATCH 2/2] Changed < range + 1 into <= range This way the code is more symmetric and understandable --- Assets/HexMap.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Assets/HexMap.cs b/Assets/HexMap.cs index 196df19..7bbd2b3 100644 --- a/Assets/HexMap.cs +++ b/Assets/HexMap.cs @@ -219,9 +219,9 @@ public Hex[] GetHexesWithinRangeOf(Hex centerHex, int range) List results = new List(); - for (int dx = -range; dx < range + 1; dx++) + for (int dx = -range; dx <= range; dx++) { - for (int dy = Mathf.Max(-range, -dx-range); dy < Mathf.Min(range, -dx+range) + 1; dy++) + for (int dy = Mathf.Max(-range, -dx-range); dy <= Mathf.Min(range, -dx+range); dy++) { results.Add( GetHexAt(centerHex.Q + dx, centerHex.R + dy) ); }