• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

Martomate / Hexacraft / 7351367576

28 Dec 2023 06:50PM UTC coverage: 51.185% (-0.1%) from 51.312%
7351367576

push

github

Martomate
Refactor: Made Chunk not know if it has been saved to file

9 of 12 new or added lines in 2 files covered. (75.0%)

110 existing lines in 32 files now uncovered.

2829 of 5527 relevant lines covered (51.19%)

0.51 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

94.74
/game/src/main/scala/hexacraft/math/noise/PerlinNoise3D.scala
1
package hexacraft.math.noise
2

3
import hexacraft.util.SeqUtils.shuffleArray
4

5
import org.joml.Math.triLerp
6

7
import java.util.Random
8

9
// Improved Perlin Noise: http://mrl.nyu.edu/~perlin/noise/
10
class PerlinNoise3D(random: Random) { // Apparently SimplexNoise exists in joml
UNCOV
11
  private[this] val perm = {
×
12
    val arr = (0 until 256).toArray
1✔
13
    shuffleArray(arr, random)
×
14
    arr ++ arr
15
  }
16

1✔
17
  private def intComps(i: Double): (Int, Double, Double) = {
1✔
18
    val intPart = math.floor(i).toInt
19
    val rest = i - intPart
1✔
20
    (intPart & 255, rest, fade(rest))
21
  }
22

1✔
23
  private def grad(hash: Int, x: Double, y: Double, z: Double): Double = {
24
    val h = hash & 15
1✔
25
    val u = if (h < 8) x else y
1✔
26
    val v = if (h < 4) y else if (h == 12 || h == 14) x else z
1✔
27
    (if ((h & 1) == 0) u else -u) + (if ((h & 2) == 0) v else -v)
28
  }
29

1✔
30
  private def fade(t: Double): Double = t * t * t * (t * (t * 6 - 15) + 10)
31

1✔
32
  def noise(xx: Double, yy: Double, zz: Double): Double = {
1✔
33
    val (ix, x, tx) = intComps(xx)
1✔
34
    val (iy, y, ty) = intComps(yy)
1✔
35
    val (iz, z, tz) = intComps(zz)
36

1✔
37
    val q0 = perm(ix)
1✔
38
    val q1 = perm(ix + 1)
39

1✔
40
    val q00 = perm(q0 + iy)
1✔
41
    val q01 = perm(q0 + iy + 1)
1✔
42
    val q10 = perm(q1 + iy)
1✔
43
    val q11 = perm(q1 + iy + 1)
44

1✔
45
    val q000 = perm(q00 + iz)
1✔
46
    val q001 = perm(q10 + iz)
1✔
47
    val q010 = perm(q01 + iz)
1✔
48
    val q011 = perm(q11 + iz)
1✔
49
    val q100 = perm(q00 + iz + 1)
1✔
50
    val q101 = perm(q10 + iz + 1)
1✔
51
    val q110 = perm(q01 + iz + 1)
1✔
52
    val q111 = perm(q11 + iz + 1)
53

1✔
54
    triLerp(
1✔
55
      grad(q000, x - 0, y - 0, z - 0),
1✔
56
      grad(q001, x - 1, y - 0, z - 0),
1✔
57
      grad(q010, x - 0, y - 1, z - 0),
1✔
58
      grad(q011, x - 1, y - 1, z - 0),
1✔
59
      grad(q100, x - 0, y - 0, z - 1),
1✔
60
      grad(q101, x - 1, y - 0, z - 1),
1✔
61
      grad(q110, x - 0, y - 1, z - 1),
1✔
62
      grad(q111, x - 1, y - 1, z - 1),
63
      tx,
64
      ty,
65
      tz
66
    )
67
  }
68
}
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2025 Coveralls, Inc