Skip to content

Commit 861401e

Browse files
committed
ugly ass workaround to make the library compile
1 parent c8eeaea commit 861401e

File tree

2 files changed

+69
-36
lines changed

2 files changed

+69
-36
lines changed

sources/noise/cell.swift

Lines changed: 29 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -29,9 +29,10 @@ extension _CellNoise2D
2929
return Math.dot(dv, dv)
3030
}
3131

32-
// still here to make tests run, because of a linker bug in the Swift compiler
33-
public
34-
func closest_point(_ x:Double, _ y:Double) -> (point:(Int, Int), r2:Double)
32+
// ugly hack to get around compiler linker bug
33+
@inline(__always)
34+
fileprivate
35+
func _closest_point(_ x:Double, _ y:Double) -> (point:(Int, Int), r2:Double)
3536
{
3637
let sample:Math.DoubleV2 = (x * self.frequency, y * self.frequency)
3738

@@ -164,25 +165,6 @@ extension _CellNoise2D
164165

165166
return (closest_point, r2)
166167
}
167-
168-
public
169-
func evaluate(_ x:Double, _ y:Double) -> Double
170-
{
171-
let (_, r2):((Int, Int), Double) = self.closest_point(x, y)
172-
return self.amplitude * r2
173-
}
174-
175-
public
176-
func evaluate(_ x:Double, _ y:Double, _:Double) -> Double
177-
{
178-
return self.evaluate(x, y)
179-
}
180-
181-
public
182-
func evaluate(_ x:Double, _ y:Double, _:Double, _:Double) -> Double
183-
{
184-
return self.evaluate(x, y)
185-
}
186168
}
187169

188170
public
@@ -212,6 +194,31 @@ struct CellNoise2D:_CellNoise2D, HashedNoise
212194
{
213195
return self.permutation_table.hash(point)
214196
}
197+
198+
public
199+
func closest_point(_ x:Double, _ y:Double) -> (point:(Int, Int), r2:Double)
200+
{
201+
return self._closest_point(x, y)
202+
}
203+
204+
public
205+
func evaluate(_ x:Double, _ y:Double) -> Double
206+
{
207+
let (_, r2):((Int, Int), Double) = self.closest_point(x, y)
208+
return self.amplitude * r2
209+
}
210+
211+
public
212+
func evaluate(_ x:Double, _ y:Double, _:Double) -> Double
213+
{
214+
return self.evaluate(x, y)
215+
}
216+
217+
public
218+
func evaluate(_ x:Double, _ y:Double, _:Double, _:Double) -> Double
219+
{
220+
return self.evaluate(x, y)
221+
}
215222
}
216223

217224
public

sources/noise/gradient.swift

Lines changed: 40 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -29,14 +29,10 @@ extension _ClassicNoise3D
2929
return (h & 1 != 0 ? -u : u) + (h & 2 != 0 ? -v : v)
3030
}
3131

32-
public
33-
func evaluate(_ x:Double, _ y:Double) -> Double
34-
{
35-
return self.evaluate(x, y, 0)
36-
}
37-
38-
public
39-
func evaluate(_ x:Double, _ y:Double, _ z:Double) -> Double
32+
// ugly hack to get around compiler linker bug
33+
@inline(__always)
34+
fileprivate
35+
func _evaluate(_ x:Double, _ y:Double, _ z:Double) -> Double
4036
{
4137
let sample:Math.DoubleV3 = (x * self.frequency, y * self.frequency, z * self.frequency)
4238

@@ -64,12 +60,6 @@ extension _ClassicNoise3D
6460

6561
return self.amplitude * r
6662
}
67-
68-
public
69-
func evaluate(_ x:Double, _ y:Double, _ z:Double, _:Double) -> Double
70-
{
71-
return self.evaluate(x, y, z)
72-
}
7363
}
7464

7565
// UNDOCUMENTED
@@ -100,6 +90,24 @@ struct ClassicNoise3D:_ClassicNoise3D, HashedNoise
10090
{
10191
return self.permutation_table.hash(point)
10292
}
93+
94+
public
95+
func evaluate(_ x:Double, _ y:Double) -> Double
96+
{
97+
return self.evaluate(x, y, 0)
98+
}
99+
100+
public
101+
func evaluate(_ x:Double, _ y:Double, _ z:Double) -> Double
102+
{
103+
return self._evaluate(x, y, z)
104+
}
105+
106+
public
107+
func evaluate(_ x:Double, _ y:Double, _ z:Double, _:Double) -> Double
108+
{
109+
return self.evaluate(x, y, z)
110+
}
103111
}
104112

105113
// UNDOCUMENTED
@@ -143,6 +151,24 @@ struct ClassicTilingNoise3D:_ClassicNoise3D, HashedTilingNoise
143151
{
144152
return self.permutation_table.hash(Math.mod(point, self.wavelengths))
145153
}
154+
155+
public
156+
func evaluate(_ x:Double, _ y:Double) -> Double
157+
{
158+
return self.evaluate(x, y, 0)
159+
}
160+
161+
public
162+
func evaluate(_ x:Double, _ y:Double, _ z:Double) -> Double
163+
{
164+
return self._evaluate(x, y, z)
165+
}
166+
167+
public
168+
func evaluate(_ x:Double, _ y:Double, _ z:Double, _:Double) -> Double
169+
{
170+
return self.evaluate(x, y, z)
171+
}
146172
}
147173

148174
@available(*, deprecated, message: "simplex noise nearly identical to and is an inferior implementation of super simplex noise")

0 commit comments

Comments
 (0)