## LagCompensation — records player position history for hit-scan rewinding. ## Minimal stub for server startup compatibility. ## Full implementation to be built when hitscan system is wired. extends Node ## class_name LagCompensation — commented out for headless compatibility var physics_world = null var _history: Dictionary = {} # tick → { entity_id: position } func record_position(tick: int, entity_id: int, position: Vector3) -> void: _history[tick] = {entity_id: position} # Keep only 128 most recent ticks if _history.size() > 128: var oldest = _history.keys().min() if oldest != null: _history.erase(oldest) func rewind_and_raycast(tick: int, origin: Vector3, direction: Vector3, max_range: float, exclude: Array = []) -> Dictionary: # Stub: fall back to current-frame raycast if physics_world == null: return {} var space_state = physics_world.direct_space_state if space_state == null: return {} var query = PhysicsRayQueryParameters3D.create(origin, origin + direction * max_range) query.exclude = exclude return space_state.intersect_ray(query)