@daneren2005/shared-memory-ecs 1.0.1 → 1.1.1

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.
@@ -0,0 +1,54 @@
1
+ import { EventEmitter } from 'eventemitter3';
2
+ import { MemoryHeap } from '@daneren2005/shared-memory-objects';
3
+ import type BaseEntity from './entity';
4
+ import type System from './systems/system';
5
+ import type { ComponentDefinitionMap, ComponentMap, ComponentsOf, EntityConfigOf, RegisteredComponentDefinition, RegisteredComponentRegistry } from './component-definition';
6
+ import { type EntityComponent } from './entity-component';
7
+ import EntityFactory from './entity-factory';
8
+ export interface WorldOptions<C extends ComponentMap = ComponentMap, Cfg = any> {
9
+ heapSize?: number;
10
+ factory?: EntityFactory<C, Cfg>;
11
+ }
12
+ export interface WorldConfig<Cfg = any> {
13
+ entities: Array<Cfg>;
14
+ gameTime?: number;
15
+ playerTime?: number;
16
+ timeScale?: number;
17
+ }
18
+ export default class BaseWorld<R extends ComponentDefinitionMap = ComponentDefinitionMap, C extends ComponentMap = ComponentsOf<R>, Cfg = EntityConfigOf<R>> extends EventEmitter {
19
+ heap: MemoryHeap;
20
+ registry: RegisteredComponentRegistry<C> & {
21
+ entity: RegisteredComponentDefinition<EntityComponent>;
22
+ };
23
+ factory: EntityFactory<C, Cfg>;
24
+ entities: Array<BaseEntity<C, Cfg>>;
25
+ entitiesByEid: {
26
+ [eid: number]: BaseEntity<C, Cfg>;
27
+ };
28
+ systems: Array<System<C>>;
29
+ gameTime: number;
30
+ playerTime: number;
31
+ timeScale: number;
32
+ paused: boolean;
33
+ destroyed: boolean;
34
+ constructor(registry: R, options?: WorldOptions<C, Cfg>);
35
+ init(): Promise<void>;
36
+ addEntity(entity: BaseEntity<C, Cfg>, created?: boolean): BaseEntity<C, Cfg>;
37
+ loadEntity(config: Cfg, created?: boolean): BaseEntity<C, Cfg>;
38
+ load(config: WorldConfig<Cfg>): void;
39
+ removeEntity(entity: BaseEntity<C, Cfg>): void;
40
+ onEntityDied(entity: BaseEntity<C, Cfg>): void;
41
+ getEntityByEid(eid: number): BaseEntity<C, Cfg> | undefined;
42
+ addSystem<T extends System<C>>(system: T): T;
43
+ addSystemIfNotExists(system: System<C>): void;
44
+ removeSystem(name: string): void;
45
+ update(elapsedTime: number): {
46
+ lastSystemError?: Error | null;
47
+ };
48
+ pause(): void;
49
+ resume(): void;
50
+ addEntityToComponentSystem(entity: BaseEntity<C>, component: keyof C): void;
51
+ removeEntityFromComponentSystem(entity: BaseEntity<C>, component: keyof C): void;
52
+ private componentAffectsComponentSystem;
53
+ destroy(): void;
54
+ }
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "@daneren2005/shared-memory-ecs",
3
3
  "description": "A small, reusable Entity/Component/System core backed by shared memory.",
4
4
  "author": "Scott Jackson",
5
- "version": "1.0.1",
5
+ "version": "1.1.1",
6
6
  "type": "module",
7
7
  "repository": {
8
8
  "type": "git",
@@ -26,7 +26,7 @@
26
26
  "dist"
27
27
  ],
28
28
  "scripts": {
29
- "build": "vite build && tsc --emitDeclarationOnly",
29
+ "build": "vite build && tsc -p tsconfig.build.json --emitDeclarationOnly",
30
30
  "type-check": "tsc --noEmit",
31
31
  "lint": "cross-env NODE_ENV=production oxlint .",
32
32
  "lint:fix": "cross-env NODE_ENV=production oxlint --fix .",
@@ -35,13 +35,13 @@
35
35
  "prepare": "husky"
36
36
  },
37
37
  "dependencies": {
38
- "@daneren2005/shared-memory-objects": "^0.0.21",
39
- "eventemitter3": "^3.1.2"
38
+ "eventemitter3": "^5.0.4"
40
39
  },
41
40
  "devDependencies": {
42
41
  "@semantic-release/git": "^10.0.1",
43
42
  "@stylistic/eslint-plugin": "^5.10.0",
44
43
  "@types/node": "^26.1.1",
44
+ "@vitest/web-worker": "^4.1.10",
45
45
  "cross-env": "^10.1.0",
46
46
  "husky": "^9.1.7",
47
47
  "lint-staged": "^17.0.8",
@@ -51,5 +51,8 @@
51
51
  "typescript": "^7.0.2",
52
52
  "vite": "^8.1.4",
53
53
  "vitest": "^4.1.10"
54
+ },
55
+ "peerDependencies": {
56
+ "@daneren2005/shared-memory-objects": "^1.0.0"
54
57
  }
55
58
  }