Skip to content
This repository has been archived by the owner on Oct 3, 2023. It is now read-only.

Commit

Permalink
reworked trackEntityById
Browse files Browse the repository at this point in the history
  • Loading branch information
Grenagar committed Jun 2, 2022
1 parent 7554ddb commit 2b7b029
Show file tree
Hide file tree
Showing 9 changed files with 56 additions and 23 deletions.
8 changes: 4 additions & 4 deletions engine/core/IgeEntity.js
Original file line number Diff line number Diff line change
Expand Up @@ -672,7 +672,7 @@ var IgeEntity = IgeObject.extend({
this._pixiContainer.y = defaultData.translate.y;
this._pixiTexture.rotation = defaultData.rotate;
}
ige.entityTrack.trackEntityById[this.entityId] = this._pixiContainer;
ige.entityTrack.trackEntityById[this.entityId] = this;
},

// drawCrashCollider: function (defaultData) {
Expand Down Expand Up @@ -2548,13 +2548,13 @@ var IgeEntity = IgeObject.extend({

if (ige.isClient) {
var entityId = this.entityId || this.id();
if (ige.entityTrack.trackEntityById[entityId]) {
if (ige.entityTrack.trackEntityById[entityId] && ige.entityTrack.trackEntityById[entityId]._pixiContainer) {
// entity.destroy()
// ige.pixi.viewport.follow();
if (ige.client.myPlayer && ige.client.myPlayer.currentFollowUnit == this.id()) {
ige.pixi.viewport.removePlugin('follow');
}
var texture = ige.entityTrack.trackEntityById[entityId]._pixiTexture || ige.entityTrack.trackEntityById[entityId]._pixiText || ige.entityTrack.trackEntityById[entityId];
var texture = ige.entityTrack.trackEntityById[entityId]._pixiContainer._pixiTexture || ige.entityTrack.trackEntityById[entityId]._pixiContainer._pixiText || ige.entityTrack.trackEntityById[entityId]._pixiContainer;
// its not instance of ige
if (texture && !texture.componentId && !texture._destroyed) {
ige.pixi.world.removeChild(texture);
Expand All @@ -2564,7 +2564,7 @@ var IgeEntity = IgeObject.extend({
ige.isLog = true;
}
}
ige.entityTrack.trackEntityById[entityId]._destroyed = true;
if (ige.entityTrack.trackEntityById[entityId]._pixiContainer) ige.entityTrack.trackEntityById[entityId]._pixiContainer._destroyed = true;
delete ige.entityTrack.trackEntityById[entityId];
}

Expand Down
10 changes: 4 additions & 6 deletions src/gameClasses/EntityTrack.js

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion src/gameClasses/EntityTrack.js.map

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

8 changes: 4 additions & 4 deletions src/gameClasses/Player.js
Original file line number Diff line number Diff line change
Expand Up @@ -50,9 +50,9 @@ var Player = IgeEntity.extend({
return unit && unit.getOwner() && unit.getOwner().id() === self.id();
}, ['texture', 'nameLabel']);
}
if (ige.isClient) {
/*if (ige.isClient) {
ige.entityTrack.trackEntityById[entityIdFromServer] = this;
}
}*/
},

// move to UI
Expand Down Expand Up @@ -200,9 +200,9 @@ var Player = IgeEntity.extend({
// self._stats.selectedUnitId = unit.id()
if (ige.isServer && self._stats.clientId) {
ige.network.send('makePlayerCameraTrackUnit', { unitId: unit.id() }, self._stats.clientId);
} else if (ige.isClient && self._stats.clientId == ige.network.id() && unit && unit._category == 'unit' && ige.entityTrack.trackEntityById[unit._id]) {
} else if (ige.isClient && self._stats.clientId == ige.network.id() && unit && unit._category == 'unit' && ige.entityTrack.trackEntityById[unit._id]._pixiContainer) {
ige.client.myPlayer.currentFollowUnit = unit._id;
ige.pixi.viewport.follow(ige.entityTrack.trackEntityById[unit._id]);
ige.pixi.viewport.follow(ige.entityTrack.trackEntityById[unit._id]._pixiContainer);
// ige.client.removeOutsideEntities = true;
}
}
Expand Down
2 changes: 1 addition & 1 deletion src/pixi/IgePixiAnimation.js
Original file line number Diff line number Diff line change
Expand Up @@ -88,7 +88,7 @@ var IgePixiAnimation = IgeClass.extend({
},
select: function (frames, fps = 15, loopCount, cellSheetAnimId, animName) {
var self = this;
var entity = ige.entityTrack.trackEntityById[self._entity.entityId];
if (ige.entityTrack.trackEntityById[self._entity.entityId] && ige.entityTrack.trackEntityById[self._entity.entityId]._pixiContainer) var entity = ige.entityTrack.trackEntityById[self._entity.entityId]._pixiContainer;
if (!entity) return;

var startFrame = frames[0] - 1;
Expand Down
2 changes: 1 addition & 1 deletion src/pixi/IgePixiFloatingText.js
Original file line number Diff line number Diff line change
Expand Up @@ -156,7 +156,7 @@ var IgePixiFloatingText = IgeEntity.extend({

if (index > -1) {
var glueEntity = parentUnit.gluedEntities[index];
ige.entityTrack.trackEntityById[glueEntity.id] && ige.entityTrack.trackEntityById[glueEntity.id].destroy(true);
ige.entityTrack.trackEntityById[glueEntity.id] && ige.entityTrack.trackEntityById[glueEntity.id]._pixiContainer.destroy(true);
parentUnit.gluedEntities.splice(index, 1);
}
}
Expand Down
10 changes: 4 additions & 6 deletions ts/src/gameClasses/EntityTrack.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
class EntityTrack {
trackEntityById: any;
trackEntityById: {[key: string]: IgeEntity};
timeStamp: number;

constructor() {
Expand All @@ -17,15 +17,13 @@ class EntityTrack {
if (!ige.lastTickTime) ige.lastTickTime = currentTime;
var tickDelta = currentTime - ige.lastTickTime;

//console.log('entities count', Object.keys(this.trackEntityById).length);

// var entityCount = {unit: 0, item:0, player:0, wall:0, projectile: 0, undefined: 0, floatingLabel: 0}
for (var entityId in this.trackEntityById) {
//this delete _pixiContainer if it is _destroyed - maybe we can emit here destroy phaser sprite in future?
if (this.trackEntityById[entityId]._destroyed) {
//need to check if we need it, seems it is not affecting game
/*if (this.trackEntityById[entityId]._pixiContainer && this.trackEntityById[entityId]._pixiContainer._destroyed) {
delete this.trackEntityById[entityId];
break;
}
}*/

var entity = ige.$(entityId);
if (entity) {
Expand Down
28 changes: 28 additions & 0 deletions ts/types/IgeEntity.d.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
declare class IgeEntity extends IgeObject {

_destroyed: boolean;
_deathTime: number;
_category: string; // TODO more specific values
/*_translate: IgePoint3d;
_rotate: IgePoint3d;
_stats: EntityStats;
_bounds2d: IgePoint2d;
_pixiText: any; // PIXI.Text
angleToTarget: number;
tween: TweenComponent;
pixianimation: IgePixiAnimation;*/

_deathCallBack?: () => void;
_behaviour?: () => void;

_processTransform (): void

isHidden (): boolean;
getOwnerUnit (): IgeEntity | undefined;
//streamUpdateData (queuedData: UpdateData[]);
transformPixiEntity (x: number, y: number, z: number, type?: boolean);

//flip (flip: FlipMode): void
}
9 changes: 9 additions & 0 deletions ts/types/IgeObject.d.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
declare class IgeObject extends IgeEventingClass {

_pixiContainer: any; // PIXI.Container
_pixiTexture: any; // PIXI.Sprite

destroy (): void;

id (id?: string): this | string;
}

0 comments on commit 2b7b029

Please sign in to comment.