Files
galaxy-game/client/world/renderer_helper.go
T
2026-03-08 23:30:11 +02:00

37 lines
640 B
Go

package world
func (w *World) candSeenResetIfOverflow() {
w.candEpoch++
if w.candEpoch != 0 {
return
}
// overflow: reset stamp array
for i := range w.candStamp {
w.candStamp[i] = 0
}
w.candEpoch = 1
}
func (w *World) candSeenMark(id PrimitiveID) bool {
// ensure stamp capacity
uid := uint32(id)
if int(uid) >= len(w.candStamp) {
// grow to next power-ish
n := len(w.candStamp)
if n == 0 {
n = 1024
}
for n <= int(uid) {
n *= 2
}
ns := make([]uint32, n)
copy(ns, w.candStamp)
w.candStamp = ns
}
if w.candStamp[uid] == w.candEpoch {
return true
}
w.candStamp[uid] = w.candEpoch
return false
}