v2 трек 7: физика тела — AABB против вокселей + гравитация
- physics/body.ts: SolidWorld (точечная выборка get), makeBody/stepBody
  (полунеявный Эйлер), collides (AABB по воксельным диапазонам, касание
  грани — не столкновение), ось-раздельное разрешение X→Z→Y с зажимом
  к граням вокселей, сабстепы против туннелирования
- 10 юнит-тестов: падение на грань, покой, сход с уступа, стена,
  туннелирование (50 вокс/с при dt=0.1), угол, потолок, число гравитации
- Демка: тело-манекен с walk-анимацией и поворотом по движению; мост
  bodySpawn/bodyStep/bodyInfo/bodyRemove (фиксированный dt — детерминизм)
- Гейт physics.mjs 7 проверок: падение на землю, стена останавливает
  по грани, фаза ходьбы растёт, кадр меняется, манекен рисуется
- Грабли в v2/CLAUDE.md: VoxelWorld(n) — высота чанка, не число чанков
  (set вне границ молча false); Vec3 readonly — физика на обычных
  кортежах; спавн тела проверять на пересечение AABB с миром

101 юнит-тест; гейты: render 13, turntable 5, anim 8, physics 7 — зелёные.

Co-Authored-By: Claude Code <noreply@anthropic.com>
1 parent c13f4d7 commit f48c1a668f344b87c611e90ad2eff0750bbd6484
@Eugene Sukhodolskiy Eugene Sukhodolskiy authored 2 days ago
Showing 7 changed files
View
docs/plan.md
View
v2/CLAUDE.md
View
v2/apps/demo/src/main.ts
View
v2/apps/demo/tools/checks/physics.mjs 0 → 100644
View
v2/packages/engine/src/index.ts
View
v2/packages/engine/src/physics/__tests__/body.test.ts 0 → 100644
View
v2/packages/engine/src/physics/body.ts 0 → 100644