@forgeax/engine-ecs 0.1.32 → 0.1.34
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 +35 -18
- package/dist/__tests__/query-idle.unit.test.d.ts +2 -0
- package/dist/__tests__/query-idle.unit.test.d.ts.map +1 -0
- package/dist/__tests__/set-allocation.unit.test.d.ts +2 -0
- package/dist/__tests__/set-allocation.unit.test.d.ts.map +1 -0
- package/dist/__tests__/state-projection.unit.test.d.ts +2 -0
- package/dist/__tests__/state-projection.unit.test.d.ts.map +1 -0
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.mjs +579 -623
- package/dist/index.mjs.map +1 -1
- package/dist/projection/index.d.ts +2 -18
- package/dist/projection/index.d.ts.map +1 -1
- package/dist/projection/index.mjs +433 -23
- package/dist/projection/index.mjs.map +1 -1
- package/dist/projection/state-projection.d.ts +37 -0
- package/dist/projection/state-projection.d.ts.map +1 -0
- package/dist/query/query.d.ts.map +1 -1
- package/dist/shared-ref-store.d.ts +0 -24
- package/dist/shared-ref-store.d.ts.map +1 -1
- package/dist/shared.mjs.map +1 -1
- package/dist/storage/archetype-graph.d.ts +2 -0
- package/dist/storage/archetype-graph.d.ts.map +1 -1
- package/dist/storage/change-detection.d.ts +4 -0
- package/dist/storage/change-detection.d.ts.map +1 -1
- package/dist/storage/table.d.ts +6 -3
- package/dist/storage/table.d.ts.map +1 -1
- package/dist/world-internal.d.ts +0 -2
- package/dist/world-internal.d.ts.map +1 -1
- package/dist/world.d.ts +0 -2
- package/dist/world.d.ts.map +1 -1
- package/package.json +4 -4
- package/src/__tests__/component-version-surface.test.ts +1 -7
- package/src/__tests__/derived-range-writer.contract.test.ts +6 -0
- package/src/__tests__/ecs-core-reduction.characterization.test.ts +2 -3
- package/src/__tests__/execution-conflict-boundary.unit.test.ts +4 -0
- package/src/__tests__/externalization-render-read-lease.unit.test.ts +4 -10
- package/src/__tests__/query-idle.unit.test.ts +19 -0
- package/src/__tests__/set-allocation.unit.test.ts +30 -0
- package/src/__tests__/shared-ref-lifetime.unit.test.ts +1 -2
- package/src/__tests__/shared-ref-store.unit.test.ts +2 -34
- package/src/__tests__/state-projection.unit.test.ts +159 -0
- package/src/__tests__/world-health.contract.test.ts +0 -23
- package/src/index.ts +1 -1
- package/src/projection/index.ts +9 -39
- package/src/projection/state-projection.ts +250 -0
- package/src/query/query.ts +23 -16
- package/src/shared-ref-store.ts +0 -70
- package/src/storage/archetype-graph.ts +15 -1
- package/src/storage/change-detection.ts +36 -4
- package/src/storage/table.ts +20 -1
- package/src/world-internal.ts +0 -2
- package/src/world.ts +35 -38
- package/dist/__tests__/structural-evidence.contract.test-d.d.ts +0 -2
- package/dist/__tests__/structural-evidence.contract.test-d.d.ts.map +0 -1
- package/dist/__tests__/structural-evidence.contract.test.d.ts +0 -2
- package/dist/__tests__/structural-evidence.contract.test.d.ts.map +0 -1
- package/dist/storage/structural-evidence.d.ts +0 -30
- package/dist/storage/structural-evidence.d.ts.map +0 -1
- package/src/__tests__/structural-evidence.contract.test-d.ts +0 -6
- package/src/__tests__/structural-evidence.contract.test.ts +0 -49
- package/src/storage/structural-evidence.ts +0 -64
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"archetype-graph.d.ts","sourceRoot":"","sources":["../../src/storage/archetype-graph.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAE3D,OAAO,EAAE,KAAK,SAAS,EAAE,KAAK,WAAW,EAAiC,MAAM,aAAa,CAAC;AAC9F,OAAO,EAAsB,KAAK,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAC3E,OAAO,EAAoC,KAAK,KAAK,EAAE,KAAK,OAAO,EAAY,MAAM,SAAS,CAAC;AAE/F;;;;;;;;;;GAUG;AACH,MAAM,WAAW,cAAc;IAC7B,qEAAqE;IACrE,UAAU,EAAE,SAAS,EAAE,CAAC;IACxB,+DAA+D;IAC/D,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IACrC,oEAAoE;IACpE,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,KAAK,EAAE,CAAC;IAChB,eAAe,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACtC,eAAe,EAAE,MAAM,CAAC;IACxB,UAAU,EAAE,GAAG,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;IAC3C,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;CAC1B;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,UAAQ,GAAG,cAAc,
|
|
1
|
+
{"version":3,"file":"archetype-graph.d.ts","sourceRoot":"","sources":["../../src/storage/archetype-graph.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAE3D,OAAO,EAAE,KAAK,SAAS,EAAE,KAAK,WAAW,EAAiC,MAAM,aAAa,CAAC;AAC9F,OAAO,EAAsB,KAAK,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAC3E,OAAO,EAAoC,KAAK,KAAK,EAAE,KAAK,OAAO,EAAY,MAAM,SAAS,CAAC;AAE/F;;;;;;;;;;GAUG;AACH,MAAM,WAAW,cAAc;IAC7B,qEAAqE;IACrE,UAAU,EAAE,SAAS,EAAE,CAAC;IACxB,+DAA+D;IAC/D,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IACrC,oEAAoE;IACpE,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,KAAK,EAAE,CAAC;IAChB,YAAY,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC;IACzB,uBAAuB,EAAE,GAAG,CAAC,WAAW,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;IACtD,eAAe,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACtC,eAAe,EAAE,MAAM,CAAC;IACxB,UAAU,EAAE,GAAG,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;IAC3C,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;CAC1B;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,UAAQ,GAAG,cAAc,CAanE;AAED,wBAAgB,QAAQ,CAAC,KAAK,EAAE,cAAc,EAAE,EAAE,EAAE,OAAO,GAAG,KAAK,CAIlE;AAED,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,cAAc,EACrB,UAAU,EAAE,aAAa,CAAC,SAAS,CAAC,GACnC,KAAK,CAsBP;AAED,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,cAAc,EAAE,SAAS,EAAE,SAAS,GAAG,YAAY,CAMjG;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,cAAc,EACrB,YAAY,EAAE,aAAa,CAAC,WAAW,CAAC,EACxC,UAAU,EAAE,aAAa,CAAC,SAAS,CAAC,GACnC,SAAS,CAgBX;AAED;;;GAGG;AACH,wBAAgB,UAAU,CACxB,KAAK,EAAE,cAAc,EACrB,GAAG,EAAE,SAAS,EACd,WAAW,EAAE,WAAW,EACxB,SAAS,EAAE,SAAS,GACnB,SAAS,CAeX;AAED;;;;;;GAMG;AACH,wBAAgB,aAAa,CAC3B,KAAK,EAAE,cAAc,EACrB,GAAG,EAAE,SAAS,EACd,WAAW,EAAE,WAAW,GACvB,SAAS,CAkBX"}
|
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
import type { Component } from '../component';
|
|
2
2
|
import { type EntityHandle } from '../entity-handle';
|
|
3
3
|
import type { ArchetypeGraph } from './archetype-graph';
|
|
4
|
+
export declare const PROJECTION_BLOCK_SIZE = 256;
|
|
4
5
|
export interface ComponentEpochColumns {
|
|
5
6
|
added: Float64Array;
|
|
6
7
|
changed: Float64Array;
|
|
8
|
+
blocks: Float64Array;
|
|
7
9
|
}
|
|
8
10
|
export declare function createComponentEpochColumns(capacity: number): ComponentEpochColumns;
|
|
9
11
|
export declare function growComponentEpochColumns(columns: ComponentEpochColumns, capacity: number): ComponentEpochColumns;
|
|
@@ -34,5 +36,7 @@ interface EntityLocation {
|
|
|
34
36
|
export declare function readComponentChange(graph: ArchetypeGraph, location: EntityLocation, entity: EntityHandle, componentId: number): ChangeTicks | undefined;
|
|
35
37
|
export declare function markComponentsAdded(graph: ArchetypeGraph, location: EntityLocation, entity: EntityHandle, componentIds: readonly number[], epoch: number): void;
|
|
36
38
|
export declare function markComponentChanged(graph: ArchetypeGraph, location: EntityLocation, entity: EntityHandle, componentId: number, epoch: () => number): void;
|
|
39
|
+
/** Row evidence and its conservative block summary share the World epoch. */
|
|
40
|
+
export declare function publishComponentRange(columns: ComponentEpochColumns, start: number, count: number, epoch: number): void;
|
|
37
41
|
export {};
|
|
38
42
|
//# sourceMappingURL=change-detection.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"change-detection.d.ts","sourceRoot":"","sources":["../../src/storage/change-detection.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAE9C,OAAO,EAAE,KAAK,YAAY,EAAe,MAAM,kBAAkB,CAAC;AAElE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"change-detection.d.ts","sourceRoot":"","sources":["../../src/storage/change-detection.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAE9C,OAAO,EAAE,KAAK,YAAY,EAAe,MAAM,kBAAkB,CAAC;AAElE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAGxD,eAAO,MAAM,qBAAqB,MAAM,CAAC;AAIzC,MAAM,WAAW,qBAAqB;IACpC,KAAK,EAAE,YAAY,CAAC;IACpB,OAAO,EAAE,YAAY,CAAC;IACtB,MAAM,EAAE,YAAY,CAAC;CACtB;AAED,wBAAgB,2BAA2B,CAAC,QAAQ,EAAE,MAAM,GAAG,qBAAqB,CAMnF;AAED,wBAAgB,yBAAyB,CACvC,OAAO,EAAE,qBAAqB,EAC9B,QAAQ,EAAE,MAAM,GACf,qBAAqB,CAQvB;AAED,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,qBAAqB,EAC7B,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,qBAAqB,EAC7B,SAAS,EAAE,MAAM,GAChB,IAAI,CAKN;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC;IAC9B,MAAM,EAAE,UAAU,CAAC;IACnB,KAAK,EAAE,WAAW,CAAC;IACnB,KAAK,EAAE,YAAY,CAAC;IACpB,OAAO,EAAE,YAAY,CAAC;IACtB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,SAAS,GAAG,YAAY,CAWrE;AAED,wBAAgB,cAAc,CAAC,GAAG,EAAE,YAAY,EAAE,MAAM,EAAE,YAAY,GAAG,MAAM,CAG9E;AAED,wBAAgB,YAAY,CAAC,GAAG,EAAE,YAAY,EAAE,MAAM,EAAE,YAAY,GAAG,OAAO,CAE7E;AAED,wBAAgB,eAAe,CAAC,GAAG,EAAE,YAAY,EAAE,MAAM,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAe9F;AAED,wBAAgB,eAAe,CAAC,GAAG,EAAE,YAAY,EAAE,MAAM,EAAE,YAAY,GAAG,OAAO,CAchF;AA0BD,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,eAAO,MAAM,kBAAkB,KAAK,CAAC;AAErC,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,CAE3D;AAED,UAAU,cAAc;IACtB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;CAC/B;AAED,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,cAAc,EACrB,QAAQ,EAAE,cAAc,EACxB,MAAM,EAAE,YAAY,EACpB,WAAW,EAAE,MAAM,GAClB,WAAW,GAAG,SAAS,CAmBzB;AAED,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,cAAc,EACrB,QAAQ,EAAE,cAAc,EACxB,MAAM,EAAE,YAAY,EACpB,YAAY,EAAE,SAAS,MAAM,EAAE,EAC/B,KAAK,EAAE,MAAM,GACZ,IAAI,CAiBN;AAED,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,cAAc,EACrB,QAAQ,EAAE,cAAc,EACxB,MAAM,EAAE,YAAY,EACpB,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE,MAAM,MAAM,GAClB,IAAI,CAaN;AAED,6EAA6E;AAC7E,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,qBAAqB,EAC9B,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,MAAM,GACZ,IAAI,CAaN"}
|
package/dist/storage/table.d.ts
CHANGED
|
@@ -16,14 +16,17 @@ export interface Table {
|
|
|
16
16
|
size: number;
|
|
17
17
|
capacity: number;
|
|
18
18
|
version: number;
|
|
19
|
+
membership: Float64Array;
|
|
20
|
+
readonly activeDirectories: readonly Set<Table>[];
|
|
19
21
|
}
|
|
20
22
|
export declare function tableKey(componentIds: ReadonlyArray<ComponentId>): string;
|
|
21
23
|
export declare function canonicalComponents(components: ReadonlyArray<Component>): Component[];
|
|
22
|
-
export declare function createTable(components: ReadonlyArray<Component>, id: TableId, shared?: boolean): Table;
|
|
23
|
-
export declare function appendTableRow(table: Table, entity: EntityHandle): number;
|
|
24
|
-
export declare function removeTableRow(table: Table, row: number): {
|
|
24
|
+
export declare function createTable(components: ReadonlyArray<Component>, id: TableId, shared?: boolean, activeDirectories?: readonly Set<Table>[]): Table;
|
|
25
|
+
export declare function appendTableRow(table: Table, entity: EntityHandle, epoch?: number): number;
|
|
26
|
+
export declare function removeTableRow(table: Table, row: number, epoch?: number): {
|
|
25
27
|
movedEntity: EntityHandle;
|
|
26
28
|
newRow: number;
|
|
27
29
|
} | null;
|
|
28
30
|
export declare function growTable(table: Table, targetCapacity: number): void;
|
|
31
|
+
export declare function markTableMembership(table: Table, row: number, epoch: number): void;
|
|
29
32
|
//# sourceMappingURL=table.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"table.d.ts","sourceRoot":"","sources":["../../src/storage/table.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,SAAS,EACd,KAAK,WAAW,EAQjB,MAAM,cAAc,CAAC;AAEtB,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EACL,KAAK,qBAAqB,
|
|
1
|
+
{"version":3,"file":"table.d.ts","sourceRoot":"","sources":["../../src/storage/table.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,SAAS,EACd,KAAK,WAAW,EAQjB,MAAM,cAAc,CAAC;AAEtB,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EACL,KAAK,qBAAqB,EAK3B,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAwB,KAAK,MAAM,EAA4B,MAAM,UAAU,CAAC;AAIvF,MAAM,MAAM,OAAO,GAAG,MAAM,CAAC;AAE7B,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC;IAC9B,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC5B,MAAM,EAAE,qBAAqB,CAAC;CAC/B;AAED,MAAM,WAAW,KAAK;IACpB,QAAQ,CAAC,EAAE,EAAE,OAAO,CAAC;IACrB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,UAAU,EAAE,aAAa,CAAC,SAAS,CAAC,CAAC;IAC9C,OAAO,EAAE,GAAG,CAAC,WAAW,EAAE,qBAAqB,CAAC,CAAC;IACjD,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,YAAY,CAAC;IACzB,QAAQ,CAAC,iBAAiB,EAAE,SAAS,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;CACnD;AAED,wBAAgB,QAAQ,CAAC,YAAY,EAAE,aAAa,CAAC,WAAW,CAAC,GAAG,MAAM,CAEzE;AAED,wBAAgB,mBAAmB,CAAC,UAAU,EAAE,aAAa,CAAC,SAAS,CAAC,GAAG,SAAS,EAAE,CAKrF;AAED,wBAAgB,WAAW,CACzB,UAAU,EAAE,aAAa,CAAC,SAAS,CAAC,EACpC,EAAE,EAAE,OAAO,EACX,MAAM,UAAQ,EACd,iBAAiB,GAAE,SAAS,GAAG,CAAC,KAAK,CAAC,EAAuB,GAC5D,KAAK,CAkDP;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,KAAK,SAAI,GAAG,MAAM,CASpF;AAED,wBAAgB,cAAc,CAC5B,KAAK,EAAE,KAAK,EACZ,GAAG,EAAE,MAAM,EACX,KAAK,SAAI,GACR;IAAE,WAAW,EAAE,YAAY,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAoBtD;AAED,wBAAgB,SAAS,CAAC,KAAK,EAAE,KAAK,EAAE,cAAc,EAAE,MAAM,GAAG,IAAI,CAiBpE;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAElF"}
|
package/dist/world-internal.d.ts
CHANGED
|
@@ -17,7 +17,6 @@ import type { SharedRefStore } from './shared-ref-store';
|
|
|
17
17
|
import type { Archetype } from './storage/archetype';
|
|
18
18
|
import type { ArchetypeGraph } from './storage/archetype-graph';
|
|
19
19
|
import type { ChangeTicks } from './storage/change-detection';
|
|
20
|
-
import type { StructuralEvidenceRing } from './storage/structural-evidence';
|
|
21
20
|
import type { Table } from './storage/table';
|
|
22
21
|
import type { ClockWriter } from './time';
|
|
23
22
|
import type { ComponentData, EcsError, EntityRecord } from './world';
|
|
@@ -52,7 +51,6 @@ export interface WorldInternal {
|
|
|
52
51
|
readonly getSchedules: () => ReadonlyMap<ScheduleToken, Schedule>;
|
|
53
52
|
readonly getSharedRefs: () => SharedRefStore;
|
|
54
53
|
readonly getStructureEpoch: () => number;
|
|
55
|
-
readonly getStructuralEvidence: () => StructuralEvidenceRing;
|
|
56
54
|
readonly lookupAlive: (entity: EntityHandle, operation: string, component?: string) => Result<EntityRecord, EcsError>;
|
|
57
55
|
readonly markComponentChanged: (entity: EntityHandle, componentId: number) => void;
|
|
58
56
|
readonly markComponentRangeChanged: (table: Table, componentId: number, rowStart: number, rowCount: number) => void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"world-internal.d.ts","sourceRoot":"","sources":["../src/world-internal.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAOH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,KAAK,EAAE,SAAS,EAAE,eAAe,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AACvE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AACrE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAChE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAC9D,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"world-internal.d.ts","sourceRoot":"","sources":["../src/world-internal.ts"],"names":[],"mappings":"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"}
|
package/dist/world.d.ts
CHANGED
|
@@ -172,7 +172,6 @@ export declare class World {
|
|
|
172
172
|
/** Per-World shared-ref store; public read-only for direct handle operations. */
|
|
173
173
|
readonly sharedRefs: SharedRefStore;
|
|
174
174
|
private readonly componentMutationEpochs;
|
|
175
|
-
private readonly structuralEvidence;
|
|
176
175
|
/** One packed reverse index per relationship source component. */
|
|
177
176
|
private readonly relationshipIndexes;
|
|
178
177
|
private mutationEpoch;
|
|
@@ -204,7 +203,6 @@ export declare class World {
|
|
|
204
203
|
private poisonedResult;
|
|
205
204
|
query<const R extends readonly Component[] = readonly [], const W extends readonly Component[] = readonly [], const O extends readonly Component[] = readonly []>(descriptor: QueryDescriptor<R, W, O>): Result<Query<R, W, O>, QueryCreationError>;
|
|
206
205
|
private componentIsInUse;
|
|
207
|
-
private recordStructuralEvidence;
|
|
208
206
|
/** Resolve current logical identity for a packed entity handle. */
|
|
209
207
|
private internalgetEntityArchetype;
|
|
210
208
|
/** Component change state for query filters. */
|
package/dist/world.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"world.d.ts","sourceRoot":"","sources":["../src/world.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"world.d.ts","sourceRoot":"","sources":["../src/world.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@forgeax/engine-ecs",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.34",
|
|
4
4
|
"private": false,
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "Apache-2.0",
|
|
@@ -42,9 +42,9 @@
|
|
|
42
42
|
"LICENSE"
|
|
43
43
|
],
|
|
44
44
|
"dependencies": {
|
|
45
|
-
"@forgeax/engine-math": "0.1.
|
|
46
|
-
"@forgeax/engine-plugin": "0.1.
|
|
47
|
-
"@forgeax/engine-types": "0.1.
|
|
45
|
+
"@forgeax/engine-math": "0.1.34",
|
|
46
|
+
"@forgeax/engine-plugin": "0.1.34",
|
|
47
|
+
"@forgeax/engine-types": "0.1.34"
|
|
48
48
|
},
|
|
49
49
|
"devDependencies": {
|
|
50
50
|
"@types/node": "^20.14.0"
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { describe, expect, it } from 'vitest';
|
|
2
2
|
import { defineComponent } from '../component';
|
|
3
|
-
import { readStructuralEvidence } from '../projection';
|
|
4
3
|
import type { Query } from '../query/query';
|
|
5
4
|
import { World } from '../world';
|
|
6
5
|
|
|
@@ -13,7 +12,7 @@ function changedEntities(query: Query): number[] {
|
|
|
13
12
|
}
|
|
14
13
|
|
|
15
14
|
describe('component version surface', () => {
|
|
16
|
-
it('keeps value
|
|
15
|
+
it('keeps value observation independent of structure versions', () => {
|
|
17
16
|
const world = new World();
|
|
18
17
|
const query = world.query({ changed: [Value] }).unwrap();
|
|
19
18
|
const entity = world.spawn({ component: Value, data: { value: 1 } }).unwrap();
|
|
@@ -22,11 +21,6 @@ describe('component version surface', () => {
|
|
|
22
21
|
world.set(entity, Value, { value: 2 }).unwrap();
|
|
23
22
|
expect(changedEntities(query)).toEqual([entity]);
|
|
24
23
|
expect(changedEntities(query)).toEqual([]);
|
|
25
|
-
|
|
26
|
-
const structuralRead = readStructuralEvidence(world, 0);
|
|
27
|
-
expect(structuralRead.status).toBe('ok');
|
|
28
|
-
if (structuralRead.status !== 'ok') return;
|
|
29
|
-
expect(structuralRead.events).toEqual([expect.objectContaining({ kind: 'spawn', entity })]);
|
|
30
24
|
});
|
|
31
25
|
|
|
32
26
|
it('lets independent consumers observe the same component version', () => {
|
|
@@ -2,6 +2,7 @@ import { describe, expect, it } from 'vitest';
|
|
|
2
2
|
import { componentId, defineComponent } from '../component';
|
|
3
3
|
import { ChangeEpochExhaustedError } from '../errors';
|
|
4
4
|
import { getDerivedWriter } from '../internal';
|
|
5
|
+
import { createStateProjection } from '../projection/state-projection';
|
|
5
6
|
import type { Query } from '../query/query';
|
|
6
7
|
import { World } from '../world';
|
|
7
8
|
import { worldInternal } from '../world-internal';
|
|
@@ -31,6 +32,8 @@ describe('package-internal derived range writer contract', () => {
|
|
|
31
32
|
const { world, query } = fixture();
|
|
32
33
|
const writer = getDerivedWriter(query, Value).unwrap();
|
|
33
34
|
const beforeEpoch = world[worldInternal].getMutationEpoch();
|
|
35
|
+
const projection = createStateProjection(world, [Value]);
|
|
36
|
+
projection.read().accept();
|
|
34
37
|
|
|
35
38
|
expect(
|
|
36
39
|
writer.writeRange(
|
|
@@ -52,6 +55,9 @@ describe('package-internal derived range writer contract', () => {
|
|
|
52
55
|
values.push(row.get(Value).value);
|
|
53
56
|
}
|
|
54
57
|
expect(values).toEqual([0, 11, 12, 3]);
|
|
58
|
+
const candidate = projection.read();
|
|
59
|
+
expect(candidate.indices).toEqual([1, 2]);
|
|
60
|
+
expect(candidate.scannedRows).toBe(4);
|
|
55
61
|
|
|
56
62
|
const graph = world[worldInternal].getGraph();
|
|
57
63
|
const record = world[worldInternal].getRecords()[0];
|
|
@@ -78,9 +78,8 @@ describe('M0 ECS reduction characterization', () => {
|
|
|
78
78
|
world.sharedRefs.release(handle).unwrap();
|
|
79
79
|
|
|
80
80
|
expect(() => world.despawn(entity)).not.toThrow();
|
|
81
|
-
expect(world.sharedRefs.
|
|
82
|
-
|
|
83
|
-
]);
|
|
81
|
+
expect(world.sharedRefs.resolve(handle).ok).toBe(false);
|
|
82
|
+
expect(world.sharedRefs.refcount(handle)).toBe(0);
|
|
84
83
|
});
|
|
85
84
|
|
|
86
85
|
it('F-07: rejects undefined shared payloads before allocating a slot', () => {
|
|
@@ -5,6 +5,7 @@ import {
|
|
|
5
5
|
SHARED_KERNEL_EXECUTOR_RESOURCE_KEY,
|
|
6
6
|
type SharedKernelExecutor,
|
|
7
7
|
} from '../execution/shared-kernel';
|
|
8
|
+
import { createStateProjection } from '../projection/state-projection';
|
|
8
9
|
import type { QuerySpan } from '../query/query';
|
|
9
10
|
import { Update } from '../schedule-token';
|
|
10
11
|
import { World } from '../world';
|
|
@@ -58,6 +59,8 @@ function runCase(
|
|
|
58
59
|
world.insertResource(SHARED_KERNEL_EXECUTOR_RESOURCE_KEY, executor);
|
|
59
60
|
}
|
|
60
61
|
world.spawn({ component: Position, data: { x: 1 } }).unwrap();
|
|
62
|
+
const projection = createStateProjection(world, [Position]);
|
|
63
|
+
projection.read().accept();
|
|
61
64
|
|
|
62
65
|
const first = defineSharedKernel(import.meta.url, {
|
|
63
66
|
name: `${kind}-first`,
|
|
@@ -97,6 +100,7 @@ function runCase(
|
|
|
97
100
|
world.addSystem(Update, second).unwrap();
|
|
98
101
|
|
|
99
102
|
world.update(0).unwrap();
|
|
103
|
+
expect(projection.read().indices).toEqual(kind === 'read-read' ? [] : [0]);
|
|
100
104
|
const [row] = world.query({ read: [Position] }).unwrap();
|
|
101
105
|
return { x: row?.get(Position).x ?? Number.NaN, trace };
|
|
102
106
|
}
|
|
@@ -27,7 +27,7 @@ describe('RenderReadLease contract', () => {
|
|
|
27
27
|
expect(projection.spans[0]?.fields.y).toEqual(new Float32Array([2]));
|
|
28
28
|
});
|
|
29
29
|
|
|
30
|
-
it('publishes
|
|
30
|
+
it('publishes component changes from an explicit consumer version', () => {
|
|
31
31
|
const world = new World();
|
|
32
32
|
const entity = world.spawn({ component: Position, data: { x: 0, y: 0 } }).unwrap();
|
|
33
33
|
const lease = createRenderReadLease(world);
|
|
@@ -35,14 +35,11 @@ describe('RenderReadLease contract', () => {
|
|
|
35
35
|
world.set(entity, Position, { x: 3 }).unwrap();
|
|
36
36
|
const batch = lease.readChanges(version);
|
|
37
37
|
|
|
38
|
-
expect(batch.status).toBe('ok');
|
|
39
|
-
if (batch.status !== 'ok') return;
|
|
40
38
|
expect(batch.version.mutationEpoch).toBeGreaterThan(version.mutationEpoch);
|
|
41
39
|
expect(batch.world.changedComponentIds).toContain(componentId(Position));
|
|
42
|
-
expect(batch.sharedRefs.records).toEqual([]);
|
|
43
40
|
});
|
|
44
41
|
|
|
45
|
-
it('
|
|
42
|
+
it('publishes current structure versions independently of intervening operation count', () => {
|
|
46
43
|
const world = new World();
|
|
47
44
|
const lease = createRenderReadLease(world);
|
|
48
45
|
const version = lease.captureVersion();
|
|
@@ -53,10 +50,7 @@ describe('RenderReadLease contract', () => {
|
|
|
53
50
|
}
|
|
54
51
|
|
|
55
52
|
const batch = lease.readChanges(version);
|
|
56
|
-
expect(batch.
|
|
57
|
-
if (batch.status !== 'rebuild') return;
|
|
58
|
-
expect(batch.resync).toBe(true);
|
|
59
|
-
expect(batch.reason).toBe('structure-changed');
|
|
53
|
+
expect(batch.version.structureEpoch).toBeGreaterThan(version.structureEpoch);
|
|
60
54
|
});
|
|
61
55
|
|
|
62
56
|
it('detaches idempotently and rejects reads after dispose', () => {
|
|
@@ -74,6 +68,6 @@ describe('RenderReadLease contract', () => {
|
|
|
74
68
|
const projection = lease.querySpans(request);
|
|
75
69
|
|
|
76
70
|
expect(projection).not.toBe(lease);
|
|
77
|
-
expect(Object.keys(projection)).toEqual(['generation', '
|
|
71
|
+
expect(Object.keys(projection)).toEqual(['generation', 'spans']);
|
|
78
72
|
});
|
|
79
73
|
});
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { expect, it, vi } from 'vitest';
|
|
2
|
+
import { defineComponent } from '../component';
|
|
3
|
+
import { World } from '../world';
|
|
4
|
+
|
|
5
|
+
it('uses component epochs to skip idle changed-query row scans', () => {
|
|
6
|
+
const Value = defineComponent('IdleValue', { value: 'f32' });
|
|
7
|
+
const world = new World();
|
|
8
|
+
const entity = world.spawn({ component: Value, data: { value: 1 } }).unwrap();
|
|
9
|
+
const query = world.query({ read: [Value], changed: [Value] }).unwrap();
|
|
10
|
+
expect([...query]).toHaveLength(1);
|
|
11
|
+
const probe = vi.spyOn(
|
|
12
|
+
query as unknown as { changeMatches: (...args: unknown[]) => boolean },
|
|
13
|
+
'changeMatches',
|
|
14
|
+
);
|
|
15
|
+
expect([...query]).toHaveLength(0);
|
|
16
|
+
expect(probe).not.toHaveBeenCalled();
|
|
17
|
+
world.set(entity, Value, { value: 2 }).unwrap();
|
|
18
|
+
expect([...query]).toHaveLength(1);
|
|
19
|
+
});
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { describe, expect, it, vi } from 'vitest';
|
|
2
|
+
import { defineComponent } from '../component';
|
|
3
|
+
import { World } from '../world';
|
|
4
|
+
|
|
5
|
+
describe('partial component writes', () => {
|
|
6
|
+
it('does not materialize an existing row to validate independent patch fields', () => {
|
|
7
|
+
const Pose = defineComponent('PatchPose', { pos: 'array<f32, 3>', value: 'f32' });
|
|
8
|
+
const world = new World();
|
|
9
|
+
const entity = world.spawn({ component: Pose, data: { pos: [1, 2, 3] } }).unwrap();
|
|
10
|
+
const read = vi.spyOn(
|
|
11
|
+
world as unknown as { readRow: (...args: unknown[]) => unknown },
|
|
12
|
+
'readRow',
|
|
13
|
+
);
|
|
14
|
+
world.set(entity, Pose, { value: 4 }).unwrap();
|
|
15
|
+
expect(read).not.toHaveBeenCalled();
|
|
16
|
+
read.mockRestore();
|
|
17
|
+
expect(Array.from(world.get(entity, Pose).unwrap().pos)).toEqual([1, 2, 3]);
|
|
18
|
+
});
|
|
19
|
+
|
|
20
|
+
it('preserves fixed-array encoding, overlap, and zero padding', () => {
|
|
21
|
+
const Data = defineComponent('FixedWrite', { values: 'array<f32, 4>' });
|
|
22
|
+
const world = new World();
|
|
23
|
+
const entity = world.spawn({ component: Data, data: { values: [1, 2, 3, 4] } }).unwrap();
|
|
24
|
+
const values = world.get(entity, Data).unwrap().values;
|
|
25
|
+
world.set(entity, Data, { values: values.subarray(1) }).unwrap();
|
|
26
|
+
expect(Array.from(world.get(entity, Data).unwrap().values)).toEqual([2, 3, 4, 0]);
|
|
27
|
+
world.set(entity, Data, { values: [5, 6] }).unwrap();
|
|
28
|
+
expect(Array.from(world.get(entity, Data).unwrap().values)).toEqual([5, 6, 0, 0]);
|
|
29
|
+
});
|
|
30
|
+
});
|
|
@@ -6,7 +6,7 @@ import { fileURLToPath, pathToFileURL } from 'node:url';
|
|
|
6
6
|
import { build } from 'tsup';
|
|
7
7
|
import { expect, it } from 'vitest';
|
|
8
8
|
|
|
9
|
-
it('release
|
|
9
|
+
it('final release does not retain externally disposed payloads', async () => {
|
|
10
10
|
const directory = mkdtempSync(join(tmpdir(), 'forgeax-shared-ref-lifetime-'));
|
|
11
11
|
try {
|
|
12
12
|
await build({
|
|
@@ -41,7 +41,6 @@ it('release diagnostics do not keep externally disposed payloads alive', async (
|
|
|
41
41
|
await new Promise(resolve => setImmediate(resolve));
|
|
42
42
|
global.gc();
|
|
43
43
|
}
|
|
44
|
-
assert.equal(store.readReleaseEvidence().length, 32);
|
|
45
44
|
assert.equal(store._liveCount(), 0);
|
|
46
45
|
console.log(JSON.stringify({ retained: refs.filter(ref => ref.deref()).length }));
|
|
47
46
|
`,
|
|
@@ -10,7 +10,6 @@ import { Update } from '../schedule-token';
|
|
|
10
10
|
// resolve(handle) -> Result<T, SharedRefReleasedError>
|
|
11
11
|
// retain(handle) -> Result<void, SharedRefReleasedError>
|
|
12
12
|
// release(handle) -> Result<release evidence | undefined, ...>
|
|
13
|
-
// readReleaseEvidence() -> bounded final-release records
|
|
14
13
|
//
|
|
15
14
|
// Tests are split across three describe blocks tracking the w6 / w7 / w8
|
|
16
15
|
// task boundary. The first two run as TDD red against the still-absent
|
|
@@ -62,36 +61,6 @@ describe('w6 SharedRefStore: alloc + resolve', () => {
|
|
|
62
61
|
}
|
|
63
62
|
});
|
|
64
63
|
|
|
65
|
-
it('publishes explicit in-place payload changes through one monotonic epoch', () => {
|
|
66
|
-
const store = new SharedRefStore();
|
|
67
|
-
const handle = store.alloc('MaterialAsset', { value: 1 });
|
|
68
|
-
|
|
69
|
-
expect(store.getMutationEpoch()).toBe(0);
|
|
70
|
-
expect(store.markChanged(handle).ok).toBe(true);
|
|
71
|
-
expect(store.getMutationEpoch()).toBe(1);
|
|
72
|
-
expect(store.readChangesSince(0)).toEqual({
|
|
73
|
-
cursor: 1,
|
|
74
|
-
records: [{ epoch: 1, handle: unwrapHandle(handle) }],
|
|
75
|
-
});
|
|
76
|
-
|
|
77
|
-
expect(store.release(handle).ok).toBe(true);
|
|
78
|
-
expect(store.markChanged(handle).ok).toBe(false);
|
|
79
|
-
expect(store.getMutationEpoch()).toBe(1);
|
|
80
|
-
});
|
|
81
|
-
|
|
82
|
-
it('keeps one latest mutation epoch per handle without a bounded journal', () => {
|
|
83
|
-
const store = new SharedRefStore();
|
|
84
|
-
const handle = store.alloc('MaterialAsset', { value: 1 });
|
|
85
|
-
for (let index = 0; index < 4097; index += 1) store.markChanged(handle).unwrap();
|
|
86
|
-
|
|
87
|
-
expect(store.readChangesSince(0)).toEqual({
|
|
88
|
-
cursor: 4097,
|
|
89
|
-
records: [{ epoch: 4097, handle: unwrapHandle(handle) }],
|
|
90
|
-
});
|
|
91
|
-
const latest = store.readChangesSince(4096);
|
|
92
|
-
expect(latest.records).toEqual([{ epoch: 4097, handle: unwrapHandle(handle) }]);
|
|
93
|
-
});
|
|
94
|
-
|
|
95
64
|
it('resolve returns SharedRefStaleError after rc drops to 0 (gen incremented on release)', () => {
|
|
96
65
|
const store = new SharedRefStore();
|
|
97
66
|
const handle = store.alloc('MeshAsset', { id: 7 });
|
|
@@ -184,9 +153,8 @@ describe('w29 SharedRefStore: retain + structured release evidence', () => {
|
|
|
184
153
|
expect(store.release(handle).ok).toBe(true);
|
|
185
154
|
}
|
|
186
155
|
expect(store.refcount(handle)).toBe(0);
|
|
187
|
-
expect(store.
|
|
188
|
-
|
|
189
|
-
]);
|
|
156
|
+
expect(store.resolve(handle).ok).toBe(false);
|
|
157
|
+
expect(store.refcount(handle)).toBe(0);
|
|
190
158
|
});
|
|
191
159
|
|
|
192
160
|
it('final release returns the same payload/refcount/generation evidence', () => {
|
|
@@ -0,0 +1,159 @@
|
|
|
1
|
+
import { expect, test } from 'vitest';
|
|
2
|
+
import { defineComponent } from '../component';
|
|
3
|
+
import { type EntityHandle, entityIndex } from '../entity-handle';
|
|
4
|
+
import { createStateProjection } from '../projection/state-projection';
|
|
5
|
+
import { World } from '../world';
|
|
6
|
+
|
|
7
|
+
const Position = defineComponent('ProjectionPosition', { x: 'f32' });
|
|
8
|
+
const Extra = defineComponent('ProjectionExtra', {});
|
|
9
|
+
const Selected = defineComponent('ProjectionSelected', {}, { storage: 'sparse' });
|
|
10
|
+
|
|
11
|
+
test('sparse scalar changes inspect one block; failed candidates and consumers remain independent', () => {
|
|
12
|
+
const world = new World();
|
|
13
|
+
const entities = Array.from({ length: 1024 }, (_, x) =>
|
|
14
|
+
world.spawn({ component: Position, data: { x } }).unwrap(),
|
|
15
|
+
);
|
|
16
|
+
const first = createStateProjection(world, [Position]);
|
|
17
|
+
const second = createStateProjection(world, [Position]);
|
|
18
|
+
first.read().accept();
|
|
19
|
+
second.read().accept();
|
|
20
|
+
expect(first.read().scannedRows).toBe(0);
|
|
21
|
+
const changedEntity = entities[511];
|
|
22
|
+
if (changedEntity === undefined) throw new Error('missing fixture entity');
|
|
23
|
+
world.set(changedEntity, Position, { x: 9 }).unwrap();
|
|
24
|
+
const failed = first.read();
|
|
25
|
+
expect(failed.indices).toEqual([entityIndex(changedEntity)]);
|
|
26
|
+
expect(failed.scannedRows).toBe(256);
|
|
27
|
+
const retry = first.read();
|
|
28
|
+
expect(retry.indices).toEqual([entityIndex(changedEntity)]);
|
|
29
|
+
retry.accept();
|
|
30
|
+
expect(first.read().indices).toEqual([]);
|
|
31
|
+
expect(second.read().indices).toEqual([entityIndex(changedEntity)]);
|
|
32
|
+
expect(() => failed.accept()).toThrow();
|
|
33
|
+
});
|
|
34
|
+
|
|
35
|
+
test('migration, swap removal, generation reuse, sparse membership and deletion use final state', () => {
|
|
36
|
+
const world = new World();
|
|
37
|
+
const a = world.spawn({ component: Position, data: { x: 1 } }).unwrap();
|
|
38
|
+
const b = world.spawn({ component: Position, data: { x: 2 } }).unwrap();
|
|
39
|
+
const projection = createStateProjection(world, [Position, Selected]);
|
|
40
|
+
projection.read().accept();
|
|
41
|
+
world.addComponent(a, { component: Extra, data: {} }).unwrap();
|
|
42
|
+
world.addComponent(a, { component: Selected, data: {} }).unwrap();
|
|
43
|
+
world.despawn(b).unwrap();
|
|
44
|
+
const replacement = world.spawn({ component: Position, data: { x: 3 } }).unwrap();
|
|
45
|
+
const batch = projection.read();
|
|
46
|
+
expect(new Set(batch.indices)).toEqual(new Set([entityIndex(a), entityIndex(b)]));
|
|
47
|
+
expect(projection.entity(entityIndex(b))).toBe(replacement);
|
|
48
|
+
batch.accept();
|
|
49
|
+
world.removeComponent(a, Selected).unwrap();
|
|
50
|
+
expect(projection.read().indices).toContain(entityIndex(a));
|
|
51
|
+
projection.read().accept();
|
|
52
|
+
world.despawn(a).unwrap();
|
|
53
|
+
world.despawn(replacement).unwrap();
|
|
54
|
+
const removed = projection.read();
|
|
55
|
+
expect(new Set(removed.indices)).toEqual(new Set([entityIndex(a), entityIndex(b)]));
|
|
56
|
+
removed.accept();
|
|
57
|
+
expect(projection.read().indices).toEqual([]);
|
|
58
|
+
});
|
|
59
|
+
|
|
60
|
+
test('range writes publish their block summaries and invalidation preserves deletion evidence', () => {
|
|
61
|
+
const world = new World();
|
|
62
|
+
const entities = Array.from({ length: 600 }, () =>
|
|
63
|
+
world.spawn({ component: Position, data: {} }).unwrap(),
|
|
64
|
+
);
|
|
65
|
+
const projection = createStateProjection(world, [Position]);
|
|
66
|
+
projection.read().accept();
|
|
67
|
+
for (const span of world
|
|
68
|
+
.query({ write: [Position] })
|
|
69
|
+
.unwrap()
|
|
70
|
+
.spans()
|
|
71
|
+
.unwrap())
|
|
72
|
+
span.mut(Position).x.fill(4);
|
|
73
|
+
expect(projection.read().indices).toHaveLength(600);
|
|
74
|
+
projection.read().accept();
|
|
75
|
+
const removedEntity = entities[0];
|
|
76
|
+
if (removedEntity === undefined) throw new Error('missing fixture entity');
|
|
77
|
+
world.despawn(removedEntity).unwrap();
|
|
78
|
+
projection.invalidate();
|
|
79
|
+
expect(projection.read().indices).toContain(entityIndex(removedEntity));
|
|
80
|
+
});
|
|
81
|
+
|
|
82
|
+
test.each([
|
|
83
|
+
1, 17, 731, 65537,
|
|
84
|
+
])('matches an independent current-state oracle across skipped publications (seed %i)', (seed) => {
|
|
85
|
+
let random = seed;
|
|
86
|
+
const next = (limit: number) => {
|
|
87
|
+
random = (Math.imul(random, 1664525) + 1013904223) >>> 0;
|
|
88
|
+
return random % limit;
|
|
89
|
+
};
|
|
90
|
+
const world = new World();
|
|
91
|
+
const projection = createStateProjection(world, [Position, Selected]);
|
|
92
|
+
const live: EntityHandle[] = [];
|
|
93
|
+
const accepted = new Map<number, { entity: number; x: number; selected: boolean }>();
|
|
94
|
+
for (let step = 0; step < 800; step++) {
|
|
95
|
+
const entity = live[next(Math.max(1, live.length))];
|
|
96
|
+
const operation = next(6);
|
|
97
|
+
if (entity === undefined || operation === 0)
|
|
98
|
+
live.push(world.spawn({ component: Position, data: { x: next(100) } }).unwrap());
|
|
99
|
+
else if (operation === 1) world.set(entity, Position, { x: next(100) }).unwrap();
|
|
100
|
+
else if (operation === 2) {
|
|
101
|
+
world.despawn(entity).unwrap();
|
|
102
|
+
live.splice(live.indexOf(entity), 1);
|
|
103
|
+
} else {
|
|
104
|
+
const component = operation === 3 ? Extra : Selected;
|
|
105
|
+
if (world.hasComponent(entity, component)) world.removeComponent(entity, component).unwrap();
|
|
106
|
+
else world.addComponent(entity, { component, data: {} }).unwrap();
|
|
107
|
+
}
|
|
108
|
+
if (step % 7 !== 0) continue;
|
|
109
|
+
if (step % 31 === 0) projection.invalidate();
|
|
110
|
+
const candidate = projection.read();
|
|
111
|
+
if (step % 11 === 0) continue;
|
|
112
|
+
for (const index of candidate.indices) {
|
|
113
|
+
const current = projection.entity(index);
|
|
114
|
+
const position = current === undefined ? undefined : world.get(current, Position);
|
|
115
|
+
if (current === undefined || !position?.ok) accepted.delete(index);
|
|
116
|
+
else
|
|
117
|
+
accepted.set(index, {
|
|
118
|
+
entity: current,
|
|
119
|
+
x: position.value.x,
|
|
120
|
+
selected: world.hasComponent(current, Selected),
|
|
121
|
+
});
|
|
122
|
+
}
|
|
123
|
+
candidate.accept();
|
|
124
|
+
const oracle = new Map<number, { entity: number; x: number; selected: boolean }>();
|
|
125
|
+
for (const row of world.query({ read: [Position] }).unwrap()) {
|
|
126
|
+
oracle.set(entityIndex(row.entity), {
|
|
127
|
+
entity: row.entity,
|
|
128
|
+
x: row.get(Position).x,
|
|
129
|
+
selected: world.hasComponent(row.entity, Selected),
|
|
130
|
+
});
|
|
131
|
+
}
|
|
132
|
+
expect(accepted).toEqual(oracle);
|
|
133
|
+
}
|
|
134
|
+
});
|
|
135
|
+
|
|
136
|
+
test('invalidating an outstanding candidate prevents acceptance and retains the baseline', () => {
|
|
137
|
+
const world = new World();
|
|
138
|
+
const entity = world.spawn({ component: Position, data: { x: 1 } }).unwrap();
|
|
139
|
+
const projection = createStateProjection(world, [Position]);
|
|
140
|
+
projection.read().accept();
|
|
141
|
+
const stale = projection.read();
|
|
142
|
+
projection.invalidate();
|
|
143
|
+
expect(() => stale.accept()).toThrow();
|
|
144
|
+
expect(projection.read().indices).toEqual([entityIndex(entity)]);
|
|
145
|
+
});
|
|
146
|
+
|
|
147
|
+
test('source writes during candidate construction cannot be accepted', () => {
|
|
148
|
+
const world = new World();
|
|
149
|
+
const entity = world.spawn({ component: Position, data: { x: 1 } }).unwrap();
|
|
150
|
+
const projection = createStateProjection(world, [Position]);
|
|
151
|
+
const stale = projection.read();
|
|
152
|
+
world.set(entity, Position, { x: 2 }).unwrap();
|
|
153
|
+
expect(() => stale.validate()).toThrow();
|
|
154
|
+
expect(() => stale.accept()).toThrow();
|
|
155
|
+
const current = projection.read();
|
|
156
|
+
expect(current.indices).toEqual([entityIndex(entity)]);
|
|
157
|
+
current.accept();
|
|
158
|
+
expect(projection.read().indices).toEqual([]);
|
|
159
|
+
});
|