feat(spatial): 空间查询和索引系统 (#324)

* feat(spatial): 添加空间查询包

- ISpatialQuery: 空间查询接口
  - findInRadius, findInRect, findNearest, findKNearest
  - raycast, raycastFirst
  - IBounds, IRaycastHit, SpatialFilter 类型

- ISpatialIndex: 空间索引接口
  - insert, remove, update, clear, getAll

- GridSpatialIndex: 网格空间索引实现
  - 基于均匀网格的空间划分
  - 支持所有 ISpatialQuery 操作

- 工具函数
  - createBounds, isPointInBounds, boundsIntersect
  - distanceSquared, distance

* feat(spatial): 添加空间查询蓝图节点

- 添加 FindInRadius/FindInRect/FindNearest/FindKNearest 节点
- 添加 Raycast/RaycastFirst 射线检测节点
- 每个节点包含模板和执行器
- 使用 menuPath: ['Spatial', ...] 组织节点菜单
This commit is contained in:
YHH
2025-12-25 12:15:06 +08:00
committed by GitHub
parent 4089051731
commit 068ca4bf69
13 changed files with 1696 additions and 0 deletions

31
pnpm-lock.yaml generated
View File

@@ -1719,6 +1719,37 @@ importers:
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/spatial:
dependencies:
tslib:
specifier: ^2.8.1
version: 2.8.1
devDependencies:
'@esengine/blueprint':
specifier: workspace:*
version: link:../blueprint
'@esengine/build-config':
specifier: workspace:*
version: link:../build-config
'@esengine/ecs-framework':
specifier: workspace:*
version: link:../core
'@esengine/ecs-framework-math':
specifier: workspace:*
version: link:../math
'@types/node':
specifier: ^20.19.17
version: 20.19.25
rimraf:
specifier: ^5.0.0
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)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.8.1)
typescript:
specifier: ^5.8.3
version: 5.9.3
packages/sprite:
devDependencies:
'@esengine/asset-system':