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,80 @@
|
|
|
1
|
+
import { Matrix2D } from '../math/Matrix2D';
|
|
2
|
+
import { Color } from '../math/Color';
|
|
3
|
+
import { ICanvasRenderingContext2D } from './CanvasMock';
|
|
4
|
+
export interface CanvasContextOptions {
|
|
5
|
+
pixelArt?: boolean;
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* Ergonomic wrapper around Canvas 2D rendering context.
|
|
9
|
+
* Features:
|
|
10
|
+
* - Direct transformation matrix synchronization with Matrix2D.
|
|
11
|
+
* - Robust save/restore state stack tracking with underflow protection.
|
|
12
|
+
* - Push/pop alpha and composite operations for nested hierarchies.
|
|
13
|
+
* - Pixel-art smoothing controls.
|
|
14
|
+
* - Headless fallback in Node.js runtime.
|
|
15
|
+
*/
|
|
16
|
+
export declare class CanvasContext {
|
|
17
|
+
readonly rawContext: ICanvasRenderingContext2D;
|
|
18
|
+
readonly currentMatrix: Matrix2D;
|
|
19
|
+
private _saveDepth;
|
|
20
|
+
private _matrixStack;
|
|
21
|
+
private _alphaStack;
|
|
22
|
+
private _compositeStack;
|
|
23
|
+
constructor(context: ICanvasRenderingContext2D, options?: CanvasContextOptions);
|
|
24
|
+
get saveDepth(): number;
|
|
25
|
+
/**
|
|
26
|
+
* Pushes current state (transform, alpha, composite, and context state) to the stack.
|
|
27
|
+
*/
|
|
28
|
+
save(): this;
|
|
29
|
+
/**
|
|
30
|
+
* Restores the most recently saved context state.
|
|
31
|
+
* Guarded against underflow when saveDepth is 0.
|
|
32
|
+
*/
|
|
33
|
+
restore(): this;
|
|
34
|
+
/**
|
|
35
|
+
* Restores state until save depth matches targetDepth.
|
|
36
|
+
*/
|
|
37
|
+
restoreTo(targetDepth: number): this;
|
|
38
|
+
/**
|
|
39
|
+
* Sets transformation matrix directly and synchronizes with Canvas context.
|
|
40
|
+
*/
|
|
41
|
+
setMatrix(matrix: Matrix2D): this;
|
|
42
|
+
/**
|
|
43
|
+
* Multiplies given matrix onto the current context transformation.
|
|
44
|
+
*/
|
|
45
|
+
transformMatrix(matrix: Matrix2D): this;
|
|
46
|
+
translate(x: number, y: number): this;
|
|
47
|
+
rotate(radians: number): this;
|
|
48
|
+
scale(sx: number, sy?: number): this;
|
|
49
|
+
resetTransform(): this;
|
|
50
|
+
getMatrix(out?: Matrix2D): Matrix2D;
|
|
51
|
+
get globalAlpha(): number;
|
|
52
|
+
set globalAlpha(value: number);
|
|
53
|
+
/**
|
|
54
|
+
* Multiplies current alpha by factor and pushes previous alpha to stack.
|
|
55
|
+
*/
|
|
56
|
+
pushAlpha(factor: number): this;
|
|
57
|
+
popAlpha(): this;
|
|
58
|
+
get blendMode(): GlobalCompositeOperation;
|
|
59
|
+
set blendMode(mode: GlobalCompositeOperation);
|
|
60
|
+
pushBlendMode(mode: GlobalCompositeOperation): this;
|
|
61
|
+
popBlendMode(): this;
|
|
62
|
+
get imageSmoothingEnabled(): boolean;
|
|
63
|
+
setImageSmoothing(enabled: boolean): this;
|
|
64
|
+
setFillStyle(style: string | Color | CanvasGradient | CanvasPattern): this;
|
|
65
|
+
setStrokeStyle(style: string | Color | CanvasGradient | CanvasPattern): this;
|
|
66
|
+
setLineWidth(width: number): this;
|
|
67
|
+
clearRect(x: number, y: number, width: number, height: number): this;
|
|
68
|
+
fillRect(x: number, y: number, width: number, height: number): this;
|
|
69
|
+
strokeRect(x: number, y: number, width: number, height: number): this;
|
|
70
|
+
beginPath(): this;
|
|
71
|
+
closePath(): this;
|
|
72
|
+
moveTo(x: number, y: number): this;
|
|
73
|
+
lineTo(x: number, y: number): this;
|
|
74
|
+
arc(x: number, y: number, radius: number, startAngle?: number, endAngle?: number, counterclockwise?: boolean): this;
|
|
75
|
+
fill(): this;
|
|
76
|
+
stroke(): this;
|
|
77
|
+
clip(): this;
|
|
78
|
+
drawImage(image: any, sx?: number, sy?: number, sw?: number, sh?: number, dx?: number, dy?: number, dw?: number, dh?: number): this;
|
|
79
|
+
}
|
|
80
|
+
//# sourceMappingURL=CanvasContext.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CanvasContext.d.ts","sourceRoot":"","sources":["../../src/rendering/CanvasContext.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AACtC,OAAO,EAAE,yBAAyB,EAAE,MAAM,cAAc,CAAC;AAEzD,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED;;;;;;;;GAQG;AACH,qBAAa,aAAa;IACxB,SAAgB,UAAU,EAAE,yBAAyB,CAAC;IACtD,SAAgB,aAAa,EAAE,QAAQ,CAAkB;IAEzD,OAAO,CAAC,UAAU,CAAa;IAC/B,OAAO,CAAC,YAAY,CAAkB;IACtC,OAAO,CAAC,WAAW,CAAgB;IACnC,OAAO,CAAC,eAAe,CAAkC;gBAE7C,OAAO,EAAE,yBAAyB,EAAE,OAAO,CAAC,EAAE,oBAAoB;IAY9E,IAAW,SAAS,IAAI,MAAM,CAE7B;IAED;;OAEG;IACI,IAAI,IAAI,IAAI;IASnB;;;OAGG;IACI,OAAO,IAAI,IAAI;IAmBtB;;OAEG;IACI,SAAS,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI;IAW3C;;OAEG;IACI,SAAS,CAAC,MAAM,EAAE,QAAQ,GAAG,IAAI;IAMxC;;OAEG;IACI,eAAe,CAAC,MAAM,EAAE,QAAQ,GAAG,IAAI;IAMvC,SAAS,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI;IAMrC,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAM7B,KAAK,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,GAAE,MAAW,GAAG,IAAI;IAMxC,cAAc,IAAI,IAAI;IAMtB,SAAS,CAAC,GAAG,CAAC,EAAE,QAAQ,GAAG,QAAQ;IAS1C,IAAW,WAAW,IAAI,MAAM,CAE/B;IAED,IAAW,WAAW,CAAC,KAAK,EAAE,MAAM,EAEnC;IAED;;OAEG;IACI,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAM/B,QAAQ,IAAI,IAAI;IAQvB,IAAW,SAAS,IAAI,wBAAwB,CAE/C;IAED,IAAW,SAAS,CAAC,IAAI,EAAE,wBAAwB,EAElD;IAEM,aAAa,CAAC,IAAI,EAAE,wBAAwB,GAAG,IAAI;IAMnD,YAAY,IAAI,IAAI;IAY3B,IAAW,qBAAqB,IAAI,OAAO,CAE1C;IAEM,iBAAiB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;IASzC,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK,GAAG,cAAc,GAAG,aAAa,GAAG,IAAI;IAS1E,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK,GAAG,cAAc,GAAG,aAAa,GAAG,IAAI;IAS5E,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IASjC,SAAS,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;IAKpE,QAAQ,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;IAKnE,UAAU,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;IAKrE,SAAS,IAAI,IAAI;IAKjB,SAAS,IAAI,IAAI;IAKjB,MAAM,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI;IAKlC,MAAM,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI;IAKlC,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,GAAE,MAAU,EAAE,QAAQ,GAAE,MAAoB,EAAE,gBAAgB,GAAE,OAAe,GAAG,IAAI;IAK1I,IAAI,IAAI,IAAI;IAKZ,MAAM,IAAI,IAAI;IAKd,IAAI,IAAI,IAAI;IAKZ,SAAS,CACd,KAAK,EAAE,GAAG,EACV,EAAE,CAAC,EAAE,MAAM,EACX,EAAE,CAAC,EAAE,MAAM,EACX,EAAE,CAAC,EAAE,MAAM,EACX,EAAE,CAAC,EAAE,MAAM,EACX,EAAE,CAAC,EAAE,MAAM,EACX,EAAE,CAAC,EAAE,MAAM,EACX,EAAE,CAAC,EAAE,MAAM,EACX,EAAE,CAAC,EAAE,MAAM,GACV,IAAI;CAYR"}
|
|
@@ -0,0 +1,163 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Standard Canvas 2D Text Metrics Mock
|
|
3
|
+
*/
|
|
4
|
+
export interface ITextMetrics {
|
|
5
|
+
width: number;
|
|
6
|
+
actualBoundingBoxLeft: number;
|
|
7
|
+
actualBoundingBoxRight: number;
|
|
8
|
+
actualBoundingBoxAscent: number;
|
|
9
|
+
actualBoundingBoxDescent: number;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Minimal CanvasRenderingContext2D Duck-Type Interface
|
|
13
|
+
* Matching methods and properties used by the framework rendering pipeline.
|
|
14
|
+
*/
|
|
15
|
+
export interface ICanvasRenderingContext2D {
|
|
16
|
+
canvas: any;
|
|
17
|
+
fillStyle: string | CanvasGradient | CanvasPattern;
|
|
18
|
+
strokeStyle: string | CanvasGradient | CanvasPattern;
|
|
19
|
+
lineWidth: number;
|
|
20
|
+
lineCap: CanvasLineCap;
|
|
21
|
+
lineJoin: CanvasLineJoin;
|
|
22
|
+
miterLimit: number;
|
|
23
|
+
globalAlpha: number;
|
|
24
|
+
globalCompositeOperation: GlobalCompositeOperation;
|
|
25
|
+
imageSmoothingEnabled: boolean;
|
|
26
|
+
font: string;
|
|
27
|
+
textAlign: CanvasTextAlign;
|
|
28
|
+
textBaseline: CanvasTextBaseline;
|
|
29
|
+
shadowBlur: number;
|
|
30
|
+
shadowColor: string;
|
|
31
|
+
shadowOffsetX: number;
|
|
32
|
+
shadowOffsetY: number;
|
|
33
|
+
save(): void;
|
|
34
|
+
restore(): void;
|
|
35
|
+
scale(x: number, y: number): void;
|
|
36
|
+
rotate(angle: number): void;
|
|
37
|
+
translate(x: number, y: number): void;
|
|
38
|
+
transform(a: number, b: number, c: number, d: number, e: number, f: number): void;
|
|
39
|
+
setTransform(a: number, b: number, c: number, d: number, e: number, f: number): void;
|
|
40
|
+
resetTransform(): void;
|
|
41
|
+
getTransform(): DOMMatrix;
|
|
42
|
+
clearRect(x: number, y: number, w: number, h: number): void;
|
|
43
|
+
fillRect(x: number, y: number, w: number, h: number): void;
|
|
44
|
+
strokeRect(x: number, y: number, w: number, h: number): void;
|
|
45
|
+
beginPath(): void;
|
|
46
|
+
closePath(): void;
|
|
47
|
+
moveTo(x: number, y: number): void;
|
|
48
|
+
lineTo(x: number, y: number): void;
|
|
49
|
+
arc(x: number, y: number, radius: number, startAngle: number, endAngle: number, counterclockwise?: boolean): void;
|
|
50
|
+
rect(x: number, y: number, w: number, h: number): void;
|
|
51
|
+
roundRect?(x: number, y: number, w: number, h: number, radii?: number | number[]): void;
|
|
52
|
+
ellipse?(x: number, y: number, radiusX: number, radiusY: number, rotation: number, startAngle: number, endAngle: number, counterclockwise?: boolean): void;
|
|
53
|
+
arcTo?(x1: number, y1: number, x2: number, y2: number, radius: number): void;
|
|
54
|
+
fill(): void;
|
|
55
|
+
stroke(): void;
|
|
56
|
+
clip(): void;
|
|
57
|
+
drawImage(image: any, sx: number, sy: number, sw?: number, sh?: number, dx?: number, dy?: number, dw?: number, dh?: number): void;
|
|
58
|
+
fillText(text: string, x: number, y: number, maxWidth?: number): void;
|
|
59
|
+
strokeText(text: string, x: number, y: number, maxWidth?: number): void;
|
|
60
|
+
measureText(text: string): ITextMetrics;
|
|
61
|
+
createLinearGradient?(x0: number, y0: number, x1: number, y1: number): CanvasGradient;
|
|
62
|
+
createRadialGradient?(x0: number, y0: number, r0: number, x1: number, y1: number, r1: number): CanvasGradient;
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* In-memory Mock Canvas 2D Rendering Context
|
|
66
|
+
* Runs in headless Node.js without native binary dependencies and records draw calls for test inspection.
|
|
67
|
+
*/
|
|
68
|
+
export declare class MockCanvasRenderingContext2D implements ICanvasRenderingContext2D {
|
|
69
|
+
canvas: any;
|
|
70
|
+
fillStyle: string | CanvasGradient | CanvasPattern;
|
|
71
|
+
strokeStyle: string | CanvasGradient | CanvasPattern;
|
|
72
|
+
lineWidth: number;
|
|
73
|
+
lineCap: CanvasLineCap;
|
|
74
|
+
lineJoin: CanvasLineJoin;
|
|
75
|
+
miterLimit: number;
|
|
76
|
+
globalAlpha: number;
|
|
77
|
+
globalCompositeOperation: GlobalCompositeOperation;
|
|
78
|
+
imageSmoothingEnabled: boolean;
|
|
79
|
+
font: string;
|
|
80
|
+
textAlign: CanvasTextAlign;
|
|
81
|
+
textBaseline: CanvasTextBaseline;
|
|
82
|
+
shadowBlur: number;
|
|
83
|
+
shadowColor: string;
|
|
84
|
+
shadowOffsetX: number;
|
|
85
|
+
shadowOffsetY: number;
|
|
86
|
+
drawCalls: number;
|
|
87
|
+
callHistory: Array<{
|
|
88
|
+
method: string;
|
|
89
|
+
args: any[];
|
|
90
|
+
}>;
|
|
91
|
+
private _matrix;
|
|
92
|
+
private _stateStack;
|
|
93
|
+
constructor(canvas: any);
|
|
94
|
+
save(): void;
|
|
95
|
+
restore(): void;
|
|
96
|
+
scale(x: number, y: number): void;
|
|
97
|
+
rotate(angle: number): void;
|
|
98
|
+
translate(x: number, y: number): void;
|
|
99
|
+
transform(a: number, b: number, c: number, d: number, e: number, f: number): void;
|
|
100
|
+
setTransform(a: number, b: number, c: number, d: number, e: number, f: number): void;
|
|
101
|
+
resetTransform(): void;
|
|
102
|
+
getTransform(): DOMMatrix;
|
|
103
|
+
clearRect(x: number, y: number, w: number, h: number): void;
|
|
104
|
+
fillRect(x: number, y: number, w: number, h: number): void;
|
|
105
|
+
strokeRect(x: number, y: number, w: number, h: number): void;
|
|
106
|
+
beginPath(): void;
|
|
107
|
+
closePath(): void;
|
|
108
|
+
moveTo(x: number, y: number): void;
|
|
109
|
+
lineTo(x: number, y: number): void;
|
|
110
|
+
arc(x: number, y: number, radius: number, startAngle: number, endAngle: number, counterclockwise?: boolean): void;
|
|
111
|
+
rect(x: number, y: number, w: number, h: number): void;
|
|
112
|
+
roundRect(x: number, y: number, w: number, h: number, radii?: number | number[]): void;
|
|
113
|
+
arcTo(x1: number, y1: number, x2: number, y2: number, radius: number): void;
|
|
114
|
+
ellipse(x: number, y: number, radiusX: number, radiusY: number, rotation: number, startAngle: number, endAngle: number, counterclockwise?: boolean): void;
|
|
115
|
+
fill(): void;
|
|
116
|
+
stroke(): void;
|
|
117
|
+
clip(): void;
|
|
118
|
+
drawImage(image: any, ...args: any[]): void;
|
|
119
|
+
fillText(text: string, x: number, y: number, maxWidth?: number): void;
|
|
120
|
+
strokeText(text: string, x: number, y: number, maxWidth?: number): void;
|
|
121
|
+
measureText(text: string): ITextMetrics;
|
|
122
|
+
createLinearGradient(_x0: number, _y0: number, _x1: number, _y1: number): CanvasGradient;
|
|
123
|
+
createRadialGradient(_x0: number, _y0: number, _r0: number, _x1: number, _y1: number, _r1: number): CanvasGradient;
|
|
124
|
+
clearMock(): void;
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* In-memory Mock Canvas Element
|
|
128
|
+
*/
|
|
129
|
+
export declare class MockCanvasElement {
|
|
130
|
+
width: number;
|
|
131
|
+
height: number;
|
|
132
|
+
style: {
|
|
133
|
+
width: string;
|
|
134
|
+
height: string;
|
|
135
|
+
position: string;
|
|
136
|
+
left: string;
|
|
137
|
+
top: string;
|
|
138
|
+
display: string;
|
|
139
|
+
};
|
|
140
|
+
private _context;
|
|
141
|
+
constructor(width?: number, height?: number);
|
|
142
|
+
getContext(contextId: string): ICanvasRenderingContext2D | null;
|
|
143
|
+
getBoundingClientRect(): {
|
|
144
|
+
left: number;
|
|
145
|
+
top: number;
|
|
146
|
+
right: number;
|
|
147
|
+
bottom: number;
|
|
148
|
+
width: number;
|
|
149
|
+
height: number;
|
|
150
|
+
x: number;
|
|
151
|
+
y: number;
|
|
152
|
+
};
|
|
153
|
+
addEventListener(_type: string, _listener: any): void;
|
|
154
|
+
removeEventListener(_type: string, _listener: any): void;
|
|
155
|
+
dispatchEvent(_event: any): boolean;
|
|
156
|
+
}
|
|
157
|
+
export declare function createMockCanvas(width?: number, height?: number): MockCanvasElement;
|
|
158
|
+
export declare const CanvasMock: {
|
|
159
|
+
MockCanvasElement: typeof MockCanvasElement;
|
|
160
|
+
MockCanvasRenderingContext2D: typeof MockCanvasRenderingContext2D;
|
|
161
|
+
createMockCanvas: typeof createMockCanvas;
|
|
162
|
+
};
|
|
163
|
+
//# sourceMappingURL=CanvasMock.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CanvasMock.d.ts","sourceRoot":"","sources":["../../src/rendering/CanvasMock.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
import { Vector2 } from '../math/Vector2';
|
|
2
|
+
import { Color } from '../math/Color';
|
|
3
|
+
import { Sprite } from './Sprite';
|
|
4
|
+
import { CanvasContext } from './CanvasContext';
|
|
5
|
+
import { ICanvasRenderingContext2D } from './CanvasMock';
|
|
6
|
+
export interface Particle {
|
|
7
|
+
active: boolean;
|
|
8
|
+
x: number;
|
|
9
|
+
y: number;
|
|
10
|
+
vx: number;
|
|
11
|
+
vy: number;
|
|
12
|
+
life: number;
|
|
13
|
+
maxLife: number;
|
|
14
|
+
startSize: number;
|
|
15
|
+
endSize: number;
|
|
16
|
+
currentSize: number;
|
|
17
|
+
rotation: number;
|
|
18
|
+
angularVelocity: number;
|
|
19
|
+
startR: number;
|
|
20
|
+
startG: number;
|
|
21
|
+
startB: number;
|
|
22
|
+
startA: number;
|
|
23
|
+
endR: number;
|
|
24
|
+
endG: number;
|
|
25
|
+
endB: number;
|
|
26
|
+
endA: number;
|
|
27
|
+
r: number;
|
|
28
|
+
g: number;
|
|
29
|
+
b: number;
|
|
30
|
+
a: number;
|
|
31
|
+
}
|
|
32
|
+
export type RangeValue = number | [number, number];
|
|
33
|
+
export interface ParticleEmitterConfig {
|
|
34
|
+
/** Maximum particles in the pre-allocated pool (default: 500) */
|
|
35
|
+
maxParticles?: number;
|
|
36
|
+
/** Continuous emission rate in particles per second (default: 50) */
|
|
37
|
+
rate?: number;
|
|
38
|
+
/** Lifetime in seconds [min, max] or scalar (default: [0.5, 1.5]) */
|
|
39
|
+
lifetime?: RangeValue;
|
|
40
|
+
/** Speed in pixels per second [min, max] (default: [50, 150]) */
|
|
41
|
+
speed?: RangeValue;
|
|
42
|
+
/** Emission angle in radians [min, max] (default: [0, Math.PI * 2]) */
|
|
43
|
+
angle?: RangeValue;
|
|
44
|
+
/** Angular spread around angle in radians (default: 0) */
|
|
45
|
+
spread?: number;
|
|
46
|
+
/** Particle size in pixels at birth [min, max] (default: [4, 8]) */
|
|
47
|
+
startSize?: RangeValue;
|
|
48
|
+
/** Particle size in pixels at death [min, max] (default: [0, 2]) */
|
|
49
|
+
endSize?: RangeValue;
|
|
50
|
+
/** Starting color (default: Color.WHITE) */
|
|
51
|
+
startColor?: Color | string;
|
|
52
|
+
/** Ending color (default: Color.TRANSPARENT) */
|
|
53
|
+
endColor?: Color | string;
|
|
54
|
+
/** Constant external acceleration (e.g. gravity: { x: 0, y: 150 }) */
|
|
55
|
+
gravity?: Vector2 | {
|
|
56
|
+
x: number;
|
|
57
|
+
y: number;
|
|
58
|
+
};
|
|
59
|
+
/** Acceleration directed away from emitter origin (positive) or inward (negative) */
|
|
60
|
+
radialAcceleration?: RangeValue;
|
|
61
|
+
/** Perpendicular orbital acceleration (vortex effect) */
|
|
62
|
+
tangentialAcceleration?: RangeValue;
|
|
63
|
+
/** Angular spin speed in radians per second [min, max] */
|
|
64
|
+
angularVelocity?: RangeValue;
|
|
65
|
+
/** Canvas composite operation (default: 'source-over', use 'lighter' for fire/glow) */
|
|
66
|
+
blendMode?: GlobalCompositeOperation;
|
|
67
|
+
/** Particle visual shape */
|
|
68
|
+
shape?: 'circle' | 'rect' | 'sprite';
|
|
69
|
+
/** Texture or Sprite used when shape === 'sprite' */
|
|
70
|
+
texture?: CanvasImageSource | Sprite | any;
|
|
71
|
+
}
|
|
72
|
+
export declare class ParticleSystem {
|
|
73
|
+
position: Vector2;
|
|
74
|
+
config: Required<Omit<ParticleEmitterConfig, 'gravity' | 'texture' | 'startColor' | 'endColor'>> & {
|
|
75
|
+
gravity: Vector2;
|
|
76
|
+
startColor: Color;
|
|
77
|
+
endColor: Color;
|
|
78
|
+
texture?: CanvasImageSource | Sprite | any;
|
|
79
|
+
};
|
|
80
|
+
private _pool;
|
|
81
|
+
private _activeCount;
|
|
82
|
+
private _emitTimer;
|
|
83
|
+
isEmitting: boolean;
|
|
84
|
+
constructor(config?: ParticleEmitterConfig);
|
|
85
|
+
get activeCount(): number;
|
|
86
|
+
private _resolveRange;
|
|
87
|
+
/**
|
|
88
|
+
* Instantly emits N particles (e.g. for explosions or impacts).
|
|
89
|
+
*/
|
|
90
|
+
burst(count: number, originX?: number, originY?: number): void;
|
|
91
|
+
private _spawnParticle;
|
|
92
|
+
/**
|
|
93
|
+
* Advances simulation using O(1) swap-and-pop despawning with zero allocations.
|
|
94
|
+
*/
|
|
95
|
+
update(dt: number): void;
|
|
96
|
+
private _getRawContext;
|
|
97
|
+
/**
|
|
98
|
+
* Fast Canvas2D batch rendering.
|
|
99
|
+
*/
|
|
100
|
+
render(context: CanvasRenderingContext2D | ICanvasRenderingContext2D | CanvasContext | any): void;
|
|
101
|
+
clear(): void;
|
|
102
|
+
}
|
|
103
|
+
//# sourceMappingURL=ParticleSystem.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ParticleSystem.d.ts","sourceRoot":"","sources":["../../src/rendering/ParticleSystem.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
import { Vector2 } from '../math/Vector2';
|
|
2
|
+
import { CanvasContext } from './CanvasContext';
|
|
3
|
+
import { ICanvasRenderingContext2D, MockCanvasElement } from './CanvasMock';
|
|
4
|
+
import { Camera2D } from './Camera2D';
|
|
5
|
+
export type ScaleMode = 'letterbox' | 'fit' | 'stretch' | 'none' | 'fill';
|
|
6
|
+
export interface RendererConfig {
|
|
7
|
+
canvas?: HTMLCanvasElement | MockCanvasElement | string;
|
|
8
|
+
width?: number;
|
|
9
|
+
height?: number;
|
|
10
|
+
scaleMode?: ScaleMode;
|
|
11
|
+
pixelArt?: boolean;
|
|
12
|
+
backgroundColor?: string;
|
|
13
|
+
highDPI?: boolean;
|
|
14
|
+
maxPixelRatio?: number;
|
|
15
|
+
dpr?: number;
|
|
16
|
+
}
|
|
17
|
+
export interface RenderCommand {
|
|
18
|
+
layer?: number;
|
|
19
|
+
zIndex?: number;
|
|
20
|
+
camera?: Camera2D | null;
|
|
21
|
+
render: (ctx: CanvasContext) => void;
|
|
22
|
+
}
|
|
23
|
+
export declare enum RenderLayer {
|
|
24
|
+
BACKGROUND = -1000,
|
|
25
|
+
DEFAULT = 0,
|
|
26
|
+
ENTITIES = 100,
|
|
27
|
+
EFFECTS = 200,
|
|
28
|
+
FOREGROUND = 300,
|
|
29
|
+
UI = 1000,
|
|
30
|
+
DEBUG = 2000
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* 2D Canvas Renderer managing viewport resolution, HiDPI buffer scaling,
|
|
34
|
+
* letterbox/fit/stretch presentation, frame lifecycle, and layer composition.
|
|
35
|
+
*/
|
|
36
|
+
export declare class Renderer {
|
|
37
|
+
readonly canvas: any;
|
|
38
|
+
readonly ctx: CanvasContext;
|
|
39
|
+
readonly rawContext: ICanvasRenderingContext2D;
|
|
40
|
+
readonly virtualWidth: number;
|
|
41
|
+
readonly virtualHeight: number;
|
|
42
|
+
readonly scaleMode: ScaleMode;
|
|
43
|
+
readonly pixelArt: boolean;
|
|
44
|
+
readonly highDPI: boolean;
|
|
45
|
+
readonly maxPixelRatio: number;
|
|
46
|
+
backgroundColor: string;
|
|
47
|
+
dpr: number;
|
|
48
|
+
scaleX: number;
|
|
49
|
+
scaleY: number;
|
|
50
|
+
offsetX: number;
|
|
51
|
+
offsetY: number;
|
|
52
|
+
cssWidth: number;
|
|
53
|
+
cssHeight: number;
|
|
54
|
+
drawCalls: number;
|
|
55
|
+
private _isFrameActive;
|
|
56
|
+
private _renderQueue;
|
|
57
|
+
constructor(config?: RendererConfig);
|
|
58
|
+
/**
|
|
59
|
+
* Recalculates canvas display dimensions, physical buffer size,
|
|
60
|
+
* and scale factors according to container/window dimensions and active scaleMode.
|
|
61
|
+
*/
|
|
62
|
+
resize(containerWidth?: number, containerHeight?: number): void;
|
|
63
|
+
/**
|
|
64
|
+
* Converts browser client window coordinates (e.g., mouse / touch clientX, clientY)
|
|
65
|
+
* to game virtual coordinates (0 to virtualWidth, 0 to virtualHeight).
|
|
66
|
+
*/
|
|
67
|
+
screenToVirtual(clientX: number, clientY: number, out?: Vector2): Vector2;
|
|
68
|
+
/**
|
|
69
|
+
* Converts game virtual coordinates to browser client coordinates.
|
|
70
|
+
*/
|
|
71
|
+
virtualToScreen(vx: number, vy: number, out?: Vector2): Vector2;
|
|
72
|
+
/**
|
|
73
|
+
* Clears entire physical canvas buffer with background color.
|
|
74
|
+
*/
|
|
75
|
+
clear(color?: string): void;
|
|
76
|
+
/**
|
|
77
|
+
* Begins frame rendering:
|
|
78
|
+
* - Resets draw call counters
|
|
79
|
+
* - Clears canvas with background color
|
|
80
|
+
* - Sets initial high-DPI viewport transform
|
|
81
|
+
*/
|
|
82
|
+
beginFrame(): void;
|
|
83
|
+
/**
|
|
84
|
+
* Ends frame rendering:
|
|
85
|
+
* - Flushes queued render commands sorted by layer & zIndex
|
|
86
|
+
* - Restores context save depth to 0 if left unbalanced
|
|
87
|
+
*/
|
|
88
|
+
endFrame(): void;
|
|
89
|
+
/**
|
|
90
|
+
* Submits a render command to be executed in layer & zIndex order on endFrame().
|
|
91
|
+
*/
|
|
92
|
+
submit(command: RenderCommand): void;
|
|
93
|
+
/**
|
|
94
|
+
* Sorts and renders all queued render commands.
|
|
95
|
+
*/
|
|
96
|
+
flushQueue(): void;
|
|
97
|
+
}
|
|
98
|
+
//# sourceMappingURL=Renderer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Renderer.d.ts","sourceRoot":"","sources":["../../src/rendering/Renderer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { Color } from '../math/Color';
|
|
2
|
+
import { Vector2 } from '../math/Vector2';
|
|
3
|
+
import { CanvasContext } from './CanvasContext';
|
|
4
|
+
import { ICanvasRenderingContext2D } from './CanvasMock';
|
|
5
|
+
export type ContextLike = CanvasRenderingContext2D | ICanvasRenderingContext2D | CanvasContext | any;
|
|
6
|
+
export declare class Shapes {
|
|
7
|
+
private static _getRaw;
|
|
8
|
+
private static _resolveColor;
|
|
9
|
+
static line(ctx: ContextLike, x1: number, y1: number, x2: number, y2: number, color: Color | string, lineWidth?: number, lineCap?: CanvasLineCap): void;
|
|
10
|
+
static rect(ctx: ContextLike, x: number, y: number, width: number, height: number, color: Color | string, filled?: boolean, lineWidth?: number): void;
|
|
11
|
+
static roundedRect(ctx: ContextLike, x: number, y: number, width: number, height: number, radius: number, color: Color | string, filled?: boolean, lineWidth?: number): void;
|
|
12
|
+
static circle(ctx: ContextLike, x: number, y: number, radius: number, color: Color | string, filled?: boolean, lineWidth?: number): void;
|
|
13
|
+
static arc(ctx: ContextLike, x: number, y: number, radius: number, startAngle: number, endAngle: number, color: Color | string, anticlockwise?: boolean, lineWidth?: number): void;
|
|
14
|
+
static ellipse(ctx: ContextLike, x: number, y: number, radiusX: number, radiusY: number, rotation: number | undefined, color: Color | string, filled?: boolean, lineWidth?: number): void;
|
|
15
|
+
static polygon(ctx: ContextLike, points: Array<{
|
|
16
|
+
x: number;
|
|
17
|
+
y: number;
|
|
18
|
+
} | Vector2>, color: Color | string, filled?: boolean, lineWidth?: number): void;
|
|
19
|
+
static path(ctx: ContextLike, points: Array<{
|
|
20
|
+
x: number;
|
|
21
|
+
y: number;
|
|
22
|
+
} | Vector2>, color: Color | string, closed?: boolean, lineWidth?: number): void;
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=Shapes.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Shapes.d.ts","sourceRoot":"","sources":["../../src/rendering/Shapes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AACtC,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,yBAAyB,EAAE,MAAM,cAAc,CAAC;AAEzD,MAAM,MAAM,WAAW,GAAG,wBAAwB,GAAG,yBAAyB,GAAG,aAAa,GAAG,GAAG,CAAC;AAErG,qBAAa,MAAM;IACjB,OAAO,CAAC,MAAM,CAAC,OAAO;IAItB,OAAO,CAAC,MAAM,CAAC,aAAa;WAId,IAAI,CAChB,GAAG,EAAE,WAAW,EAChB,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,MAAM,EACV,KAAK,EAAE,KAAK,GAAG,MAAM,EACrB,SAAS,GAAE,MAAU,EACrB,OAAO,GAAE,aAAsB,GAC9B,IAAI;WAWO,IAAI,CAChB,GAAG,EAAE,WAAW,EAChB,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,MAAM,EACT,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,KAAK,GAAG,MAAM,EACrB,MAAM,GAAE,OAAc,EACtB,SAAS,GAAE,MAAU,GACpB,IAAI;WAaO,WAAW,CACvB,GAAG,EAAE,WAAW,EAChB,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,MAAM,EACT,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,KAAK,GAAG,MAAM,EACrB,MAAM,GAAE,OAAc,EACtB,SAAS,GAAE,MAAU,GACpB,IAAI;WAiCO,MAAM,CAClB,GAAG,EAAE,WAAW,EAChB,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,MAAM,EACT,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,KAAK,GAAG,MAAM,EACrB,MAAM,GAAE,OAAc,EACtB,SAAS,GAAE,MAAU,GACpB,IAAI;WAeO,GAAG,CACf,GAAG,EAAE,WAAW,EAChB,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,MAAM,EACT,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,KAAK,GAAG,MAAM,EACrB,aAAa,GAAE,OAAe,EAC9B,SAAS,GAAE,MAAU,GACpB,IAAI;WASO,OAAO,CACnB,GAAG,EAAE,WAAW,EAChB,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,MAAM,EACT,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,YAAI,EACpB,KAAK,EAAE,KAAK,GAAG,MAAM,EACrB,MAAM,GAAE,OAAc,EACtB,SAAS,GAAE,MAAU,GACpB,IAAI;WAyBO,OAAO,CACnB,GAAG,EAAE,WAAW,EAChB,MAAM,EAAE,KAAK,CAAC;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,EACjD,KAAK,EAAE,KAAK,GAAG,MAAM,EACrB,MAAM,GAAE,OAAc,EACtB,SAAS,GAAE,MAAU,GACpB,IAAI;WAqBO,IAAI,CAChB,GAAG,EAAE,WAAW,EAChB,MAAM,EAAE,KAAK,CAAC;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,EACjD,KAAK,EAAE,KAAK,GAAG,MAAM,EACrB,MAAM,GAAE,OAAe,EACvB,SAAS,GAAE,MAAU,GACpB,IAAI;CAaR"}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import { Vector2 } from '../math/Vector2';
|
|
2
|
+
import { Rect } from '../math/Rect';
|
|
3
|
+
import { Color } from '../math/Color';
|
|
4
|
+
import { Transform2D } from '../math/Transform2D';
|
|
5
|
+
import { CanvasContext } from './CanvasContext';
|
|
6
|
+
import { ICanvasRenderingContext2D } from './CanvasMock';
|
|
7
|
+
export interface SpriteConfig {
|
|
8
|
+
/** CanvasImageSource: HTMLImageElement, HTMLCanvasElement, ImageBitmap, OffscreenCanvas, or MockCanvasElement */
|
|
9
|
+
texture: CanvasImageSource | any;
|
|
10
|
+
/** Source rectangle in the texture (for sprite sheets / atlases). Default: full texture */
|
|
11
|
+
sourceRect?: Rect | {
|
|
12
|
+
x: number;
|
|
13
|
+
y: number;
|
|
14
|
+
width: number;
|
|
15
|
+
height: number;
|
|
16
|
+
};
|
|
17
|
+
/** Destination rendering width. Default: sourceRect.width or texture.width */
|
|
18
|
+
width?: number;
|
|
19
|
+
/** Destination rendering height. Default: sourceRect.height or texture.height */
|
|
20
|
+
height?: number;
|
|
21
|
+
/** Normalized pivot/anchor [0, 1]. Default: (0.5, 0.5) for center */
|
|
22
|
+
anchor?: Vector2 | {
|
|
23
|
+
x: number;
|
|
24
|
+
y: number;
|
|
25
|
+
};
|
|
26
|
+
/** Tint color applied to sprite. Default: null (no tint) */
|
|
27
|
+
tint?: Color | string | null;
|
|
28
|
+
/** Horizontal flip */
|
|
29
|
+
flipX?: boolean;
|
|
30
|
+
/** Vertical flip */
|
|
31
|
+
flipY?: boolean;
|
|
32
|
+
/** Opacity [0.0, 1.0]. Default: 1.0 */
|
|
33
|
+
opacity?: number;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Cache for tinted offscreen canvases to eliminate per-frame canvas allocations.
|
|
37
|
+
*/
|
|
38
|
+
export declare class TextureTintCache {
|
|
39
|
+
private static _cache;
|
|
40
|
+
static getTintedTexture(source: any, sourceRect: Rect, tint: Color): any | null;
|
|
41
|
+
static clear(): void;
|
|
42
|
+
}
|
|
43
|
+
export declare class Sprite {
|
|
44
|
+
texture: any;
|
|
45
|
+
sourceRect: Rect;
|
|
46
|
+
width: number;
|
|
47
|
+
height: number;
|
|
48
|
+
anchor: Vector2;
|
|
49
|
+
tint: Color | null;
|
|
50
|
+
flipX: boolean;
|
|
51
|
+
flipY: boolean;
|
|
52
|
+
opacity: number;
|
|
53
|
+
private _cachedBounds;
|
|
54
|
+
constructor(config: SpriteConfig);
|
|
55
|
+
setSourceRect(x: number, y: number, width: number, height: number): this;
|
|
56
|
+
setAnchor(x: number, y: number): this;
|
|
57
|
+
setDimensions(width: number, height: number): this;
|
|
58
|
+
setFlip(flipX: boolean, flipY: boolean): this;
|
|
59
|
+
setTint(tint: Color | string | null): this;
|
|
60
|
+
/**
|
|
61
|
+
* Returns the local bounding box relative to the anchor point.
|
|
62
|
+
*/
|
|
63
|
+
getBounds(out?: Rect): Rect;
|
|
64
|
+
private _getRawContext;
|
|
65
|
+
/**
|
|
66
|
+
* Draws the sprite at an explicit world position, rotation, and scale.
|
|
67
|
+
*/
|
|
68
|
+
draw(context: CanvasRenderingContext2D | ICanvasRenderingContext2D | CanvasContext | any, x: number, y: number, rotation?: number, scaleX?: number, scaleY?: number): void;
|
|
69
|
+
/**
|
|
70
|
+
* Draws the sprite using a Transform2D hierarchy component.
|
|
71
|
+
*/
|
|
72
|
+
drawTransform(context: CanvasRenderingContext2D | ICanvasRenderingContext2D | CanvasContext | any, transform: Transform2D): void;
|
|
73
|
+
}
|
|
74
|
+
//# sourceMappingURL=Sprite.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Sprite.d.ts","sourceRoot":"","sources":["../../src/rendering/Sprite.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { Rect } from '../math/Rect';
|
|
2
|
+
import { AnimationClip, PlaybackMode } from './Animation';
|
|
3
|
+
export interface SpriteSheetGridOptions {
|
|
4
|
+
frameWidth: number;
|
|
5
|
+
frameHeight: number;
|
|
6
|
+
columns?: number;
|
|
7
|
+
rows?: number;
|
|
8
|
+
spacing?: number;
|
|
9
|
+
margin?: number;
|
|
10
|
+
totalFrames?: number;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Utility for slicing texture atlases and grid sprite sheets.
|
|
14
|
+
*/
|
|
15
|
+
export declare class SpriteSheet {
|
|
16
|
+
readonly texture: any;
|
|
17
|
+
readonly frames: Rect[];
|
|
18
|
+
constructor(texture: any, options: SpriteSheetGridOptions);
|
|
19
|
+
getFrame(index: number): Rect;
|
|
20
|
+
createClip(name: string, frameIndices: number[], fps?: number, wrapMode?: PlaybackMode): AnimationClip;
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=SpriteSheet.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SpriteSheet.d.ts","sourceRoot":"","sources":["../../src/rendering/SpriteSheet.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AACpC,OAAO,EAAE,aAAa,EAAkB,YAAY,EAAE,MAAM,aAAa,CAAC;AAE1E,MAAM,WAAW,sBAAsB;IACrC,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;GAEG;AACH,qBAAa,WAAW;IACtB,SAAgB,OAAO,EAAE,GAAG,CAAC;IAC7B,SAAgB,MAAM,EAAE,IAAI,EAAE,CAAM;gBAExB,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,sBAAsB;IAyBlD,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAO7B,UAAU,CACf,IAAI,EAAE,MAAM,EACZ,YAAY,EAAE,MAAM,EAAE,EACtB,GAAG,GAAE,MAAW,EAChB,QAAQ,GAAE,YAAqB,GAC9B,aAAa;CAUjB"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export * from './CanvasMock';
|
|
2
|
+
export * from './CanvasContext';
|
|
3
|
+
export * from './Renderer';
|
|
4
|
+
export * from './Camera2D';
|
|
5
|
+
export * from './Sprite';
|
|
6
|
+
export * from './Animation';
|
|
7
|
+
export * from './SpriteSheet';
|
|
8
|
+
export * from './ParticleSystem';
|
|
9
|
+
export * from './Shapes';
|
|
10
|
+
export * from './AssetLoader';
|
|
11
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/rendering/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,iBAAiB,CAAC;AAChC,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC;AAC3B,cAAc,UAAU,CAAC;AACzB,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,kBAAkB,CAAC;AACjC,cAAc,UAAU,CAAC;AACzB,cAAc,eAAe,CAAC"}
|