toaimin-indie-engine 1.0.0
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 +55 -0
- package/cli/bin.cjs +99 -0
- package/dist/audio/AudioBus.d.ts +30 -0
- package/dist/audio/AudioBus.d.ts.map +1 -0
- package/dist/audio/AudioMock.d.ts +112 -0
- package/dist/audio/AudioMock.d.ts.map +1 -0
- package/dist/audio/ProceduralAudio.d.ts +48 -0
- package/dist/audio/ProceduralAudio.d.ts.map +1 -0
- package/dist/audio/SoundManager.d.ts +73 -0
- package/dist/audio/SoundManager.d.ts.map +1 -0
- package/dist/audio/VoicePool.d.ts +26 -0
- package/dist/audio/VoicePool.d.ts.map +1 -0
- package/dist/audio/index.d.ts +7 -0
- package/dist/audio/index.d.ts.map +1 -0
- package/dist/audio/types.d.ts +87 -0
- package/dist/audio/types.d.ts.map +1 -0
- package/dist/core/EventEmitter.d.ts +64 -0
- package/dist/core/EventEmitter.d.ts.map +1 -0
- package/dist/core/Game.d.ts +248 -0
- package/dist/core/Game.d.ts.map +1 -0
- package/dist/core/GameLoop.d.ts +128 -0
- package/dist/core/GameLoop.d.ts.map +1 -0
- package/dist/core/Time.d.ts +73 -0
- package/dist/core/Time.d.ts.map +1 -0
- package/dist/core/index.d.ts +5 -0
- package/dist/core/index.d.ts.map +1 -0
- package/dist/entity/Component.d.ts +31 -0
- package/dist/entity/Component.d.ts.map +1 -0
- package/dist/entity/Entity.d.ts +61 -0
- package/dist/entity/Entity.d.ts.map +1 -0
- package/dist/entity/EntityManager.d.ts +46 -0
- package/dist/entity/EntityManager.d.ts.map +1 -0
- package/dist/entity/components/ColliderComponent.d.ts +47 -0
- package/dist/entity/components/ColliderComponent.d.ts.map +1 -0
- package/dist/entity/components/RigidBodyComponent.d.ts +38 -0
- package/dist/entity/components/RigidBodyComponent.d.ts.map +1 -0
- package/dist/entity/components/ScriptComponent.d.ts +32 -0
- package/dist/entity/components/ScriptComponent.d.ts.map +1 -0
- package/dist/entity/components/ShapeComponent.d.ts +50 -0
- package/dist/entity/components/ShapeComponent.d.ts.map +1 -0
- package/dist/entity/components/SpriteComponent.d.ts +31 -0
- package/dist/entity/components/SpriteComponent.d.ts.map +1 -0
- package/dist/entity/components/index.d.ts +6 -0
- package/dist/entity/components/index.d.ts.map +1 -0
- package/dist/entity/index.d.ts +5 -0
- package/dist/entity/index.d.ts.map +1 -0
- package/dist/index.cjs +4 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.ts +15 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +6326 -0
- package/dist/index.js.map +1 -0
- package/dist/input/ActionMap.d.ts +91 -0
- package/dist/input/ActionMap.d.ts.map +1 -0
- package/dist/input/InputManager.d.ts +102 -0
- package/dist/input/InputManager.d.ts.map +1 -0
- package/dist/input/Pointer.d.ts +115 -0
- package/dist/input/Pointer.d.ts.map +1 -0
- package/dist/input/VirtualJoystick.d.ts +79 -0
- package/dist/input/VirtualJoystick.d.ts.map +1 -0
- package/dist/input/index.d.ts +5 -0
- package/dist/input/index.d.ts.map +1 -0
- package/dist/math/Circle.d.ts +39 -0
- package/dist/math/Circle.d.ts.map +1 -0
- package/dist/math/Color.d.ts +58 -0
- package/dist/math/Color.d.ts.map +1 -0
- package/dist/math/MathUtils.d.ts +82 -0
- package/dist/math/MathUtils.d.ts.map +1 -0
- package/dist/math/Matrix2D.d.ts +97 -0
- package/dist/math/Matrix2D.d.ts.map +1 -0
- package/dist/math/Rect.d.ts +54 -0
- package/dist/math/Rect.d.ts.map +1 -0
- package/dist/math/Transform2D.d.ts +47 -0
- package/dist/math/Transform2D.d.ts.map +1 -0
- package/dist/math/Vector2.d.ts +89 -0
- package/dist/math/Vector2.d.ts.map +1 -0
- package/dist/math/index.d.ts +8 -0
- package/dist/math/index.d.ts.map +1 -0
- package/dist/physics/BoxCollider2D.d.ts +38 -0
- package/dist/physics/BoxCollider2D.d.ts.map +1 -0
- package/dist/physics/CircleCollider2D.d.ts +27 -0
- package/dist/physics/CircleCollider2D.d.ts.map +1 -0
- package/dist/physics/Collider2D.d.ts +79 -0
- package/dist/physics/Collider2D.d.ts.map +1 -0
- package/dist/physics/CollisionFSM.d.ts +84 -0
- package/dist/physics/CollisionFSM.d.ts.map +1 -0
- package/dist/physics/ContactSolver.d.ts +58 -0
- package/dist/physics/ContactSolver.d.ts.map +1 -0
- package/dist/physics/Narrowphase.d.ts +25 -0
- package/dist/physics/Narrowphase.d.ts.map +1 -0
- package/dist/physics/PhysicsWorld2D.d.ts +75 -0
- package/dist/physics/PhysicsWorld2D.d.ts.map +1 -0
- package/dist/physics/Raycast.d.ts +38 -0
- package/dist/physics/Raycast.d.ts.map +1 -0
- package/dist/physics/RigidBody2D.d.ts +118 -0
- package/dist/physics/RigidBody2D.d.ts.map +1 -0
- package/dist/physics/SpatialGrid.d.ts +78 -0
- package/dist/physics/SpatialGrid.d.ts.map +1 -0
- package/dist/physics/index.d.ts +14 -0
- package/dist/physics/index.d.ts.map +1 -0
- package/dist/rendering/Animation.d.ts +62 -0
- package/dist/rendering/Animation.d.ts.map +1 -0
- package/dist/rendering/AssetLoader.d.ts +35 -0
- package/dist/rendering/AssetLoader.d.ts.map +1 -0
- package/dist/rendering/Camera2D.d.ts +109 -0
- package/dist/rendering/Camera2D.d.ts.map +1 -0
- package/dist/rendering/CanvasContext.d.ts +80 -0
- package/dist/rendering/CanvasContext.d.ts.map +1 -0
- package/dist/rendering/CanvasMock.d.ts +163 -0
- package/dist/rendering/CanvasMock.d.ts.map +1 -0
- package/dist/rendering/ParticleSystem.d.ts +103 -0
- package/dist/rendering/ParticleSystem.d.ts.map +1 -0
- package/dist/rendering/Renderer.d.ts +98 -0
- package/dist/rendering/Renderer.d.ts.map +1 -0
- package/dist/rendering/Shapes.d.ts +24 -0
- package/dist/rendering/Shapes.d.ts.map +1 -0
- package/dist/rendering/Sprite.d.ts +74 -0
- package/dist/rendering/Sprite.d.ts.map +1 -0
- package/dist/rendering/SpriteSheet.d.ts +22 -0
- package/dist/rendering/SpriteSheet.d.ts.map +1 -0
- package/dist/rendering/index.d.ts +11 -0
- package/dist/rendering/index.d.ts.map +1 -0
- package/dist/scene/Blackboard.d.ts +81 -0
- package/dist/scene/Blackboard.d.ts.map +1 -0
- package/dist/scene/Scene.d.ts +160 -0
- package/dist/scene/Scene.d.ts.map +1 -0
- package/dist/scene/SceneManager.d.ts +142 -0
- package/dist/scene/SceneManager.d.ts.map +1 -0
- package/dist/scene/SceneTransition.d.ts +118 -0
- package/dist/scene/SceneTransition.d.ts.map +1 -0
- package/dist/scene/index.d.ts +5 -0
- package/dist/scene/index.d.ts.map +1 -0
- package/dist/ui/UIAnchor.d.ts +31 -0
- package/dist/ui/UIAnchor.d.ts.map +1 -0
- package/dist/ui/UIButton.d.ts +48 -0
- package/dist/ui/UIButton.d.ts.map +1 -0
- package/dist/ui/UIElement.d.ts +108 -0
- package/dist/ui/UIElement.d.ts.map +1 -0
- package/dist/ui/UILabel.d.ts +54 -0
- package/dist/ui/UILabel.d.ts.map +1 -0
- package/dist/ui/UIManager.d.ts +41 -0
- package/dist/ui/UIManager.d.ts.map +1 -0
- package/dist/ui/UIPanel.d.ts +36 -0
- package/dist/ui/UIPanel.d.ts.map +1 -0
- package/dist/ui/UIProgressBar.d.ts +47 -0
- package/dist/ui/UIProgressBar.d.ts.map +1 -0
- package/dist/ui/index.d.ts +8 -0
- package/dist/ui/index.d.ts.map +1 -0
- package/package.json +47 -0
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { Collider2D } from './Collider2D';
|
|
2
|
+
import { CircleCollider2D } from './CircleCollider2D';
|
|
3
|
+
import { BoxCollider2D } from './BoxCollider2D';
|
|
4
|
+
import { ContactManifold } from './ContactSolver';
|
|
5
|
+
import { Ray2D, RaycastHit2D } from './Raycast';
|
|
6
|
+
export declare class Narrowphase {
|
|
7
|
+
private static readonly _vertsA;
|
|
8
|
+
private static readonly _vertsB;
|
|
9
|
+
private static readonly _axesA;
|
|
10
|
+
private static readonly _axesB;
|
|
11
|
+
static test(colliderA: Collider2D, colliderB: Collider2D): ContactManifold | null;
|
|
12
|
+
static collide(colliderA: Collider2D, colliderB: Collider2D): ContactManifold | null;
|
|
13
|
+
static testCircleCircle(circleA: CircleCollider2D, circleB: CircleCollider2D): ContactManifold | null;
|
|
14
|
+
static collideCircleVsCircle(circleA: CircleCollider2D, circleB: CircleCollider2D): ContactManifold | null;
|
|
15
|
+
static testCircleBox(circle: CircleCollider2D, box: BoxCollider2D): ContactManifold | null;
|
|
16
|
+
static collideCircleVsBox(circle: CircleCollider2D, box: BoxCollider2D): ContactManifold | null;
|
|
17
|
+
static testBoxBox(boxA: BoxCollider2D, boxB: BoxCollider2D): ContactManifold | null;
|
|
18
|
+
static collideBoxVsBox(boxA: BoxCollider2D, boxB: BoxCollider2D): ContactManifold | null;
|
|
19
|
+
private static projectBox;
|
|
20
|
+
private static clipSegment;
|
|
21
|
+
static raycast(ray: Ray2D, collider: Collider2D): RaycastHit2D | null;
|
|
22
|
+
static raycastCircle(ray: Ray2D, circle: CircleCollider2D): RaycastHit2D | null;
|
|
23
|
+
static raycastBox(ray: Ray2D, box: BoxCollider2D): RaycastHit2D | null;
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=Narrowphase.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Narrowphase.d.ts","sourceRoot":"","sources":["../../src/physics/Narrowphase.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAE,KAAK,EAAE,YAAY,EAAW,MAAM,WAAW,CAAC;AAEzD,qBAAa,WAAW;IAEtB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAA2E;IAC1G,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAA2E;IAC1G,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAA6C;IAC3E,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAA6C;WAE7D,IAAI,CAAC,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,GAAG,eAAe,GAAG,IAAI;WAI1E,OAAO,CAAC,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,GAAG,eAAe,GAAG,IAAI;WA2B7E,gBAAgB,CAAC,OAAO,EAAE,gBAAgB,EAAE,OAAO,EAAE,gBAAgB,GAAG,eAAe,GAAG,IAAI;WAI9F,qBAAqB,CAAC,OAAO,EAAE,gBAAgB,EAAE,OAAO,EAAE,gBAAgB,GAAG,eAAe,GAAG,IAAI;WAkDnG,aAAa,CAAC,MAAM,EAAE,gBAAgB,EAAE,GAAG,EAAE,aAAa,GAAG,eAAe,GAAG,IAAI;WAInF,kBAAkB,CAAC,MAAM,EAAE,gBAAgB,EAAE,GAAG,EAAE,aAAa,GAAG,eAAe,GAAG,IAAI;WAmGxF,UAAU,CAAC,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,aAAa,GAAG,eAAe,GAAG,IAAI;WAI5E,eAAe,CAAC,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,aAAa,GAAG,eAAe,GAAG,IAAI;IAqJ/F,OAAO,CAAC,MAAM,CAAC,UAAU;IAWzB,OAAO,CAAC,MAAM,CAAC,WAAW;WA2BZ,OAAO,CAAC,GAAG,EAAE,KAAK,EAAE,QAAQ,EAAE,UAAU,GAAG,YAAY,GAAG,IAAI;WAI9D,aAAa,CAAC,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,gBAAgB,GAAG,YAAY,GAAG,IAAI;WAIxE,UAAU,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,aAAa,GAAG,YAAY,GAAG,IAAI;CAG9E"}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import { Vector2 } from '../math/Vector2';
|
|
2
|
+
import { EventEmitter } from '../core/EventEmitter';
|
|
3
|
+
import { RigidBody2D } from './RigidBody2D';
|
|
4
|
+
import { Collider2D } from './Collider2D';
|
|
5
|
+
import { CollisionFSMEvents } from './CollisionFSM';
|
|
6
|
+
import { Ray2D, RaycastHit2D } from './Raycast';
|
|
7
|
+
export interface PhysicsWorldConfig {
|
|
8
|
+
gravity?: Vector2;
|
|
9
|
+
velocityIterations?: number;
|
|
10
|
+
positionIterations?: number;
|
|
11
|
+
subSteps?: number;
|
|
12
|
+
fixedDeltaTime?: number;
|
|
13
|
+
allowSleep?: boolean;
|
|
14
|
+
baumgarte?: number;
|
|
15
|
+
penetrationSlop?: number;
|
|
16
|
+
restitutionVelocityThreshold?: number;
|
|
17
|
+
spatialCellSize?: number;
|
|
18
|
+
enableWarmStarting?: boolean;
|
|
19
|
+
}
|
|
20
|
+
export interface PhysicsWorldEvents extends CollisionFSMEvents {
|
|
21
|
+
'step:pre': {
|
|
22
|
+
dt: number;
|
|
23
|
+
subStep: number;
|
|
24
|
+
};
|
|
25
|
+
'step:post': {
|
|
26
|
+
dt: number;
|
|
27
|
+
subStep: number;
|
|
28
|
+
};
|
|
29
|
+
'body:add': {
|
|
30
|
+
body: RigidBody2D;
|
|
31
|
+
};
|
|
32
|
+
'body:remove': {
|
|
33
|
+
body: RigidBody2D;
|
|
34
|
+
};
|
|
35
|
+
'collider:add': {
|
|
36
|
+
collider: Collider2D;
|
|
37
|
+
};
|
|
38
|
+
'collider:remove': {
|
|
39
|
+
collider: Collider2D;
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Master 2D Physics World orchestrator managing the 11-step simulation pipeline,
|
|
44
|
+
* sub-stepping, spatial indexing, collision lifecycle, and spatial queries.
|
|
45
|
+
*/
|
|
46
|
+
export declare class PhysicsWorld2D extends EventEmitter<PhysicsWorldEvents> {
|
|
47
|
+
gravity: Vector2;
|
|
48
|
+
velocityIterations: number;
|
|
49
|
+
positionIterations: number;
|
|
50
|
+
subSteps: number;
|
|
51
|
+
fixedDeltaTime: number;
|
|
52
|
+
allowSleep: boolean;
|
|
53
|
+
private _bodies;
|
|
54
|
+
private _colliders;
|
|
55
|
+
private _spatialGrid;
|
|
56
|
+
private _contactSolver;
|
|
57
|
+
private _collisionFSM;
|
|
58
|
+
constructor(config?: PhysicsWorldConfig);
|
|
59
|
+
addBody(body: RigidBody2D): this;
|
|
60
|
+
removeBody(body: RigidBody2D): this;
|
|
61
|
+
addCollider(collider: Collider2D): this;
|
|
62
|
+
removeCollider(collider: Collider2D): this;
|
|
63
|
+
getBodies(): readonly RigidBody2D[];
|
|
64
|
+
getColliders(): readonly Collider2D[];
|
|
65
|
+
getBodyById(id: number): RigidBody2D | undefined;
|
|
66
|
+
clear<K extends keyof PhysicsWorldEvents>(event?: K): this;
|
|
67
|
+
step(dt?: number): void;
|
|
68
|
+
private _internalSubStep;
|
|
69
|
+
raycast(ray: Ray2D, mask?: number): RaycastHit2D | null;
|
|
70
|
+
raycastAll(ray: Ray2D, mask?: number): RaycastHit2D[];
|
|
71
|
+
overlapCircle(center: Vector2, radius: number, mask?: number): Collider2D[];
|
|
72
|
+
overlapBox(center: Vector2, width: number, height: number, rotation?: number, mask?: number): Collider2D[];
|
|
73
|
+
overlapPoint(point: Vector2, mask?: number): Collider2D[];
|
|
74
|
+
}
|
|
75
|
+
//# sourceMappingURL=PhysicsWorld2D.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PhysicsWorld2D.d.ts","sourceRoot":"","sources":["../../src/physics/PhysicsWorld2D.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { Vector2 } from '../math/Vector2';
|
|
2
|
+
import type { Collider2D } from './Collider2D';
|
|
3
|
+
import type { RigidBody2D } from './RigidBody2D';
|
|
4
|
+
export declare class Ray2D {
|
|
5
|
+
origin: Vector2;
|
|
6
|
+
direction: Vector2;
|
|
7
|
+
maxDistance: number;
|
|
8
|
+
constructor(origin?: Vector2, direction?: Vector2, maxDistance?: number);
|
|
9
|
+
set(origin: Vector2, direction: Vector2, maxDistance?: number): this;
|
|
10
|
+
getPoint(t: number, out?: Vector2): Vector2;
|
|
11
|
+
}
|
|
12
|
+
export interface RaycastHit2D {
|
|
13
|
+
collider: Collider2D;
|
|
14
|
+
body: RigidBody2D | null;
|
|
15
|
+
point: Vector2;
|
|
16
|
+
normal: Vector2;
|
|
17
|
+
fraction: number;
|
|
18
|
+
distance: number;
|
|
19
|
+
}
|
|
20
|
+
export declare class Raycast {
|
|
21
|
+
/**
|
|
22
|
+
* Evaluates ray intersection against a Circle.
|
|
23
|
+
*/
|
|
24
|
+
static intersectCircle(ray: Ray2D, center: Vector2, radius: number): {
|
|
25
|
+
fraction: number;
|
|
26
|
+
point: Vector2;
|
|
27
|
+
normal: Vector2;
|
|
28
|
+
} | null;
|
|
29
|
+
/**
|
|
30
|
+
* Evaluates ray intersection against an Oriented Bounding Box (OBB).
|
|
31
|
+
*/
|
|
32
|
+
static intersectBox(ray: Ray2D, center: Vector2, halfWidth: number, halfHeight: number, rotation?: number): {
|
|
33
|
+
fraction: number;
|
|
34
|
+
point: Vector2;
|
|
35
|
+
normal: Vector2;
|
|
36
|
+
} | null;
|
|
37
|
+
}
|
|
38
|
+
//# sourceMappingURL=Raycast.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Raycast.d.ts","sourceRoot":"","sources":["../../src/physics/Raycast.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAC1C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAEjD,qBAAa,KAAK;IACT,MAAM,EAAE,OAAO,CAAC;IAChB,SAAS,EAAE,OAAO,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;gBAGzB,MAAM,GAAE,OAA2B,EACnC,SAAS,GAAE,OAA2B,EACtC,WAAW,GAAE,MAAiB;IAOzB,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,WAAW,GAAE,MAAyB,GAAG,IAAI;IAOtF,QAAQ,CAAC,CAAC,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,OAAO,GAAG,OAAO;CAMnD;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,UAAU,CAAC;IACrB,IAAI,EAAE,WAAW,GAAG,IAAI,CAAC;IACzB,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,OAAO,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,qBAAa,OAAO;IAClB;;OAEG;WACW,eAAe,CAC3B,GAAG,EAAE,KAAK,EACV,MAAM,EAAE,OAAO,EACf,MAAM,EAAE,MAAM,GACb;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,OAAO,CAAC;QAAC,MAAM,EAAE,OAAO,CAAA;KAAE,GAAG,IAAI;IA8C/D;;OAEG;WACW,YAAY,CACxB,GAAG,EAAE,KAAK,EACV,MAAM,EAAE,OAAO,EACf,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,EAClB,QAAQ,GAAE,MAAU,GACnB;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,OAAO,CAAC;QAAC,MAAM,EAAE,OAAO,CAAA;KAAE,GAAG,IAAI;CAiGhE"}
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
import { Vector2 } from '../math/Vector2';
|
|
2
|
+
import { Transform2D } from '../math/Transform2D';
|
|
3
|
+
export declare enum BodyType {
|
|
4
|
+
Dynamic = "dynamic",
|
|
5
|
+
Static = "static",
|
|
6
|
+
Kinematic = "kinematic"
|
|
7
|
+
}
|
|
8
|
+
export interface RigidBodyConfig {
|
|
9
|
+
bodyType?: BodyType;
|
|
10
|
+
position?: Vector2;
|
|
11
|
+
velocity?: Vector2;
|
|
12
|
+
acceleration?: Vector2;
|
|
13
|
+
rotation?: number;
|
|
14
|
+
angularVelocity?: number;
|
|
15
|
+
mass?: number;
|
|
16
|
+
inertia?: number;
|
|
17
|
+
fixedRotation?: boolean;
|
|
18
|
+
linearDamping?: number;
|
|
19
|
+
angularDamping?: number;
|
|
20
|
+
gravityScale?: number;
|
|
21
|
+
restitution?: number;
|
|
22
|
+
friction?: number;
|
|
23
|
+
isBullet?: boolean;
|
|
24
|
+
canSleep?: boolean;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Production-grade 2D RigidBody implementing Symplectic Euler integration,
|
|
28
|
+
* accurate inertia tensor calculation, force/impulse APIs, and Transform2D sync.
|
|
29
|
+
*/
|
|
30
|
+
export declare class RigidBody2D {
|
|
31
|
+
private static _nextId;
|
|
32
|
+
readonly id: number;
|
|
33
|
+
bodyType: BodyType;
|
|
34
|
+
readonly position: Vector2;
|
|
35
|
+
readonly velocity: Vector2;
|
|
36
|
+
readonly acceleration: Vector2;
|
|
37
|
+
readonly force: Vector2;
|
|
38
|
+
rotation: number;
|
|
39
|
+
angularVelocity: number;
|
|
40
|
+
torque: number;
|
|
41
|
+
private _mass;
|
|
42
|
+
private _invMass;
|
|
43
|
+
private _inertia;
|
|
44
|
+
private _invInertia;
|
|
45
|
+
fixedRotation: boolean;
|
|
46
|
+
linearDamping: number;
|
|
47
|
+
angularDamping: number;
|
|
48
|
+
gravityScale: number;
|
|
49
|
+
restitution: number;
|
|
50
|
+
friction: number;
|
|
51
|
+
isBullet: boolean;
|
|
52
|
+
isSleeping: boolean;
|
|
53
|
+
canSleep: boolean;
|
|
54
|
+
sleepTimer: number;
|
|
55
|
+
static linearSleepTolerance: number;
|
|
56
|
+
static angularSleepTolerance: number;
|
|
57
|
+
static timeToSleep: number;
|
|
58
|
+
transform: Transform2D | null;
|
|
59
|
+
userData: any;
|
|
60
|
+
onCollisionEnter?: (other: RigidBody2D | null, myCollider: any, otherCollider: any, manifold: any) => void;
|
|
61
|
+
onCollisionStay?: (other: RigidBody2D | null, myCollider: any, otherCollider: any, manifold: any) => void;
|
|
62
|
+
onCollisionExit?: (other: RigidBody2D | null, myCollider: any, otherCollider: any) => void;
|
|
63
|
+
onTriggerEnter?: (other: RigidBody2D | null, myCollider: any, otherCollider: any) => void;
|
|
64
|
+
onTriggerStay?: (other: RigidBody2D | null, myCollider: any, otherCollider: any) => void;
|
|
65
|
+
onTriggerExit?: (other: RigidBody2D | null, myCollider: any, otherCollider: any) => void;
|
|
66
|
+
hasCustomInertia: boolean;
|
|
67
|
+
constructor(config?: RigidBodyConfig);
|
|
68
|
+
get mass(): number;
|
|
69
|
+
get invMass(): number;
|
|
70
|
+
get inertia(): number;
|
|
71
|
+
get invInertia(): number;
|
|
72
|
+
setMass(mass: number): this;
|
|
73
|
+
setInertia(inertia: number): this;
|
|
74
|
+
setMassAndInertia(mass: number, inertia: number): this;
|
|
75
|
+
/**
|
|
76
|
+
* Helper to configure moment of inertia for uniform circular disk:
|
|
77
|
+
* I = 0.5 * M * R^2 + M * d^2 (Parallel Axis Theorem)
|
|
78
|
+
*/
|
|
79
|
+
setCircleMass(mass: number, radius: number, offset?: Vector2): this;
|
|
80
|
+
/**
|
|
81
|
+
* Helper to configure moment of inertia for uniform box:
|
|
82
|
+
* I = (1/12) * M * (W^2 + H^2) + M * d^2 (Parallel Axis Theorem)
|
|
83
|
+
*/
|
|
84
|
+
setBoxMass(mass: number, width: number, height: number, offset?: Vector2): this;
|
|
85
|
+
/**
|
|
86
|
+
* Applies continuous linear force (e.g. thruster, wind, attraction).
|
|
87
|
+
* If point is specified (in world space), generates rotational torque via r x F.
|
|
88
|
+
*/
|
|
89
|
+
applyForce(force: Vector2, point?: Vector2): void;
|
|
90
|
+
/**
|
|
91
|
+
* Applies instantaneous linear impulse (e.g. jump, explosion, projectile impact).
|
|
92
|
+
* Modifies velocity immediately.
|
|
93
|
+
*/
|
|
94
|
+
applyImpulse(impulse: Vector2, point?: Vector2): void;
|
|
95
|
+
applyTorque(torque: number): void;
|
|
96
|
+
applyAngularImpulse(impulse: number): void;
|
|
97
|
+
clearForces(): void;
|
|
98
|
+
/**
|
|
99
|
+
* Phase 1 of Symplectic Euler: Integrate velocities from forces, gravity, and damping.
|
|
100
|
+
* Run BEFORE ContactSolver.
|
|
101
|
+
*/
|
|
102
|
+
integrateVelocities(dt: number, worldGravity: Vector2): void;
|
|
103
|
+
/**
|
|
104
|
+
* Phase 2 of Symplectic Euler: Provisional position integration from integrated velocities.
|
|
105
|
+
* Run prior to narrowphase collision detection and ContactSolver resolution.
|
|
106
|
+
*/
|
|
107
|
+
integratePositions(dt: number): void;
|
|
108
|
+
/**
|
|
109
|
+
* Evaluates sleep state machine against post-solver settled velocities.
|
|
110
|
+
* Called at Phase 9 of PhysicsWorld2D._internalSubStep after contact resolution.
|
|
111
|
+
*/
|
|
112
|
+
updateSleep(dt: number): void;
|
|
113
|
+
sleep(): void;
|
|
114
|
+
wakeUp(): void;
|
|
115
|
+
syncFromTransform(): void;
|
|
116
|
+
syncToTransform(): void;
|
|
117
|
+
}
|
|
118
|
+
//# sourceMappingURL=RigidBody2D.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RigidBody2D.d.ts","sourceRoot":"","sources":["../../src/physics/RigidBody2D.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
import { Vector2 } from '../math/Vector2';
|
|
2
|
+
import { Rect } from '../math/Rect';
|
|
3
|
+
import { Collider2D } from './Collider2D';
|
|
4
|
+
import { Ray2D } from './Raycast';
|
|
5
|
+
export declare class ColliderPair {
|
|
6
|
+
colliderA: Collider2D;
|
|
7
|
+
colliderB: Collider2D;
|
|
8
|
+
get 0(): Collider2D;
|
|
9
|
+
get 1(): Collider2D;
|
|
10
|
+
[Symbol.iterator](): Generator<Collider2D>;
|
|
11
|
+
}
|
|
12
|
+
export declare class GridCell {
|
|
13
|
+
key: number;
|
|
14
|
+
cx: number;
|
|
15
|
+
cy: number;
|
|
16
|
+
readonly colliders: Collider2D[];
|
|
17
|
+
clear(): void;
|
|
18
|
+
}
|
|
19
|
+
export interface SpatialGridConfig {
|
|
20
|
+
cellSize?: number;
|
|
21
|
+
initialCapacity?: number;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Production-grade, zero-allocation Broadphase Spatial Hash Grid.
|
|
25
|
+
* Employs 32-bit packed SMI keys, Minimum Shared Cell deduplication,
|
|
26
|
+
* and Amanatides-Woo Fast Voxel Traversal for raycasting.
|
|
27
|
+
*/
|
|
28
|
+
export declare class SpatialGrid {
|
|
29
|
+
readonly cellSize: number;
|
|
30
|
+
readonly invCellSize: number;
|
|
31
|
+
private readonly _cells;
|
|
32
|
+
private readonly _activeCells;
|
|
33
|
+
private readonly _cellPool;
|
|
34
|
+
private readonly _pairs;
|
|
35
|
+
private _pairCount;
|
|
36
|
+
private _queryStamp;
|
|
37
|
+
constructor(config?: SpatialGridConfig);
|
|
38
|
+
/**
|
|
39
|
+
* Encodes 2D cell coordinates (cx, cy) into a single 32-bit signed integer.
|
|
40
|
+
* Coordinates in [-32768, 32767] produce Small Integers (SMIs) in V8.
|
|
41
|
+
*/
|
|
42
|
+
getCellKey(cx: number, cy: number): number;
|
|
43
|
+
/**
|
|
44
|
+
* Registers a collider across all grid cells overlapping its AABB bounds.
|
|
45
|
+
*/
|
|
46
|
+
insert(collider: Collider2D): void;
|
|
47
|
+
/**
|
|
48
|
+
* Removes a collider from all currently occupied cells via fast swap-and-pop.
|
|
49
|
+
*/
|
|
50
|
+
remove(collider: Collider2D): void;
|
|
51
|
+
/**
|
|
52
|
+
* Updates collider cell occupancy. Exits in O(1) if cell boundaries were not crossed.
|
|
53
|
+
*/
|
|
54
|
+
update(collider: Collider2D): void;
|
|
55
|
+
/**
|
|
56
|
+
* Clears all cells and recycles them to pool.
|
|
57
|
+
*/
|
|
58
|
+
clear(): void;
|
|
59
|
+
/**
|
|
60
|
+
* Generates candidate pairs for narrowphase collision detection.
|
|
61
|
+
* Employs Minimum Shared Cell deduplication and full bitfield/sleeping pruning.
|
|
62
|
+
*/
|
|
63
|
+
generateCandidatePairs(): readonly ColliderPair[];
|
|
64
|
+
private addPair;
|
|
65
|
+
queryAABB(aabb: Rect, out?: Collider2D[]): Collider2D[];
|
|
66
|
+
queryPoint(point: Vector2, out?: Collider2D[]): Collider2D[];
|
|
67
|
+
/**
|
|
68
|
+
* Raycast query using Amanatides & Woo Fast Voxel Traversal (DDA).
|
|
69
|
+
* Traverses intersected cells in strict front-to-back ray order.
|
|
70
|
+
* Hardened against Infinity, NaN, non-positive distances, and infinite loops.
|
|
71
|
+
*/
|
|
72
|
+
queryRay(ray: Ray2D, maxDistance?: number, out?: Collider2D[]): Collider2D[];
|
|
73
|
+
private acquireCell;
|
|
74
|
+
private releaseCell;
|
|
75
|
+
get activeCellCount(): number;
|
|
76
|
+
get pooledCellCount(): number;
|
|
77
|
+
}
|
|
78
|
+
//# sourceMappingURL=SpatialGrid.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SpatialGrid.d.ts","sourceRoot":"","sources":["../../src/physics/SpatialGrid.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAC1C,OAAO,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AACpC,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,KAAK,EAAE,MAAM,WAAW,CAAC;AAGlC,qBAAa,YAAY;IAChB,SAAS,EAAG,UAAU,CAAC;IACvB,SAAS,EAAG,UAAU,CAAC;IAE9B,IAAW,CAAC,IAAI,UAAU,CAEzB;IAED,IAAW,CAAC,IAAI,UAAU,CAEzB;IAEO,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,SAAS,CAAC,UAAU,CAAC;CAInD;AAED,qBAAa,QAAQ;IACZ,GAAG,EAAE,MAAM,CAAK;IAChB,EAAE,EAAE,MAAM,CAAK;IACf,EAAE,EAAE,MAAM,CAAK;IACtB,SAAgB,SAAS,EAAE,UAAU,EAAE,CAAM;IAEtC,KAAK,IAAI,IAAI;CAGrB;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED;;;;GAIG;AACH,qBAAa,WAAW;IACtB,SAAgB,QAAQ,EAAE,MAAM,CAAC;IACjC,SAAgB,WAAW,EAAE,MAAM,CAAC;IAGpC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAoC;IAC3D,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAkB;IAG/C,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAkB;IAC5C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAsB;IAC7C,OAAO,CAAC,UAAU,CAAa;IAG/B,OAAO,CAAC,WAAW,CAAa;gBAEpB,MAAM,GAAE,iBAAsB;IAe1C;;;OAGG;IACI,UAAU,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,MAAM;IAQjD;;OAEG;IACI,MAAM,CAAC,QAAQ,EAAE,UAAU,GAAG,IAAI;IA0BzC;;OAEG;IACI,MAAM,CAAC,QAAQ,EAAE,UAAU,GAAG,IAAI;IAmCzC;;OAEG;IACI,MAAM,CAAC,QAAQ,EAAE,UAAU,GAAG,IAAI;IAqBzC;;OAEG;IACI,KAAK,IAAI,IAAI;IAapB;;;OAGG;IACI,sBAAsB,IAAI,SAAS,YAAY,EAAE;IAuExD,OAAO,CAAC,OAAO;IAeR,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,GAAE,UAAU,EAAO,GAAG,UAAU,EAAE;IA8B3D,UAAU,CAAC,KAAK,EAAE,OAAO,EAAE,GAAG,GAAE,UAAU,EAAO,GAAG,UAAU,EAAE;IAmBvE;;;;OAIG;IACI,QAAQ,CAAC,GAAG,EAAE,KAAK,EAAE,WAAW,GAAE,MAAa,EAAE,GAAG,GAAE,UAAU,EAAO,GAAG,UAAU,EAAE;IAgH7F,OAAO,CAAC,WAAW;IASnB,OAAO,CAAC,WAAW;IAKnB,IAAW,eAAe,IAAI,MAAM,CAEnC;IAED,IAAW,eAAe,IAAI,MAAM,CAEnC;CACF"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 2D Physics Engine Subsystem
|
|
3
|
+
*/
|
|
4
|
+
export * from './RigidBody2D';
|
|
5
|
+
export * from './Collider2D';
|
|
6
|
+
export * from './CircleCollider2D';
|
|
7
|
+
export * from './BoxCollider2D';
|
|
8
|
+
export * from './Narrowphase';
|
|
9
|
+
export * from './Raycast';
|
|
10
|
+
export * from './SpatialGrid';
|
|
11
|
+
export * from './ContactSolver';
|
|
12
|
+
export * from './CollisionFSM';
|
|
13
|
+
export * from './PhysicsWorld2D';
|
|
14
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/physics/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,oBAAoB,CAAC;AACnC,cAAc,iBAAiB,CAAC;AAChC,cAAc,eAAe,CAAC;AAC9B,cAAc,WAAW,CAAC;AAC1B,cAAc,eAAe,CAAC;AAC9B,cAAc,iBAAiB,CAAC;AAChC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,kBAAkB,CAAC"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import { Rect } from '../math/Rect';
|
|
2
|
+
import { Vector2 } from '../math/Vector2';
|
|
3
|
+
import { Sprite } from './Sprite';
|
|
4
|
+
export interface AnimationFrame {
|
|
5
|
+
/** Index in the clip */
|
|
6
|
+
index: number;
|
|
7
|
+
/** Sub-rectangle coordinates on texture atlas */
|
|
8
|
+
sourceRect: Rect;
|
|
9
|
+
/** Frame duration in seconds (default: 1 / clip.fps) */
|
|
10
|
+
duration: number;
|
|
11
|
+
/** Optional frame-specific anchor override */
|
|
12
|
+
anchor?: Vector2;
|
|
13
|
+
}
|
|
14
|
+
export type PlaybackMode = 'loop' | 'once' | 'ping-pong' | 'reverse';
|
|
15
|
+
export interface AnimationClipConfig {
|
|
16
|
+
name: string;
|
|
17
|
+
frames: AnimationFrame[];
|
|
18
|
+
fps?: number;
|
|
19
|
+
wrapMode?: PlaybackMode;
|
|
20
|
+
}
|
|
21
|
+
export declare class AnimationClip {
|
|
22
|
+
readonly name: string;
|
|
23
|
+
readonly frames: AnimationFrame[];
|
|
24
|
+
readonly fps: number;
|
|
25
|
+
readonly wrapMode: PlaybackMode;
|
|
26
|
+
readonly totalDuration: number;
|
|
27
|
+
constructor(config: AnimationClipConfig);
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Animation controller for driving sprite animation playback.
|
|
31
|
+
*/
|
|
32
|
+
export declare class Animation {
|
|
33
|
+
private _clips;
|
|
34
|
+
currentClip: AnimationClip | null;
|
|
35
|
+
currentFrameIndex: number;
|
|
36
|
+
currentTime: number;
|
|
37
|
+
playbackSpeed: number;
|
|
38
|
+
isPlaying: boolean;
|
|
39
|
+
isPaused: boolean;
|
|
40
|
+
isFinished: boolean;
|
|
41
|
+
private _direction;
|
|
42
|
+
targetSprite: Sprite | null;
|
|
43
|
+
onFrame?: (frameIndex: number, frame: AnimationFrame) => void;
|
|
44
|
+
onComplete?: () => void;
|
|
45
|
+
onLoop?: () => void;
|
|
46
|
+
constructor(targetSprite?: Sprite);
|
|
47
|
+
addClip(clip: AnimationClip): this;
|
|
48
|
+
getClip(name: string): AnimationClip | undefined;
|
|
49
|
+
hasClip(name: string): boolean;
|
|
50
|
+
play(clipName: string, restart?: boolean): this;
|
|
51
|
+
pause(): this;
|
|
52
|
+
resume(): this;
|
|
53
|
+
stop(): this;
|
|
54
|
+
gotoAndStop(frameIndex: number): this;
|
|
55
|
+
gotoAndPlay(frameIndex: number): this;
|
|
56
|
+
/**
|
|
57
|
+
* Advances the animation timeline. Zero per-frame memory allocation.
|
|
58
|
+
*/
|
|
59
|
+
update(dt?: number): void;
|
|
60
|
+
private _applyFrame;
|
|
61
|
+
}
|
|
62
|
+
//# sourceMappingURL=Animation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Animation.d.ts","sourceRoot":"","sources":["../../src/rendering/Animation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AACpC,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAE1C,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAElC,MAAM,WAAW,cAAc;IAC7B,wBAAwB;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,iDAAiD;IACjD,UAAU,EAAE,IAAI,CAAC;IACjB,wDAAwD;IACxD,QAAQ,EAAE,MAAM,CAAC;IACjB,8CAA8C;IAC9C,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,MAAM,GAAG,WAAW,GAAG,SAAS,CAAC;AAErE,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,cAAc,EAAE,CAAC;IACzB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,YAAY,CAAC;CACzB;AAED,qBAAa,aAAa;IACxB,SAAgB,IAAI,EAAE,MAAM,CAAC;IAC7B,SAAgB,MAAM,EAAE,cAAc,EAAE,CAAC;IACzC,SAAgB,GAAG,EAAE,MAAM,CAAC;IAC5B,SAAgB,QAAQ,EAAE,YAAY,CAAC;IACvC,SAAgB,aAAa,EAAE,MAAM,CAAC;gBAE1B,MAAM,EAAE,mBAAmB;CAYxC;AAED;;GAEG;AACH,qBAAa,SAAS;IACpB,OAAO,CAAC,MAAM,CAAyC;IAChD,WAAW,EAAE,aAAa,GAAG,IAAI,CAAQ;IACzC,iBAAiB,EAAE,MAAM,CAAK;IAC9B,WAAW,EAAE,MAAM,CAAK;IACxB,aAAa,EAAE,MAAM,CAAO;IAC5B,SAAS,EAAE,OAAO,CAAS;IAC3B,QAAQ,EAAE,OAAO,CAAS;IAC1B,UAAU,EAAE,OAAO,CAAS;IAEnC,OAAO,CAAC,UAAU,CAAa;IACxB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAQ;IAGnC,OAAO,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,cAAc,KAAK,IAAI,CAAC;IAC9D,UAAU,CAAC,EAAE,MAAM,IAAI,CAAC;IACxB,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;gBAEf,YAAY,CAAC,EAAE,MAAM;IAM1B,OAAO,CAAC,IAAI,EAAE,aAAa,GAAG,IAAI;IAKlC,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS;IAIhD,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAI9B,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,GAAE,OAAe,GAAG,IAAI;IA2BtD,KAAK,IAAI,IAAI;IAKb,MAAM,IAAI,IAAI;IAQd,IAAI,IAAI,IAAI;IAQZ,WAAW,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI;IAQrC,WAAW,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI;IAM5C;;OAEG;IACI,MAAM,CAAC,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI;IA0EhC,OAAO,CAAC,WAAW;CAWpB"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { Color } from '../math/Color';
|
|
2
|
+
export declare class AssetLoader {
|
|
3
|
+
private _textures;
|
|
4
|
+
private _inFlight;
|
|
5
|
+
loadedCount: number;
|
|
6
|
+
totalCount: number;
|
|
7
|
+
get isLoading(): boolean;
|
|
8
|
+
get progress(): number;
|
|
9
|
+
/**
|
|
10
|
+
* Loads an image asynchronously with zero crash risk.
|
|
11
|
+
* If the file is missing or network fails, logs a warning and returns a procedural fallback.
|
|
12
|
+
*/
|
|
13
|
+
loadTexture(key: string, url: string): Promise<CanvasImageSource>;
|
|
14
|
+
/**
|
|
15
|
+
* Batch loads multiple textures with optional progress callback.
|
|
16
|
+
*/
|
|
17
|
+
loadTextures(manifest: Record<string, string>, onProgress?: (progress: number) => void): Promise<Map<string, CanvasImageSource>>;
|
|
18
|
+
getTexture(key: string): CanvasImageSource | undefined;
|
|
19
|
+
hasTexture(key: string): boolean;
|
|
20
|
+
registerTexture(key: string, texture: CanvasImageSource): void;
|
|
21
|
+
/**
|
|
22
|
+
* Generates a high-contrast magenta/black checkerboard fallback texture.
|
|
23
|
+
*/
|
|
24
|
+
createCheckerboardTexture(width?: number, height?: number, color1?: Color | string, color2?: Color | string, tileSize?: number): CanvasImageSource;
|
|
25
|
+
/**
|
|
26
|
+
* Generates a solid 1x1 or custom size color texture.
|
|
27
|
+
*/
|
|
28
|
+
createSolidTexture(width?: number, height?: number, color?: Color | string): CanvasImageSource;
|
|
29
|
+
/**
|
|
30
|
+
* Generates a smooth circular gradient texture (ideal for particle systems).
|
|
31
|
+
*/
|
|
32
|
+
createCircleTexture(radius?: number, color?: Color | string): CanvasImageSource;
|
|
33
|
+
clear(): void;
|
|
34
|
+
}
|
|
35
|
+
//# sourceMappingURL=AssetLoader.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AssetLoader.d.ts","sourceRoot":"","sources":["../../src/rendering/AssetLoader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAGtC,qBAAa,WAAW;IACtB,OAAO,CAAC,SAAS,CAA6C;IAC9D,OAAO,CAAC,SAAS,CAAsD;IAEhE,WAAW,EAAE,MAAM,CAAK;IACxB,UAAU,EAAE,MAAM,CAAK;IAE9B,IAAW,SAAS,IAAI,OAAO,CAE9B;IAED,IAAW,QAAQ,IAAI,MAAM,CAE5B;IAED;;;OAGG;IACI,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAiDxE;;OAEG;IACU,YAAY,CACvB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAChC,UAAU,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,GACtC,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC;IAcnC,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,iBAAiB,GAAG,SAAS;IAItD,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAIhC,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,iBAAiB,GAAG,IAAI;IAIrE;;OAEG;IACI,yBAAyB,CAC9B,KAAK,GAAE,MAAW,EAClB,MAAM,GAAE,MAAW,EACnB,MAAM,GAAE,KAAK,GAAG,MAAkB,EAClC,MAAM,GAAE,KAAK,GAAG,MAAkB,EAClC,QAAQ,GAAE,MAAU,GACnB,iBAAiB;IAqCpB;;OAEG;IACI,kBAAkB,CACvB,KAAK,GAAE,MAAU,EACjB,MAAM,GAAE,MAAU,EAClB,KAAK,GAAE,KAAK,GAAG,MAAoB,GAClC,iBAAiB;IAsBpB;;OAEG;IACI,mBAAmB,CACxB,MAAM,GAAE,MAAW,EACnB,KAAK,GAAE,KAAK,GAAG,MAAoB,GAClC,iBAAiB;IA+Bb,KAAK,IAAI,IAAI;CAMrB"}
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
import { Vector2 } from '../math/Vector2';
|
|
2
|
+
import { Matrix2D } from '../math/Matrix2D';
|
|
3
|
+
import { Rect } from '../math/Rect';
|
|
4
|
+
import { CanvasContext } from './CanvasContext';
|
|
5
|
+
import { ICanvasRenderingContext2D } from './CanvasMock';
|
|
6
|
+
export interface CameraFollowTarget {
|
|
7
|
+
position: Vector2;
|
|
8
|
+
}
|
|
9
|
+
export interface Camera2DConfig {
|
|
10
|
+
viewportWidth: number;
|
|
11
|
+
viewportHeight: number;
|
|
12
|
+
x?: number;
|
|
13
|
+
y?: number;
|
|
14
|
+
zoom?: number;
|
|
15
|
+
rotation?: number;
|
|
16
|
+
originX?: number;
|
|
17
|
+
originY?: number;
|
|
18
|
+
bounds?: Rect;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* 2D Camera subsystem handling viewport transformation, smooth target follow with deadzone,
|
|
22
|
+
* screen-to-world unprojection, trauma screen shake, and frustum culling queries.
|
|
23
|
+
*/
|
|
24
|
+
export declare class Camera2D {
|
|
25
|
+
readonly position: Vector2;
|
|
26
|
+
readonly origin: Vector2;
|
|
27
|
+
readonly offset: Vector2;
|
|
28
|
+
viewportWidth: number;
|
|
29
|
+
viewportHeight: number;
|
|
30
|
+
private _zoom;
|
|
31
|
+
private _rotation;
|
|
32
|
+
target: Vector2 | CameraFollowTarget | null;
|
|
33
|
+
followLerp: number;
|
|
34
|
+
deadzone: Rect | null;
|
|
35
|
+
bounds: Rect | null;
|
|
36
|
+
trauma: number;
|
|
37
|
+
traumaDecay: number;
|
|
38
|
+
maxShakeOffset: number;
|
|
39
|
+
maxShakeAngle: number;
|
|
40
|
+
private readonly _viewMatrix;
|
|
41
|
+
private readonly _invViewMatrix;
|
|
42
|
+
private readonly _visibleBounds;
|
|
43
|
+
private _isDirty;
|
|
44
|
+
private _boundsDirty;
|
|
45
|
+
private static readonly _scratchScreenTL;
|
|
46
|
+
private static readonly _scratchScreenTR;
|
|
47
|
+
private static readonly _scratchScreenBR;
|
|
48
|
+
private static readonly _scratchScreenBL;
|
|
49
|
+
private static readonly _scratchWorldTL;
|
|
50
|
+
private static readonly _scratchWorldTR;
|
|
51
|
+
private static readonly _scratchWorldBR;
|
|
52
|
+
private static readonly _scratchWorldBL;
|
|
53
|
+
private _lastPosX;
|
|
54
|
+
private _lastPosY;
|
|
55
|
+
private _lastOriginX;
|
|
56
|
+
private _lastOriginY;
|
|
57
|
+
private _lastOffsetX;
|
|
58
|
+
private _lastOffsetY;
|
|
59
|
+
private _lastViewportW;
|
|
60
|
+
private _lastViewportH;
|
|
61
|
+
private _shakeOffsetX;
|
|
62
|
+
private _shakeOffsetY;
|
|
63
|
+
private _shakeAngle;
|
|
64
|
+
constructor(config: Camera2DConfig);
|
|
65
|
+
get zoom(): number;
|
|
66
|
+
set zoom(value: number);
|
|
67
|
+
get rotation(): number;
|
|
68
|
+
set rotation(radians: number);
|
|
69
|
+
setPosition(x: number, y: number): this;
|
|
70
|
+
setViewportSize(width: number, height: number): this;
|
|
71
|
+
markDirty(): this;
|
|
72
|
+
follow(target: Vector2 | CameraFollowTarget | null, lerp?: number, deadzone?: Rect): this;
|
|
73
|
+
update(dt: number): void;
|
|
74
|
+
addTrauma(amount: number): this;
|
|
75
|
+
clampToBounds(): void;
|
|
76
|
+
/**
|
|
77
|
+
* Updates cached view matrix and inverse matrix.
|
|
78
|
+
*/
|
|
79
|
+
updateMatrix(): void;
|
|
80
|
+
getViewMatrix(): Matrix2D;
|
|
81
|
+
getInverseViewMatrix(): Matrix2D;
|
|
82
|
+
/**
|
|
83
|
+
* Transforms world coordinates into screen coordinates.
|
|
84
|
+
*/
|
|
85
|
+
worldToScreen(worldPos: Vector2, out?: Vector2): Vector2;
|
|
86
|
+
/**
|
|
87
|
+
* Transforms screen / viewport coordinates into world coordinates.
|
|
88
|
+
*/
|
|
89
|
+
screenToWorld(screenPos: Vector2, out?: Vector2): Vector2;
|
|
90
|
+
/**
|
|
91
|
+
* Applies camera transformation matrix to CanvasContext or raw context.
|
|
92
|
+
*/
|
|
93
|
+
applyToContext(ctx: CanvasContext | ICanvasRenderingContext2D | any): void;
|
|
94
|
+
/**
|
|
95
|
+
* Recomputes cached visible bounds using pre-allocated scratch vectors.
|
|
96
|
+
* Zero heap allocations.
|
|
97
|
+
*/
|
|
98
|
+
private _recomputeVisibleBounds;
|
|
99
|
+
/**
|
|
100
|
+
* Returns Axis-Aligned Bounding Box (AABB) in world space of the visible camera area.
|
|
101
|
+
* Cached to eliminate recalculation and object allocation during frustum culling.
|
|
102
|
+
*/
|
|
103
|
+
getVisibleBounds(out?: Rect): Rect;
|
|
104
|
+
/**
|
|
105
|
+
* Checks whether a bounding box in world space intersects the camera's visible frustum.
|
|
106
|
+
*/
|
|
107
|
+
isVisible(bounds: Rect): boolean;
|
|
108
|
+
}
|
|
109
|
+
//# sourceMappingURL=Camera2D.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Camera2D.d.ts","sourceRoot":"","sources":["../../src/rendering/Camera2D.ts"],"names":[],"mappings":"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"}
|