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.
- package/lib/classes/logic-component.d.ts +2 -3
- package/lib/classes/logic-component.d.ts.map +1 -1
- package/lib/classes/logic-component.js +4 -1
- package/lib/classes/particle-system.d.ts +19 -0
- package/lib/classes/particle-system.d.ts.map +1 -0
- package/lib/classes/particle-system.js +71 -0
- package/lib/classes/particle.d.ts +31 -0
- package/lib/classes/particle.d.ts.map +1 -0
- package/lib/classes/particle.js +112 -0
- package/lib/classes/scene.d.ts +3 -1
- package/lib/classes/scene.d.ts.map +1 -1
- package/lib/classes/scene.js +9 -4
- package/lib/classes/world-management.d.ts +4 -2
- package/lib/classes/world-management.d.ts.map +1 -1
- package/lib/classes/world-management.js +28 -8
- package/package.json +1 -1
@@ -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
|
-
}
|
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;
|
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 };
|
package/lib/classes/scene.d.ts
CHANGED
@@ -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;
|
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"}
|
package/lib/classes/scene.js
CHANGED
@@ -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
|
125
|
-
|
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;
|
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
|
-
|
40
|
-
|
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
|
-
|
45
|
-
|
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.
|
50
|
-
var
|
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.
|
56
|
-
var
|
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
|
};
|