iris-ecs 0.0.3 → 0.0.5
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 +104 -70
- package/dist/component.d.ts +7 -3
- package/dist/component.d.ts.map +1 -1
- package/dist/component.js +11 -41
- package/dist/component.js.map +1 -1
- package/dist/encoding.d.ts +10 -0
- package/dist/encoding.d.ts.map +1 -1
- package/dist/encoding.js.map +1 -1
- package/dist/event.d.ts +23 -7
- package/dist/event.d.ts.map +1 -1
- package/dist/event.js +68 -50
- package/dist/event.js.map +1 -1
- package/dist/filters.d.ts +16 -30
- package/dist/filters.d.ts.map +1 -1
- package/dist/filters.js +78 -66
- package/dist/filters.js.map +1 -1
- package/dist/index.d.ts +6 -6
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -3
- package/dist/index.js.map +1 -1
- package/dist/observer.d.ts +0 -1
- package/dist/observer.d.ts.map +1 -1
- package/dist/observer.js.map +1 -1
- package/dist/query.d.ts +67 -65
- package/dist/query.d.ts.map +1 -1
- package/dist/query.js +48 -106
- package/dist/query.js.map +1 -1
- package/dist/removal.d.ts +2 -2
- package/dist/removal.js +2 -2
- package/dist/scheduler.d.ts +65 -2
- package/dist/scheduler.d.ts.map +1 -1
- package/dist/scheduler.js +63 -4
- package/dist/scheduler.js.map +1 -1
- package/dist/world.d.ts +4 -0
- package/dist/world.d.ts.map +1 -1
- package/dist/world.js +7 -11
- package/dist/world.js.map +1 -1
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -37,11 +37,12 @@ import {
|
|
|
37
37
|
createWorld,
|
|
38
38
|
createEntity,
|
|
39
39
|
defineComponent,
|
|
40
|
+
defineSystem,
|
|
40
41
|
defineTag,
|
|
41
42
|
addComponent,
|
|
42
43
|
getComponentValue,
|
|
43
44
|
setComponentValue,
|
|
44
|
-
|
|
45
|
+
queryEntities,
|
|
45
46
|
addSystem,
|
|
46
47
|
runOnce,
|
|
47
48
|
Type,
|
|
@@ -60,18 +61,20 @@ addComponent(world, player, Position, { x: 0, y: 0 });
|
|
|
60
61
|
addComponent(world, player, Velocity, { x: 1, y: 0 });
|
|
61
62
|
addComponent(world, player, Player);
|
|
62
63
|
|
|
63
|
-
// Define a system
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
}
|
|
64
|
+
// Define a system -- init runs once, tick runs every frame
|
|
65
|
+
const movementSystem = defineSystem("movementSystem", (world) => {
|
|
66
|
+
return () => {
|
|
67
|
+
queryEntities(world, [Position, Velocity], (e) => {
|
|
68
|
+
const px = getComponentValue(world, e, Position, "x");
|
|
69
|
+
const py = getComponentValue(world, e, Position, "y");
|
|
70
|
+
const vx = getComponentValue(world, e, Velocity, "x");
|
|
71
|
+
const vy = getComponentValue(world, e, Velocity, "y");
|
|
72
|
+
|
|
73
|
+
setComponentValue(world, e, Position, "x", px + vx);
|
|
74
|
+
setComponentValue(world, e, Position, "y", py + vy);
|
|
75
|
+
});
|
|
76
|
+
};
|
|
77
|
+
});
|
|
75
78
|
|
|
76
79
|
// Register and run
|
|
77
80
|
addSystem(world, movementSystem);
|
|
@@ -246,9 +249,9 @@ if (hasResource(world, Time)) {
|
|
|
246
249
|
Resources use the **component-on-self pattern** internally -- the component is added to itself as an entity. This means resources appear in queries:
|
|
247
250
|
|
|
248
251
|
```typescript
|
|
249
|
-
|
|
252
|
+
queryEntities(world, [Time], (entity) => {
|
|
250
253
|
// entity === Time (the component ID itself)
|
|
251
|
-
}
|
|
254
|
+
});
|
|
252
255
|
```
|
|
253
256
|
|
|
254
257
|
Use resources for frame timing, configuration, asset registry, input state, physics settings, or any global data that systems need but doesn't belong to a specific entity.
|
|
@@ -262,7 +265,7 @@ import {
|
|
|
262
265
|
defineRelation,
|
|
263
266
|
pair,
|
|
264
267
|
addComponent,
|
|
265
|
-
|
|
268
|
+
queryEntities,
|
|
266
269
|
getRelationTargets,
|
|
267
270
|
Wildcard,
|
|
268
271
|
} from "iris-ecs";
|
|
@@ -277,9 +280,9 @@ addComponent(world, player, pair(ChildOf, scene));
|
|
|
277
280
|
addComponent(world, weapon, pair(ChildOf, player));
|
|
278
281
|
|
|
279
282
|
// Query children of a specific parent
|
|
280
|
-
|
|
283
|
+
queryEntities(world, [pair(ChildOf, scene)], (child) => {
|
|
281
284
|
// child === player
|
|
282
|
-
}
|
|
285
|
+
});
|
|
283
286
|
|
|
284
287
|
// Get all targets for a relation on an entity
|
|
285
288
|
const parents = getRelationTargets(world, weapon, ChildOf); // [player]
|
|
@@ -292,11 +295,13 @@ Use relations for hierarchies (parent/child), ownership, targeting, dependencies
|
|
|
292
295
|
Use `Wildcard` to match any relation or target:
|
|
293
296
|
|
|
294
297
|
```typescript
|
|
298
|
+
import { collectEntities } from "iris-ecs";
|
|
299
|
+
|
|
295
300
|
// All entities with ANY ChildOf relation (any target)
|
|
296
|
-
const allChildren =
|
|
301
|
+
const allChildren = collectEntities(world, [pair(ChildOf, Wildcard)]);
|
|
297
302
|
|
|
298
303
|
// All entities targeting a specific entity (any relation)
|
|
299
|
-
const relatedToPlayer =
|
|
304
|
+
const relatedToPlayer = collectEntities(world, [pair(Wildcard, player)]);
|
|
300
305
|
```
|
|
301
306
|
|
|
302
307
|
#### Exclusive Relations
|
|
@@ -372,19 +377,19 @@ Adding or removing a component moves an entity to a different archetype. This is
|
|
|
372
377
|
|
|
373
378
|
### Queries
|
|
374
379
|
|
|
375
|
-
A **Query** fetches entities that match a set of component constraints. Use `
|
|
380
|
+
A **Query** fetches entities that match a set of component constraints. Use `queryEntities()` to iterate matches, `queryFirstEntity()` for singletons, or `collectEntities()` for array results.
|
|
376
381
|
|
|
377
382
|
```typescript
|
|
378
|
-
import {
|
|
383
|
+
import { queryEntities, queryFirstEntity, not } from "iris-ecs";
|
|
379
384
|
|
|
380
385
|
// Iterate all entities with Position and Velocity
|
|
381
|
-
|
|
386
|
+
queryEntities(world, [Position, Velocity], (entity) => {
|
|
382
387
|
const x = getComponentValue(world, entity, Position, "x");
|
|
383
388
|
// ...
|
|
384
|
-
}
|
|
389
|
+
});
|
|
385
390
|
|
|
386
391
|
// Get a singleton (first match or undefined)
|
|
387
|
-
const player =
|
|
392
|
+
const player = queryFirstEntity(world, [Player, not(Dead)]);
|
|
388
393
|
```
|
|
389
394
|
|
|
390
395
|
💡 **Tip:** Queries are cached internally -- the same component set returns the same cached query.
|
|
@@ -395,45 +400,54 @@ Use `not()` to exclude entities that have a component:
|
|
|
395
400
|
|
|
396
401
|
```typescript
|
|
397
402
|
// All entities with Position but WITHOUT the Dead tag
|
|
398
|
-
|
|
403
|
+
queryEntities(world, [Position, not(Dead)], (entity) => {
|
|
399
404
|
// Only living entities
|
|
400
|
-
}
|
|
405
|
+
});
|
|
401
406
|
|
|
402
407
|
// Multiple exclusions
|
|
403
|
-
|
|
408
|
+
queryEntities(world, [Position, Velocity, not(Frozen), not(Disabled)], (entity) => {
|
|
404
409
|
// Entities that can move
|
|
405
|
-
}
|
|
410
|
+
});
|
|
406
411
|
```
|
|
407
412
|
|
|
408
413
|
#### Filters and Archetypes (Under the Hood)
|
|
409
414
|
|
|
410
|
-
Queries match archetypes where all required components are present and no excluded components exist. Matched archetypes are cached and auto-update when
|
|
415
|
+
Queries match archetypes where all required components are present and no excluded components exist. Matched archetypes are cached and auto-update when archetypes are created or destroyed.
|
|
411
416
|
|
|
412
417
|
### Systems
|
|
413
418
|
|
|
414
419
|
A **System** is a function that operates on the world. Systems query entities, read and write components, emit events, and implement game logic.
|
|
415
420
|
|
|
421
|
+
Use `defineSystem()` to create systems with init / tick separation. The init function runs once at registration time -- use it to cache queries, action getters, and one-time setup. The returned tick function runs every frame.
|
|
422
|
+
|
|
423
|
+
Systems are registered with `addSystem()` and executed automatically when the world runs.
|
|
424
|
+
|
|
416
425
|
```typescript
|
|
417
426
|
import {
|
|
427
|
+
defineSystem,
|
|
418
428
|
addSystem,
|
|
419
429
|
run,
|
|
420
430
|
stop,
|
|
421
|
-
|
|
431
|
+
queryEntities,
|
|
422
432
|
getComponentValue,
|
|
423
433
|
setComponentValue,
|
|
434
|
+
getResourceValue,
|
|
424
435
|
} from "iris-ecs";
|
|
425
436
|
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
const
|
|
431
|
-
const vy = getComponentValue(world, e, Velocity, "y");
|
|
437
|
+
const movementSystem = defineSystem("movementSystem", (world) => {
|
|
438
|
+
// Init: runs once at addSystem() time
|
|
439
|
+
return () => {
|
|
440
|
+
// Tick: runs every frame
|
|
441
|
+
const dt = getResourceValue(world, Time, "delta") ?? 0;
|
|
432
442
|
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
443
|
+
queryEntities(world, [Position, Velocity], (e) => {
|
|
444
|
+
const x = getComponentValue(world, e, Position, "x");
|
|
445
|
+
const vx = getComponentValue(world, e, Velocity, "x");
|
|
446
|
+
|
|
447
|
+
setComponentValue(world, e, Position, "x", x + vx * dt);
|
|
448
|
+
});
|
|
449
|
+
};
|
|
450
|
+
});
|
|
437
451
|
|
|
438
452
|
addSystem(world, movementSystem);
|
|
439
453
|
run(world);
|
|
@@ -442,16 +456,34 @@ run(world);
|
|
|
442
456
|
await stop(world);
|
|
443
457
|
```
|
|
444
458
|
|
|
445
|
-
|
|
459
|
+
#### Plain Function Systems
|
|
460
|
+
|
|
461
|
+
For simple systems that don't need one-time setup, plain functions also work, and the function's name becomes the system identifier.
|
|
462
|
+
|
|
463
|
+
```typescript
|
|
464
|
+
function debugSystem(world) {
|
|
465
|
+
queryEntities(world, [Position], (e) => {
|
|
466
|
+
console.log(getComponentValue(world, e, Position, "x"));
|
|
467
|
+
});
|
|
468
|
+
}
|
|
469
|
+
|
|
470
|
+
addSystem(world, debugSystem);
|
|
471
|
+
```
|
|
446
472
|
|
|
447
473
|
#### Ordering Constraints
|
|
448
474
|
|
|
449
475
|
Control execution order with `before` and `after` options:
|
|
450
476
|
|
|
451
477
|
```typescript
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
478
|
+
const inputSystem = defineSystem("inputSystem", (world) => {
|
|
479
|
+
return () => { /* read input */ };
|
|
480
|
+
});
|
|
481
|
+
const physicsSystem = defineSystem("physicsSystem", (world) => {
|
|
482
|
+
return () => { /* simulate physics */ };
|
|
483
|
+
});
|
|
484
|
+
const renderSystem = defineSystem("renderSystem", (world) => {
|
|
485
|
+
return () => { /* draw frame */ };
|
|
486
|
+
});
|
|
455
487
|
|
|
456
488
|
addSystem(world, inputSystem);
|
|
457
489
|
addSystem(world, physicsSystem, { after: "inputSystem" });
|
|
@@ -461,7 +493,7 @@ addSystem(world, renderSystem, { after: "physicsSystem" });
|
|
|
461
493
|
|
|
462
494
|
Without constraints, systems run in registration order. Use arrays for multiple constraints: `{ after: ["inputSystem", "audioSystem"] }`.
|
|
463
495
|
|
|
464
|
-
|
|
496
|
+
`defineSystem` factory can be registered multiple times with different names via the `name` option: `addSystem(world, movementSystem, { name: "lateMovement" })`.
|
|
465
497
|
|
|
466
498
|
#### Schedules
|
|
467
499
|
|
|
@@ -531,10 +563,12 @@ await runOnce(world); // one frame
|
|
|
531
563
|
Systems can be async. Both `run()` and `runOnce()` handle sync and async systems transparently:
|
|
532
564
|
|
|
533
565
|
```typescript
|
|
534
|
-
|
|
535
|
-
|
|
536
|
-
|
|
537
|
-
|
|
566
|
+
const loadAssetsSystem = defineSystem("loadAssetsSystem", (world) => {
|
|
567
|
+
return async () => {
|
|
568
|
+
const textures = await fetch("/assets/textures.json");
|
|
569
|
+
// ...
|
|
570
|
+
};
|
|
571
|
+
});
|
|
538
572
|
|
|
539
573
|
addSystem(world, loadAssetsSystem, { schedule: Startup });
|
|
540
574
|
```
|
|
@@ -576,7 +610,7 @@ Actions are initialized lazily and cached per world -- calling `spawnActions(wor
|
|
|
576
610
|
An **Event** is an ephemeral message for communication between systems. Unlike components (persistent data on entities), events are fire-and-forget: emit once, consume once per system, then gone.
|
|
577
611
|
|
|
578
612
|
```typescript
|
|
579
|
-
import { defineEvent, emitEvent,
|
|
613
|
+
import { defineEvent, emitEvent, readEvents, Type } from "iris-ecs";
|
|
580
614
|
|
|
581
615
|
// Tag event (no data)
|
|
582
616
|
const GameStarted = defineEvent("GameStarted");
|
|
@@ -593,9 +627,9 @@ emitEvent(world, DamageDealt, { target: enemy, amount: 25 });
|
|
|
593
627
|
|
|
594
628
|
// Consume events in a system
|
|
595
629
|
function damageSystem(world) {
|
|
596
|
-
|
|
630
|
+
readEvents(world, DamageDealt, (event) => {
|
|
597
631
|
applyDamage(event.target, event.amount);
|
|
598
|
-
}
|
|
632
|
+
});
|
|
599
633
|
}
|
|
600
634
|
```
|
|
601
635
|
|
|
@@ -607,15 +641,15 @@ Each system independently tracks which events it has consumed. Multiple systems
|
|
|
607
641
|
|
|
608
642
|
```typescript
|
|
609
643
|
function uiSystem(world) {
|
|
610
|
-
|
|
644
|
+
readEvents(world, DamageDealt, (e) => {
|
|
611
645
|
showDamageNumber(e.target, e.amount);
|
|
612
|
-
}
|
|
646
|
+
});
|
|
613
647
|
}
|
|
614
648
|
|
|
615
649
|
function audioSystem(world) {
|
|
616
|
-
|
|
650
|
+
readEvents(world, DamageDealt, (e) => {
|
|
617
651
|
playHitSound(e.amount);
|
|
618
|
-
}
|
|
652
|
+
});
|
|
619
653
|
}
|
|
620
654
|
|
|
621
655
|
// Both systems see the same DamageDealt events
|
|
@@ -627,7 +661,7 @@ function audioSystem(world) {
|
|
|
627
661
|
import {
|
|
628
662
|
hasEvents,
|
|
629
663
|
countEvents,
|
|
630
|
-
|
|
664
|
+
readLastEvent,
|
|
631
665
|
clearEvents,
|
|
632
666
|
} from "iris-ecs";
|
|
633
667
|
|
|
@@ -637,7 +671,7 @@ if (hasEvents(world, DamageDealt)) {
|
|
|
637
671
|
}
|
|
638
672
|
|
|
639
673
|
// Get only the most recent event (marks all as read)
|
|
640
|
-
const lastInput =
|
|
674
|
+
const lastInput = readLastEvent(world, InputChanged);
|
|
641
675
|
|
|
642
676
|
// Skip events without processing
|
|
643
677
|
if (isPaused) {
|
|
@@ -648,7 +682,7 @@ if (isPaused) {
|
|
|
648
682
|
|
|
649
683
|
#### Event Lifetime
|
|
650
684
|
|
|
651
|
-
Events use double-buffered storage. Buffers rotate automatically at the end of each frame -- events survive one frame (so systems that run next frame can still read them), then are discarded. Calling `
|
|
685
|
+
Events use double-buffered storage. Buffers rotate automatically at the end of each frame -- events survive one frame (so systems that run next frame can still read them), then are discarded. Calling `readEvents()` marks events as read for that system -- a second call in the same system sees nothing new.
|
|
652
686
|
|
|
653
687
|
⚠️ **Events are not entities.** Unlike components and tags, events exist outside the entity-component model. You cannot query for events or attach them to entities.
|
|
654
688
|
|
|
@@ -658,27 +692,27 @@ Events use double-buffered storage. Buffers rotate automatically at the end of e
|
|
|
658
692
|
|
|
659
693
|
```typescript
|
|
660
694
|
import {
|
|
661
|
-
|
|
695
|
+
queryEntities,
|
|
662
696
|
added,
|
|
663
697
|
changed,
|
|
664
698
|
removed,
|
|
665
|
-
|
|
699
|
+
readEvents,
|
|
666
700
|
} from "iris-ecs";
|
|
667
701
|
|
|
668
702
|
// Entities where Position was added this tick
|
|
669
|
-
|
|
703
|
+
queryEntities(world, [added(Position)], (entity) => {
|
|
670
704
|
initializePhysicsBody(entity);
|
|
671
|
-
}
|
|
705
|
+
});
|
|
672
706
|
|
|
673
707
|
// Entities where Health was modified (added OR value changed)
|
|
674
|
-
|
|
708
|
+
queryEntities(world, [changed(Health)], (entity) => {
|
|
675
709
|
updateHealthBar(entity);
|
|
676
|
-
}
|
|
710
|
+
});
|
|
677
711
|
|
|
678
712
|
// Combine with regular filters
|
|
679
|
-
|
|
713
|
+
queryEntities(world, [Player, changed(Position), not(Dead)], (e) => {
|
|
680
714
|
updatePlayerOnMinimap(e);
|
|
681
|
-
}
|
|
715
|
+
});
|
|
682
716
|
```
|
|
683
717
|
|
|
684
718
|
Each system tracks changes independently -- if two systems query `added(Position)`, both see the same newly added entities.
|
|
@@ -689,9 +723,9 @@ Use `removed()` to detect when a component is removed from an entity. Unlike `ad
|
|
|
689
723
|
|
|
690
724
|
```typescript
|
|
691
725
|
// Iterate removal events (not a query filter)
|
|
692
|
-
|
|
726
|
+
readEvents(world, removed(Health), (event) => {
|
|
693
727
|
playDeathAnimation(event.entity);
|
|
694
|
-
}
|
|
728
|
+
});
|
|
695
729
|
```
|
|
696
730
|
|
|
697
731
|
#### Under the Hood
|
package/dist/component.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { Component, Entity, EntityId, Pair, Relation, Tag } from "./encoding.js";
|
|
1
|
+
import type { Component, Entity, EntityId, EntityWith, Pair, Relation, Tag } from "./encoding.js";
|
|
2
2
|
import type { InferSchema, InferSchemaRecord, SchemaRecord } 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;
|
|
@@ -35,7 +35,7 @@ export declare function removeComponent(world: World, entityId: EntityId, compon
|
|
|
35
35
|
* hasComponent(world, entity, tag); // true
|
|
36
36
|
* ```
|
|
37
37
|
*/
|
|
38
|
-
export declare function hasComponent(world: World, entityId: EntityId, componentId:
|
|
38
|
+
export declare function hasComponent<C extends EntityId>(world: World, entityId: EntityId, componentId: C): entityId is EntityWith<C>;
|
|
39
39
|
/**
|
|
40
40
|
* Get component field value.
|
|
41
41
|
*
|
|
@@ -43,7 +43,7 @@ export declare function hasComponent(world: World, entityId: EntityId, component
|
|
|
43
43
|
* @param entityId - Entity to query
|
|
44
44
|
* @param componentId - Data component
|
|
45
45
|
* @param fieldName - Field name
|
|
46
|
-
* @returns Field value or undefined if component/field not present
|
|
46
|
+
* @returns Field value, or undefined if component/field not present (unnarrowed path)
|
|
47
47
|
*
|
|
48
48
|
* @example
|
|
49
49
|
* ```typescript
|
|
@@ -51,6 +51,8 @@ export declare function hasComponent(world: World, entityId: EntityId, component
|
|
|
51
51
|
* const x = getComponentValue(world, entity, Position, 'x');
|
|
52
52
|
* ```
|
|
53
53
|
*/
|
|
54
|
+
export declare function getComponentValue<S extends SchemaRecord, K extends keyof S>(world: World, entityId: EntityWith<Component<S>>, componentId: Component<S>, fieldName: K): InferSchema<S[K]>;
|
|
55
|
+
export declare function getComponentValue<S extends SchemaRecord, K extends keyof S>(world: World, entityId: EntityWith<Pair<Relation<S>>>, componentId: Pair<Relation<S>>, fieldName: K): InferSchema<S[K]>;
|
|
54
56
|
export declare function getComponentValue<S extends SchemaRecord, K extends keyof S>(world: World, entityId: EntityId, componentId: Component<S> | Pair<Relation<S>>, fieldName: K): InferSchema<S[K]> | undefined;
|
|
55
57
|
/**
|
|
56
58
|
* Set component field value.
|
|
@@ -67,6 +69,8 @@ export declare function getComponentValue<S extends SchemaRecord, K extends keyo
|
|
|
67
69
|
* setComponentValue(world, entity, Position, 'x', 10.0);
|
|
68
70
|
* ```
|
|
69
71
|
*/
|
|
72
|
+
export declare function setComponentValue<S extends SchemaRecord, K extends keyof S>(world: World, entityId: EntityWith<Component<S>>, componentId: Component<S>, fieldName: K, value: InferSchema<S[K]>): void;
|
|
73
|
+
export declare function setComponentValue<S extends SchemaRecord, K extends keyof S>(world: World, entityId: EntityWith<Pair<Relation<S>>>, componentId: Pair<Relation<S>>, fieldName: K, value: InferSchema<S[K]>): void;
|
|
70
74
|
export declare function setComponentValue<S extends SchemaRecord, K extends keyof S>(world: World, entityId: EntityId, componentId: Component<S> | Pair<Relation<S>>, fieldName: K, value: InferSchema<S[K]>): void;
|
|
71
75
|
/**
|
|
72
76
|
* Emit component changed event without setting a value.
|
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,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"component.d.ts","sourceRoot":"","sources":["../src/component.ts"],"names":[],"mappings":"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"}
|
package/dist/component.js
CHANGED
|
@@ -134,24 +134,9 @@ export function hasComponent(world, entityId, componentId) {
|
|
|
134
134
|
const meta = ensureEntity(world, entityId);
|
|
135
135
|
return meta.archetype.typesSet.has(componentId);
|
|
136
136
|
}
|
|
137
|
-
/**
|
|
138
|
-
* Get component field value.
|
|
139
|
-
*
|
|
140
|
-
* @param world - World instance
|
|
141
|
-
* @param entityId - Entity to query
|
|
142
|
-
* @param componentId - Data component
|
|
143
|
-
* @param fieldName - Field name
|
|
144
|
-
* @returns Field value or undefined if component/field not present
|
|
145
|
-
*
|
|
146
|
-
* @example
|
|
147
|
-
* ```typescript
|
|
148
|
-
* const Position = defineComponent("Position", { x: Type.f32(), y: Type.f32() });
|
|
149
|
-
* const x = getComponentValue(world, entity, Position, 'x');
|
|
150
|
-
* ```
|
|
151
|
-
*/
|
|
152
137
|
export function getComponentValue(world, entityId, componentId, fieldName) {
|
|
153
|
-
const
|
|
154
|
-
const fieldColumns =
|
|
138
|
+
const { archetype, row } = ensureEntity(world, entityId);
|
|
139
|
+
const fieldColumns = archetype.columns.get(componentId);
|
|
155
140
|
if (!fieldColumns) {
|
|
156
141
|
return;
|
|
157
142
|
}
|
|
@@ -159,26 +144,11 @@ export function getComponentValue(world, entityId, componentId, fieldName) {
|
|
|
159
144
|
if (!column) {
|
|
160
145
|
return;
|
|
161
146
|
}
|
|
162
|
-
return column[
|
|
147
|
+
return column[row];
|
|
163
148
|
}
|
|
164
|
-
/**
|
|
165
|
-
* Set component field value.
|
|
166
|
-
*
|
|
167
|
-
* @param world - World instance
|
|
168
|
-
* @param entityId - Entity to modify
|
|
169
|
-
* @param componentId - Data component
|
|
170
|
-
* @param fieldName - Field name
|
|
171
|
-
* @param value - New value
|
|
172
|
-
*
|
|
173
|
-
* @example
|
|
174
|
-
* ```typescript
|
|
175
|
-
* addComponent(world, entity, Position, { x: 0.0, y: 0.0 });
|
|
176
|
-
* setComponentValue(world, entity, Position, 'x', 10.0);
|
|
177
|
-
* ```
|
|
178
|
-
*/
|
|
179
149
|
export function setComponentValue(world, entityId, componentId, fieldName, value) {
|
|
180
|
-
const
|
|
181
|
-
const fieldColumns =
|
|
150
|
+
const { archetype, row } = ensureEntity(world, entityId);
|
|
151
|
+
const fieldColumns = archetype.columns.get(componentId);
|
|
182
152
|
if (!fieldColumns) {
|
|
183
153
|
return;
|
|
184
154
|
}
|
|
@@ -186,10 +156,10 @@ export function setComponentValue(world, entityId, componentId, fieldName, value
|
|
|
186
156
|
if (!column) {
|
|
187
157
|
return;
|
|
188
158
|
}
|
|
189
|
-
column[
|
|
190
|
-
const ticks =
|
|
159
|
+
column[row] = value;
|
|
160
|
+
const ticks = archetype.ticks.get(componentId);
|
|
191
161
|
if (ticks) {
|
|
192
|
-
ticks.changed[
|
|
162
|
+
ticks.changed[row] = world.execution.tick;
|
|
193
163
|
}
|
|
194
164
|
fireObserverEvent(world, "componentChanged", componentId, entityId);
|
|
195
165
|
}
|
|
@@ -204,10 +174,10 @@ export function setComponentValue(world, entityId, componentId, fieldName, value
|
|
|
204
174
|
* emitComponentChanged(world, entity, Position); // Notify change tracking
|
|
205
175
|
*/
|
|
206
176
|
export function emitComponentChanged(world, entityId, componentId) {
|
|
207
|
-
const
|
|
208
|
-
const ticks =
|
|
177
|
+
const { archetype, row } = ensureEntity(world, entityId);
|
|
178
|
+
const ticks = archetype.ticks.get(componentId);
|
|
209
179
|
if (ticks) {
|
|
210
|
-
ticks.changed[
|
|
180
|
+
ticks.changed[row] = world.execution.tick;
|
|
211
181
|
}
|
|
212
182
|
fireObserverEvent(world, "componentChanged", componentId, entityId);
|
|
213
183
|
}
|
package/dist/component.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"component.js","sourceRoot":"","sources":["../src/component.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"component.js","sourceRoot":"","sources":["../src/component.ts"],"names":[],"mappings":"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"}
|
package/dist/encoding.d.ts
CHANGED
|
@@ -47,6 +47,10 @@ declare const PAIR_BRAND: unique symbol;
|
|
|
47
47
|
* Schema brand for carrying schema type in Component.
|
|
48
48
|
*/
|
|
49
49
|
declare const SCHEMA_BRAND: unique symbol;
|
|
50
|
+
/**
|
|
51
|
+
* Component presence brand for type-safe narrowing.
|
|
52
|
+
*/
|
|
53
|
+
declare const HAS_COMPONENT_BRAND: unique symbol;
|
|
50
54
|
/**
|
|
51
55
|
* Entity ID (branded type).
|
|
52
56
|
*
|
|
@@ -102,6 +106,12 @@ export type RelationTargetId = Entity | Tag | Component | Relation;
|
|
|
102
106
|
* Used in function signatures to accept entities, tags, data components, relations, and pairs.
|
|
103
107
|
*/
|
|
104
108
|
export type EntityId = Entity | Tag | Component | Relation | Pair;
|
|
109
|
+
/**
|
|
110
|
+
* Entity ID narrowed to guarantee presence of specific components.
|
|
111
|
+
*/
|
|
112
|
+
export type EntityWith<C extends EntityId> = EntityId & {
|
|
113
|
+
readonly [HAS_COMPONENT_BRAND]?: (c: C) => void;
|
|
114
|
+
};
|
|
105
115
|
/**
|
|
106
116
|
* Pair flag bit position (bit 31).
|
|
107
117
|
*/
|
package/dist/encoding.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"encoding.d.ts","sourceRoot":"","sources":["../src/encoding.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAMxD;;GAEG;AACH,eAAO,MAAM,WAAW,IAAM,CAAC;AAE/B;;GAEG;AACH,eAAO,MAAM,QAAQ,IAAM,CAAC;AAE5B;;GAEG;AACH,eAAO,MAAM,cAAc,IAAM,CAAC;AAElC;;GAEG;AACH,eAAO,MAAM,iBAAiB,IAAM,CAAC;AAMrC;;GAEG;AACH,eAAO,MAAM,UAAU,UAAU,CAAC;AAElC;;GAEG;AACH,eAAO,MAAM,SAAS,MAAO,CAAC;AAM9B;;GAEG;AACH,OAAO,CAAC,MAAM,YAAY,EAAE,OAAO,MAAM,CAAC;AAE1C;;GAEG;AACH,OAAO,CAAC,MAAM,SAAS,EAAE,OAAO,MAAM,CAAC;AAEvC;;GAEG;AACH,OAAO,CAAC,MAAM,eAAe,EAAE,OAAO,MAAM,CAAC;AAE7C;;GAEG;AACH,OAAO,CAAC,MAAM,cAAc,EAAE,OAAO,MAAM,CAAC;AAE5C;;GAEG;AACH,OAAO,CAAC,MAAM,UAAU,EAAE,OAAO,MAAM,CAAC;AAExC;;GAEG;AACH,OAAO,CAAC,MAAM,YAAY,EAAE,OAAO,MAAM,CAAC;AAE1C;;;;GAIG;AACH,MAAM,MAAM,MAAM,GAAG,MAAM,GAAG;IAAE,CAAC,YAAY,CAAC,EAAE,IAAI,CAAA;CAAE,CAAC;AAEvD;;;;GAIG;AACH,MAAM,MAAM,GAAG,GAAG,MAAM,GAAG;IAAE,CAAC,SAAS,CAAC,EAAE,IAAI,CAAA;CAAE,CAAC;AAEjD;;;;GAIG;AACH,MAAM,MAAM,SAAS,CAAC,CAAC,SAAS,YAAY,GAAG,YAAY,IAAI,MAAM,GAAG;IACtE,CAAC,eAAe,CAAC,EAAE,IAAI,CAAC;IACxB,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;CACnB,CAAC;AAEF;;;;GAIG;AACH,MAAM,MAAM,QAAQ,CAAC,CAAC,SAAS,YAAY,GAAG,YAAY,IAAI,MAAM,GAAG;IACrE,CAAC,cAAc,CAAC,EAAE,IAAI,CAAC;IACvB,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;CACnB,CAAC;AAEF;;;;GAIG;AACH,MAAM,MAAM,IAAI,CAAC,CAAC,SAAS,QAAQ,GAAG,QAAQ,IAAI,MAAM,GAAG;IACzD,CAAC,UAAU,CAAC,EAAE,IAAI,CAAC;IACnB,CAAC,YAAY,CAAC,EAAE,CAAC,SAAS,QAAQ,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;CACzD,CAAC;AAEF;;;;GAIG;AACH,MAAM,MAAM,gBAAgB,GAAG,MAAM,GAAG,GAAG,GAAG,SAAS,GAAG,QAAQ,CAAC;AAEnE;;;;GAIG;AACH,MAAM,MAAM,QAAQ,GAAG,MAAM,GAAG,GAAG,GAAG,SAAS,GAAG,QAAQ,GAAG,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"encoding.d.ts","sourceRoot":"","sources":["../src/encoding.ts"],"names":[],"mappings":"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"}
|
package/dist/encoding.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"encoding.js","sourceRoot":"","sources":["../src/encoding.ts"],"names":[],"mappings":"AAEA,+EAA+E;AAC/E,iBAAiB;AACjB,+EAA+E;AAE/E;;GAEG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,GAAG,CAAC;AAE/B;;GAEG;AACH,MAAM,CAAC,MAAM,QAAQ,GAAG,GAAG,CAAC;AAE5B;;GAEG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,GAAG,CAAC;AAElC;;GAEG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,GAAG,CAAC;AAErC,+EAA+E;AAC/E,YAAY;AACZ,+EAA+E;AAE/E;;GAEG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG,OAAO,CAAC;AAElC;;GAEG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"encoding.js","sourceRoot":"","sources":["../src/encoding.ts"],"names":[],"mappings":"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"}
|