@codexo/exojs 0.6.4 → 0.6.5

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 (43) hide show
  1. package/CHANGELOG.md +87 -0
  2. package/dist/esm/core/Application.d.ts +0 -1
  3. package/dist/esm/core/Application.js +0 -1
  4. package/dist/esm/core/Application.js.map +1 -1
  5. package/dist/esm/core/SceneManager.js +11 -12
  6. package/dist/esm/core/SceneManager.js.map +1 -1
  7. package/dist/esm/index.js +0 -5
  8. package/dist/esm/index.js.map +1 -1
  9. package/dist/esm/math/geometry.d.ts +12 -8
  10. package/dist/esm/math/geometry.js +119 -72
  11. package/dist/esm/math/geometry.js.map +1 -1
  12. package/dist/esm/rendering/index.d.ts +0 -5
  13. package/dist/esm/rendering/primitives/Graphics.d.ts +3 -2
  14. package/dist/esm/rendering/primitives/Graphics.js +33 -25
  15. package/dist/esm/rendering/primitives/Graphics.js.map +1 -1
  16. package/dist/esm/rendering/webgl2/WebGl2Backend.js +1 -4
  17. package/dist/esm/rendering/webgl2/WebGl2Backend.js.map +1 -1
  18. package/dist/esm/rendering/webgpu/WebGpuBackend.js +0 -3
  19. package/dist/esm/rendering/webgpu/WebGpuBackend.js.map +1 -1
  20. package/dist/esm/rendering/webgpu/WebGpuMaskCompositor.js +1 -2
  21. package/dist/esm/rendering/webgpu/WebGpuMaskCompositor.js.map +1 -1
  22. package/dist/exo.esm.js +586 -1274
  23. package/dist/exo.esm.js.map +1 -1
  24. package/package.json +1 -1
  25. package/dist/esm/rendering/primitives/CircleGeometry.d.ts +0 -4
  26. package/dist/esm/rendering/primitives/CircleGeometry.js +0 -21
  27. package/dist/esm/rendering/primitives/CircleGeometry.js.map +0 -1
  28. package/dist/esm/rendering/primitives/DrawableShape.d.ts +0 -11
  29. package/dist/esm/rendering/primitives/DrawableShape.js +0 -21
  30. package/dist/esm/rendering/primitives/DrawableShape.js.map +0 -1
  31. package/dist/esm/rendering/primitives/Geometry.d.ts +0 -13
  32. package/dist/esm/rendering/primitives/Geometry.js +0 -16
  33. package/dist/esm/rendering/primitives/Geometry.js.map +0 -1
  34. package/dist/esm/rendering/webgl2/WebGl2PrimitiveRenderer.d.ts +0 -26
  35. package/dist/esm/rendering/webgl2/WebGl2PrimitiveRenderer.js +0 -222
  36. package/dist/esm/rendering/webgl2/WebGl2PrimitiveRenderer.js.map +0 -1
  37. package/dist/esm/rendering/webgl2/glsl/primitive.frag.js +0 -4
  38. package/dist/esm/rendering/webgl2/glsl/primitive.frag.js.map +0 -1
  39. package/dist/esm/rendering/webgl2/glsl/primitive.vert.js +0 -4
  40. package/dist/esm/rendering/webgl2/glsl/primitive.vert.js.map +0 -1
  41. package/dist/esm/rendering/webgpu/WebGpuPrimitiveRenderer.d.ts +0 -38
  42. package/dist/esm/rendering/webgpu/WebGpuPrimitiveRenderer.js +0 -488
  43. package/dist/esm/rendering/webgpu/WebGpuPrimitiveRenderer.js.map +0 -1
package/CHANGELOG.md CHANGED
@@ -4,6 +4,93 @@ All notable changes to ExoJS are documented in this file.
4
4
 
5
5
  The format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/) and the project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
6
6
 
7
+ ## [0.6.5] - 2026-05-02
8
+
9
+ > **Heads-up — breaking change despite the patch number.** Removes
10
+ > `DrawableShape`, `Geometry`, `CircleGeometry`, and the
11
+ > `WebGl2PrimitiveRenderer` / `WebGpuPrimitiveRenderer` classes. Pre-1.0
12
+ > SemVer permits breaking changes within the 0.x.y line; we kept the
13
+ > minor digit unchanged because direct usage of those classes outside
14
+ > the engine is unlikely (the public `Graphics` API is unchanged).
15
+
16
+ Collapses the legacy primitive-rendering stack into the existing `Mesh`
17
+ primitive. Net effect: ~1100 LOC removed across two files of
18
+ backend-specific primitive renderers and three legacy data classes,
19
+ one unified rendering path for everything triangle-shaped.
20
+
21
+ ### Breaking
22
+
23
+ - **`DrawableShape` removed.** Internal Graphics children are now
24
+ `Mesh` instances. If you constructed `DrawableShape` directly,
25
+ switch to `new Mesh({ vertices, indices, ... })` and assign the
26
+ fill color via `mesh.tint = color`. See migration below.
27
+ - **`Geometry` and `CircleGeometry` classes removed.** They were
28
+ only ever consumed by `DrawableShape` and the (now-gone) primitive
29
+ renderers. The geometry-builder helpers in `src/math/geometry`
30
+ (`buildLine`, `buildPath`, `buildCircle`, `buildEllipse`,
31
+ `buildRectangle`, `buildPolygon`, `buildStar`) now return a
32
+ `MeshGeometryData` plain object — `{ vertices: Float32Array,
33
+ indices: Uint16Array, points: Array<number> }` — directly suitable
34
+ for `new Mesh({ ... })`.
35
+ - **`WebGl2PrimitiveRenderer` and `WebGpuPrimitiveRenderer` removed.**
36
+ Their work moved entirely into the existing `*MeshRenderer`s. Both
37
+ backends now register only `Sprite`, `Mesh`, and `ParticleSystem`
38
+ renderers.
39
+ - **`primitiveRendererBatchSize` ApplicationOptions removed.** The
40
+ field was wired only into the deleted PrimitiveRenderer; no
41
+ replacement.
42
+ - **`Graphics.getChildAt(index)` return type narrows from
43
+ `DrawableShape` to `Mesh`.** Children of a `Graphics` are still
44
+ walked the same way; only the type narrows.
45
+ - **`buildX(...)` geometry-builder return type changes.** Functions
46
+ previously returned a `Geometry` instance; now return
47
+ `MeshGeometryData`. The `vertices` and `indices` shift from
48
+ `Array<number>` / `Array<number>` to typed arrays.
49
+ - **`Lines`, `LineStrip`, `LineLoop`, `Points`, `TriangleFan`,
50
+ `TriangleStrip` draw modes are no longer renderable** through the
51
+ public stack. The `RenderingPrimitives` enum is still exported but
52
+ is now used only internally by SpriteRenderer / ParticleRenderer /
53
+ MeshRenderer / VertexArrayObject (which all draw triangle-list or
54
+ triangle-strip).
55
+
56
+ ### Migration
57
+
58
+ ```ts
59
+ // Before (0.6.4)
60
+ import { DrawableShape, Geometry, RenderingPrimitives, Color } from '@codexo/exojs';
61
+
62
+ const shape = new DrawableShape(
63
+ new Geometry({ vertices: [0, 0, 100, 0, 50, 100], indices: [0, 1, 2] }),
64
+ Color.red,
65
+ RenderingPrimitives.Triangles,
66
+ );
67
+
68
+ // After (0.6.5)
69
+ import { Mesh, Color } from '@codexo/exojs';
70
+
71
+ const mesh = new Mesh({
72
+ vertices: new Float32Array([0, 0, 100, 0, 50, 100]),
73
+ indices: new Uint16Array([0, 1, 2]),
74
+ });
75
+ mesh.tint = Color.red;
76
+ ```
77
+
78
+ `Graphics`'s public surface is unchanged — `drawCircle`, `drawRectangle`,
79
+ `drawLine`, `drawPath`, `drawPolygon`, `drawEllipse`, `drawArc`,
80
+ `drawStar`, `lineTo`, `moveTo`, `bezierCurveTo`, `quadraticCurveTo`,
81
+ `arcTo`, `clear`, `fillColor`, `lineColor`, `lineWidth`, `currentPoint`
82
+ all behave identically.
83
+
84
+ ### Internals
85
+
86
+ - All geometry builders now produce triangle-list output. Previously
87
+ most produced TriangleStrip with degenerate-triangle bridging (the
88
+ duplicated-first-and-last-index pattern); that hack is gone.
89
+ - `Graphics.drawX` methods now construct `Mesh` children with
90
+ `mesh.tint` carrying the fill/line color.
91
+ - `SceneManager`'s internal `TransitionOverlay` switched from
92
+ `DrawableShape` to `Mesh`; quad now indexed `[0,1,2, 1,3,2]`.
93
+
7
94
  ## [0.6.4] - 2026-05-02
