@guinetik/gcanvas 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/.github/workflows/release.yaml +70 -0
- package/.jshintrc +4 -0
- package/.vscode/settings.json +22 -0
- package/CLAUDE.md +310 -0
- package/blackhole.jpg +0 -0
- package/demo.png +0 -0
- package/demos/CNAME +1 -0
- package/demos/animations.html +31 -0
- package/demos/basic.html +38 -0
- package/demos/baskara.html +31 -0
- package/demos/bezier.html +35 -0
- package/demos/beziersignature.html +29 -0
- package/demos/blackhole.html +28 -0
- package/demos/blob.html +35 -0
- package/demos/demos.css +289 -0
- package/demos/easing.html +28 -0
- package/demos/events.html +195 -0
- package/demos/fluent.html +647 -0
- package/demos/fractals.html +36 -0
- package/demos/genart.html +26 -0
- package/demos/gendream.html +26 -0
- package/demos/group.html +36 -0
- package/demos/home.html +587 -0
- package/demos/index.html +364 -0
- package/demos/isometric.html +34 -0
- package/demos/js/animations.js +452 -0
- package/demos/js/basic.js +204 -0
- package/demos/js/baskara.js +751 -0
- package/demos/js/bezier.js +692 -0
- package/demos/js/beziersignature.js +241 -0
- package/demos/js/blackhole/accretiondisk.obj.js +379 -0
- package/demos/js/blackhole/blackhole.obj.js +318 -0
- package/demos/js/blackhole/index.js +409 -0
- package/demos/js/blackhole/particle.js +56 -0
- package/demos/js/blackhole/starfield.obj.js +218 -0
- package/demos/js/blob.js +2263 -0
- package/demos/js/easing.js +477 -0
- package/demos/js/fluent.js +183 -0
- package/demos/js/fractals.js +931 -0
- package/demos/js/fractalworker.js +93 -0
- package/demos/js/genart.js +268 -0
- package/demos/js/gendream.js +209 -0
- package/demos/js/group.js +140 -0
- package/demos/js/info-toggle.js +25 -0
- package/demos/js/isometric.js +863 -0
- package/demos/js/kerr.js +1556 -0
- package/demos/js/lavalamp.js +590 -0
- package/demos/js/layout.js +354 -0
- package/demos/js/mondrian.js +285 -0
- package/demos/js/opacity.js +275 -0
- package/demos/js/painter.js +484 -0
- package/demos/js/particles-showcase.js +514 -0
- package/demos/js/particles.js +299 -0
- package/demos/js/patterns.js +397 -0
- package/demos/js/penrose/artifact.js +69 -0
- package/demos/js/penrose/blackhole.js +121 -0
- package/demos/js/penrose/constants.js +73 -0
- package/demos/js/penrose/game.js +943 -0
- package/demos/js/penrose/lore.js +278 -0
- package/demos/js/penrose/penrosescene.js +892 -0
- package/demos/js/penrose/ship.js +216 -0
- package/demos/js/penrose/sounds.js +211 -0
- package/demos/js/penrose/voidparticle.js +55 -0
- package/demos/js/penrose/voidscene.js +258 -0
- package/demos/js/penrose/voidship.js +144 -0
- package/demos/js/penrose/wormhole.js +46 -0
- package/demos/js/pipeline.js +555 -0
- package/demos/js/scene.js +304 -0
- package/demos/js/scenes.js +320 -0
- package/demos/js/schrodinger.js +410 -0
- package/demos/js/schwarzschild.js +1023 -0
- package/demos/js/shapes.js +628 -0
- package/demos/js/space/alien.js +171 -0
- package/demos/js/space/boom.js +98 -0
- package/demos/js/space/boss.js +353 -0
- package/demos/js/space/buff.js +73 -0
- package/demos/js/space/bullet.js +102 -0
- package/demos/js/space/constants.js +85 -0
- package/demos/js/space/game.js +1884 -0
- package/demos/js/space/hud.js +112 -0
- package/demos/js/space/laserbeam.js +179 -0
- package/demos/js/space/lightning.js +277 -0
- package/demos/js/space/minion.js +192 -0
- package/demos/js/space/missile.js +212 -0
- package/demos/js/space/player.js +430 -0
- package/demos/js/space/powerup.js +90 -0
- package/demos/js/space/starfield.js +58 -0
- package/demos/js/space/starpower.js +90 -0
- package/demos/js/spacetime.js +559 -0
- package/demos/js/svgtween.js +204 -0
- package/demos/js/tde/accretiondisk.js +418 -0
- package/demos/js/tde/blackhole.js +219 -0
- package/demos/js/tde/blackholescene.js +209 -0
- package/demos/js/tde/config.js +59 -0
- package/demos/js/tde/index.js +695 -0
- package/demos/js/tde/jets.js +290 -0
- package/demos/js/tde/lensedstarfield.js +147 -0
- package/demos/js/tde/tdestar.js +317 -0
- package/demos/js/tde/tidalstream.js +356 -0
- package/demos/js/tde_old/blackhole.obj.js +354 -0
- package/demos/js/tde_old/debris.obj.js +791 -0
- package/demos/js/tde_old/flare.obj.js +239 -0
- package/demos/js/tde_old/index.js +448 -0
- package/demos/js/tde_old/star.obj.js +812 -0
- package/demos/js/tiles.js +312 -0
- package/demos/js/tweendemo.js +79 -0
- package/demos/js/visibility.js +102 -0
- package/demos/kerr.html +28 -0
- package/demos/lavalamp.html +27 -0
- package/demos/layouts.html +37 -0
- package/demos/logo.svg +4 -0
- package/demos/loop.html +84 -0
- package/demos/mondrian.html +32 -0
- package/demos/og_image.png +0 -0
- package/demos/opacity.html +36 -0
- package/demos/painter.html +39 -0
- package/demos/particles-showcase.html +28 -0
- package/demos/particles.html +24 -0
- package/demos/patterns.html +33 -0
- package/demos/penrose-game.html +31 -0
- package/demos/pipeline.html +737 -0
- package/demos/scene.html +33 -0
- package/demos/scenes.html +96 -0
- package/demos/schrodinger.html +27 -0
- package/demos/schwarzschild.html +27 -0
- package/demos/shapes.html +16 -0
- package/demos/space.html +85 -0
- package/demos/spacetime.html +27 -0
- package/demos/svgtween.html +29 -0
- package/demos/tde.html +28 -0
- package/demos/tiles.html +28 -0
- package/demos/transforms.html +400 -0
- package/demos/tween.html +45 -0
- package/demos/visibility.html +33 -0
- package/disk_example.png +0 -0
- package/docs/README.md +222 -0
- package/docs/concepts/architecture-overview.md +204 -0
- package/docs/concepts/lifecycle.md +255 -0
- package/docs/concepts/rendering-pipeline.md +279 -0
- package/docs/concepts/tde-zorder.md +106 -0
- package/docs/concepts/two-layer-architecture.md +229 -0
- package/docs/getting-started/first-game.md +354 -0
- package/docs/getting-started/hello-world.md +269 -0
- package/docs/getting-started/installation.md +157 -0
- package/docs/modules/collision/README.md +453 -0
- package/docs/modules/fluent/README.md +1075 -0
- package/docs/modules/game/README.md +303 -0
- package/docs/modules/isometric-camera.md +210 -0
- package/docs/modules/isometric.md +275 -0
- package/docs/modules/painter/README.md +328 -0
- package/docs/modules/particle/README.md +559 -0
- package/docs/modules/shapes/README.md +221 -0
- package/docs/modules/shapes/base/euclidian.md +123 -0
- package/docs/modules/shapes/base/geometry2d.md +204 -0
- package/docs/modules/shapes/base/renderable.md +215 -0
- package/docs/modules/shapes/base/shape.md +262 -0
- package/docs/modules/shapes/base/transformable.md +243 -0
- package/docs/modules/shapes/hierarchy.md +218 -0
- package/docs/modules/state/README.md +577 -0
- package/docs/modules/util/README.md +99 -0
- package/docs/modules/util/camera3d.md +412 -0
- package/docs/modules/util/scene3d.md +395 -0
- package/index.html +17 -0
- package/jsdoc.json +50 -0
- package/package.json +55 -0
- package/readme.md +599 -0
- package/scripts/build-demo.js +69 -0
- package/scripts/bundle4llm.js +276 -0
- package/scripts/clearconsole.js +48 -0
- package/src/collision/collision-system.js +332 -0
- package/src/collision/collision.js +303 -0
- package/src/collision/index.js +10 -0
- package/src/fluent/fluent-game.js +430 -0
- package/src/fluent/fluent-go.js +1060 -0
- package/src/fluent/fluent-layer.js +152 -0
- package/src/fluent/fluent-scene.js +291 -0
- package/src/fluent/index.js +98 -0
- package/src/fluent/sketch.js +380 -0
- package/src/game/game.js +467 -0
- package/src/game/index.js +49 -0
- package/src/game/objects/go.js +220 -0
- package/src/game/objects/imagego.js +30 -0
- package/src/game/objects/index.js +54 -0
- package/src/game/objects/isometric-scene.js +260 -0
- package/src/game/objects/layoutscene.js +549 -0
- package/src/game/objects/scene.js +175 -0
- package/src/game/objects/scene3d.js +118 -0
- package/src/game/objects/text.js +221 -0
- package/src/game/objects/wrapper.js +232 -0
- package/src/game/pipeline.js +243 -0
- package/src/game/ui/button.js +396 -0
- package/src/game/ui/cursor.js +93 -0
- package/src/game/ui/fps.js +91 -0
- package/src/game/ui/index.js +5 -0
- package/src/game/ui/togglebutton.js +93 -0
- package/src/game/ui/tooltip.js +249 -0
- package/src/index.js +25 -0
- package/src/io/events.js +20 -0
- package/src/io/index.js +86 -0
- package/src/io/input.js +70 -0
- package/src/io/keys.js +152 -0
- package/src/io/mouse.js +61 -0
- package/src/io/touch.js +39 -0
- package/src/logger/debugtab.js +138 -0
- package/src/logger/index.js +3 -0
- package/src/logger/loggable.js +47 -0
- package/src/logger/logger.js +113 -0
- package/src/math/complex.js +37 -0
- package/src/math/constants.js +1 -0
- package/src/math/fractal.js +1271 -0
- package/src/math/gr.js +201 -0
- package/src/math/heat.js +202 -0
- package/src/math/index.js +12 -0
- package/src/math/noise.js +433 -0
- package/src/math/orbital.js +191 -0
- package/src/math/patterns.js +1339 -0
- package/src/math/penrose.js +259 -0
- package/src/math/quantum.js +115 -0
- package/src/math/random.js +195 -0
- package/src/math/tensor.js +1009 -0
- package/src/mixins/anchor.js +131 -0
- package/src/mixins/draggable.js +72 -0
- package/src/mixins/index.js +2 -0
- package/src/motion/bezier.js +132 -0
- package/src/motion/bounce.js +58 -0
- package/src/motion/easing.js +349 -0
- package/src/motion/float.js +130 -0
- package/src/motion/follow.js +125 -0
- package/src/motion/hop.js +52 -0
- package/src/motion/index.js +82 -0
- package/src/motion/motion.js +1124 -0
- package/src/motion/orbit.js +49 -0
- package/src/motion/oscillate.js +39 -0
- package/src/motion/parabolic.js +141 -0
- package/src/motion/patrol.js +147 -0
- package/src/motion/pendulum.js +48 -0
- package/src/motion/pulse.js +88 -0
- package/src/motion/shake.js +83 -0
- package/src/motion/spiral.js +144 -0
- package/src/motion/spring.js +150 -0
- package/src/motion/swing.js +47 -0
- package/src/motion/tween.js +92 -0
- package/src/motion/tweenetik.js +139 -0
- package/src/motion/waypoint.js +210 -0
- package/src/painter/index.js +8 -0
- package/src/painter/painter.colors.js +331 -0
- package/src/painter/painter.effects.js +230 -0
- package/src/painter/painter.img.js +229 -0
- package/src/painter/painter.js +295 -0
- package/src/painter/painter.lines.js +189 -0
- package/src/painter/painter.opacity.js +41 -0
- package/src/painter/painter.shapes.js +277 -0
- package/src/painter/painter.text.js +273 -0
- package/src/particle/emitter.js +124 -0
- package/src/particle/index.js +11 -0
- package/src/particle/particle-system.js +322 -0
- package/src/particle/particle.js +71 -0
- package/src/particle/updaters.js +170 -0
- package/src/shapes/arc.js +43 -0
- package/src/shapes/arrow.js +33 -0
- package/src/shapes/bezier.js +42 -0
- package/src/shapes/circle.js +62 -0
- package/src/shapes/clouds.js +56 -0
- package/src/shapes/cone.js +219 -0
- package/src/shapes/cross.js +70 -0
- package/src/shapes/cube.js +244 -0
- package/src/shapes/cylinder.js +254 -0
- package/src/shapes/diamond.js +48 -0
- package/src/shapes/euclidian.js +111 -0
- package/src/shapes/figure.js +115 -0
- package/src/shapes/geometry.js +220 -0
- package/src/shapes/group.js +375 -0
- package/src/shapes/heart.js +42 -0
- package/src/shapes/hexagon.js +26 -0
- package/src/shapes/image.js +192 -0
- package/src/shapes/index.js +111 -0
- package/src/shapes/line.js +29 -0
- package/src/shapes/pattern.js +90 -0
- package/src/shapes/pin.js +44 -0
- package/src/shapes/poly.js +31 -0
- package/src/shapes/prism.js +226 -0
- package/src/shapes/rect.js +35 -0
- package/src/shapes/renderable.js +333 -0
- package/src/shapes/ring.js +26 -0
- package/src/shapes/roundrect.js +95 -0
- package/src/shapes/shape.js +117 -0
- package/src/shapes/slice.js +26 -0
- package/src/shapes/sphere.js +314 -0
- package/src/shapes/sphere3d.js +537 -0
- package/src/shapes/square.js +15 -0
- package/src/shapes/star.js +99 -0
- package/src/shapes/svg.js +408 -0
- package/src/shapes/text.js +553 -0
- package/src/shapes/traceable.js +83 -0
- package/src/shapes/transform.js +357 -0
- package/src/shapes/transformable.js +172 -0
- package/src/shapes/triangle.js +26 -0
- package/src/sound/index.js +17 -0
- package/src/sound/sound.js +473 -0
- package/src/sound/synth.analyzer.js +149 -0
- package/src/sound/synth.effects.js +207 -0
- package/src/sound/synth.envelope.js +59 -0
- package/src/sound/synth.js +229 -0
- package/src/sound/synth.musical.js +160 -0
- package/src/sound/synth.noise.js +85 -0
- package/src/sound/synth.oscillators.js +293 -0
- package/src/state/index.js +10 -0
- package/src/state/state-machine.js +371 -0
- package/src/util/camera3d.js +438 -0
- package/src/util/index.js +6 -0
- package/src/util/isometric-camera.js +235 -0
- package/src/util/layout.js +317 -0
- package/src/util/position.js +147 -0
- package/src/util/tasks.js +47 -0
- package/src/util/zindex.js +287 -0
- package/src/webgl/index.js +9 -0
- package/src/webgl/shaders/sphere-shaders.js +994 -0
- package/src/webgl/webgl-renderer.js +388 -0
- package/tde.png +0 -0
- package/test/math/orbital.test.js +61 -0
- package/test/math/tensor.test.js +114 -0
- package/test/particle/emitter.test.js +204 -0
- package/test/particle/particle-system.test.js +310 -0
- package/test/particle/particle.test.js +116 -0
- package/test/particle/updaters.test.js +386 -0
- package/test/setup.js +120 -0
- package/test/shapes/euclidian.test.js +44 -0
- package/test/shapes/geometry.test.js +86 -0
- package/test/shapes/group.test.js +86 -0
- package/test/shapes/rectangle.test.js +64 -0
- package/test/shapes/transform.test.js +379 -0
- package/test/util/camera3d.test.js +428 -0
- package/test/util/scene3d.test.js +352 -0
- package/types/collision.d.ts +249 -0
- package/types/common.d.ts +155 -0
- package/types/game.d.ts +497 -0
- package/types/index.d.ts +309 -0
- package/types/io.d.ts +188 -0
- package/types/logger.d.ts +127 -0
- package/types/math.d.ts +268 -0
- package/types/mixins.d.ts +92 -0
- package/types/motion.d.ts +678 -0
- package/types/painter.d.ts +378 -0
- package/types/shapes.d.ts +864 -0
- package/types/sound.d.ts +672 -0
- package/types/state.d.ts +251 -0
- package/types/util.d.ts +253 -0
- package/vite.config.js +50 -0
- package/vitest.config.js +13 -0
package/types/index.d.ts
ADDED
|
@@ -0,0 +1,309 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* GCanvas - TypeScript Definitions
|
|
3
|
+
* A minimalist 2D canvas rendering library with shapes, game engine, and animations.
|
|
4
|
+
*
|
|
5
|
+
* @version 0.0.3-alpha
|
|
6
|
+
* @see https://github.com/guinetik/gcanvas
|
|
7
|
+
* @license ISC
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
// ==========================================================================
|
|
11
|
+
// Common Types (re-exported for direct import)
|
|
12
|
+
// ==========================================================================
|
|
13
|
+
|
|
14
|
+
export {
|
|
15
|
+
// Basic types
|
|
16
|
+
Point,
|
|
17
|
+
Bounds,
|
|
18
|
+
EasingFunction,
|
|
19
|
+
EventCallback,
|
|
20
|
+
|
|
21
|
+
// Motion types
|
|
22
|
+
MotionCallbacks,
|
|
23
|
+
MotionState,
|
|
24
|
+
MotionResult,
|
|
25
|
+
MotionPositionResult,
|
|
26
|
+
MotionValueResult,
|
|
27
|
+
SpringResult,
|
|
28
|
+
WaypointResult,
|
|
29
|
+
|
|
30
|
+
// Layout types
|
|
31
|
+
LayoutOptions,
|
|
32
|
+
LayoutResult,
|
|
33
|
+
|
|
34
|
+
// Penrose types
|
|
35
|
+
RGBAColor,
|
|
36
|
+
PenroseTilingOptions
|
|
37
|
+
} from './common';
|
|
38
|
+
|
|
39
|
+
// ==========================================================================
|
|
40
|
+
// Logger Module
|
|
41
|
+
// ==========================================================================
|
|
42
|
+
|
|
43
|
+
export {
|
|
44
|
+
Logger,
|
|
45
|
+
Loggable,
|
|
46
|
+
LoggableOptions,
|
|
47
|
+
DebugTab
|
|
48
|
+
} from './logger';
|
|
49
|
+
|
|
50
|
+
// ==========================================================================
|
|
51
|
+
// Shapes Module
|
|
52
|
+
// ==========================================================================
|
|
53
|
+
|
|
54
|
+
export {
|
|
55
|
+
// Base classes
|
|
56
|
+
Euclidian,
|
|
57
|
+
EuclidianOptions,
|
|
58
|
+
Geometry2d,
|
|
59
|
+
Geometry2dOptions,
|
|
60
|
+
Traceable,
|
|
61
|
+
Renderable,
|
|
62
|
+
RenderableOptions,
|
|
63
|
+
Transformable,
|
|
64
|
+
TransformableOptions,
|
|
65
|
+
Transform,
|
|
66
|
+
TransformProps,
|
|
67
|
+
Shape,
|
|
68
|
+
ShapeOptions,
|
|
69
|
+
Group,
|
|
70
|
+
GroupOptions,
|
|
71
|
+
|
|
72
|
+
// Basic shapes
|
|
73
|
+
Circle,
|
|
74
|
+
Rectangle,
|
|
75
|
+
RoundedRectangle,
|
|
76
|
+
RoundedRectangleOptions,
|
|
77
|
+
Square,
|
|
78
|
+
Arc,
|
|
79
|
+
ArcOptions,
|
|
80
|
+
Line,
|
|
81
|
+
Triangle,
|
|
82
|
+
Star,
|
|
83
|
+
StarOptions,
|
|
84
|
+
Polygon,
|
|
85
|
+
Hexagon,
|
|
86
|
+
Diamond,
|
|
87
|
+
Cross,
|
|
88
|
+
Heart,
|
|
89
|
+
Ring,
|
|
90
|
+
RingOptions,
|
|
91
|
+
Cloud,
|
|
92
|
+
Pin,
|
|
93
|
+
Arrow,
|
|
94
|
+
PieSlice,
|
|
95
|
+
PieSliceOptions,
|
|
96
|
+
BezierShape,
|
|
97
|
+
SVGShape,
|
|
98
|
+
StickFigure,
|
|
99
|
+
PatternRectangle,
|
|
100
|
+
PatternRectangleOptions,
|
|
101
|
+
ImageShape,
|
|
102
|
+
ImageShapeOptions,
|
|
103
|
+
|
|
104
|
+
// 2.5D shapes
|
|
105
|
+
Cube,
|
|
106
|
+
CubeOptions,
|
|
107
|
+
Cylinder,
|
|
108
|
+
Cone,
|
|
109
|
+
Prism,
|
|
110
|
+
Sphere,
|
|
111
|
+
|
|
112
|
+
// Text shapes
|
|
113
|
+
TextShape,
|
|
114
|
+
TextShapeOptions,
|
|
115
|
+
OutlinedText,
|
|
116
|
+
OutlinedTextOptions,
|
|
117
|
+
WrappedText
|
|
118
|
+
} from './shapes';
|
|
119
|
+
|
|
120
|
+
// ==========================================================================
|
|
121
|
+
// Painter Module
|
|
122
|
+
// ==========================================================================
|
|
123
|
+
|
|
124
|
+
export {
|
|
125
|
+
Painter,
|
|
126
|
+
PainterColors,
|
|
127
|
+
PainterEffects,
|
|
128
|
+
PainterImages,
|
|
129
|
+
PainterLines,
|
|
130
|
+
PainterOpacity,
|
|
131
|
+
PainterShapes,
|
|
132
|
+
PainterText
|
|
133
|
+
} from './painter';
|
|
134
|
+
|
|
135
|
+
// ==========================================================================
|
|
136
|
+
// IO Module
|
|
137
|
+
// ==========================================================================
|
|
138
|
+
|
|
139
|
+
export {
|
|
140
|
+
EventEmitter,
|
|
141
|
+
Mouse,
|
|
142
|
+
Keys,
|
|
143
|
+
Touch,
|
|
144
|
+
Input
|
|
145
|
+
} from './io';
|
|
146
|
+
|
|
147
|
+
// ==========================================================================
|
|
148
|
+
// Game Module
|
|
149
|
+
// ==========================================================================
|
|
150
|
+
|
|
151
|
+
export {
|
|
152
|
+
Game,
|
|
153
|
+
Pipeline,
|
|
154
|
+
GameObject,
|
|
155
|
+
GameObjectOptions,
|
|
156
|
+
Scene,
|
|
157
|
+
SceneOptions,
|
|
158
|
+
GameObjectShapeWrapper,
|
|
159
|
+
ShapeGOFactory,
|
|
160
|
+
Text,
|
|
161
|
+
TextGameObjectOptions,
|
|
162
|
+
ImageGo,
|
|
163
|
+
|
|
164
|
+
// Layout scenes
|
|
165
|
+
LayoutScene,
|
|
166
|
+
HorizontalLayout,
|
|
167
|
+
VerticalLayout,
|
|
168
|
+
TileLayout,
|
|
169
|
+
GridLayout,
|
|
170
|
+
|
|
171
|
+
// UI components
|
|
172
|
+
Button,
|
|
173
|
+
ButtonOptions,
|
|
174
|
+
ToggleButton,
|
|
175
|
+
Cursor,
|
|
176
|
+
CursorOptions,
|
|
177
|
+
FPSCounter
|
|
178
|
+
} from './game';
|
|
179
|
+
|
|
180
|
+
// ==========================================================================
|
|
181
|
+
// Motion Module
|
|
182
|
+
// ==========================================================================
|
|
183
|
+
|
|
184
|
+
export {
|
|
185
|
+
Easing,
|
|
186
|
+
Tween,
|
|
187
|
+
Tweenetik,
|
|
188
|
+
TweenetikOptions,
|
|
189
|
+
Motion,
|
|
190
|
+
SpringParams,
|
|
191
|
+
PositionTarget
|
|
192
|
+
} from './motion';
|
|
193
|
+
|
|
194
|
+
// ==========================================================================
|
|
195
|
+
// Math Module
|
|
196
|
+
// ==========================================================================
|
|
197
|
+
|
|
198
|
+
export {
|
|
199
|
+
Random,
|
|
200
|
+
Complex,
|
|
201
|
+
Fractals,
|
|
202
|
+
Patterns,
|
|
203
|
+
Noise,
|
|
204
|
+
generatePenroseTilingPixels
|
|
205
|
+
} from './math';
|
|
206
|
+
|
|
207
|
+
// ==========================================================================
|
|
208
|
+
// Util Module
|
|
209
|
+
// ==========================================================================
|
|
210
|
+
|
|
211
|
+
export {
|
|
212
|
+
ZOrderedCollection,
|
|
213
|
+
ZOrderedCollectionOptions,
|
|
214
|
+
Position,
|
|
215
|
+
TaskManager,
|
|
216
|
+
|
|
217
|
+
// Layout types
|
|
218
|
+
LayoutItem,
|
|
219
|
+
ApplyLayoutOptions,
|
|
220
|
+
LinearLayoutOptions,
|
|
221
|
+
TileLayoutOptions,
|
|
222
|
+
GridLayoutOptions,
|
|
223
|
+
|
|
224
|
+
// Layout functions
|
|
225
|
+
applyLayout,
|
|
226
|
+
horizontalLayout,
|
|
227
|
+
verticalLayout,
|
|
228
|
+
tileLayout,
|
|
229
|
+
gridLayout
|
|
230
|
+
} from './util';
|
|
231
|
+
|
|
232
|
+
// ==========================================================================
|
|
233
|
+
// Mixins Module
|
|
234
|
+
// ==========================================================================
|
|
235
|
+
|
|
236
|
+
export {
|
|
237
|
+
applyDraggable,
|
|
238
|
+
DraggableOptions,
|
|
239
|
+
applyAnchor,
|
|
240
|
+
AnchorOptions
|
|
241
|
+
} from './mixins';
|
|
242
|
+
|
|
243
|
+
// ==========================================================================
|
|
244
|
+
// Sound Module
|
|
245
|
+
// ==========================================================================
|
|
246
|
+
|
|
247
|
+
export {
|
|
248
|
+
// Main classes
|
|
249
|
+
Synth,
|
|
250
|
+
Sound,
|
|
251
|
+
|
|
252
|
+
// Sub-modules
|
|
253
|
+
SynthOscillators,
|
|
254
|
+
SynthEffects,
|
|
255
|
+
SynthEnvelope,
|
|
256
|
+
SynthNoise,
|
|
257
|
+
SynthMusical,
|
|
258
|
+
SynthAnalyzer,
|
|
259
|
+
|
|
260
|
+
// Types
|
|
261
|
+
SynthOptions,
|
|
262
|
+
ToneOptions,
|
|
263
|
+
ContinuousOscillatorController,
|
|
264
|
+
DelayEffect,
|
|
265
|
+
TremoloEffect,
|
|
266
|
+
DroneController,
|
|
267
|
+
EnvelopeOptions,
|
|
268
|
+
EnvelopePresets,
|
|
269
|
+
ScaleName,
|
|
270
|
+
ChordType
|
|
271
|
+
} from './sound';
|
|
272
|
+
|
|
273
|
+
// ==========================================================================
|
|
274
|
+
// Collision Module
|
|
275
|
+
// ==========================================================================
|
|
276
|
+
|
|
277
|
+
export {
|
|
278
|
+
// Main classes
|
|
279
|
+
Collision,
|
|
280
|
+
CollisionSystem,
|
|
281
|
+
|
|
282
|
+
// Types
|
|
283
|
+
CollisionCircle,
|
|
284
|
+
LineSegment,
|
|
285
|
+
SweepResult,
|
|
286
|
+
OverlapResult,
|
|
287
|
+
MTVResult,
|
|
288
|
+
Collidable,
|
|
289
|
+
CollisionPairOptions,
|
|
290
|
+
CollisionCallback
|
|
291
|
+
} from './collision';
|
|
292
|
+
|
|
293
|
+
// ==========================================================================
|
|
294
|
+
// State Module
|
|
295
|
+
// ==========================================================================
|
|
296
|
+
|
|
297
|
+
export {
|
|
298
|
+
// Main class
|
|
299
|
+
StateMachine,
|
|
300
|
+
|
|
301
|
+
// Types
|
|
302
|
+
StateTransition,
|
|
303
|
+
StateEvents,
|
|
304
|
+
StateConfig,
|
|
305
|
+
States,
|
|
306
|
+
StateMachineOptions,
|
|
307
|
+
PhaseConfig,
|
|
308
|
+
SequenceOptions
|
|
309
|
+
} from './state';
|
package/types/io.d.ts
ADDED
|
@@ -0,0 +1,188 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* GCanvas IO Module
|
|
3
|
+
* Input handling and event system.
|
|
4
|
+
* @module io
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
import { EventCallback } from './common';
|
|
8
|
+
import type { Game } from './game';
|
|
9
|
+
|
|
10
|
+
// ==========================================================================
|
|
11
|
+
// Event Emitter
|
|
12
|
+
// ==========================================================================
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* Core event management system.
|
|
16
|
+
* Provides publish/subscribe pattern for custom events.
|
|
17
|
+
*
|
|
18
|
+
* @example
|
|
19
|
+
* const emitter = new EventEmitter();
|
|
20
|
+
* emitter.on('explosion', (data) => console.log('Boom!', data));
|
|
21
|
+
* emitter.emit('explosion', { x: 100, y: 200 });
|
|
22
|
+
*/
|
|
23
|
+
export class EventEmitter {
|
|
24
|
+
/** Map of event types to listener arrays */
|
|
25
|
+
listeners: Record<string, EventCallback[]>;
|
|
26
|
+
|
|
27
|
+
constructor();
|
|
28
|
+
|
|
29
|
+
/**
|
|
30
|
+
* Subscribe to an event.
|
|
31
|
+
* @param type - Event type/name
|
|
32
|
+
* @param callback - Handler function
|
|
33
|
+
*/
|
|
34
|
+
on<T = any>(type: string, callback: EventCallback<T>): void;
|
|
35
|
+
|
|
36
|
+
/**
|
|
37
|
+
* Unsubscribe from an event.
|
|
38
|
+
* @param type - Event type/name
|
|
39
|
+
* @param callback - Handler function to remove
|
|
40
|
+
*/
|
|
41
|
+
off<T = any>(type: string, callback: EventCallback<T>): void;
|
|
42
|
+
|
|
43
|
+
/**
|
|
44
|
+
* Emit an event to all subscribers.
|
|
45
|
+
* @param type - Event type/name
|
|
46
|
+
* @param payload - Data to pass to handlers
|
|
47
|
+
*/
|
|
48
|
+
emit<T = any>(type: string, payload?: T): void;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
// ==========================================================================
|
|
52
|
+
// Mouse Input
|
|
53
|
+
// ==========================================================================
|
|
54
|
+
|
|
55
|
+
/**
|
|
56
|
+
* Mouse input tracking.
|
|
57
|
+
* Static class that tracks mouse position and button state.
|
|
58
|
+
*
|
|
59
|
+
* @example
|
|
60
|
+
* // After initialization
|
|
61
|
+
* if (Mouse.isDown) {
|
|
62
|
+
* console.log(`Mouse clicked at ${Mouse.x}, ${Mouse.y}`);
|
|
63
|
+
* }
|
|
64
|
+
*/
|
|
65
|
+
export class Mouse {
|
|
66
|
+
/** Current mouse X position relative to canvas */
|
|
67
|
+
static x: number;
|
|
68
|
+
/** Current mouse Y position relative to canvas */
|
|
69
|
+
static y: number;
|
|
70
|
+
/** Whether primary mouse button is pressed */
|
|
71
|
+
static isDown: boolean;
|
|
72
|
+
|
|
73
|
+
/**
|
|
74
|
+
* Initialize mouse tracking for a game instance.
|
|
75
|
+
* @param game - Game instance to track mouse on
|
|
76
|
+
*/
|
|
77
|
+
static init(game: Game): void;
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
// ==========================================================================
|
|
81
|
+
// Keyboard Input
|
|
82
|
+
// ==========================================================================
|
|
83
|
+
|
|
84
|
+
/**
|
|
85
|
+
* Keyboard input with key mapping.
|
|
86
|
+
* Static class that tracks key states with named constants.
|
|
87
|
+
*
|
|
88
|
+
* @example
|
|
89
|
+
* if (Keys.isDown(Keys.SPACE)) {
|
|
90
|
+
* player.jump();
|
|
91
|
+
* }
|
|
92
|
+
* if (Keys.isDown('a') || Keys.isDown(Keys.LEFT)) {
|
|
93
|
+
* player.moveLeft();
|
|
94
|
+
* }
|
|
95
|
+
*/
|
|
96
|
+
export class Keys {
|
|
97
|
+
// Key constants
|
|
98
|
+
/** Left arrow key */
|
|
99
|
+
static readonly LEFT: string;
|
|
100
|
+
/** Right arrow key */
|
|
101
|
+
static readonly RIGHT: string;
|
|
102
|
+
/** Up arrow key */
|
|
103
|
+
static readonly UP: string;
|
|
104
|
+
/** Down arrow key */
|
|
105
|
+
static readonly DOWN: string;
|
|
106
|
+
/** Spacebar */
|
|
107
|
+
static readonly SPACE: string;
|
|
108
|
+
/** Enter key */
|
|
109
|
+
static readonly ENTER: string;
|
|
110
|
+
/** Escape key */
|
|
111
|
+
static readonly ESCAPE: string;
|
|
112
|
+
/** Shift key */
|
|
113
|
+
static readonly SHIFT: string;
|
|
114
|
+
/** Control key */
|
|
115
|
+
static readonly CTRL: string;
|
|
116
|
+
/** Alt key */
|
|
117
|
+
static readonly ALT: string;
|
|
118
|
+
|
|
119
|
+
/**
|
|
120
|
+
* Initialize keyboard tracking for a game instance.
|
|
121
|
+
* @param game - Game instance
|
|
122
|
+
*/
|
|
123
|
+
static init(game: Game): void;
|
|
124
|
+
|
|
125
|
+
/**
|
|
126
|
+
* Check if a key is currently pressed.
|
|
127
|
+
* @param key - Key code or Key constant
|
|
128
|
+
* @returns Whether the key is down
|
|
129
|
+
*/
|
|
130
|
+
static isDown(key: string): boolean;
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
// ==========================================================================
|
|
134
|
+
// Touch Input
|
|
135
|
+
// ==========================================================================
|
|
136
|
+
|
|
137
|
+
/**
|
|
138
|
+
* Touch input handling for mobile devices.
|
|
139
|
+
* Static class that tracks touch position and state.
|
|
140
|
+
*
|
|
141
|
+
* @example
|
|
142
|
+
* if (Touch.isDown) {
|
|
143
|
+
* console.log(`Touch at ${Touch.x}, ${Touch.y}`);
|
|
144
|
+
* }
|
|
145
|
+
*/
|
|
146
|
+
export class Touch {
|
|
147
|
+
/** Current touch X position relative to canvas */
|
|
148
|
+
static x: number;
|
|
149
|
+
/** Current touch Y position relative to canvas */
|
|
150
|
+
static y: number;
|
|
151
|
+
/** Whether screen is being touched */
|
|
152
|
+
static isDown: boolean;
|
|
153
|
+
|
|
154
|
+
/**
|
|
155
|
+
* Initialize touch tracking for a game instance.
|
|
156
|
+
* @param game - Game instance
|
|
157
|
+
*/
|
|
158
|
+
static init(game: Game): void;
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
// ==========================================================================
|
|
162
|
+
// Unified Input
|
|
163
|
+
// ==========================================================================
|
|
164
|
+
|
|
165
|
+
/**
|
|
166
|
+
* Unified input system (mouse + touch normalization).
|
|
167
|
+
* Provides a single interface for both mouse and touch input.
|
|
168
|
+
*
|
|
169
|
+
* @example
|
|
170
|
+
* // Works with both mouse and touch
|
|
171
|
+
* if (Input.isDown) {
|
|
172
|
+
* console.log(`Pointer at ${Input.x}, ${Input.y}`);
|
|
173
|
+
* }
|
|
174
|
+
*/
|
|
175
|
+
export class Input {
|
|
176
|
+
/** Current pointer X position (mouse or touch) */
|
|
177
|
+
static x: number;
|
|
178
|
+
/** Current pointer Y position (mouse or touch) */
|
|
179
|
+
static y: number;
|
|
180
|
+
/** Whether pointer is active (mouse down or touching) */
|
|
181
|
+
static isDown: boolean;
|
|
182
|
+
|
|
183
|
+
/**
|
|
184
|
+
* Initialize unified input for a game instance.
|
|
185
|
+
* @param game - Game instance
|
|
186
|
+
*/
|
|
187
|
+
static init(game: Game): void;
|
|
188
|
+
}
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* GCanvas Logger Module
|
|
3
|
+
* Logging utilities and debug visualization.
|
|
4
|
+
* @module logger
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
// ==========================================================================
|
|
8
|
+
// Logger Class
|
|
9
|
+
// ==========================================================================
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* Logger class for debugging and console output.
|
|
13
|
+
* Provides named loggers with configurable levels and output.
|
|
14
|
+
*/
|
|
15
|
+
export class Logger {
|
|
16
|
+
/** Debug log level */
|
|
17
|
+
static DEBUG: number;
|
|
18
|
+
/** Info log level */
|
|
19
|
+
static INFO: number;
|
|
20
|
+
/** Warning log level */
|
|
21
|
+
static WARN: number;
|
|
22
|
+
/** Error log level */
|
|
23
|
+
static ERROR: number;
|
|
24
|
+
|
|
25
|
+
/**
|
|
26
|
+
* Creates a new Logger instance.
|
|
27
|
+
* @param name - The name/category for this logger
|
|
28
|
+
*/
|
|
29
|
+
constructor(name: string);
|
|
30
|
+
|
|
31
|
+
/** Log a debug message */
|
|
32
|
+
log(...args: any[]): void;
|
|
33
|
+
/** Log an info message */
|
|
34
|
+
info(...args: any[]): void;
|
|
35
|
+
/** Log a warning message */
|
|
36
|
+
warn(...args: any[]): void;
|
|
37
|
+
/** Log an error message */
|
|
38
|
+
error(...args: any[]): void;
|
|
39
|
+
/** Start a collapsed console group */
|
|
40
|
+
groupCollapsed(label: string): void;
|
|
41
|
+
/** End a console group */
|
|
42
|
+
groupEnd(): void;
|
|
43
|
+
/** Start a timer with the given label */
|
|
44
|
+
time(label: string): void;
|
|
45
|
+
/** End and log a timer */
|
|
46
|
+
timeEnd(label: string): void;
|
|
47
|
+
|
|
48
|
+
/**
|
|
49
|
+
* Get or create a logger with the given name.
|
|
50
|
+
* @param name - Logger name/category
|
|
51
|
+
*/
|
|
52
|
+
static getLogger(name: string): Logger;
|
|
53
|
+
/** Set the global log level */
|
|
54
|
+
static setLevel(level: number): void;
|
|
55
|
+
/** Set the output target (console or custom object) */
|
|
56
|
+
static setOutput(output: Console | object): void;
|
|
57
|
+
/** Enable all loggers */
|
|
58
|
+
static enable(): void;
|
|
59
|
+
/** Disable all loggers */
|
|
60
|
+
static disable(): void;
|
|
61
|
+
/** Enable all loggers (alias) */
|
|
62
|
+
static enableAll(): void;
|
|
63
|
+
/** Disable all loggers (alias) */
|
|
64
|
+
static disableAll(): void;
|
|
65
|
+
/** Enable a specific logger by name */
|
|
66
|
+
static enableFor(name: string): void;
|
|
67
|
+
/** Disable a specific logger by name */
|
|
68
|
+
static disableFor(name: string): void;
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
// ==========================================================================
|
|
72
|
+
// Loggable Base Class
|
|
73
|
+
// ==========================================================================
|
|
74
|
+
|
|
75
|
+
/** Options for Loggable constructor */
|
|
76
|
+
export interface LoggableOptions {
|
|
77
|
+
/** Name for the logger instance */
|
|
78
|
+
name?: string;
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
/**
|
|
82
|
+
* Base class that provides logging capabilities to subclasses.
|
|
83
|
+
* Extend this class to add automatic logging support.
|
|
84
|
+
*/
|
|
85
|
+
export class Loggable {
|
|
86
|
+
/** Instance name */
|
|
87
|
+
name: string;
|
|
88
|
+
/** @internal Logger instance */
|
|
89
|
+
protected _logger: Logger;
|
|
90
|
+
|
|
91
|
+
/**
|
|
92
|
+
* Creates a new Loggable instance.
|
|
93
|
+
* @param options - Configuration options
|
|
94
|
+
*/
|
|
95
|
+
constructor(options?: LoggableOptions);
|
|
96
|
+
|
|
97
|
+
/** Get the logger instance for this object */
|
|
98
|
+
get logger(): Logger;
|
|
99
|
+
|
|
100
|
+
/**
|
|
101
|
+
* Log a trace message with optional custom text.
|
|
102
|
+
* @param msg - Optional message to include
|
|
103
|
+
*/
|
|
104
|
+
trace(msg?: string): void;
|
|
105
|
+
|
|
106
|
+
/**
|
|
107
|
+
* Get or create a logger for this instance.
|
|
108
|
+
* @param options - Logger options
|
|
109
|
+
* @internal
|
|
110
|
+
*/
|
|
111
|
+
protected getLogger(options?: LoggableOptions): Logger;
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
// ==========================================================================
|
|
115
|
+
// Debug Tab
|
|
116
|
+
// ==========================================================================
|
|
117
|
+
|
|
118
|
+
/**
|
|
119
|
+
* Debug visualization panel for runtime inspection.
|
|
120
|
+
* Singleton class that provides on-screen debug information.
|
|
121
|
+
*/
|
|
122
|
+
export class DebugTab {
|
|
123
|
+
/**
|
|
124
|
+
* Get the singleton DebugTab instance.
|
|
125
|
+
*/
|
|
126
|
+
static getInstance(): DebugTab;
|
|
127
|
+
}
|