react-simple-game-engine 0.2.127 → 0.2.129
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/entities/entity.d.ts +25 -3
- package/lib/classes/entities/entity.d.ts.map +1 -1
- package/lib/classes/entities/entity.js +37 -3
- package/lib/classes/sensor.d.ts +10 -0
- package/lib/classes/sensor.d.ts.map +1 -0
- package/lib/classes/sensor.js +12 -0
- package/lib/classes/world-management.d.ts +4 -1
- package/lib/classes/world-management.d.ts.map +1 -1
- package/lib/classes/world-management.js +37 -10
- package/lib/export-types.d.ts +4 -0
- package/lib/export-types.d.ts.map +1 -1
- package/package.json +1 -1
@@ -4,6 +4,7 @@ import { CreateBodyDefine, EntityInitial, EntityPrepare, MasterBody, Point } fro
|
|
4
4
|
import { EntitySult } from "./entity-sult";
|
5
5
|
import { LogicComponent } from "../logic-component";
|
6
6
|
import { Sound } from "../sound";
|
7
|
+
import { Sensor } from "../sensor";
|
7
8
|
declare type TimerJobListener = () => void;
|
8
9
|
declare type TerminateOptions = {
|
9
10
|
duration?: number;
|
@@ -15,14 +16,30 @@ declare type TimerOptions = {
|
|
15
16
|
startFrom?: number;
|
16
17
|
onRegisterDone?: (time: number) => void;
|
17
18
|
};
|
19
|
+
declare type AddSensorParams = {
|
20
|
+
name?: string;
|
21
|
+
position?: Point;
|
22
|
+
} & ({
|
23
|
+
shape?: "rect";
|
24
|
+
width: number;
|
25
|
+
height: number;
|
26
|
+
radius?: never;
|
27
|
+
} | {
|
28
|
+
shape: "circle";
|
29
|
+
radius: number;
|
30
|
+
width?: never;
|
31
|
+
height?: never;
|
32
|
+
});
|
18
33
|
export declare abstract class Entity<P extends Record<string, any> = Record<string, any>> extends EntitySult<EntityInitial<Entity>> {
|
19
34
|
private _body;
|
20
35
|
private _sprite;
|
21
36
|
private _props;
|
22
37
|
private timerJobListeners;
|
23
38
|
private isTerminate;
|
39
|
+
readonly sensors: Sensor[];
|
24
40
|
enabledGravity: boolean;
|
25
41
|
sound?: Sound;
|
42
|
+
onTerminate?: () => void;
|
26
43
|
abstract get edge(): {
|
27
44
|
left: number;
|
28
45
|
right: number;
|
@@ -49,6 +66,8 @@ export declare abstract class Entity<P extends Record<string, any> = Record<stri
|
|
49
66
|
* @void
|
50
67
|
*/
|
51
68
|
onTimer(interval: number, job: TimerJobListener, { defaultRun, once, startFrom, onRegisterDone, }?: TimerOptions): () => void;
|
69
|
+
removeSensor(sensor: Sensor): void;
|
70
|
+
addSensor({ position, name, shape, width, height, radius, }: AddSensorParams): void;
|
52
71
|
createBody(enabledPhysicBody: boolean, transform: CreateBodyDefine["transform"], options?: CreateBodyDefine["bodyOptions"]): MasterBody | {
|
53
72
|
position: Point;
|
54
73
|
entity: Entity<Record<string, any>>;
|
@@ -79,9 +98,12 @@ export declare abstract class Entity<P extends Record<string, any> = Record<stri
|
|
79
98
|
width: number;
|
80
99
|
height: number;
|
81
100
|
};
|
82
|
-
onCollision(target: Entity): void;
|
83
|
-
onCollisionEnd(target: Entity): void;
|
84
|
-
onCollisionActive(target: Entity): void;
|
101
|
+
onCollision(target: Entity | Sensor): void;
|
102
|
+
onCollisionEnd(target: Entity | Sensor): void;
|
103
|
+
onCollisionActive(target: Entity | Sensor): void;
|
104
|
+
onSensorCollision(sensor: Sensor, target: Entity | Sensor): void;
|
105
|
+
onSensorCollisionEnd(sensor: Sensor, target: Entity | Sensor): void;
|
106
|
+
onSensorCollisionActive(sensor: Sensor, target: Entity | Sensor): void;
|
85
107
|
}
|
86
108
|
export {};
|
87
109
|
//# sourceMappingURL=entity.d.ts.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"entity.d.ts","sourceRoot":"","sources":["../../../src/classes/entities/entity.ts"],"names":[],"mappings":"AAAA,OAAO,MAAwB,MAAM,WAAW,CAAC;AAEjD,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAG3C,OAAO,EACL,gBAAgB,EAChB,aAAa,EACb,aAAa,EACb,UAAU,EACV,KAAK,
|
1
|
+
{"version":3,"file":"entity.d.ts","sourceRoot":"","sources":["../../../src/classes/entities/entity.ts"],"names":[],"mappings":"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"}
|
@@ -35,10 +35,11 @@ var __rest = (this && this.__rest) || function (s, e) {
|
|
35
35
|
}
|
36
36
|
return t;
|
37
37
|
};
|
38
|
-
import { Body } from "matter-js";
|
38
|
+
import { Bodies, Body } from "matter-js";
|
39
39
|
import { ColorSprite } from "../sprites/color.sprite";
|
40
40
|
import { EntitySult } from "./entity-sult";
|
41
|
-
import { copyProperties } from "../../utils";
|
41
|
+
import { copyProperties, genId } from "../../utils";
|
42
|
+
import { Sensor } from "../sensor";
|
42
43
|
var Entity = /** @class */ (function (_super) {
|
43
44
|
__extends(Entity, _super);
|
44
45
|
function Entity() {
|
@@ -46,6 +47,7 @@ var Entity = /** @class */ (function (_super) {
|
|
46
47
|
_this._props = {};
|
47
48
|
_this.timerJobListeners = [];
|
48
49
|
_this.isTerminate = false;
|
50
|
+
_this.sensors = [];
|
49
51
|
_this.enabledGravity = true;
|
50
52
|
return _this;
|
51
53
|
}
|
@@ -97,8 +99,9 @@ var Entity = /** @class */ (function (_super) {
|
|
97
99
|
*/
|
98
100
|
Entity.prototype.terminate = function (options) {
|
99
101
|
var _this = this;
|
102
|
+
var _a;
|
100
103
|
if (options) {
|
101
|
-
var
|
104
|
+
var _b = options.duration, duration = _b === void 0 ? 0.2 : _b, effect = options.effect;
|
102
105
|
this.isTerminate = true;
|
103
106
|
if (this.havePhysicBody) {
|
104
107
|
Body.setVelocity(this.body, {
|
@@ -108,11 +111,14 @@ var Entity = /** @class */ (function (_super) {
|
|
108
111
|
}
|
109
112
|
this.addChild(effect);
|
110
113
|
setTimeout(function () {
|
114
|
+
var _a;
|
111
115
|
_this.worldManagement.removeEntity(_this);
|
116
|
+
(_a = _this.onTerminate) === null || _a === void 0 ? void 0 : _a.call(_this);
|
112
117
|
}, duration * 1000);
|
113
118
|
}
|
114
119
|
else {
|
115
120
|
this.worldManagement.removeEntity(this);
|
121
|
+
(_a = this.onTerminate) === null || _a === void 0 ? void 0 : _a.call(this);
|
116
122
|
}
|
117
123
|
};
|
118
124
|
/**
|
@@ -148,6 +154,31 @@ var Entity = /** @class */ (function (_super) {
|
|
148
154
|
}
|
149
155
|
return unsub;
|
150
156
|
};
|
157
|
+
Entity.prototype.removeSensor = function (sensor) {
|
158
|
+
var delIndex = this.sensors.indexOf(sensor);
|
159
|
+
if (delIndex > -1) {
|
160
|
+
this.sensors.splice(delIndex);
|
161
|
+
this.worldManagement.removeBody(sensor.body);
|
162
|
+
}
|
163
|
+
};
|
164
|
+
Entity.prototype.addSensor = function (_a) {
|
165
|
+
var position = _a.position, name = _a.name, _b = _a.shape, shape = _b === void 0 ? "rect" : _b, width = _a.width, height = _a.height, radius = _a.radius;
|
166
|
+
name = name || genId();
|
167
|
+
var pos = position || __assign({}, this.position);
|
168
|
+
var sensor;
|
169
|
+
if (shape === "rect") {
|
170
|
+
sensor = new Sensor(this, name, shape, Bodies.rectangle(pos.x, pos.y, width, height, {
|
171
|
+
isSensor: true,
|
172
|
+
}));
|
173
|
+
}
|
174
|
+
else {
|
175
|
+
sensor = new Sensor(this, name, shape, Bodies.circle(pos.x, pos.y, radius, {
|
176
|
+
isSensor: true,
|
177
|
+
}));
|
178
|
+
}
|
179
|
+
this.sensors.push(sensor);
|
180
|
+
this.worldManagement.addBody(sensor.body);
|
181
|
+
};
|
151
182
|
Entity.prototype.createBody = function (enabledPhysicBody, transform, options) {
|
152
183
|
this._body = this.onCreateBody(enabledPhysicBody, transform, options);
|
153
184
|
this._body.entity = this;
|
@@ -210,6 +241,9 @@ var Entity = /** @class */ (function (_super) {
|
|
210
241
|
Entity.prototype.onCollision = function (target) { };
|
211
242
|
Entity.prototype.onCollisionEnd = function (target) { };
|
212
243
|
Entity.prototype.onCollisionActive = function (target) { };
|
244
|
+
Entity.prototype.onSensorCollision = function (sensor, target) { };
|
245
|
+
Entity.prototype.onSensorCollisionEnd = function (sensor, target) { };
|
246
|
+
Entity.prototype.onSensorCollisionActive = function (sensor, target) { };
|
213
247
|
return Entity;
|
214
248
|
}(EntitySult));
|
215
249
|
export { Entity };
|
@@ -0,0 +1,10 @@
|
|
1
|
+
import { SensorBody } from "../export-types";
|
2
|
+
import { Entity } from "./entities/entity";
|
3
|
+
export declare class Sensor {
|
4
|
+
readonly entity: Entity;
|
5
|
+
readonly name: string;
|
6
|
+
readonly shape: "rect" | "circle";
|
7
|
+
readonly body: SensorBody;
|
8
|
+
constructor(entity: Entity, name: string, shape: "rect" | "circle", body: SensorBody);
|
9
|
+
}
|
10
|
+
//# sourceMappingURL=sensor.d.ts.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"sensor.d.ts","sourceRoot":"","sources":["../../src/classes/sensor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAE3C,qBAAa,MAAM;aAEC,MAAM,EAAE,MAAM;aACd,IAAI,EAAE,MAAM;aACZ,KAAK,EAAE,MAAM,GAAG,QAAQ;aACxB,IAAI,EAAE,UAAU;gBAHhB,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,GAAG,QAAQ,EACxB,IAAI,EAAE,UAAU;CAKnC"}
|
@@ -0,0 +1,12 @@
|
|
1
|
+
var Sensor = /** @class */ (function () {
|
2
|
+
function Sensor(entity, name, shape, body) {
|
3
|
+
this.entity = entity;
|
4
|
+
this.name = name;
|
5
|
+
this.shape = shape;
|
6
|
+
this.body = body;
|
7
|
+
this.body.sensor = this;
|
8
|
+
this.body.entity = this.entity;
|
9
|
+
}
|
10
|
+
return Sensor;
|
11
|
+
}());
|
12
|
+
export { Sensor };
|
@@ -1,4 +1,4 @@
|
|
1
|
-
import { Engine } from "matter-js";
|
1
|
+
import { Engine, Body } from "matter-js";
|
2
2
|
import { SimpleCamera } from "./simple-camera";
|
3
3
|
import { Scene } from "./scene";
|
4
4
|
import { EntitySult } from "./entities/entity-sult";
|
@@ -10,6 +10,7 @@ export declare class WorldManagement {
|
|
10
10
|
private readonly entitiesName;
|
11
11
|
private _engine;
|
12
12
|
constructor(_camera: SimpleCamera, _scene: Scene);
|
13
|
+
private bindCollectionEvent;
|
13
14
|
get engine(): Engine;
|
14
15
|
get camera(): SimpleCamera;
|
15
16
|
get scene(): Scene<any>;
|
@@ -23,6 +24,8 @@ export declare class WorldManagement {
|
|
23
24
|
getEntity<T extends EntitySult = EntitySult>(name: string | {
|
24
25
|
new (): T;
|
25
26
|
}): T;
|
27
|
+
addBody(body: Body): void;
|
28
|
+
removeBody(body: Body): void;
|
26
29
|
addEntity(entity: EntitySult): void;
|
27
30
|
removeEntity(entity: EntitySult): void;
|
28
31
|
update(): void;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"world-management.d.ts","sourceRoot":"","sources":["../../src/classes/world-management.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,
|
1
|
+
{"version":3,"file":"world-management.d.ts","sourceRoot":"","sources":["../../src/classes/world-management.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAiB,IAAI,EAAE,MAAM,WAAW,CAAC;AAIxD,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAGhC,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAGpD,qBAAa,eAAe;IAWd,OAAO,CAAC,OAAO;IAAgB,OAAO,CAAC,MAAM;IAVzD,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,CAAS;gBAEJ,OAAO,EAAE,YAAY,EAAU,MAAM,EAAE,KAAK;IAoDhE,OAAO,CAAC,mBAAmB;IAiB3B,IAAI,MAAM,WAET;IAED,IAAI,MAAM,iBAET;IAED,IAAI,KAAK,eAER;IAED,eAAe,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE,UAAU,KAAK,OAAO,GAAG,SAAS,GAAG,IAAI;IAqB1E,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,kBAAkB;IAMlB,SAAS,CAAC,CAAC,SAAS,UAAU,GAAG,UAAU,EACzC,IAAI,EAAE,MAAM,GAAG;QAAE,QAAQ,CAAC,CAAA;KAAE,GAC3B,CAAC;IAgBJ,OAAO,CAAC,IAAI,EAAE,IAAI;IAIlB,UAAU,CAAC,IAAI,EAAE,IAAI;IAIrB,SAAS,CAAC,MAAM,EAAE,UAAU;IAa5B,YAAY,CAAC,MAAM,EAAE,UAAU;IAoB/B,MAAM;IAaN,IAAI;CAKL"}
|
@@ -27,8 +27,8 @@ var WorldManagement = /** @class */ (function () {
|
|
27
27
|
for (var _i = 0, pairs_1 = pairs; _i < pairs_1.length; _i++) {
|
28
28
|
var pair = pairs_1[_i];
|
29
29
|
var _a = pair, bodyA = _a.bodyA, bodyB = _a.bodyB;
|
30
|
-
|
31
|
-
|
30
|
+
_this.bindCollectionEvent("Collision", bodyA, bodyB);
|
31
|
+
_this.bindCollectionEvent("Collision", bodyB, bodyA);
|
32
32
|
}
|
33
33
|
});
|
34
34
|
Events.on(this.engine, "collisionEnd", function (event) {
|
@@ -36,8 +36,8 @@ var WorldManagement = /** @class */ (function () {
|
|
36
36
|
for (var _i = 0, pairs_2 = pairs; _i < pairs_2.length; _i++) {
|
37
37
|
var pair = pairs_2[_i];
|
38
38
|
var _a = pair, bodyA = _a.bodyA, bodyB = _a.bodyB;
|
39
|
-
|
40
|
-
|
39
|
+
_this.bindCollectionEvent("CollisionEnd", bodyA, bodyB);
|
40
|
+
_this.bindCollectionEvent("CollisionEnd", bodyB, bodyA);
|
41
41
|
}
|
42
42
|
});
|
43
43
|
Events.on(this.engine, "collisionActive", function (event) {
|
@@ -45,11 +45,22 @@ var WorldManagement = /** @class */ (function () {
|
|
45
45
|
for (var _i = 0, pairs_3 = pairs; _i < pairs_3.length; _i++) {
|
46
46
|
var pair = pairs_3[_i];
|
47
47
|
var _a = pair, bodyA = _a.bodyA, bodyB = _a.bodyB;
|
48
|
-
|
49
|
-
|
48
|
+
_this.bindCollectionEvent("CollisionActive", bodyA, bodyB);
|
49
|
+
_this.bindCollectionEvent("CollisionActive", bodyB, bodyA);
|
50
50
|
}
|
51
51
|
});
|
52
52
|
}
|
53
|
+
WorldManagement.prototype.bindCollectionEvent = function (name, sourceBody, targetBody) {
|
54
|
+
var targetCol = "sensor" in targetBody ? targetBody.sensor : targetBody.entity;
|
55
|
+
if ("sensor" in sourceBody) {
|
56
|
+
//ex: onSensorCollision | onSensorCollisionEnd | onSensorCollisionActive
|
57
|
+
sourceBody.entity["onSensor".concat(name)](sourceBody.sensor, targetCol);
|
58
|
+
}
|
59
|
+
else {
|
60
|
+
//ex: onCollision | onCollisionEnd | onCollisionActive
|
61
|
+
sourceBody.entity["on".concat(name)](targetCol);
|
62
|
+
}
|
63
|
+
};
|
53
64
|
Object.defineProperty(WorldManagement.prototype, "engine", {
|
54
65
|
get: function () {
|
55
66
|
return this._engine;
|
@@ -140,13 +151,19 @@ var WorldManagement = /** @class */ (function () {
|
|
140
151
|
return finded_1;
|
141
152
|
}
|
142
153
|
};
|
154
|
+
WorldManagement.prototype.addBody = function (body) {
|
155
|
+
World.add(this.engine.world, body);
|
156
|
+
};
|
157
|
+
WorldManagement.prototype.removeBody = function (body) {
|
158
|
+
World.remove(this.engine.world, body);
|
159
|
+
};
|
143
160
|
WorldManagement.prototype.addEntity = function (entity) {
|
144
161
|
this.joinPool(entity.layerIndex, entity);
|
145
162
|
this.entitiesHash[entity.id] = entity;
|
146
163
|
this.entitiesName[entity.name] = entity.id;
|
147
164
|
if (entity instanceof Entity) {
|
148
165
|
if (entity.havePhysicBody) {
|
149
|
-
|
166
|
+
this.addBody(entity.body);
|
150
167
|
}
|
151
168
|
}
|
152
169
|
entity.active(this);
|
@@ -154,11 +171,15 @@ var WorldManagement = /** @class */ (function () {
|
|
154
171
|
WorldManagement.prototype.removeEntity = function (entity) {
|
155
172
|
if (entity instanceof Entity) {
|
156
173
|
if (entity.havePhysicBody) {
|
157
|
-
|
174
|
+
this.removeBody(entity.body);
|
175
|
+
}
|
176
|
+
for (var _i = 0, _a = entity.sensors; _i < _a.length; _i++) {
|
177
|
+
var sensor = _a[_i];
|
178
|
+
this.removeBody(sensor.body);
|
158
179
|
}
|
159
180
|
}
|
160
|
-
for (var
|
161
|
-
var child =
|
181
|
+
for (var _b = 0, _c = entity.children; _b < _c.length; _b++) {
|
182
|
+
var child = _c[_b];
|
162
183
|
this.removeEntity(child);
|
163
184
|
}
|
164
185
|
if (entity.parent) {
|
@@ -172,6 +193,12 @@ var WorldManagement = /** @class */ (function () {
|
|
172
193
|
Engine.update(this.engine);
|
173
194
|
this.iterateEntities(function (entity) {
|
174
195
|
entity.update();
|
196
|
+
if (entity instanceof Entity) {
|
197
|
+
for (var _i = 0, _a = entity.sensors; _i < _a.length; _i++) {
|
198
|
+
var sensor = _a[_i];
|
199
|
+
Body.setPosition(sensor.body, entity.position);
|
200
|
+
}
|
201
|
+
}
|
175
202
|
});
|
176
203
|
};
|
177
204
|
WorldManagement.prototype.draw = function () {
|
package/lib/export-types.d.ts
CHANGED
@@ -22,6 +22,10 @@ export declare type EntityPrepare<E extends Entity> = EntityInitial<E> & {
|
|
22
22
|
export declare type MasterBody = Body & {
|
23
23
|
entity: Entity;
|
24
24
|
};
|
25
|
+
export declare type SensorBody = Body & {
|
26
|
+
sensor: import("./classes/sensor").Sensor;
|
27
|
+
entity: Entity;
|
28
|
+
};
|
25
29
|
export declare type CreateBodyDefine<E extends Record<string, any> = Record<string, any>> = {
|
26
30
|
transform?: Partial<Point> & E;
|
27
31
|
bodyOptions?: IChamferableBodyDefinition;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"export-types.d.ts","sourceRoot":"","sources":["../src/export-types.ts"],"names":[],"mappings":"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"}
|
1
|
+
{"version":3,"file":"export-types.d.ts","sourceRoot":"","sources":["../src/export-types.ts"],"names":[],"mappings":"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"}
|