@vworlds/vecs 1.0.25 → 1.0.27
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 +29 -778
- package/dist/component.d.ts +1 -1
- package/dist/component.js +1 -1
- package/dist/component.js.map +1 -1
- package/dist/component_meta.d.ts +5 -1
- package/dist/component_meta.js +10 -0
- package/dist/component_meta.js.map +1 -1
- package/dist/dsl.d.ts +23 -2
- package/dist/dsl.js +21 -18
- package/dist/dsl.js.map +1 -1
- package/dist/entity/entity.base.d.ts +2 -18
- package/dist/entity/entity.base.js +2 -20
- package/dist/entity/entity.base.js.map +1 -1
- package/dist/entity/entity.components.d.ts +1 -0
- package/dist/entity/entity.components.js +50 -0
- package/dist/entity/entity.components.js.map +1 -1
- package/dist/entity/entity.d.ts +8 -0
- package/dist/entity/entity.js +21 -0
- package/dist/entity/entity.js.map +1 -1
- package/dist/entity/entity.lifecycle.d.ts +3 -3
- package/dist/entity/entity.lifecycle.js +6 -9
- package/dist/entity/entity.lifecycle.js.map +1 -1
- package/dist/entity/entity.relationships.d.ts +1 -1
- package/dist/entity/entity.relationships.js +3 -3
- package/dist/entity/entity.relationships.js.map +1 -1
- package/dist/filter.d.ts +1 -0
- package/dist/filter.js +3 -2
- package/dist/filter.js.map +1 -1
- package/dist/index.d.ts +4 -2
- package/dist/index.js +4 -2
- package/dist/index.js.map +1 -1
- package/dist/inject.d.ts +3 -2
- package/dist/inject.js.map +1 -1
- package/dist/modules/implements.d.ts +14 -0
- package/dist/modules/implements.js +98 -0
- package/dist/modules/implements.js.map +1 -0
- package/dist/modules/relationships.d.ts +1 -1
- package/dist/modules/relationships.js +2 -2
- package/dist/package.json +1 -4
- package/dist/query/callbacks.d.ts +6 -2
- package/dist/query/callbacks.js +5 -2
- package/dist/query/callbacks.js.map +1 -1
- package/dist/query/grouped_query.js +1 -1
- package/dist/query/query.d.ts +14 -1
- package/dist/query/query.js +26 -15
- package/dist/query/query.js.map +1 -1
- package/dist/system.d.ts +5 -4
- package/dist/system.js +17 -6
- package/dist/system.js.map +1 -1
- package/dist/terms/build.js +7 -5
- package/dist/terms/build.js.map +1 -1
- package/dist/util/array_map.d.ts +70 -12
- package/dist/util/array_map.js +113 -26
- package/dist/util/array_map.js.map +1 -1
- package/dist/util/bitset.js +0 -17
- package/dist/util/bitset.js.map +1 -1
- package/dist/util/events.d.ts +42 -12
- package/dist/util/events.js +94 -43
- package/dist/util/events.js.map +1 -1
- package/dist/util/ordered_set.js +43 -19
- package/dist/util/ordered_set.js.map +1 -1
- package/dist/world/world.deferred.js +2 -0
- package/dist/world/world.deferred.js.map +1 -1
- package/dist/world/world.entities.d.ts +8 -1
- package/dist/world/world.entities.js +25 -6
- package/dist/world/world.entities.js.map +1 -1
- package/dist/world/world.js +8 -1
- package/dist/world/world.js.map +1 -1
- package/dist/world/world.queries.js +6 -1
- package/dist/world/world.queries.js.map +1 -1
- package/dist/world/world.storage.d.ts +2 -2
- package/dist/world/world.storage.js +6 -3
- package/dist/world/world.storage.js.map +1 -1
- package/docs/README.md +50 -0
- package/docs/components.md +267 -0
- package/docs/concepts.md +86 -0
- package/docs/design-guide.md +506 -0
- package/docs/entities.md +177 -0
- package/docs/execution-model.md +173 -0
- package/docs/getting-started.md +215 -0
- package/docs/glossary.md +113 -0
- package/docs/modules.md +108 -0
- package/docs/queries-and-filters.md +187 -0
- package/docs/relationships.md +149 -0
- package/docs/systems.md +311 -0
- package/docs/utilities.md +139 -0
- package/package.json +1 -4
package/dist/util/bitset.js
CHANGED
|
@@ -199,23 +199,6 @@ export class Bitset {
|
|
|
199
199
|
this.forEach((i) => idx.push(i));
|
|
200
200
|
return idx;
|
|
201
201
|
}
|
|
202
|
-
/**
|
|
203
|
-
* OR `bitmask` into the word at position `arrayIndex`.
|
|
204
|
-
*
|
|
205
|
-
* @internal Low-level bulk operation; prefer {@link add} or {@link addBit}
|
|
206
|
-
* for single bits.
|
|
207
|
-
*/
|
|
208
|
-
_addIndexBitmask(arrayIndex, bitmask) {
|
|
209
|
-
this._bits[arrayIndex] |= bitmask;
|
|
210
|
-
}
|
|
211
|
-
/**
|
|
212
|
-
* Replace the word at position `arrayIndex` with `bitmask`.
|
|
213
|
-
*
|
|
214
|
-
* @internal Used by network deserialization to write a whole word at once.
|
|
215
|
-
*/
|
|
216
|
-
_setIndexBitmask(arrayIndex, bitmask) {
|
|
217
|
-
this._bits[arrayIndex] = bitmask;
|
|
218
|
-
}
|
|
219
202
|
/**
|
|
220
203
|
* Emit a JavaScript expression that evaluates to `true` when the bitset
|
|
221
204
|
* addressed by `targetBitsExpr` (a `number[]` of 32-bit words) contains
|
package/dist/util/bitset.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bitset.js","sourceRoot":"","sources":["../../src/util/bitset.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,OAAO,MAAM;IAAnB;QACE;;;;WAIG;QACI,UAAK,GAAa,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"bitset.js","sourceRoot":"","sources":["../../src/util/bitset.ts"],"names":[],"mappings":"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"}
|
package/dist/util/events.d.ts
CHANGED
|
@@ -1,23 +1,53 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
2
|
+
* Minimal, strongly-typed event emitter.
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
* `on` / `emit` / `off` signatures driven by an
|
|
4
|
+
* Provides the small subset of the `EventEmitter` API vecs packages need —
|
|
5
|
+
* `on` / `addListener`, `once`, `off` / `removeListener`,
|
|
6
|
+
* `removeAllListeners`, `emit`, `eventNames`, `listeners`, and
|
|
7
|
+
* `listenerCount` — with `on` / `emit` / `off` signatures driven by an
|
|
8
|
+
* `EventMap`.
|
|
8
9
|
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
* usable directly on top of `eventemitter3`.
|
|
12
|
-
*
|
|
13
|
-
* @internal Used only inside the package, to expose typed entity-level events.
|
|
10
|
+
* Use this for package-level events that need typed `on` and `emit` calls
|
|
11
|
+
* without adding an external runtime dependency.
|
|
14
12
|
*/
|
|
15
13
|
declare type ValidEventMap<T = any> = T extends {
|
|
16
14
|
[P in keyof T]: (...args: any[]) => void;
|
|
17
15
|
} ? T : never;
|
|
18
|
-
declare type Handler<T extends any | ((...args: any[]) => R), R = any> = T;
|
|
19
16
|
/** Listener signature inferred from an `EventMap` entry. */
|
|
20
|
-
export declare type EventListener<T extends ValidEventMap, K extends EventNames<T>> =
|
|
17
|
+
export declare type EventListener<T extends ValidEventMap, K extends EventNames<T>> = K extends keyof T ? T[K] extends (...args: any[]) => void ? T[K] : never : (...args: any[]) => void;
|
|
18
|
+
declare type EventArgs<T extends ValidEventMap, K extends EventNames<T>> = Parameters<EventListener<T, K>>;
|
|
21
19
|
/** Names of the events declared on an `EventMap`. */
|
|
22
20
|
export declare type EventNames<T extends ValidEventMap> = T extends string | symbol ? T : keyof T;
|
|
21
|
+
/**
|
|
22
|
+
* Typed `EventEmitter` parameterised by an `EventMap` of `eventName -> handler`.
|
|
23
|
+
*
|
|
24
|
+
* Use for package-level events that need typed event names and payloads.
|
|
25
|
+
*/
|
|
26
|
+
export declare class Events<EventMap extends ValidEventMap = any> {
|
|
27
|
+
private _listeners;
|
|
28
|
+
/** Alias of {@link on}. */
|
|
29
|
+
addListener<T extends EventNames<EventMap>>(event: T, fn: EventListener<EventMap, T>, context?: any): this;
|
|
30
|
+
/** Calls every listener registered for `event` with `args`, returning whether any listener ran. */
|
|
31
|
+
emit<T extends EventNames<EventMap>>(event: T, ...args: EventArgs<EventMap, T>): boolean;
|
|
32
|
+
/** Names of the events with at least one registered listener. */
|
|
33
|
+
eventNames(): EventNames<EventMap>[];
|
|
34
|
+
/** Number of listeners registered for `event`. */
|
|
35
|
+
listenerCount(event: EventNames<EventMap>): number;
|
|
36
|
+
/** Listener functions registered for `event`. */
|
|
37
|
+
listeners(event: EventNames<EventMap>): ((...args: any[]) => void)[];
|
|
38
|
+
/** Removes a listener registered for `event`, or every listener for `event` when `fn` is omitted. */
|
|
39
|
+
off<T extends EventNames<EventMap>>(event: T, fn?: EventListener<EventMap, T>, context?: any): this;
|
|
40
|
+
/** Registers `fn` to be called every time `event` is emitted. */
|
|
41
|
+
on<T extends EventNames<EventMap>>(event: T, fn: EventListener<EventMap, T>, context?: any): this;
|
|
42
|
+
/** Registers `fn` to be called the next time `event` is emitted, then removes it. */
|
|
43
|
+
once<T extends EventNames<EventMap>>(event: T, fn: EventListener<EventMap, T>, context?: any): this;
|
|
44
|
+
/** Removes all listeners, or all listeners for `event` when given. */
|
|
45
|
+
removeAllListeners(event?: EventNames<EventMap>): this;
|
|
46
|
+
/** Alias of {@link off}. */
|
|
47
|
+
removeListener<T extends EventNames<EventMap>>(event: T, fn?: EventListener<EventMap, T>, context?: any): this;
|
|
48
|
+
/** Registers a listener, storing both the callable (`fn`) and the function used for `off` matching (`original`). */
|
|
49
|
+
private _add;
|
|
50
|
+
/** Whether `registration` was registered with `fn` (directly or as a `once` original) and, if given, `context`. */
|
|
51
|
+
private _matches;
|
|
52
|
+
}
|
|
23
53
|
export {};
|
package/dist/util/events.js
CHANGED
|
@@ -1,64 +1,115 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
2
|
+
* Minimal, strongly-typed event emitter.
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
* `on` / `emit` / `off` signatures driven by an
|
|
4
|
+
* Provides the small subset of the `EventEmitter` API vecs packages need —
|
|
5
|
+
* `on` / `addListener`, `once`, `off` / `removeListener`,
|
|
6
|
+
* `removeAllListeners`, `emit`, `eventNames`, `listeners`, and
|
|
7
|
+
* `listenerCount` — with `on` / `emit` / `off` signatures driven by an
|
|
8
|
+
* `EventMap`.
|
|
8
9
|
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
* usable directly on top of `eventemitter3`.
|
|
12
|
-
*
|
|
13
|
-
* @internal Used only inside the package, to expose typed entity-level events.
|
|
10
|
+
* Use this for package-level events that need typed `on` and `emit` calls
|
|
11
|
+
* without adding an external runtime dependency.
|
|
14
12
|
*/
|
|
15
|
-
import eventEmitter3 from "eventemitter3";
|
|
16
|
-
const { EventEmitter } = eventEmitter3;
|
|
17
13
|
/**
|
|
18
|
-
* Typed
|
|
19
|
-
*
|
|
14
|
+
* Typed `EventEmitter` parameterised by an `EventMap` of `eventName -> handler`.
|
|
15
|
+
*
|
|
16
|
+
* Use for package-level events that need typed event names and payloads.
|
|
20
17
|
*/
|
|
21
|
-
class
|
|
22
|
-
|
|
23
|
-
|
|
18
|
+
export class Events {
|
|
19
|
+
constructor() {
|
|
20
|
+
this._listeners = new Map();
|
|
24
21
|
}
|
|
25
|
-
|
|
26
|
-
|
|
22
|
+
/** Alias of {@link on}. */
|
|
23
|
+
addListener(event, fn, context) {
|
|
24
|
+
return this.on(event, fn, context);
|
|
27
25
|
}
|
|
28
|
-
|
|
29
|
-
|
|
26
|
+
/** Calls every listener registered for `event` with `args`, returning whether any listener ran. */
|
|
27
|
+
emit(event, ...args) {
|
|
28
|
+
const registrations = this._listeners.get(event);
|
|
29
|
+
if (!registrations || registrations.length === 0) {
|
|
30
|
+
return false;
|
|
31
|
+
}
|
|
32
|
+
for (const { fn, context } of registrations.slice()) {
|
|
33
|
+
fn.apply(context, args);
|
|
34
|
+
}
|
|
35
|
+
return true;
|
|
30
36
|
}
|
|
37
|
+
/** Names of the events with at least one registered listener. */
|
|
31
38
|
eventNames() {
|
|
32
|
-
return
|
|
39
|
+
return [...this._listeners.keys()];
|
|
33
40
|
}
|
|
41
|
+
/** Number of listeners registered for `event`. */
|
|
42
|
+
listenerCount(event) {
|
|
43
|
+
return this._listeners.get(event)?.length ?? 0;
|
|
44
|
+
}
|
|
45
|
+
/** Listener functions registered for `event`. */
|
|
34
46
|
listeners(event) {
|
|
35
|
-
return
|
|
47
|
+
return (this._listeners.get(event) ?? []).map((r) => r.fn);
|
|
36
48
|
}
|
|
37
|
-
|
|
38
|
-
|
|
49
|
+
/** Removes a listener registered for `event`, or every listener for `event` when `fn` is omitted. */
|
|
50
|
+
off(event, fn, context) {
|
|
51
|
+
return this.removeListener(event, fn, context);
|
|
39
52
|
}
|
|
40
|
-
|
|
41
|
-
|
|
53
|
+
/** Registers `fn` to be called every time `event` is emitted. */
|
|
54
|
+
on(event, fn, context) {
|
|
55
|
+
return this._add(event, fn, fn, context);
|
|
56
|
+
}
|
|
57
|
+
/** Registers `fn` to be called the next time `event` is emitted, then removes it. */
|
|
58
|
+
once(event, fn, context) {
|
|
59
|
+
const original = fn;
|
|
60
|
+
const wrapper = (...args) => {
|
|
61
|
+
this.removeListener(event, wrapper);
|
|
62
|
+
original.apply(context, args);
|
|
63
|
+
};
|
|
64
|
+
return this._add(event, wrapper, original, context);
|
|
42
65
|
}
|
|
66
|
+
/** Removes all listeners, or all listeners for `event` when given. */
|
|
43
67
|
removeAllListeners(event) {
|
|
44
|
-
|
|
68
|
+
if (event === undefined) {
|
|
69
|
+
this._listeners.clear();
|
|
70
|
+
}
|
|
71
|
+
else {
|
|
72
|
+
this._listeners.delete(event);
|
|
73
|
+
}
|
|
74
|
+
return this;
|
|
45
75
|
}
|
|
46
|
-
|
|
47
|
-
|
|
76
|
+
/** Alias of {@link off}. */
|
|
77
|
+
removeListener(event, fn, context) {
|
|
78
|
+
if (fn === undefined) {
|
|
79
|
+
this._listeners.delete(event);
|
|
80
|
+
return this;
|
|
81
|
+
}
|
|
82
|
+
const registrations = this._listeners.get(event);
|
|
83
|
+
if (!registrations) {
|
|
84
|
+
return this;
|
|
85
|
+
}
|
|
86
|
+
const remaining = registrations.filter((r) => !this._matches(r, fn, context));
|
|
87
|
+
if (remaining.length === 0) {
|
|
88
|
+
this._listeners.delete(event);
|
|
89
|
+
}
|
|
90
|
+
else {
|
|
91
|
+
this._listeners.set(event, remaining);
|
|
92
|
+
}
|
|
93
|
+
return this;
|
|
48
94
|
}
|
|
49
|
-
|
|
50
|
-
|
|
95
|
+
/** Registers a listener, storing both the callable (`fn`) and the function used for `off` matching (`original`). */
|
|
96
|
+
_add(event, fn, original, context) {
|
|
97
|
+
const registrations = this._listeners.get(event);
|
|
98
|
+
const registration = { fn, original, context };
|
|
99
|
+
if (registrations) {
|
|
100
|
+
registrations.push(registration);
|
|
101
|
+
}
|
|
102
|
+
else {
|
|
103
|
+
this._listeners.set(event, [registration]);
|
|
104
|
+
}
|
|
105
|
+
return this;
|
|
106
|
+
}
|
|
107
|
+
/** Whether `registration` was registered with `fn` (directly or as a `once` original) and, if given, `context`. */
|
|
108
|
+
_matches(registration, fn, context) {
|
|
109
|
+
if (registration.original !== fn && registration.fn !== fn) {
|
|
110
|
+
return false;
|
|
111
|
+
}
|
|
112
|
+
return context === undefined || registration.context === context;
|
|
51
113
|
}
|
|
52
|
-
}
|
|
53
|
-
events = EventEmitter;
|
|
54
|
-
/**
|
|
55
|
-
* Typed `EventEmitter` parameterised by an `EventMap` of `eventName -> handler`.
|
|
56
|
-
*
|
|
57
|
-
* Constructed lazily by `Entity.events`. Inherits its concrete behavior from
|
|
58
|
-
* `eventemitter3`'s `EventEmitter`.
|
|
59
|
-
*
|
|
60
|
-
* @internal
|
|
61
|
-
*/
|
|
62
|
-
export class Events extends events {
|
|
63
114
|
}
|
|
64
115
|
//# sourceMappingURL=events.js.map
|
package/dist/util/events.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"events.js","sourceRoot":"","sources":["../../src/util/events.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"events.js","sourceRoot":"","sources":["../../src/util/events.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAkCH;;;;GAIG;AACH,MAAM,OAAO,MAAM;IAAnB;QACU,eAAU,GAAG,IAAI,GAAG,EAAwC,CAAC;IAwIvE,CAAC;IAtIC,2BAA2B;IACpB,WAAW,CAChB,KAAQ,EACR,EAA8B,EAC9B,OAAa;QAEb,OAAO,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,EAAE,EAAE,OAAO,CAAC,CAAC;IACrC,CAAC;IAED,mGAAmG;IAC5F,IAAI,CAAiC,KAAQ,EAAE,GAAG,IAA4B;QACnF,MAAM,aAAa,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACjD,IAAI,CAAC,aAAa,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACjD,OAAO,KAAK,CAAC;QACf,CAAC;QACD,KAAK,MAAM,EAAE,EAAE,EAAE,OAAO,EAAE,IAAI,aAAa,CAAC,KAAK,EAAE,EAAE,CAAC;YACpD,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QAC1B,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,iEAAiE;IAC1D,UAAU;QACf,OAAO,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC;IACrC,CAAC;IAED,kDAAkD;IAC3C,aAAa,CAAC,KAA2B;QAC9C,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,MAAM,IAAI,CAAC,CAAC;IACjD,CAAC;IAED,iDAAiD;IAC1C,SAAS,CAAC,KAA2B;QAC1C,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IAC7D,CAAC;IAED,qGAAqG;IAC9F,GAAG,CACR,KAAQ,EACR,EAA+B,EAC/B,OAAa;QAEb,OAAO,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,EAAE,EAAE,OAAO,CAAC,CAAC;IACjD,CAAC;IAED,iEAAiE;IAC1D,EAAE,CACP,KAAQ,EACR,EAA8B,EAC9B,OAAa;QAEb,OAAO,IAAI,CAAC,IAAI,CACd,KAAK,EACL,EAA8B,EAC9B,EAA8B,EAC9B,OAAO,CACR,CAAC;IACJ,CAAC;IAED,qFAAqF;IAC9E,IAAI,CACT,KAAQ,EACR,EAA8B,EAC9B,OAAa;QAEb,MAAM,QAAQ,GAAG,EAA8B,CAAC;QAChD,MAAM,OAAO,GAAG,CAAC,GAAG,IAAW,EAAQ,EAAE;YACvC,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,OAAqC,CAAC,CAAC;YAClE,QAAQ,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QAChC,CAAC,CAAC;QACF,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;IACtD,CAAC;IAED,sEAAsE;IAC/D,kBAAkB,CAAC,KAA4B;QACpD,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxB,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;QAC1B,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAChC,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,4BAA4B;IACrB,cAAc,CACnB,KAAQ,EACR,EAA+B,EAC/B,OAAa;QAEb,IAAI,EAAE,KAAK,SAAS,EAAE,CAAC;YACrB,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAC9B,OAAO,IAAI,CAAC;QACd,CAAC;QACD,MAAM,aAAa,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACjD,IAAI,CAAC,aAAa,EAAE,CAAC;YACnB,OAAO,IAAI,CAAC;QACd,CAAC;QACD,MAAM,SAAS,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC;QAC9E,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC3B,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAChC,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;QACxC,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,oHAAoH;IAC5G,IAAI,CACV,KAAQ,EACR,EAA4B,EAC5B,QAAkC,EAClC,OAAY;QAEZ,MAAM,aAAa,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACjD,MAAM,YAAY,GAAiB,EAAE,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC;QAC7D,IAAI,aAAa,EAAE,CAAC;YAClB,aAAa,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QACnC,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC;QAC7C,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,mHAAmH;IAC3G,QAAQ,CACd,YAA0B,EAC1B,EAA4B,EAC5B,OAAY;QAEZ,IAAI,YAAY,CAAC,QAAQ,KAAK,EAAE,IAAI,YAAY,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC;YAC3D,OAAO,KAAK,CAAC;QACf,CAAC;QACD,OAAO,OAAO,KAAK,SAAS,IAAI,YAAY,CAAC,OAAO,KAAK,OAAO,CAAC;IACnE,CAAC;CACF"}
|
package/dist/util/ordered_set.js
CHANGED
|
@@ -2,9 +2,14 @@
|
|
|
2
2
|
* A `Set<T>` whose iteration order is determined by a comparator instead of
|
|
3
3
|
* insertion order.
|
|
4
4
|
*
|
|
5
|
-
* Backed by a sorted array
|
|
6
|
-
* search) plus the cost of an array splice
|
|
7
|
-
* lookup because sorted values may be mutable.
|
|
5
|
+
* Backed by a sorted array plus a side `Set<T>` for O(1) membership checks.
|
|
6
|
+
* Insertions are `O(log n)` (binary search) plus the cost of an array splice.
|
|
7
|
+
* Removal uses identity lookup because sorted values may be mutable.
|
|
8
|
+
*
|
|
9
|
+
* The backing array can go stale relative to the comparator: callers mark it
|
|
10
|
+
* dirty with {@link markDirty} when data the comparator reads has changed.
|
|
11
|
+
* The next order-dependent read re-sorts the whole array in place before
|
|
12
|
+
* returning. `has` is unaffected by dirtiness — it always checks the side set.
|
|
8
13
|
*
|
|
9
14
|
* Used by `Query.orderBy` to keep matched entities in a user-defined order so
|
|
10
15
|
* iteration in `forEach` and `each` walks them sorted.
|
|
@@ -16,6 +21,8 @@
|
|
|
16
21
|
export class OrderedSet {
|
|
17
22
|
constructor(compare) {
|
|
18
23
|
this._items = [];
|
|
24
|
+
this._members = new Set();
|
|
25
|
+
this._dirty = false;
|
|
19
26
|
this._compare = compare;
|
|
20
27
|
}
|
|
21
28
|
/**
|
|
@@ -36,6 +43,14 @@ export class OrderedSet {
|
|
|
36
43
|
}
|
|
37
44
|
return lo;
|
|
38
45
|
}
|
|
46
|
+
/** Re-sort the backing array in place when {@link markDirty} was called. */
|
|
47
|
+
_ensureSorted() {
|
|
48
|
+
if (!this._dirty) {
|
|
49
|
+
return;
|
|
50
|
+
}
|
|
51
|
+
this._items.sort(this._compare);
|
|
52
|
+
this._dirty = false;
|
|
53
|
+
}
|
|
39
54
|
/** Number of elements currently stored. */
|
|
40
55
|
get size() {
|
|
41
56
|
return this._items.length;
|
|
@@ -46,48 +61,52 @@ export class OrderedSet {
|
|
|
46
61
|
}
|
|
47
62
|
/**
|
|
48
63
|
* Insert `value` at the position determined by the comparator. No-op when
|
|
49
|
-
*
|
|
64
|
+
* `value` is already a member.
|
|
50
65
|
*
|
|
51
66
|
* @param value - Element to insert.
|
|
52
67
|
*/
|
|
53
68
|
add(value) {
|
|
54
|
-
|
|
55
|
-
if (i < this._items.length && this._compare(this._items[i], value) === 0) {
|
|
69
|
+
if (this._members.has(value)) {
|
|
56
70
|
return this;
|
|
57
71
|
}
|
|
72
|
+
this._ensureSorted();
|
|
73
|
+
const i = this._bisect(value);
|
|
58
74
|
this._items.splice(i, 0, value);
|
|
75
|
+
this._members.add(value);
|
|
59
76
|
return this;
|
|
60
77
|
}
|
|
61
|
-
/**
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
this._items.splice(i, 1);
|
|
68
|
-
return this.add(value);
|
|
78
|
+
/**
|
|
79
|
+
* Mark the backing array stale. The next order-dependent read re-sorts it
|
|
80
|
+
* with the comparator before returning.
|
|
81
|
+
*/
|
|
82
|
+
markDirty() {
|
|
83
|
+
this._dirty = true;
|
|
69
84
|
}
|
|
70
85
|
/**
|
|
71
|
-
* Return `true` when
|
|
86
|
+
* Return `true` when `value` is a member of the set, regardless of sort
|
|
87
|
+
* state. O(1) identity lookup against the side membership set.
|
|
72
88
|
*
|
|
73
89
|
* @param value - Element to look up.
|
|
74
90
|
*/
|
|
75
91
|
has(value) {
|
|
76
|
-
|
|
77
|
-
return i < this._items.length && this._compare(this._items[i], value) === 0;
|
|
92
|
+
return this._members.has(value);
|
|
78
93
|
}
|
|
79
94
|
/** Remove `value` by identity. Returns `true` if an element was removed. */
|
|
80
95
|
delete(value) {
|
|
96
|
+
if (!this._members.delete(value)) {
|
|
97
|
+
return false;
|
|
98
|
+
}
|
|
81
99
|
const i = this._items.indexOf(value);
|
|
82
100
|
if (i !== -1) {
|
|
83
101
|
this._items.splice(i, 1);
|
|
84
|
-
return true;
|
|
85
102
|
}
|
|
86
|
-
return
|
|
103
|
+
return true;
|
|
87
104
|
}
|
|
88
105
|
/** Remove every element. */
|
|
89
106
|
clear() {
|
|
90
107
|
this._items.length = 0;
|
|
108
|
+
this._members.clear();
|
|
109
|
+
this._dirty = false;
|
|
91
110
|
}
|
|
92
111
|
/**
|
|
93
112
|
* Visit each element in sorted order.
|
|
@@ -97,26 +116,31 @@ export class OrderedSet {
|
|
|
97
116
|
* @param thisArg - Optional `this` binding for the callback.
|
|
98
117
|
*/
|
|
99
118
|
forEach(callbackfn, thisArg) {
|
|
119
|
+
this._ensureSorted();
|
|
100
120
|
for (const item of this._items) {
|
|
101
121
|
callbackfn.call(thisArg, item, item, this);
|
|
102
122
|
}
|
|
103
123
|
}
|
|
104
124
|
/** Iterator over elements in sorted order. */
|
|
105
125
|
[Symbol.iterator]() {
|
|
126
|
+
this._ensureSorted();
|
|
106
127
|
return this._items[Symbol.iterator]();
|
|
107
128
|
}
|
|
108
129
|
/** Iterator yielding `[value, value]` pairs in sorted order. */
|
|
109
130
|
*entries() {
|
|
131
|
+
this._ensureSorted();
|
|
110
132
|
for (const item of this._items) {
|
|
111
133
|
yield [item, item];
|
|
112
134
|
}
|
|
113
135
|
}
|
|
114
136
|
/** Iterator over elements in sorted order. */
|
|
115
137
|
keys() {
|
|
138
|
+
this._ensureSorted();
|
|
116
139
|
return this._items[Symbol.iterator]();
|
|
117
140
|
}
|
|
118
141
|
/** Iterator over elements in sorted order. */
|
|
119
142
|
values() {
|
|
143
|
+
this._ensureSorted();
|
|
120
144
|
return this._items[Symbol.iterator]();
|
|
121
145
|
}
|
|
122
146
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ordered_set.js","sourceRoot":"","sources":["../../src/util/ordered_set.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"ordered_set.js","sourceRoot":"","sources":["../../src/util/ordered_set.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,OAAO,UAAU;IAMrB,YAAY,OAA+B;QALnC,WAAM,GAAQ,EAAE,CAAC;QACR,aAAQ,GAAG,IAAI,GAAG,EAAK,CAAC;QAEjC,WAAM,GAAG,KAAK,CAAC;QAGrB,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;IAC1B,CAAC;IAED;;;OAGG;IACK,OAAO,CAAC,KAAQ;QACtB,IAAI,EAAE,GAAG,CAAC,CAAC;QACX,IAAI,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;QAC5B,OAAO,EAAE,GAAG,EAAE,EAAE,CAAC;YACf,MAAM,GAAG,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC;YAC5B,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC/C,EAAE,GAAG,GAAG,GAAG,CAAC,CAAC;YACf,CAAC;iBAAM,CAAC;gBACN,EAAE,GAAG,GAAG,CAAC;YACX,CAAC;QACH,CAAC;QACD,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,4EAA4E;IACpE,aAAa;QACnB,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACjB,OAAO;QACT,CAAC;QACD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAChC,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;IACtB,CAAC;IAED,2CAA2C;IAC3C,IAAW,IAAI;QACb,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;IAC5B,CAAC;IAED,mEAAmE;IACnE,IAAW,CAAC,MAAM,CAAC,WAAW,CAAC;QAC7B,OAAO,YAAY,CAAC;IACtB,CAAC;IAED;;;;;OAKG;IACI,GAAG,CAAC,KAAQ;QACjB,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;YAC7B,OAAO,IAAI,CAAC;QACd,CAAC;QACD,IAAI,CAAC,aAAa,EAAE,CAAC;QACrB,MAAM,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAC9B,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;QAChC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACzB,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;OAGG;IACI,SAAS;QACd,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;IACrB,CAAC;IAED;;;;;OAKG;IACI,GAAG,CAAC,KAAQ;QACjB,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IAClC,CAAC;IAED,4EAA4E;IACrE,MAAM,CAAC,KAAQ;QACpB,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;YACjC,OAAO,KAAK,CAAC;QACf,CAAC;QACD,MAAM,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QACrC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;YACb,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAC3B,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,4BAA4B;IACrB,KAAK;QACV,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;QACvB,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;QACtB,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;IACtB,CAAC;IAED;;;;;;OAMG;IACI,OAAO,CAAC,UAAsD,EAAE,OAAiB;QACtF,IAAI,CAAC,aAAa,EAAE,CAAC;QACrB,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAC/B,UAAU,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;QAC7C,CAAC;IACH,CAAC;IAED,8CAA8C;IACvC,CAAC,MAAM,CAAC,QAAQ,CAAC;QACtB,IAAI,CAAC,aAAa,EAAE,CAAC;QACrB,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;IACxC,CAAC;IAED,gEAAgE;IACzD,CAAC,OAAO;QACb,IAAI,CAAC,aAAa,EAAE,CAAC;QACrB,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAC/B,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACrB,CAAC;IACH,CAAC;IAED,8CAA8C;IACvC,IAAI;QACT,IAAI,CAAC,aAAa,EAAE,CAAC;QACrB,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;IACxC,CAAC;IAED,8CAA8C;IACvC,MAAM;QACX,IAAI,CAAC,aAAa,EAAE,CAAC;QACrB,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;IACxC,CAAC;CACF"}
|
|
@@ -50,7 +50,9 @@ export class Deferred extends Queries {
|
|
|
50
50
|
switch (cmd.kind) {
|
|
51
51
|
case 0 /* CommandKind.CreateEntity */:
|
|
52
52
|
this._entities.set(cmd.entity.eid, cmd.entity);
|
|
53
|
+
this._deferredEntities.delete(cmd.entity.eid);
|
|
53
54
|
this._notifyEntityCreated(cmd.entity);
|
|
55
|
+
cmd.onCreate?.(cmd.entity);
|
|
54
56
|
return;
|
|
55
57
|
case 1 /* CommandKind.Set */:
|
|
56
58
|
cmd.entity._set(cmd.meta, cmd.props);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"world.deferred.js","sourceRoot":"","sources":["../../src/world/world.deferred.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAE7C,MAAM,OAAO,QAAS,SAAQ,OAAO;IAArC;;QACE,oEAAoE;QAC1D,kBAAa,GAAc,EAAE,CAAC;QACxC,oEAAoE;QAC1D,mBAAc,GAAG,CAAC,CAAC;QAC7B,oGAAoG;QAC1F,cAAS,GAAG,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"world.deferred.js","sourceRoot":"","sources":["../../src/world/world.deferred.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,7 +3,14 @@ import { Entity, type EID } from "../entity/index.js";
|
|
|
3
3
|
import { Deferred } from "./world.deferred.js";
|
|
4
4
|
import type { World } from "./world.js";
|
|
5
5
|
export declare class Entities extends Deferred {
|
|
6
|
-
/**
|
|
6
|
+
/**
|
|
7
|
+
* Return the entity with id `eid`, creating it if it does not yet exist.
|
|
8
|
+
*
|
|
9
|
+
* In deferred mode, a newly created entity remains hidden from collections
|
|
10
|
+
* and queries until flush, but numeric lookups (`getEntity(eid)`,
|
|
11
|
+
* `entity(eid)`) and repeated `getOrCreateEntity(eid)` calls in the same
|
|
12
|
+
* deferred scope return that same pending entity.
|
|
13
|
+
*/
|
|
7
14
|
getOrCreateEntity(this: World, eid: EID, onCreateCallback?: (e: Entity) => void): Entity;
|
|
8
15
|
/** Look up an entity by component ref or identity name. */
|
|
9
16
|
getEntity(this: World, ref: ComponentRef | string): Entity | undefined;
|
|
@@ -2,19 +2,36 @@ import { Entity, Identity } from "../entity/index.js";
|
|
|
2
2
|
import { Deferred } from "./world.deferred.js";
|
|
3
3
|
const RESERVED_EID = 0;
|
|
4
4
|
export class Entities extends Deferred {
|
|
5
|
-
/**
|
|
5
|
+
/**
|
|
6
|
+
* Return the entity with id `eid`, creating it if it does not yet exist.
|
|
7
|
+
*
|
|
8
|
+
* In deferred mode, a newly created entity remains hidden from collections
|
|
9
|
+
* and queries until flush, but numeric lookups (`getEntity(eid)`,
|
|
10
|
+
* `entity(eid)`) and repeated `getOrCreateEntity(eid)` calls in the same
|
|
11
|
+
* deferred scope return that same pending entity.
|
|
12
|
+
*/
|
|
6
13
|
getOrCreateEntity(eid, onCreateCallback) {
|
|
7
14
|
if (eid === RESERVED_EID) {
|
|
8
15
|
throw new Error(`Entity eid ${eid} is reserved`);
|
|
9
16
|
}
|
|
10
17
|
let e = this._entities.get(eid);
|
|
18
|
+
if (!e && this.deferred) {
|
|
19
|
+
e = this._deferredEntities.get(eid);
|
|
20
|
+
}
|
|
11
21
|
if (!e) {
|
|
12
22
|
this._reserveEid(eid);
|
|
13
23
|
e = new Entity(this, eid);
|
|
14
|
-
this.
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
24
|
+
if (this.deferred) {
|
|
25
|
+
// Mirror `_entity`: in deferred mode the entity is not registered or
|
|
26
|
+
// made visible to queries until the queue drains. The reservation above
|
|
27
|
+
// still happens eagerly so the id cannot be handed out again meanwhile.
|
|
28
|
+
this._deferredEntities.set(eid, e);
|
|
29
|
+
this._enqueue({ kind: 0 /* CommandKind.CreateEntity */, entity: e, onCreate: onCreateCallback });
|
|
30
|
+
}
|
|
31
|
+
else {
|
|
32
|
+
this._entities.set(eid, e);
|
|
33
|
+
this._notifyEntityCreated(e);
|
|
34
|
+
onCreateCallback?.(e);
|
|
18
35
|
}
|
|
19
36
|
}
|
|
20
37
|
return e;
|
|
@@ -31,7 +48,8 @@ export class Entities extends Deferred {
|
|
|
31
48
|
if (ref === RESERVED_EID) {
|
|
32
49
|
throw new Error(`Entity eid ${ref} is reserved`);
|
|
33
50
|
}
|
|
34
|
-
|
|
51
|
+
const entity = this._entities.get(ref);
|
|
52
|
+
return entity ?? (this.deferred ? this._deferredEntities.get(ref) : undefined);
|
|
35
53
|
}
|
|
36
54
|
return ref.world === this && this._entities.get(ref.eid) === ref ? ref : undefined;
|
|
37
55
|
}
|
|
@@ -85,6 +103,7 @@ export class Entities extends Deferred {
|
|
|
85
103
|
const eid = this._entityPool.alloc();
|
|
86
104
|
const e = new Constructor(this, eid);
|
|
87
105
|
if (this.deferred) {
|
|
106
|
+
this._deferredEntities.set(eid, e);
|
|
88
107
|
this._enqueue({ kind: 0 /* CommandKind.CreateEntity */, entity: e });
|
|
89
108
|
}
|
|
90
109
|
else {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"world.entities.js","sourceRoot":"","sources":["../../src/world/world.entities.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,EAAE,QAAQ,EAA8B,MAAM,oBAAoB,CAAC;AAClF,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAG/C,MAAM,YAAY,GAAG,CAAC,CAAC;AAEvB,MAAM,OAAO,QAAS,SAAQ,QAAQ;IACpC
|
|
1
|
+
{"version":3,"file":"world.entities.js","sourceRoot":"","sources":["../../src/world/world.entities.ts"],"names":[],"mappings":"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"}
|
package/dist/world/world.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { SilenceSource } from "../modules/relationships.js";
|
|
2
2
|
import { IdentityModule } from "../modules/identity.js";
|
|
3
|
+
import { ImplementsModule } from "../modules/implements.js";
|
|
3
4
|
import { PipelineModule } from "../modules/pipeline.js";
|
|
4
5
|
import { RelationshipsModule } from "../modules/relationships.js";
|
|
5
6
|
import { SingletonModule } from "../modules/singleton.js";
|
|
@@ -33,7 +34,13 @@ export class World extends Pipeline {
|
|
|
33
34
|
this.component(SilenceSource).onRemove((entity) => entity.get(Query)?._clearSilence());
|
|
34
35
|
this.component(Query).onRemove((_entity, query) => query.destroy());
|
|
35
36
|
this.component(System).onRemove((_entity, system) => system.destroy());
|
|
36
|
-
[
|
|
37
|
+
[
|
|
38
|
+
IdentityModule,
|
|
39
|
+
ImplementsModule,
|
|
40
|
+
SingletonModule,
|
|
41
|
+
RelationshipsModule,
|
|
42
|
+
PipelineModule,
|
|
43
|
+
].forEach((mod) => this.module(mod));
|
|
37
44
|
}
|
|
38
45
|
}
|
|
39
46
|
//# sourceMappingURL=world.js.map
|
package/dist/world/world.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"world.js","sourceRoot":"","sources":["../../src/world/world.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAC5D,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAClE,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC1C,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACtC,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAG/C;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,OAAO,KAAM,SAAQ,QAAQ;IACjC,YAAmB,UAAwB,EAAE;QAC3C,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC,QAAQ,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,aAAa,EAAE,CAAC,CAAC;QACvF,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;QACpE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;QACvE,
|
|
1
|
+
{"version":3,"file":"world.js","sourceRoot":"","sources":["../../src/world/world.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAC5D,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAClE,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC1C,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACtC,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAG/C;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,OAAO,KAAM,SAAQ,QAAQ;IACjC,YAAmB,UAAwB,EAAE;QAC3C,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC,QAAQ,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,aAAa,EAAE,CAAC,CAAC;QACvF,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;QACpE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;QACvE;YACE,cAAc;YACd,gBAAgB;YAChB,eAAe;YACf,mBAAmB;YACnB,cAAc;SACf,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;IACvC,CAAC;CACF"}
|