@daneren2005/shared-memory-physics 1.2.1 → 1.2.2
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/README.md +18 -9
- package/dist/components/registry.d.ts +1 -0
- package/dist/index.d.ts +2 -1
- package/dist/index.js +238 -180
- package/dist/index.js.map +1 -1
- package/dist/math/shapes.d.ts +8 -3
- package/dist/systems/bounce.d.ts +10 -3
- package/dist/systems/collision.d.ts +4 -0
- package/dist/systems/physics-update.d.ts +2 -2
- package/package.json +3 -2
package/dist/math/shapes.d.ts
CHANGED
|
@@ -1,12 +1,17 @@
|
|
|
1
|
+
export interface Vector {
|
|
2
|
+
x: number;
|
|
3
|
+
y: number;
|
|
4
|
+
}
|
|
1
5
|
export declare function capsuleHalfLength(width: number, height: number): number;
|
|
2
6
|
export declare function shapeRadius(shape: number, width: number, height: number): number;
|
|
3
7
|
export declare function shapeIsEmpty(shape: number, width: number, height: number): boolean;
|
|
4
8
|
export declare function shapeHalfWidth(shape: number, width: number, height: number, angle: number): number;
|
|
5
9
|
export declare function shapeHalfHeight(shape: number, width: number, height: number, angle: number): number;
|
|
6
10
|
export declare function shapesOverlap(aShape: number, aX: number, aY: number, aWidth: number, aHeight: number, aAngle: number, bShape: number, bX: number, bY: number, bWidth: number, bHeight: number, bAngle: number): boolean;
|
|
11
|
+
export declare function contactNormal(aShape: number, aX: number, aY: number, aWidth: number, aHeight: number, aAngle: number, bShape: number, bX: number, bY: number, bWidth: number, bHeight: number, bAngle: number, out: Vector): boolean;
|
|
7
12
|
export declare function boundsHalfWidth(width: number, height: number, angle: number): number;
|
|
8
13
|
export declare function boundsHalfHeight(width: number, height: number, angle: number): number;
|
|
9
14
|
export declare function orientedBoxesOverlap(aX: number, aY: number, aWidth: number, aHeight: number, aAngle: number, bX: number, bY: number, bWidth: number, bHeight: number, bAngle: number): boolean;
|
|
10
|
-
export declare function segmentSegmentDistanceSquared(aX1: number, aY1: number, aX2: number, aY2: number, bX1: number, bY1: number, bX2: number, bY2: number): number;
|
|
11
|
-
export declare function segmentBoxDistanceSquared(x1: number, y1: number, x2: number, y2: number, boxX: number, boxY: number, boxWidth: number, boxHeight: number, boxAngle: number): number;
|
|
12
|
-
export declare function pointSegmentDistanceSquared(x: number, y: number, x1: number, y1: number, x2: number, y2: number): number;
|
|
15
|
+
export declare function segmentSegmentDistanceSquared(aX1: number, aY1: number, aX2: number, aY2: number, bX1: number, bY1: number, bX2: number, bY2: number, out?: Vector): number;
|
|
16
|
+
export declare function segmentBoxDistanceSquared(x1: number, y1: number, x2: number, y2: number, boxX: number, boxY: number, boxWidth: number, boxHeight: number, boxAngle: number, out?: Vector): number;
|
|
17
|
+
export declare function pointSegmentDistanceSquared(x: number, y: number, x1: number, y1: number, x2: number, y2: number, out?: Vector): number;
|
package/dist/systems/bounce.d.ts
CHANGED
|
@@ -1,4 +1,11 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
interface BounceEntity {
|
|
2
|
+
components: {
|
|
3
|
+
transform: Float32Array;
|
|
4
|
+
velocity?: Float32Array;
|
|
5
|
+
bounciness?: Float32Array;
|
|
6
|
+
body?: Uint32Array;
|
|
7
|
+
};
|
|
8
|
+
}
|
|
9
|
+
export declare function bouncePair(self: BounceEntity, other: BounceEntity): void;
|
|
10
|
+
export declare function bounce(self: BounceEntity, other: BounceEntity): void;
|
|
4
11
|
export default bounce;
|
|
@@ -4,6 +4,7 @@ export declare const COLLIDABLE_QUERY = "collidable";
|
|
|
4
4
|
export type CollisionComponents<T extends PhysicsUpdateComponents> = Partial<T> & {
|
|
5
5
|
transform: Float32Array;
|
|
6
6
|
body: Uint32Array;
|
|
7
|
+
entity?: Uint32Array;
|
|
7
8
|
};
|
|
8
9
|
export interface MovingEntity<T extends PhysicsUpdateComponents> {
|
|
9
10
|
entityId: number;
|
|
@@ -25,10 +26,13 @@ export interface MoveResult<T extends PhysicsUpdateComponents> {
|
|
|
25
26
|
}
|
|
26
27
|
export default class CollisionBroadphase<T extends PhysicsUpdateComponents> {
|
|
27
28
|
private buckets;
|
|
29
|
+
readonly hasBounciness: boolean;
|
|
30
|
+
private resolved;
|
|
28
31
|
constructor(entities: Array<{
|
|
29
32
|
entityId: number;
|
|
30
33
|
components: EntityUpdateComponents;
|
|
31
34
|
}>, seconds: number);
|
|
35
|
+
claimContact(a: number, b: number): boolean;
|
|
32
36
|
forEachOverlapping(self: MovingEntity<T>, handle: (other: CollisionEntity<T>) => void): void;
|
|
33
37
|
sweep(self: MovingEntity<T>, moveX: number, moveY: number): SweepResult<T>;
|
|
34
38
|
resolveMove(self: MovingEntity<T>, moveX: number, moveY: number, slide: boolean): MoveResult<T>;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { ComponentMap, ComponentSystemWorld, EntityUpdateComponents, EntityUpdateFunction } from '@daneren2005/shared-memory-ecs';
|
|
1
|
+
import type { ComponentMap, ComponentSystemCallbacks, ComponentSystemWorld, EntityQueryComponents, EntityUpdateComponents, EntityUpdateFunction } from '@daneren2005/shared-memory-ecs';
|
|
2
2
|
import type { PhysicsComponents, PhysicsUpdateComponents } from '../components/registry';
|
|
3
3
|
import { type CollisionFunction } from './collision';
|
|
4
4
|
export interface PhysicsWorld extends ComponentSystemWorld {
|
|
@@ -18,5 +18,5 @@ export type PhysicsUpdateFunction<C extends ComponentMap, T extends PhysicsUpdat
|
|
|
18
18
|
physics: PhysicsUpdateMetadata<C>;
|
|
19
19
|
};
|
|
20
20
|
export declare function createPhysicsUpdate<C extends ComponentMap & PhysicsComponents = PhysicsComponents, T extends PhysicsUpdateComponents & EntityUpdateComponents<C> = PhysicsUpdateComponents & EntityUpdateComponents<C>, W extends PhysicsWorld = PhysicsWorld>(options?: PhysicsUpdateOptions<C, T, W>): PhysicsUpdateFunction<C, T, W>;
|
|
21
|
-
export declare
|
|
21
|
+
export declare function physicsUpdate<C extends ComponentMap & PhysicsComponents = PhysicsComponents, T extends PhysicsUpdateComponents & EntityUpdateComponents<C> = PhysicsUpdateComponents & EntityUpdateComponents<C>, W extends PhysicsWorld = PhysicsWorld>(world: W, entityId: number, components: T, queries: EntityQueryComponents<C>, callbacks: ComponentSystemCallbacks<C>): void;
|
|
22
22
|
export default physicsUpdate;
|
package/package.json
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"name": "@daneren2005/shared-memory-physics",
|
|
3
3
|
"description": "2D physics components and systems built on the shared-memory ECS.",
|
|
4
4
|
"author": "Scott Jackson",
|
|
5
|
-
"version": "1.2.
|
|
5
|
+
"version": "1.2.2",
|
|
6
6
|
"type": "module",
|
|
7
7
|
"sideEffects": false,
|
|
8
8
|
"repository": {
|
|
@@ -30,6 +30,7 @@
|
|
|
30
30
|
"start": "vite --config examples/vite.config.ts",
|
|
31
31
|
"build": "vite build && tsc -p tsconfig.build.json --emitDeclarationOnly",
|
|
32
32
|
"build:examples": "vite build --config examples/vite.config.ts",
|
|
33
|
+
"build:game": "npm run build && node scripts/build-game.mjs",
|
|
33
34
|
"preview:examples": "vite preview --config examples/vite.config.ts",
|
|
34
35
|
"type-check": "tsc --noEmit",
|
|
35
36
|
"lint": "cross-env NODE_ENV=production oxlint .",
|
|
@@ -39,7 +40,7 @@
|
|
|
39
40
|
"prepare": "husky"
|
|
40
41
|
},
|
|
41
42
|
"devDependencies": {
|
|
42
|
-
"@daneren2005/shared-memory-ecs": "^1.
|
|
43
|
+
"@daneren2005/shared-memory-ecs": "^1.3.0",
|
|
43
44
|
"@daneren2005/shared-memory-objects": "^1.1.0",
|
|
44
45
|
"@semantic-release/git": "^10.0.1",
|
|
45
46
|
"@stylistic/eslint-plugin": "^5.10.0",
|