修复entityList获取实体失败问题

This commit is contained in:
yhh
2020-12-02 15:42:55 +08:00
parent f9284e9d8e
commit b2ebd5ee94
4 changed files with 24 additions and 24 deletions

View File

@@ -1157,7 +1157,7 @@ declare module es {
* 返回第一个找到的名字为name的实体。如果没有找到则返回null * 返回第一个找到的名字为name的实体。如果没有找到则返回null
* @param name * @param name
*/ */
findEntity(name: string): any; findEntity(name: string): Entity;
/** /**
* 返回带有标签的所有实体的列表。如果没有实体有标签,则返回一个空列表。 * 返回带有标签的所有实体的列表。如果没有实体有标签,则返回一个空列表。
* 返回的List可以通过ListPool.free放回池中 * 返回的List可以通过ListPool.free放回池中

View File

@@ -2653,11 +2653,11 @@ var es;
// 它们仍然会在_entitiesToRemove列表中这将由updateLists处理。 // 它们仍然会在_entitiesToRemove列表中这将由updateLists处理。
this.updateLists(); this.updateLists();
for (var i = 0; i < this._entities.length; i++) { for (var i = 0; i < this._entities.length; i++) {
this._entities[i]._isDestroyed = true; this._entities.buffer[i]._isDestroyed = true;
this._entities[i].onRemovedFromScene(); this._entities.buffer[i].onRemovedFromScene();
this._entities[i].scene = null; this._entities.buffer[i].scene = null;
} }
this._entities.length = 0; this._entities.clear();
this._entityDict.clear(); this._entityDict.clear();
}; };
/** /**
@@ -2741,8 +2741,8 @@ var es;
*/ */
EntityList.prototype.findEntity = function (name) { EntityList.prototype.findEntity = function (name) {
for (var i = 0; i < this._entities.length; i++) { for (var i = 0; i < this._entities.length; i++) {
if (this._entities[i].name == name) if (this._entities.buffer[i].name == name)
return this._entities[i]; return this._entities.buffer[i];
} }
for (var i = 0; i < this._entitiesToAdded.getCount(); i++) { for (var i = 0; i < this._entitiesToAdded.getCount(); i++) {
var entity = this._entitiesToAdded.toArray()[i]; var entity = this._entitiesToAdded.toArray()[i];
@@ -2772,8 +2772,8 @@ var es;
EntityList.prototype.entitiesOfType = function (type) { EntityList.prototype.entitiesOfType = function (type) {
var list = es.ListPool.obtain(); var list = es.ListPool.obtain();
for (var i = 0; i < this._entities.length; i++) { for (var i = 0; i < this._entities.length; i++) {
if (this._entities[i] instanceof type) if (this._entities.buffer[i] instanceof type)
list.push(this._entities[i]); list.push(this._entities.buffer[i]);
} }
for (var i = 0; i < this._entitiesToAdded.getCount(); i++) { for (var i = 0; i < this._entitiesToAdded.getCount(); i++) {
var entity = this._entitiesToAdded.toArray()[i]; var entity = this._entitiesToAdded.toArray()[i];
@@ -2789,7 +2789,7 @@ var es;
*/ */
EntityList.prototype.findComponentOfType = function (type) { EntityList.prototype.findComponentOfType = function (type) {
for (var i = 0; i < this._entities.length; i++) { for (var i = 0; i < this._entities.length; i++) {
if (this._entities[i].enabled) { if (this._entities.buffer[i].enabled) {
var comp = this._entities.buffer[i].getComponent(type); var comp = this._entities.buffer[i].getComponent(type);
if (comp) if (comp)
return comp; return comp;
@@ -2813,8 +2813,8 @@ var es;
EntityList.prototype.findComponentsOfType = function (type) { EntityList.prototype.findComponentsOfType = function (type) {
var comps = es.ListPool.obtain(); var comps = es.ListPool.obtain();
for (var i = 0; i < this._entities.length; i++) { for (var i = 0; i < this._entities.length; i++) {
if (this._entities[i].enabled) if (this._entities.buffer[i].enabled)
this._entities[i].getComponents(type, comps); this._entities.buffer[i].getComponents(type, comps);
} }
for (var i = 0; i < this._entitiesToAdded.getCount(); i++) { for (var i = 0; i < this._entitiesToAdded.getCount(); i++) {
var entity = this._entitiesToAdded.toArray()[i]; var entity = this._entitiesToAdded.toArray()[i];

File diff suppressed because one or more lines are too long

View File

@@ -84,12 +84,12 @@ module es {
this.updateLists(); this.updateLists();
for (let i = 0; i < this._entities.length; i++) { for (let i = 0; i < this._entities.length; i++) {
this._entities[i]._isDestroyed = true; this._entities.buffer[i]._isDestroyed = true;
this._entities[i].onRemovedFromScene(); this._entities.buffer[i].onRemovedFromScene();
this._entities[i].scene = null; this._entities.buffer[i].scene = null;
} }
this._entities.length = 0; this._entities.clear();
this._entityDict.clear(); this._entityDict.clear();
} }
@@ -191,8 +191,8 @@ module es {
*/ */
public findEntity(name: string) { public findEntity(name: string) {
for (let i = 0; i < this._entities.length; i++) { for (let i = 0; i < this._entities.length; i++) {
if (this._entities[i].name == name) if (this._entities.buffer[i].name == name)
return this._entities[i]; return this._entities.buffer[i];
} }
for (let i = 0; i < this._entitiesToAdded.getCount(); i ++){ for (let i = 0; i < this._entitiesToAdded.getCount(); i ++){
@@ -228,8 +228,8 @@ module es {
public entitiesOfType<T extends Entity>(type): T[] { public entitiesOfType<T extends Entity>(type): T[] {
let list = ListPool.obtain<T>(); let list = ListPool.obtain<T>();
for (let i = 0; i < this._entities.length; i++) { for (let i = 0; i < this._entities.length; i++) {
if (this._entities[i] instanceof type) if (this._entities.buffer[i] instanceof type)
list.push(this._entities[i] as T); list.push(this._entities.buffer[i] as T);
} }
for (let i = 0; i < this._entitiesToAdded.getCount(); i ++){ for (let i = 0; i < this._entitiesToAdded.getCount(); i ++){
@@ -248,7 +248,7 @@ module es {
*/ */
public findComponentOfType<T extends Component>(type): T { public findComponentOfType<T extends Component>(type): T {
for (let i = 0; i < this._entities.length; i++) { for (let i = 0; i < this._entities.length; i++) {
if (this._entities[i].enabled) { if (this._entities.buffer[i].enabled) {
let comp = this._entities.buffer[i].getComponent<T>(type); let comp = this._entities.buffer[i].getComponent<T>(type);
if (comp) if (comp)
return comp; return comp;
@@ -275,8 +275,8 @@ module es {
public findComponentsOfType<T extends Component>(type): T[] { public findComponentsOfType<T extends Component>(type): T[] {
let comps = ListPool.obtain<T>(); let comps = ListPool.obtain<T>();
for (let i = 0; i < this._entities.length; i++) { for (let i = 0; i < this._entities.length; i++) {
if (this._entities[i].enabled) if (this._entities.buffer[i].enabled)
this._entities[i].getComponents(type, comps); this._entities.buffer[i].getComponents(type, comps);
} }
for (let i = 0; i < this._entitiesToAdded.getCount(); i++) { for (let i = 0; i < this._entitiesToAdded.getCount(); i++) {