* refactor(chunk): add ChunkInfo and switch to shared_mutex for chunk access
Introduced ChunkInfo struct to expose chunk metadata (position, seed, biome). Replaced std::mutex with std::shared_mutex for chunk map to allow concurrent read access. Added World::get_chunk_info() method. Temporarily disabled cave/river cleanup and debug biome reporting.
* refactor(cave,river,chunk): use ChunkPos as key for paths and track cave existence
* refactor(gameplay): use deterministic origin-based cave and river generation
Compute cave and river paths on-the-fly per chunk from a deterministic origin instead of storing them globally. Remove concurrent hash map storage, shared mutexes, and related cleanup methods. This simplifies concurrency and reduces memory overhead.
* refactor(world): remove unused chunk generation progress tracking
* refactor: use TBB for concurrent hash maps and parallelize chunk processing
* fix: tbb link fail
* refactor(chunk): remove biome check for caves in rivers and oceans
* refactor(random): replace std distributions with custom implementations
Avoid overhead and platform-dependent behavior of `<random>` distributions by using direct engine operations and integer arithmetic. This ensures deterministic, cross-platform results and improves performance.
* refactor(generation): use chunk seed for cave and river paths
- Use per-chunk seed instead of global path_id for cave and river generation.
- Remove unused m_sum variables and m_path_id members.
- Clamp river yaw within 10 degrees of initial direction.
- Fix river radius interpolation (use t instead of 1-t).
- Lower sea level from 64 to 63.