修复transform.setparent报错

This commit is contained in:
yhh
2021-03-30 18:02:27 +08:00
parent 0b8d752773
commit 7e94f42b10
6 changed files with 97 additions and 25 deletions

View File

@@ -640,6 +640,12 @@ declare module es {
* @param tag * @param tag
*/ */
findEntitiesWithTag(tag: number): Entity[]; findEntitiesWithTag(tag: number): Entity[];
/**
* 返回提一个具有该标记的实体
* @param tag
* @returns
*/
findEntityWithTag(tag: number): Entity;
/** /**
* 返回类型为T的所有实体 * 返回类型为T的所有实体
* @param type * @param type
@@ -1771,6 +1777,12 @@ declare module es {
* @param tag * @param tag
*/ */
entitiesWithTag(tag: number): Entity[]; entitiesWithTag(tag: number): Entity[];
/**
* 返回第一个找到该tag的实体
* @param tag
* @returns
*/
entityWithTag(tag: number): Entity;
/** /**
* 返回一个T类型的所有实体的列表。 * 返回一个T类型的所有实体的列表。
* 返回的List可以通过ListPool.free放回池中。 * 返回的List可以通过ListPool.free放回池中。

View File

@@ -1447,6 +1447,14 @@ var es;
Scene.prototype.findEntitiesWithTag = function (tag) { Scene.prototype.findEntitiesWithTag = function (tag) {
return this.entities.entitiesWithTag(tag); return this.entities.entitiesWithTag(tag);
}; };
/**
* 返回提一个具有该标记的实体
* @param tag
* @returns
*/
Scene.prototype.findEntityWithTag = function (tag) {
return this.entities.entityWithTag(tag);
};
/** /**
* 返回类型为T的所有实体 * 返回类型为T的所有实体
* @param type * @param type
@@ -1775,9 +1783,12 @@ var es;
Transform.prototype.setParent = function (parent) { Transform.prototype.setParent = function (parent) {
if (this._parent == parent) if (this._parent == parent)
return this; return this;
if (!this._parent) { if (this._parent != null) {
var children = new es.List(this._parent._children); var children = new es.List(this._parent._children);
children.remove(this); children.remove(this);
}
if (parent != null) {
var children = new es.List(parent._children);
children.add(this); children.add(this);
} }
this._parent = parent; this._parent = parent;
@@ -4260,7 +4271,6 @@ var es;
var e_12, _a; var e_12, _a;
var list = this.getTagList(tag); var list = this.getTagList(tag);
var returnList = es.ListPool.obtain(); var returnList = es.ListPool.obtain();
returnList.length = this._entities.length;
try { try {
for (var list_1 = __values(list), list_1_1 = list_1.next(); !list_1_1.done; list_1_1 = list_1.next()) { for (var list_1 = __values(list), list_1_1 = list_1.next(); !list_1_1.done; list_1_1 = list_1.next()) {
var entity = list_1_1.value; var entity = list_1_1.value;
@@ -4276,6 +4286,29 @@ var es;
} }
return returnList; return returnList;
}; };
/**
* 返回第一个找到该tag的实体
* @param tag
* @returns
*/
EntityList.prototype.entityWithTag = function (tag) {
var e_13, _a;
var list = this.getTagList(tag);
try {
for (var list_2 = __values(list), list_2_1 = list_2.next(); !list_2_1.done; list_2_1 = list_2.next()) {
var entity = list_2_1.value;
return entity;
}
}
catch (e_13_1) { e_13 = { error: e_13_1 }; }
finally {
try {
if (list_2_1 && !list_2_1.done && (_a = list_2.return)) _a.call(list_2);
}
finally { if (e_13) throw e_13.error; }
}
return null;
};
/** /**
* 返回一个T类型的所有实体的列表。 * 返回一个T类型的所有实体的列表。
* 返回的List可以通过ListPool.free放回池中。 * 返回的List可以通过ListPool.free放回池中。
@@ -4345,7 +4378,7 @@ var es;
for (var _i = 0; _i < arguments.length; _i++) { for (var _i = 0; _i < arguments.length; _i++) {
types[_i] = arguments[_i]; types[_i] = arguments[_i];
} }
var e_13, _a, e_14, _b; var e_14, _a, e_15, _b;
var entities = []; var entities = [];
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[i].enabled) {
@@ -4360,12 +4393,12 @@ var es;
} }
} }
} }
catch (e_13_1) { e_13 = { error: e_13_1 }; } catch (e_14_1) { e_14 = { error: e_14_1 }; }
finally { finally {
try { try {
if (types_1_1 && !types_1_1.done && (_a = types_1.return)) _a.call(types_1); if (types_1_1 && !types_1_1.done && (_a = types_1.return)) _a.call(types_1);
} }
finally { if (e_13) throw e_13.error; } finally { if (e_14) throw e_14.error; }
} }
if (meet) { if (meet) {
entities.push(this._entities[i]); entities.push(this._entities[i]);
@@ -4386,12 +4419,12 @@ var es;
} }
} }
} }
catch (e_14_1) { e_14 = { error: e_14_1 }; } catch (e_15_1) { e_15 = { error: e_15_1 }; }
finally { finally {
try { try {
if (types_2_1 && !types_2_1.done && (_b = types_2.return)) _b.call(types_2); if (types_2_1 && !types_2_1.done && (_b = types_2.return)) _b.call(types_2);
} }
finally { if (e_14) throw e_14.error; } finally { if (e_15) throw e_15.error; }
} }
if (meet) { if (meet) {
entities.push(entity); entities.push(entity);
@@ -7309,7 +7342,7 @@ var es;
* @param layerMask * @param layerMask
*/ */
SpatialHash.prototype.overlapRectangle = function (rect, results, layerMask) { SpatialHash.prototype.overlapRectangle = function (rect, results, layerMask) {
var e_15, _a; var e_16, _a;
this._overlapTestBox.updateBox(rect.width, rect.height); this._overlapTestBox.updateBox(rect.width, rect.height);
this._overlapTestBox.position = rect.location; this._overlapTestBox.position = rect.location;
var resultCounter = 0; var resultCounter = 0;
@@ -7340,12 +7373,12 @@ var es;
return resultCounter; return resultCounter;
} }
} }
catch (e_15_1) { e_15 = { error: e_15_1 }; } catch (e_16_1) { e_16 = { error: e_16_1 }; }
finally { finally {
try { try {
if (potentials_1_1 && !potentials_1_1.done && (_a = potentials_1.return)) _a.call(potentials_1); if (potentials_1_1 && !potentials_1_1.done && (_a = potentials_1.return)) _a.call(potentials_1);
} }
finally { if (e_15) throw e_15.error; } finally { if (e_16) throw e_16.error; }
} }
return resultCounter; return resultCounter;
}; };
@@ -7357,7 +7390,7 @@ var es;
* @param layerMask * @param layerMask
*/ */
SpatialHash.prototype.overlapCircle = function (circleCenter, radius, results, layerMask) { SpatialHash.prototype.overlapCircle = function (circleCenter, radius, results, layerMask) {
var e_16, _a; var e_17, _a;
var bounds = new es.Rectangle(circleCenter.x - radius, circleCenter.y - radius, radius * 2, radius * 2); var bounds = new es.Rectangle(circleCenter.x - radius, circleCenter.y - radius, radius * 2, radius * 2);
this._overlapTestCircle.radius = radius; this._overlapTestCircle.radius = radius;
this._overlapTestCircle.position = circleCenter; this._overlapTestCircle.position = circleCenter;
@@ -7390,12 +7423,12 @@ var es;
return resultCounter; return resultCounter;
} }
} }
catch (e_16_1) { e_16 = { error: e_16_1 }; } catch (e_17_1) { e_17 = { error: e_17_1 }; }
finally { finally {
try { try {
if (potentials_2_1 && !potentials_2_1.done && (_a = potentials_2.return)) _a.call(potentials_2); if (potentials_2_1 && !potentials_2_1.done && (_a = potentials_2.return)) _a.call(potentials_2);
} }
finally { if (e_16) throw e_16.error; } finally { if (e_17) throw e_17.error; }
} }
return resultCounter; return resultCounter;
}; };
@@ -11542,7 +11575,7 @@ var es;
* 创建一个Set从一个Enumerable.List< T>。 * 创建一个Set从一个Enumerable.List< T>。
*/ */
List.prototype.toSet = function () { List.prototype.toSet = function () {
var e_17, _a; var e_18, _a;
var result = new Set(); var result = new Set();
try { try {
for (var _b = __values(this._elements), _c = _b.next(); !_c.done; _c = _b.next()) { for (var _b = __values(this._elements), _c = _b.next(); !_c.done; _c = _b.next()) {
@@ -11550,12 +11583,12 @@ var es;
result.add(x); result.add(x);
} }
} }
catch (e_17_1) { e_17 = { error: e_17_1 }; } catch (e_18_1) { e_18 = { error: e_18_1 }; }
finally { finally {
try { try {
if (_c && !_c.done && (_a = _b.return)) _a.call(_b); if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
} }
finally { if (e_17) throw e_17.error; } finally { if (e_18) throw e_18.error; }
} }
return result; return result;
}; };
@@ -11804,7 +11837,7 @@ var es;
* 计算可见性多边形并返回三角形扇形的顶点减去中心顶点。返回的数组来自ListPool * 计算可见性多边形并返回三角形扇形的顶点减去中心顶点。返回的数组来自ListPool
*/ */
VisibilityComputer.prototype.end = function () { VisibilityComputer.prototype.end = function () {
var e_18, _a; var e_19, _a;
var output = es.ListPool.obtain(); var output = es.ListPool.obtain();
this.updateSegments(); this.updateSegments();
this._endPoints.sort(this._radialComparer.compare); this._endPoints.sort(this._radialComparer.compare);
@@ -11843,12 +11876,12 @@ var es;
} }
} }
} }
catch (e_18_1) { e_18 = { error: e_18_1 }; } catch (e_19_1) { e_19 = { error: e_19_1 }; }
finally { finally {
try { try {
if (_c && !_c.done && (_a = _b.return)) _a.call(_b); if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
} }
finally { if (e_18) throw e_18.error; } finally { if (e_19) throw e_19.error; }
} }
} }
VisibilityComputer._openSegments.clear(); VisibilityComputer._openSegments.clear();
@@ -11964,7 +11997,7 @@ var es;
* 处理片段,以便我们稍后对它们进行分类 * 处理片段,以便我们稍后对它们进行分类
*/ */
VisibilityComputer.prototype.updateSegments = function () { VisibilityComputer.prototype.updateSegments = function () {
var e_19, _a; var e_20, _a;
try { try {
for (var _b = __values(this._segments), _c = _b.next(); !_c.done; _c = _b.next()) { for (var _b = __values(this._segments), _c = _b.next(); !_c.done; _c = _b.next()) {
var segment = _c.value; var segment = _c.value;
@@ -11982,12 +12015,12 @@ var es;
segment.p2.begin = !segment.p1.begin; segment.p2.begin = !segment.p1.begin;
} }
} }
catch (e_19_1) { e_19 = { error: e_19_1 }; } catch (e_20_1) { e_20 = { error: e_20_1 }; }
finally { finally {
try { try {
if (_c && !_c.done && (_a = _b.return)) _a.call(_b); if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
} }
finally { if (e_19) throw e_19.error; } finally { if (e_20) throw e_20.error; }
} }
// 如果我们有一个聚光灯,我们需要存储前两个段的角度。 // 如果我们有一个聚光灯,我们需要存储前两个段的角度。
// 这些是光斑的边界,我们将用它们来过滤它们之外的任何顶点。 // 这些是光斑的边界,我们将用它们来过滤它们之外的任何顶点。

File diff suppressed because one or more lines are too long

View File

@@ -200,6 +200,15 @@ module es {
return this.entities.entitiesWithTag(tag); return this.entities.entitiesWithTag(tag);
} }
/**
* 返回提一个具有该标记的实体
* @param tag
* @returns
*/
public findEntityWithTag(tag: number): Entity {
return this.entities.entityWithTag(tag);
}
/** /**
* 返回类型为T的所有实体 * 返回类型为T的所有实体
* @param type * @param type

View File

@@ -266,9 +266,13 @@ module es {
if (this._parent == parent) if (this._parent == parent)
return this; return this;
if (!this._parent) { if (this._parent != null) {
let children = new es.List(this._parent._children); let children = new es.List(this._parent._children);
children.remove(this); children.remove(this);
}
if (parent != null) {
let children = new es.List(parent._children);
children.add(this); children.add(this);
} }

View File

@@ -194,7 +194,6 @@ module es {
let list = this.getTagList(tag); let list = this.getTagList(tag);
let returnList = ListPool.obtain<Entity>(); let returnList = ListPool.obtain<Entity>();
returnList.length = this._entities.length;
for (let entity of list) { for (let entity of list) {
returnList.push(entity); returnList.push(entity);
} }
@@ -202,6 +201,21 @@ module es {
return returnList; return returnList;
} }
/**
* 返回第一个找到该tag的实体
* @param tag
* @returns
*/
public entityWithTag(tag: number) {
let list = this.getTagList(tag);
for (let entity of list) {
return entity;
}
return null;
}
/** /**
* 返回一个T类型的所有实体的列表。 * 返回一个T类型的所有实体的列表。
* 返回的List可以通过ListPool.free放回池中。 * 返回的List可以通过ListPool.free放回池中。