8
95
 
9
96
  > **Heads-up — breaking change despite the patch number.** Reshapes
@@ -23,7 +23,6 @@ export interface ApplicationOptions {
23
23
  clearColor: Color;
24
24
  spriteRendererBatchSize: number;
25
25
  particleRendererBatchSize: number;
26
- primitiveRendererBatchSize: number;
27
26
  gamepadDefinitions: Array<GamepadDefinition>;
28
27
  pointerDistanceThreshold: number;
29
28
  webglAttributes: WebGLContextAttributes;
@@ -24,7 +24,6 @@ const defaultAppSettings = {
24
24
  debug: false,
25
25
  spriteRendererBatchSize: 4096, // ~ 262kb
26
26
  particleRendererBatchSize: 8192, // ~ 1.18mb
27
- primitiveRendererBatchSize: 65536, // ~ 786kb
28
27
  gamepadDefinitions: [],
29
28
  pointerDistanceThreshold: 10,
30
29
  webglAttributes: {
@@ -1 +1 @@
1
- {"version":3,"file":"Application.js","sources":["../../../../src/core/Application.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Application.js","sources":["../../../../src/core/Application.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
@@ -1,10 +1,8 @@
1
1
  import { Signal } from './Signal.js';
2
2
  import { Color } from './Color.js';
3
- import { DrawableShape } from '../rendering/primitives/DrawableShape.js';
4
- import { Geometry } from '../rendering/primitives/Geometry.js';
5
- import { RenderingPrimitives } from '../rendering/types.js';
3
+ import { Mesh } from '../rendering/mesh/Mesh.js';
6
4
 
7
- class TransitionOverlayShape extends DrawableShape {
5
+ class TransitionOverlayMesh extends Mesh {
8
6
  render(backend) {
9
7
  if (this.visible) {
10
8
  backend.draw(this);
@@ -12,16 +10,16 @@ class TransitionOverlayShape extends DrawableShape {
12
10
  return this;
13
11
  }
14
12
  }
15
- const createOverlayGeometry = () => new Geometry({
16
- vertices: [0, 0, 1, 0, 0, 1, 1, 1],
17
- indices: [0, 1, 2, 3],
18
- points: [0, 0, 1, 0, 0, 1, 1, 1],
13
+ const createOverlayMesh = () => new TransitionOverlayMesh({
14
+ // 4 vertices (TL, TR, BL, BR) with 2 indexed triangles forming a screen quad.
15
+ vertices: new Float32Array([0, 0, 1, 0, 0, 1, 1, 1]),
16
+ indices: new Uint16Array([0, 1, 2, 1, 3, 2]),
19
17
  });
20
18
  const defaultFadeTransitionDuration = 220;
21
19
  class SceneManager {
22
20
  _app;
23
21
  _stack = [];
24
- _transitionOverlay = new TransitionOverlayShape(createOverlayGeometry(), Color.black, RenderingPrimitives.TriangleStrip);
22
+ _transitionOverlay = createOverlayMesh();
25
23
  _transition = null;
26
24
  onChangeScene = new Signal();
27
25
  onStartScene = new Signal();
@@ -384,7 +382,8 @@ class SceneManager {
384
382
  const overlayColor = transition ? transition.color : Color.black;
385
383
  const backend = this._app.backend;
386
384
  const bounds = backend.view.getBounds();
387
- const vertices = this._transitionOverlay.geometry.vertices;
385
+ const overlay = this._transitionOverlay;
386
+ const vertices = overlay.vertices;
388
387
  vertices[0] = bounds.left;
389
388
  vertices[1] = bounds.top;
390
389
  vertices[2] = bounds.right;
@@ -393,8 +392,8 @@ class SceneManager {
393
392
  vertices[5] = bounds.bottom;
394
393
  vertices[6] = bounds.right;
395
394
  vertices[7] = bounds.bottom;
396
- this._transitionOverlay.color.set(overlayColor.r, overlayColor.g, overlayColor.b, Math.max(0, Math.min(1, alpha)));
397
- this._transitionOverlay.render(backend);
395
+ overlay.tint.set(overlayColor.r, overlayColor.g, overlayColor.b, Math.max(0, Math.min(1, alpha)));
396
+ overlay.render(backend);
398
397
  }
399
398
  }
400
399
 
@@ -1 +1 @@
1
- {"version":3,"file":"SceneManager.js","sources":["../../../../src/core/SceneManager.ts"],"sourcesContent":[null],"names":[],"mappings":";;;;;;AAqDA,MAAM,sBAAuB,SAAQ,aAAa,CAAA;AAC9B,IAAA,MAAM,CAAC,OAAsB,EAAA;AACzC,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE;AACd,YAAA,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;QACtB;AAEA,QAAA,OAAO,IAAI;IACf;AACH;AAED,MAAM,qBAAqB,GAAG,MAAgB,IAAI,QAAQ,CAAC;AACvD,IAAA,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAClC,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AACrB,IAAA,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AACnC,CAAA,CAAC;AAEF,MAAM,6BAA6B,GAAG,GAAG;MAE5B,YAAY,CAAA;AAEJ,IAAA,IAAI;IACJ,MAAM,GAA2B,EAAE;AACnC,IAAA,kBAAkB,GAAG,IAAI,sBAAsB,CAC5D,qBAAqB,EAAE,EACvB,KAAK,CAAC,KAAK,EACX,mBAAmB,CAAC,aAAa,CACpC;IACO,WAAW,GAAgC,IAAI;AAEvC,IAAA,aAAa,GAAG,IAAI,MAAM,EAAkB;AAC5C,IAAA,YAAY,GAAG,IAAI,MAAM,EAAW;AACpC,IAAA,aAAa,GAAG,IAAI,MAAM,EAAW;AACrC,IAAA,WAAW,GAAG,IAAI,MAAM,EAAW;AAEnD,IAAA,WAAA,CAAmB,GAAgB,EAAA;AAC/B,QAAA,IAAI,CAAC,IAAI,GAAG,GAAG;QAEf,IAAI,CAAC,sBAAsB,EAAE;IACjC;AAEA,IAAA,IAAW,KAAK,GAAA;AACZ,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,IAAI,IAAI;IAC5C;IAEA,IAAW,KAAK,CAAC,KAAmB,EAAA;AAChC,QAAA,KAAK,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;IAC7B;AAEA,IAAA,IAAW,MAAM,GAAA;AACb,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,CAAC;IAChD;AAEO,IAAA,MAAM,QAAQ,CAAC,KAAmB,EAAE,UAA2B,EAAE,EAAA;AACpE,QAAA,MAAM,IAAI,CAAC,kBAAkB,CAAC,YAAW;AACrC,YAAA,IAAI,KAAK,KAAK,IAAI,EAAE;AAChB,gBAAA,MAAM,IAAI,CAAC,gBAAgB,EAAE;AAC7B,gBAAA,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,IAAI,CAAC;gBAEjC;YACJ;AAEA,YAAA,IAAI,IAAI,CAAC,KAAK,KAAK,KAAK,EAAE;gBACtB,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;AACxB,oBAAA,MAAM,IAAI,CAAC,oBAAoB,EAAE;gBACrC;gBAEA;YACJ;AAEA,YAAA,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,KAAK,KAAK,KAAK,CAAC,EAAE;AACpD,gBAAA,MAAM,IAAI,KAAK,CAAC,gEAAgE,CAAC;YACrF;YAEA,MAAM,MAAM,GAAG,IAAI,CAAC,2BAA2B,CAAC,KAAK,CAAC;AAEtD,YAAA,MAAM,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC;AAC/B,YAAA,MAAM,IAAI,CAAC,gBAAgB,EAAE;YAC7B,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;AACnC,YAAA,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,KAAK,CAAC;AAClC,YAAA,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC;AACrC,QAAA,CAAC,EAAE,OAAO,CAAC,UAAU,CAAC;AAEtB,QAAA,OAAO,IAAI;IACf;AAEO,IAAA,MAAM,SAAS,CAAC,KAAY,EAAE,UAA4B,EAAE,EAAA;AAC/D,QAAA,MAAM,IAAI,CAAC,kBAAkB,CAAC,YAAW;AACrC,YAAA,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,KAAK,KAAK,KAAK,CAAC,EAAE;AACpD,gBAAA,MAAM,IAAI,KAAK,CAAC,oEAAoE,CAAC;YACzF;YAEA,MAAM,MAAM,GAAG,IAAI,CAAC,2BAA2B,CAAC,KAAK,EAAE,OAAO,CAAC;AAE/D,YAAA,MAAM,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC;YAC/B,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;AACnC,YAAA,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,KAAK,CAAC;AAClC,YAAA,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC;AACrC,QAAA,CAAC,EAAE,OAAO,CAAC,UAAU,CAAC;AAEtB,QAAA,OAAO,IAAI;IACf;AAEO,IAAA,MAAM,QAAQ,CAAC,OAAA,GAA2B,EAAE,EAAA;AAC/C,QAAA,MAAM,IAAI,CAAC,kBAAkB,CAAC,YAAW;YACrC,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE;gBAC1B;YACJ;YAEA,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC;YAElC,IAAI,CAAC,OAAO,EAAE;gBACV;YACJ;YAEA,MAAM,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,KAAK,CAAC;AACvC,YAAA,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE;YACjB,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC;AAC3C,QAAA,CAAC,EAAE,OAAO,CAAC,UAAU,CAAC;AAEtB,QAAA,OAAO,IAAI;IACf;AAEO,IAAA,MAAM,CAAC,KAAW,EAAA;AACrB,QAAA,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,YAAY,CAAC;QAE3C,MAAM,EAAE,YAAY,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC,oBAAoB,EAAE;AAEhE,QAAA,KAAK,MAAM,KAAK,IAAI,YAAY,EAAE;AAC9B,YAAA,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC;QACvB;AAEA,QAAA,KAAK,MAAM,KAAK,IAAI,UAAU,EAAE;YAC5B,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;QACjC;AAEA,QAAA,MAAM,eAAe,GAAG,IAAI,CAAC,mBAAmB,EAAE;AAElD,QAAA,IAAI,eAAe,GAAG,CAAC,EAAE;AACrB,YAAA,IAAI,CAAC,wBAAwB,CAAC,eAAe,CAAC;QAClD;AAEA,QAAA,IAAI,IAAI,CAAC,KAAK,KAAK,IAAI,EAAE;YACrB,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC;QAC3C;AAEA,QAAA,OAAO,IAAI;IACf;IAEO,OAAO,GAAA;QACV,IAAI,CAAC,wBAAwB,EAAE;AAE/B,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE;AAClB,YAAA,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW;AAEnC,YAAA,IAAI,CAAC,WAAW,GAAG,IAAI;AACvB,YAAA,UAAU,CAAC,KAAK,CAAC,OAAO,EAAE;YAC1B,UAAU,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,2DAA2D,CAAC,CAAC;QAC7F;AAEA,QAAA,KAAK,IAAI,CAAC,yBAAyB,EAAE;AAErC,QAAA,IAAI,CAAC,kBAAkB,CAAC,OAAO,EAAE;AACjC,QAAA,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE;AAC5B,QAAA,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE;AAC3B,QAAA,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE;AAC5B,QAAA,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE;IAC9B;IAEQ,MAAM,aAAa,CAAC,KAAY,EAAA;AACpC,QAAA,KAAK,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI;AAErB,QAAA,IAAI;YACA,MAAM,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;YAClC,MAAM,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;QACtC;QAAE,OAAO,KAAK,EAAE;YACZ,IAAI,YAAY,GAAY,IAAI;AAEhC,YAAA,IAAI;gBACA,MAAM,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;YACxC;YAAE,OAAO,WAAW,EAAE;gBAClB,YAAY,GAAG,WAAW;YAC9B;YAEA,KAAK,CAAC,OAAO,EAAE;AACf,YAAA,KAAK,CAAC,GAAG,GAAG,IAAI;YAEhB,IAAI,YAAY,EAAE;AACd,gBAAA,MAAM,WAAW,GAAG,KAAK,YAAY,KAAK,GAAG,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC;AAC1E,gBAAA,MAAM,cAAc,GAAG,YAAY,YAAY,KAAK,GAAG,YAAY,CAAC,OAAO,GAAG,MAAM,CAAC,YAAY,CAAC;AAElG,gBAAA,MAAM,IAAI,KAAK,CACX,CAAA,4BAAA,EAA+B,WAAW,CAAA,uBAAA,EAA0B,cAAc,CAAA,CAAA,CAAG,EACrF,EAAE,KAAK,EAAE,KAAK,EAAE,CACnB;YACL;AAEA,YAAA,MAAM,KAAK;QACf;IACJ;IAEQ,MAAM,aAAa,CAAC,KAAY,EAAA;AACpC,QAAA,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,KAAK,CAAC;QAChC,MAAM,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;QACpC,KAAK,CAAC,OAAO,EAAE;AACf,QAAA,KAAK,CAAC,GAAG,GAAG,IAAI;IACpB;AAEQ,IAAA,MAAM,gBAAgB,GAAA;AAC1B,QAAA,KAAK,IAAI,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE;AAC1D,YAAA,MAAM,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC;QACtD;AAEA,QAAA,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC;IAC1B;AAEQ,IAAA,MAAM,oBAAoB,GAAA;QAC9B,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC,EAAE;YACzB;QACJ;QAEA,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC;QAEtC,IAAI,CAAC,WAAW,EAAE;YACd;QACJ;AAEA,QAAA,KAAK,IAAI,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE;AAC1D,YAAA,MAAM,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC;QACtD;AAEA,QAAA,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC;AACtB,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC;IACjC;AAEQ,IAAA,MAAM,yBAAyB,GAAA;AACnC,QAAA,KAAK,IAAI,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE;AAC1D,YAAA,IAAI;AACA,gBAAA,MAAM,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC;YACtD;YAAE,OAAO,KAAK,EAAE;AACZ,gBAAA,OAAO,CAAC,KAAK,CAAC,2DAA2D,EAAE,KAAK,CAAC;YACrF;QACJ;AAEA,QAAA,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC;IAC1B;AAEQ,IAAA,2BAA2B,CAAC,KAAY,EAAE,SAAA,GAAsC,EAAE,EAAA;AACtF,QAAA,MAAM,WAAW,GAAG,KAAK,CAAC,sBAAsB,EAAE;QAClD,MAAM,IAAI,GAAG,SAAS,CAAC,IAAI,IAAI,WAAW,CAAC,IAAI,IAAI,SAAS;QAC5D,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,IAAI,WAAW,CAAC,KAAK,KAAK,IAAI,KAAK,SAAS,GAAG,aAAa,GAAG,SAAS,CAAC;AAEtG,QAAA,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE;IAC1B;IAEQ,oBAAoB,GAAA;AACxB,QAAA,MAAM,YAAY,GAAG,IAAI,KAAK,EAAS;AACvC,QAAA,MAAM,UAAU,GAAG,IAAI,KAAK,EAAS;QACrC,IAAI,gBAAgB,GAAG,IAAI;QAC3B,IAAI,cAAc,GAAG,IAAI;AAEzB,QAAA,KAAK,IAAI,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE;YAC1D,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;YAEhC,IAAI,gBAAgB,EAAE;AAClB,gBAAA,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;YAClC;YAEA,IAAI,cAAc,EAAE;AAChB,gBAAA,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;YAChC;YAEA,IAAI,KAAK,CAAC,MAAM,CAAC,IAAI,KAAK,QAAQ,EAAE;gBAChC,gBAAgB,GAAG,KAAK;gBACxB,cAAc,GAAG,KAAK;YAC1B;iBAAO,IAAI,KAAK,CAAC,MAAM,CAAC,IAAI,KAAK,OAAO,EAAE;gBACtC,gBAAgB,GAAG,KAAK;YAC5B;QACJ;QAEA,YAAY,CAAC,OAAO,EAAE;QACtB,UAAU,CAAC,OAAO,EAAE;AAEpB,QAAA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE;IACvC;IAEQ,sBAAsB,GAAA;AAC1B,QAAA,MAAM,YAAY,GAAI,IAAI,CAAC,IAA6B,CAAC,YAYxD;QAED,YAAY,EAAE,SAAS,EAAE,GAAG,GAAG,IAAI,CAAC,cAAc,CAAC;QACnD,YAAY,EAAE,OAAO,EAAE,GAAG,GAAG,IAAI,CAAC,YAAY,CAAC;QAC/C,YAAY,EAAE,cAAc,EAAE,GAAG,GAAG,IAAI,CAAC,mBAAmB,CAAC;QAC7D,YAAY,EAAE,cAAc,EAAE,GAAG,GAAG,IAAI,CAAC,mBAAmB,CAAC;QAC7D,YAAY,EAAE,aAAa,EAAE,GAAG,GAAG,IAAI,CAAC,kBAAkB,CAAC;QAC3D,YAAY,EAAE,aAAa,EAAE,GAAG,GAAG,IAAI,CAAC,kBAAkB,CAAC;QAC3D,YAAY,EAAE,WAAW,EAAE,GAAG,GAAG,IAAI,CAAC,gBAAgB,CAAC;QACvD,YAAY,EAAE,YAAY,EAAE,GAAG,GAAG,IAAI,CAAC,iBAAiB,CAAC;QACzD,YAAY,EAAE,cAAc,EAAE,GAAG,GAAG,IAAI,CAAC,mBAAmB,CAAC;QAC7D,YAAY,EAAE,eAAe,EAAE,GAAG,GAAG,IAAI,CAAC,oBAAoB,CAAC;QAC/D,YAAY,EAAE,YAAY,EAAE,GAAG,GAAG,IAAI,CAAC,iBAAiB,CAAC;IAC7D;IAEQ,wBAAwB,GAAA;AAC5B,QAAA,MAAM,YAAY,GAAI,IAAI,CAAC,IAA6B,CAAC,YAYxD;QAED,YAAY,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC;QACtD,YAAY,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC;QAClD,YAAY,EAAE,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC,mBAAmB,CAAC;QAChE,YAAY,EAAE,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC,mBAAmB,CAAC;QAChE,YAAY,EAAE,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC,kBAAkB,CAAC;QAC9D,YAAY,EAAE,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC,kBAAkB,CAAC;QAC9D,YAAY,EAAE,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC;QAC1D,YAAY,EAAE,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC,iBAAiB,CAAC;QAC5D,YAAY,EAAE,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC,mBAAmB,CAAC;QAChE,YAAY,EAAE,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC,oBAAoB,CAAC;QAClE,YAAY,EAAE,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC,iBAAiB,CAAC;IAChE;AAEQ,IAAA,cAAc,CAAC,KAAsB,EAAA;AACzC,QAAA,KAAK,IAAI,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE;YAC1D,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;YAEhC,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,KAAK,aAAa,EAAE;gBACtC;YACJ;YAEA,MAAM,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC,WAAW,CAAC,KAAK,CAAC;AAE9C,YAAA,IAAI,OAAO,KAAK,KAAK,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,KAAK,SAAS,EAAE;gBACvD;YACJ;QACJ;IACJ;AAEiB,IAAA,cAAc,GAAG,CAAC,OAAe,KAAU;QACxD,IAAI,CAAC,cAAc,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC;AACrD,IAAA,CAAC;AAEgB,IAAA,YAAY,GAAG,CAAC,OAAe,KAAU;QACtD,IAAI,CAAC,cAAc,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC;AACnD,IAAA,CAAC;AAEgB,IAAA,mBAAmB,GAAG,CAAC,OAAgB,KAAU;QAC9D,IAAI,CAAC,cAAc,CAAC,EAAE,IAAI,EAAE,cAAc,EAAE,OAAO,EAAE,CAAC;AAC1D,IAAA,CAAC;AAEgB,IAAA,mBAAmB,GAAG,CAAC,OAAgB,KAAU;QAC9D,IAAI,CAAC,cAAc,CAAC,EAAE,IAAI,EAAE,cAAc,EAAE,OAAO,EAAE,CAAC;AAC1D,IAAA,CAAC;AAEgB,IAAA,kBAAkB,GAAG,CAAC,OAAgB,KAAU;QAC7D,IAAI,CAAC,cAAc,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,CAAC;AACzD,IAAA,CAAC;AAEgB,IAAA,kBAAkB,GAAG,CAAC,OAAgB,KAAU;QAC7D,IAAI,CAAC,cAAc,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,CAAC;AACzD,IAAA,CAAC;AAEgB,IAAA,gBAAgB,GAAG,CAAC,OAAgB,KAAU;QAC3D,IAAI,CAAC,cAAc,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,CAAC;AACvD,IAAA,CAAC;AAEgB,IAAA,iBAAiB,GAAG,CAAC,OAAgB,KAAU;QAC5D,IAAI,CAAC,cAAc,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,CAAC;AACxD,IAAA,CAAC;AAEgB,IAAA,mBAAmB,GAAG,CAAC,OAAgB,KAAU;QAC9D,IAAI,CAAC,cAAc,CAAC,EAAE,IAAI,EAAE,cAAc,EAAE,OAAO,EAAE,CAAC;AAC1D,IAAA,CAAC;AAEgB,IAAA,oBAAoB,GAAG,CAAC,OAAgB,KAAU;QAC/D,IAAI,CAAC,cAAc,CAAC,EAAE,IAAI,EAAE,eAAe,EAAE,OAAO,EAAE,CAAC;AAC3D,IAAA,CAAC;AAEgB,IAAA,iBAAiB,GAAG,CAAC,KAAa,KAAU;QACzD,IAAI,CAAC,cAAc,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,CAAC;AACtD,IAAA,CAAC;AAEO,IAAA,MAAM,kBAAkB,CAAC,MAA2B,EAAE,UAA4B,EAAA;QACtF,IAAI,CAAC,UAAU,IAAI,UAAU,CAAC,IAAI,KAAK,MAAM,EAAE;YAC3C,MAAM,MAAM,EAAE;YAEd;QACJ;AAEA,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE;AAClB,YAAA,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC;QAC/D;AAEA,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,UAAU,CAAC,QAAQ,IAAI,6BAA6B,CAAC;AAEpF,QAAA,IAAI,UAAU,KAAK,CAAC,EAAE;YAClB,MAAM,MAAM,EAAE;YAEd;QACJ;QAEA,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,KAAI;YACxC,IAAI,CAAC,WAAW,GAAG;AACf,gBAAA,IAAI,EAAE,MAAM;gBACZ,UAAU;gBACV,MAAM;gBACN,OAAO;gBACP,MAAM;AACN,gBAAA,KAAK,EAAE,CAAC,UAAU,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,EAAE,KAAK,EAAE;AAChD,gBAAA,SAAS,EAAE,CAAC;AACZ,gBAAA,KAAK,EAAE,KAAK;aACf;AACL,QAAA,CAAC,CAAC;IACN;AAEQ,IAAA,kBAAkB,CAAC,OAAe,EAAA;AACtC,QAAA,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;YACnB;QACJ;QAEA,IAAI,IAAI,CAAC,WAAW,CAAC,KAAK,KAAK,KAAK,EAAE;AAClC,YAAA,IAAI,CAAC,WAAW,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,CACjC,IAAI,CAAC,WAAW,CAAC,UAAU,EAC3B,IAAI,CAAC,WAAW,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,CACpD;AAED,YAAA,IAAI,IAAI,CAAC,WAAW,CAAC,SAAS,IAAI,IAAI,CAAC,WAAW,CAAC,UAAU,EAAE;AAC3D,gBAAA,IAAI,CAAC,WAAW,CAAC,KAAK,GAAG,WAAW;AACpC,gBAAA,KAAK,IAAI,CAAC,wBAAwB,EAAE;YACxC;YAEA;QACJ;QAEA,IAAI,IAAI,CAAC,WAAW,CAAC,KAAK,KAAK,IAAI,EAAE;AACjC,YAAA,IAAI,CAAC,WAAW,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,CACjC,IAAI,CAAC,WAAW,CAAC,UAAU,EAC3B,IAAI,CAAC,WAAW,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,CACpD;AAED,YAAA,IAAI,IAAI,CAAC,WAAW,CAAC,SAAS,IAAI,IAAI,CAAC,WAAW,CAAC,UAAU,EAAE;gBAC3D,IAAI,CAAC,iBAAiB,EAAE;YAC5B;QACJ;IACJ;AAEQ,IAAA,MAAM,wBAAwB,GAAA;AAClC,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW;QAEnC,IAAI,CAAC,UAAU,IAAI,UAAU,CAAC,KAAK,KAAK,WAAW,EAAE;YACjD;QACJ;AAEA,QAAA,IAAI;AACA,YAAA,MAAM,UAAU,CAAC,MAAM,EAAE;QAC7B;QAAE,OAAO,KAAK,EAAE;AACZ,YAAA,IAAI,IAAI,CAAC,WAAW,KAAK,UAAU,EAAE;AACjC,gBAAA,IAAI,CAAC,WAAW,GAAG,IAAI;AACvB,gBAAA,UAAU,CAAC,KAAK,CAAC,OAAO,EAAE;AAC1B,gBAAA,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC;YAC5B;YAEA;QACJ;AAEA,QAAA,IAAI,IAAI,CAAC,WAAW,KAAK,UAAU,EAAE;YACjC;QACJ;AAEA,QAAA,UAAU,CAAC,KAAK,GAAG,IAAI;AACvB,QAAA,UAAU,CAAC,SAAS,GAAG,CAAC;IAC5B;IAEQ,iBAAiB,GAAA;AACrB,QAAA,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;YACnB;QACJ;AAEA,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW;AAEnC,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI;AACvB,QAAA,UAAU,CAAC,KAAK,CAAC,OAAO,EAAE;QAC1B,UAAU,CAAC,OAAO,EAAE;IACxB;IAEQ,mBAAmB,GAAA;AACvB,QAAA,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;AACnB,YAAA,OAAO,CAAC;QACZ;QAEA,IAAI,IAAI,CAAC,WAAW,CAAC,KAAK,KAAK,WAAW,EAAE;AACxC,YAAA,OAAO,CAAC;QACZ;QAEA,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,UAAU,GAAG;cACzC,IAAI,CAAC,WAAW,CAAC,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC;cAC9C,CAAC;AAEP,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,KAAK,KAAK,KAAK,GAAG,QAAQ,GAAG,CAAC,GAAG,QAAQ;IACrE;AAEQ,IAAA,wBAAwB,CAAC,KAAa,EAAA;AAC1C,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW;AACnC,QAAA,MAAM,YAAY,GAAG,UAAU,GAAG,UAAU,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK;AAChE,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO;QACjC,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE;QACvC,MAAM,QAAQ,GAAG,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,QAAQ;AAE1D,QAAA,QAAQ,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,IAAI;AACzB,QAAA,QAAQ,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,GAAG;AACxB,QAAA,QAAQ,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,KAAK;AAC1B,QAAA,QAAQ,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,GAAG;AACxB,QAAA,QAAQ,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,IAAI;AACzB,QAAA,QAAQ,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM;AAC3B,QAAA,QAAQ,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,KAAK;AAC1B,QAAA,QAAQ,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM;AAE3B,QAAA,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;AAClH,QAAA,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,OAAO,CAAC;IAC3C;AACH;;;;"}
1
+ {"version":3,"file":"SceneManager.js","sources":["../../../../src/core/SceneManager.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
package/dist/esm/index.js CHANGED
@@ -63,9 +63,6 @@ export { UniversalEmitter } from './particles/emitters/UniversalEmitter.js';
63
63
  export { Particle } from './particles/Particle.js';
64
64
  export { ParticleSystem } from './particles/ParticleSystem.js';
65
65
  export { Mesh } from './rendering/mesh/Mesh.js';
66
- export { CircleGeometry } from './rendering/primitives/CircleGeometry.js';
67
- export { Geometry } from './rendering/primitives/Geometry.js';
68
- export { DrawableShape } from './rendering/primitives/DrawableShape.js';
69
66
  export { Graphics } from './rendering/primitives/Graphics.js';
70
67
  export { Shader } from './rendering/shader/Shader.js';
71
68
  export { ShaderAttribute } from './rendering/shader/ShaderAttribute.js';
@@ -87,7 +84,6 @@ export { webGl2PrimitiveArrayConstructors, webGl2PrimitiveByteSizeMapping, webGl
87
84
  export { WebGl2VertexArrayObject } from './rendering/webgl2/WebGl2VertexArrayObject.js';
88
85
  export { WebGl2MeshRenderer } from './rendering/webgl2/WebGl2MeshRenderer.js';
89
86
  export { WebGl2ParticleRenderer } from './rendering/webgl2/WebGl2ParticleRenderer.js';
90
- export { WebGl2PrimitiveRenderer } from './rendering/webgl2/WebGl2PrimitiveRenderer.js';
91
87
  export { WebGl2Backend } from './rendering/webgl2/WebGl2Backend.js';
92
88
  export { createWebGl2ShaderProgram } from './rendering/webgl2/WebGl2ShaderProgram.js';
93
89
  export { WebGl2SpriteRenderer } from './rendering/webgl2/WebGl2SpriteRenderer.js';
@@ -95,7 +91,6 @@ export { AbstractWebGpuRenderer } from './rendering/webgpu/AbstractWebGpuRendere
95
91
  export { getWebGpuBlendState } from './rendering/webgpu/WebGpuBlendState.js';
96
92
  export { WebGpuMeshRenderer } from './rendering/webgpu/WebGpuMeshRenderer.js';
97
93
  export { WebGpuParticleRenderer } from './rendering/webgpu/WebGpuParticleRenderer.js';
98
- export { WebGpuPrimitiveRenderer } from './rendering/webgpu/WebGpuPrimitiveRenderer.js';
99
94
  export { WebGpuBackend } from './rendering/webgpu/WebGpuBackend.js';
100
95
  export { WebGpuSpriteRenderer } from './rendering/webgpu/WebGpuSpriteRenderer.js';
101
96
  export { BlendModes, BufferTypes, BufferUsage, RenderingPrimitives, ScaleModes, ShaderPrimitives, WrapModes } from './rendering/types.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -1,8 +1,12 @@
1
- import { Geometry } from '@/rendering/primitives/Geometry';
2
- export declare const buildLine: (startX: number, startY: number, endX: number, endY: number, width: number, vertices?: Array<number>, indices?: Array<number>) => Geometry;
3
- export declare const buildPath: (points: Array<number>, width: number, vertices?: Array<number>, indices?: Array<number>) => Geometry;
4
- export declare const buildCircle: (centerX: number, centerY: number, radius: number, vertices?: Array<number>, indices?: Array<number>) => Geometry;
5
- export declare const buildEllipse: (centerX: number, centerY: number, radiusX: number, radiusY: number, vertices?: Array<number>, indices?: Array<number>) => Geometry;
6
- export declare const buildPolygon: (points: Array<number>, vertices?: Array<number>, indices?: Array<number>) => Geometry;
7
- export declare const buildRectangle: (x: number, y: number, width: number, height: number, vertices?: Array<number>, indices?: Array<number>) => Geometry;
8
- export declare const buildStar: (centerX: number, centerY: number, points: number, radius: number, innerRadius?: number, rotation?: number) => Geometry;
1
+ export interface MeshGeometryData {
2
+ readonly vertices: Float32Array;
3
+ readonly indices: Uint16Array;
4
+ readonly points: Array<number>;
5
+ }
6
+ export declare const buildLine: (startX: number, startY: number, endX: number, endY: number, width: number) => MeshGeometryData;
7
+ export declare const buildPath: (points: Array<number>, width: number) => MeshGeometryData;
8
+ export declare const buildCircle: (centerX: number, centerY: number, radius: number) => MeshGeometryData;
9
+ export declare const buildEllipse: (centerX: number, centerY: number, radiusX: number, radiusY: number) => MeshGeometryData;
10
+ export declare const buildPolygon: (points: Array<number>) => MeshGeometryData;
11
+ export declare const buildRectangle: (x: number, y: number, width: number, height: number) => MeshGeometryData;
12
+ export declare const buildStar: (centerX: number, centerY: number, points: number, radius: number, innerRadius?: number, rotation?: number) => MeshGeometryData;
@@ -1,26 +1,31 @@
1
1
  import earcut from 'earcut';
2
- import { Geometry } from '../rendering/primitives/Geometry.js';
3
2
  import { Vector } from './Vector.js';
4
3
  import { tau } from './utils.js';
5
4
 
6
- const buildLine = (startX, startY, endX, endY, width, vertices = [], indices = []) => {
5
+ const buildLine = (startX, startY, endX, endY, width) => {
7
6
  const points = [startX, startY, endX, endY];
8
7
  const distance = width / 2;
9
- const index = vertices.length / 6;
10
8
  const perpA = new Vector(startX - endX, startY - endY).perp().normalize().multiply(distance);
11
9
  const perpB = new Vector(endX - startX, endY - startY).perp().normalize().multiply(distance);
12
- vertices.push(startX - perpA.x, startY - perpA.y);
13
- vertices.push(startX + perpA.x, startY + perpA.y);
14
- vertices.push(endX - perpB.x, endY - perpB.y);
15
- vertices.push(endX + perpB.x, endY + perpB.y);
16
- indices.push(index, index, index + 1, index + 2, index + 3, index + 3);
17
- return new Geometry({ vertices, indices, points });
10
+ const vertices = new Float32Array([
11
+ startX - perpA.x, startY - perpA.y, // 0: start-left
12
+ startX + perpA.x, startY + perpA.y, // 1: start-right
13
+ endX - perpB.x, endY - perpB.y, // 2: end-left
14
+ endX + perpB.x, endY + perpB.y, // 3: end-right
15
+ ]);
16
+ perpA.destroy();
17
+ perpB.destroy();
18
+ const indices = new Uint16Array([0, 1, 3, 0, 3, 2]);
19
+ return { vertices, indices, points };
18
20
  };
19
- const buildPath = (points, width, vertices = [], indices = []) => {
21
+ const buildPath = (points, width) => {
20
22
  if (points.length < 4) {
21
23
  throw new Error('At least two X/Y pairs are required to build a line.');
22
24
  }
23
- const lineWidth = width / 2, firstPoint = new Vector(points[0], points[1]), lastPoint = new Vector(points[points.length - 2], points[points.length - 1]);
25
+ const lineWidth = width / 2;
26
+ const firstPoint = new Vector(points[0], points[1]);
27
+ const lastPoint = new Vector(points[points.length - 2], points[points.length - 1]);
28
+ const outlinePoints = points;
24
29
  if (firstPoint.x === lastPoint.x && firstPoint.y === lastPoint.y) {
25
30
  points = points.slice();
26
31
  points.pop();
@@ -31,9 +36,10 @@ const buildPath = (points, width, vertices = [], indices = []) => {
31
36
  points.unshift(midPointX, midPointY);
32
37
  points.push(midPointX, midPointY);
33
38
  }
39
+ firstPoint.destroy();
40
+ lastPoint.destroy();
34
41
  const length = points.length / 2;
35
- let indexCount = points.length;
36
- let indexStart = vertices.length / 6;
42
+ const stripVertices = [];
37
43
  let p1x = points[0];
38
44
  let p1y = points[1];
39
45
  let p2x = points[2];
@@ -51,8 +57,8 @@ const buildPath = (points, width, vertices = [], indices = []) => {
51
57
  perpy /= dist;
52
58
  perpx *= lineWidth;
53
59
  perpy *= lineWidth;
54
- vertices.push(p1x - perpx, p1y - perpy);
55
- vertices.push(p1x + perpx, p1y + perpy);
60
+ stripVertices.push(p1x - perpx, p1y - perpy);
61
+ stripVertices.push(p1x + perpx, p1y + perpy);
56
62
  for (let i = 1; i < length - 1; i++) {
57
63
  p1x = points[(i - 1) * 2];
58
64
  p1y = points[((i - 1) * 2) + 1];
@@ -83,8 +89,8 @@ const buildPath = (points, width, vertices = [], indices = []) => {
83
89
  let denom = (a1 * b2) - (a2 * b1);
84
90
  if (Math.abs(denom) < 0.1) {
85
91
  denom += 10.1;
86
- vertices.push(p2x - perpx, p2y - perpy);
87
- vertices.push(p2x + perpx, p2y + perpy);
92
+ stripVertices.push(p2x - perpx, p2y - perpy);
93
+ stripVertices.push(p2x + perpx, p2y + perpy);
88
94
  continue;
89
95
  }
90
96
  const px = ((b1 * c2) - (b2 * c1)) / denom;
@@ -98,14 +104,13 @@ const buildPath = (points, width, vertices = [], indices = []) => {
98
104
  perp3y /= dist;
99
105
  perp3x *= lineWidth;
100
106
  perp3y *= lineWidth;
101
- vertices.push(p2x - perp3x, p2y - perp3y);
102
- vertices.push(p2x + perp3x, p2y + perp3y);
103
- vertices.push(p2x - perp3x, p2y - perp3y);
104
- indexCount++;
107
+ stripVertices.push(p2x - perp3x, p2y - perp3y);
108
+ stripVertices.push(p2x + perp3x, p2y + perp3y);
109
+ stripVertices.push(p2x - perp3x, p2y - perp3y);
105
110
  }
106
111
  else {
107
- vertices.push(px, py);
108
- vertices.push(p2x - (px - p2x), p2y - (py - p2y));
112
+ stripVertices.push(px, py);
113
+ stripVertices.push(p2x - (px - p2x), p2y - (py - p2y));
109
114
  }
110
115
  }
111
116
  p1x = points[(length - 2) * 2];
@@ -119,70 +124,112 @@ const buildPath = (points, width, vertices = [], indices = []) => {
119
124
  perpy /= dist;
120
125
  perpx *= lineWidth;
121
126
  perpy *= lineWidth;
122
- vertices.push(p2x - perpx, p2y - perpy);
123
- vertices.push(p2x + perpx, p2y + perpy);
124
- indices.push(indexStart);
125
- for (let i = 0; i < indexCount; i++) {
126
- indices.push(indexStart++);
127
+ stripVertices.push(p2x - perpx, p2y - perpy);
128
+ stripVertices.push(p2x + perpx, p2y + perpy);
129
+ // Convert strip-style vertex sequence to triangle-list indices.
130
+ // For N strip vertices (N = stripVertices.length / 2), each i in [0, N-3]
131
+ // produces a triangle. Even i: (i, i+1, i+2). Odd i: (i+1, i, i+2).
132
+ // This preserves the same winding the original triangle-strip pipeline saw.
133
+ const stripVertexCount = stripVertices.length / 2;
134
+ const vertices = new Float32Array(stripVertices);
135
+ const triangleCount = stripVertexCount >= 3 ? stripVertexCount - 2 : 0;
136
+ const indices = new Uint16Array(triangleCount * 3);
137
+ for (let i = 0; i < triangleCount; i++) {
138
+ const base = i * 3;
139
+ if ((i & 1) === 0) {
140
+ indices[base] = i;
141
+ indices[base + 1] = i + 1;
142
+ indices[base + 2] = i + 2;
143
+ }
144
+ else {
145
+ indices[base] = i + 1;
146
+ indices[base + 1] = i;
147
+ indices[base + 2] = i + 2;
148
+ }
127
149
  }
128
- indices.push(indexStart - 1);
129
- return new Geometry({ vertices, indices, points });
150
+ return { vertices, indices, points: outlinePoints };
130
151
  };
131
- const buildCircle = (centerX, centerY, radius, vertices = [], indices = []) => {
132
- const length = Math.floor(15 * Math.sqrt(radius + radius)), segment = (Math.PI * 2) / length, points = [];
133
- let index = vertices.length / 6;
134
- indices.push(index);
135
- for (let i = 0; i < length + 1; i++) {
136
- const segmentX = centerX + (Math.sin(segment * i) * radius), segmentY = centerY + (Math.cos(segment * i) * radius);
152
+ const buildCircle = (centerX, centerY, radius) => {
153
+ const length = Math.floor(15 * Math.sqrt(radius + radius));
154
+ const segment = (Math.PI * 2) / length;
155
+ const points = [];
156
+ // 1 center vertex + N perimeter vertices.
157
+ const vertices = new Float32Array((length + 1) * 2);
158
+ vertices[0] = centerX;
159
+ vertices[1] = centerY;
160
+ for (let i = 0; i < length; i++) {
161
+ const segmentX = centerX + (Math.sin(segment * i) * radius);
162
+ const segmentY = centerY + (Math.cos(segment * i) * radius);
137
163
  points.push(segmentX, segmentY);
138
- vertices.push(centerX, centerY);
139
- vertices.push(segmentX, segmentY);
140
- indices.push(index++, index++);
164
+ const offset = (i + 1) * 2;
165
+ vertices[offset] = segmentX;
166
+ vertices[offset + 1] = segmentY;
141
167
  }
142
- indices.push(index - 1);
143
- return new Geometry({ vertices, indices, points });
168
+ const indices = new Uint16Array(length * 3);
169
+ for (let i = 0; i < length; i++) {
170
+ const base = i * 3;
171
+ indices[base] = 0;
172
+ indices[base + 1] = i + 1;
173
+ indices[base + 2] = i + 2 > length ? 1 : i + 2;
174
+ }
175
+ return { vertices, indices, points };
144
176
  };
145
- const buildEllipse = (centerX, centerY, radiusX, radiusY, vertices = [], indices = []) => {
146
- const length = Math.floor(15 * Math.sqrt(radiusX + radiusY)), segment = (Math.PI * 2) / length, points = [];
147
- let index = vertices.length / 6;
148
- indices.push(index);
149
- for (let i = 0; i < length + 1; i++) {
150
- const segmentX = centerX + (Math.sin(segment * i) * radiusX), segmentY = centerY + (Math.cos(segment * i) * radiusY);
177
+ const buildEllipse = (centerX, centerY, radiusX, radiusY) => {
178
+ const length = Math.floor(15 * Math.sqrt(radiusX + radiusY));
179
+ const segment = (Math.PI * 2) / length;
180
+ const points = [];
181
+ const vertices = new Float32Array((length + 1) * 2);
182
+ vertices[0] = centerX;
183
+ vertices[1] = centerY;
184
+ for (let i = 0; i < length; i++) {
185
+ const segmentX = centerX + (Math.sin(segment * i) * radiusX);
186
+ const segmentY = centerY + (Math.cos(segment * i) * radiusY);
151
187
  points.push(segmentX, segmentY);
152
- vertices.push(centerX, centerY);
153
- vertices.push(segmentX, segmentY);
154
- indices.push(index++, index++);
188
+ const offset = (i + 1) * 2;
189
+ vertices[offset] = segmentX;
190
+ vertices[offset + 1] = segmentY;
155
191
  }
156
- indices.push(index - 1);
157
- return new Geometry({ vertices, indices, points });
192
+ const indices = new Uint16Array(length * 3);
193
+ for (let i = 0; i < length; i++) {
194
+ const base = i * 3;
195
+ indices[base] = 0;
196
+ indices[base + 1] = i + 1;
197
+ indices[base + 2] = i + 2 > length ? 1 : i + 2;
198
+ }
199
+ return { vertices, indices, points };
158
200
  };
159
- const buildPolygon = (points, vertices = [], indices = []) => {
201
+ const buildPolygon = (points) => {
160
202
  if (points.length < 6) {
161
203
  throw new Error('At least three X/Y pairs are required to build a polygon.');
162
204
  }
163
- const index = vertices.length / 6, length = points.length / 2, triangles = earcut(points, [], 2);
164
- if (triangles) {
165
- for (let i = 0; i < triangles.length; i += 3) {
166
- indices.push(triangles[i] + index);
167
- indices.push(triangles[i] + index);
168
- indices.push(triangles[i + 1] + index);
169
- indices.push(triangles[i + 2] + index);
170
- indices.push(triangles[i + 2] + index);
171
- }
172
- for (let i = 0; i < length; i++) {
173
- vertices.push(points[i * 2], points[(i * 2) + 1]);
174
- }
205
+ const length = points.length / 2;
206
+ const triangles = earcut(points, [], 2);
207
+ const vertices = new Float32Array(points.length);
208
+ for (let i = 0; i < length; i++) {
209
+ vertices[i * 2] = points[i * 2];
210
+ vertices[(i * 2) + 1] = points[(i * 2) + 1];
175
211
  }
176
- return new Geometry({ vertices, indices, points });
212
+ const indices = triangles ? new Uint16Array(triangles) : new Uint16Array(0);
213
+ return { vertices, indices, points };
177
214
  };
178
- const buildRectangle = (x, y, width, height, vertices = [], indices = []) => {
179
- const points = [x, y, x + width, y, x, y + height, x + width, y + height], index = vertices.length / 6;
180
- vertices.push(...points);
181
- indices.push(index, index, index + 1, index + 2, index + 3, index + 3);
182
- return new Geometry({ vertices, indices, points });
215
+ const buildRectangle = (x, y, width, height) => {
216
+ // 4 vertices: TL, TR, BL, BR. Triangles [0, 1, 2, 1, 3, 2] (clockwise).
217
+ const vertices = new Float32Array([
218
+ x, y, // 0 TL
219
+ x + width, y, // 1 TR
220
+ x, y + height, // 2 BL
221
+ x + width, y + height, // 3 BR
222
+ ]);
223
+ const indices = new Uint16Array([0, 1, 2, 1, 3, 2]);
224
+ // Outline points walk the perimeter (TL -> TR -> BR -> BL).
225
+ const points = [x, y, x + width, y, x + width, y + height, x, y + height];
226
+ return { vertices, indices, points };
183
227
  };
184
228
  const buildStar = (centerX, centerY, points, radius, innerRadius = radius / 2, rotation = 0) => {
185
- const startAngle = (Math.PI / -2) + rotation, length = points * 2, delta = tau / length, path = [];
229
+ const startAngle = (Math.PI / -2) + rotation;
230
+ const length = points * 2;
231
+ const delta = tau / length;
232
+ const path = [];
186
233
  for (let i = 0; i < length; i++) {
187
234
  const angle = startAngle + (i * delta);
188
235
  const rad = i % 2 ? innerRadius : radius;