trench/grid.gd

27 lines
890 B
GDScript3
Raw Permalink Normal View History

2026-04-22 10:19:57 -04:00
class_name Grid
## Central grid constants and utilities for the dungeon crawler.
## Cell size: 64x64x128 TrenchBroom units = 2x2x4 Godot units.
## Size of one grid cell in world units (64 TrenchBroom units).
const CELL_SIZE: float = 2.0
## Half-cell offset. Cell centers sit halfway between wall planes, so with TB
## walls on the 64-unit grid (even Godot units) cell centers land on odd units.
const HALF_CELL: float = CELL_SIZE * 0.5
## Snap a world position to the nearest cell center (Y axis unchanged).
static func snap(pos: Vector3) -> Vector3:
return Vector3(
floorf(pos.x / CELL_SIZE) * CELL_SIZE + HALF_CELL,
pos.y,
floorf(pos.z / CELL_SIZE) * CELL_SIZE + HALF_CELL,
)
## Convert a world position to integer cell coordinates.
static func world_to_cell(pos: Vector3) -> Vector2i:
return Vector2i(
int(floorf(pos.x / CELL_SIZE)),
int(floorf(pos.z / CELL_SIZE)),
)