react-simple-game-engine 0.1.34 → 0.1.37

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -5,13 +5,18 @@ import { WorldManagement } from "../world-management";
5
5
  export declare abstract class EntitySult<P = any> implements Initialler<P> {
6
6
  camera: Camera;
7
7
  readonly tag: string;
8
- private readonly id;
8
+ readonly id: string;
9
+ private _layerIndex;
10
+ private _name;
9
11
  private _scene;
10
12
  private _worldManagement;
11
- name: string;
12
13
  constructor();
13
14
  abstract update(): void;
14
15
  abstract draw(): void;
16
+ get layerIndex(): number;
17
+ get name(): string;
18
+ set layerIndex(_layerIndex: number);
19
+ set name(_name: string);
15
20
  get scene(): Scene<any>;
16
21
  get worldManagement(): WorldManagement;
17
22
  getProperty<T>(name: string): T;
@@ -1 +1 @@
1
- {"version":3,"file":"entity-sult.d.ts","sourceRoot":"","sources":["../../../src/classes/entities/entity-sult.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACrD,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AACnC,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AACjC,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAEtD,8BAAsB,UAAU,CAAC,CAAC,GAAG,GAAG,CAAE,YAAW,UAAU,CAAC,CAAC,CAAC;IACzD,MAAM,EAAG,MAAM,CAAC;IACvB,SAAgB,GAAG,EAAG,MAAM,CAAC;IAE7B,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAsD;IACzE,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,gBAAgB,CAAmB;IACpC,IAAI,SAAW;;IAMtB,QAAQ,CAAC,MAAM,IAAI,IAAI;IACvB,QAAQ,CAAC,IAAI,IAAI,IAAI;IAErB,IAAI,KAAK,eAER;IAED,IAAI,eAAe,oBAElB;IAED,WAAW,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,GAAG,CAAC;IAI/B,UAAU,CAAC,eAAe,EAAE,eAAe;IAM3C,MAAM,CAAC,eAAe,EAAE,eAAe;IAUvC,QAAQ;IACR,OAAO,CAAC,MAAM,EAAE,CAAC;CAClB"}
1
+ {"version":3,"file":"entity-sult.d.ts","sourceRoot":"","sources":["../../../src/classes/entities/entity-sult.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACrD,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AACnC,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AACjC,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAEtD,8BAAsB,UAAU,CAAC,CAAC,GAAG,GAAG,CAAE,YAAW,UAAU,CAAC,CAAC,CAAC;IACzD,MAAM,EAAG,MAAM,CAAC;IACvB,SAAgB,GAAG,EAAG,MAAM,CAAC;IAC7B,SAAgB,EAAE,EAAE,MAAM,CAA8C;IAExE,OAAO,CAAC,WAAW,CAAa;IAChC,OAAO,CAAC,KAAK,CAAW;IACxB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,gBAAgB,CAAmB;;IAM3C,QAAQ,CAAC,MAAM,IAAI,IAAI;IACvB,QAAQ,CAAC,IAAI,IAAI,IAAI;IAErB,IAAI,UAAU,IAQc,MAAM,CANjC;IAED,IAAI,IAAI,IAWQ,MAAM,CATrB;IAED,IAAI,UAAU,CAAC,WAAW,EAAE,MAAM,EAKjC;IAED,IAAI,IAAI,CAAC,KAAK,EAAE,MAAM,EAUrB;IAED,IAAI,KAAK,eAER;IAED,IAAI,eAAe,oBAElB;IAED,WAAW,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,GAAG,CAAC;IAI/B,UAAU,CAAC,eAAe,EAAE,eAAe;IAM3C,MAAM,CAAC,eAAe,EAAE,eAAe;IAUvC,QAAQ;IACR,OAAO,CAAC,MAAM,EAAE,CAAC;CAClB"}
@@ -1,9 +1,43 @@
1
1
  var EntitySult = /** @class */ (function () {
2
2
  function EntitySult() {
3
3
  this.id = "".concat(Math.random(), "-").concat(new Date().getTime());
4
- this.name = this.id;
4
+ this._layerIndex = 0;
5
+ this._name = this.id;
5
6
  this.tag = this.constructor.tag;
6
7
  }
8
+ Object.defineProperty(EntitySult.prototype, "layerIndex", {
9
+ get: function () {
10
+ return this._layerIndex;
11
+ },
12
+ set: function (_layerIndex) {
13
+ if (this._layerIndex !== _layerIndex) {
14
+ this.worldManagement.changeEntityLayerIndex(this, _layerIndex);
15
+ }
16
+ this._layerIndex = _layerIndex;
17
+ },
18
+ enumerable: false,
19
+ configurable: true
20
+ });
21
+ Object.defineProperty(EntitySult.prototype, "name", {
22
+ get: function () {
23
+ return this._name;
24
+ },
25
+ set: function (_name) {
26
+ var _a;
27
+ var isDuplicated = (_a = this.worldManagement) === null || _a === void 0 ? void 0 : _a.getEntity(_name);
28
+ if (isDuplicated) {
29
+ console.warn("Name ".concat(_name, " is already in use"));
30
+ }
31
+ else {
32
+ if (this._name !== _name) {
33
+ this.worldManagement.changeEntityName(this, _name);
34
+ }
35
+ this._name = _name;
36
+ }
37
+ },
38
+ enumerable: false,
39
+ configurable: true
40
+ });
7
41
  Object.defineProperty(EntitySult.prototype, "scene", {
8
42
  get: function () {
9
43
  return this._scene;
@@ -32,7 +66,7 @@ var EntitySult = /** @class */ (function () {
32
66
  this._scene = worldManagement.scene;
33
67
  this.camera = worldManagement.camera;
34
68
  }
35
- console.log("Active ".concat(this.tag, " entity (name : ").concat(this.name, ")"));
69
+ console.log("Active ".concat(this.tag, " entity (name : ").concat(this._name, ")"));
36
70
  this.onActive();
37
71
  };
38
72
  EntitySult.prototype.onActive = function () { };
@@ -5,12 +5,12 @@ export declare class LogicComponent<C extends Initialler = Initialler> {
5
5
  private readonly configale;
6
6
  private readonly _isPrefab?;
7
7
  private _worldManagement;
8
+ layerIndex: number;
8
9
  constructor(configale: Configable<C>, _isPrefab?: boolean | undefined);
9
10
  get isPrefab(): boolean | undefined;
10
11
  set worldManagement(_worldManagement: WorldManagement);
11
- output({ worldManagement, targetParams, }?: {
12
+ output({ worldManagement, ...targetParams }?: {
12
13
  worldManagement?: WorldManagement;
13
- targetParams?: Configation<C>;
14
- }): C;
14
+ } & Configation<C>): C;
15
15
  }
16
16
  //# sourceMappingURL=logic-component.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"logic-component.d.ts","sourceRoot":"","sources":["../../src/classes/logic-component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAK1D,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAErD,qBAAa,cAAc,CAAC,CAAC,SAAS,UAAU,GAAG,UAAU;IAGzD,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC;IAH7B,OAAO,CAAC,gBAAgB,CAAmB;gBAExB,SAAS,EAAE,UAAU,CAAC,CAAC,CAAC,EACxB,SAAS,CAAC,qBAAS;IAGtC,IAAI,QAAQ,wBAEX;IAED,IAAI,eAAe,CAAC,gBAAgB,EAAE,eAAe,EAMpD;IAED,MAAM,CAAC,EACL,eAAe,EACf,YAAiB,GAClB,GAAE;QACD,eAAe,CAAC,EAAE,eAAe,CAAC;QAClC,YAAY,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC;KAC1B;CA4CP"}
1
+ {"version":3,"file":"logic-component.d.ts","sourceRoot":"","sources":["../../src/classes/logic-component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAI1D,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAErD,qBAAa,cAAc,CAAC,CAAC,SAAS,UAAU,GAAG,UAAU;IAIzD,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC;IAJ7B,OAAO,CAAC,gBAAgB,CAAmB;IAC3C,UAAU,EAAE,MAAM,CAAK;gBAEJ,SAAS,EAAE,UAAU,CAAC,CAAC,CAAC,EACxB,SAAS,CAAC,qBAAS;IAGtC,IAAI,QAAQ,wBAEX;IAED,IAAI,eAAe,CAAC,gBAAgB,EAAE,eAAe,EAMpD;IAED,MAAM,CAAC,EACL,eAAe,EACf,GAAG,YAAY,EAChB,GAAE;QACD,eAAe,CAAC,EAAE,eAAe,CAAC;KACnC,GAAG,WAAW,CAAC,CAAC,CAAM;CA6CxB"}
@@ -26,6 +26,7 @@ var LogicComponent = /** @class */ (function () {
26
26
  function LogicComponent(configale, _isPrefab) {
27
27
  this.configale = configale;
28
28
  this._isPrefab = _isPrefab;
29
+ this.layerIndex = 0;
29
30
  }
30
31
  Object.defineProperty(LogicComponent.prototype, "isPrefab", {
31
32
  get: function () {
@@ -47,20 +48,22 @@ var LogicComponent = /** @class */ (function () {
47
48
  configurable: true
48
49
  });
49
50
  LogicComponent.prototype.output = function (_a) {
50
- var _b = _a === void 0 ? {} : _a, worldManagement = _b.worldManagement, _c = _b.targetParams, targetParams = _c === void 0 ? {} : _c;
51
+ if (_a === void 0) { _a = {}; }
52
+ var worldManagement = _a.worldManagement, targetParams = __rest(_a, ["worldManagement"]);
51
53
  var configale = this.configale;
52
- var _d = Array.isArray(configale)
54
+ var _b = Array.isArray(configale)
53
55
  ? configale
54
- : [configale], Class = _d[0], _e = _d[1], params = _e === void 0 ? {} : _e;
56
+ : [configale], Class = _b[0], _c = _b[1], params = _c === void 0 ? {} : _c;
55
57
  var c = new Class();
56
58
  if (worldManagement) {
57
59
  this.worldManagement = worldManagement;
58
60
  }
59
61
  if (c instanceof EntitySult) {
62
+ c["_layerIndex"] = this.layerIndex; // use _layerIndex to not trigger change index process at this step
60
63
  c.preInitial(this._worldManagement);
61
64
  }
62
65
  if (c instanceof Entity) {
63
- var _f = params, transform = _f.transform, bodyOptions = _f.bodyOptions, props = _f.props, restParams = __rest(_f, ["transform", "bodyOptions", "props"]);
66
+ var _d = params, transform = _d.transform, bodyOptions = _d.bodyOptions, props = _d.props, restParams = __rest(_d, ["transform", "bodyOptions", "props"]);
64
67
  var extraTransform = targetParams.transform, extraBodyOptions = targetParams.bodyOptions, extraProps = targetParams.props, extraRestParams = __rest(targetParams, ["transform", "bodyOptions", "props"]);
65
68
  c.initial(__assign(__assign({ transform: __assign(__assign({}, transform), extraTransform), bodyOptions: __assign(__assign({}, bodyOptions), extraBodyOptions), props: __assign(__assign({}, props), extraProps) }, restParams), extraRestParams));
66
69
  }
@@ -34,7 +34,7 @@ export declare abstract class Scene<UIP = any> {
34
34
  onLoadAssets(): Promise<void>;
35
35
  getPrefab<C extends EntitySult>(Class: {
36
36
  new (...args: any[]): Prefab<C>;
37
- }): Prefab<EntitySult<any>>;
37
+ }): Prefab<C>;
38
38
  bootstrap(camera: Camera): void;
39
39
  protected onDraw(): void;
40
40
  protected onUpdate(): void;
@@ -1 +1 @@
1
- {"version":3,"file":"scene.d.ts","sourceRoot":"","sources":["../../src/classes/scene.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAEtC,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAErD,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAGpD,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAGlC,aAAK,kBAAkB,GAAG,CAAC,YAAY,EAAE,OAAO,KAAK,IAAI,CAAC;AAC1D,aAAK,yBAAyB,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,IAAI,CAAC;AAE7D,8BAAsB,KAAK,CAAC,GAAG,GAAG,GAAG;IACnC,OAAO,CAAC,EAAE,CAAqB;IAC/B,OAAO,CAAC,eAAe,CAAmB;IAC1C,OAAO,CAAC,aAAa,CAAW;IAChC,OAAO,CAAC,kBAAkB,CAAsB;IAChD,OAAO,CAAC,0BAA0B,CAG3B;IACP,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAgB;IAEjC,WAAW,EAAE,MAAM,CAAK;IACxB,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAG,eAAe,CAAC;IACjC,SAAgB,SAAS,EAAE,MAAM,CAA8C;aAC/D,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,cAAc,CAAC,UAAU,CAAC,EAAE;;IAS3E,IAAI,EAAE,uBAGL;IAED,IAAI,OAAO,QAEV;IAED,SAAS,CAAC,MAAM;IAEhB,SAAS,CAAC,UAAU;IAIpB,IAAI,YAAY,IAIuB,OAAO,CAF7C;IAED,OAAO,KAAK,YAAY,QAGvB;IAED,6BAA6B,CAAC,CAAC,GAAG,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;IAO7D,2BAA2B,CAAC,CAAC,GAAG,GAAG,EACjC,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,yBAAyB,CAAC,CAAC,CAAC;IAepC,iBAAiB,CAAC,IAAI,EAAE,kBAAkB;IAI1C,UAAU;IAIV,aAAa,CAAC,GAAG,EAAE,MAAM;IAInB,UAAU,CAAC,KAAK,CAAC,EAAE,MAAM;IAczB,YAAY;IAElB,SAAS,CAAC,CAAC,SAAS,UAAU,EAAE,KAAK,EAAE;QAAE,KAAK,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC,CAAA;KAAE;IAI1E,SAAS,CAAC,MAAM,EAAE,MAAM;IAkBxB,SAAS,CAAC,MAAM;IAChB,SAAS,CAAC,QAAQ;IAElB,MAAM;CAUP"}
1
+ {"version":3,"file":"scene.d.ts","sourceRoot":"","sources":["../../src/classes/scene.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAEtC,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAErD,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACpD,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAIlC,aAAK,kBAAkB,GAAG,CAAC,YAAY,EAAE,OAAO,KAAK,IAAI,CAAC;AAC1D,aAAK,yBAAyB,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,IAAI,CAAC;AAE7D,8BAAsB,KAAK,CAAC,GAAG,GAAG,GAAG;IACnC,OAAO,CAAC,EAAE,CAAqB;IAC/B,OAAO,CAAC,eAAe,CAAmB;IAC1C,OAAO,CAAC,aAAa,CAAW;IAChC,OAAO,CAAC,kBAAkB,CAAsB;IAChD,OAAO,CAAC,0BAA0B,CAG3B;IACP,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAgB;IAEjC,WAAW,EAAE,MAAM,CAAK;IACxB,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAG,eAAe,CAAC;IACjC,SAAgB,SAAS,EAAE,MAAM,CAA8C;aAC/D,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,cAAc,CAAC,UAAU,CAAC,EAAE;;IAS3E,IAAI,EAAE,uBAGL;IAED,IAAI,OAAO,QAEV;IAED,SAAS,CAAC,MAAM;IAEhB,SAAS,CAAC,UAAU;IAIpB,IAAI,YAAY,IAIuB,OAAO,CAF7C;IAED,OAAO,KAAK,YAAY,QAGvB;IAED,6BAA6B,CAAC,CAAC,GAAG,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;IAO7D,2BAA2B,CAAC,CAAC,GAAG,GAAG,EACjC,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,yBAAyB,CAAC,CAAC,CAAC;IAepC,iBAAiB,CAAC,IAAI,EAAE,kBAAkB;IAI1C,UAAU;IAIV,aAAa,CAAC,GAAG,EAAE,MAAM;IAInB,UAAU,CAAC,KAAK,CAAC,EAAE,MAAM;IAczB,YAAY;IAElB,SAAS,CAAC,CAAC,SAAS,UAAU,EAAE,KAAK,EAAE;QACrC,KAAK,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;KACjC,GAAG,MAAM,CAAC,CAAC,CAAC;IAIb,SAAS,CAAC,MAAM,EAAE,MAAM;IAgBxB,SAAS,CAAC,MAAM;IAChB,SAAS,CAAC,QAAQ;IAElB,MAAM;CAUP"}
@@ -139,21 +139,17 @@ var Scene = /** @class */ (function () {
139
139
  return this.prefabs.find(function (pf) { return pf instanceof Class; });
140
140
  };
141
141
  Scene.prototype.bootstrap = function (camera) {
142
- var _this = this;
143
142
  this.worldManagement = new WorldManagement(camera, this);
144
- var components = this.getComponents(camera).filter(function (comp) {
145
- if (comp.isPrefab) {
146
- comp.worldManagement = _this.worldManagement;
147
- _this.prefabs.push(comp);
148
- return false;
149
- }
150
- return true;
151
- });
143
+ var components = this.getComponents(camera);
144
+ var layerIndex = 0;
152
145
  for (var _i = 0, components_1 = components; _i < components_1.length; _i++) {
153
146
  var component = components_1[_i];
154
- var entity = component.output({
155
- worldManagement: this.worldManagement,
156
- });
147
+ component.worldManagement = this.worldManagement;
148
+ component.layerIndex = layerIndex++;
149
+ if (component.isPrefab) {
150
+ this.prefabs.push(component);
151
+ }
152
+ var entity = component.output();
157
153
  this.worldManagement.addEntity(entity);
158
154
  }
159
155
  };
@@ -5,14 +5,20 @@ import { EntitySult } from "./entities/entity-sult";
5
5
  export declare class WorldManagement {
6
6
  private _camera;
7
7
  private _scene;
8
- private _entities;
8
+ private readonly entitiesHash;
9
+ private readonly entitiesPool;
10
+ private readonly entitiesName;
9
11
  private _engine;
10
12
  constructor(_camera: Camera, _scene: Scene);
11
- get entities(): EntitySult<any>[];
12
13
  get engine(): Engine;
13
14
  get camera(): Camera;
14
15
  get scene(): Scene<any>;
16
+ private iterateEntities;
17
+ private joinPool;
18
+ private outPool;
15
19
  destructor(): void;
20
+ changeEntityLayerIndex(entity: EntitySult, newIndex: number): void;
21
+ changeEntityName(entity: EntitySult, newName: string): void;
16
22
  getEntity<T extends EntitySult = EntitySult>(name: string): T;
17
23
  addEntity(entity: EntitySult): void;
18
24
  removeEntity(entity: EntitySult): void;
@@ -1 +1 @@
1
- {"version":3,"file":"world-management.d.ts","sourceRoot":"","sources":["../../src/classes/world-management.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAuB,MAAM,WAAW,CAAC;AAIxD,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAGhC,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAEpD,qBAAa,eAAe;IAId,OAAO,CAAC,OAAO;IAAU,OAAO,CAAC,MAAM;IAHnD,OAAO,CAAC,SAAS,CAAoB;IACrC,OAAO,CAAC,OAAO,CAAU;gBAEL,OAAO,EAAE,MAAM,EAAU,MAAM,EAAE,KAAK;IAgD1D,IAAI,QAAQ,sBAEX;IAED,IAAI,MAAM,WAET;IAED,IAAI,MAAM,WAET;IAED,IAAI,KAAK,eAER;IAED,UAAU;IAKV,SAAS,CAAC,CAAC,SAAS,UAAU,GAAG,UAAU,EAAE,IAAI,EAAE,MAAM,GAAG,CAAC;IAK7D,SAAS,CAAC,MAAM,EAAE,UAAU;IAS5B,YAAY,CAAC,MAAM,EAAE,UAAU;IAa/B,MAAM;IAON,IAAI;CAKL"}
1
+ {"version":3,"file":"world-management.d.ts","sourceRoot":"","sources":["../../src/classes/world-management.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAuB,MAAM,WAAW,CAAC;AAIxD,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAGhC,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAEpD,qBAAa,eAAe;IAWd,OAAO,CAAC,OAAO;IAAU,OAAO,CAAC,MAAM;IAVnD,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAkC;IAC/D,OAAO,CAAC,QAAQ,CAAC,YAAY,CAGtB;IACP,OAAO,CAAC,QAAQ,CAAC,YAAY,CACxB;IAEL,OAAO,CAAC,OAAO,CAAU;gBAEL,OAAO,EAAE,MAAM,EAAU,MAAM,EAAE,KAAK;IAgD1D,IAAI,MAAM,WAET;IAED,IAAI,MAAM,WAET;IAED,IAAI,KAAK,eAER;IAED,OAAO,CAAC,eAAe;IAuBvB,OAAO,CAAC,QAAQ;IAKhB,OAAO,CAAC,OAAO;IAWf,UAAU;IAKV,sBAAsB,CAAC,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM;IAK3D,gBAAgB,CAAC,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM;IAKpD,SAAS,CAAC,CAAC,SAAS,UAAU,GAAG,UAAU,EAAE,IAAI,EAAE,MAAM,GAAG,CAAC;IAK7D,SAAS,CAAC,MAAM,EAAE,UAAU;IAW5B,YAAY,CAAC,MAAM,EAAE,UAAU;IAY/B,MAAM;IAON,IAAI;CAKL"}
@@ -5,19 +5,20 @@ var WorldManagement = /** @class */ (function () {
5
5
  var _this = this;
6
6
  this._camera = _camera;
7
7
  this._scene = _scene;
8
- this._entities = [];
8
+ this.entitiesHash = {};
9
+ this.entitiesPool = {};
10
+ this.entitiesName = {};
9
11
  this._engine = Engine.create();
10
12
  Events.on(this.engine, "beforeUpdate", function () {
11
13
  var gravity = _this.engine.gravity;
12
- for (var _i = 0, _a = _this.entities; _i < _a.length; _i++) {
13
- var entity = _a[_i];
14
+ _this.iterateEntities(function (entity) {
14
15
  if (entity instanceof Entity && !entity.enabledGravity) {
15
16
  Body.applyForce(entity.body, entity.position, {
16
17
  x: -gravity.x * gravity.scale * entity.body.mass,
17
18
  y: -gravity.y * gravity.scale * entity.body.mass,
18
19
  });
19
20
  }
20
- }
21
+ });
21
22
  });
22
23
  Events.on(this.engine, "collisionStart", function (event) {
23
24
  var pairs = event.pairs;
@@ -47,13 +48,6 @@ var WorldManagement = /** @class */ (function () {
47
48
  }
48
49
  });
49
50
  }
50
- Object.defineProperty(WorldManagement.prototype, "entities", {
51
- get: function () {
52
- return this._entities;
53
- },
54
- enumerable: false,
55
- configurable: true
56
- });
57
51
  Object.defineProperty(WorldManagement.prototype, "engine", {
58
52
  get: function () {
59
53
  return this._engine;
@@ -75,47 +69,88 @@ var WorldManagement = /** @class */ (function () {
75
69
  enumerable: false,
76
70
  configurable: true
77
71
  });
72
+ WorldManagement.prototype.iterateEntities = function (action) {
73
+ var _a = this, entitiesPool = _a.entitiesPool, entitiesHash = _a.entitiesHash;
74
+ var indexes = Object.keys(this.entitiesPool).map(function (idx) { return +idx; });
75
+ indexes.sort();
76
+ for (var _i = 0, indexes_1 = indexes; _i < indexes_1.length; _i++) {
77
+ var index = indexes_1[_i];
78
+ var entitiesId = entitiesPool[index];
79
+ var isBreak = false;
80
+ for (var _b = 0, entitiesId_1 = entitiesId; _b < entitiesId_1.length; _b++) {
81
+ var id = entitiesId_1[_b];
82
+ var entity = entitiesHash[id];
83
+ isBreak = action(entity);
84
+ if (isBreak) {
85
+ break;
86
+ }
87
+ }
88
+ if (isBreak) {
89
+ break;
90
+ }
91
+ }
92
+ };
93
+ WorldManagement.prototype.joinPool = function (index, entity) {
94
+ this.entitiesPool[index] = this.entitiesPool[index] || [];
95
+ this.entitiesPool[index].push(entity.id);
96
+ };
97
+ WorldManagement.prototype.outPool = function (entity) {
98
+ var pool = this.entitiesPool[entity.layerIndex];
99
+ if (!pool) {
100
+ return;
101
+ }
102
+ var delIndex = pool.indexOf(entity.id);
103
+ if (delIndex > -1) {
104
+ pool.splice(delIndex, 1);
105
+ }
106
+ };
78
107
  WorldManagement.prototype.destructor = function () {
79
108
  World.clear(this.engine.world, false);
80
109
  Engine.clear(this.engine);
81
110
  };
111
+ WorldManagement.prototype.changeEntityLayerIndex = function (entity, newIndex) {
112
+ this.outPool(entity);
113
+ this.joinPool(newIndex, entity);
114
+ };
115
+ WorldManagement.prototype.changeEntityName = function (entity, newName) {
116
+ delete this.entitiesName[entity.name];
117
+ this.entitiesName[newName] = entity.id;
118
+ };
82
119
  WorldManagement.prototype.getEntity = function (name) {
83
- //@ts-ignore
84
- return this.entities.find(function (entity) { return entity.name === name; });
120
+ var id = this.entitiesName[name];
121
+ return this.entitiesHash[id];
85
122
  };
86
123
  WorldManagement.prototype.addEntity = function (entity) {
87
- // temp pass modifier
88
- this.entities.push(entity);
124
+ this.joinPool(entity.layerIndex, entity);
125
+ this.entitiesHash[entity.id] = entity;
126
+ this.entitiesName[entity.name] = entity.id;
89
127
  if (entity instanceof Entity) {
90
128
  World.add(this.engine.world, entity.body);
91
129
  }
92
130
  entity.active(this);
93
131
  };
94
132
  WorldManagement.prototype.removeEntity = function (entity) {
95
- var delIndex = this.entities.indexOf(entity);
96
- if (delIndex > -1) {
97
- if (entity instanceof Entity) {
98
- World.remove(this.engine.world, entity.body);
99
- for (var _i = 0, _a = entity.children; _i < _a.length; _i++) {
100
- var child = _a[_i];
101
- this.removeEntity(child);
102
- }
133
+ if (entity instanceof Entity) {
134
+ World.remove(this.engine.world, entity.body);
135
+ for (var _i = 0, _a = entity.children; _i < _a.length; _i++) {
136
+ var child = _a[_i];
137
+ this.removeEntity(child);
103
138
  }
104
- this.entities.splice(this.entities.indexOf(entity), 1);
105
139
  }
140
+ delete this.entitiesName[entity.name];
141
+ delete this.entitiesHash[entity.id];
142
+ this.outPool(entity);
106
143
  };
107
144
  WorldManagement.prototype.update = function () {
108
145
  Engine.update(this.engine);
109
- for (var _i = 0, _a = this.entities; _i < _a.length; _i++) {
110
- var entity = _a[_i];
146
+ this.iterateEntities(function (entity) {
111
147
  entity.update();
112
- }
148
+ });
113
149
  };
114
150
  WorldManagement.prototype.draw = function () {
115
- for (var _i = 0, _a = this.entities; _i < _a.length; _i++) {
116
- var entity = _a[_i];
151
+ this.iterateEntities(function (entity) {
117
152
  entity.draw();
118
- }
153
+ });
119
154
  };
120
155
  return WorldManagement;
121
156
  }());
package/lib/index.d.ts CHANGED
@@ -1,5 +1,4 @@
1
1
  export { P5 } from "./classes/p5";
2
- export { createAssetImage, createAssetSound } from "./utils";
3
2
  export { ParticleSystem } from "./classes/particle-system";
4
3
  export { Particle } from "./classes/particle";
5
4
  export { AnimationSprite } from "./classes/animations/animation";
@@ -8,6 +7,7 @@ export { ColorAnimationSprite } from "./classes/animations/color.animation";
8
7
  export { Entity } from "./classes/entities/entity";
9
8
  export { CircleEntity } from "./classes/entities/circle.entity";
10
9
  export { RectEntity } from "./classes/entities/rect.entity";
10
+ export { Prefab } from "./classes/prefab";
11
11
  export { LogicComponent } from "./classes/logic-component";
12
12
  export { Scene } from "./classes/scene";
13
13
  export { Camera } from "./classes/camera";
@@ -18,6 +18,7 @@ export { EntityTag } from "./decorators/entity-tag.decor";
18
18
  export { SceneTag } from "./decorators/scene-tag.decor";
19
19
  export { SceneUI } from "./decorators/scene-ui.decor";
20
20
  export { ScenesProcess } from "./ui-components/ScenesProcess";
21
+ export { createAssetImage, createAssetSound } from "./utils";
21
22
  export * from "./export-types";
22
23
  export * from "./export-interfaces";
23
24
  export { default as Matter } from "matter-js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,cAAc,CAAC;AAElC,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAE7D,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAE9C,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AACjE,OAAO,EAAE,qBAAqB,EAAE,MAAM,uCAAuC,CAAC;AAC9E,OAAO,EAAE,oBAAoB,EAAE,MAAM,sCAAsC,CAAC;AAE5E,OAAO,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,kCAAkC,CAAC;AAChE,OAAO,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AAE5D,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AACxC,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAE1C,OAAO,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AAC/D,OAAO,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;AAE7D,OAAO,EAAE,SAAS,EAAE,MAAM,+BAA+B,CAAC;AAC1D,OAAO,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAC;AACxD,OAAO,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAC;AAEtD,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAE9D,cAAc,gBAAgB,CAAC;AAC/B,cAAc,qBAAqB,CAAC;AAEpC,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,WAAW,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,cAAc,CAAC;AAElC,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAE9C,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AACjE,OAAO,EAAE,qBAAqB,EAAE,MAAM,uCAAuC,CAAC;AAC9E,OAAO,EAAE,oBAAoB,EAAE,MAAM,sCAAsC,CAAC;AAE5E,OAAO,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,kCAAkC,CAAC;AAChE,OAAO,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AAE5D,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC1C,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AACxC,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAE1C,OAAO,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AAC/D,OAAO,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;AAE7D,OAAO,EAAE,SAAS,EAAE,MAAM,+BAA+B,CAAC;AAC1D,OAAO,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAC;AACxD,OAAO,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAC;AAEtD,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAE9D,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAE7D,cAAc,gBAAgB,CAAC;AAC/B,cAAc,qBAAqB,CAAC;AAEpC,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,WAAW,CAAC"}
package/lib/index.js CHANGED
@@ -1,5 +1,4 @@
1
1
  export { P5 } from "./classes/p5";
2
- export { createAssetImage, createAssetSound } from "./utils";
3
2
  export { ParticleSystem } from "./classes/particle-system";
4
3
  export { Particle } from "./classes/particle";
5
4
  export { AnimationSprite } from "./classes/animations/animation";
@@ -8,6 +7,7 @@ export { ColorAnimationSprite } from "./classes/animations/color.animation";
8
7
  export { Entity } from "./classes/entities/entity";
9
8
  export { CircleEntity } from "./classes/entities/circle.entity";
10
9
  export { RectEntity } from "./classes/entities/rect.entity";
10
+ export { Prefab } from "./classes/prefab";
11
11
  export { LogicComponent } from "./classes/logic-component";
12
12
  export { Scene } from "./classes/scene";
13
13
  export { Camera } from "./classes/camera";
@@ -18,6 +18,7 @@ export { EntityTag } from "./decorators/entity-tag.decor";
18
18
  export { SceneTag } from "./decorators/scene-tag.decor";
19
19
  export { SceneUI } from "./decorators/scene-ui.decor";
20
20
  export { ScenesProcess } from "./ui-components/ScenesProcess";
21
+ export { createAssetImage, createAssetSound } from "./utils";
21
22
  export * from "./export-types";
22
23
  export * from "./export-interfaces";
23
24
  export { default as Matter } from "matter-js";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "react-simple-game-engine",
3
- "version": "0.1.34",
3
+ "version": "0.1.37",
4
4
  "description": "",
5
5
  "main": "lib/index.js",
6
6
  "types": "lib",