iris-ecs 0.0.9 → 0.0.10
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 +250 -61
- package/dist/archetype.d.ts +18 -1
- package/dist/archetype.d.ts.map +1 -1
- package/dist/archetype.js +60 -15
- package/dist/archetype.js.map +1 -1
- package/dist/component.d.ts +106 -7
- package/dist/component.d.ts.map +1 -1
- package/dist/component.js +86 -4
- package/dist/component.js.map +1 -1
- package/dist/directed-acyclic-graph.d.ts +123 -0
- package/dist/directed-acyclic-graph.d.ts.map +1 -0
- package/dist/directed-acyclic-graph.js +235 -0
- package/dist/directed-acyclic-graph.js.map +1 -0
- package/dist/entity.d.ts +18 -0
- package/dist/entity.d.ts.map +1 -1
- package/dist/entity.js +5 -15
- package/dist/entity.js.map +1 -1
- package/dist/error.d.ts +2 -2
- package/dist/error.js +2 -2
- package/dist/index.d.ts +8 -7
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -4
- package/dist/index.js.map +1 -1
- package/dist/name.d.ts +2 -2
- package/dist/name.d.ts.map +1 -1
- package/dist/name.js +3 -3
- package/dist/name.js.map +1 -1
- package/dist/query.d.ts +65 -5
- package/dist/query.d.ts.map +1 -1
- package/dist/query.js +34 -3
- package/dist/query.js.map +1 -1
- package/dist/resource.d.ts +62 -4
- package/dist/resource.d.ts.map +1 -1
- package/dist/resource.js +10 -1
- package/dist/resource.js.map +1 -1
- package/dist/scheduler.d.ts +119 -11
- package/dist/scheduler.d.ts.map +1 -1
- package/dist/scheduler.js +168 -68
- package/dist/scheduler.js.map +1 -1
- package/dist/schema.d.ts +97 -40
- package/dist/schema.d.ts.map +1 -1
- package/dist/schema.js +31 -69
- package/dist/schema.js.map +1 -1
- package/dist/world.d.ts +10 -1
- package/dist/world.d.ts.map +1 -1
- package/dist/world.js +3 -0
- package/dist/world.js.map +1 -1
- package/package.json +1 -1
package/dist/archetype.js
CHANGED
|
@@ -15,10 +15,27 @@ const TICK_SCHEMA = Type.u32();
|
|
|
15
15
|
// ============================================================================
|
|
16
16
|
// Column Utilities
|
|
17
17
|
// ============================================================================
|
|
18
|
+
/**
|
|
19
|
+
* Derives the stride of a column from its length and the archetype capacity.
|
|
20
|
+
* Scalar columns return 1, vector columns return their stride (e.g., 2 for vec2).
|
|
21
|
+
*
|
|
22
|
+
* @internal
|
|
23
|
+
*/
|
|
24
|
+
export function getColumnStride(column, capacity) {
|
|
25
|
+
if (Array.isArray(column)) {
|
|
26
|
+
return 1;
|
|
27
|
+
}
|
|
28
|
+
return column.length / capacity;
|
|
29
|
+
}
|
|
18
30
|
/**
|
|
19
31
|
* Allocates a column based on schema type (TypedArray for primitives, Array for objects).
|
|
20
32
|
*/
|
|
21
33
|
function allocateColumn(schema, capacity) {
|
|
34
|
+
// Vector columns interleave all elements per entity: [x0,y0,x1,y1,...] for stride 2
|
|
35
|
+
if (schema.kind === "vector") {
|
|
36
|
+
const TypedArrayCtor = schema.arrayConstructor;
|
|
37
|
+
return new TypedArrayCtor(capacity * schema.stride);
|
|
38
|
+
}
|
|
22
39
|
if (schema.kind === "typed") {
|
|
23
40
|
const TypedArrayCtor = schema.arrayConstructor;
|
|
24
41
|
return new TypedArrayCtor(capacity);
|
|
@@ -28,25 +45,28 @@ function allocateColumn(schema, capacity) {
|
|
|
28
45
|
/**
|
|
29
46
|
* Resizes a column to new capacity, preserving existing data. Regular arrays need no resize.
|
|
30
47
|
*/
|
|
31
|
-
function resizeColumn(column, newCapacity) {
|
|
48
|
+
function resizeColumn(column, oldCapacity, newCapacity) {
|
|
32
49
|
if (Array.isArray(column)) {
|
|
33
50
|
return column;
|
|
34
51
|
}
|
|
52
|
+
const stride = getColumnStride(column, oldCapacity);
|
|
35
53
|
const TypedArrayCtor = column.constructor;
|
|
36
|
-
const newColumn = new TypedArrayCtor(newCapacity);
|
|
37
|
-
|
|
38
|
-
newColumn.set(column.subarray(0, copyLength));
|
|
54
|
+
const newColumn = new TypedArrayCtor(newCapacity * stride);
|
|
55
|
+
newColumn.set(column.subarray(0, column.length));
|
|
39
56
|
return newColumn;
|
|
40
57
|
}
|
|
41
58
|
/**
|
|
42
59
|
* Clears a column slot (undefined for arrays, 0 for typed arrays).
|
|
43
60
|
*/
|
|
44
|
-
function clearColumn(column, index) {
|
|
61
|
+
function clearColumn(column, index, capacity) {
|
|
45
62
|
if (Array.isArray(column)) {
|
|
46
63
|
column[index] = undefined;
|
|
64
|
+
return;
|
|
47
65
|
}
|
|
48
|
-
|
|
49
|
-
|
|
66
|
+
const stride = getColumnStride(column, capacity);
|
|
67
|
+
const offset = index * stride;
|
|
68
|
+
for (let s = 0; s < stride; s++) {
|
|
69
|
+
column[offset + s] = 0;
|
|
50
70
|
}
|
|
51
71
|
}
|
|
52
72
|
// ============================================================================
|
|
@@ -166,12 +186,12 @@ function ensureArchetypeCapacity(archetype, requiredCapacity) {
|
|
|
166
186
|
}
|
|
167
187
|
for (const fieldColumns of archetype.columns.values()) {
|
|
168
188
|
for (const fieldName in fieldColumns) {
|
|
169
|
-
fieldColumns[fieldName] = resizeColumn(fieldColumns[fieldName], newCapacity);
|
|
189
|
+
fieldColumns[fieldName] = resizeColumn(fieldColumns[fieldName], archetype.capacity, newCapacity);
|
|
170
190
|
}
|
|
171
191
|
}
|
|
172
192
|
for (const componentTicks of archetype.ticks.values()) {
|
|
173
|
-
componentTicks.added = resizeColumn(componentTicks.added, newCapacity);
|
|
174
|
-
componentTicks.changed = resizeColumn(componentTicks.changed, newCapacity);
|
|
193
|
+
componentTicks.added = resizeColumn(componentTicks.added, archetype.capacity, newCapacity);
|
|
194
|
+
componentTicks.changed = resizeColumn(componentTicks.changed, archetype.capacity, newCapacity);
|
|
175
195
|
}
|
|
176
196
|
archetype.capacity = newCapacity;
|
|
177
197
|
}
|
|
@@ -223,7 +243,19 @@ export function removeEntityFromArchetypeByRow(archetype, row) {
|
|
|
223
243
|
archetype.entities[row] = swappedEntityId;
|
|
224
244
|
for (const fieldColumns of archetype.columns.values()) {
|
|
225
245
|
for (const fieldName in fieldColumns) {
|
|
226
|
-
|
|
246
|
+
const column = fieldColumns[fieldName];
|
|
247
|
+
// Vector columns store `stride` contiguous elements per entity
|
|
248
|
+
const stride = getColumnStride(column, archetype.capacity);
|
|
249
|
+
if (stride === 1) {
|
|
250
|
+
column[row] = column[lastIdx];
|
|
251
|
+
}
|
|
252
|
+
else {
|
|
253
|
+
const src = lastIdx * stride;
|
|
254
|
+
const dst = row * stride;
|
|
255
|
+
for (let s = 0; s < stride; s++) {
|
|
256
|
+
column[dst + s] = column[src + s];
|
|
257
|
+
}
|
|
258
|
+
}
|
|
227
259
|
}
|
|
228
260
|
}
|
|
229
261
|
for (const componentTicks of archetype.ticks.values()) {
|
|
@@ -234,12 +266,12 @@ export function removeEntityFromArchetypeByRow(archetype, row) {
|
|
|
234
266
|
archetype.entities.pop();
|
|
235
267
|
for (const fieldColumns of archetype.columns.values()) {
|
|
236
268
|
for (const fieldName in fieldColumns) {
|
|
237
|
-
clearColumn(fieldColumns[fieldName], lastIdx);
|
|
269
|
+
clearColumn(fieldColumns[fieldName], lastIdx, archetype.capacity);
|
|
238
270
|
}
|
|
239
271
|
}
|
|
240
272
|
for (const componentTicks of archetype.ticks.values()) {
|
|
241
|
-
clearColumn(componentTicks.added, lastIdx);
|
|
242
|
-
clearColumn(componentTicks.changed, lastIdx);
|
|
273
|
+
clearColumn(componentTicks.added, lastIdx, archetype.capacity);
|
|
274
|
+
clearColumn(componentTicks.changed, lastIdx, archetype.capacity);
|
|
243
275
|
}
|
|
244
276
|
return swappedEntityId;
|
|
245
277
|
}
|
|
@@ -270,7 +302,20 @@ export function transferEntityToArchetypeByRow(fromArchetype, fromRow, toArchety
|
|
|
270
302
|
if (!destFieldColumns || !sourceFieldColumns)
|
|
271
303
|
continue;
|
|
272
304
|
for (const fieldName in destFieldColumns) {
|
|
273
|
-
|
|
305
|
+
const destCol = destFieldColumns[fieldName];
|
|
306
|
+
const srcCol = sourceFieldColumns[fieldName];
|
|
307
|
+
// Vector columns: copy all `stride` elements per entity
|
|
308
|
+
const stride = getColumnStride(destCol, toArchetype.capacity);
|
|
309
|
+
if (stride === 1) {
|
|
310
|
+
destCol[toRow] = srcCol[fromRow];
|
|
311
|
+
}
|
|
312
|
+
else {
|
|
313
|
+
const dstOffset = toRow * stride;
|
|
314
|
+
const srcOffset = fromRow * stride;
|
|
315
|
+
for (let s = 0; s < stride; s++) {
|
|
316
|
+
destCol[dstOffset + s] = srcCol[srcOffset + s];
|
|
317
|
+
}
|
|
318
|
+
}
|
|
274
319
|
}
|
|
275
320
|
}
|
|
276
321
|
for (const componentId of toArchetype.types) {
|
package/dist/archetype.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"archetype.js","sourceRoot":"","sources":["../src/archetype.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"archetype.js","sourceRoot":"","sources":["../src/archetype.ts"],"names":[],"mappings":"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"}
|
package/dist/component.d.ts
CHANGED
|
@@ -1,8 +1,44 @@
|
|
|
1
1
|
import type { Component, Entity, EntityId, EntityWith, Pair, Relation, Tag } from "./encoding.js";
|
|
2
|
-
import type { InferSchema, InferSchemaRecord, SchemaRecord } from "./schema.js";
|
|
2
|
+
import type { InferSchema, InferSchemaRecord, ScalarFields, SchemaRecord, TypedArrayInstance, VectorFields } from "./schema.js";
|
|
3
3
|
import type { World } from "./world.js";
|
|
4
4
|
export declare function addComponent(world: World, entityId: EntityId, componentId: Entity | Tag | Pair<Relation<Record<string, never>>>): void;
|
|
5
5
|
export declare function addComponent<S extends SchemaRecord>(world: World, entityId: EntityId, componentId: Component<S> | Pair<Relation<S>>, data: InferSchemaRecord<S>): void;
|
|
6
|
+
/**
|
|
7
|
+
* Entry for batch component operations.
|
|
8
|
+
*
|
|
9
|
+
* Either a standalone ID (tag, entity, schema-less pair) or a `[component, data]` tuple
|
|
10
|
+
* for data components and pairs with schemas.
|
|
11
|
+
*/
|
|
12
|
+
export type ComponentEntry = EntityId | readonly [EntityId, Record<string, unknown>];
|
|
13
|
+
/**
|
|
14
|
+
* Validates each entry in a component entries tuple at compile time.
|
|
15
|
+
*
|
|
16
|
+
* Data components and pairs with schemas require matching typed data.
|
|
17
|
+
* Tags, entities, and schema-less pairs pass through unchanged.
|
|
18
|
+
*/
|
|
19
|
+
export type ValidateEntries<T extends readonly ComponentEntry[]> = {
|
|
20
|
+
[I in keyof T]: T[I] extends readonly [infer C, unknown] ? C extends Component<infer S> ? readonly [C, InferSchemaRecord<S>] : C extends Pair<Relation<infer S>> ? S extends Record<string, never> ? C : readonly [C, InferSchemaRecord<S>] : C extends Entity | Tag ? C : T[I] : T[I] extends Component<infer S> ? readonly [T[I], InferSchemaRecord<S>] : T[I] extends Pair<Relation<infer S>> ? S extends Record<string, never> ? T[I] : readonly [T[I], InferSchemaRecord<S>] : T[I];
|
|
21
|
+
};
|
|
22
|
+
/**
|
|
23
|
+
* Add multiple components to an entity in one call.
|
|
24
|
+
*
|
|
25
|
+
* Each entry is either a standalone ID (tag/entity/schema-less pair) or a
|
|
26
|
+
* `[component, data]` tuple for data components and pairs with schemas.
|
|
27
|
+
*
|
|
28
|
+
* @param world - World instance
|
|
29
|
+
* @param entityId - Entity to modify
|
|
30
|
+
* @param entries - Array of component entries
|
|
31
|
+
*
|
|
32
|
+
* @example
|
|
33
|
+
* ```typescript
|
|
34
|
+
* addComponents(world, entity, [
|
|
35
|
+
* [Position, { x: 0, y: 0 }],
|
|
36
|
+
* [Velocity, { vx: 1, vy: 0 }],
|
|
37
|
+
* Player,
|
|
38
|
+
* ]);
|
|
39
|
+
* ```
|
|
40
|
+
*/
|
|
41
|
+
export declare function addComponents<const T extends readonly ComponentEntry[]>(world: World, entityId: EntityId, entries: T & ValidateEntries<T>): void;
|
|
6
42
|
/**
|
|
7
43
|
* Remove component from entity.
|
|
8
44
|
*
|
|
@@ -51,9 +87,9 @@ export declare function hasComponent<C extends EntityId>(world: World, entityId:
|
|
|
51
87
|
* const x = getComponentValue(world, entity, Position, 'x');
|
|
52
88
|
* ```
|
|
53
89
|
*/
|
|
54
|
-
export declare function getComponentValue<S extends SchemaRecord, N extends string, K extends
|
|
55
|
-
export declare function getComponentValue<S extends SchemaRecord, N extends string, K extends
|
|
56
|
-
export declare function getComponentValue<S extends SchemaRecord, K extends
|
|
90
|
+
export declare function getComponentValue<S extends SchemaRecord, N extends string, K extends ScalarFields<S>>(world: World, entityId: EntityWith<Component<S, N>>, componentId: Component<S, N>, fieldName: K): InferSchema<S[K]>;
|
|
91
|
+
export declare function getComponentValue<S extends SchemaRecord, N extends string, K extends ScalarFields<S>>(world: World, entityId: EntityWith<Pair<Relation<S, N>>>, componentId: Pair<Relation<S, N>>, fieldName: K): InferSchema<S[K]>;
|
|
92
|
+
export declare function getComponentValue<S extends SchemaRecord, K extends ScalarFields<S>>(world: World, entityId: EntityId, componentId: Component<S> | Pair<Relation<S>>, fieldName: K): InferSchema<S[K]> | undefined;
|
|
57
93
|
/**
|
|
58
94
|
* Set component field value.
|
|
59
95
|
*
|
|
@@ -69,9 +105,9 @@ export declare function getComponentValue<S extends SchemaRecord, K extends keyo
|
|
|
69
105
|
* setComponentValue(world, entity, Position, 'x', 10.0);
|
|
70
106
|
* ```
|
|
71
107
|
*/
|
|
72
|
-
export declare function setComponentValue<S extends SchemaRecord, N extends string, K extends
|
|
73
|
-
export declare function setComponentValue<S extends SchemaRecord, N extends string, K extends
|
|
74
|
-
export declare function setComponentValue<S extends SchemaRecord, K extends
|
|
108
|
+
export declare function setComponentValue<S extends SchemaRecord, N extends string, K extends ScalarFields<S>>(world: World, entityId: EntityWith<Component<S, N>>, componentId: Component<S, N>, fieldName: K, value: InferSchema<S[K]>): void;
|
|
109
|
+
export declare function setComponentValue<S extends SchemaRecord, N extends string, K extends ScalarFields<S>>(world: World, entityId: EntityWith<Pair<Relation<S, N>>>, componentId: Pair<Relation<S, N>>, fieldName: K, value: InferSchema<S[K]>): void;
|
|
110
|
+
export declare function setComponentValue<S extends SchemaRecord, K extends ScalarFields<S>>(world: World, entityId: EntityId, componentId: Component<S> | Pair<Relation<S>>, fieldName: K, value: InferSchema<S[K]>): void;
|
|
75
111
|
/**
|
|
76
112
|
* Mark a component as changed without setting a value.
|
|
77
113
|
*
|
|
@@ -83,6 +119,69 @@ export declare function setComponentValue<S extends SchemaRecord, K extends keyo
|
|
|
83
119
|
* markComponentChanged(world, entity, Position); // Notify change tracking
|
|
84
120
|
*/
|
|
85
121
|
export declare function emitComponentChanged(world: World, entityId: EntityId, componentId: EntityId): void;
|
|
122
|
+
/**
|
|
123
|
+
* Get vector component field value as a tuple copy.
|
|
124
|
+
*
|
|
125
|
+
* Returns a new array containing the vector elements. Mutations to the
|
|
126
|
+
* returned array do not affect the stored data.
|
|
127
|
+
*
|
|
128
|
+
* @param world - World instance
|
|
129
|
+
* @param entityId - Entity to query
|
|
130
|
+
* @param componentId - Data component with vector field
|
|
131
|
+
* @param fieldName - Vector field name
|
|
132
|
+
* @returns Tuple copy of vector value, or undefined if component/field not present
|
|
133
|
+
*
|
|
134
|
+
* @example
|
|
135
|
+
* ```typescript
|
|
136
|
+
* const Position = defineComponent("Position", { value: Type.f32(2) });
|
|
137
|
+
* const pos = getComponentVectorValue(world, entity, Position, "value"); // [number, number]
|
|
138
|
+
* ```
|
|
139
|
+
*/
|
|
140
|
+
export declare function getComponentVectorValue<S extends SchemaRecord, N extends string, K extends VectorFields<S>>(world: World, entityId: EntityWith<Component<S, N>>, componentId: Component<S, N>, fieldName: K): InferSchema<S[K]>;
|
|
141
|
+
export declare function getComponentVectorValue<S extends SchemaRecord, K extends VectorFields<S>>(world: World, entityId: EntityId, componentId: Component<S>, fieldName: K): InferSchema<S[K]> | undefined;
|
|
142
|
+
/**
|
|
143
|
+
* Set vector component field value from a tuple.
|
|
144
|
+
*
|
|
145
|
+
* Copies the tuple elements into the interleaved column. Updates change
|
|
146
|
+
* detection tick and fires componentChanged observer.
|
|
147
|
+
*
|
|
148
|
+
* @param world - World instance
|
|
149
|
+
* @param entityId - Entity to modify
|
|
150
|
+
* @param componentId - Data component with vector field
|
|
151
|
+
* @param fieldName - Vector field name
|
|
152
|
+
* @param value - Tuple of values to set
|
|
153
|
+
*
|
|
154
|
+
* @example
|
|
155
|
+
* ```typescript
|
|
156
|
+
* const Position = defineComponent("Position", { value: Type.f32(2) });
|
|
157
|
+
* setComponentVectorValue(world, entity, Position, "value", [10, 20]);
|
|
158
|
+
* ```
|
|
159
|
+
*/
|
|
160
|
+
export declare function setComponentVectorValue<S extends SchemaRecord, N extends string, K extends VectorFields<S>>(world: World, entityId: EntityWith<Component<S, N>>, componentId: Component<S, N>, fieldName: K, value: InferSchema<S[K]>): void;
|
|
161
|
+
export declare function setComponentVectorValue<S extends SchemaRecord, K extends VectorFields<S>>(world: World, entityId: EntityId, componentId: Component<S>, fieldName: K, value: InferSchema<S[K]>): void;
|
|
162
|
+
/**
|
|
163
|
+
* Get a zero-copy typed array view into a vector component field.
|
|
164
|
+
*
|
|
165
|
+
* Returns a `subarray` view that shares the underlying buffer. Mutations
|
|
166
|
+
* to the view directly modify the stored data. **The view is invalidated
|
|
167
|
+
* if the archetype resizes** (e.g., when new entities cause capacity growth).
|
|
168
|
+
* Use within a system tick; do not cache across frames.
|
|
169
|
+
*
|
|
170
|
+
* @param world - World instance
|
|
171
|
+
* @param entityId - Entity to query
|
|
172
|
+
* @param componentId - Data component with vector field
|
|
173
|
+
* @param fieldName - Vector field name
|
|
174
|
+
* @returns Typed array view into the vector, or undefined if component/field not present
|
|
175
|
+
*
|
|
176
|
+
* @example
|
|
177
|
+
* ```typescript
|
|
178
|
+
* const Position = defineComponent("Position", { value: Type.f32(2) });
|
|
179
|
+
* const view = getComponentVectorView(world, entity, Position, "value"); // Float32Array
|
|
180
|
+
* view[0] += 1.0; // direct mutation, no copy
|
|
181
|
+
* ```
|
|
182
|
+
*/
|
|
183
|
+
export declare function getComponentVectorView<S extends SchemaRecord, N extends string, K extends VectorFields<S>>(world: World, entityId: EntityWith<Component<S, N>>, componentId: Component<S, N>, fieldName: K): TypedArrayInstance;
|
|
184
|
+
export declare function getComponentVectorView<S extends SchemaRecord, K extends VectorFields<S>>(world: World, entityId: EntityId, componentId: Component<S>, fieldName: K): TypedArrayInstance | undefined;
|
|
86
185
|
/**
|
|
87
186
|
* Remove component from all entities that have it.
|
|
88
187
|
*
|
package/dist/component.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"component.d.ts","sourceRoot":"","sources":["../src/component.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,eAAe,CAAC;AAMlG,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"component.d.ts","sourceRoot":"","sources":["../src/component.ts"],"names":[],"mappings":"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"}
|
package/dist/component.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { archetypeTraverseAdd, archetypeTraverseRemove, destroyArchetype } from "./archetype.js";
|
|
1
|
+
import { archetypeTraverseAdd, archetypeTraverseRemove, destroyArchetype, getColumnStride } from "./archetype.js";
|
|
2
2
|
import { encodePair, isPair } from "./encoding.js";
|
|
3
3
|
import { ensureEntity, moveEntityToArchetype } from "./entity.js";
|
|
4
4
|
import { fireObserverEvent } from "./observer.js";
|
|
@@ -49,15 +49,50 @@ export function addComponent(world, entityId, componentId, data) {
|
|
|
49
49
|
toArchetype = archetypeTraverseAdd(world, toArchetype, encodePair(relation, Wildcard));
|
|
50
50
|
}
|
|
51
51
|
moveEntityToArchetype(world, entityMeta, toArchetype);
|
|
52
|
+
// Write initial field data inline to avoid repeated ensureEntity lookups
|
|
53
|
+
// and support stride-aware writes for vector fields
|
|
52
54
|
if (data) {
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
55
|
+
const fieldColumns = entityMeta.archetype.columns.get(componentId);
|
|
56
|
+
if (fieldColumns) {
|
|
57
|
+
for (const fieldName in data) {
|
|
58
|
+
const value = data[fieldName];
|
|
59
|
+
const column = fieldColumns[fieldName];
|
|
60
|
+
if (!column) {
|
|
61
|
+
continue;
|
|
62
|
+
}
|
|
63
|
+
const stride = getColumnStride(column, entityMeta.archetype.capacity);
|
|
64
|
+
if (stride === 1) {
|
|
65
|
+
column[entityMeta.row] = value;
|
|
66
|
+
}
|
|
67
|
+
else {
|
|
68
|
+
const offset = entityMeta.row * stride;
|
|
69
|
+
for (let i = 0; i < stride; i++) {
|
|
70
|
+
column[offset + i] = value[i];
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
const ticks = entityMeta.archetype.ticks.get(componentId);
|
|
75
|
+
if (ticks) {
|
|
76
|
+
ticks.changed[entityMeta.row] = world.execution.tick;
|
|
77
|
+
}
|
|
78
|
+
fireObserverEvent(world, "componentChanged", componentId, entityId);
|
|
56
79
|
}
|
|
57
80
|
}
|
|
58
81
|
// Fire after move so observers can access component data
|
|
59
82
|
fireObserverEvent(world, "componentAdded", componentId, entityId);
|
|
60
83
|
}
|
|
84
|
+
export function addComponents(world, entityId, entries) {
|
|
85
|
+
for (let i = 0; i < entries.length; i++) {
|
|
86
|
+
const entry = entries[i];
|
|
87
|
+
if (typeof entry === "number") {
|
|
88
|
+
addComponent(world, entityId, entry);
|
|
89
|
+
}
|
|
90
|
+
else {
|
|
91
|
+
const [componentId, data] = entry;
|
|
92
|
+
addComponent(world, entityId, componentId, data);
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
}
|
|
61
96
|
/**
|
|
62
97
|
* Remove component from entity.
|
|
63
98
|
*
|
|
@@ -181,6 +216,53 @@ export function emitComponentChanged(world, entityId, componentId) {
|
|
|
181
216
|
}
|
|
182
217
|
fireObserverEvent(world, "componentChanged", componentId, entityId);
|
|
183
218
|
}
|
|
219
|
+
export function getComponentVectorValue(world, entityId, componentId, fieldName) {
|
|
220
|
+
const { archetype, row } = ensureEntity(world, entityId);
|
|
221
|
+
const fieldColumns = archetype.columns.get(componentId);
|
|
222
|
+
if (!fieldColumns)
|
|
223
|
+
return;
|
|
224
|
+
const column = fieldColumns[fieldName];
|
|
225
|
+
if (!column)
|
|
226
|
+
return;
|
|
227
|
+
const stride = getColumnStride(column, archetype.capacity);
|
|
228
|
+
const offset = row * stride;
|
|
229
|
+
const result = [];
|
|
230
|
+
for (let i = 0; i < stride; i++) {
|
|
231
|
+
result[i] = column[offset + i];
|
|
232
|
+
}
|
|
233
|
+
return result;
|
|
234
|
+
}
|
|
235
|
+
export function setComponentVectorValue(world, entityId, componentId, fieldName, value) {
|
|
236
|
+
const { archetype, row } = ensureEntity(world, entityId);
|
|
237
|
+
const fieldColumns = archetype.columns.get(componentId);
|
|
238
|
+
if (!fieldColumns)
|
|
239
|
+
return;
|
|
240
|
+
const column = fieldColumns[fieldName];
|
|
241
|
+
if (!column)
|
|
242
|
+
return;
|
|
243
|
+
const stride = getColumnStride(column, archetype.capacity);
|
|
244
|
+
const offset = row * stride;
|
|
245
|
+
for (let i = 0; i < stride; i++) {
|
|
246
|
+
column[offset + i] = value[i];
|
|
247
|
+
}
|
|
248
|
+
const ticks = archetype.ticks.get(componentId);
|
|
249
|
+
if (ticks) {
|
|
250
|
+
ticks.changed[row] = world.execution.tick;
|
|
251
|
+
}
|
|
252
|
+
fireObserverEvent(world, "componentChanged", componentId, entityId);
|
|
253
|
+
}
|
|
254
|
+
export function getComponentVectorView(world, entityId, componentId, fieldName) {
|
|
255
|
+
const { archetype, row } = ensureEntity(world, entityId);
|
|
256
|
+
const fieldColumns = archetype.columns.get(componentId);
|
|
257
|
+
if (!fieldColumns)
|
|
258
|
+
return;
|
|
259
|
+
const column = fieldColumns[fieldName];
|
|
260
|
+
if (!column || Array.isArray(column))
|
|
261
|
+
return;
|
|
262
|
+
const stride = getColumnStride(column, archetype.capacity);
|
|
263
|
+
const offset = row * stride;
|
|
264
|
+
return column.subarray(offset, offset + stride);
|
|
265
|
+
}
|
|
184
266
|
// ============================================================================
|
|
185
267
|
// Component Cleanup
|
|
186
268
|
// ============================================================================
|
package/dist/component.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"component.js","sourceRoot":"","sources":["../src/component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,uBAAuB,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"component.js","sourceRoot":"","sources":["../src/component.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generic directed acyclic graph.
|
|
3
|
+
*
|
|
4
|
+
* Stores nodes and directed edges with adjacency lists in both directions.
|
|
5
|
+
* Provides topological sort with caller-supplied comparator for deterministic
|
|
6
|
+
* tiebreaking. Cycle detection occurs during sort.
|
|
7
|
+
*
|
|
8
|
+
* @example
|
|
9
|
+
* ```typescript
|
|
10
|
+
* const dag = createDag<string>();
|
|
11
|
+
* addNode(dag, "a");
|
|
12
|
+
* addNode(dag, "b");
|
|
13
|
+
* addEdge(dag, "a", "b");
|
|
14
|
+
* const sorted = topologicalSort(dag); // ["a", "b"]
|
|
15
|
+
* ```
|
|
16
|
+
*/
|
|
17
|
+
export type DirectedAcyclicGraph<N> = {
|
|
18
|
+
/** @internal */
|
|
19
|
+
nodes: Set<N>;
|
|
20
|
+
/** @internal Forward adjacency: node -> Set of successors. */
|
|
21
|
+
forward: Map<N, Set<N>>;
|
|
22
|
+
/** @internal Reverse adjacency: node -> Set of predecessors. */
|
|
23
|
+
reverse: Map<N, Set<N>>;
|
|
24
|
+
/** @internal Cached topological sort result. */
|
|
25
|
+
cachedSort: N[] | null;
|
|
26
|
+
};
|
|
27
|
+
/**
|
|
28
|
+
* Create an empty directed acyclic graph.
|
|
29
|
+
*
|
|
30
|
+
* @example
|
|
31
|
+
* ```typescript
|
|
32
|
+
* const dag = createDag<string>();
|
|
33
|
+
* ```
|
|
34
|
+
*/
|
|
35
|
+
export declare function createDag<N>(): DirectedAcyclicGraph<N>;
|
|
36
|
+
/**
|
|
37
|
+
* Add a node to the graph. Idempotent.
|
|
38
|
+
*
|
|
39
|
+
* @param dag - Graph instance
|
|
40
|
+
* @param node - Node to add
|
|
41
|
+
*
|
|
42
|
+
* @example
|
|
43
|
+
* ```typescript
|
|
44
|
+
* addNode(dag, "physics");
|
|
45
|
+
* ```
|
|
46
|
+
*/
|
|
47
|
+
export declare function addNode<N>(dag: DirectedAcyclicGraph<N>, node: N): void;
|
|
48
|
+
/**
|
|
49
|
+
* Add a directed edge from one node to another. Idempotent.
|
|
50
|
+
* Both nodes must already exist in the graph.
|
|
51
|
+
*
|
|
52
|
+
* @param dag - Graph instance
|
|
53
|
+
* @param from - Source node
|
|
54
|
+
* @param to - Target node
|
|
55
|
+
*
|
|
56
|
+
* @example
|
|
57
|
+
* ```typescript
|
|
58
|
+
* addEdge(dag, "a", "b"); // a must run before b
|
|
59
|
+
* ```
|
|
60
|
+
*/
|
|
61
|
+
export declare function addEdge<N>(dag: DirectedAcyclicGraph<N>, from: N, to: N): void;
|
|
62
|
+
/**
|
|
63
|
+
* Remove a directed edge. Idempotent.
|
|
64
|
+
*
|
|
65
|
+
* @param dag - Graph instance
|
|
66
|
+
* @param from - Source node
|
|
67
|
+
* @param to - Target node
|
|
68
|
+
*
|
|
69
|
+
* @example
|
|
70
|
+
* ```typescript
|
|
71
|
+
* removeEdge(dag, "a", "b");
|
|
72
|
+
* ```
|
|
73
|
+
*/
|
|
74
|
+
export declare function removeEdge<N>(dag: DirectedAcyclicGraph<N>, from: N, to: N): void;
|
|
75
|
+
/**
|
|
76
|
+
* Remove a node and all its connected edges. Idempotent.
|
|
77
|
+
*
|
|
78
|
+
* @param dag - Graph instance
|
|
79
|
+
* @param node - Node to remove
|
|
80
|
+
*
|
|
81
|
+
* @example
|
|
82
|
+
* ```typescript
|
|
83
|
+
* removeNode(dag, "obsolete");
|
|
84
|
+
* ```
|
|
85
|
+
*/
|
|
86
|
+
export declare function removeNode<N>(dag: DirectedAcyclicGraph<N>, node: N): void;
|
|
87
|
+
/**
|
|
88
|
+
* Get all nodes in the graph.
|
|
89
|
+
*
|
|
90
|
+
* @internal
|
|
91
|
+
*/
|
|
92
|
+
export declare function getNodes<N>(dag: DirectedAcyclicGraph<N>): ReadonlySet<N>;
|
|
93
|
+
/**
|
|
94
|
+
* Get successors (outgoing neighbors) of a node.
|
|
95
|
+
*
|
|
96
|
+
* @internal
|
|
97
|
+
*/
|
|
98
|
+
export declare function getSuccessors<N>(dag: DirectedAcyclicGraph<N>, node: N): ReadonlySet<N>;
|
|
99
|
+
/**
|
|
100
|
+
* Get predecessors (incoming neighbors) of a node.
|
|
101
|
+
*
|
|
102
|
+
* @internal
|
|
103
|
+
*/
|
|
104
|
+
export declare function getPredecessors<N>(dag: DirectedAcyclicGraph<N>, node: N): ReadonlySet<N>;
|
|
105
|
+
/**
|
|
106
|
+
* Topological sort via Kahn's algorithm.
|
|
107
|
+
*
|
|
108
|
+
* Returns nodes in dependency order (sources first). Uses the optional
|
|
109
|
+
* comparator for deterministic tiebreaking among nodes with no ordering
|
|
110
|
+
* constraint. Results are cached until the graph is mutated.
|
|
111
|
+
*
|
|
112
|
+
* @param dag - Graph instance
|
|
113
|
+
* @param comparator - Optional comparison function for tiebreaking
|
|
114
|
+
* @returns Sorted array of nodes
|
|
115
|
+
* @throws Error if the graph contains a cycle
|
|
116
|
+
*
|
|
117
|
+
* @example
|
|
118
|
+
* ```typescript
|
|
119
|
+
* const sorted = topologicalSort(dag, (a, b) => a.localeCompare(b));
|
|
120
|
+
* ```
|
|
121
|
+
*/
|
|
122
|
+
export declare function topologicalSort<N>(dag: DirectedAcyclicGraph<N>, comparator?: (a: N, b: N) => number): N[];
|
|
123
|
+
//# sourceMappingURL=directed-acyclic-graph.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"directed-acyclic-graph.d.ts","sourceRoot":"","sources":["../src/directed-acyclic-graph.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;GAeG;AACH,MAAM,MAAM,oBAAoB,CAAC,CAAC,IAAI;IACpC,gBAAgB;IAChB,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;IACd,8DAA8D;IAC9D,OAAO,EAAE,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACxB,gEAAgE;IAChE,OAAO,EAAE,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACxB,gDAAgD;IAChD,UAAU,EAAE,CAAC,EAAE,GAAG,IAAI,CAAC;CACxB,CAAC;AAMF;;;;;;;GAOG;AACH,wBAAgB,SAAS,CAAC,CAAC,KAAK,oBAAoB,CAAC,CAAC,CAAC,CAOtD;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,OAAO,CAAC,CAAC,EAAE,GAAG,EAAE,oBAAoB,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,GAAG,IAAI,CAUtE;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,OAAO,CAAC,CAAC,EAAE,GAAG,EAAE,oBAAoB,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,IAAI,CAW7E;AAMD;;;;;;;;;;;GAWG;AACH,wBAAgB,UAAU,CAAC,CAAC,EAAE,GAAG,EAAE,oBAAoB,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,IAAI,CAKhF;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,UAAU,CAAC,CAAC,EAAE,GAAG,EAAE,oBAAoB,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,GAAG,IAAI,CA4BzE;AASD;;;;GAIG;AACH,wBAAgB,QAAQ,CAAC,CAAC,EAAE,GAAG,EAAE,oBAAoB,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,CAExE;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,CAAC,EAAE,GAAG,EAAE,oBAAoB,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,CAEtF;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,CAAC,EAAE,GAAG,EAAE,oBAAoB,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,CAExF;AA2BD;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,eAAe,CAAC,CAAC,EAAE,GAAG,EAAE,oBAAoB,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,MAAM,GAAG,CAAC,EAAE,CA6DzG"}
|