react-simple-game-engine 0.0.26 → 0.0.29

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.
@@ -1,10 +1,9 @@
1
1
  import { Configable } from "../export-types";
2
- import { Entity } from "./entities/entity";
3
2
  export declare class LogicComponent<C extends {
4
3
  initial: any;
5
- } = Entity> {
4
+ }> {
6
5
  private instance;
7
6
  constructor(configale: Configable<C>);
8
- output(): C;
7
+ output(extraParams?: Record<string, any>): C;
9
8
  }
10
9
  //# 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,iBAAiB,CAAC;AAC7C,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAE3C,qBAAa,cAAc,CAAC,CAAC,SAAS;IAAE,OAAO,EAAE,GAAG,CAAA;CAAE,GAAG,MAAM;IAC7D,OAAO,CAAC,QAAQ,CAAI;gBACR,SAAS,EAAE,UAAU,CAAC,CAAC,CAAC;IAOpC,MAAM;CAGP"}
1
+ {"version":3,"file":"logic-component.d.ts","sourceRoot":"","sources":["../../src/classes/logic-component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAI7C,qBAAa,cAAc,CAAC,CAAC,SAAS;IAAE,OAAO,EAAE,GAAG,CAAA;CAAE;IACpD,OAAO,CAAC,QAAQ,CAAI;gBACR,SAAS,EAAE,UAAU,CAAC,CAAC,CAAC;IAOpC,MAAM,CAAC,WAAW,GAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAM;CAI7C"}
@@ -1,3 +1,4 @@
1
+ import { copyProperties } from "../utils";
1
2
  var LogicComponent = /** @class */ (function () {
2
3
  function LogicComponent(configale) {
3
4
  var _a = Array.isArray(configale) ? configale : [configale], Class = _a[0], params = _a[1];
@@ -5,7 +6,9 @@ var LogicComponent = /** @class */ (function () {
5
6
  c.initial(params);
6
7
  this.instance = c;
7
8
  }
8
- LogicComponent.prototype.output = function () {
9
+ LogicComponent.prototype.output = function (extraParams) {
10
+ if (extraParams === void 0) { extraParams = {}; }
11
+ copyProperties(this.instance, extraParams);
9
12
  return this.instance;
10
13
  };
11
14
  return LogicComponent;
@@ -0,0 +1,19 @@
1
+ import p5 from "p5";
2
+ import { Particle } from "./particle";
3
+ export declare class ParticleSystem {
4
+ private particles;
5
+ private forces;
6
+ x: number;
7
+ y: number;
8
+ active(): void;
9
+ initial({ x, y, length, quantity, forces, ...params }: Omit<Parameters<Particle["initial"]>[0], "vec" | "angle"> & {
10
+ quantity?: number;
11
+ length?: number;
12
+ forces?: p5.Vector[];
13
+ x: number;
14
+ y: number;
15
+ }): void;
16
+ update(): void;
17
+ draw(): void;
18
+ }
19
+ //# sourceMappingURL=particle-system.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"particle-system.d.ts","sourceRoot":"","sources":["../../src/classes/particle-system.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAGtC,qBAAa,cAAc;IACzB,OAAO,CAAC,SAAS,CAAc;IAC/B,OAAO,CAAC,MAAM,CAAmB;IAC1B,CAAC,EAAG,MAAM,CAAC;IACX,CAAC,EAAG,MAAM,CAAC;IAElB,MAAM;IAIN,OAAO,CAAC,EACN,CAAC,EACD,CAAC,EACD,MAAW,EACX,QAAc,EACd,MAAM,EACN,GAAG,MAAM,EACV,EAAE,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,GAAG,OAAO,CAAC,GAAG;QAC7D,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,MAAM,CAAC,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC;QACrB,CAAC,EAAE,MAAM,CAAC;QACV,CAAC,EAAE,MAAM,CAAC;KACX;IAmBD,MAAM;IAaN,IAAI;CAKL"}
@@ -0,0 +1,71 @@
1
+ var __assign = (this && this.__assign) || function () {
2
+ __assign = Object.assign || function(t) {
3
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
4
+ s = arguments[i];
5
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
6
+ t[p] = s[p];
7
+ }
8
+ return t;
9
+ };
10
+ return __assign.apply(this, arguments);
11
+ };
12
+ var __rest = (this && this.__rest) || function (s, e) {
13
+ var t = {};
14
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
15
+ t[p] = s[p];
16
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
17
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
18
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
19
+ t[p[i]] = s[p[i]];
20
+ }
21
+ return t;
22
+ };
23
+ import p5 from "p5";
24
+ import { Particle } from "./particle";
25
+ var ParticleSystem = /** @class */ (function () {
26
+ function ParticleSystem() {
27
+ this.forces = [];
28
+ }
29
+ ParticleSystem.prototype.active = function () {
30
+ console.log("Initted particle system");
31
+ };
32
+ ParticleSystem.prototype.initial = function (_a) {
33
+ var _b;
34
+ var _this = this;
35
+ var x = _a.x, y = _a.y, _c = _a.length, length = _c === void 0 ? 10 : _c, _d = _a.quantity, quantity = _d === void 0 ? 500 : _d, forces = _a.forces, params = __rest(_a, ["x", "y", "length", "quantity", "forces"]);
36
+ this.x = x;
37
+ this.y = y;
38
+ if (forces) {
39
+ (_b = this.forces).push.apply(_b, forces);
40
+ }
41
+ this.particles = Array.from({ length: quantity }).map(function () {
42
+ var p = new Particle(_this.x, _this.y);
43
+ var vec = p5.Vector.random2D();
44
+ vec.mult(Renderer.random(length));
45
+ var angle = Renderer.random(Renderer.TWO_PI);
46
+ p.initial(__assign(__assign({}, params), { vec: vec, angle: angle }));
47
+ return p;
48
+ });
49
+ };
50
+ ParticleSystem.prototype.update = function () {
51
+ for (var i = this.particles.length; i > -1; i--) {
52
+ var p = this.particles[i];
53
+ for (var _i = 0, _a = this.forces; _i < _a.length; _i++) {
54
+ var force = _a[_i];
55
+ p.applyForce(force);
56
+ }
57
+ p.update();
58
+ if (p.isDead()) {
59
+ this.particles.splice(i, 1);
60
+ }
61
+ }
62
+ };
63
+ ParticleSystem.prototype.draw = function () {
64
+ for (var _i = 0, _a = this.particles; _i < _a.length; _i++) {
65
+ var particle = _a[_i];
66
+ particle.draw();
67
+ }
68
+ };
69
+ return ParticleSystem;
70
+ }());
71
+ export { ParticleSystem };
@@ -0,0 +1,31 @@
1
+ import p5 from "p5";
2
+ import { Avatar, Color } from "../export-types";
3
+ import { Camera } from "./camera";
4
+ export declare class Particle extends p5.Vector {
5
+ private vec;
6
+ private acc;
7
+ private angle;
8
+ camera: Camera;
9
+ sprite?: Avatar;
10
+ color: Color;
11
+ size: number;
12
+ private _lifetime;
13
+ lifetimeRemain: number;
14
+ set lifetime(lifetime: number);
15
+ get lifetime(): number;
16
+ initial({ vec, ...params }: {
17
+ vec?: p5.Vector;
18
+ angle?: number;
19
+ sprite?: Avatar;
20
+ color?: Color;
21
+ size?: number;
22
+ lifetime?: number;
23
+ camera: Camera;
24
+ }): void;
25
+ applyForce(force: p5.Vector): void;
26
+ isDead(): boolean;
27
+ update(): void;
28
+ draw(): void;
29
+ onDraw(): void;
30
+ }
31
+ //# sourceMappingURL=particle.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"particle.d.ts","sourceRoot":"","sources":["../../src/classes/particle.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAEhD,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAElC,qBAAa,QAAS,SAAQ,EAAE,CAAC,MAAM;IACrC,OAAO,CAAC,GAAG,CAAsC;IACjD,OAAO,CAAC,GAAG,CAAsC;IACjD,OAAO,CAAC,KAAK,CAAa;IACnB,MAAM,EAAG,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,KAAK,CAAmB;IAC/B,IAAI,EAAE,MAAM,CAAM;IACzB,OAAO,CAAC,SAAS,CAAa;IACvB,cAAc,EAAE,MAAM,CAAiB;IAE9C,IAAI,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAG5B;IAED,IAAI,QAAQ,IALW,MAAM,CAO5B;IAED,OAAO,CAAC,EACN,GAAG,EACH,GAAG,MAAM,EACV,EAAE;QACD,GAAG,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC;QAChB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,KAAK,CAAC,EAAE,KAAK,CAAC;QACd,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,MAAM,EAAE,MAAM,CAAC;KAChB;IAOD,UAAU,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM;IAI3B,MAAM;IAIN,MAAM;IAQN,IAAI;IA8BJ,MAAM;CAQP"}
@@ -0,0 +1,112 @@
1
+ var __extends = (this && this.__extends) || (function () {
2
+ var extendStatics = function (d, b) {
3
+ extendStatics = Object.setPrototypeOf ||
4
+ ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
5
+ function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
6
+ return extendStatics(d, b);
7
+ };
8
+ return function (d, b) {
9
+ if (typeof b !== "function" && b !== null)
10
+ throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
11
+ extendStatics(d, b);
12
+ function __() { this.constructor = d; }
13
+ d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
14
+ };
15
+ })();
16
+ var __rest = (this && this.__rest) || function (s, e) {
17
+ var t = {};
18
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
19
+ t[p] = s[p];
20
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
21
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
22
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
23
+ t[p[i]] = s[p[i]];
24
+ }
25
+ return t;
26
+ };
27
+ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
28
+ if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
29
+ if (ar || !(i in from)) {
30
+ if (!ar) ar = Array.prototype.slice.call(from, 0, i);
31
+ ar[i] = from[i];
32
+ }
33
+ }
34
+ return to.concat(ar || Array.prototype.slice.call(from));
35
+ };
36
+ import p5 from "p5";
37
+ import { copyProperties } from "../utils";
38
+ var Particle = /** @class */ (function (_super) {
39
+ __extends(Particle, _super);
40
+ function Particle() {
41
+ var _this = _super !== null && _super.apply(this, arguments) || this;
42
+ _this.vec = Renderer.createVector(); //velocity
43
+ _this.acc = Renderer.createVector(); //acceleration
44
+ _this.angle = 0;
45
+ _this.color = [255, 255, 255];
46
+ _this.size = 10;
47
+ _this._lifetime = 2; // in seconds
48
+ _this.lifetimeRemain = _this.lifetime; // in seconds
49
+ return _this;
50
+ }
51
+ Object.defineProperty(Particle.prototype, "lifetime", {
52
+ get: function () {
53
+ return this._lifetime;
54
+ },
55
+ set: function (lifetime) {
56
+ this._lifetime = lifetime;
57
+ this.lifetimeRemain = lifetime;
58
+ },
59
+ enumerable: false,
60
+ configurable: true
61
+ });
62
+ Particle.prototype.initial = function (_a) {
63
+ var vec = _a.vec, params = __rest(_a, ["vec"]);
64
+ if (vec) {
65
+ this.vec.set(vec.x, vec.y);
66
+ }
67
+ copyProperties(this, params);
68
+ };
69
+ Particle.prototype.applyForce = function (force) {
70
+ this.acc.add(force);
71
+ };
72
+ Particle.prototype.isDead = function () {
73
+ return this.lifetime <= 0;
74
+ };
75
+ Particle.prototype.update = function () {
76
+ this.vec.add(this.acc);
77
+ this.add(this.vec);
78
+ this.acc.set(0);
79
+ this.lifetime -= Renderer.deltaTime;
80
+ };
81
+ Particle.prototype.draw = function () {
82
+ Renderer.push();
83
+ Renderer.noStroke();
84
+ Renderer.translate(this.x - this.camera.x, this.y - this.camera.y);
85
+ Renderer.rotate(this.angle);
86
+ if (this.sprite) {
87
+ var color = __spreadArray([], this.color, true);
88
+ var alpha = Renderer.map(this.lifetimeRemain, 0, this.lifetime, 0, 255);
89
+ color[3] = alpha;
90
+ Renderer.tint.apply(Renderer, color);
91
+ Renderer.image(this.sprite,
92
+ // position on canvas
93
+ 0, 0, this.sprite.width, this.sprite.height,
94
+ //crop on source image
95
+ 0, 0, this.sprite.width, this.sprite.height);
96
+ }
97
+ else {
98
+ this.onDraw();
99
+ }
100
+ //
101
+ Renderer.pop();
102
+ };
103
+ Particle.prototype.onDraw = function () {
104
+ var color = __spreadArray([], this.color, true);
105
+ var alpha = Renderer.map(this.lifetimeRemain, 0, this.lifetime, 0, 255);
106
+ color[3] = alpha;
107
+ Renderer.fill.apply(Renderer, color);
108
+ Renderer.circle(0, 0, this.size);
109
+ };
110
+ return Particle;
111
+ }(p5.Vector));
112
+ export { Particle };
@@ -1,7 +1,9 @@
1
1
  import { ComponentType } from "react";
2
+ import { Entity } from "./entities/entity";
2
3
  import { Camera } from "./camera";
3
4
  import { LogicComponent } from "./logic-component";
4
5
  import { SceneManagement } from "./scene-management";
6
+ import { ParticleSystem } from "./particle-system";
5
7
  declare type LoadAssetsListener = (loadedAssets: boolean) => void;
6
8
  export declare abstract class Scene<UIP = any> {
7
9
  private ui;
@@ -12,7 +14,7 @@ export declare abstract class Scene<UIP = any> {
12
14
  tag: string;
13
15
  manager: SceneManagement;
14
16
  readonly sessionId: string;
15
- abstract getComponents(): LogicComponent[];
17
+ abstract getComponents(camera: Camera): LogicComponent<Entity | ParticleSystem>[];
16
18
  constructor();
17
19
  get UI(): ComponentType<UIP>;
18
20
  get UIProps(): UIP;
@@ -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;AAItC,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAIrD,aAAK,kBAAkB,GAAG,CAAC,YAAY,EAAE,OAAO,KAAK,IAAI,CAAC;AAE1D,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;IAEzC,WAAW,EAAE,MAAM,CAAK;IACxB,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAG,eAAe,CAAC;IACjC,SAAgB,SAAS,EAAE,MAAM,CAA8C;aAC/D,aAAa,IAAI,cAAc,EAAE;;IASjD,IAAI,EAAE,uBAGL;IAED,IAAI,OAAO,QAEV;IAED,SAAS,CAAC,MAAM;IAEhB,SAAS,CAAC,UAAU;IAIpB,IAAI,YAAY,YAEf;IAED,iBAAiB,CAAC,IAAI,EAAE,kBAAkB;IAI1C,UAAU;IAIV,kBAAkB,CAAC,YAAY,EAAE,OAAO;IAKxC,aAAa,CAAC,GAAG,EAAE,MAAM;IAInB,UAAU,CAAC,KAAK,CAAC,EAAE,MAAM;IAczB,YAAY;IAElB,SAAS,CAAC,MAAM,EAAE,MAAM;IAUxB,SAAS,CAAC,MAAM;IAChB,SAAS,CAAC,QAAQ;IAElB,MAAM;CAQP"}
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,mBAAmB,CAAC;AAE3C,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAGrD,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAEnD,aAAK,kBAAkB,GAAG,CAAC,YAAY,EAAE,OAAO,KAAK,IAAI,CAAC;AAE1D,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;IAEzC,WAAW,EAAE,MAAM,CAAK;IACxB,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAG,eAAe,CAAC;IACjC,SAAgB,SAAS,EAAE,MAAM,CAA8C;aAC/D,aAAa,CAC3B,MAAM,EAAE,MAAM,GACb,cAAc,CAAC,MAAM,GAAG,cAAc,CAAC,EAAE;;IAS5C,IAAI,EAAE,uBAGL;IAED,IAAI,OAAO,QAEV;IAED,SAAS,CAAC,MAAM;IAEhB,SAAS,CAAC,UAAU;IAIpB,IAAI,YAAY,YAEf;IAED,iBAAiB,CAAC,IAAI,EAAE,kBAAkB;IAI1C,UAAU;IAIV,kBAAkB,CAAC,YAAY,EAAE,OAAO;IAKxC,aAAa,CAAC,GAAG,EAAE,MAAM;IAInB,UAAU,CAAC,KAAK,CAAC,EAAE,MAAM;IAczB,YAAY;IAElB,SAAS,CAAC,MAAM,EAAE,MAAM;IAaxB,SAAS,CAAC,MAAM;IAChB,SAAS,CAAC,QAAQ;IAElB,MAAM;CAQP"}
@@ -34,6 +34,7 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
34
34
  if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
35
35
  }
36
36
  };
37
+ import { Entity } from "./entities/entity";
37
38
  import { WorldManagement } from "./world-management";
38
39
  import { tick } from "../utils";
39
40
  var Scene = /** @class */ (function () {
@@ -117,12 +118,16 @@ var Scene = /** @class */ (function () {
117
118
  };
118
119
  Scene.prototype.bootstrap = function (camera) {
119
120
  this.worldManagement = new WorldManagement();
120
- var components = this.getComponents();
121
+ var components = this.getComponents(camera);
121
122
  for (var _i = 0, components_1 = components; _i < components_1.length; _i++) {
122
123
  var component = components_1[_i];
123
- var entity = component.output();
124
- entity.camera = camera;
125
- this.worldManagement.addEntity(entity);
124
+ var entity = component.output({ camera: camera });
125
+ if (entity instanceof Entity) {
126
+ this.worldManagement.addEntity(entity);
127
+ }
128
+ else {
129
+ this.worldManagement.addEntity(entity);
130
+ }
126
131
  }
127
132
  };
128
133
  Scene.prototype.onDraw = function () { };
@@ -1,11 +1,13 @@
1
1
  import { Entity } from "./entities/entity";
2
+ import { ParticleSystem } from "./particle-system";
2
3
  export declare class WorldManagement {
3
4
  private entities;
5
+ private particleSystems;
4
6
  private engine;
5
7
  constructor();
6
8
  destructor(): void;
7
- addEntity(entity: Entity): void;
8
- removeEntity(entity: Entity): void;
9
+ addEntity(entity: Entity | ParticleSystem): void;
10
+ removeEntity(entity: Entity | ParticleSystem): void;
9
11
  update(): void;
10
12
  draw(): void;
11
13
  }
@@ -1 +1 @@
1
- {"version":3,"file":"world-management.d.ts","sourceRoot":"","sources":["../../src/classes/world-management.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAE3C,qBAAa,eAAe;IAC1B,OAAO,CAAC,QAAQ,CAAgB;IAChC,OAAO,CAAC,MAAM,CAAU;;IAsCxB,UAAU;IAKV,SAAS,CAAC,MAAM,EAAE,MAAM;IAMxB,YAAY,CAAC,MAAM,EAAE,MAAM;IAK3B,MAAM;IAON,IAAI;CAKL"}
1
+ {"version":3,"file":"world-management.d.ts","sourceRoot":"","sources":["../../src/classes/world-management.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAC3C,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAEnD,qBAAa,eAAe;IAC1B,OAAO,CAAC,QAAQ,CAAgB;IAChC,OAAO,CAAC,eAAe,CAAwB;IAE/C,OAAO,CAAC,MAAM,CAAU;;IAsCxB,UAAU;IAKV,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,cAAc;IAUzC,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,cAAc;IAS5C,MAAM;IAWN,IAAI;CAQL"}
@@ -1,7 +1,9 @@
1
1
  import { Engine, World, Events } from "matter-js";
2
+ import { Entity } from "./entities/entity";
2
3
  var WorldManagement = /** @class */ (function () {
3
4
  function WorldManagement() {
4
5
  this.entities = [];
6
+ this.particleSystems = [];
5
7
  this.engine = Engine.create();
6
8
  Events.on(this.engine, "collisionStart", function (event) {
7
9
  var pairs = event.pairs;
@@ -36,24 +38,42 @@ var WorldManagement = /** @class */ (function () {
36
38
  Engine.clear(this.engine);
37
39
  };
38
40
  WorldManagement.prototype.addEntity = function (entity) {
39
- this.entities.push(entity);
40
- World.add(this.engine.world, entity.body);
41
+ if (entity instanceof Entity) {
42
+ this.entities.push(entity);
43
+ World.add(this.engine.world, entity.body);
44
+ }
45
+ else {
46
+ this.particleSystems.push(entity);
47
+ }
41
48
  entity.active(this);
42
49
  };
43
50
  WorldManagement.prototype.removeEntity = function (entity) {
44
- World.remove(this.engine.world, entity.body);
45
- this.entities.splice(this.entities.indexOf(entity), 1);
51
+ if (entity instanceof Entity) {
52
+ World.remove(this.engine.world, entity.body);
53
+ this.entities.splice(this.entities.indexOf(entity), 1);
54
+ }
55
+ else {
56
+ this.particleSystems.splice(this.particleSystems.indexOf(entity), 1);
57
+ }
46
58
  };
47
59
  WorldManagement.prototype.update = function () {
48
60
  Engine.update(this.engine);
49
- for (var _i = 0, _a = this.entities; _i < _a.length; _i++) {
50
- var entity = _a[_i];
61
+ for (var _i = 0, _a = this.particleSystems; _i < _a.length; _i++) {
62
+ var particleSystem = _a[_i];
63
+ particleSystem.update();
64
+ }
65
+ for (var _b = 0, _c = this.entities; _b < _c.length; _b++) {
66
+ var entity = _c[_b];
51
67
  entity.update();
52
68
  }
53
69
  };
54
70
  WorldManagement.prototype.draw = function () {
55
- for (var _i = 0, _a = this.entities; _i < _a.length; _i++) {
56
- var entity = _a[_i];
71
+ for (var _i = 0, _a = this.particleSystems; _i < _a.length; _i++) {
72
+ var particleSystem = _a[_i];
73
+ particleSystem.draw();
74
+ }
75
+ for (var _b = 0, _c = this.entities; _b < _c.length; _b++) {
76
+ var entity = _c[_b];
57
77
  entity.draw();
58
78
  }
59
79
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "react-simple-game-engine",
3
- "version": "0.0.26",
3
+ "version": "0.0.29",
4
4
  "description": "",
5
5
  "main": "lib/index.js",
6
6
  "types": "lib",