MCPcopy Create free account
hub / github.com/esengine/esengine / updateEntityTracking

Function updateEntityTracking

packages/core/src/ECS/Systems/EntitySystem.ts:1082–1106  ·  view source on GitHub ↗

* 更新实体跟踪,检查新增和移除的实体 * * 由于采用了事件驱动设计,运行时的 onAdded/onRemoved 已在 handleEntityComponentChanged 中 * 立即触发。此方法不再触发回调,只同步跟踪状态。 * * With event-driven design, runtime onAdded/onRemoved are triggered immediately in * handleEntityComponentChanged. This method no longer triggers cal

(currentEntities: readonly Entity[])

Source from the content-addressed store, hash-verified

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 * 当实体被添加到系统时调用

Callers

nothing calls this directly

Calls 6

isTrackedMethod · 0.80
addTrackedMethod · 0.80
getTrackedMethod · 0.80
removeTrackedMethod · 0.80
hasMethod · 0.65
invalidateMethod · 0.45

Tested by

no test coverage detected