@daneren2005/shared-memory-ecs 1.2.1 → 1.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +86 -1
- package/dist/component-definition.d.ts +1 -1
- package/dist/create-component-worker-vbX3vEia.js +135 -0
- package/dist/create-component-worker-vbX3vEia.js.map +1 -0
- package/dist/index.d.ts +1 -1
- package/dist/index.js +98 -190
- package/dist/index.js.map +1 -1
- package/dist/memory-component.d.ts +3 -1
- package/dist/systems/component-system.d.ts +15 -8
- package/dist/systems/system.d.ts +1 -1
- package/dist/systems/workers/component-web-worker.d.ts +5 -4
- package/dist/systems/workers/component-worker-message.d.ts +13 -1
- package/dist/systems/workers/create-component-worker.d.ts +1 -1
- package/dist/worker.d.ts +8 -0
- package/dist/worker.js +2 -0
- package/dist/world.d.ts +2 -1
- package/package.json +10 -2
|
@@ -2,11 +2,22 @@ import type { ComponentSystemWorld, QueryDelta } from '../component-system';
|
|
|
2
2
|
interface InitMessage {
|
|
3
3
|
type: 'init';
|
|
4
4
|
}
|
|
5
|
+
interface InitCompleteMessage {
|
|
6
|
+
type: 'init-complete';
|
|
7
|
+
}
|
|
8
|
+
interface LoadMessage<D = unknown> {
|
|
9
|
+
type: 'load';
|
|
10
|
+
data?: D;
|
|
11
|
+
}
|
|
5
12
|
interface LoadedMessage {
|
|
6
13
|
type: 'loaded';
|
|
7
14
|
}
|
|
15
|
+
interface ResetMessage {
|
|
16
|
+
type: 'reset';
|
|
17
|
+
}
|
|
8
18
|
interface RunUpdateMessage<W extends ComponentSystemWorld = ComponentSystemWorld> {
|
|
9
19
|
type: 'run';
|
|
20
|
+
generation: number;
|
|
10
21
|
world: W;
|
|
11
22
|
entities: QueryDelta;
|
|
12
23
|
queries: {
|
|
@@ -23,10 +34,11 @@ export type SystemEvents = {
|
|
|
23
34
|
};
|
|
24
35
|
interface EntityEventsMessage {
|
|
25
36
|
type: 'run-complete';
|
|
37
|
+
generation: number;
|
|
26
38
|
runTime: number;
|
|
27
39
|
events: Array<EntityEvent>;
|
|
28
40
|
systemEvents: SystemEvents;
|
|
29
41
|
created: Array<Record<string, unknown>>;
|
|
30
42
|
}
|
|
31
|
-
type ComponentWorkerMessage<W extends ComponentSystemWorld = ComponentSystemWorld> = InitMessage | LoadedMessage | RunUpdateMessage<W> | EntityEventsMessage;
|
|
43
|
+
type ComponentWorkerMessage<W extends ComponentSystemWorld = ComponentSystemWorld, D = unknown> = InitMessage | InitCompleteMessage | LoadMessage<D> | LoadedMessage | ResetMessage | RunUpdateMessage<W> | EntityEventsMessage;
|
|
32
44
|
export default ComponentWorkerMessage;
|
|
@@ -5,4 +5,4 @@ export interface ComponentWorkerScope {
|
|
|
5
5
|
onmessage: ((e: MessageEvent) => void) | null;
|
|
6
6
|
postMessage(message: ComponentWorkerMessage): void;
|
|
7
7
|
}
|
|
8
|
-
export default function createComponentWorker<C extends ComponentMap, T extends EntityUpdateComponents<C>, W extends ComponentSystemWorld = ComponentSystemWorld>(scope: ComponentWorkerScope, updateFunction: EntityUpdateFunction<C, T, W>): void;
|
|
8
|
+
export default function createComponentWorker<C extends ComponentMap, T extends EntityUpdateComponents<C>, W extends ComponentSystemWorld = ComponentSystemWorld, D = unknown>(scope: ComponentWorkerScope, updateFunction: EntityUpdateFunction<C, T, W, D>): void;
|
package/dist/worker.d.ts
ADDED
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export { default as createComponentWorker } from './systems/workers/create-component-worker';
|
|
2
|
+
export type { ComponentWorkerScope } from './systems/workers/create-component-worker';
|
|
3
|
+
export { default as createEntityWorker } from './actions/create-entity-worker';
|
|
4
|
+
export { default as killEntityWorker } from './actions/kill-entity-worker';
|
|
5
|
+
export { DEAD_INDEX } from './entity-component';
|
|
6
|
+
export type { default as ComponentWorkerMessage } from './systems/workers/component-worker-message';
|
|
7
|
+
export type { EntityEvent, SystemEvents } from './systems/workers/component-worker-message';
|
|
8
|
+
export type { ComponentSystemWorld, ComponentSystemCallbacks, CreateEntityConfig, EntityUpdateComponents, EntityQueryComponents, EntityUpdateFunction, EntityUpdateInitFunction, EntityUpdatePreRunFunction, EntityRemovedFunction, UpdateEntityConfigObject, } from './systems/component-system';
|
package/dist/worker.js
ADDED
package/dist/world.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { EventEmitter } from 'eventemitter3';
|
|
2
|
-
import
|
|
2
|
+
import MemoryHeap from '@daneren2005/shared-memory-objects/memory-heap';
|
|
3
3
|
import type BaseEntity from './entity';
|
|
4
4
|
import type System from './systems/system';
|
|
5
5
|
import type { ComponentDefinitionMap, ComponentMap, ComponentsOf, EntityConfigOf, RegisteredComponentDefinition, RegisteredComponentRegistry } from './component-definition';
|
|
@@ -30,6 +30,7 @@ export default class BaseWorld<R extends ComponentDefinitionMap = ComponentDefin
|
|
|
30
30
|
destroyed: boolean;
|
|
31
31
|
constructor(registry: R, options?: WorldOptions<C, Cfg>);
|
|
32
32
|
init(): Promise<void>;
|
|
33
|
+
private finishLoadingSystems;
|
|
33
34
|
addEntity(entity: BaseEntity<C, Cfg>, created?: boolean): BaseEntity<C, Cfg>;
|
|
34
35
|
loadEntity(config: Cfg, created?: boolean): BaseEntity<C, Cfg>;
|
|
35
36
|
load(config: WorldConfig<Cfg>): void;
|
package/package.json
CHANGED
|
@@ -2,8 +2,9 @@
|
|
|
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.
|
|
5
|
+
"version": "1.3.0",
|
|
6
6
|
"type": "module",
|
|
7
|
+
"sideEffects": false,
|
|
7
8
|
"repository": {
|
|
8
9
|
"type": "git",
|
|
9
10
|
"url": "git+https://github.com/daneren2005/shared-memory-ecs.git"
|
|
@@ -20,6 +21,12 @@
|
|
|
20
21
|
"types": "./dist/index.d.ts",
|
|
21
22
|
"default": "./dist/index.js"
|
|
22
23
|
}
|
|
24
|
+
},
|
|
25
|
+
"./worker": {
|
|
26
|
+
"import": {
|
|
27
|
+
"types": "./dist/worker.d.ts",
|
|
28
|
+
"default": "./dist/worker.js"
|
|
29
|
+
}
|
|
23
30
|
}
|
|
24
31
|
},
|
|
25
32
|
"files": [
|
|
@@ -27,6 +34,7 @@
|
|
|
27
34
|
],
|
|
28
35
|
"scripts": {
|
|
29
36
|
"build": "vite build && tsc -p tsconfig.build.json --emitDeclarationOnly",
|
|
37
|
+
"build:game": "npm run build && node scripts/build-game.mjs",
|
|
30
38
|
"type-check": "tsc --noEmit",
|
|
31
39
|
"lint": "cross-env NODE_ENV=production oxlint .",
|
|
32
40
|
"lint:fix": "cross-env NODE_ENV=production oxlint --fix .",
|
|
@@ -53,6 +61,6 @@
|
|
|
53
61
|
"vitest": "^4.1.10"
|
|
54
62
|
},
|
|
55
63
|
"peerDependencies": {
|
|
56
|
-
"@daneren2005/shared-memory-objects": "^1.
|
|
64
|
+
"@daneren2005/shared-memory-objects": "^1.1.0"
|
|
57
65
|
}
|
|
58
66
|
}
|