up3
Build and deploy / Build (push) Has been cancelled
Build and deploy / Update Contributors (push) Has been cancelled
Build and deploy / Deploy (push) Has been cancelled
Build and deploy / Build (push) Has been cancelled
Build and deploy / Update Contributors (push) Has been cancelled
Build and deploy / Deploy (push) Has been cancelled
This commit is contained in:
@@ -0,0 +1,46 @@
|
||||
package chunk
|
||||
|
||||
import (
|
||||
"math"
|
||||
)
|
||||
|
||||
// HeightMap represents the height map of a chunk. It holds the y value of all the highest blocks in the chunk
|
||||
// that diffuse or obstruct light.
|
||||
type HeightMap []int16
|
||||
|
||||
// At returns the height map value at a specific column in the chunk.
|
||||
func (h HeightMap) At(x, z uint8) int16 {
|
||||
return h[(uint16(x)<<4)|uint16(z)]
|
||||
}
|
||||
|
||||
// Set changes the height map value at a specific column in the chunk.
|
||||
func (h HeightMap) Set(x, z uint8, val int16) {
|
||||
h[(uint16(x)<<4)|uint16(z)] = val
|
||||
}
|
||||
|
||||
// HighestNeighbour returns the height map value of the highest directly neighbouring column of the x and z values
|
||||
// passed.
|
||||
func (h HeightMap) HighestNeighbour(x, z uint8) int16 {
|
||||
highest := int16(math.MinInt16)
|
||||
if x != 15 {
|
||||
if val := h.At(x+1, z); val > highest {
|
||||
highest = val
|
||||
}
|
||||
}
|
||||
if x != 0 {
|
||||
if val := h.At(x-1, z); val > highest {
|
||||
highest = val
|
||||
}
|
||||
}
|
||||
if z != 15 {
|
||||
if val := h.At(x, z+1); val > highest {
|
||||
highest = val
|
||||
}
|
||||
}
|
||||
if z != 0 {
|
||||
if val := h.At(x, z-1); val > highest {
|
||||
highest = val
|
||||
}
|
||||
}
|
||||
return highest
|
||||
}
|
||||
Reference in New Issue
Block a user