@aura3d/engine 1.3.2 → 1.3.3

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 (88) hide show
  1. package/README.md +6 -6
  2. package/dist/animation/library/performanceStateGraph.d.ts +11 -3
  3. package/dist/animation/library/performanceStateGraph.d.ts.map +1 -1
  4. package/dist/animation/library/performanceStateGraph.js +61 -5
  5. package/dist/animation/library/performanceStateGraph.js.map +1 -1
  6. package/dist/animation/library/standardHumanoidClips.d.ts +3 -3
  7. package/dist/animation/library/standardHumanoidClips.d.ts.map +1 -1
  8. package/dist/animation/library/standardHumanoidClips.js +179 -4
  9. package/dist/animation/library/standardHumanoidClips.js.map +1 -1
  10. package/dist/assets/GLTFRenderResources.d.ts.map +1 -1
  11. package/dist/assets/GLTFRenderResources.js +67 -16
  12. package/dist/assets/GLTFRenderResources.js.map +1 -1
  13. package/dist/assets/KTX2BasisTextureTranscoder.js +1 -0
  14. package/dist/assets/KTX2BasisTextureTranscoder.js.map +1 -1
  15. package/dist/create-aura3d/index.d.ts +1 -1
  16. package/dist/create-aura3d/index.d.ts.map +1 -1
  17. package/dist/create-aura3d/index.js +9 -2
  18. package/dist/create-aura3d/index.js.map +1 -1
  19. package/dist/ecs/SystemScheduler.js +5 -4
  20. package/dist/ecs/SystemScheduler.js.map +1 -1
  21. package/dist/ecs/components/CameraComponent.d.ts +30 -0
  22. package/dist/ecs/components/CameraComponent.d.ts.map +1 -0
  23. package/dist/ecs/components/CameraComponent.js +27 -0
  24. package/dist/ecs/components/CameraComponent.js.map +1 -0
  25. package/dist/ecs/components/HierarchyComponent.d.ts +10 -0
  26. package/dist/ecs/components/HierarchyComponent.d.ts.map +1 -1
  27. package/dist/ecs/components/HierarchyComponent.js +10 -0
  28. package/dist/ecs/components/HierarchyComponent.js.map +1 -1
  29. package/dist/ecs/components/LightComponent.d.ts +18 -0
  30. package/dist/ecs/components/LightComponent.d.ts.map +1 -0
  31. package/dist/ecs/components/LightComponent.js +17 -0
  32. package/dist/ecs/components/LightComponent.js.map +1 -0
  33. package/dist/ecs/components/MeshComponent.d.ts +19 -0
  34. package/dist/ecs/components/MeshComponent.d.ts.map +1 -0
  35. package/dist/ecs/components/MeshComponent.js +21 -0
  36. package/dist/ecs/components/MeshComponent.js.map +1 -0
  37. package/dist/ecs/components/WorldTransformComponent.d.ts +12 -0
  38. package/dist/ecs/components/WorldTransformComponent.d.ts.map +1 -0
  39. package/dist/ecs/components/WorldTransformComponent.js +22 -0
  40. package/dist/ecs/components/WorldTransformComponent.js.map +1 -0
  41. package/dist/ecs/index.d.ts +4 -0
  42. package/dist/ecs/index.d.ts.map +1 -1
  43. package/dist/ecs/index.js +4 -0
  44. package/dist/ecs/index.js.map +1 -1
  45. package/dist/ecs/systems/CameraSystem.d.ts +17 -0
  46. package/dist/ecs/systems/CameraSystem.d.ts.map +1 -0
  47. package/dist/ecs/systems/CameraSystem.js +38 -0
  48. package/dist/ecs/systems/CameraSystem.js.map +1 -0
  49. package/dist/ecs/systems/TransformSystem.d.ts +16 -0
  50. package/dist/ecs/systems/TransformSystem.d.ts.map +1 -0
  51. package/dist/ecs/systems/TransformSystem.js +99 -0
  52. package/dist/ecs/systems/TransformSystem.js.map +1 -0
  53. package/dist/ecs/systems/index.d.ts +2 -0
  54. package/dist/ecs/systems/index.d.ts.map +1 -1
  55. package/dist/ecs/systems/index.js +2 -0
  56. package/dist/ecs/systems/index.js.map +1 -1
  57. package/dist/engine/agent-api/index.d.ts.map +1 -1
  58. package/dist/engine/agent-api/index.js +71 -28
  59. package/dist/engine/agent-api/index.js.map +1 -1
  60. package/dist/engine/agent-api/product-viewer-runtime.d.ts.map +1 -1
  61. package/dist/engine/ecs/ECSRenderSource.d.ts +29 -0
  62. package/dist/engine/ecs/ECSRenderSource.d.ts.map +1 -0
  63. package/dist/engine/ecs/ECSRenderSource.js +189 -0
  64. package/dist/engine/ecs/ECSRenderSource.js.map +1 -0
  65. package/dist/engine/index.d.ts +1 -0
  66. package/dist/engine/index.d.ts.map +1 -1
  67. package/dist/engine/index.js +1 -0
  68. package/dist/engine/index.js.map +1 -1
  69. package/dist/physics/Constraint.d.ts.map +1 -1
  70. package/dist/physics/Constraint.js +3 -3
  71. package/dist/physics/Constraint.js.map +1 -1
  72. package/dist/physics/Shape.d.ts +1 -0
  73. package/dist/physics/Shape.d.ts.map +1 -1
  74. package/dist/physics/Shape.js +12 -0
  75. package/dist/physics/Shape.js.map +1 -1
  76. package/dist/rendering/ForwardPass.d.ts +1 -0
  77. package/dist/rendering/ForwardPass.d.ts.map +1 -1
  78. package/dist/rendering/ForwardPass.js +22 -5
  79. package/dist/rendering/ForwardPass.js.map +1 -1
  80. package/dist/rendering/SkinnedLitMaterial.d.ts +9 -0
  81. package/dist/rendering/SkinnedLitMaterial.d.ts.map +1 -1
  82. package/dist/rendering/SkinnedLitMaterial.js +20 -1
  83. package/dist/rendering/SkinnedLitMaterial.js.map +1 -1
  84. package/dist/rendering/performance/RenderItemSorting.d.ts +2 -1
  85. package/dist/rendering/performance/RenderItemSorting.d.ts.map +1 -1
  86. package/dist/rendering/performance/RenderItemSorting.js +5 -2
  87. package/dist/rendering/performance/RenderItemSorting.js.map +1 -1
  88. package/package.json +23 -23
