Files
bim_engine/.sisyphus/notepads/walk-mode-api-integration/learnings.md

156 lines
3.8 KiB
Markdown
Raw Normal View History

# 漫游功能 API 对接 - 学习笔记
## 完成时间
2026-01-28
## 项目结构理解
### SDK 层次架构
```
UI Layer (WalkControlPanel)
Manager Layer (WalkControlManager)
Engine Manager (EngineManager)
Engine Component (Engine)
底层引擎 (bim_engine_base)
```
### 关键模式
1. **Manager Pattern**: 所有功能通过 Manager 管理生命周期
2. **代理模式**: EngineManager 作为 Engine 的代理,提供统一访问点
3. **事件系统**: 使用 EventEmitter 进行组件间通信
## 底层 API 发现
### V2 vs 旧版差异
- **V2**: 使用简化版 `firstPersonCameraControl.js`,仅支持基础第一人称漫游
- **旧版**: `FirstPersonControls_.js` 包含人物模型、小地图等完整功能
- **教训**: 必须先确认底层版本,避免对接不存在的 API
### 底层 API 清单
```typescript
// 模式切换
controlModule.switchFirstPersonMode()
controlModule.switchDefaultMode()
// 第一人称控制属性
firstPersonControls.moveSpeed // 默认 0.02
firstPersonControls.applyGravity // 默认 false
firstPersonControls.applyCollision // 默认 true
```
## 实现细节
### 1. 速度值转换
- **UI 层**: 1-10 (用户友好)
- **引擎层**: 0.01-0.1 (实际速度)
- **转换公式**: `engineSpeed = uiSpeed * 0.01`
- **教训**: 必须在 Manager 层进行值转换,保持 UI 和引擎的解耦
### 2. 状态管理
- Engine 组件维护 `isWalkModeActive` 状态
- 防止重复激活/停用
- **教训**: 添加状态检查,避免不必要的底层调用
### 3. 错误处理
所有方法都需要检查:
1. 引擎是否初始化 (`this._isInitialized`)
2. 引擎实例是否存在 (`this.engine`)
3. 控制模块是否可用 (`this.engine.controlModule`)
## 代码规范
### 注释要求
- 所有公共方法使用 TSDoc 注释
- 必须使用中文
- 包含 `@param`, `@returns`, `@remarks`
### 控制台日志
- 使用统一前缀 `[Engine]`, `[EngineManager]`, `[WalkControl]`
- 错误用 `console.error()`, 警告用 `console.warn()`
## Git 提交策略
### 原子提交
每个任务独立提交:
1. `feat(engine): 新增漫游功能方法`
2. `feat(engine-manager): 暴露漫游功能方法`
3. `feat(walk-control): 对接漫游功能到底层 API`
4. `docs: 更新漫游功能调用链文档`
### Commit Message 格式
```
<type>(<scope>): <subject>
type: feat, fix, docs, refactor, test, chore
scope: 功能模块名称
subject: 简短描述(中文)
```
## 遗留问题
### 暂未实现的功能
- 行走/跑步模式切换(第三人称功能)
- 角色模型切换V2 不支持)
- 地图/平面图(底层无 API
- 路径漫游(底层无 API
### 未来改进
1. 考虑将底层 `FirstPersonControls_.js` 功能集成到 V2
2. 添加更多漫游参数控制(视角速度、玩家高度等)
3. 实现漫游状态持久化
## 构建验证
### 验证步骤
1. TypeScript 编译: `tsc`
2. Vite 构建: `vite build`
3. 检查 dist 产物
### 构建结果
```
dist/iflow-engine.es.js 2,020.24 kB
dist/iflow-engine.umd.js 1,326.55 kB
```
## 文档更新
### 调用链文档结构
```markdown
## 5. 漫游 (Walk) - 第一人称漫游
### 5.1 第一人称漫游模式开关
[完整调用链]
### 5.2 速度调节
[完整调用链]
### 5.3 重力开关
[完整调用链]
### 5.4 碰撞检测开关
[完整调用链]
```
### 标注规范
- `[SDK]` = SDK 层代码
- `[底层]` = bim_engine_base 底层引擎
- 每个步骤都要标注层级
## 总结
### 成功完成
✅ 4 个核心功能对接完成
✅ 完整的调用链文档
✅ 所有单元构建通过
✅ Git 提交符合规范
### 关键经验
1. **先调研后实现**: 必须先了解底层 API 能力
2. **分层清晰**: 每一层职责明确,不越界
3. **原子提交**: 每个功能独立提交,便于回滚
4. **完整文档**: 调用链文档是关键,方便后续维护