* 更新实体跟踪,检查新增和移除的实体 * * 由于采用了事件驱动设计,运行时的 onAdded/onRemoved 已在 handleEntityComponentChanged 中 * 立即触发。此方法不再触发回调,只同步跟踪状态。 * * With event-driven design, runtime onAdded/onRemoved are triggered immediately in * handleEntityComponentChanged. This method no longer triggers cal
(currentEntities: readonly Entity[])
| 1080 | * handleEntityComponentChanged. This method no longer triggers callbacks, only syncs tracking state. |
| 1081 | */ |
| 1082 | private updateEntityTracking(currentEntities: readonly Entity[]): void { |
| 1083 | const currentSet = new Set(currentEntities); |
| 1084 | let hasChanged = false; |
| 1085 | |
| 1086 | // 检查新增的实体 | Check for newly added entities |
| 1087 | for (const entity of currentEntities) { |
| 1088 | if (!this._entityCache.isTracked(entity)) { |
| 1089 | this._entityCache.addTracked(entity); |
| 1090 | hasChanged = true; |
| 1091 | } |
| 1092 | } |
| 1093 | |
| 1094 | // 检查移除的实体 | Check for removed entities |
| 1095 | for (const entity of this._entityCache.getTracked()) { |
| 1096 | if (!currentSet.has(entity)) { |
| 1097 | this._entityCache.removeTracked(entity); |
| 1098 | hasChanged = true; |
| 1099 | } |
| 1100 | } |
| 1101 | |
| 1102 | // 如果实体发生了变化,使缓存失效 | If entities changed, invalidate cache |
| 1103 | if (hasChanged) { |
| 1104 | this._entityCache.invalidate(); |
| 1105 | } |
| 1106 | } |
| 1107 | |
| 1108 | /** |
| 1109 | * 当实体被添加到系统时调用 |
nothing calls this directly
no test coverage detected