@@ -62,10 +62,11 @@ function sortSystems(systems) {
62
62
  throw new ValidationError("ECS_SYSTEM_CYCLE", "ECS system dependency cycle rejected.");
63
63
  return result;
64
64
  function addEdge(from, to) {
65
- if (!byName.has(from))
66
- throw new ValidationError("MISSING_ECS_SYSTEM_DEPENDENCY", `Missing ECS system dependency: ${from}`);
67
- if (!byName.has(to))
68
- throw new ValidationError("MISSING_ECS_SYSTEM_DEPENDENCY", `Missing ECS system dependency: ${to}`);
65
+ // `before`/`after` are soft ordering constraints: if the referenced
66
+ // system is not registered (or runs in a different phase), the edge is
67
+ // simply skipped instead of failing the whole schedule.
68
+ if (!byName.has(from) || !byName.has(to))
69
+ return;
69
70
  const edges = graph.get(from);
70
71
  if (!edges.has(to)) {
71
72
  edges.add(to);
@@ -1 +1 @@
1
- {"version":3,"file":"SystemScheduler.js","sourceRoot":"","sources":["../../../../packages/ecs/src/SystemScheduler.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"SystemScheduler.js","sourceRoot":"","sources":["../../../../packages/ecs/src/SystemScheduler.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,30 @@
1
+ export type CameraKind = "perspective" | "orthographic";
2
+ /**
3
+ * Camera parameters + computed matrices for an ECS entity.
4
+ *
5
+ * {@link CameraSystem} computes `projectionMatrix`, `viewMatrix`, and
6
+ * `viewProjectionMatrix` each frame from the entity's
7
+ * {@link WorldTransformComponent}.
8
+ */
9
+ export declare class CameraComponent {
10
+ kind: CameraKind;
11
+ fovYRadians: number;
12
+ aspect: number;
13
+ near: number;
14
+ far: number;
15
+ left: number;
16
+ right: number;
17
+ bottom: number;
18
+ top: number;
19
+ zoom: number;
20
+ projectionMatrix: Float32Array<ArrayBuffer>;
21
+ viewMatrix: Float32Array<ArrayBuffer>;
22
+ viewProjectionMatrix: Float32Array<ArrayBuffer>;
23
+ viewport: {
24
+ x: number;
25
+ y: number;
26
+ width: number;
27
+ height: number;
28
+ };
29
+ }
30
+ //# sourceMappingURL=CameraComponent.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CameraComponent.d.ts","sourceRoot":"","sources":["../../../../../packages/ecs/src/components/CameraComponent.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,UAAU,GAAG,aAAa,GAAG,cAAc,CAAC;AAExD;;;;;;GAMG;AACH,qBAAa,eAAe;IAC1B,IAAI,EAAE,UAAU,CAAiB;IAGjC,WAAW,SAAe;IAC1B,MAAM,SAAK;IACX,IAAI,SAAO;IACX,GAAG,SAAQ;IAGX,IAAI,SAAM;IACV,KAAK,SAAK;IACV,MAAM,SAAM;IACZ,GAAG,SAAK;IACR,IAAI,SAAK;IAGT,gBAAgB,4BAAwB;IACxC,UAAU,4BAAwB;IAClC,oBAAoB,4BAAwB;IAE5C,QAAQ;;;;;MAAuC;CAChD"}
@@ -0,0 +1,27 @@
1
+ /**
2
+ * Camera parameters + computed matrices for an ECS entity.
3
+ *
4
+ * {@link CameraSystem} computes `projectionMatrix`, `viewMatrix`, and
5
+ * `viewProjectionMatrix` each frame from the entity's
6
+ * {@link WorldTransformComponent}.
7
+ */
8
+ export class CameraComponent {
9
+ kind = "perspective";
10
+ // Perspective
11
+ fovYRadians = Math.PI / 3;
12
+ aspect = 1;
13
+ near = 0.1;
14
+ far = 1000;
15
+ // Orthographic
16
+ left = -1;
17
+ right = 1;
18
+ bottom = -1;
19
+ top = 1;
20
+ zoom = 1;
21
+ // Computed each frame by CameraSystem
22
+ projectionMatrix = new Float32Array(16);
23
+ viewMatrix = new Float32Array(16);
24
+ viewProjectionMatrix = new Float32Array(16);
25
+ viewport = { x: 0, y: 0, width: 1, height: 1 };
26
+ }
27
+ //# sourceMappingURL=CameraComponent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CameraComponent.js","sourceRoot":"","sources":["../../../../../packages/ecs/src/components/CameraComponent.ts"],"names":[],"mappings":"AAEA;;;;;;GAMG;AACH,MAAM,OAAO,eAAe;IAC1B,IAAI,GAAe,aAAa,CAAC;IAEjC,cAAc;IACd,WAAW,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC;IAC1B,MAAM,GAAG,CAAC,CAAC;IACX,IAAI,GAAG,GAAG,CAAC;IACX,GAAG,GAAG,IAAI,CAAC;IAEX,eAAe;IACf,IAAI,GAAG,CAAC,CAAC,CAAC;IACV,KAAK,GAAG,CAAC,CAAC;IACV,MAAM,GAAG,CAAC,CAAC,CAAC;IACZ,GAAG,GAAG,CAAC,CAAC;IACR,IAAI,GAAG,CAAC,CAAC;IAET,sCAAsC;IACtC,gBAAgB,GAAG,IAAI,YAAY,CAAC,EAAE,CAAC,CAAC;IACxC,UAAU,GAAG,IAAI,YAAY,CAAC,EAAE,CAAC,CAAC;IAClC,oBAAoB,GAAG,IAAI,YAAY,CAAC,EAAE,CAAC,CAAC;IAE5C,QAAQ,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;CAChD"}
@@ -8,6 +8,16 @@ export interface SerializedHierarchyComponent {
8
8
  readonly depth: number;
9
9
  }
10
10
  export declare class HierarchyComponent {
11
+ /**
12
+ * Parent entity, or `null` for root entities.
13
+ *
14
+ * Must be set via `HierarchySystem.setParent` (or `addChild`), which
15
+ * maintains {@link depth}, sibling links, and the parent's child list.
16
+ * Setting this field directly (including via the constructor argument)
17
+ * leaves `depth` stale at 0 — `TransformSystem` recomputes depth
18
+ * defensively for its parents-before-children ordering, but child/sibling
19
+ * bookkeeping will remain out of sync until `setParent` is used.
20
+ */
11
21
  parent: Entity | null;
12
22
  previousSibling: Entity | null;
13
23
  nextSibling: Entity | null;
@@ -1 +1 @@
1
- {"version":3,"file":"HierarchyComponent.d.ts","sourceRoot":"","sources":["../../../../../packages/ecs/src/components/HierarchyComponent.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,iBAAiB,CAAC;AACvD,OAAO,EAAyB,KAAK,MAAM,EAAE,MAAM,cAAc,CAAC;AAElE,MAAM,WAAW,4BAA4B;IAC3C,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,QAAQ,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;IACrC,QAAQ,CAAC,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IACxC,QAAQ,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IACpC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB;AAED,qBAAa,kBAAkB;IAC7B,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,eAAe,EAAE,MAAM,GAAG,IAAI,CAAQ;IACtC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAQ;IAClC,KAAK,SAAK;IACV,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAgB;gBAElC,MAAM,GAAE,MAAM,GAAG,IAAW;IAIxC,IAAI,QAAQ,IAAI,SAAS,MAAM,EAAE,CAEhC;IAED,IAAI,UAAU,IAAI,MAAM,CAEvB;IAED,IAAI,UAAU,IAAI,MAAM,GAAG,IAAI,CAE9B;IAED,IAAI,SAAS,IAAI,MAAM,GAAG,IAAI,CAE7B;IAED,SAAS,IAAI,OAAO;IAIpB,WAAW,IAAI,OAAO;IAItB,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO;IAItC,YAAY,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,GAAG,IAAI;IAIrD,eAAe,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM;IAKxC,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI;IAIvC,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAI9B,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;IAOpC,cAAc,IAAI,IAAI;IAItB,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAO9C,MAAM,IAAI,4BAA4B;IAUtC,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,eAAe,CAkBrC;CACH"}
1
+ {"version":3,"file":"HierarchyComponent.d.ts","sourceRoot":"","sources":["../../../../../packages/ecs/src/components/HierarchyComponent.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,iBAAiB,CAAC;AACvD,OAAO,EAAyB,KAAK,MAAM,EAAE,MAAM,cAAc,CAAC;AAElE,MAAM,WAAW,4BAA4B;IAC3C,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,QAAQ,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;IACrC,QAAQ,CAAC,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IACxC,QAAQ,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IACpC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB;AAED,qBAAa,kBAAkB;IAC7B;;;;;;;;;OASG;IACH,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,eAAe,EAAE,MAAM,GAAG,IAAI,CAAQ;IACtC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAQ;IAClC,KAAK,SAAK;IACV,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAgB;gBAElC,MAAM,GAAE,MAAM,GAAG,IAAW;IAIxC,IAAI,QAAQ,IAAI,SAAS,MAAM,EAAE,CAEhC;IAED,IAAI,UAAU,IAAI,MAAM,CAEvB;IAED,IAAI,UAAU,IAAI,MAAM,GAAG,IAAI,CAE9B;IAED,IAAI,SAAS,IAAI,MAAM,GAAG,IAAI,CAE7B;IAED,SAAS,IAAI,OAAO;IAIpB,WAAW,IAAI,OAAO;IAItB,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO;IAItC,YAAY,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,GAAG,IAAI;IAIrD,eAAe,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM;IAKxC,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI;IAIvC,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAI9B,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;IAOpC,cAAc,IAAI,IAAI;IAItB,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAO9C,MAAM,IAAI,4BAA4B;IAUtC,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,eAAe,CAkBrC;CACH"}
@@ -2,6 +2,16 @@ import { ValidationError } from "../../core/index.js";
2
2
  import {} from "../Component.js";
3
3
  import { entityKey, sameEntity } from "../Entity.js";
4
4
  export class HierarchyComponent {
5
+ /**
6
+ * Parent entity, or `null` for root entities.
7
+ *
8
+ * Must be set via `HierarchySystem.setParent` (or `addChild`), which
9
+ * maintains {@link depth}, sibling links, and the parent's child list.
10
+ * Setting this field directly (including via the constructor argument)
11
+ * leaves `depth` stale at 0 — `TransformSystem` recomputes depth
12
+ * defensively for its parents-before-children ordering, but child/sibling
13
+ * bookkeeping will remain out of sync until `setParent` is used.
14
+ */
5
15
  parent;
6
16
  previousSibling = null;
7
17
  nextSibling = null;
@@ -1 +1 @@
1
- {"version":3,"file":"HierarchyComponent.js","sourceRoot":"","sources":["../../../../../packages/ecs/src/components/HierarchyComponent.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"HierarchyComponent.js","sourceRoot":"","sources":["../../../../../packages/ecs/src/components/HierarchyComponent.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ export type LightKind = "directional" | "point" | "spot" | "ambient";
2
+ /**
3
+ * Light parameters for an ECS entity.
4
+ *
5
+ * The ECS render bridge collects lights each frame and passes them to the
6
+ * renderer as part of the {@link RenderSource} lighting state.
7
+ */
8
+ export declare class LightComponent {
9
+ kind: LightKind;
10
+ color: [number, number, number];
11
+ intensity: number;
12
+ range: number;
13
+ angle: number;
14
+ penumbra: number;
15
+ castsShadow: boolean;
16
+ layerMask: number;
17
+ }
18
+ //# sourceMappingURL=LightComponent.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LightComponent.d.ts","sourceRoot":"","sources":["../../../../../packages/ecs/src/components/LightComponent.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,SAAS,GAAG,aAAa,GAAG,OAAO,GAAG,MAAM,GAAG,SAAS,CAAC;AAErE;;;;;GAKG;AACH,qBAAa,cAAc;IACzB,IAAI,EAAE,SAAS,CAAiB;IAChC,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAa;IAC5C,SAAS,SAAK;IACd,KAAK,SAAM;IACX,KAAK,SAAe;IACpB,QAAQ,SAAK;IACb,WAAW,UAAS;IACpB,SAAS,SAAK;CACf"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Light parameters for an ECS entity.
3
+ *
4
+ * The ECS render bridge collects lights each frame and passes them to the
5
+ * renderer as part of the {@link RenderSource} lighting state.
6
+ */
7
+ export class LightComponent {
8
+ kind = "directional";
9
+ color = [1, 1, 1];
10
+ intensity = 1;
11
+ range = 10;
12
+ angle = Math.PI / 4; // spot only
13
+ penumbra = 0; // spot only
14
+ castsShadow = false;
15
+ layerMask = 1;
16
+ }
17
+ //# sourceMappingURL=LightComponent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LightComponent.js","sourceRoot":"","sources":["../../../../../packages/ecs/src/components/LightComponent.ts"],"names":[],"mappings":"AAEA;;;;;GAKG;AACH,MAAM,OAAO,cAAc;IACzB,IAAI,GAAc,aAAa,CAAC;IAChC,KAAK,GAA6B,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IAC5C,SAAS,GAAG,CAAC,CAAC;IACd,KAAK,GAAG,EAAE,CAAC;IACX,KAAK,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,YAAY;IACjC,QAAQ,GAAG,CAAC,CAAC,CAAC,YAAY;IAC1B,WAAW,GAAG,KAAK,CAAC;IACpB,SAAS,GAAG,CAAC,CAAC;CACf"}
@@ -0,0 +1,19 @@
1
+ import type { SkinningPaletteBinding } from "@aura3d/rendering";
2
+ /**
3
+ * Renderable geometry + material binding for an ECS entity.
4
+ *
5
+ * References resources by name/handle; the ECS render bridge resolves them
6
+ * through the {@link ECSRenderLibraries} map at collection time.
7
+ */
8
+ export declare class MeshComponent {
9
+ geometry: string;
10
+ material: string;
11
+ castShadow: boolean;
12
+ receiveShadow: boolean;
13
+ skinning?: SkinningPaletteBinding;
14
+ morphWeights?: readonly number[];
15
+ instanceTransforms?: Float32Array;
16
+ instanceColors?: Float32Array;
17
+ constructor(geometry: string, material: string);
18
+ }
19
+ //# sourceMappingURL=MeshComponent.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MeshComponent.d.ts","sourceRoot":"","sources":["../../../../../packages/ecs/src/components/MeshComponent.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AAEhE;;;;;GAKG;AACH,qBAAa,aAAa;IACxB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,UAAQ;IAClB,aAAa,UAAQ;IACrB,QAAQ,CAAC,EAAE,sBAAsB,CAAC;IAClC,YAAY,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACjC,kBAAkB,CAAC,EAAE,YAAY,CAAC;IAClC,cAAc,CAAC,EAAE,YAAY,CAAC;gBAElB,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM;CAI/C"}
@@ -0,0 +1,21 @@
1
+ /**
2
+ * Renderable geometry + material binding for an ECS entity.
3
+ *
4
+ * References resources by name/handle; the ECS render bridge resolves them
5
+ * through the {@link ECSRenderLibraries} map at collection time.
6
+ */
7
+ export class MeshComponent {
8
+ geometry;
9
+ material;
10
+ castShadow = true;
11
+ receiveShadow = true;
12
+ skinning;
13
+ morphWeights;
14
+ instanceTransforms;
15
+ instanceColors;
16
+ constructor(geometry, material) {
17
+ this.geometry = geometry;
18
+ this.material = material;
19
+ }
20
+ }
21
+ //# sourceMappingURL=MeshComponent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MeshComponent.js","sourceRoot":"","sources":["../../../../../packages/ecs/src/components/MeshComponent.ts"],"names":[],"mappings":"AAEA;;;;;GAKG;AACH,MAAM,OAAO,aAAa;IACxB,QAAQ,CAAS;IACjB,QAAQ,CAAS;IACjB,UAAU,GAAG,IAAI,CAAC;IAClB,aAAa,GAAG,IAAI,CAAC;IACrB,QAAQ,CAA0B;IAClC,YAAY,CAAqB;IACjC,kBAAkB,CAAgB;IAClC,cAAc,CAAgB;IAE9B,YAAY,QAAgB,EAAE,QAAgB;QAC5C,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC3B,CAAC;CACF"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Computed world-space transform for an ECS entity.
3
+ *
4
+ * Written by {@link TransformSystem} each frame from the entity's
5
+ * {@link TransformComponent} and {@link HierarchyComponent} parent chain.
6
+ * The renderer bridge reads this directly — it never touches local transforms.
7
+ */
8
+ export declare class WorldTransformComponent {
9
+ worldMatrix: Float32Array<ArrayBuffer>;
10
+ normalMatrix: Float32Array<ArrayBuffer>;
11
+ }
12
+ //# sourceMappingURL=WorldTransformComponent.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WorldTransformComponent.d.ts","sourceRoot":"","sources":["../../../../../packages/ecs/src/components/WorldTransformComponent.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,qBAAa,uBAAuB;IAClC,WAAW,4BAKR;IAEH,YAAY,4BAKT;CACJ"}
@@ -0,0 +1,22 @@
1
+ /**
2
+ * Computed world-space transform for an ECS entity.
3
+ *
4
+ * Written by {@link TransformSystem} each frame from the entity's
5
+ * {@link TransformComponent} and {@link HierarchyComponent} parent chain.
6
+ * The renderer bridge reads this directly — it never touches local transforms.
7
+ */
8
+ export class WorldTransformComponent {
9
+ worldMatrix = new Float32Array([
10
+ 1, 0, 0, 0,
11
+ 0, 1, 0, 0,
12
+ 0, 0, 1, 0,
13
+ 0, 0, 0, 1
14
+ ]);
15
+ normalMatrix = new Float32Array([
16
+ 1, 0, 0, 0,
17
+ 0, 1, 0, 0,
18
+ 0, 0, 1, 0,
19
+ 0, 0, 0, 1
20
+ ]);
21
+ }
22
+ //# sourceMappingURL=WorldTransformComponent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WorldTransformComponent.js","sourceRoot":"","sources":["../../../../../packages/ecs/src/components/WorldTransformComponent.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,MAAM,OAAO,uBAAuB;IAClC,WAAW,GAAG,IAAI,YAAY,CAAC;QAC7B,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;QACV,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;QACV,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;QACV,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;KACX,CAAC,CAAC;IAEH,YAAY,GAAG,IAAI,YAAY,CAAC;QAC9B,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;QACV,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;QACV,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;QACV,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;KACX,CAAC,CAAC;CACJ"}
@@ -14,6 +14,10 @@ export * from "./World.js";
14
14
  export * from "./ECSSerializer.js";
15
15
  export * from "./ECSProfiler.js";
16
16
  export * from "./components/TransformComponent.js";
17
+ export * from "./components/WorldTransformComponent.js";
18
+ export * from "./components/CameraComponent.js";
19
+ export * from "./components/LightComponent.js";
20
+ export * from "./components/MeshComponent.js";
17
21
  export * from "./components/NameComponent.js";
18
22
  export * from "./components/TagComponent.js";
19
23
  export * from "./components/ActiveComponent.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../packages/ecs/src/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,oBAAoB,CAAC;AACnC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,wBAAwB,CAAC;AACvC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,aAAa,CAAC;AAC5B,cAAc,qBAAqB,CAAC;AACpC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,YAAY,CAAC;AAC3B,cAAc,oBAAoB,CAAC;AACnC,cAAc,aAAa,CAAC;AAC5B,cAAc,sBAAsB,CAAC;AACrC,cAAc,YAAY,CAAC;AAC3B,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,oCAAoC,CAAC;AACnD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,iCAAiC,CAAC;AAChD,cAAc,oCAAoC,CAAC;AACnD,cAAc,oBAAoB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../packages/ecs/src/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,oBAAoB,CAAC;AACnC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,wBAAwB,CAAC;AACvC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,aAAa,CAAC;AAC5B,cAAc,qBAAqB,CAAC;AACpC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,YAAY,CAAC;AAC3B,cAAc,oBAAoB,CAAC;AACnC,cAAc,aAAa,CAAC;AAC5B,cAAc,sBAAsB,CAAC;AACrC,cAAc,YAAY,CAAC;AAC3B,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,oCAAoC,CAAC;AACnD,cAAc,yCAAyC,CAAC;AACxD,cAAc,iCAAiC,CAAC;AAChD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,iCAAiC,CAAC;AAChD,cAAc,oCAAoC,CAAC;AACnD,cAAc,oBAAoB,CAAC"}
package/dist/ecs/index.js CHANGED
@@ -14,6 +14,10 @@ export * from "./World.js";
14
14
  export * from "./ECSSerializer.js";
15
15
  export * from "./ECSProfiler.js";
16
16
  export * from "./components/TransformComponent.js";
17
+ export * from "./components/WorldTransformComponent.js";
18
+ export * from "./components/CameraComponent.js";
19
+ export * from "./components/LightComponent.js";
20
+ export * from "./components/MeshComponent.js";
17
21
  export * from "./components/NameComponent.js";
18
22
  export * from "./components/TagComponent.js";
19
23
  export * from "./components/ActiveComponent.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../packages/ecs/src/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,oBAAoB,CAAC;AACnC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,wBAAwB,CAAC;AACvC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,aAAa,CAAC;AAC5B,cAAc,qBAAqB,CAAC;AACpC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,YAAY,CAAC;AAC3B,cAAc,oBAAoB,CAAC;AACnC,cAAc,aAAa,CAAC;AAC5B,cAAc,sBAAsB,CAAC;AACrC,cAAc,YAAY,CAAC;AAC3B,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,oCAAoC,CAAC;AACnD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,iCAAiC,CAAC;AAChD,cAAc,oCAAoC,CAAC;AACnD,cAAc,oBAAoB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../packages/ecs/src/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,oBAAoB,CAAC;AACnC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,wBAAwB,CAAC;AACvC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,aAAa,CAAC;AAC5B,cAAc,qBAAqB,CAAC;AACpC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,YAAY,CAAC;AAC3B,cAAc,oBAAoB,CAAC;AACnC,cAAc,aAAa,CAAC;AAC5B,cAAc,sBAAsB,CAAC;AACrC,cAAc,YAAY,CAAC;AAC3B,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,oCAAoC,CAAC;AACnD,cAAc,yCAAyC,CAAC;AACxD,cAAc,iCAAiC,CAAC;AAChD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,iCAAiC,CAAC;AAChD,cAAc,oCAAoC,CAAC;AACnD,cAAc,oBAAoB,CAAC"}
@@ -0,0 +1,17 @@
1
+ import { type System, type SystemContext } from "../System.js";
2
+ import { type World } from "../World.js";
3
+ /**
4
+ * Computes camera projection and view matrices for entities that have
5
+ * both {@link CameraComponent} and {@link WorldTransformComponent}.
6
+ *
7
+ * Runs after {@link TransformSystem} so the camera entity's world matrix
8
+ * is already computed.
9
+ */
10
+ export declare class CameraSystem implements System {
11
+ readonly name = "CameraSystem";
12
+ readonly phase = "update";
13
+ readonly priority = -70;
14
+ readonly after: string[];
15
+ update(world: World, _context: SystemContext): void;
16
+ }
17
+ //# sourceMappingURL=CameraSystem.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CameraSystem.d.ts","sourceRoot":"","sources":["../../../../../packages/ecs/src/systems/CameraSystem.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,MAAM,EAAE,KAAK,aAAa,EAAE,MAAM,cAAc,CAAC;AAC/D,OAAO,EAAE,KAAK,KAAK,EAAE,MAAM,aAAa,CAAC;AAIzC;;;;;;GAMG;AACH,qBAAa,YAAa,YAAW,MAAM;IACzC,QAAQ,CAAC,IAAI,kBAAkB;IAC/B,QAAQ,CAAC,KAAK,YAAY;IAC1B,QAAQ,CAAC,QAAQ,OAAO;IAGxB,QAAQ,CAAC,KAAK,WAAuB;IAErC,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,aAAa,GAAG,IAAI;CA4BpD"}
@@ -0,0 +1,38 @@
1
+ import { Matrix4 } from "../../math/index.js";
2
+ import {} from "../System.js";
3
+ import {} from "../World.js";
4
+ import { CameraComponent } from "../components/CameraComponent.js";
5
+ import { WorldTransformComponent } from "../components/WorldTransformComponent.js";
6
+ /**
7
+ * Computes camera projection and view matrices for entities that have
8
+ * both {@link CameraComponent} and {@link WorldTransformComponent}.
9
+ *
10
+ * Runs after {@link TransformSystem} so the camera entity's world matrix
11
+ * is already computed.
12
+ */
13
+ export class CameraSystem {
14
+ name = "CameraSystem";
15
+ phase = "update";
16
+ priority = -70;
17
+ // Soft ordering constraint: the scheduler skips this edge when
18
+ // TransformSystem is not registered, so CameraSystem can run standalone.
19
+ after = ["TransformSystem"];
20
+ update(world, _context) {
21
+ for (const entity of world
22
+ .query({ include: [CameraComponent, WorldTransformComponent] })
23
+ .toArray()) {
24
+ const cam = world.get(entity, CameraComponent);
25
+ const wt = world.get(entity, WorldTransformComponent);
26
+ const projection = cam.kind === "perspective"
27
+ ? Matrix4.perspective(cam.fovYRadians, cam.aspect, cam.near, cam.far)
28
+ : Matrix4.orthographic(cam.left / cam.zoom, cam.right / cam.zoom, cam.bottom / cam.zoom, cam.top / cam.zoom, cam.near, cam.far);
29
+ // viewMatrix = inverse(worldMatrix)
30
+ const worldMat = new Matrix4(wt.worldMatrix);
31
+ const view = worldMat.inverse();
32
+ cam.projectionMatrix.set(projection.elements);
33
+ cam.viewMatrix.set(view.elements);
34
+ cam.viewProjectionMatrix.set(projection.multiply(view).elements);
35
+ }
36
+ }
37
+ }
38
+ //# sourceMappingURL=CameraSystem.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CameraSystem.js","sourceRoot":"","sources":["../../../../../packages/ecs/src/systems/CameraSystem.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAmC,MAAM,cAAc,CAAC;AAC/D,OAAO,EAAc,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AACnE,OAAO,EAAE,uBAAuB,EAAE,MAAM,0CAA0C,CAAC;AAEnF;;;;;;GAMG;AACH,MAAM,OAAO,YAAY;IACd,IAAI,GAAG,cAAc,CAAC;IACtB,KAAK,GAAG,QAAQ,CAAC;IACjB,QAAQ,GAAG,CAAC,EAAE,CAAC;IACxB,+DAA+D;IAC/D,yEAAyE;IAChE,KAAK,GAAG,CAAC,iBAAiB,CAAC,CAAC;IAErC,MAAM,CAAC,KAAY,EAAE,QAAuB;QAC1C,KAAK,MAAM,MAAM,IAAI,KAAK;aACvB,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC,eAAe,EAAE,uBAAuB,CAAC,EAAE,CAAC;aAC9D,OAAO,EAAE,EAAE,CAAC;YACb,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC,MAAM,EAAE,eAAe,CAAE,CAAC;YAChD,MAAM,EAAE,GAAG,KAAK,CAAC,GAAG,CAAC,MAAM,EAAE,uBAAuB,CAAE,CAAC;YAEvD,MAAM,UAAU,GACd,GAAG,CAAC,IAAI,KAAK,aAAa;gBACxB,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,CAAC;gBACrE,CAAC,CAAC,OAAO,CAAC,YAAY,CAClB,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,IAAI,EACnB,GAAG,CAAC,KAAK,GAAG,GAAG,CAAC,IAAI,EACpB,GAAG,CAAC,MAAM,GAAG,GAAG,CAAC,IAAI,EACrB,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,IAAI,EAClB,GAAG,CAAC,IAAI,EACR,GAAG,CAAC,GAAG,CACR,CAAC;YAER,oCAAoC;YACpC,MAAM,QAAQ,GAAG,IAAI,OAAO,CAAC,EAAE,CAAC,WAA6C,CAAC,CAAC;YAC/E,MAAM,IAAI,GAAG,QAAQ,CAAC,OAAO,EAAE,CAAC;YAE/B,GAAG,CAAC,gBAAiC,CAAC,GAAG,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;YAC/D,GAAG,CAAC,UAA2B,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACnD,GAAG,CAAC,oBAAqC,CAAC,GAAG,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC;QACrF,CAAC;IACH,CAAC;CACF"}
@@ -0,0 +1,16 @@
1
+ import { type System, type SystemContext } from "../System.js";
2
+ import { type World } from "../World.js";
3
+ /**
4
+ * Computes {@link WorldTransformComponent} for every entity that has both
5
+ * {@link TransformComponent} and {@link HierarchyComponent}.
6
+ *
7
+ * Entities are processed in depth order (parents before children) so the
8
+ * world matrix cascade is correct in a single pass.
9
+ */
10
+ export declare class TransformSystem implements System {
11
+ readonly name = "TransformSystem";
12
+ readonly phase = "update";
13
+ readonly priority = -80;
14
+ update(world: World, _context: SystemContext): void;
15
+ }
16
+ //# sourceMappingURL=TransformSystem.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TransformSystem.d.ts","sourceRoot":"","sources":["../../../../../packages/ecs/src/systems/TransformSystem.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,MAAM,EAAE,KAAK,aAAa,EAAE,MAAM,cAAc,CAAC;AAC/D,OAAO,EAAE,KAAK,KAAK,EAAE,MAAM,aAAa,CAAC;AAQzC;;;;;;GAMG;AACH,qBAAa,eAAgB,YAAW,MAAM;IAC5C,QAAQ,CAAC,IAAI,qBAAqB;IAClC,QAAQ,CAAC,KAAK,YAAY;IAC1B,QAAQ,CAAC,QAAQ,OAAO;IAExB,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,aAAa,GAAG,IAAI;CAmCpD"}
@@ -0,0 +1,99 @@
1
+ import { Matrix4, Quaternion, Vector3 } from "../../math/index.js";
2
+ import {} from "../Entity.js";
3
+ import {} from "../System.js";
4
+ import {} from "../World.js";
5
+ import { HierarchyComponent } from "../components/HierarchyComponent.js";
6
+ import { TransformComponent } from "../components/TransformComponent.js";
7
+ import { WorldTransformComponent } from "../components/WorldTransformComponent.js";
8
+ /** Safety cap for defensive parent-chain walks (guards against cycles created by direct `parent` mutation). */
9
+ const MAX_HIERARCHY_DEPTH = 4096;
10
+ /**
11
+ * Computes {@link WorldTransformComponent} for every entity that has both
12
+ * {@link TransformComponent} and {@link HierarchyComponent}.
13
+ *
14
+ * Entities are processed in depth order (parents before children) so the
15
+ * world matrix cascade is correct in a single pass.
16
+ */
17
+ export class TransformSystem {
18
+ name = "TransformSystem";
19
+ phase = "update";
20
+ priority = -80;
21
+ update(world, _context) {
22
+ const entities = world
23
+ .query({ include: [TransformComponent, HierarchyComponent] })
24
+ .toArray()
25
+ .sort((a, b) => effectiveDepth(world, a) - effectiveDepth(world, b));
26
+ for (const entity of entities) {
27
+ const transform = world.get(entity, TransformComponent);
28
+ const hierarchy = world.get(entity, HierarchyComponent);
29
+ const local = Matrix4.compose(new Vector3(...transform.position), new Quaternion(...transform.rotation), new Vector3(...transform.scale));
30
+ let worldMat;
31
+ if (hierarchy.parent) {
32
+ const parentWtc = world.get(hierarchy.parent, WorldTransformComponent);
33
+ worldMat = parentWtc
34
+ ? new Matrix4(parentWtc.worldMatrix).multiply(local)
35
+ : local;
36
+ }
37
+ else {
38
+ worldMat = local;
39
+ }
40
+ let wtc = world.get(entity, WorldTransformComponent);
41
+ if (!wtc) {
42
+ wtc = new WorldTransformComponent();
43
+ world.add(entity, WorldTransformComponent, wtc);
44
+ }
45
+ wtc.worldMatrix.set(worldMat.elements);
46
+ wtc.normalMatrix.set(computeNormalMatrix(worldMat));
47
+ }
48
+ }
49
+ }
50
+ /**
51
+ * Returns the depth used for parents-before-children ordering.
52
+ *
53
+ * {@link HierarchyComponent.depth} is maintained by `HierarchySystem.setParent`.
54
+ * If `parent` was set directly (constructor argument or field mutation) the
55
+ * stored depth is stale at 0, so recompute it defensively by walking the
56
+ * parent chain.
57
+ */
58
+ function effectiveDepth(world, entity) {
59
+ const hierarchy = world.get(entity, HierarchyComponent);
60
+ if (!hierarchy)
61
+ return 0;
62
+ if (hierarchy.depth > 0 || hierarchy.parent === null)
63
+ return hierarchy.depth;
64
+ let depth = 0;
65
+ let current = hierarchy.parent;
66
+ while (current && depth < MAX_HIERARCHY_DEPTH) {
67
+ depth += 1;
68
+ const parentHierarchy = world.entities.isAlive(current)
69
+ ? world.get(current, HierarchyComponent)
70
+ : undefined;
71
+ current = parentHierarchy?.parent ?? null;
72
+ }
73
+ return depth;
74
+ }
75
+ function computeNormalMatrix(worldMat) {
76
+ // Normal matrix = inverse-TRANSPOSE of the world matrix, matching the
77
+ // renderer's reference `normalMatrixFromModel` (Renderer.ts):
78
+ // transpose(invert(model)), then extract the upper-left 3x3 into a 4x4
79
+ // with identity in the 4th row/col (column-major layout).
80
+ // Avoid crashing on singular matrices (zero scale) by falling back to identity.
81
+ try {
82
+ const m = worldMat.inverse().transpose().elements;
83
+ return new Float32Array([
84
+ m[0], m[1], m[2], 0,
85
+ m[4], m[5], m[6], 0,
86
+ m[8], m[9], m[10], 0,
87
+ 0, 0, 0, 1,
88
+ ]);
89
+ }
90
+ catch {
91
+ return new Float32Array([
92
+ 1, 0, 0, 0,
93
+ 0, 1, 0, 0,
94
+ 0, 0, 1, 0,
95
+ 0, 0, 0, 1,
96
+ ]);
97
+ }
98
+ }
99
+ //# sourceMappingURL=TransformSystem.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TransformSystem.js","sourceRoot":"","sources":["../../../../../packages/ecs/src/systems/TransformSystem.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAC5D,OAAO,EAAe,MAAM,cAAc,CAAC;AAC3C,OAAO,EAAmC,MAAM,cAAc,CAAC;AAC/D,OAAO,EAAc,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,kBAAkB,EAAE,MAAM,qCAAqC,CAAC;AACzE,OAAO,EAAE,kBAAkB,EAAE,MAAM,qCAAqC,CAAC;AACzE,OAAO,EAAE,uBAAuB,EAAE,MAAM,0CAA0C,CAAC;AAEnF,+GAA+G;AAC/G,MAAM,mBAAmB,GAAG,IAAI,CAAC;AAEjC;;;;;;GAMG;AACH,MAAM,OAAO,eAAe;IACjB,IAAI,GAAG,iBAAiB,CAAC;IACzB,KAAK,GAAG,QAAQ,CAAC;IACjB,QAAQ,GAAG,CAAC,EAAE,CAAC;IAExB,MAAM,CAAC,KAAY,EAAE,QAAuB;QAC1C,MAAM,QAAQ,GAAG,KAAK;aACnB,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC,kBAAkB,EAAE,kBAAkB,CAAC,EAAE,CAAC;aAC5D,OAAO,EAAE;aACT,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,cAAc,CAAC,KAAK,EAAE,CAAC,CAAC,GAAG,cAAc,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC;QAEvE,KAAK,MAAM,MAAM,IAAI,QAAQ,EAAE,CAAC;YAC9B,MAAM,SAAS,GAAG,KAAK,CAAC,GAAG,CAAC,MAAM,EAAE,kBAAkB,CAAE,CAAC;YACzD,MAAM,SAAS,GAAG,KAAK,CAAC,GAAG,CAAC,MAAM,EAAE,kBAAkB,CAAE,CAAC;YAEzD,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAC3B,IAAI,OAAO,CAAC,GAAG,SAAS,CAAC,QAAQ,CAAC,EAClC,IAAI,UAAU,CAAC,GAAG,SAAS,CAAC,QAAQ,CAAC,EACrC,IAAI,OAAO,CAAC,GAAG,SAAS,CAAC,KAAK,CAAC,CAChC,CAAC;YAEF,IAAI,QAAiB,CAAC;YACtB,IAAI,SAAS,CAAC,MAAM,EAAE,CAAC;gBACrB,MAAM,SAAS,GAAG,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,MAAM,EAAE,uBAAuB,CAAC,CAAC;gBACvE,QAAQ,GAAG,SAAS;oBAClB,CAAC,CAAC,IAAI,OAAO,CAAC,SAAS,CAAC,WAA6C,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC;oBACtF,CAAC,CAAC,KAAK,CAAC;YACZ,CAAC;iBAAM,CAAC;gBACN,QAAQ,GAAG,KAAK,CAAC;YACnB,CAAC;YAED,IAAI,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC,MAAM,EAAE,uBAAuB,CAAC,CAAC;YACrD,IAAI,CAAC,GAAG,EAAE,CAAC;gBACT,GAAG,GAAG,IAAI,uBAAuB,EAAE,CAAC;gBACpC,KAAK,CAAC,GAAG,CAAC,MAAM,EAAE,uBAAuB,EAAE,GAAG,CAAC,CAAC;YAClD,CAAC;YACA,GAAG,CAAC,WAA4B,CAAC,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;YACxD,GAAG,CAAC,YAA6B,CAAC,GAAG,CAAC,mBAAmB,CAAC,QAAQ,CAAC,CAAC,CAAC;QACxE,CAAC;IACH,CAAC;CACF;AAED;;;;;;;GAOG;AACH,SAAS,cAAc,CAAC,KAAY,EAAE,MAAc;IAClD,MAAM,SAAS,GAAG,KAAK,CAAC,GAAG,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC;IACxD,IAAI,CAAC,SAAS;QAAE,OAAO,CAAC,CAAC;IACzB,IAAI,SAAS,CAAC,KAAK,GAAG,CAAC,IAAI,SAAS,CAAC,MAAM,KAAK,IAAI;QAAE,OAAO,SAAS,CAAC,KAAK,CAAC;IAE7E,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,IAAI,OAAO,GAAkB,SAAS,CAAC,MAAM,CAAC;IAC9C,OAAO,OAAO,IAAI,KAAK,GAAG,mBAAmB,EAAE,CAAC;QAC9C,KAAK,IAAI,CAAC,CAAC;QACX,MAAM,eAAe,GAAmC,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC;YACrF,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,EAAE,kBAAkB,CAAC;YACxC,CAAC,CAAC,SAAS,CAAC;QACd,OAAO,GAAG,eAAe,EAAE,MAAM,IAAI,IAAI,CAAC;IAC5C,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,mBAAmB,CAAC,QAAiB;IAC5C,sEAAsE;IACtE,8DAA8D;IAC9D,uEAAuE;IACvE,0DAA0D;IAC1D,gFAAgF;IAChF,IAAI,CAAC;QACH,MAAM,CAAC,GAAG,QAAQ,CAAC,OAAO,EAAE,CAAC,SAAS,EAAE,CAAC,QAAQ,CAAC;QAClD,OAAO,IAAI,YAAY,CAAC;YACtB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YACnB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YACnB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;YACpB,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;SACX,CAAC,CAAC;IACL,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,YAAY,CAAC;YACtB,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;YACV,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;YACV,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;YACV,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;SACX,CAAC,CAAC;IACL,CAAC;AACH,CAAC"}
@@ -1,3 +1,5 @@
1
1
  export * from "./ActiveSystem.js";
2
2
  export * from "./HierarchySystem.js";
3
+ export * from "./TransformSystem.js";
4
+ export * from "./CameraSystem.js";
3
5
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../packages/ecs/src/systems/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,cAAc,sBAAsB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../packages/ecs/src/systems/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC;AACrC,cAAc,mBAAmB,CAAC"}
@@ -1,3 +1,5 @@
1
1
  export * from "./ActiveSystem.js";
2
2
  export * from "./HierarchySystem.js";
3
+ export * from "./TransformSystem.js";
4
+ export * from "./CameraSystem.js";
3
5
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../packages/ecs/src/systems/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,cAAc,sBAAsB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../packages/ecs/src/systems/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC;AACrC,cAAc,mBAAmB,CAAC"}