For loading the world by each player's fog rather than a fixed 900 m. keep_near_test: a zone round one corner brings in its tile, a bigger one its neighbours, an edge nudged back and forth twenty times changes nothing, and a zone moved 2 km away lets them all go. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
21 lines
981 B
Text
21 lines
981 B
Text
# resident_count.ludic - what a file-backed mesh holds now: its tiles in, their bytes, and how many it has
|
|
# how many of kind's tiles are in, and (nav_tiles_bytes) how many bytes those hold
|
|
export function nav_tiles_in(nav_st: NavState, kind: int) -> int { return nv_tiles_sum(nav_st, kind, false) }
|
|
export function nav_tiles_bytes(nav_st: NavState, kind: int) -> int { return nv_tiles_sum(nav_st, kind, true) }
|
|
function nv_tiles_sum(nav_st: NavState, kind: int, bytes: bool) -> int {
|
|
let h = nv_mesh(nav_st, kind)
|
|
if h == null { return 0 }
|
|
var n = 0
|
|
for i in 0 .. nvc_index_count(h) {
|
|
nvc_index_tile(h, i, nav_st.nv_tile)
|
|
if nav_st.nv_tile[2] > 0.5 and bytes { n += int(nav_st.nv_tile[3]) }
|
|
if nav_st.nv_tile[2] > 0.5 and not bytes { n += 1 }
|
|
}
|
|
return n
|
|
}
|
|
# how many tiles kind's file holds in all
|
|
export function nav_tiles_all(nav_st: NavState, kind: int) -> int {
|
|
let h = nv_mesh(nav_st, kind)
|
|
if h == null { return 0 }
|
|
return nvc_index_count(h)
|
|
}
|