feat(world-streaming): 添加世界流式加载系统 (#288)

实现基于区块的世界流式加载系统,支持开放世界游戏:

运行时包 (@esengine/world-streaming):
- ChunkComponent: 区块实体组件,包含坐标、边界、状态
- StreamingAnchorComponent: 流式锚点组件(玩家/摄像机)
- ChunkLoaderComponent: 流式加载配置组件
- ChunkStreamingSystem: 区块加载/卸载调度系统
- ChunkCullingSystem: 区块可见性剔除系统
- ChunkManager: 区块生命周期管理服务
- SpatialHashGrid: 空间哈希网格
- ChunkSerializer: 区块序列化

编辑器包 (@esengine/world-streaming-editor):
- ChunkVisualizer: 区块可视化覆盖层
- ChunkLoaderInspectorProvider: 区块加载器检视器
- StreamingAnchorInspectorProvider: 流式锚点检视器
- WorldStreamingPlugin: 完整插件导出
This commit is contained in:
YHH
2025-12-06 13:56:01 +08:00
committed by GitHub
parent 3cbfa1e4cb
commit 0c03b13d74
31 changed files with 2802 additions and 0 deletions

56
pnpm-lock.yaml generated
View File

@@ -1559,6 +1559,62 @@ importers:
specifier: ^5.3.3
version: 5.9.3
packages/world-streaming:
dependencies:
'@esengine/ecs-framework':
specifier: workspace:*
version: link:../core
'@esengine/engine-core':
specifier: workspace:*
version: link:../engine-core
devDependencies:
tsup:
specifier: ^8.0.1
version: 8.5.1(@microsoft/api-extractor@7.55.1(@types/node@20.19.25))(@swc/core@1.15.3)(jiti@2.6.1)(postcss@8.5.6)(typescript@5.9.3)(yaml@2.8.1)
typescript:
specifier: ^5.3.3
version: 5.9.3
packages/world-streaming-editor:
dependencies:
'@esengine/world-streaming':
specifier: workspace:*
version: link:../world-streaming
devDependencies:
'@esengine/build-config':
specifier: workspace:*
version: link:../build-config
'@esengine/ecs-framework':
specifier: workspace:*
version: link:../core
'@esengine/editor-core':
specifier: workspace:*
version: link:../editor-core
'@esengine/engine-core':
specifier: workspace:*
version: link:../engine-core
'@types/react':
specifier: ^18.3.12
version: 18.3.27
lucide-react:
specifier: ^0.545.0
version: 0.545.0(react@18.3.1)
react:
specifier: ^18.3.1
version: 18.3.1
rimraf:
specifier: ^5.0.5
version: 5.0.10
tsup:
specifier: ^8.0.0
version: 8.5.1(@microsoft/api-extractor@7.55.1(@types/node@20.19.25))(@swc/core@1.15.3)(jiti@2.6.1)(postcss@8.5.6)(typescript@5.9.3)(yaml@2.8.1)
typescript:
specifier: ^5.3.3
version: 5.9.3
zustand:
specifier: ^5.0.8
version: 5.0.8(@types/react@18.3.27)(react@18.3.1)(use-sync-external-store@1.6.0(react@18.3.1))
packages:
'@algolia/abtesting@1.10.0':