@forgeax/engine-ecs 0.1.4 → 0.1.6
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 +6 -0
- package/dist/.tsbuildinfo +1 -1
- package/dist/__tests__/component-nan-preflight.unit.test.d.ts +2 -0
- package/dist/__tests__/component-nan-preflight.unit.test.d.ts.map +1 -0
- package/dist/__tests__/externalization-render-read-lease.test-d.d.ts +2 -0
- package/dist/__tests__/externalization-render-read-lease.test-d.d.ts.map +1 -0
- package/dist/__tests__/externalization-render-read-lease.unit.test.d.ts +2 -0
- package/dist/__tests__/externalization-render-read-lease.unit.test.d.ts.map +1 -0
- package/dist/errors/validation-errors.d.ts +15 -0
- package/dist/errors/validation-errors.d.ts.map +1 -1
- package/dist/errors.d.ts +9 -2
- package/dist/errors.d.ts.map +1 -1
- package/dist/index.mjs +84 -16
- package/dist/index.mjs.map +1 -1
- package/dist/internal.mjs.map +1 -1
- package/dist/projection/index.d.ts +53 -0
- package/dist/projection/index.d.ts.map +1 -1
- package/dist/projection/index.mjs +99 -1
- package/dist/projection/index.mjs.map +1 -1
- package/dist/world-component-access.d.ts +1 -0
- package/dist/world-component-access.d.ts.map +1 -1
- package/dist/world.d.ts +2 -2
- package/dist/world.d.ts.map +1 -1
- package/package.json +4 -4
- package/src/__tests__/component-nan-preflight.unit.test.ts +186 -0
- package/src/__tests__/errors.unit.test.ts +4 -0
- package/src/__tests__/externalization-render-read-lease.test-d.ts +30 -0
- package/src/__tests__/externalization-render-read-lease.unit.test.ts +79 -0
- package/src/__tests__/query-trs-flat-column-ratio.perf.test.ts +1 -1
- package/src/__tests__/stale-error.test-d.ts +1 -0
- package/src/errors/validation-errors.ts +88 -0
- package/src/errors.ts +11 -0
- package/src/projection/index.ts +176 -0
- package/src/world-component-access.ts +28 -19
- package/src/world.ts +2 -0
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import type { Result } from '@forgeax/engine-types';
|
|
2
2
|
import type { Component } from '../component';
|
|
3
3
|
import type { EntityHandle } from '../entity-handle';
|
|
4
|
+
import type { SharedRefMutationRead } from '../shared-ref-store';
|
|
5
|
+
import type { WorldChangeRead } from '../storage/change-detection';
|
|
4
6
|
import type { EcsError, World } from '../world';
|
|
5
7
|
export { fillComponentDefaults } from '../component-default-fallback';
|
|
6
8
|
export { ComponentNotDefinedError, InstanceTransformsStrideMismatchError, ManagedBufferOutOfBoundsError, ResourceInvalidValueError, SpawnLightInvalidBoundsError, SpriteAnimationInvalidError, SpriteInstancesCountMismatchError, SpriteInstancesMutuallyExclusiveWithInstancesError, SpriteInstancesRequiresSpriteShaderError, StaleEntityError, } from '../errors';
|
|
@@ -29,6 +31,57 @@ export interface WorldProjection {
|
|
|
29
31
|
export interface WorldProjectionOptions {
|
|
30
32
|
readonly components?: readonly Component[];
|
|
31
33
|
}
|
|
34
|
+
export interface RenderProjectionComponentRequest {
|
|
35
|
+
readonly component: Component;
|
|
36
|
+
readonly fields: readonly string[];
|
|
37
|
+
}
|
|
38
|
+
export interface RenderProjectionRequest {
|
|
39
|
+
readonly components: readonly RenderProjectionComponentRequest[];
|
|
40
|
+
}
|
|
41
|
+
export interface RenderProjectionSpan {
|
|
42
|
+
readonly length: number;
|
|
43
|
+
readonly fields: Readonly<Record<string, ArrayLike<number>>>;
|
|
44
|
+
}
|
|
45
|
+
export interface RenderProjectionSpans {
|
|
46
|
+
readonly generation: number;
|
|
47
|
+
readonly sharedRefEpoch: number;
|
|
48
|
+
readonly spans: readonly RenderProjectionSpan[];
|
|
49
|
+
}
|
|
50
|
+
export interface RenderChangeBatchOk {
|
|
51
|
+
readonly status: 'ok';
|
|
52
|
+
readonly cursor: number;
|
|
53
|
+
readonly world: Extract<WorldChangeRead, {
|
|
54
|
+
readonly status: 'ok';
|
|
55
|
+
}>;
|
|
56
|
+
readonly sharedRefs: Extract<SharedRefMutationRead, {
|
|
57
|
+
readonly status: 'ok';
|
|
58
|
+
}>;
|
|
59
|
+
}
|
|
60
|
+
export interface RenderChangeBatchOverflow {
|
|
61
|
+
readonly status: 'overflow';
|
|
62
|
+
readonly cursor: number;
|
|
63
|
+
readonly resync: true;
|
|
64
|
+
readonly oldestAvailable: number;
|
|
65
|
+
readonly world: WorldChangeRead;
|
|
66
|
+
readonly sharedRefs: SharedRefMutationRead;
|
|
67
|
+
}
|
|
68
|
+
export type RenderChangeBatch = RenderChangeBatchOk | RenderChangeBatchOverflow;
|
|
69
|
+
export interface RenderReadLease {
|
|
70
|
+
readonly worldIdentity: string;
|
|
71
|
+
readonly generation: number;
|
|
72
|
+
readChanges(cursor: number): RenderChangeBatch;
|
|
73
|
+
querySpans(request: RenderProjectionRequest): RenderProjectionSpans;
|
|
74
|
+
inspectCursor(): number;
|
|
75
|
+
dispose(): void;
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Read one array field through the render projection boundary without
|
|
79
|
+
* materialising the component object. Render extraction uses this for hot
|
|
80
|
+
* transform/instance columns; the World internals remain owned by ECS.
|
|
81
|
+
*/
|
|
82
|
+
export declare function readRenderArrayView(world: World, entity: EntityHandle, component: Component, fieldName: string): ArrayLike<number> | undefined;
|
|
83
|
+
/** Create the render-owned lease from the ECS projection boundary. */
|
|
84
|
+
export declare function createRenderReadLease(world: World, token?: object): RenderReadLease;
|
|
32
85
|
/**
|
|
33
86
|
* Publish one owner-derived component value without confusing it with an
|
|
34
87
|
* authored mutation. Owner packages use this narrow seam for fields such as
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/projection/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAE9C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AAMhD,OAAO,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AACtE,OAAO,EACL,wBAAwB,EACxB,qCAAqC,EACrC,6BAA6B,EAC7B,yBAAyB,EACzB,4BAA4B,EAC5B,2BAA2B,EAC3B,iCAAiC,EACjC,kDAAkD,EAClD,wCAAwC,EACxC,gBAAgB,GACjB,MAAM,WAAW,CAAC;AAEnB,MAAM,MAAM,oBAAoB,GAC5B,iBAAiB,GACjB,mBAAmB,GACnB,mBAAmB,GACnB,2BAA2B,GAC3B,gBAAgB,CAAC;AAErB,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAC;IAC9B,QAAQ,CAAC,IAAI,EAAE,oBAAoB,CAAC;IACpC,kEAAkE;IAClE,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS,CAAC;IAC/B,sEAAsE;IACtE,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;CAC/B;AAED,MAAM,MAAM,cAAc,GACtB;IACE,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,OAAO,EAAE,SAAS,gBAAgB,EAAE,CAAC;CAC/C,GACD;IACE,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAC;IAC3B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,kBAAkB,CAAC;CACrC,CAAC;AAEN,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,IAAI,IAAI,cAAc,CAAC;CACxB;AAED,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,UAAU,CAAC,EAAE,SAAS,SAAS,EAAE,CAAC;CAC5C;AAED;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,KAAK,EACZ,MAAM,EAAE,YAAY,EACpB,SAAS,EAAE,SAAS,EACpB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC7B,MAAM,CAAC,IAAI,EAAE,QAAQ,CAAC,CAKxB;AAED,oFAAoF;AACpF,wBAAgB,eAAe,CAC7B,KAAK,EAAE,KAAK,EACZ,KAAK,EAAE,OAAO,EACd,OAAO,CAAC,EAAE;IAAE,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;CAAE,GACxC,IAAI,CAEN;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,KAAK,EACZ,OAAO,GAAE,sBAA2B,GACnC,eAAe,CA4CjB"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/projection/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -467,6 +467,104 @@ function fillComponentDefaults(token, raw) {
|
|
|
467
467
|
}
|
|
468
468
|
|
|
469
469
|
// src/projection/index.ts
|
|
470
|
+
function readRenderArrayView(world, entity, component, fieldName) {
|
|
471
|
+
return world[worldInternal].getArrayView(entity, component, fieldName);
|
|
472
|
+
}
|
|
473
|
+
function readProjectionSpans(world, generation, request) {
|
|
474
|
+
const queryResult = world.query({ read: request.components.map((entry) => entry.component) });
|
|
475
|
+
if (!queryResult.ok) throw new Error(queryResult.error.message);
|
|
476
|
+
const spansResult = queryResult.value.spans();
|
|
477
|
+
if (!spansResult.ok) throw new Error(spansResult.error.message);
|
|
478
|
+
const spans = [];
|
|
479
|
+
for (const span of spansResult.value) {
|
|
480
|
+
const fields = {};
|
|
481
|
+
for (const entry of request.components) {
|
|
482
|
+
const shape = span.get(entry.component);
|
|
483
|
+
for (const fieldName of entry.fields) {
|
|
484
|
+
const field = shape[fieldName];
|
|
485
|
+
if (field === void 0) {
|
|
486
|
+
throw new Error(
|
|
487
|
+
`Render projection field '${entry.component.name}.${fieldName}' is unavailable.`
|
|
488
|
+
);
|
|
489
|
+
}
|
|
490
|
+
fields[`${entry.component.name}.${fieldName}`] = field;
|
|
491
|
+
if (request.components.length === 1) fields[fieldName] = field;
|
|
492
|
+
}
|
|
493
|
+
}
|
|
494
|
+
spans.push({ length: span.length, fields: Object.freeze(fields) });
|
|
495
|
+
}
|
|
496
|
+
return {
|
|
497
|
+
generation,
|
|
498
|
+
sharedRefEpoch: world[worldInternal].getSharedRefs().getMutationEpoch(),
|
|
499
|
+
spans: Object.freeze(spans)
|
|
500
|
+
};
|
|
501
|
+
}
|
|
502
|
+
function createRenderReadLease(world, token = {}) {
|
|
503
|
+
const sharedRefs = world[worldInternal].getSharedRefs();
|
|
504
|
+
const generation = Math.max(1, world[worldInternal].getStructureEpoch());
|
|
505
|
+
let disposed = false;
|
|
506
|
+
let nextCursor = 1;
|
|
507
|
+
const cursors = /* @__PURE__ */ new Map([
|
|
508
|
+
[
|
|
509
|
+
0,
|
|
510
|
+
{ world: world[worldInternal].getChangeCursor(), sharedRefs: sharedRefs.getMutationEpoch() }
|
|
511
|
+
]
|
|
512
|
+
]);
|
|
513
|
+
const assertLive = () => {
|
|
514
|
+
if (disposed) throw new Error("RenderReadLease is disposed.");
|
|
515
|
+
};
|
|
516
|
+
const captureCursor = () => {
|
|
517
|
+
const cursor = nextCursor++;
|
|
518
|
+
cursors.set(cursor, {
|
|
519
|
+
world: world[worldInternal].getChangeCursor(),
|
|
520
|
+
sharedRefs: sharedRefs.getMutationEpoch()
|
|
521
|
+
});
|
|
522
|
+
if (cursors.size > 8) {
|
|
523
|
+
const oldest = cursors.keys().next().value;
|
|
524
|
+
if (typeof oldest === "number" && oldest !== cursor) cursors.delete(oldest);
|
|
525
|
+
}
|
|
526
|
+
return cursor;
|
|
527
|
+
};
|
|
528
|
+
return {
|
|
529
|
+
worldIdentity: world.identity,
|
|
530
|
+
generation,
|
|
531
|
+
inspectCursor() {
|
|
532
|
+
assertLive();
|
|
533
|
+
return captureCursor();
|
|
534
|
+
},
|
|
535
|
+
readChanges(cursor) {
|
|
536
|
+
assertLive();
|
|
537
|
+
const start = cursors.get(cursor);
|
|
538
|
+
if (start === void 0) throw new RangeError(`Unknown RenderReadLease cursor ${cursor}.`);
|
|
539
|
+
const worldRead = world[worldInternal].readChangesSince(start.world);
|
|
540
|
+
const sharedRead = sharedRefs.readChangesSince(start.sharedRefs);
|
|
541
|
+
const next = captureCursor();
|
|
542
|
+
if (worldRead.status === "overflow" || sharedRead.status === "overflow") {
|
|
543
|
+
const oldestAvailable = Math.min(
|
|
544
|
+
worldRead.status === "overflow" ? worldRead.oldestAvailable : Number.MAX_SAFE_INTEGER,
|
|
545
|
+
sharedRead.status === "overflow" ? sharedRead.oldestAvailable : Number.MAX_SAFE_INTEGER
|
|
546
|
+
);
|
|
547
|
+
return {
|
|
548
|
+
status: "overflow",
|
|
549
|
+
cursor: next,
|
|
550
|
+
resync: true,
|
|
551
|
+
oldestAvailable,
|
|
552
|
+
world: worldRead,
|
|
553
|
+
sharedRefs: sharedRead
|
|
554
|
+
};
|
|
555
|
+
}
|
|
556
|
+
return { status: "ok", cursor: next, world: worldRead, sharedRefs: sharedRead };
|
|
557
|
+
},
|
|
558
|
+
querySpans(request) {
|
|
559
|
+
assertLive();
|
|
560
|
+
return readProjectionSpans(world, generation, request);
|
|
561
|
+
},
|
|
562
|
+
dispose() {
|
|
563
|
+
disposed = true;
|
|
564
|
+
cursors.clear();
|
|
565
|
+
}
|
|
566
|
+
};
|
|
567
|
+
}
|
|
470
568
|
function setDerivedComponent(world, entity, component, value) {
|
|
471
569
|
const result = world[worldInternal].setQueryRow(entity, component, value);
|
|
472
570
|
if (!result.ok) return result;
|
|
@@ -512,6 +610,6 @@ function createWorldProjection(world, options = {}) {
|
|
|
512
610
|
};
|
|
513
611
|
}
|
|
514
612
|
|
|
515
|
-
export { ComponentNotDefinedError, InstanceTransformsStrideMismatchError, ManagedBufferOutOfBoundsError, ResourceInvalidValueError, SpawnLightInvalidBoundsError, SpriteAnimationInvalidError, SpriteInstancesCountMismatchError, SpriteInstancesMutuallyExclusiveWithInstancesError, SpriteInstancesRequiresSpriteShaderError, StaleEntityError, createWorldProjection, fillComponentDefaults, routeWorldError, setDerivedComponent };
|
|
613
|
+
export { ComponentNotDefinedError, InstanceTransformsStrideMismatchError, ManagedBufferOutOfBoundsError, ResourceInvalidValueError, SpawnLightInvalidBoundsError, SpriteAnimationInvalidError, SpriteInstancesCountMismatchError, SpriteInstancesMutuallyExclusiveWithInstancesError, SpriteInstancesRequiresSpriteShaderError, StaleEntityError, createRenderReadLease, createWorldProjection, fillComponentDefaults, readRenderArrayView, routeWorldError, setDerivedComponent };
|
|
516
614
|
//# sourceMappingURL=index.mjs.map
|
|
517
615
|
//# sourceMappingURL=index.mjs.map
|