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.
Files changed (149) hide show
  1. package/README.md +55 -0
  2. package/cli/bin.cjs +99 -0
  3. package/dist/audio/AudioBus.d.ts +30 -0
  4. package/dist/audio/AudioBus.d.ts.map +1 -0
  5. package/dist/audio/AudioMock.d.ts +112 -0
  6. package/dist/audio/AudioMock.d.ts.map +1 -0
  7. package/dist/audio/ProceduralAudio.d.ts +48 -0
  8. package/dist/audio/ProceduralAudio.d.ts.map +1 -0
  9. package/dist/audio/SoundManager.d.ts +73 -0
  10. package/dist/audio/SoundManager.d.ts.map +1 -0
  11. package/dist/audio/VoicePool.d.ts +26 -0
  12. package/dist/audio/VoicePool.d.ts.map +1 -0
  13. package/dist/audio/index.d.ts +7 -0
  14. package/dist/audio/index.d.ts.map +1 -0
  15. package/dist/audio/types.d.ts +87 -0
  16. package/dist/audio/types.d.ts.map +1 -0
  17. package/dist/core/EventEmitter.d.ts +64 -0
  18. package/dist/core/EventEmitter.d.ts.map +1 -0
  19. package/dist/core/Game.d.ts +248 -0
  20. package/dist/core/Game.d.ts.map +1 -0
  21. package/dist/core/GameLoop.d.ts +128 -0
  22. package/dist/core/GameLoop.d.ts.map +1 -0
  23. package/dist/core/Time.d.ts +73 -0
  24. package/dist/core/Time.d.ts.map +1 -0
  25. package/dist/core/index.d.ts +5 -0
  26. package/dist/core/index.d.ts.map +1 -0
  27. package/dist/entity/Component.d.ts +31 -0
  28. package/dist/entity/Component.d.ts.map +1 -0
  29. package/dist/entity/Entity.d.ts +61 -0
  30. package/dist/entity/Entity.d.ts.map +1 -0
  31. package/dist/entity/EntityManager.d.ts +46 -0
  32. package/dist/entity/EntityManager.d.ts.map +1 -0
  33. package/dist/entity/components/ColliderComponent.d.ts +47 -0
  34. package/dist/entity/components/ColliderComponent.d.ts.map +1 -0
  35. package/dist/entity/components/RigidBodyComponent.d.ts +38 -0
  36. package/dist/entity/components/RigidBodyComponent.d.ts.map +1 -0
  37. package/dist/entity/components/ScriptComponent.d.ts +32 -0
  38. package/dist/entity/components/ScriptComponent.d.ts.map +1 -0
  39. package/dist/entity/components/ShapeComponent.d.ts +50 -0
  40. package/dist/entity/components/ShapeComponent.d.ts.map +1 -0
  41. package/dist/entity/components/SpriteComponent.d.ts +31 -0
  42. package/dist/entity/components/SpriteComponent.d.ts.map +1 -0
  43. package/dist/entity/components/index.d.ts +6 -0
  44. package/dist/entity/components/index.d.ts.map +1 -0
  45. package/dist/entity/index.d.ts +5 -0
  46. package/dist/entity/index.d.ts.map +1 -0
  47. package/dist/index.cjs +4 -0
  48. package/dist/index.cjs.map +1 -0
  49. package/dist/index.d.ts +15 -0
  50. package/dist/index.d.ts.map +1 -0
  51. package/dist/index.js +6326 -0
  52. package/dist/index.js.map +1 -0
  53. package/dist/input/ActionMap.d.ts +91 -0
  54. package/dist/input/ActionMap.d.ts.map +1 -0
  55. package/dist/input/InputManager.d.ts +102 -0
  56. package/dist/input/InputManager.d.ts.map +1 -0
  57. package/dist/input/Pointer.d.ts +115 -0
  58. package/dist/input/Pointer.d.ts.map +1 -0
  59. package/dist/input/VirtualJoystick.d.ts +79 -0
  60. package/dist/input/VirtualJoystick.d.ts.map +1 -0
  61. package/dist/input/index.d.ts +5 -0
  62. package/dist/input/index.d.ts.map +1 -0
  63. package/dist/math/Circle.d.ts +39 -0
  64. package/dist/math/Circle.d.ts.map +1 -0
  65. package/dist/math/Color.d.ts +58 -0
  66. package/dist/math/Color.d.ts.map +1 -0
  67. package/dist/math/MathUtils.d.ts +82 -0
  68. package/dist/math/MathUtils.d.ts.map +1 -0
  69. package/dist/math/Matrix2D.d.ts +97 -0
  70. package/dist/math/Matrix2D.d.ts.map +1 -0
  71. package/dist/math/Rect.d.ts +54 -0
  72. package/dist/math/Rect.d.ts.map +1 -0
  73. package/dist/math/Transform2D.d.ts +47 -0
  74. package/dist/math/Transform2D.d.ts.map +1 -0
  75. package/dist/math/Vector2.d.ts +89 -0
  76. package/dist/math/Vector2.d.ts.map +1 -0
  77. package/dist/math/index.d.ts +8 -0
  78. package/dist/math/index.d.ts.map +1 -0
  79. package/dist/physics/BoxCollider2D.d.ts +38 -0
  80. package/dist/physics/BoxCollider2D.d.ts.map +1 -0
  81. package/dist/physics/CircleCollider2D.d.ts +27 -0
  82. package/dist/physics/CircleCollider2D.d.ts.map +1 -0
  83. package/dist/physics/Collider2D.d.ts +79 -0
  84. package/dist/physics/Collider2D.d.ts.map +1 -0
  85. package/dist/physics/CollisionFSM.d.ts +84 -0
  86. package/dist/physics/CollisionFSM.d.ts.map +1 -0
  87. package/dist/physics/ContactSolver.d.ts +58 -0
  88. package/dist/physics/ContactSolver.d.ts.map +1 -0
  89. package/dist/physics/Narrowphase.d.ts +25 -0
  90. package/dist/physics/Narrowphase.d.ts.map +1 -0
  91. package/dist/physics/PhysicsWorld2D.d.ts +75 -0
  92. package/dist/physics/PhysicsWorld2D.d.ts.map +1 -0
  93. package/dist/physics/Raycast.d.ts +38 -0
  94. package/dist/physics/Raycast.d.ts.map +1 -0
  95. package/dist/physics/RigidBody2D.d.ts +118 -0
  96. package/dist/physics/RigidBody2D.d.ts.map +1 -0
  97. package/dist/physics/SpatialGrid.d.ts +78 -0
  98. package/dist/physics/SpatialGrid.d.ts.map +1 -0
  99. package/dist/physics/index.d.ts +14 -0
  100. package/dist/physics/index.d.ts.map +1 -0
  101. package/dist/rendering/Animation.d.ts +62 -0
  102. package/dist/rendering/Animation.d.ts.map +1 -0
  103. package/dist/rendering/AssetLoader.d.ts +35 -0
  104. package/dist/rendering/AssetLoader.d.ts.map +1 -0
  105. package/dist/rendering/Camera2D.d.ts +109 -0
  106. package/dist/rendering/Camera2D.d.ts.map +1 -0
  107. package/dist/rendering/CanvasContext.d.ts +80 -0
  108. package/dist/rendering/CanvasContext.d.ts.map +1 -0
  109. package/dist/rendering/CanvasMock.d.ts +163 -0
  110. package/dist/rendering/CanvasMock.d.ts.map +1 -0
  111. package/dist/rendering/ParticleSystem.d.ts +103 -0
  112. package/dist/rendering/ParticleSystem.d.ts.map +1 -0
  113. package/dist/rendering/Renderer.d.ts +98 -0
  114. package/dist/rendering/Renderer.d.ts.map +1 -0
  115. package/dist/rendering/Shapes.d.ts +24 -0
  116. package/dist/rendering/Shapes.d.ts.map +1 -0
  117. package/dist/rendering/Sprite.d.ts +74 -0
  118. package/dist/rendering/Sprite.d.ts.map +1 -0
  119. package/dist/rendering/SpriteSheet.d.ts +22 -0
  120. package/dist/rendering/SpriteSheet.d.ts.map +1 -0
  121. package/dist/rendering/index.d.ts +11 -0
  122. package/dist/rendering/index.d.ts.map +1 -0
  123. package/dist/scene/Blackboard.d.ts +81 -0
  124. package/dist/scene/Blackboard.d.ts.map +1 -0
  125. package/dist/scene/Scene.d.ts +160 -0
  126. package/dist/scene/Scene.d.ts.map +1 -0
  127. package/dist/scene/SceneManager.d.ts +142 -0
  128. package/dist/scene/SceneManager.d.ts.map +1 -0
  129. package/dist/scene/SceneTransition.d.ts +118 -0
  130. package/dist/scene/SceneTransition.d.ts.map +1 -0
  131. package/dist/scene/index.d.ts +5 -0
  132. package/dist/scene/index.d.ts.map +1 -0
  133. package/dist/ui/UIAnchor.d.ts +31 -0
  134. package/dist/ui/UIAnchor.d.ts.map +1 -0
  135. package/dist/ui/UIButton.d.ts +48 -0
  136. package/dist/ui/UIButton.d.ts.map +1 -0
  137. package/dist/ui/UIElement.d.ts +108 -0
  138. package/dist/ui/UIElement.d.ts.map +1 -0
  139. package/dist/ui/UILabel.d.ts +54 -0
  140. package/dist/ui/UILabel.d.ts.map +1 -0
  141. package/dist/ui/UIManager.d.ts +41 -0
  142. package/dist/ui/UIManager.d.ts.map +1 -0
  143. package/dist/ui/UIPanel.d.ts +36 -0
  144. package/dist/ui/UIPanel.d.ts.map +1 -0
  145. package/dist/ui/UIProgressBar.d.ts +47 -0
  146. package/dist/ui/UIProgressBar.d.ts.map +1 -0
  147. package/dist/ui/index.d.ts +8 -0
  148. package/dist/ui/index.d.ts.map +1 -0
  149. 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":"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"}
@@ -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"}