场景搜索包含特定组件的实体列表

This commit is contained in:
yhh
2021-03-26 17:36:50 +08:00
parent d2915fe30c
commit 8b5bc444f1
5 changed files with 180 additions and 36 deletions

View File

@@ -269,5 +269,50 @@ module es {
return comps;
}
/**
* 返回场景中包含特定组件的实体列表
* @param types
* @returns
*/
public findEntitesOfComponent(...types): Entity[] {
let entities = [];
for (let i = 0; i < this._entities.length; i++) {
if (this._entities[i].enabled) {
let meet = true;
for (let type of types) {
let hasComp = this._entities[i].hasComponent(type);
if (!hasComp) {
meet = false;
break;
}
}
if (meet) {
entities.push(this._entities[i]);
}
}
}
for (let i = 0; i < this._entitiesToAdded.getCount(); i++) {
let entity: Entity = this._entitiesToAdded.toArray()[i];
if (entity.enabled) {
let meet = true;
for (let type of types) {
let hasComp = entity.hasComponent(type);
if (!hasComp) {
meet = false;
break;
}
}
if (meet) {
entities.push(entity);
}
}
}
return entities;
}
}
}