#pragma once // ============================================================================ // terrain_manager.h - 地形分块流式加载 // ============================================================================ #include "terrain.h" #include "../Rendering/material.h" #include "../Rendering/renderer.h" #include "../ASM/math_c_fallback.h" #define TERRAIN_MAX_CHUNKS 64 typedef struct { int cx; int cz; Terrain* terrain; Material* material; int loaded; } TerrainChunk; typedef struct { TerrainConfig config; TerrainChunk chunks[TERRAIN_MAX_CHUNKS]; int chunk_count; int load_radius; int seed; ID3D11Device* device; Material* base_material; } TerrainManager; TerrainManager* terrain_manager_create(ID3D11Device* dev, const TerrainConfig* config, Material* base_material); void terrain_manager_destroy(TerrainManager* tm); // 根据观察者位置更新分块 void terrain_manager_update(TerrainManager* tm, Vec3 observer_pos); // 渲染所有已加载分块 void terrain_manager_render(TerrainManager* tm, Renderer* renderer); // 从世界坐标获取地形高度(在所有已加载分块中采样) float terrain_manager_get_height(TerrainManager* tm, float world_x, float world_z);