bard-legends-framework 0.1.30 → 0.1.32
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/.eslintrc.js +1 -1
- package/.vscode/settings.json +3 -1
- package/dist/game-entities/scene/scene.js +1 -1
- package/dist/game-entities/scene/scene.js.map +1 -1
- package/dist/game-entities/update-loop.d.ts +11 -3
- package/dist/game-entities/update-loop.js +9 -5
- package/dist/game-entities/update-loop.js.map +1 -1
- package/dist/physics/entitity-types/immovable-physics-entity.d.ts +1 -1
- package/dist/physics/entitity-types/immovable-physics-entity.js +1 -1
- package/dist/physics/entitity-types/immovable-physics-entity.js.map +1 -1
- package/dist/physics/entitity-types/movable-entity.d.ts +1 -1
- package/dist/physics/entitity-types/movable-entity.js +2 -2
- package/dist/physics/entitity-types/movable-physics-entity.d.ts +3 -3
- package/dist/physics/entitity-types/movable-physics-entity.js +10 -10
- package/dist/physics/entitity-types/movable-physics-entity.js.map +1 -1
- package/dist/physics/entitity-types/physics-entity.d.ts +16 -2
- package/dist/physics/entitity-types/physics-entity.js +42 -8
- package/dist/physics/entitity-types/physics-entity.js.map +1 -1
- package/dist/physics/helpers/p2js.helper.d.ts +0 -1
- package/dist/physics/helpers/p2js.helper.js +0 -6
- package/dist/physics/helpers/p2js.helper.js.map +1 -1
- package/dist/physics/index.d.ts +1 -1
- package/dist/physics/index.js +1 -1
- package/dist/physics/index.js.map +1 -1
- package/dist/physics/interfaces.d.ts +30 -27
- package/dist/physics/interfaces.js.map +1 -1
- package/dist/physics/physics-world.d.ts +16 -6
- package/dist/physics/physics-world.js +37 -38
- package/dist/physics/physics-world.js.map +1 -1
- package/dist/physics/sub-elements/available-spaces/physics-availability-grid.d.ts +18 -0
- package/dist/physics/sub-elements/available-spaces/physics-availability-grid.js +101 -0
- package/dist/physics/sub-elements/available-spaces/physics-availability-grid.js.map +1 -0
- package/dist/physics/sub-elements/available-spaces/physics-available-spaces.d.ts +22 -0
- package/dist/physics/sub-elements/available-spaces/physics-available-spaces.js +93 -0
- package/dist/physics/sub-elements/available-spaces/physics-available-spaces.js.map +1 -0
- package/dist/physics/sub-elements/collisions/contact-equation-orginiser.d.ts +18 -0
- package/dist/physics/sub-elements/collisions/contact-equation-orginiser.js +82 -0
- package/dist/physics/sub-elements/collisions/contact-equation-orginiser.js.map +1 -0
- package/dist/physics/sub-elements/collisions/physics-collision.d.ts +12 -0
- package/dist/physics/sub-elements/collisions/physics-collision.js +52 -0
- package/dist/physics/sub-elements/collisions/physics-collision.js.map +1 -0
- package/dist/physics/sub-elements/physics-body-groups.d.ts +6 -4
- package/dist/physics/sub-elements/physics-body-groups.js +12 -4
- package/dist/physics/sub-elements/physics-body-groups.js.map +1 -1
- package/dist/physics/sub-elements/physics-world-borders.d.ts +6 -0
- package/dist/physics/sub-elements/physics-world-borders.js +30 -0
- package/dist/physics/sub-elements/physics-world-borders.js.map +1 -0
- package/dist/pixi/display-object/objects/graphics.d.ts +3 -1
- package/dist/pixi/display-object/objects/graphics.js +39 -12
- package/dist/pixi/display-object/objects/graphics.js.map +1 -1
- package/dist/pixi/game.d.ts +1 -0
- package/dist/pixi/game.js +3 -0
- package/dist/pixi/game.js.map +1 -1
- package/dist/utilities/index.d.ts +6 -3
- package/dist/utilities/index.js +11 -5
- package/dist/utilities/index.js.map +1 -1
- package/dist/utilities/libraries/animator/animator.js +1 -1
- package/dist/utilities/libraries/animator/animator.js.map +1 -1
- package/dist/utilities/libraries/data-structures/binary-heap/binary-heap.d.ts +13 -0
- package/dist/utilities/libraries/data-structures/binary-heap/binary-heap.js +112 -0
- package/dist/utilities/libraries/data-structures/binary-heap/binary-heap.js.map +1 -0
- package/dist/utilities/libraries/data-structures/grid/grid.d.ts +33 -0
- package/dist/utilities/libraries/data-structures/grid/grid.js +138 -0
- package/dist/utilities/libraries/data-structures/grid/grid.js.map +1 -0
- package/dist/utilities/libraries/data-structures/grid/grid.spec.js.map +1 -0
- package/dist/utilities/libraries/data-structures/queue/queue.d.ts +16 -0
- package/dist/utilities/libraries/data-structures/queue/queue.js +50 -0
- package/dist/utilities/libraries/data-structures/queue/queue.js.map +1 -0
- package/dist/utilities/libraries/data-structures/vector-set/vector-set.d.ts +7 -0
- package/dist/utilities/libraries/data-structures/vector-set/vector-set.js +26 -0
- package/dist/utilities/libraries/data-structures/vector-set/vector-set.js.map +1 -0
- package/dist/utilities/libraries/delta-time/delta-time.d.ts +3 -0
- package/dist/utilities/libraries/delta-time/delta-time.js +10 -0
- package/dist/utilities/libraries/delta-time/delta-time.js.map +1 -0
- package/dist/utilities/libraries/grid-algorithms/closest-available-space/closest-available-space.helper.d.ts +7 -0
- package/dist/utilities/libraries/grid-algorithms/closest-available-space/closest-available-space.helper.js +72 -0
- package/dist/utilities/libraries/grid-algorithms/closest-available-space/closest-available-space.helper.js.map +1 -0
- package/dist/utilities/libraries/grid-algorithms/closest-available-space/closest-available-space.helper.spec.js.map +1 -0
- package/dist/utilities/libraries/grid-algorithms/path-finder/path-finder.d.ts +11 -0
- package/dist/utilities/libraries/grid-algorithms/path-finder/path-finder.js +100 -0
- package/dist/utilities/libraries/grid-algorithms/path-finder/path-finder.js.map +1 -0
- package/dist/utilities/libraries/grid-algorithms/path-finder/path-finder.spec.js.map +1 -0
- package/dist/utilities/libraries/grid-algorithms/vector-field-path-finder/vector-field-path-finder.d.ts +17 -0
- package/dist/utilities/libraries/grid-algorithms/vector-field-path-finder/vector-field-path-finder.js +114 -0
- package/dist/utilities/libraries/grid-algorithms/vector-field-path-finder/vector-field-path-finder.js.map +1 -0
- package/dist/utilities/libraries/grid-algorithms/vector-field-path-finder/vector-field-path-finder.spec.js.map +1 -0
- package/dist/utilities/services/mouse/mouse-target-focus.service.d.ts +20 -0
- package/dist/utilities/services/mouse/mouse-target-focus.service.js +85 -0
- package/dist/utilities/services/mouse/mouse-target-focus.service.js.map +1 -0
- package/dist/utilities/services/mouse/mouse.service.js +8 -8
- package/dist/utilities/services/mouse/mouse.service.js.map +1 -1
- package/package.json +2 -4
package/.eslintrc.js
CHANGED
|
@@ -97,7 +97,7 @@ module.exports = {
|
|
|
97
97
|
'@typescript-eslint/no-misused-new': 'error',
|
|
98
98
|
'@typescript-eslint/no-namespace': 'error',
|
|
99
99
|
'@typescript-eslint/no-non-null-asserted-optional-chain': 'error',
|
|
100
|
-
'@typescript-eslint/no-non-null-assertion': '
|
|
100
|
+
'@typescript-eslint/no-non-null-assertion': 'off',
|
|
101
101
|
'@typescript-eslint/no-this-alias': 'error',
|
|
102
102
|
'@typescript-eslint/no-unused-expressions': 'off',
|
|
103
103
|
'@typescript-eslint/no-unused-vars': 'off',
|
package/.vscode/settings.json
CHANGED
|
@@ -2,5 +2,7 @@
|
|
|
2
2
|
"javascript.preferences.importModuleSpecifier": "relative",
|
|
3
3
|
"typescript.preferences.importModuleSpecifier": "relative",
|
|
4
4
|
"workbench.activityBar.location": "top",
|
|
5
|
-
"window.zoomLevel": 0
|
|
5
|
+
"window.zoomLevel": 0,
|
|
6
|
+
"editor.stickyScroll.enabled": false,
|
|
7
|
+
"workbench.tree.enableStickyScroll": false
|
|
6
8
|
}
|
|
@@ -86,7 +86,7 @@ class Scene extends attachable_1.Attachable {
|
|
|
86
86
|
}
|
|
87
87
|
});
|
|
88
88
|
};
|
|
89
|
-
this.updateSubscription = update_loop_1.UpdateCycle.
|
|
89
|
+
this.updateSubscription = update_loop_1.UpdateCycle.sceneUpdateAction
|
|
90
90
|
.subscribe(updateData => {
|
|
91
91
|
if (!this.destroyed) {
|
|
92
92
|
this.update(updateData.time, updateData.delta);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scene.js","sourceRoot":"","sources":["../../../src/game-entities/scene/scene.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"scene.js","sourceRoot":"","sources":["../../../src/game-entities/scene/scene.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,13 +1,21 @@
|
|
|
1
1
|
import { Action } from 'actions-lib';
|
|
2
2
|
export declare class UpdateCycle {
|
|
3
|
-
static hardResetAction: Action<void>;
|
|
4
|
-
static
|
|
3
|
+
static readonly hardResetAction: Action<void>;
|
|
4
|
+
static readonly beforeSceneUpdateAction: Action<{
|
|
5
|
+
time: number;
|
|
6
|
+
delta: number;
|
|
7
|
+
}>;
|
|
8
|
+
static readonly sceneUpdateAction: Action<{
|
|
9
|
+
time: number;
|
|
10
|
+
delta: number;
|
|
11
|
+
}>;
|
|
12
|
+
static readonly afterSceneUpdateAction: Action<{
|
|
5
13
|
time: number;
|
|
6
14
|
delta: number;
|
|
7
15
|
}>;
|
|
8
16
|
private static time;
|
|
9
17
|
private static destroyPhase;
|
|
10
|
-
private static
|
|
18
|
+
private static destroyPhaseAction;
|
|
11
19
|
static triggerUpdateTick(delta: number): void;
|
|
12
20
|
static waitUntilDestroyPhase(callback: () => void): void;
|
|
13
21
|
}
|
|
@@ -4,15 +4,19 @@ exports.UpdateCycle = void 0;
|
|
|
4
4
|
const actions_lib_1 = require("actions-lib");
|
|
5
5
|
class UpdateCycle {
|
|
6
6
|
static { this.hardResetAction = new actions_lib_1.Action(); }
|
|
7
|
-
static { this.
|
|
7
|
+
static { this.beforeSceneUpdateAction = new actions_lib_1.Action(); }
|
|
8
|
+
static { this.sceneUpdateAction = new actions_lib_1.Action(); }
|
|
9
|
+
static { this.afterSceneUpdateAction = new actions_lib_1.Action(); }
|
|
8
10
|
static { this.time = 0; }
|
|
9
11
|
static { this.destroyPhase = false; }
|
|
10
|
-
static { this.
|
|
12
|
+
static { this.destroyPhaseAction = new actions_lib_1.Action(); }
|
|
11
13
|
static triggerUpdateTick(delta) {
|
|
12
14
|
this.time += delta;
|
|
13
|
-
UpdateCycle.
|
|
15
|
+
UpdateCycle.beforeSceneUpdateAction.trigger({ time: this.time, delta });
|
|
16
|
+
UpdateCycle.sceneUpdateAction.trigger({ time: this.time, delta });
|
|
17
|
+
UpdateCycle.afterSceneUpdateAction.trigger({ time: this.time, delta });
|
|
14
18
|
UpdateCycle.destroyPhase = true;
|
|
15
|
-
UpdateCycle.
|
|
19
|
+
UpdateCycle.destroyPhaseAction.trigger();
|
|
16
20
|
UpdateCycle.destroyPhase = false;
|
|
17
21
|
}
|
|
18
22
|
static waitUntilDestroyPhase(callback) {
|
|
@@ -20,7 +24,7 @@ class UpdateCycle {
|
|
|
20
24
|
callback();
|
|
21
25
|
}
|
|
22
26
|
else {
|
|
23
|
-
UpdateCycle.
|
|
27
|
+
UpdateCycle.destroyPhaseAction.waitUntilNextCallback(callback);
|
|
24
28
|
}
|
|
25
29
|
}
|
|
26
30
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"update-loop.js","sourceRoot":"","sources":["../../src/game-entities/update-loop.ts"],"names":[],"mappings":";;;AAAA,6CAAqC;AAErC,MAAa,WAAW;
|
|
1
|
+
{"version":3,"file":"update-loop.js","sourceRoot":"","sources":["../../src/game-entities/update-loop.ts"],"names":[],"mappings":";;;AAAA,6CAAqC;AAErC,MAAa,WAAW;aACN,oBAAe,GAAG,IAAI,oBAAM,EAAQ,CAAC;aACrC,4BAAuB,GAAG,IAAI,oBAAM,EAAmC,CAAC;aACxE,sBAAiB,GAAG,IAAI,oBAAM,EAAmC,CAAC;aAClE,2BAAsB,GAAG,IAAI,oBAAM,EAAmC,CAAC;aAExE,SAAI,GAAG,CAAC,CAAC;aACT,iBAAY,GAAG,KAAK,CAAC;aACrB,uBAAkB,GAAG,IAAI,oBAAM,EAAQ,CAAC;IAEvD,MAAM,CAAC,iBAAiB,CAAC,KAAa;QACpC,IAAI,CAAC,IAAI,IAAI,KAAK,CAAC;QACnB,WAAW,CAAC,uBAAuB,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;QACxE,WAAW,CAAC,iBAAiB,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;QAClE,WAAW,CAAC,sBAAsB,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;QACvE,WAAW,CAAC,YAAY,GAAG,IAAI,CAAC;QAChC,WAAW,CAAC,kBAAkB,CAAC,OAAO,EAAE,CAAC;QACzC,WAAW,CAAC,YAAY,GAAG,KAAK,CAAC;IACnC,CAAC;IAED,MAAM,CAAC,qBAAqB,CAAC,QAAoB;QAC/C,IAAI,WAAW,CAAC,YAAY,EAAE,CAAC;YAC7B,QAAQ,EAAE,CAAC;QACb,CAAC;aAAM,CAAC;YACN,WAAW,CAAC,kBAAkB,CAAC,qBAAqB,CAAC,QAAQ,CAAC,CAAC;QACjE,CAAC;IACH,CAAC;;AA1BH,kCA2BC;AAED,WAAW,CAAC,eAAe,CAAC,SAAS,CAAC,GAAG,EAAE;IACzC,WAAW,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;AAC1B,CAAC,CAAC,CAAC"}
|
|
@@ -6,7 +6,7 @@ import { PhysicsEntity } from './physics-entity';
|
|
|
6
6
|
export declare abstract class ImmovablePhysicsEntity extends PhysicsEntity {
|
|
7
7
|
readonly position: Vec2;
|
|
8
8
|
readonly rotation: number;
|
|
9
|
-
readonly onCollision: Action<CollisionReport>;
|
|
9
|
+
readonly onCollision: Action<CollisionReport[]>;
|
|
10
10
|
constructor(physicsWorld: PhysicsWorld, physicsEntityDefinition: PhysicsEntityDefinition);
|
|
11
11
|
destroy(): void;
|
|
12
12
|
convertToDTO(): PhysicsBodyDTO;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"immovable-physics-entity.js","sourceRoot":"","sources":["../../../src/physics/entitity-types/immovable-physics-entity.ts"],"names":[],"mappings":";;;AAAA,6CAAqC;AAKrC,qDAAiD;AACjD,wDAAoD;AAEpD,MAAsB,sBAAuB,SAAQ,8BAAa;IAMhE,YAAY,YAA0B,EAAE,uBAAgD;QACtF,KAAK,CAAC,YAAY,EAAE,uBAAuB,EAAE,QAAQ,CAAC,CAAC;QAHhD,gBAAW,GAAG,IAAI,oBAAM,
|
|
1
|
+
{"version":3,"file":"immovable-physics-entity.js","sourceRoot":"","sources":["../../../src/physics/entitity-types/immovable-physics-entity.ts"],"names":[],"mappings":";;;AAAA,6CAAqC;AAKrC,qDAAiD;AACjD,wDAAoD;AAEpD,MAAsB,sBAAuB,SAAQ,8BAAa;IAMhE,YAAY,YAA0B,EAAE,uBAAgD;QACtF,KAAK,CAAC,YAAY,EAAE,uBAAuB,EAAE,QAAQ,CAAC,CAAC;QAHhD,gBAAW,GAAG,IAAI,oBAAM,EAAqB,CAAC;QAKrD,IAAI,CAAC,QAAQ,GAAG,wBAAU,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC3D,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;IAClC,CAAC;IAED,OAAO,KAAU,CAAC;IAElB,YAAY;QACV,OAAO;YACL,QAAQ,EAAE,IAAI,CAAC,EAAE;YACjB,eAAe,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI;YACtC,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,QAAQ,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;YACxB,eAAe,EAAE,CAAC;SACnB,CAAC;IACJ,CAAC;CACF;AAzBD,wDAyBC"}
|
|
@@ -5,6 +5,6 @@ export declare abstract class MovableEntity extends Entity {
|
|
|
5
5
|
readonly position: Variable<Vec2>;
|
|
6
6
|
readonly rotation: Variable<number>;
|
|
7
7
|
readonly velocity: Variable<Vec2>;
|
|
8
|
-
readonly
|
|
8
|
+
readonly rotationalSpeed: Variable<number>;
|
|
9
9
|
update(time: number, delta: number): void;
|
|
10
10
|
}
|
|
@@ -9,14 +9,14 @@ class MovableEntity extends game_entities_1.Entity {
|
|
|
9
9
|
this.position = new actions_lib_1.Variable().set({ x: 0, y: 0 });
|
|
10
10
|
this.rotation = new actions_lib_1.Variable().set(0);
|
|
11
11
|
this.velocity = new actions_lib_1.Variable().set({ x: 0, y: 0 });
|
|
12
|
-
this.
|
|
12
|
+
this.rotationalSpeed = new actions_lib_1.Variable().set(0);
|
|
13
13
|
}
|
|
14
14
|
update(time, delta) {
|
|
15
15
|
this.position.value = {
|
|
16
16
|
x: this.position.value.x + this.velocity.value.x * delta,
|
|
17
17
|
y: this.position.value.y + this.velocity.value.y * delta
|
|
18
18
|
};
|
|
19
|
-
this.rotation.value = this.rotation.value + this.
|
|
19
|
+
this.rotation.value = this.rotation.value + this.rotationalSpeed.value * delta;
|
|
20
20
|
}
|
|
21
21
|
}
|
|
22
22
|
exports.MovableEntity = MovableEntity;
|
|
@@ -7,12 +7,12 @@ export declare abstract class MovablePhysicsEntity extends PhysicsEntity {
|
|
|
7
7
|
readonly position: Variable<Vec2>;
|
|
8
8
|
readonly rotation: Variable<number>;
|
|
9
9
|
readonly velocity: Variable<Vec2>;
|
|
10
|
-
readonly
|
|
11
|
-
readonly onCollision: Action<CollisionReport>;
|
|
10
|
+
readonly rotationalSpeed: Variable<number>;
|
|
11
|
+
readonly onCollision: Action<CollisionReport[]>;
|
|
12
12
|
private ignorePositionUpdate;
|
|
13
13
|
private ignoreRotationUpdate;
|
|
14
14
|
private ignoreVelocityUpdate;
|
|
15
|
-
private
|
|
15
|
+
private ignoreRotationalSpeedUpdate;
|
|
16
16
|
constructor(physicsWorld: PhysicsWorld, physicsEntityDefinition: PhysicsEntityDefinition);
|
|
17
17
|
convertToDTO(): PhysicsBodyDTO;
|
|
18
18
|
private step;
|
|
@@ -10,12 +10,12 @@ class MovablePhysicsEntity extends physics_entity_1.PhysicsEntity {
|
|
|
10
10
|
this.position = new actions_lib_1.Variable().set({ x: 0, y: 0 });
|
|
11
11
|
this.rotation = new actions_lib_1.Variable().set(0);
|
|
12
12
|
this.velocity = new actions_lib_1.Variable().set({ x: 0, y: 0 });
|
|
13
|
-
this.
|
|
13
|
+
this.rotationalSpeed = new actions_lib_1.Variable().set(0);
|
|
14
14
|
this.onCollision = new actions_lib_1.Action();
|
|
15
15
|
this.ignorePositionUpdate = false;
|
|
16
16
|
this.ignoreRotationUpdate = false;
|
|
17
17
|
this.ignoreVelocityUpdate = false;
|
|
18
|
-
this.
|
|
18
|
+
this.ignoreRotationalSpeedUpdate = false;
|
|
19
19
|
this.phsicsToLocalSync();
|
|
20
20
|
this.localToPhsicsSync();
|
|
21
21
|
this.physicsWorld.onPhysicsStep.subscribe(({ time, delta }) => this.step(time, delta)).attach(this);
|
|
@@ -27,21 +27,21 @@ class MovablePhysicsEntity extends physics_entity_1.PhysicsEntity {
|
|
|
27
27
|
position: this.position.value,
|
|
28
28
|
rotation: this.rotation.value,
|
|
29
29
|
velocity: this.velocity.value,
|
|
30
|
-
|
|
30
|
+
rotationalSpeed: this.rotationalSpeed.value
|
|
31
31
|
};
|
|
32
32
|
}
|
|
33
33
|
step(time, delta) {
|
|
34
34
|
this.ignorePositionUpdate = true;
|
|
35
35
|
this.ignoreRotationUpdate = true;
|
|
36
36
|
this.ignoreVelocityUpdate = true;
|
|
37
|
-
this.
|
|
37
|
+
this.ignoreRotationalSpeedUpdate = true;
|
|
38
38
|
this.phsicsToLocalSync();
|
|
39
39
|
}
|
|
40
40
|
phsicsToLocalSync() {
|
|
41
41
|
this.position.value = p2js_helper_1.P2JSHelper.arrayToVec2(this.body.position);
|
|
42
42
|
this.rotation.value = this.body.angle;
|
|
43
43
|
this.velocity.value = p2js_helper_1.P2JSHelper.arrayToVec2(this.body.velocity);
|
|
44
|
-
this.
|
|
44
|
+
this.rotationalSpeed.value = this.body.angularVelocity;
|
|
45
45
|
}
|
|
46
46
|
localToPhsicsSync() {
|
|
47
47
|
this.position
|
|
@@ -74,13 +74,13 @@ class MovablePhysicsEntity extends physics_entity_1.PhysicsEntity {
|
|
|
74
74
|
}
|
|
75
75
|
})
|
|
76
76
|
.attach(this);
|
|
77
|
-
this.
|
|
78
|
-
.subscribe(
|
|
79
|
-
if (this.
|
|
80
|
-
this.
|
|
77
|
+
this.rotationalSpeed
|
|
78
|
+
.subscribe(rotationalSpeed => {
|
|
79
|
+
if (this.ignoreRotationalSpeedUpdate) {
|
|
80
|
+
this.ignoreRotationalSpeedUpdate = false;
|
|
81
81
|
}
|
|
82
82
|
else {
|
|
83
|
-
let torque = (
|
|
83
|
+
let torque = (rotationalSpeed - this.body.angularVelocity) / this.body.invInertia;
|
|
84
84
|
this.body.angularForce = torque;
|
|
85
85
|
}
|
|
86
86
|
})
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"movable-physics-entity.js","sourceRoot":"","sources":["../../../src/physics/entitity-types/movable-physics-entity.ts"],"names":[],"mappings":";;;AAAA,6CAA+C;AAI/C,wDAAoD;AAEpD,qDAAiD;AAEjD,MAAsB,oBAAqB,SAAQ,8BAAa;IAa9D,YAAY,YAA0B,EAAE,uBAAgD;QACtF,KAAK,CAAC,YAAY,EAAE,uBAAuB,EAAE,SAAS,CAAC,CAAC;QAbjD,aAAQ,GAAG,IAAI,sBAAQ,EAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;QACpD,aAAQ,GAAG,IAAI,sBAAQ,EAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QACzC,aAAQ,GAAG,IAAI,sBAAQ,EAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;QACpD,oBAAe,GAAG,IAAI,sBAAQ,EAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAEhD,gBAAW,GAAG,IAAI,oBAAM,
|
|
1
|
+
{"version":3,"file":"movable-physics-entity.js","sourceRoot":"","sources":["../../../src/physics/entitity-types/movable-physics-entity.ts"],"names":[],"mappings":";;;AAAA,6CAA+C;AAI/C,wDAAoD;AAEpD,qDAAiD;AAEjD,MAAsB,oBAAqB,SAAQ,8BAAa;IAa9D,YAAY,YAA0B,EAAE,uBAAgD;QACtF,KAAK,CAAC,YAAY,EAAE,uBAAuB,EAAE,SAAS,CAAC,CAAC;QAbjD,aAAQ,GAAG,IAAI,sBAAQ,EAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;QACpD,aAAQ,GAAG,IAAI,sBAAQ,EAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QACzC,aAAQ,GAAG,IAAI,sBAAQ,EAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;QACpD,oBAAe,GAAG,IAAI,sBAAQ,EAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAEhD,gBAAW,GAAG,IAAI,oBAAM,EAAqB,CAAC;QAE/C,yBAAoB,GAAG,KAAK,CAAC;QAC7B,yBAAoB,GAAG,KAAK,CAAC;QAC7B,yBAAoB,GAAG,KAAK,CAAC;QAC7B,gCAA2B,GAAG,KAAK,CAAC;QAK1C,IAAI,CAAC,iBAAiB,EAAE,CAAC;QACzB,IAAI,CAAC,iBAAiB,EAAE,CAAC;QACzB,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACtG,CAAC;IAED,YAAY;QACV,OAAO;YACL,QAAQ,EAAE,IAAI,CAAC,EAAE;YACjB,eAAe,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI;YACtC,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,KAAK;YAC7B,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,KAAK;YAC7B,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,KAAK;YAC7B,eAAe,EAAE,IAAI,CAAC,eAAe,CAAC,KAAK;SAC5C,CAAC;IACJ,CAAC;IAEO,IAAI,CAAC,IAAY,EAAE,KAAa;QACtC,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC;QACjC,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC;QACjC,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC;QACjC,IAAI,CAAC,2BAA2B,GAAG,IAAI,CAAC;QAExC,IAAI,CAAC,iBAAiB,EAAE,CAAC;IAC3B,CAAC;IAEO,iBAAiB;QACvB,IAAI,CAAC,QAAQ,CAAC,KAAK,GAAG,wBAAU,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACjE,IAAI,CAAC,QAAQ,CAAC,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;QACtC,IAAI,CAAC,QAAQ,CAAC,KAAK,GAAG,wBAAU,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACjE,IAAI,CAAC,eAAe,CAAC,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC;IACzD,CAAC;IAEO,iBAAiB;QACvB,IAAI,CAAC,QAAQ;aACV,SAAS,CAAC,QAAQ,CAAC,EAAE;YACpB,IAAI,IAAI,CAAC,oBAAoB,EAAE,CAAC;gBAC9B,IAAI,CAAC,oBAAoB,GAAG,KAAK,CAAC;YACpC,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,IAAI,CAAC,QAAQ,GAAG,CAAC,QAAQ,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC;YAChD,CAAC;QACH,CAAC,CAAC;aACD,MAAM,CAAC,IAAI,CAAC,CAAC;QAEhB,IAAI,CAAC,QAAQ;aACV,SAAS,CAAC,QAAQ,CAAC,EAAE;YACpB,IAAI,IAAI,CAAC,oBAAoB,EAAE,CAAC;gBAC9B,IAAI,CAAC,oBAAoB,GAAG,KAAK,CAAC;YACpC,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,QAAQ,CAAC;YAC7B,CAAC;QACH,CAAC,CAAC;aACD,MAAM,CAAC,IAAI,CAAC,CAAC;QAEhB,IAAI,CAAC,QAAQ;aACV,SAAS,CAAC,QAAQ,CAAC,EAAE;YACpB,IAAI,IAAI,CAAC,oBAAoB,EAAE,CAAC;gBAC9B,IAAI,CAAC,oBAAoB,GAAG,KAAK,CAAC;YACpC,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,IAAI,CAAC,QAAQ,GAAG,CAAC,QAAQ,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC;YAChD,CAAC;QACH,CAAC,CAAC;aACD,MAAM,CAAC,IAAI,CAAC,CAAC;QAEhB,IAAI,CAAC,eAAe;aACjB,SAAS,CAAC,eAAe,CAAC,EAAE;YAC3B,IAAI,IAAI,CAAC,2BAA2B,EAAE,CAAC;gBACrC,IAAI,CAAC,2BAA2B,GAAG,KAAK,CAAC;YAC3C,CAAC;iBAAM,CAAC;gBACN,IAAI,MAAM,GAAG,CAAC,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC;gBAClF,IAAI,CAAC,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC;YAClC,CAAC;QACH,CAAC,CAAC;aACD,MAAM,CAAC,IAAI,CAAC,CAAC;IAClB,CAAC;CACF;AA1FD,oDA0FC"}
|
|
@@ -3,16 +3,30 @@ import p2 from 'p2';
|
|
|
3
3
|
import { PhysicsWorld } from '../physics-world';
|
|
4
4
|
import { PhysicsBodyDTO, PhysicsEntityDefinition, CollisionReport } from '../interfaces';
|
|
5
5
|
import { Entity } from '../../game-entities';
|
|
6
|
+
import { PhysicsBodyGroup } from '../sub-elements/physics-body-groups';
|
|
6
7
|
export declare abstract class PhysicsEntity extends Entity {
|
|
7
8
|
private static p2BodyIdToPhysicsBody;
|
|
9
|
+
private static physicsEntities;
|
|
8
10
|
static getFromP2BodyId(p2BodyId: number): PhysicsEntity | undefined;
|
|
9
11
|
static getFromP2BodyIdOrFail(p2BodyId: number): PhysicsEntity;
|
|
10
|
-
|
|
12
|
+
static getInstance(id: string): PhysicsEntity | undefined;
|
|
13
|
+
static getInstanceOrFail(id: string): PhysicsEntity;
|
|
14
|
+
static getPhysicsEntities(): PhysicsEntity[];
|
|
15
|
+
readonly onCollision: Action<CollisionReport[]>;
|
|
16
|
+
get area(): number;
|
|
17
|
+
get mass(): number;
|
|
18
|
+
get collisions(): ReadonlyArray<CollisionReport>;
|
|
19
|
+
readonly physicsBodyGroup: PhysicsBodyGroup;
|
|
20
|
+
readonly includeInPathfinding: boolean;
|
|
11
21
|
protected readonly physicsWorld: PhysicsWorld;
|
|
12
22
|
protected readonly body: p2.Body;
|
|
13
23
|
protected readonly type: 'dynamic' | 'static';
|
|
14
24
|
protected physicsDestroy: () => void;
|
|
25
|
+
private _area;
|
|
26
|
+
private _mass;
|
|
27
|
+
private _collisions;
|
|
15
28
|
constructor(physicsWorld: PhysicsWorld, physicsEntityDefinition: PhysicsEntityDefinition, type: 'dynamic' | 'static');
|
|
16
|
-
destroy(): void;
|
|
17
29
|
abstract convertToDTO(): PhysicsBodyDTO;
|
|
30
|
+
destroy(): void;
|
|
31
|
+
protected setCollisionReports(collisionReports: CollisionReport[]): void;
|
|
18
32
|
}
|
|
@@ -8,6 +8,7 @@ const game_entities_1 = require("../../game-entities");
|
|
|
8
8
|
const update_loop_1 = require("../../game-entities/update-loop");
|
|
9
9
|
class PhysicsEntity extends game_entities_1.Entity {
|
|
10
10
|
static { this.p2BodyIdToPhysicsBody = new Map(); }
|
|
11
|
+
static { this.physicsEntities = new Map(); }
|
|
11
12
|
static getFromP2BodyId(p2BodyId) {
|
|
12
13
|
return PhysicsEntity.p2BodyIdToPhysicsBody.get(p2BodyId);
|
|
13
14
|
}
|
|
@@ -18,6 +19,28 @@ class PhysicsEntity extends game_entities_1.Entity {
|
|
|
18
19
|
}
|
|
19
20
|
return physicsBody;
|
|
20
21
|
}
|
|
22
|
+
static getInstance(id) {
|
|
23
|
+
return PhysicsEntity.physicsEntities.get(id);
|
|
24
|
+
}
|
|
25
|
+
static getInstanceOrFail(id) {
|
|
26
|
+
let physicsEntity = PhysicsEntity.physicsEntities.get(id);
|
|
27
|
+
if (!physicsEntity) {
|
|
28
|
+
throw new Error(`PhysicsEntity with id ${id} not found`);
|
|
29
|
+
}
|
|
30
|
+
return physicsEntity;
|
|
31
|
+
}
|
|
32
|
+
static getPhysicsEntities() {
|
|
33
|
+
return Array.from(PhysicsEntity.physicsEntities.values());
|
|
34
|
+
}
|
|
35
|
+
get area() {
|
|
36
|
+
return this._area;
|
|
37
|
+
}
|
|
38
|
+
get mass() {
|
|
39
|
+
return this._mass;
|
|
40
|
+
}
|
|
41
|
+
get collisions() {
|
|
42
|
+
return this._collisions;
|
|
43
|
+
}
|
|
21
44
|
constructor(physicsWorld, physicsEntityDefinition, type) {
|
|
22
45
|
super();
|
|
23
46
|
this.onCollision = new actions_lib_1.Action();
|
|
@@ -25,24 +48,28 @@ class PhysicsEntity extends game_entities_1.Entity {
|
|
|
25
48
|
this.physicsDestroy = () => {
|
|
26
49
|
this.physicsWorld.removeBody(this.body);
|
|
27
50
|
PhysicsEntity.p2BodyIdToPhysicsBody.delete(this.body.id);
|
|
51
|
+
PhysicsEntity.physicsEntities.delete(this.id);
|
|
28
52
|
};
|
|
53
|
+
this._area = 0;
|
|
54
|
+
this._mass = 0;
|
|
55
|
+
this._collisions = [];
|
|
29
56
|
this.physicsWorld = physicsWorld;
|
|
30
57
|
let material = physicsWorld.physicsMaterials.getMaterial(physicsEntityDefinition.shapeDefinition.materialName);
|
|
31
58
|
let materialDefinition = physicsWorld.physicsMaterials.getMaterialDefinition(physicsEntityDefinition.shapeDefinition.materialName);
|
|
32
59
|
this.type = type;
|
|
60
|
+
this.physicsBodyGroup = physicsEntityDefinition.shapeDefinition.group;
|
|
61
|
+
this.includeInPathfinding = physicsEntityDefinition.includeOnPathfinding;
|
|
33
62
|
this.body = shape_factory_1.ShapeFactory.createBody(physicsEntityDefinition, material, materialDefinition, this.type);
|
|
63
|
+
this._area = this.body.getArea();
|
|
64
|
+
this._mass = this.body.mass;
|
|
34
65
|
this.body.position = p2js_helper_1.P2JSHelper.vec2ToArray(physicsEntityDefinition.position);
|
|
35
66
|
this.body.angle = physicsEntityDefinition.rotation;
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
throw new Error('PhysicsEntity was not able to be added to the world!');
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
else {
|
|
43
|
-
physicsWorld.addBody(this.body, details => this.onCollision.trigger(details));
|
|
67
|
+
let addedToTheWorld = physicsWorld.addBody(this.body, physicsEntityDefinition.addInEmptySpace, physicsEntityDefinition.shapeDefinition.group, physicsEntityDefinition.includeOnPathfinding);
|
|
68
|
+
if (!addedToTheWorld) {
|
|
69
|
+
throw new Error('PhysicsEntity was not able to be added to the world!');
|
|
44
70
|
}
|
|
45
71
|
PhysicsEntity.p2BodyIdToPhysicsBody.set(this.body.id, this);
|
|
72
|
+
PhysicsEntity.physicsEntities.set(this.id, this);
|
|
46
73
|
this.destroy = function () {
|
|
47
74
|
update_loop_1.UpdateCycle.waitUntilDestroyPhase(() => {
|
|
48
75
|
this.destroyed = true;
|
|
@@ -54,6 +81,13 @@ class PhysicsEntity extends game_entities_1.Entity {
|
|
|
54
81
|
};
|
|
55
82
|
}
|
|
56
83
|
destroy() { }
|
|
84
|
+
// Managed by PhysicsCollision
|
|
85
|
+
setCollisionReports(collisionReports) {
|
|
86
|
+
this._collisions = collisionReports;
|
|
87
|
+
if (collisionReports.length > 0) {
|
|
88
|
+
this.onCollision.trigger(collisionReports);
|
|
89
|
+
}
|
|
90
|
+
}
|
|
57
91
|
}
|
|
58
92
|
exports.PhysicsEntity = PhysicsEntity;
|
|
59
93
|
//# sourceMappingURL=physics-entity.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"physics-entity.js","sourceRoot":"","sources":["../../../src/physics/entitity-types/physics-entity.ts"],"names":[],"mappings":";;;AAAA,6CAAqC;AAIrC,wDAAoD;AAEpD,4DAAwD;AACxD,uDAA6C;AAC7C,iEAA8D;
|
|
1
|
+
{"version":3,"file":"physics-entity.js","sourceRoot":"","sources":["../../../src/physics/entitity-types/physics-entity.ts"],"names":[],"mappings":";;;AAAA,6CAAqC;AAIrC,wDAAoD;AAEpD,4DAAwD;AACxD,uDAA6C;AAC7C,iEAA8D;AAG9D,MAAsB,aAAc,SAAQ,sBAAM;aACjC,0BAAqB,GAAG,IAAI,GAAG,EAAyB,AAAnC,CAAoC;aACzD,oBAAe,GAAG,IAAI,GAAG,EAAyB,AAAnC,CAAoC;IAElE,MAAM,CAAC,eAAe,CAAC,QAAgB;QACrC,OAAO,aAAa,CAAC,qBAAqB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAC3D,CAAC;IACD,MAAM,CAAC,qBAAqB,CAAC,QAAgB;QAC3C,IAAI,WAAW,GAAG,aAAa,CAAC,qBAAqB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACpE,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CAAC,+BAA+B,QAAQ,YAAY,CAAC,CAAC;QACvE,CAAC;QACD,OAAO,WAAW,CAAC;IACrB,CAAC;IAED,MAAM,CAAC,WAAW,CAAC,EAAU;QAC3B,OAAO,aAAa,CAAC,eAAe,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAC/C,CAAC;IACD,MAAM,CAAC,iBAAiB,CAAC,EAAU;QACjC,IAAI,aAAa,GAAG,aAAa,CAAC,eAAe,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAC1D,IAAI,CAAC,aAAa,EAAE,CAAC;YACnB,MAAM,IAAI,KAAK,CAAC,yBAAyB,EAAE,YAAY,CAAC,CAAC;QAC3D,CAAC;QACD,OAAO,aAAa,CAAC;IACvB,CAAC;IACD,MAAM,CAAC,kBAAkB;QACvB,OAAO,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,eAAe,CAAC,MAAM,EAAE,CAAC,CAAC;IAC5D,CAAC;IAID,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;IAED,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;IAED,IAAI,UAAU;QACZ,OAAO,IAAI,CAAC,WAAW,CAAC;IAC1B,CAAC;IAmBD,YAAY,YAA0B,EAAE,uBAAgD,EAAE,IAA0B;QAClH,KAAK,EAAE,CAAC;QAhCD,gBAAW,GAAG,IAAI,oBAAM,EAAqB,CAAC;QAmBpC,SAAI,GAAyB,SAAS,CAAC;QAEhD,mBAAc,GAAG,GAAS,EAAE;YACpC,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACxC,aAAa,CAAC,qBAAqB,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACzD,aAAa,CAAC,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAChD,CAAC,CAAC;QAEM,UAAK,GAAG,CAAC,CAAC;QACV,UAAK,GAAG,CAAC,CAAC;QACV,gBAAW,GAAsB,EAAE,CAAC;QAI1C,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;QACjC,IAAI,QAAQ,GAAG,YAAY,CAAC,gBAAgB,CAAC,WAAW,CAAC,uBAAuB,CAAC,eAAe,CAAC,YAAY,CAAC,CAAC;QAC/G,IAAI,kBAAkB,GAAG,YAAY,CAAC,gBAAgB,CAAC,qBAAqB,CAC1E,uBAAuB,CAAC,eAAe,CAAC,YAAY,CACrD,CAAC;QACF,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QAEjB,IAAI,CAAC,gBAAgB,GAAG,uBAAuB,CAAC,eAAe,CAAC,KAAK,CAAC;QACtE,IAAI,CAAC,oBAAoB,GAAG,uBAAuB,CAAC,oBAAoB,CAAC;QAEzE,IAAI,CAAC,IAAI,GAAG,4BAAY,CAAC,UAAU,CAAC,uBAAuB,EAAE,QAAQ,EAAE,kBAAkB,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QACtG,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;QACjC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;QAE5B,IAAI,CAAC,IAAI,CAAC,QAAQ,GAAG,wBAAU,CAAC,WAAW,CAAC,uBAAuB,CAAC,QAAQ,CAAC,CAAC;QAC9E,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,uBAAuB,CAAC,QAAQ,CAAC;QAEnD,IAAI,eAAe,GAAG,YAAY,CAAC,OAAO,CACxC,IAAI,CAAC,IAAI,EACT,uBAAuB,CAAC,eAAe,EACvC,uBAAuB,CAAC,eAAe,CAAC,KAAK,EAC7C,uBAAuB,CAAC,oBAAoB,CAC7C,CAAC;QAEF,IAAI,CAAC,eAAe,EAAE,CAAC;YACrB,MAAM,IAAI,KAAK,CAAC,sDAAsD,CAAC,CAAC;QAC1E,CAAC;QAED,aAAa,CAAC,qBAAqB,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;QAC5D,aAAa,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;QAEjD,IAAI,CAAC,OAAO,GAAG;YACb,yBAAW,CAAC,qBAAqB,CAAC,GAAG,EAAE;gBACrC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;gBACtB,IAAI,CAAC,iBAAiB,EAAE,CAAC;gBACzB,IAAI,CAAC,aAAa,EAAE,CAAC;gBACrB,IAAI,CAAC,cAAc,EAAE,CAAC;gBACtB,IAAI,CAAC,YAAY,EAAE,CAAC;YACtB,CAAC,CAAC,CAAC;QACL,CAAC,CAAC;IACJ,CAAC;IAID,OAAO,KAAU,CAAC;IAElB,8BAA8B;IACpB,mBAAmB,CAAC,gBAAmC;QAC/D,IAAI,CAAC,WAAW,GAAG,gBAAgB,CAAC;QACpC,IAAI,gBAAgB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAChC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;QAC7C,CAAC;IACH,CAAC;;AAlHH,sCAmHC"}
|
|
@@ -2,7 +2,6 @@
|
|
|
2
2
|
import { Rectangle, Vec2 } from 'helpers-lib';
|
|
3
3
|
export declare class P2JSHelper {
|
|
4
4
|
static aabbToBoundingBox(aabb: p2.AABB): Rectangle;
|
|
5
|
-
static isEqualBoundingBox(a: Rectangle, b: Rectangle): boolean;
|
|
6
5
|
static arrayToVec2(array: [number, number]): Vec2;
|
|
7
6
|
static vec2ToArray(vec2: Vec2): [number, number];
|
|
8
7
|
}
|
|
@@ -14,12 +14,6 @@ class P2JSHelper {
|
|
|
14
14
|
}
|
|
15
15
|
};
|
|
16
16
|
}
|
|
17
|
-
static isEqualBoundingBox(a, b) {
|
|
18
|
-
return (a.topLeft.x === b.topLeft.x &&
|
|
19
|
-
a.topLeft.y === b.topLeft.y &&
|
|
20
|
-
a.bottomRight.x === b.bottomRight.x &&
|
|
21
|
-
a.bottomRight.y === b.bottomRight.y);
|
|
22
|
-
}
|
|
23
17
|
static arrayToVec2(array) {
|
|
24
18
|
return { x: array[0], y: array[1] };
|
|
25
19
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"p2js.helper.js","sourceRoot":"","sources":["../../../src/physics/helpers/p2js.helper.ts"],"names":[],"mappings":";;;AAEA,MAAa,UAAU;IACrB,MAAM,CAAC,iBAAiB,CAAC,IAAa;QACpC,OAAO;YACL,OAAO,EAAE;gBACP,CAAC,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;gBACrB,CAAC,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;aACtB;YACD,WAAW,EAAE;gBACX,CAAC,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;gBACrB,CAAC,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;aACtB;SACF,CAAC;IACJ,CAAC;IAED,MAAM,CAAC,
|
|
1
|
+
{"version":3,"file":"p2js.helper.js","sourceRoot":"","sources":["../../../src/physics/helpers/p2js.helper.ts"],"names":[],"mappings":";;;AAEA,MAAa,UAAU;IACrB,MAAM,CAAC,iBAAiB,CAAC,IAAa;QACpC,OAAO;YACL,OAAO,EAAE;gBACP,CAAC,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;gBACrB,CAAC,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;aACtB;YACD,WAAW,EAAE;gBACX,CAAC,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;gBACrB,CAAC,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;aACtB;SACF,CAAC;IACJ,CAAC;IAED,MAAM,CAAC,WAAW,CAAC,KAAuB;QACxC,OAAO,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;IACtC,CAAC;IAED,MAAM,CAAC,WAAW,CAAC,IAAU;QAC3B,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;IAC1B,CAAC;CACF;AArBD,gCAqBC"}
|
package/dist/physics/index.d.ts
CHANGED
|
@@ -4,6 +4,6 @@ export { MovablePhysicsEntity } from './entitity-types/movable-physics-entity';
|
|
|
4
4
|
export { ImmovablePhysicsEntity } from './entitity-types/immovable-physics-entity';
|
|
5
5
|
export { PhysicsEntity } from './entitity-types/physics-entity';
|
|
6
6
|
export { PhysicsBodyGroup } from './sub-elements/physics-body-groups';
|
|
7
|
-
export { PhysicsCollision } from './sub-elements/physics-collision';
|
|
7
|
+
export { PhysicsCollision } from './sub-elements/collisions/physics-collision';
|
|
8
8
|
export { PhysicsMaterials } from './sub-elements/physics-materials';
|
|
9
9
|
export * from './interfaces';
|
package/dist/physics/index.js
CHANGED
|
@@ -27,7 +27,7 @@ var physics_entity_1 = require("./entitity-types/physics-entity");
|
|
|
27
27
|
Object.defineProperty(exports, "PhysicsEntity", { enumerable: true, get: function () { return physics_entity_1.PhysicsEntity; } });
|
|
28
28
|
var physics_body_groups_1 = require("./sub-elements/physics-body-groups");
|
|
29
29
|
Object.defineProperty(exports, "PhysicsBodyGroup", { enumerable: true, get: function () { return physics_body_groups_1.PhysicsBodyGroup; } });
|
|
30
|
-
var physics_collision_1 = require("./sub-elements/physics-collision");
|
|
30
|
+
var physics_collision_1 = require("./sub-elements/collisions/physics-collision");
|
|
31
31
|
Object.defineProperty(exports, "PhysicsCollision", { enumerable: true, get: function () { return physics_collision_1.PhysicsCollision; } });
|
|
32
32
|
var physics_materials_1 = require("./sub-elements/physics-materials");
|
|
33
33
|
Object.defineProperty(exports, "PhysicsMaterials", { enumerable: true, get: function () { return physics_materials_1.PhysicsMaterials; } });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/physics/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,iDAA+C;AAAtC,6GAAA,YAAY,OAAA;AACrB,kEAAgE;AAAvD,+GAAA,aAAa,OAAA;AACtB,kFAA+E;AAAtE,8HAAA,oBAAoB,OAAA;AAC7B,sFAAmF;AAA1E,kIAAA,sBAAsB,OAAA;AAC/B,kEAAgE;AAAvD,+GAAA,aAAa,OAAA;AACtB,0EAAsE;AAA7D,uHAAA,gBAAgB,OAAA;AACzB,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/physics/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,iDAA+C;AAAtC,6GAAA,YAAY,OAAA;AACrB,kEAAgE;AAAvD,+GAAA,aAAa,OAAA;AACtB,kFAA+E;AAAtE,8HAAA,oBAAoB,OAAA;AAC7B,sFAAmF;AAA1E,kIAAA,sBAAsB,OAAA;AAC/B,kEAAgE;AAAvD,+GAAA,aAAa,OAAA;AACtB,0EAAsE;AAA7D,uHAAA,gBAAgB,OAAA;AACzB,iFAA+E;AAAtE,qHAAA,gBAAgB,OAAA;AACzB,sEAAoE;AAA3D,qHAAA,gBAAgB,OAAA;AACzB,+CAA6B"}
|
|
@@ -16,8 +16,8 @@ export interface MaterialDefinition {
|
|
|
16
16
|
readonly angularDrag: number;
|
|
17
17
|
}
|
|
18
18
|
export interface PhysicsShape {
|
|
19
|
-
area: number;
|
|
20
|
-
setBody(body: p2.Body)
|
|
19
|
+
readonly area: number;
|
|
20
|
+
readonly setBody: (body: p2.Body) => void;
|
|
21
21
|
}
|
|
22
22
|
export interface ImageProperties {
|
|
23
23
|
readonly size: Vec2;
|
|
@@ -30,22 +30,24 @@ export interface BorderProperties {
|
|
|
30
30
|
readonly stiffness: number;
|
|
31
31
|
}
|
|
32
32
|
export interface PhysicsBodyDTO {
|
|
33
|
-
entityId: string;
|
|
34
|
-
entityClassName: string;
|
|
35
|
-
position: Vec2;
|
|
36
|
-
rotation: number;
|
|
37
|
-
velocity: Vec2;
|
|
38
|
-
|
|
33
|
+
readonly entityId: string;
|
|
34
|
+
readonly entityClassName: string;
|
|
35
|
+
readonly position: Vec2;
|
|
36
|
+
readonly rotation: number;
|
|
37
|
+
readonly velocity: Vec2;
|
|
38
|
+
readonly rotationalSpeed: number;
|
|
39
39
|
}
|
|
40
40
|
export interface CollisionDetails {
|
|
41
|
-
body: PhysicsBodyDTO;
|
|
42
|
-
getPositionReletiveToObject: () => Vec2;
|
|
43
|
-
position: Vec2;
|
|
44
|
-
|
|
41
|
+
readonly body: PhysicsBodyDTO;
|
|
42
|
+
readonly getPositionReletiveToObject: () => Vec2;
|
|
43
|
+
readonly position: Vec2;
|
|
44
|
+
readonly mass: number;
|
|
45
|
+
readonly area: number;
|
|
46
|
+
readonly normal: Vec2;
|
|
45
47
|
}
|
|
46
48
|
export interface CollisionReport {
|
|
47
|
-
self: CollisionDetails;
|
|
48
|
-
target: CollisionDetails;
|
|
49
|
+
readonly self: CollisionDetails;
|
|
50
|
+
readonly target: CollisionDetails;
|
|
49
51
|
}
|
|
50
52
|
export declare enum PhysicsShapeType {
|
|
51
53
|
point = "point",
|
|
@@ -53,23 +55,24 @@ export declare enum PhysicsShapeType {
|
|
|
53
55
|
rectangle = "rectangle"
|
|
54
56
|
}
|
|
55
57
|
export interface RectangleShapeData {
|
|
56
|
-
size: Vec2;
|
|
58
|
+
readonly size: Vec2;
|
|
57
59
|
}
|
|
58
60
|
export interface PolygonShapeData {
|
|
59
|
-
boundingShapeVertices: Vec2[][] | ReadonlyArray<ReadonlyArray<Vec2>>;
|
|
60
|
-
size: Vec2;
|
|
61
|
-
anchor: Vec2;
|
|
62
|
-
scale: number;
|
|
61
|
+
readonly boundingShapeVertices: Vec2[][] | ReadonlyArray<ReadonlyArray<Vec2>>;
|
|
62
|
+
readonly size: Vec2;
|
|
63
|
+
readonly anchor: Vec2;
|
|
64
|
+
readonly scale: number;
|
|
63
65
|
}
|
|
64
66
|
export interface ShapeDefinition {
|
|
65
|
-
materialName: string;
|
|
66
|
-
group: PhysicsBodyGroup;
|
|
67
|
-
shapeType: PhysicsShapeType;
|
|
68
|
-
shapeData: PolygonShapeData | RectangleShapeData | undefined;
|
|
67
|
+
readonly materialName: string;
|
|
68
|
+
readonly group: PhysicsBodyGroup;
|
|
69
|
+
readonly shapeType: PhysicsShapeType;
|
|
70
|
+
readonly shapeData: PolygonShapeData | RectangleShapeData | undefined;
|
|
69
71
|
}
|
|
70
72
|
export interface PhysicsEntityDefinition {
|
|
71
|
-
shapeDefinition: ShapeDefinition;
|
|
72
|
-
position: Vec2;
|
|
73
|
-
rotation: number;
|
|
74
|
-
addInEmptySpace: boolean;
|
|
73
|
+
readonly shapeDefinition: ShapeDefinition;
|
|
74
|
+
readonly position: Vec2;
|
|
75
|
+
readonly rotation: number;
|
|
76
|
+
readonly addInEmptySpace: boolean;
|
|
77
|
+
readonly includeOnPathfinding: boolean;
|
|
75
78
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"interfaces.js","sourceRoot":"","sources":["../../src/physics/interfaces.ts"],"names":[],"mappings":";;;AAKa,QAAA,kBAAkB,GAAG,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"interfaces.js","sourceRoot":"","sources":["../../src/physics/interfaces.ts"],"names":[],"mappings":";;;AAKa,QAAA,kBAAkB,GAAG,QAAQ,CAAC;AAyD3C,IAAY,gBAIX;AAJD,WAAY,gBAAgB;IAC1B,mCAAe,CAAA;IACf,uCAAmB,CAAA;IACnB,2CAAuB,CAAA;AACzB,CAAC,EAJW,gBAAgB,gCAAhB,gBAAgB,QAI3B"}
|
|
@@ -2,10 +2,12 @@ import { Vec2 } from 'helpers-lib';
|
|
|
2
2
|
import { Action } from 'actions-lib';
|
|
3
3
|
import p2 from 'p2';
|
|
4
4
|
import { PhysicsMaterials } from './sub-elements/physics-materials';
|
|
5
|
-
import { OnCollisionCallbackFunciton } from './sub-elements/physics-collision';
|
|
6
5
|
import { MaterialContactDefinition, MaterialDefinition, PhysicsEntityDefinition } from './interfaces';
|
|
7
|
-
import { ImmovablePhysicsEntity } from './entitity-types/immovable-physics-entity';
|
|
8
6
|
import { Entity } from '../game-entities';
|
|
7
|
+
import { ImmovablePhysicsEntity } from './entitity-types/immovable-physics-entity';
|
|
8
|
+
import { PathFinderResult } from '../utilities/libraries/grid-algorithms/path-finder/path-finder';
|
|
9
|
+
import { PhysicsBodyGroup } from './sub-elements/physics-body-groups';
|
|
10
|
+
import { Grid } from '../utilities/libraries/data-structures/grid/grid';
|
|
9
11
|
export declare class PhysicsWorld extends Entity {
|
|
10
12
|
readonly mapSize: Vec2;
|
|
11
13
|
readonly physicsMaterials: PhysicsMaterials;
|
|
@@ -15,6 +17,8 @@ export declare class PhysicsWorld extends Entity {
|
|
|
15
17
|
}>;
|
|
16
18
|
private p2World;
|
|
17
19
|
private physicsCollision;
|
|
20
|
+
private physicsAvailabilityGrid;
|
|
21
|
+
private physicsAvailableSpaces;
|
|
18
22
|
constructor(mapSize: Vec2, borderProperties: {
|
|
19
23
|
friction: number;
|
|
20
24
|
bounciness: number;
|
|
@@ -22,12 +26,18 @@ export declare class PhysicsWorld extends Entity {
|
|
|
22
26
|
}, materialDefinitions: ReadonlyArray<MaterialDefinition>, materialContactDefinitions: ReadonlyArray<MaterialContactDefinition>);
|
|
23
27
|
step(time: number, delta: number): void;
|
|
24
28
|
destroy(): void;
|
|
25
|
-
addBody(body: p2.Body,
|
|
26
|
-
addBodyInEmptySpace(body: p2.Body, onCollisionCallback: OnCollisionCallbackFunciton): boolean;
|
|
29
|
+
addBody(body: p2.Body, addInEmptySpace: boolean, physicsBodyGroup: PhysicsBodyGroup, includeOnPathfinding: boolean): boolean;
|
|
27
30
|
removeBody(body: p2.Body): void;
|
|
28
31
|
isCollidingWithAnything(p2Body: p2.Body): boolean;
|
|
29
|
-
|
|
30
|
-
|
|
32
|
+
getAvailabilityGrid(physicsBodyGroup: PhysicsBodyGroup): Grid<{
|
|
33
|
+
position: Vec2;
|
|
34
|
+
availability: boolean;
|
|
35
|
+
}>;
|
|
36
|
+
findPath(startingPosition: Vec2, target: Vec2 | string, options?: {
|
|
37
|
+
includeDiagonals?: boolean;
|
|
38
|
+
collidableWithGroup?: PhysicsBodyGroup;
|
|
39
|
+
}): PathFinderResult;
|
|
40
|
+
findPathDirection(startingPosition: Vec2, target: Vec2 | string, collidableWithGroup: PhysicsBodyGroup): number | undefined;
|
|
31
41
|
}
|
|
32
42
|
export declare class BorderEntity extends ImmovablePhysicsEntity {
|
|
33
43
|
constructor(physicsWorld: PhysicsWorld, physicsEntityDefinition: PhysicsEntityDefinition);
|