@sadhaka/loom-engine 0.20.1 → 0.22.0
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/dist/index.d.ts +4 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -1
- package/dist/index.js.map +1 -1
- package/dist/resources.d.ts +13 -0
- package/dist/resources.d.ts.map +1 -1
- package/dist/resources.js +84 -0
- package/dist/resources.js.map +1 -1
- package/dist/runtime/component-signature.d.ts +20 -0
- package/dist/runtime/component-signature.d.ts.map +1 -0
- package/dist/runtime/component-signature.js +173 -0
- package/dist/runtime/component-signature.js.map +1 -0
- package/dist/runtime/query-cache.d.ts +18 -0
- package/dist/runtime/query-cache.d.ts.map +1 -0
- package/dist/runtime/query-cache.js +64 -0
- package/dist/runtime/query-cache.js.map +1 -0
- package/dist/world.d.ts +1 -0
- package/dist/world.d.ts.map +1 -1
- package/dist/world.js +38 -0
- package/dist/world.js.map +1 -1
- package/package.json +2 -2
package/dist/index.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export declare const LOOM_ENGINE_VERSION = "0.
|
|
1
|
+
export declare const LOOM_ENGINE_VERSION = "0.22.0";
|
|
2
2
|
export type { Vec2, Vec3, Rect } from './util/math.js';
|
|
3
3
|
export { vec2, vec3, rect, clamp, lerp, smoothstep, approxEq, rectContains, rectIntersects, visibleInView, } from './util/math.js';
|
|
4
4
|
export type { ColorRGBA } from './util/color.js';
|
|
@@ -10,7 +10,9 @@ export { SpritePool, SPRITE_FLAG_ACTIVE, SPRITE_FLAG_TINTED, } from './component
|
|
|
10
10
|
export { World, POOL_TRANSFORM, POOL_SPRITE } from './world.js';
|
|
11
11
|
export type { System, SystemPhase } from './system.js';
|
|
12
12
|
export { SYSTEM_PHASE_INPUT, SYSTEM_PHASE_LOGIC, SYSTEM_PHASE_PHYSICS, SYSTEM_PHASE_ANIMATION, SYSTEM_PHASE_RENDER, SYSTEM_PHASE_POST_RENDER, SYSTEM_PHASES_IN_ORDER, } from './system.js';
|
|
13
|
-
export type { TimeResource, VeilBudgetResource } from './resources.js';
|
|
13
|
+
export type { TimeResource, VeilBudgetResource, IManagedResource, LifecycleWorld } from './resources.js';
|
|
14
|
+
export { ComponentSignature, componentMask, COMPONENT_SIGNATURE_MAX_BIT, RESOURCE_COMPONENT_SIGNATURE, } from './runtime/component-signature.js';
|
|
15
|
+
export { QueryCache, RESOURCE_QUERY_CACHE, } from './runtime/query-cache.js';
|
|
14
16
|
export { ResourceRegistry, createTimeResource, createVeilBudgetResource, RESOURCE_TIME, RESOURCE_CAMERA, RESOURCE_DEVICE, RESOURCE_VEIL_BUDGET, } from './resources.js';
|
|
15
17
|
export { SpriteRenderSystem } from './systems/sprite-render-system.js';
|
|
16
18
|
export { Engine, registerBackend, isBackendRegistered } from './engine.js';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAWA,eAAO,MAAM,mBAAmB,WAAW,CAAC;AAG5C,YAAY,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AACvD,OAAO,EACL,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,KAAK,EACL,IAAI,EACJ,UAAU,EACV,QAAQ,EACR,YAAY,EACZ,cAAc,EACd,aAAa,GACd,MAAM,gBAAgB,CAAC;AAExB,YAAY,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,EACL,IAAI,EACJ,SAAS,EACT,eAAe,EACf,eAAe,EACf,SAAS,EACT,WAAW,EACX,WAAW,EACX,iBAAiB,EACjB,cAAc,EACd,cAAc,EACd,cAAc,EACd,iBAAiB,GAClB,MAAM,iBAAiB,CAAC;AAGzB,YAAY,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EACL,eAAe,EACf,WAAW,EACX,WAAW,EACX,gBAAgB,EAChB,UAAU,GACX,MAAM,aAAa,CAAC;AAErB,OAAO,EACL,aAAa,EACb,oBAAoB,EACpB,sBAAsB,EACtB,qBAAqB,EACrB,yBAAyB,GAC1B,MAAM,2BAA2B,CAAC;AAEnC,OAAO,EACL,UAAU,EACV,kBAAkB,EAClB,kBAAkB,GACnB,MAAM,wBAAwB,CAAC;AAGhC,OAAO,EAAE,KAAK,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAChE,YAAY,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AACvD,OAAO,EACL,kBAAkB,EAClB,kBAAkB,EAClB,oBAAoB,EACpB,sBAAsB,EACtB,mBAAmB,EACnB,wBAAwB,EACxB,sBAAsB,GACvB,MAAM,aAAa,CAAC;AACrB,YAAY,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
// the previous suffix `-perf-9-1` lingered after package.json was
|
|
9
9
|
// bumped to 0.10.0, surfacing as a drift bug in
|
|
10
10
|
// engine.LOOM_ENGINE_VERSION-based diagnostics.
|
|
11
|
-
export const LOOM_ENGINE_VERSION = '0.
|
|
11
|
+
export const LOOM_ENGINE_VERSION = '0.22.0';
|
|
12
12
|
export { vec2, vec3, rect, clamp, lerp, smoothstep, approxEq, rectContains, rectIntersects, visibleInView, } from './util/math.js';
|
|
13
13
|
export { rgba, hexToRgba, rgbaToHexString, rgbaToCssString, colorLerp, COLOR_WHITE, COLOR_BLACK, COLOR_TRANSPARENT, COLOR_KNOT_STR, COLOR_KNOT_DEX, COLOR_KNOT_INT, COLOR_KNOT_CENTER, } from './util/color.js';
|
|
14
14
|
export { EntityAllocator, NULL_ENTITY, entityIndex, entityGeneration, makeEntity, } from './entity.js';
|
|
@@ -17,6 +17,9 @@ export { SpritePool, SPRITE_FLAG_ACTIVE, SPRITE_FLAG_TINTED, } from './component
|
|
|
17
17
|
// ECS core
|
|
18
18
|
export { World, POOL_TRANSFORM, POOL_SPRITE } from './world.js';
|
|
19
19
|
export { SYSTEM_PHASE_INPUT, SYSTEM_PHASE_LOGIC, SYSTEM_PHASE_PHYSICS, SYSTEM_PHASE_ANIMATION, SYSTEM_PHASE_RENDER, SYSTEM_PHASE_POST_RENDER, SYSTEM_PHASES_IN_ORDER, } from './system.js';
|
|
20
|
+
// 0.22.0 - ECS perf primitives.
|
|
21
|
+
export { ComponentSignature, componentMask, COMPONENT_SIGNATURE_MAX_BIT, RESOURCE_COMPONENT_SIGNATURE, } from './runtime/component-signature.js';
|
|
22
|
+
export { QueryCache, RESOURCE_QUERY_CACHE, } from './runtime/query-cache.js';
|
|
20
23
|
export { ResourceRegistry, createTimeResource, createVeilBudgetResource, RESOURCE_TIME, RESOURCE_CAMERA, RESOURCE_DEVICE, RESOURCE_VEIL_BUDGET, } from './resources.js';
|
|
21
24
|
// Default systems
|
|
22
25
|
export { SpriteRenderSystem } from './systems/sprite-render-system.js';
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/resources.d.ts
CHANGED
|
@@ -1,11 +1,24 @@
|
|
|
1
|
+
export interface LifecycleWorld {
|
|
2
|
+
resources: ResourceRegistry;
|
|
3
|
+
}
|
|
4
|
+
export interface IManagedResource {
|
|
5
|
+
onAttach?(world: LifecycleWorld): void;
|
|
6
|
+
onDetach?(world: LifecycleWorld): void;
|
|
7
|
+
dispose?(): void;
|
|
8
|
+
}
|
|
1
9
|
export declare class ResourceRegistry {
|
|
2
10
|
private resources;
|
|
11
|
+
private world;
|
|
12
|
+
bindWorld(world: LifecycleWorld): void;
|
|
3
13
|
set<T>(key: string, value: T): void;
|
|
4
14
|
get<T>(key: string): T | undefined;
|
|
5
15
|
require<T>(key: string): T;
|
|
6
16
|
has(key: string): boolean;
|
|
7
17
|
remove(key: string): boolean;
|
|
8
18
|
keys(): IterableIterator<string>;
|
|
19
|
+
attach<T>(key: string, value: T): void;
|
|
20
|
+
detach(key: string): boolean;
|
|
21
|
+
disposeAll(): void;
|
|
9
22
|
}
|
|
10
23
|
export interface TimeResource {
|
|
11
24
|
elapsed: number;
|
package/dist/resources.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resources.d.ts","sourceRoot":"","sources":["../src/resources.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"resources.d.ts","sourceRoot":"","sources":["../src/resources.ts"],"names":[],"mappings":"AAoBA,MAAM,WAAW,cAAc;IAC7B,SAAS,EAAE,gBAAgB,CAAC;CAC7B;AAgBD,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,CAAC,KAAK,EAAE,cAAc,GAAG,IAAI,CAAC;IACvC,QAAQ,CAAC,CAAC,KAAK,EAAE,cAAc,GAAG,IAAI,CAAC;IACvC,OAAO,CAAC,IAAI,IAAI,CAAC;CAClB;AAED,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,SAAS,CAAmC;IACpD,OAAO,CAAC,KAAK,CAA+B;IAM5C,SAAS,CAAC,KAAK,EAAE,cAAc,GAAG,IAAI;IAItC,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,GAAG,IAAI;IAInC,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,CAAC,GAAG,SAAS;IAMlC,OAAO,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,CAAC;IAQ1B,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAIzB,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAI5B,IAAI,IAAI,gBAAgB,CAAC,MAAM,CAAC;IAUhC,MAAM,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,GAAG,IAAI;IAoBtC,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IA2B5B,UAAU,IAAI,IAAI;CAQnB;AAID,MAAM,WAAW,YAAY;IAE3B,OAAO,EAAE,MAAM,CAAC;IAGhB,KAAK,EAAE,MAAM,CAAC;IAEd,KAAK,EAAE,MAAM,CAAC;CACf;AAED,wBAAgB,kBAAkB,IAAI,YAAY,CAEjD;AAED,eAAO,MAAM,aAAa,SAAS,CAAC;AACpC,eAAO,MAAM,eAAe,WAAW,CAAC;AACxC,eAAO,MAAM,eAAe,WAAW,CAAC;AAexC,MAAM,WAAW,kBAAkB;IAKjC,cAAc,EAAE,MAAM,CAAC;IAEvB,YAAY,EAAE,MAAM,CAAC;IAErB,WAAW,EAAE,MAAM,CAAC;IAKpB,WAAW,EAAE,MAAM,CAAC;IAGpB,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAED,wBAAgB,wBAAwB,IAAI,kBAAkB,CAQ7D;AAED,eAAO,MAAM,oBAAoB,gBAAgB,CAAC"}
|
package/dist/resources.js
CHANGED
|
@@ -7,8 +7,22 @@
|
|
|
7
7
|
// Inspired by Bevy's Resource pattern (see PRIOR-ART.md). Bevy uses
|
|
8
8
|
// type-as-key via Rust's TypeId; in TS we use string keys with a
|
|
9
9
|
// generic accessor.
|
|
10
|
+
//
|
|
11
|
+
// 0.21.0 - lifecycle hooks. Resources MAY implement IManagedResource
|
|
12
|
+
// to participate in attach / detach / dispose. Existing resources are
|
|
13
|
+
// untouched (backwards-compatible); new resources that own external
|
|
14
|
+
// state (workers, listeners, network bridges, audio contexts, pools)
|
|
15
|
+
// can declare hooks the registry calls at the right moments.
|
|
10
16
|
export class ResourceRegistry {
|
|
11
17
|
resources = new Map();
|
|
18
|
+
world = null;
|
|
19
|
+
// 0.21.0 - bind a world reference so attach/detach/disposeAll can
|
|
20
|
+
// pass it to IManagedResource hooks. The World constructor calls
|
|
21
|
+
// this immediately after creating the registry. Mid-flight rebinds
|
|
22
|
+
// are not supported (no use case yet).
|
|
23
|
+
bindWorld(world) {
|
|
24
|
+
this.world = world;
|
|
25
|
+
}
|
|
12
26
|
set(key, value) {
|
|
13
27
|
this.resources.set(key, value);
|
|
14
28
|
}
|
|
@@ -33,6 +47,76 @@ export class ResourceRegistry {
|
|
|
33
47
|
keys() {
|
|
34
48
|
return this.resources.keys();
|
|
35
49
|
}
|
|
50
|
+
// -- Phase 0.21.0 lifecycle ----------------------------------------
|
|
51
|
+
// Lifecycle-aware setter. If `value` implements IManagedResource,
|
|
52
|
+
// calls onAttach(world). Replaces an existing key idempotently;
|
|
53
|
+
// the displaced value's onDetach + dispose run before the new
|
|
54
|
+
// value's onAttach so callers can rely on hook ordering.
|
|
55
|
+
attach(key, value) {
|
|
56
|
+
if (this.resources.has(key)) {
|
|
57
|
+
this.detach(key);
|
|
58
|
+
}
|
|
59
|
+
this.resources.set(key, value);
|
|
60
|
+
if (!this.world)
|
|
61
|
+
return;
|
|
62
|
+
const r = value;
|
|
63
|
+
if (r && typeof r.onAttach === 'function') {
|
|
64
|
+
try {
|
|
65
|
+
r.onAttach(this.world);
|
|
66
|
+
}
|
|
67
|
+
catch (e) {
|
|
68
|
+
try {
|
|
69
|
+
console.error('[ResourceRegistry] onAttach for "' + key + '" threw:', e);
|
|
70
|
+
}
|
|
71
|
+
catch { /* ignore */ }
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
// Lifecycle-aware remover. Calls onDetach + dispose (in that order)
|
|
76
|
+
// before deleting. Returns true iff a row was actually removed.
|
|
77
|
+
// Errors in hooks are logged but do not block the removal.
|
|
78
|
+
detach(key) {
|
|
79
|
+
const value = this.resources.get(key);
|
|
80
|
+
if (value === undefined)
|
|
81
|
+
return false;
|
|
82
|
+
const r = value;
|
|
83
|
+
if (this.world && typeof r?.onDetach === 'function') {
|
|
84
|
+
try {
|
|
85
|
+
r.onDetach(this.world);
|
|
86
|
+
}
|
|
87
|
+
catch (e) {
|
|
88
|
+
try {
|
|
89
|
+
console.error('[ResourceRegistry] onDetach for "' + key + '" threw:', e);
|
|
90
|
+
}
|
|
91
|
+
catch { /* ignore */ }
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
if (typeof r?.dispose === 'function') {
|
|
95
|
+
try {
|
|
96
|
+
r.dispose();
|
|
97
|
+
}
|
|
98
|
+
catch (e) {
|
|
99
|
+
try {
|
|
100
|
+
console.error('[ResourceRegistry] dispose for "' + key + '" threw:', e);
|
|
101
|
+
}
|
|
102
|
+
catch { /* ignore */ }
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
return this.resources.delete(key);
|
|
106
|
+
}
|
|
107
|
+
// Detach and dispose every registered resource. Used by
|
|
108
|
+
// World.dispose() during graceful shutdown. Iteration order is
|
|
109
|
+
// insertion order; resources are responsible for handling the
|
|
110
|
+
// case where a sibling resource has already disposed.
|
|
111
|
+
disposeAll() {
|
|
112
|
+
// Snapshot keys so detach() can safely mutate the map mid-loop.
|
|
113
|
+
const snapshot = [];
|
|
114
|
+
for (const k of this.resources.keys())
|
|
115
|
+
snapshot.push(k);
|
|
116
|
+
for (const k of snapshot) {
|
|
117
|
+
this.detach(k);
|
|
118
|
+
}
|
|
119
|
+
}
|
|
36
120
|
}
|
|
37
121
|
export function createTimeResource() {
|
|
38
122
|
return { elapsed: 0, delta: 0, frame: 0 };
|
package/dist/resources.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resources.js","sourceRoot":"","sources":["../src/resources.ts"],"names":[],"mappings":"AAAA,6CAA6C;AAC7C,EAAE;AACF,qEAAqE;AACrE,qEAAqE;AACrE,eAAe;AACf,EAAE;AACF,oEAAoE;AACpE,iEAAiE;AACjE,oBAAoB;
|
|
1
|
+
{"version":3,"file":"resources.js","sourceRoot":"","sources":["../src/resources.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
export declare const COMPONENT_SIGNATURE_MAX_BIT: number;
|
|
2
|
+
export declare function componentMask(...bits: number[]): number;
|
|
3
|
+
export declare class ComponentSignature {
|
|
4
|
+
private masks;
|
|
5
|
+
private cap;
|
|
6
|
+
private versionValue;
|
|
7
|
+
constructor(initialCapacity?: number);
|
|
8
|
+
ensureCapacity(idx: number): void;
|
|
9
|
+
setBit(entityIdx: number, bit: number): void;
|
|
10
|
+
clearBit(entityIdx: number, bit: number): void;
|
|
11
|
+
clearEntity(entityIdx: number): void;
|
|
12
|
+
getMask(entityIdx: number): number;
|
|
13
|
+
hasAll(entityIdx: number, mask: number): boolean;
|
|
14
|
+
hasAny(entityIdx: number, mask: number): boolean;
|
|
15
|
+
version(): number;
|
|
16
|
+
collectMatching(mask: number): Int32Array;
|
|
17
|
+
capacity(): number;
|
|
18
|
+
}
|
|
19
|
+
export declare const RESOURCE_COMPONENT_SIGNATURE = "loom.component_signature";
|
|
20
|
+
//# sourceMappingURL=component-signature.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"component-signature.d.ts","sourceRoot":"","sources":["../../src/runtime/component-signature.ts"],"names":[],"mappings":"AA2BA,eAAO,MAAM,2BAA2B,EAAE,MAAW,CAAC;AAGtD,wBAAgB,aAAa,CAAC,GAAG,IAAI,EAAE,MAAM,EAAE,GAAG,MAAM,CAWvD;AAED,qBAAa,kBAAkB;IAG7B,OAAO,CAAC,KAAK,CAAc;IAC3B,OAAO,CAAC,GAAG,CAAS;IAKpB,OAAO,CAAC,YAAY,CAAa;gBAErB,eAAe,GAAE,MAAW;IAOxC,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAWjC,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI;IAgB5C,QAAQ,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI;IAgB9C,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAUpC,OAAO,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM;IAOlC,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO;IAOhD,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO;IAQhD,OAAO,IAAI,MAAM;IASjB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU;IAmBzC,QAAQ,IAAI,MAAM;CAGnB;AAYD,eAAO,MAAM,4BAA4B,6BAA6B,CAAC"}
|
|
@@ -0,0 +1,173 @@
|
|
|
1
|
+
// ComponentSignature - per-entity component bitmask for fast query
|
|
2
|
+
// matching.
|
|
3
|
+
//
|
|
4
|
+
// 0.22.0 rationale: existing component pools are structure-of-arrays
|
|
5
|
+
// indexed by entity. Each pool tracks its own membership via
|
|
6
|
+
// `highWaterMark` + per-slot zeros. A system that needs entities with
|
|
7
|
+
// BOTH transform AND sprite has to iterate one pool and check the
|
|
8
|
+
// other per-entity. With many systems making the same combined query
|
|
9
|
+
// per frame, the intersection cost compounds.
|
|
10
|
+
//
|
|
11
|
+
// ComponentSignature gives every entity a single Uint32 bitmask where
|
|
12
|
+
// each bit names a component pool. A system asks "give me entities
|
|
13
|
+
// that have these N components" once; the QueryCache memoizes the
|
|
14
|
+
// answer until any entity's signature changes.
|
|
15
|
+
//
|
|
16
|
+
// Cap at 32 components per entity (one Uint32 per entity). Beyond
|
|
17
|
+
// that, a future v2 can move to per-entity Uint32Array of N words.
|
|
18
|
+
// The current engine has roughly 12 component pools; 32 leaves
|
|
19
|
+
// generous headroom.
|
|
20
|
+
//
|
|
21
|
+
// Code style: var-only in browser-bound source. ComponentSignature is
|
|
22
|
+
// engine-internal so let/const are fine here, but the public API
|
|
23
|
+
// follows the engine's existing TS-class style.
|
|
24
|
+
// Maximum component bit index. Component bits are 0..31 inclusive.
|
|
25
|
+
// A bit value of 32+ is a programmer error and surfaces via setBit
|
|
26
|
+
// throwing in development.
|
|
27
|
+
export const COMPONENT_SIGNATURE_MAX_BIT = 31;
|
|
28
|
+
// Helper: turn a list of component bits into a single bitmask.
|
|
29
|
+
export function componentMask(...bits) {
|
|
30
|
+
var mask = 0;
|
|
31
|
+
for (var i = 0; i < bits.length; i++) {
|
|
32
|
+
var raw = bits[i];
|
|
33
|
+
var b = (raw === undefined ? 0 : raw) | 0;
|
|
34
|
+
if (b < 0 || b > COMPONENT_SIGNATURE_MAX_BIT) {
|
|
35
|
+
throw new Error('componentMask: bit ' + b + ' out of range [0, 31]');
|
|
36
|
+
}
|
|
37
|
+
mask |= 1 << b;
|
|
38
|
+
}
|
|
39
|
+
return mask >>> 0;
|
|
40
|
+
}
|
|
41
|
+
export class ComponentSignature {
|
|
42
|
+
// Per-entity bitmask. masks[entityIndex] is the entity's signature.
|
|
43
|
+
// Bit 0 = first component pool, bit 1 = second, etc.
|
|
44
|
+
masks;
|
|
45
|
+
cap;
|
|
46
|
+
// Version counter. Bumped on every mutation so query caches can
|
|
47
|
+
// invalidate cheaply. Wraps around naturally at 2^32; consumers
|
|
48
|
+
// compare for equality, not ordering, so wraparound is safe.
|
|
49
|
+
versionValue = 0;
|
|
50
|
+
constructor(initialCapacity = 64) {
|
|
51
|
+
this.cap = nextPow2(initialCapacity);
|
|
52
|
+
this.masks = new Uint32Array(this.cap);
|
|
53
|
+
}
|
|
54
|
+
// Ensure the underlying typed array can address `idx`. Grows by
|
|
55
|
+
// pow-2 amortising to O(1) append cost.
|
|
56
|
+
ensureCapacity(idx) {
|
|
57
|
+
if (idx < this.cap)
|
|
58
|
+
return;
|
|
59
|
+
var next = nextPow2(idx + 1);
|
|
60
|
+
var newMasks = new Uint32Array(next);
|
|
61
|
+
newMasks.set(this.masks);
|
|
62
|
+
this.masks = newMasks;
|
|
63
|
+
this.cap = next;
|
|
64
|
+
}
|
|
65
|
+
// Set a single bit on the entity's signature. No-op if already set.
|
|
66
|
+
// Bumps version iff the bit was previously clear.
|
|
67
|
+
setBit(entityIdx, bit) {
|
|
68
|
+
if (bit < 0 || bit > COMPONENT_SIGNATURE_MAX_BIT) {
|
|
69
|
+
throw new Error('ComponentSignature.setBit: bit ' + bit + ' out of range [0, 31]');
|
|
70
|
+
}
|
|
71
|
+
this.ensureCapacity(entityIdx);
|
|
72
|
+
var prev = this.masks[entityIdx] ?? 0;
|
|
73
|
+
var bitMask = (1 << bit) >>> 0;
|
|
74
|
+
var next = (prev | bitMask) >>> 0;
|
|
75
|
+
if (next !== prev) {
|
|
76
|
+
this.masks[entityIdx] = next;
|
|
77
|
+
this.versionValue = (this.versionValue + 1) >>> 0;
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
// Clear a single bit on the entity's signature. No-op if already
|
|
81
|
+
// clear. Bumps version iff the bit was previously set.
|
|
82
|
+
clearBit(entityIdx, bit) {
|
|
83
|
+
if (bit < 0 || bit > COMPONENT_SIGNATURE_MAX_BIT) {
|
|
84
|
+
throw new Error('ComponentSignature.clearBit: bit ' + bit + ' out of range [0, 31]');
|
|
85
|
+
}
|
|
86
|
+
if (entityIdx >= this.cap)
|
|
87
|
+
return;
|
|
88
|
+
var prev = this.masks[entityIdx] ?? 0;
|
|
89
|
+
var bitMask = (1 << bit) >>> 0;
|
|
90
|
+
var inv = (~bitMask) >>> 0;
|
|
91
|
+
var next = (prev & inv) >>> 0;
|
|
92
|
+
if (next !== prev) {
|
|
93
|
+
this.masks[entityIdx] = next;
|
|
94
|
+
this.versionValue = (this.versionValue + 1) >>> 0;
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
// Clear every bit on the entity. Used on entity destroy.
|
|
98
|
+
clearEntity(entityIdx) {
|
|
99
|
+
if (entityIdx >= this.cap)
|
|
100
|
+
return;
|
|
101
|
+
if (this.masks[entityIdx] !== 0) {
|
|
102
|
+
this.masks[entityIdx] = 0;
|
|
103
|
+
this.versionValue = (this.versionValue + 1) >>> 0;
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
// Read the entity's full signature. Returns 0 if entity is out of
|
|
107
|
+
// current capacity (unset entities are implicitly empty).
|
|
108
|
+
getMask(entityIdx) {
|
|
109
|
+
if (entityIdx >= this.cap)
|
|
110
|
+
return 0;
|
|
111
|
+
var v = this.masks[entityIdx] ?? 0;
|
|
112
|
+
return v >>> 0;
|
|
113
|
+
}
|
|
114
|
+
// True iff every bit in `mask` is set on the entity.
|
|
115
|
+
hasAll(entityIdx, mask) {
|
|
116
|
+
if (entityIdx >= this.cap)
|
|
117
|
+
return mask === 0;
|
|
118
|
+
var v = this.masks[entityIdx] ?? 0;
|
|
119
|
+
return (v & mask) === (mask >>> 0);
|
|
120
|
+
}
|
|
121
|
+
// True iff at least one bit in `mask` is set on the entity.
|
|
122
|
+
hasAny(entityIdx, mask) {
|
|
123
|
+
if (entityIdx >= this.cap)
|
|
124
|
+
return false;
|
|
125
|
+
var v = this.masks[entityIdx] ?? 0;
|
|
126
|
+
return (v & mask) !== 0;
|
|
127
|
+
}
|
|
128
|
+
// Current version. Bumps on every actual mutation. Used by
|
|
129
|
+
// QueryCache to invalidate.
|
|
130
|
+
version() {
|
|
131
|
+
return this.versionValue;
|
|
132
|
+
}
|
|
133
|
+
// Iterate every entity index whose signature has all bits in
|
|
134
|
+
// `mask` set. Visits 0..highest-set-index inclusive; entities never
|
|
135
|
+
// touched (mask=0) are naturally skipped because mask=0 fails the
|
|
136
|
+
// hasAll test for a non-zero query mask. For a mask=0 query, the
|
|
137
|
+
// iteration is empty (matches no entity meaningfully).
|
|
138
|
+
collectMatching(mask) {
|
|
139
|
+
if (mask === 0)
|
|
140
|
+
return new Int32Array(0);
|
|
141
|
+
// Scan; copy matching indices into a growable buffer.
|
|
142
|
+
var matches = [];
|
|
143
|
+
var m = mask >>> 0;
|
|
144
|
+
for (var i = 0; i < this.cap; i++) {
|
|
145
|
+
var v = this.masks[i] ?? 0;
|
|
146
|
+
if ((v & m) === m) {
|
|
147
|
+
matches.push(i);
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
var out = new Int32Array(matches.length);
|
|
151
|
+
for (var j = 0; j < matches.length; j++) {
|
|
152
|
+
out[j] = matches[j] ?? 0;
|
|
153
|
+
}
|
|
154
|
+
return out;
|
|
155
|
+
}
|
|
156
|
+
// For tests / introspection.
|
|
157
|
+
capacity() {
|
|
158
|
+
return this.cap;
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
// Local pow-2 helper - avoids depending on util/typed-arrays so this
|
|
162
|
+
// module can be imported by anything without circularity worries.
|
|
163
|
+
function nextPow2(n) {
|
|
164
|
+
if (n <= 1)
|
|
165
|
+
return 1;
|
|
166
|
+
var p = 1;
|
|
167
|
+
while (p < n)
|
|
168
|
+
p <<= 1;
|
|
169
|
+
return p >>> 0;
|
|
170
|
+
}
|
|
171
|
+
// Resource key for the world-attached signature.
|
|
172
|
+
export const RESOURCE_COMPONENT_SIGNATURE = 'loom.component_signature';
|
|
173
|
+
//# sourceMappingURL=component-signature.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"component-signature.js","sourceRoot":"","sources":["../../src/runtime/component-signature.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { ComponentSignature } from './component-signature.js';
|
|
2
|
+
export declare class QueryCache {
|
|
3
|
+
private readonly signature;
|
|
4
|
+
private readonly cache;
|
|
5
|
+
private readonly maxEntries;
|
|
6
|
+
private hits;
|
|
7
|
+
private misses;
|
|
8
|
+
constructor(signature: ComponentSignature, maxEntries?: number);
|
|
9
|
+
query(mask: number): Int32Array;
|
|
10
|
+
clear(): void;
|
|
11
|
+
stats(): {
|
|
12
|
+
hits: number;
|
|
13
|
+
misses: number;
|
|
14
|
+
entries: number;
|
|
15
|
+
};
|
|
16
|
+
}
|
|
17
|
+
export declare const RESOURCE_QUERY_CACHE = "loom.query_cache";
|
|
18
|
+
//# sourceMappingURL=query-cache.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"query-cache.d.ts","sourceRoot":"","sources":["../../src/runtime/query-cache.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAO9D,qBAAa,UAAU;IACrB,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAqB;IAC/C,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAsC;IAC5D,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IAEpC,OAAO,CAAC,IAAI,CAAa;IACzB,OAAO,CAAC,MAAM,CAAa;gBAEf,SAAS,EAAE,kBAAkB,EAAE,UAAU,GAAE,MAAW;IAOlE,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU;IAuB/B,KAAK,IAAI,IAAI;IAOb,KAAK,IAAI;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE;CAO3D;AAGD,eAAO,MAAM,oBAAoB,qBAAqB,CAAC"}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
// QueryCache - memoize ComponentSignature queries.
|
|
2
|
+
//
|
|
3
|
+
// 0.22.0 enabling primitive. A system that calls
|
|
4
|
+
// `cache.query(MASK_TRANSFORM_SPRITE)` more than once per
|
|
5
|
+
// (signature.version, mask) pair gets the cached Int32Array back
|
|
6
|
+
// instead of re-scanning. The signature's version counter is the
|
|
7
|
+
// invalidation trigger - any setBit / clearBit / clearEntity bumps
|
|
8
|
+
// it, making every cached entry stale on the next read.
|
|
9
|
+
//
|
|
10
|
+
// Storage is a Map<mask, {version, indices}>. Cap on entries
|
|
11
|
+
// (default 64) prevents long-running games from accumulating an
|
|
12
|
+
// unbounded set of one-off queries; eviction is FIFO.
|
|
13
|
+
export class QueryCache {
|
|
14
|
+
signature;
|
|
15
|
+
cache = new Map();
|
|
16
|
+
maxEntries;
|
|
17
|
+
// Hits + misses for diagnostic / test assertions.
|
|
18
|
+
hits = 0;
|
|
19
|
+
misses = 0;
|
|
20
|
+
constructor(signature, maxEntries = 64) {
|
|
21
|
+
this.signature = signature;
|
|
22
|
+
this.maxEntries = Math.max(1, maxEntries | 0);
|
|
23
|
+
}
|
|
24
|
+
// Return entity indices matching `mask`. Cached until the
|
|
25
|
+
// underlying signature's version changes.
|
|
26
|
+
query(mask) {
|
|
27
|
+
var m = mask >>> 0;
|
|
28
|
+
var ver = this.signature.version();
|
|
29
|
+
var entry = this.cache.get(m);
|
|
30
|
+
if (entry && entry.version === ver) {
|
|
31
|
+
this.hits++;
|
|
32
|
+
return entry.indices;
|
|
33
|
+
}
|
|
34
|
+
this.misses++;
|
|
35
|
+
// FIFO eviction at max capacity. Map preserves insertion order.
|
|
36
|
+
if (this.cache.size >= this.maxEntries) {
|
|
37
|
+
var oldestKey = this.cache.keys().next().value;
|
|
38
|
+
if (typeof oldestKey === 'number') {
|
|
39
|
+
this.cache.delete(oldestKey);
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
var matches = this.signature.collectMatching(m);
|
|
43
|
+
this.cache.set(m, { version: ver, indices: matches });
|
|
44
|
+
return matches;
|
|
45
|
+
}
|
|
46
|
+
// Force-clear the cache (test affordance + for explicit lifecycle
|
|
47
|
+
// control if a consumer wants to rebuild from scratch).
|
|
48
|
+
clear() {
|
|
49
|
+
this.cache.clear();
|
|
50
|
+
this.hits = 0;
|
|
51
|
+
this.misses = 0;
|
|
52
|
+
}
|
|
53
|
+
// Diagnostic counters.
|
|
54
|
+
stats() {
|
|
55
|
+
return {
|
|
56
|
+
hits: this.hits,
|
|
57
|
+
misses: this.misses,
|
|
58
|
+
entries: this.cache.size,
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
// Resource key for the world-attached cache.
|
|
63
|
+
export const RESOURCE_QUERY_CACHE = 'loom.query_cache';
|
|
64
|
+
//# sourceMappingURL=query-cache.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"query-cache.js","sourceRoot":"","sources":["../../src/runtime/query-cache.ts"],"names":[],"mappings":"AAAA,mDAAmD;AACnD,EAAE;AACF,iDAAiD;AACjD,0DAA0D;AAC1D,iEAAiE;AACjE,iEAAiE;AACjE,mEAAmE;AACnE,wDAAwD;AACxD,EAAE;AACF,6DAA6D;AAC7D,gEAAgE;AAChE,sDAAsD;AAStD,MAAM,OAAO,UAAU;IACJ,SAAS,CAAqB;IAC9B,KAAK,GAA4B,IAAI,GAAG,EAAE,CAAC;IAC3C,UAAU,CAAS;IACpC,kDAAkD;IAC1C,IAAI,GAAW,CAAC,CAAC;IACjB,MAAM,GAAW,CAAC,CAAC;IAE3B,YAAY,SAA6B,EAAE,aAAqB,EAAE;QAChE,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,UAAU,GAAG,CAAC,CAAC,CAAC;IAChD,CAAC;IAED,0DAA0D;IAC1D,0CAA0C;IAC1C,KAAK,CAAC,IAAY;QAChB,IAAI,CAAC,GAAG,IAAI,KAAK,CAAC,CAAC;QACnB,IAAI,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;QACnC,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAC9B,IAAI,KAAK,IAAI,KAAK,CAAC,OAAO,KAAK,GAAG,EAAE,CAAC;YACnC,IAAI,CAAC,IAAI,EAAE,CAAC;YACZ,OAAO,KAAK,CAAC,OAAO,CAAC;QACvB,CAAC;QACD,IAAI,CAAC,MAAM,EAAE,CAAC;QACd,gEAAgE;QAChE,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACvC,IAAI,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC;YAC/C,IAAI,OAAO,SAAS,KAAK,QAAQ,EAAE,CAAC;gBAClC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;YAC/B,CAAC;QACH,CAAC;QACD,IAAI,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;QAChD,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;QACtD,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,kEAAkE;IAClE,wDAAwD;IACxD,KAAK;QACH,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;QACnB,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC;QACd,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;IAClB,CAAC;IAED,uBAAuB;IACvB,KAAK;QACH,OAAO;YACL,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI;SACzB,CAAC;IACJ,CAAC;CACF;AAED,6CAA6C;AAC7C,MAAM,CAAC,MAAM,oBAAoB,GAAG,kBAAkB,CAAC"}
|
package/dist/world.d.ts
CHANGED
|
@@ -17,6 +17,7 @@ export declare class World {
|
|
|
17
17
|
countSystemsInPhase(phase: SystemPhase): number;
|
|
18
18
|
createEntity(): EntityId;
|
|
19
19
|
destroyEntity(e: EntityId): boolean;
|
|
20
|
+
dispose(): void;
|
|
20
21
|
}
|
|
21
22
|
export declare const POOL_TRANSFORM = "transform";
|
|
22
23
|
export declare const POOL_SPRITE = "sprite";
|
package/dist/world.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"world.d.ts","sourceRoot":"","sources":["../src/world.ts"],"names":[],"mappings":"AAkBA,OAAO,EAAE,eAAe,EAAE,KAAK,QAAQ,EAAE,MAAM,aAAa,CAAC;AAC7D,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EACL,KAAK,MAAM,EACX,KAAK,WAAW,EAGjB,MAAM,aAAa,CAAC;AAErB,qBAAa,KAAK;IAChB,QAAQ,CAAC,QAAQ,EAAE,eAAe,CAAC;IACnC,QAAQ,CAAC,SAAS,EAAE,gBAAgB,CAAC;IAKrC,OAAO,CAAC,KAAK,CAAmC;IAIhD,OAAO,CAAC,cAAc,CAAyC;;
|
|
1
|
+
{"version":3,"file":"world.d.ts","sourceRoot":"","sources":["../src/world.ts"],"names":[],"mappings":"AAkBA,OAAO,EAAE,eAAe,EAAE,KAAK,QAAQ,EAAE,MAAM,aAAa,CAAC;AAC7D,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EACL,KAAK,MAAM,EACX,KAAK,WAAW,EAGjB,MAAM,aAAa,CAAC;AAErB,qBAAa,KAAK;IAChB,QAAQ,CAAC,QAAQ,EAAE,eAAe,CAAC;IACnC,QAAQ,CAAC,SAAS,EAAE,gBAAgB,CAAC;IAKrC,OAAO,CAAC,KAAK,CAAmC;IAIhD,OAAO,CAAC,cAAc,CAAyC;;IAe/D,YAAY,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,GAAG,IAAI;IAI3C,OAAO,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,CAAC,GAAG,SAAS;IAItC,WAAW,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,CAAC;IAU9B,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,GAAE,WAAgC,GAAG,IAAI;IAUxE,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAWxB,aAAa,IAAI,MAAM;IAIvB,YAAY,IAAI,MAAM;IAQtB,mBAAmB,CAAC,KAAK,EAAE,WAAW,GAAG,MAAM;IAK/C,YAAY,IAAI,QAAQ;IAIxB,aAAa,CAAC,CAAC,EAAE,QAAQ,GAAG,OAAO;IAWnC,OAAO,IAAI,IAAI;CAwBhB;AAKD,eAAO,MAAM,cAAc,cAAc,CAAC;AAC1C,eAAO,MAAM,WAAW,WAAW,CAAC"}
|
package/dist/world.js
CHANGED
|
@@ -31,6 +31,9 @@ export class World {
|
|
|
31
31
|
constructor() {
|
|
32
32
|
this.entities = new EntityAllocator();
|
|
33
33
|
this.resources = new ResourceRegistry();
|
|
34
|
+
// 0.21.0 - bind world reference so resource lifecycle hooks
|
|
35
|
+
// (onAttach / onDetach) receive the world that owns them.
|
|
36
|
+
this.resources.bindWorld(this);
|
|
34
37
|
for (const phase of SYSTEM_PHASES_IN_ORDER) {
|
|
35
38
|
this.systemsByPhase.set(phase, []);
|
|
36
39
|
}
|
|
@@ -92,6 +95,41 @@ export class World {
|
|
|
92
95
|
destroyEntity(e) {
|
|
93
96
|
return this.entities.destroy(e);
|
|
94
97
|
}
|
|
98
|
+
// 0.21.0 - graceful shutdown. Disposes every IManagedResource
|
|
99
|
+
// (calling onDetach + dispose in registration order), then clears
|
|
100
|
+
// the system phase map and the entity allocator. Idempotent: a
|
|
101
|
+
// second dispose() is a no-op since the registry is already empty.
|
|
102
|
+
// Systems can implement an `onDispose(world)` method that we call
|
|
103
|
+
// before shutting down resources, mirroring the resource lifecycle
|
|
104
|
+
// for symmetric cleanup.
|
|
105
|
+
dispose() {
|
|
106
|
+
// Phase 1: notify systems first so they can release any handles
|
|
107
|
+
// they hold to resources before the resources go away.
|
|
108
|
+
for (const phase of SYSTEM_PHASES_IN_ORDER) {
|
|
109
|
+
const list = this.systemsByPhase.get(phase);
|
|
110
|
+
if (!list)
|
|
111
|
+
continue;
|
|
112
|
+
for (const sys of list) {
|
|
113
|
+
const s = sys;
|
|
114
|
+
if (typeof s.onDispose === 'function') {
|
|
115
|
+
try {
|
|
116
|
+
s.onDispose(this);
|
|
117
|
+
}
|
|
118
|
+
catch (e) {
|
|
119
|
+
try {
|
|
120
|
+
console.error('[World] system onDispose threw:', e);
|
|
121
|
+
}
|
|
122
|
+
catch { /* ignore */ }
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
list.length = 0;
|
|
127
|
+
}
|
|
128
|
+
// Phase 2: dispose resources in registration order.
|
|
129
|
+
this.resources.disposeAll();
|
|
130
|
+
// Phase 3: clear pools (no lifecycle for pools yet; just drop).
|
|
131
|
+
this.pools.clear();
|
|
132
|
+
}
|
|
95
133
|
}
|
|
96
134
|
// Conventional pool keys. Systems and components use these to find
|
|
97
135
|
// each other so a pool registered as POOL_TRANSFORM is discoverable
|
package/dist/world.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"world.js","sourceRoot":"","sources":["../src/world.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"world.js","sourceRoot":"","sources":["../src/world.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sadhaka/loom-engine",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.22.0",
|
|
4
4
|
"description": "Browser-first 2D / 2.5D game engine. Canvas2D, ECS, render-graph stages, Director-bridge SSE integration. Built from scratch in TypeScript for TheWorldTable.ai.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -47,7 +47,7 @@
|
|
|
47
47
|
"build:all": "npm run build && npm run build:demos",
|
|
48
48
|
"watch": "tsc --watch",
|
|
49
49
|
"clean": "rm -rf dist demo/*.js demo/*.js.map demo/*/main.js demo/*/main.js.map",
|
|
50
|
-
"test": "tsx --test tests/smoke.test.ts tests/world.test.ts tests/asset-loader.test.ts tests/animation.test.ts tests/vfx.test.ts tests/audio-input.test.ts tests/director.test.ts tests/combat.test.ts tests/projectile.test.ts tests/arpg.test.ts tests/snapshot-recovery.test.ts tests/touch-input.test.ts tests/webgl2-device.test.ts tests/multiplayer.test.ts tests/zone-event-envelope.test.ts tests/mock-zone-bridge.test.ts tests/zone-event-system.test.ts tests/zone-state-resource.test.ts tests/ai-plugin-registry.test.ts tests/ai-plugin-error-isolation.test.ts tests/mock-ai-plugin.test.ts tests/plugin-context.test.ts tests/spatial-audio-bus.test.ts tests/audio-listener-resource.test.ts tests/spatial-audio-system.test.ts tests/spatial-falloff-math.test.ts tests/audio-asset-cache.test.ts tests/audio-asset-loader.test.ts tests/cue-catalog.test.ts tests/music-director.test.ts tests/cue-stop-all.test.ts tests/zone-audio-system.test.ts tests/zone-boss-entity-resource.test.ts tests/zone-boss-entity-system.test.ts tests/headless-tick-harness.test.ts tests/trace-replay/replay.test.ts tests/entropy.test.ts tests/fuzzer/fuzzer.test.ts tests/zone-event-system-determinism.test.ts tests/no-nondeterminism.test.ts tests/replay-snapshot.test.ts tests/determinism-smoke.test.ts tests/plugins/client-registry.test.ts tests/plugins/example-hud-plugin.test.ts tests/director/sse-director-bridge-networking.test.ts tests/director/sse-zone-bridge-networking.test.ts",
|
|
50
|
+
"test": "tsx --test tests/smoke.test.ts tests/world.test.ts tests/asset-loader.test.ts tests/animation.test.ts tests/vfx.test.ts tests/audio-input.test.ts tests/director.test.ts tests/combat.test.ts tests/projectile.test.ts tests/arpg.test.ts tests/snapshot-recovery.test.ts tests/touch-input.test.ts tests/webgl2-device.test.ts tests/multiplayer.test.ts tests/zone-event-envelope.test.ts tests/mock-zone-bridge.test.ts tests/zone-event-system.test.ts tests/zone-state-resource.test.ts tests/ai-plugin-registry.test.ts tests/ai-plugin-error-isolation.test.ts tests/mock-ai-plugin.test.ts tests/plugin-context.test.ts tests/spatial-audio-bus.test.ts tests/audio-listener-resource.test.ts tests/spatial-audio-system.test.ts tests/spatial-falloff-math.test.ts tests/audio-asset-cache.test.ts tests/audio-asset-loader.test.ts tests/cue-catalog.test.ts tests/music-director.test.ts tests/cue-stop-all.test.ts tests/zone-audio-system.test.ts tests/zone-boss-entity-resource.test.ts tests/zone-boss-entity-system.test.ts tests/headless-tick-harness.test.ts tests/trace-replay/replay.test.ts tests/entropy.test.ts tests/fuzzer/fuzzer.test.ts tests/zone-event-system-determinism.test.ts tests/no-nondeterminism.test.ts tests/replay-snapshot.test.ts tests/determinism-smoke.test.ts tests/plugins/client-registry.test.ts tests/plugins/example-hud-plugin.test.ts tests/director/sse-director-bridge-networking.test.ts tests/director/sse-zone-bridge-networking.test.ts tests/resource-lifecycle.test.ts tests/component-signature.test.ts",
|
|
51
51
|
"bench": "npm run build && node --expose-gc --import=tsx tools/perf-bench.ts",
|
|
52
52
|
"bench:fast": "npm run build && node --expose-gc --import=tsx tools/perf-bench.ts --no-write",
|
|
53
53
|
"bench:browser": "npm run build && tsc -p tools/tsconfig.bench.json",
|