@forgeax/engine-runtime 0.1.27 → 0.1.29
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +98 -0
- package/dist/collect-scene-asset.d.ts.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.mjs +480 -15
- package/dist/index.mjs.map +1 -1
- package/dist/scene-utils/mount-override-fold.d.ts +3 -1
- package/dist/scene-utils/mount-override-fold.d.ts.map +1 -1
- package/package.json +37 -30
- package/src/__tests__/animation-graph-collect-roundtrip.test.ts +4 -2
- package/src/__tests__/asset-registry-aabb.cases.unit.test.ts +5 -4
- package/src/__tests__/asset-registry-guid-reverse.test.ts +22 -27
- package/src/__tests__/asset-registry-mounts.test.ts +174 -734
- package/src/__tests__/asset-registry-scene.cases.unit.test.ts +9 -18
- package/src/__tests__/asset-registry.recursive.spec.ts +23 -29
- package/src/__tests__/camera-ortho.cases.unit.test.ts +12 -3
- package/src/__tests__/collect-scene-asset.test.ts +96 -113
- package/src/__tests__/collect-scene-mount-collapse.test.ts +64 -66
- package/src/__tests__/collect-transient-children-absent.test.ts +11 -17
- package/src/__tests__/collect-transient-roundtrip.test.ts +12 -13
- package/src/__tests__/collect-transient-skip.test.ts +20 -27
- package/src/__tests__/components.test-d.ts +17 -1
- package/src/__tests__/components.unit.test.ts +75 -27
- package/src/__tests__/composite-skybox-cross-world.browser.test.ts +4 -2
- package/src/__tests__/dawn/instances-per-instance-pbr.dawn.test.ts +8 -4
- package/src/__tests__/dawn/instances-shadow.dawn.test.ts +4 -1
- package/src/__tests__/dawn/instances-uniform-fallback.dawn.test.ts +66 -92
- package/src/__tests__/dawn/material-cooked-fixture.dawn.test.ts +200 -4
- package/src/__tests__/errors.unit.test.ts +13 -0
- package/src/__tests__/feature-depth-material.dawn.test.ts +23 -0
- package/src/__tests__/feature-depth-material.fixture.ts +473 -0
- package/src/__tests__/fullscreen-post-process-pass.dawn.test.ts +14 -14
- package/src/__tests__/geometry.unit.test.ts +42 -43
- package/src/__tests__/gpu-resource-release.cases.unit.test.ts +16 -9
- package/src/__tests__/handle-migration.test.ts +0 -1
- package/src/__tests__/instances-renderer-lifecycle.integration.test.ts +20 -14
- package/src/__tests__/instances.test-d.ts +13 -52
- package/src/__tests__/instantiate-mount-deferred-wiring.test.ts +42 -80
- package/src/__tests__/lazy-catalog.cases.unit.test.ts +17 -3
- package/src/__tests__/loader-registry.cases.unit.test.ts +4 -4
- package/src/__tests__/material-publication.browser.test.ts +29 -0
- package/src/__tests__/material-publication.commands.ts +23 -0
- package/src/__tests__/material-publication.dawn.test.ts +24 -0
- package/src/__tests__/material-publication.fixture.ts +349 -0
- package/src/__tests__/material-publication.server.ts +109 -0
- package/src/__tests__/parse-scene-payload-refs.cases.unit.test.ts +73 -96
- package/src/__tests__/pbr-pipeline.unit.test.ts +25 -11
- package/src/__tests__/point-light-shadow.browser.test.ts +8 -2
- package/src/__tests__/point-light-shadow.unit.test.ts +37 -8
- package/src/__tests__/record-all-topology.cases.unit.test.ts +52 -0
- package/src/__tests__/record-draw-branch.cases.unit.test.ts +1 -0
- package/src/__tests__/record-worldid-isolation.test.ts +47 -28
- package/src/__tests__/render-error-exhaustive.test-d.ts +24 -0
- package/src/__tests__/render-system-extract-dispatch-ordering.test.ts +15 -4
- package/src/__tests__/render-system-extract.test.ts +61 -0
- package/src/__tests__/render-system-extract.unit.test.ts +21 -7
- package/src/__tests__/render-system-fold-bucket.unit.test.ts +33 -1
- package/src/__tests__/render-system-fold-material.unit.test.ts +32 -6
- package/src/__tests__/render-system-fold-modegate.unit.test.ts +26 -4
- package/src/__tests__/render-system-fold.dawn.test.ts +4 -1
- package/src/__tests__/render-system-mega.test.ts +50 -62
- package/src/__tests__/renderer-device-loss-provider-feasibility.dawn.test.ts +0 -1
- package/src/__tests__/renderer-device-loss-recovery.dawn.test.ts +0 -3
- package/src/__tests__/renderer-draw-world.cases.unit.test.ts +16 -513
- package/src/__tests__/resolve-scene-guids.cases.unit.test.ts +48 -43
- package/src/__tests__/rhi-null-command-flow.unit.test.ts +9 -7
- package/src/__tests__/roots-to-scene-asset.test.ts +27 -28
- package/src/__tests__/roundtrip-primitive.test.ts +24 -23
- package/src/__tests__/scene-equirect-roundtrip.test.ts +5 -16
- package/src/__tests__/scene-instantiate-cycle-runtime.test.ts +13 -29
- package/src/__tests__/scene-mount-fixed-point.test.ts +104 -227
- package/src/__tests__/scene-mount-roundtrip.test.ts +95 -961
- package/src/__tests__/scene-mount-wrapper-roundtrip.test.ts +36 -182
- package/src/__tests__/scene-sugar-instantiate.test.ts +20 -15
- package/src/__tests__/serialize-mounts-roundtrip.test.ts +108 -492
- package/src/__tests__/serialize-scene-asset.test.ts +36 -50
- package/src/__tests__/shadow-caster-empty-schema.test.ts +3 -1
- package/src/__tests__/shadow-fields-observable.dawn.test.ts +34 -19
- package/src/__tests__/shadow-mesh-ssbo-order.test.ts +5 -12
- package/src/__tests__/skin-extract-getarrayview-count.unit.test.ts +6 -4
- package/src/__tests__/skin-m2-extract-happy.cases.unit.test.ts +50 -2
- package/src/__tests__/skin-m2-extract-joint-error.cases.unit.test.ts +50 -2
- package/src/__tests__/skin-m2-extract-null-assets.cases.unit.test.ts +50 -2
- package/src/__tests__/skin-m2-extract-skeleton-error.cases.unit.test.ts +50 -2
- package/src/__tests__/skin-palette-extract.cases.unit.test.ts +2 -0
- package/src/__tests__/skinned-shadow-mixed.dawn.test.ts +93 -48
- package/src/__tests__/skylight-pipeline-layout.cases.unit.test.ts +6 -2
- package/src/__tests__/sparse-tag-scene-roundtrip.test.ts +1 -1
- package/src/__tests__/sprite-lit-bgl-byte-identical.test.ts +11 -3
- package/src/__tests__/template-game-default-api-contract.test.ts +21 -21
- package/src/__tests__/tonemap-hdr-target.cases.unit.test.ts +8 -5
- package/src/__tests__/tonemap-pipeline-split.cases.unit.test.ts +3 -0
- package/src/__tests__/transient-fields-collect.test.ts +4 -4
- package/src/__tests__/transient-runtime-behavior.test.ts +9 -9
- package/src/__tests__/vfx-depth-material.dawn.test.ts +42 -0
- package/src/__tests__/vfx-mesh-lighting.browser.test.ts +16 -0
- package/src/__tests__/vfx-mesh-lighting.commands.ts +14 -0
- package/src/__tests__/vfx-mesh-lighting.dawn.test.ts +16 -0
- package/src/__tests__/vfx-mesh-lighting.fixture.ts +883 -0
- package/src/__tests__/wave1-dynamic-geometry.browser.test.ts +326 -0
- package/src/__tests__/wave1-rendering-materials.browser.test.ts +617 -0
- package/src/__tests__/wave1-rendering-p0.browser.test.ts +751 -0
- package/src/__tests__/wave1-rendering-recovery.browser.test.ts +666 -0
- package/src/__tests__/wave1-shadow-diagnostic.browser.test.ts +582 -0
- package/src/__tests__/world-scene-despawn.test.ts +8 -8
- package/src/__tests__/world-scene-instantiate.test.ts +23 -29
- package/src/__tests__/world-scene-nested.test.ts +90 -163
- package/src/__tests__/world-scene-override.test.ts +17 -16
- package/src/__tests__/zero-compression-zero-load.integration.test.ts +1 -0
- package/src/collect-scene-asset.ts +637 -19
- package/src/components/__tests__/sprite-animation.test-d.ts +2 -2
- package/src/index.ts +1 -0
- package/src/scene-utils/mount-override-fold.ts +5 -14
- package/src/__tests__/node-shims.d.ts +0 -31
|
@@ -30,8 +30,8 @@
|
|
|
30
30
|
//
|
|
31
31
|
// Why array<f32> (and not array<f32, N>) for `regions`? The length
|
|
32
32
|
// `frameCount * 4` is a runtime value (frameCount itself is a column read
|
|
33
|
-
// per entity); the variable-capacity `array<f32>` mirrors
|
|
34
|
-
//
|
|
33
|
+
// per entity); the variable-capacity `array<f32>` mirrors the renderer-owned
|
|
34
|
+
// collection snapshot where the runtime length is also data-dependent. The
|
|
35
35
|
// length invariant is enforced by the M4 sprite-animation-tick system at
|
|
36
36
|
// first observation (AC-09 fail-fast path; D-1 + D-6).
|
|
37
37
|
//
|
package/src/index.ts
CHANGED
|
@@ -49,18 +49,14 @@ import {
|
|
|
49
49
|
} from '@forgeax/engine-ecs';
|
|
50
50
|
import { componentSchema } from '@forgeax/engine-ecs/internal';
|
|
51
51
|
import { fillComponentDefaults } from '@forgeax/engine-ecs/projection';
|
|
52
|
-
import type {
|
|
53
|
-
|
|
54
|
-
LocalEntityId,
|
|
55
|
-
MountOverride,
|
|
56
|
-
SceneAsset,
|
|
57
|
-
SceneEntity,
|
|
58
|
-
} from '@forgeax/engine-types';
|
|
52
|
+
import type { MountOverride } from '@forgeax/engine-scene';
|
|
53
|
+
import type { Handle, LocalEntityId, SceneAsset } from '@forgeax/engine-types';
|
|
59
54
|
|
|
60
55
|
/** Minimal structural view of a SceneInstanceState the fold reads (D-4 boundary:
|
|
61
56
|
* `world.getSceneInstanceState(root).value` is structurally assignable). */
|
|
62
57
|
export interface FoldSceneInstanceState {
|
|
63
58
|
readonly source: Handle<'SceneAsset', 'shared'>;
|
|
59
|
+
readonly keyByLocalId: Map<number, string>;
|
|
64
60
|
readonly entityToLocalId: Map<EntityHandle, LocalEntityId>;
|
|
65
61
|
}
|
|
66
62
|
|
|
@@ -151,12 +147,6 @@ export function foldMountOverrides(world: World, state: FoldSceneInstanceState):
|
|
|
151
147
|
if (!sourceRes.ok) return [];
|
|
152
148
|
const source = sourceRes.value as SceneAsset;
|
|
153
149
|
|
|
154
|
-
// Index source entities by localId for O(1) baseline lookup.
|
|
155
|
-
const sourceByLid = new Map<number, SceneEntity>();
|
|
156
|
-
for (const node of source.entities) {
|
|
157
|
-
sourceByLid.set(node.localId as unknown as number, node);
|
|
158
|
-
}
|
|
159
|
-
|
|
160
150
|
const excluded = excludedComponentNames();
|
|
161
151
|
const registered = world.components.entries();
|
|
162
152
|
const overrides: MountOverride[] = [];
|
|
@@ -170,7 +160,8 @@ export function foldMountOverrides(world: World, state: FoldSceneInstanceState):
|
|
|
170
160
|
members.sort((a, b) => a[1] - b[1]);
|
|
171
161
|
|
|
172
162
|
for (const [entity, lid] of members) {
|
|
173
|
-
const
|
|
163
|
+
const sourceKey = state.keyByLocalId.get(lid);
|
|
164
|
+
const sourceNode = sourceKey === undefined ? undefined : source.entities[sourceKey];
|
|
174
165
|
const sourceComps = (sourceNode?.components ?? {}) as Record<string, Record<string, unknown>>;
|
|
175
166
|
|
|
176
167
|
for (const [compName, compToken] of registered) {
|
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
// Ambient declarations for node:* modules used by dawn tests that read the
|
|
2
|
-
// hello-triangle compiled shader manifest at runtime. The runtime package's
|
|
3
|
-
// tsconfig does not enable @types/node (production target is browser); these
|
|
4
|
-
// minimal shims keep tsc green for the small set of dawn test files that read
|
|
5
|
-
// compiled shader manifests at runtime.
|
|
6
|
-
//
|
|
7
|
-
// Used by shader-manifest Dawn fixtures and the runtime benchmark fixtures.
|
|
8
|
-
// - tilemap-chunk-y-sort-bench.unit.test.ts (perf_hooks + process.env)
|
|
9
|
-
// - record-fold-scene-instances.unit.test.ts (readdirSync + dirname)
|
|
10
|
-
// - basis-catalog-dispatch.integration.test.ts (existsSync pkg-built gate)
|
|
11
|
-
|
|
12
|
-
declare module 'node:fs' {
|
|
13
|
-
export function readFileSync(path: string, encoding: string): string;
|
|
14
|
-
export function readdirSync(path: string): string[];
|
|
15
|
-
export function existsSync(path: string): boolean;
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
declare module 'node:path' {
|
|
19
|
-
export function resolve(...paths: string[]): string;
|
|
20
|
-
export function dirname(p: string): string;
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
declare module 'node:url' {
|
|
24
|
-
export function fileURLToPath(url: string | URL): string;
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
declare module 'node:perf_hooks' {
|
|
28
|
-
export const performance: { now(): number };
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
declare const process: { env: Record<string, string | undefined> };
|