ecspresso 0.0.3 → 0.0.4
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 +62 -13
- package/dist/index.js +2 -2
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
*(pronounced "ex-presso")*
|
|
4
4
|
|
|
5
|
-
__Note: This is a VERY early work in progress.__
|
|
5
|
+
__Note: This is a VERY early work in progress. The documention is being autogenerated while this ECSpresso being iterated on.__
|
|
6
6
|
|
|
7
7
|
To install dependencies:
|
|
8
8
|
|
|
@@ -126,10 +126,19 @@ ecs.update(16.67); // Pass delta time in ms
|
|
|
126
126
|
|
|
127
127
|
### Creating Systems
|
|
128
128
|
|
|
129
|
+
Systems should be created through a bundle. You can create a bundle and then add systems to it:
|
|
130
|
+
|
|
129
131
|
```typescript
|
|
130
|
-
// Create a
|
|
131
|
-
const
|
|
132
|
-
|
|
132
|
+
// Create a bundle
|
|
133
|
+
const gameBundle = new Bundle<
|
|
134
|
+
{ position: Position; velocity: Velocity },
|
|
135
|
+
{ collision: CollisionEvent },
|
|
136
|
+
{ gameState: GameState }
|
|
137
|
+
>('gameBundle');
|
|
138
|
+
|
|
139
|
+
// Create a movement system within the bundle
|
|
140
|
+
const movementSystem = gameBundle
|
|
141
|
+
.addSystem('movement')
|
|
133
142
|
.addQuery('movable', {
|
|
134
143
|
with: ['position', 'velocity']
|
|
135
144
|
})
|
|
@@ -142,8 +151,8 @@ const movementSystem = ecs.entityManager
|
|
|
142
151
|
}
|
|
143
152
|
});
|
|
144
153
|
|
|
145
|
-
//
|
|
146
|
-
ecs.
|
|
154
|
+
// Install the bundle to add the system to the ECS
|
|
155
|
+
ecs.install(gameBundle);
|
|
147
156
|
```
|
|
148
157
|
|
|
149
158
|
### Using Bundles
|
|
@@ -176,9 +185,16 @@ ecs.install(physicsBundle);
|
|
|
176
185
|
### Event Handling
|
|
177
186
|
|
|
178
187
|
```typescript
|
|
188
|
+
// Create a bundle for the score system
|
|
189
|
+
const gameUIBundle = new Bundle<
|
|
190
|
+
{ position: Position; velocity: Velocity },
|
|
191
|
+
{ collision: CollisionEvent },
|
|
192
|
+
{ gameState: GameState }
|
|
193
|
+
>('gameUI');
|
|
194
|
+
|
|
179
195
|
// Create a system that handles collision events
|
|
180
|
-
|
|
181
|
-
.
|
|
196
|
+
gameUIBundle
|
|
197
|
+
.addSystem('score')
|
|
182
198
|
.setEventHandlers({
|
|
183
199
|
collision: {
|
|
184
200
|
handler: (event, ecs) => {
|
|
@@ -192,7 +208,7 @@ const scoreSystem = ecs.entityManager
|
|
|
192
208
|
});
|
|
193
209
|
|
|
194
210
|
// Add the system to the ECS
|
|
195
|
-
ecs.
|
|
211
|
+
ecs.install(gameUIBundle);
|
|
196
212
|
```
|
|
197
213
|
|
|
198
214
|
## Advanced Features
|
|
@@ -217,17 +233,34 @@ ecs.install(gameBundle);
|
|
|
217
233
|
### System Lifecycle Hooks
|
|
218
234
|
|
|
219
235
|
```typescript
|
|
236
|
+
// Create a bundle for the rendering systems
|
|
237
|
+
const renderBundle = new Bundle<
|
|
238
|
+
{ position: Position; sprite: Sprite },
|
|
239
|
+
{},
|
|
240
|
+
{ renderer: Renderer }
|
|
241
|
+
>('render');
|
|
242
|
+
|
|
220
243
|
// Create a system with lifecycle hooks
|
|
221
|
-
|
|
222
|
-
.
|
|
244
|
+
renderBundle
|
|
245
|
+
.addSystem('render')
|
|
223
246
|
.setOnAttach((ecs) => {
|
|
224
247
|
// Initialize rendering resources
|
|
225
248
|
console.log('Render system attached');
|
|
249
|
+
// You could initialize renderer resources here
|
|
250
|
+
ecs.addResource('renderer', new Renderer());
|
|
226
251
|
})
|
|
227
252
|
.setOnDetach((ecs) => {
|
|
228
253
|
// Clean up rendering resources
|
|
229
254
|
console.log('Render system detached');
|
|
255
|
+
// You could clean up renderer resources here
|
|
256
|
+
const renderer = ecs.getResource('renderer');
|
|
257
|
+
if (renderer) {
|
|
258
|
+
renderer.dispose();
|
|
259
|
+
}
|
|
230
260
|
});
|
|
261
|
+
|
|
262
|
+
// Install the bundle
|
|
263
|
+
ecs.install(renderBundle);
|
|
231
264
|
```
|
|
232
265
|
|
|
233
266
|
### Complex System Example
|
|
@@ -235,9 +268,22 @@ const renderSystem = ecs.entityManager
|
|
|
235
268
|
The following example demonstrates a system that uses multiple aspects of the ECS (queries, resources, and events) with the simplified API:
|
|
236
269
|
|
|
237
270
|
```typescript
|
|
271
|
+
// Create an AI bundle
|
|
272
|
+
const aiBundle = new Bundle<
|
|
273
|
+
{
|
|
274
|
+
position: Position;
|
|
275
|
+
ai: AIComponent;
|
|
276
|
+
health: Health;
|
|
277
|
+
stunned: StunnedEffect;
|
|
278
|
+
player: PlayerTag;
|
|
279
|
+
},
|
|
280
|
+
{ enemySpottedPlayer: EnemySpottedEvent },
|
|
281
|
+
{ gameConfig: GameConfig }
|
|
282
|
+
>('enemyAI');
|
|
283
|
+
|
|
238
284
|
// Create a complex AI system that needs access to multiple ECS features
|
|
239
|
-
|
|
240
|
-
.
|
|
285
|
+
aiBundle
|
|
286
|
+
.addSystem('enemyAI')
|
|
241
287
|
.addQuery('enemies', {
|
|
242
288
|
with: ['position', 'ai', 'health'],
|
|
243
289
|
without: ['stunned']
|
|
@@ -285,6 +331,9 @@ const aiSystem = ecs.entityManager
|
|
|
285
331
|
}
|
|
286
332
|
}
|
|
287
333
|
});
|
|
334
|
+
|
|
335
|
+
// Install the AI bundle
|
|
336
|
+
ecs.install(aiBundle);
|
|
288
337
|
```
|
|
289
338
|
|
|
290
339
|
This example shows how having access to the entire ECS through a single parameter simplifies the code, as the system can easily work with entity queries, access resources, and publish events without needing separate parameters for each manager.
|
package/dist/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
class P{nextId=1;entities=new Map;componentIndices=new Map;createEntity(){let f=this.nextId++,g={id:f,components:{}};return this.entities.set(f,g),g}addComponent(f,g,j){let K=typeof f==="number"?this.entities.get(f):f;if(!K)throw new Error(`Entity ${f} does not exist`);if(K.components[g]=j,!this.componentIndices.has(g))this.componentIndices.set(g,new Set);return this.componentIndices.get(g)?.add(K.id),this}removeComponent(f,g){let j=this.entities.get(f);if(!j)throw new Error(`Entity ${f} does not exist`);delete j.components[g],this.componentIndices.get(g)?.delete(f)}getComponent(f,g){let j=this.entities.get(f);if(!j)throw new Error(`Entity ${f} does not exist`);return j.components[g]||null}getEntitiesWithComponents(f=[],g=[]){if(f.length===0){if(g.length===0)return Array.from(this.entities.values());return Array.from(this.entities.values()).filter((F)=>{return g.every((J)=>!(J in F.components))})}let j=f.reduce((F,J)=>{let L=this.componentIndices.get(J),V=L?L.size:0,Y=this.componentIndices.get(F)?.size??1/0;return V<Y?J:F},f[0]);return Array.from(this.componentIndices.get(j)||[]).filter((F)=>{let J=this.entities.get(F);return J&&f.every((L)=>(L in J.components))&&g.every((L)=>!(L in J.components))}).map((F)=>this.entities.get(F))}removeEntity(f){let g=this.entities.get(f);if(!g)return!1;for(let j of Object.keys(g.components))this.componentIndices.get(j)?.delete(f);return this.entities.delete(f)}getEntity(f){return this.entities.get(f)}}class Q{handlers=new Map;subscribe(f,g){return this.addHandler(f,g,!1)}once(f,g){return this.addHandler(f,g,!0)}addHandler(f,g,j){if(!this.handlers.has(f))this.handlers.set(f,[]);let K={callback:g,once:j};return this.handlers.get(f).push(K),()=>{let F=this.handlers.get(f);if(F){let J=F.indexOf(K);if(J!==-1)F.splice(J,1)}}}publish(f,g=void 0){let j=this.handlers.get(f);if(!j)return;let K=[...j],F=[];for(let J of K)if(J.callback(g),J.once)F.push(J);if(F.length>0)for(let J of F){let L=j.indexOf(J);if(L!==-1)j.splice(L,1)}}clear(){this.handlers.clear()}clearEvent(f){this.handlers.delete(f)}}class U{resources=new Map;add(f,g){return this.resources.set(f,g),this}get(f){let g=this.resources.get(f);if(g===void 0)throw new Error(`Resource ${String(f)} not found`);return g}getOptional(f){return this.resources.get(f)}has(f){return this.resources.has(f)}remove(f){return this.resources.delete(f)}getKeys(){return Array.from(this.resources.keys())}}var Z="0.0.
|
|
1
|
+
class P{nextId=1;entities=new Map;componentIndices=new Map;createEntity(){let f=this.nextId++,g={id:f,components:{}};return this.entities.set(f,g),g}addComponent(f,g,j){let K=typeof f==="number"?this.entities.get(f):f;if(!K)throw new Error(`Entity ${f} does not exist`);if(K.components[g]=j,!this.componentIndices.has(g))this.componentIndices.set(g,new Set);return this.componentIndices.get(g)?.add(K.id),this}removeComponent(f,g){let j=this.entities.get(f);if(!j)throw new Error(`Entity ${f} does not exist`);delete j.components[g],this.componentIndices.get(g)?.delete(f)}getComponent(f,g){let j=this.entities.get(f);if(!j)throw new Error(`Entity ${f} does not exist`);return j.components[g]||null}getEntitiesWithComponents(f=[],g=[]){if(f.length===0){if(g.length===0)return Array.from(this.entities.values());return Array.from(this.entities.values()).filter((F)=>{return g.every((J)=>!(J in F.components))})}let j=f.reduce((F,J)=>{let L=this.componentIndices.get(J),V=L?L.size:0,Y=this.componentIndices.get(F)?.size??1/0;return V<Y?J:F},f[0]);return Array.from(this.componentIndices.get(j)||[]).filter((F)=>{let J=this.entities.get(F);return J&&f.every((L)=>(L in J.components))&&g.every((L)=>!(L in J.components))}).map((F)=>this.entities.get(F))}removeEntity(f){let g=this.entities.get(f);if(!g)return!1;for(let j of Object.keys(g.components))this.componentIndices.get(j)?.delete(f);return this.entities.delete(f)}getEntity(f){return this.entities.get(f)}}class Q{handlers=new Map;subscribe(f,g){return this.addHandler(f,g,!1)}once(f,g){return this.addHandler(f,g,!0)}addHandler(f,g,j){if(!this.handlers.has(f))this.handlers.set(f,[]);let K={callback:g,once:j};return this.handlers.get(f).push(K),()=>{let F=this.handlers.get(f);if(F){let J=F.indexOf(K);if(J!==-1)F.splice(J,1)}}}publish(f,g=void 0){let j=this.handlers.get(f);if(!j)return;let K=[...j],F=[];for(let J of K)if(J.callback(g),J.once)F.push(J);if(F.length>0)for(let J of F){let L=j.indexOf(J);if(L!==-1)j.splice(L,1)}}clear(){this.handlers.clear()}clearEvent(f){this.handlers.delete(f)}}class U{resources=new Map;add(f,g){return this.resources.set(f,g),this}get(f){let g=this.resources.get(f);if(g===void 0)throw new Error(`Resource ${String(f)} not found`);return g}getOptional(f){return this.resources.get(f)}has(f){return this.resources.has(f)}remove(f){return this.resources.delete(f)}getKeys(){return Array.from(this.resources.keys())}}var Z="0.0.4";class W{static VERSION=Z;_entityManager;_systems=[];_eventBus;_resourceManager;_installedBundles=new Set;constructor(){this._entityManager=new P,this._eventBus=new Q,this._resourceManager=new U}install(...f){for(let g of f){if(this._installedBundles.has(g.id)){console.warn(`Bundle ${g.id} is already installed`);continue}let j=g.getSystems();if(!j.length)console.warn(`Bundle ${g.id} has no systems`);for(let F of j){let J=F;if(this._systems.push(J),J.onAttach)J.onAttach(this);if(J.eventHandlers)for(let L in J.eventHandlers){let V=J.eventHandlers[L];if(V?.handler){let Y=(_)=>{V.handler(_,this)};this._eventBus.subscribe(L,Y)}}}let K=g.getResources();for(let[F,J]of K.entries())this._resourceManager.add(F,J);this._installedBundles.add(g.id)}return this}removeSystem(f){let g=this._systems.findIndex((K)=>K.label===f);if(g===-1)return!1;let j=this._systems[g];if(!j)return!1;return j.onDetach?.(this),this._systems.splice(g,1),!0}hasResource(f){return this._resourceManager.has(f)}getResource(f){return this._resourceManager.getOptional(f)}getResourceOrThrow(f){return this._resourceManager.get(f)}addResource(f,g){return this._resourceManager.add(f,g),this}hasComponent(f,g){return this._entityManager.getComponent(f,g)!==null}getEntitiesWithComponents(f,g=[]){return this._entityManager.getEntitiesWithComponents(f,g)}update(f){for(let g of this._systems){if(!g.process)continue;let j={};if(g.entityQueries){for(let K in g.entityQueries){let F=g.entityQueries[K];if(F)j[K]=this._entityManager.getEntitiesWithComponents(F.with,F.without||[])}g.process(j,f,this)}else g.process([],f,this)}}get entityManager(){return this._entityManager}get eventBus(){return this._eventBus}get resourceManager(){return this._resourceManager}get installedBundles(){return Array.from(this._installedBundles)}}function D(){return`bundle_${Date.now().toString(36)}_${Math.random().toString(36).substring(2,9)}`}class M{_systems=[];_resources=new Map;_id;constructor(f){this._id=f||D()}get id(){return this._id}set id(f){this._id=f}addSystem(f){let g=new X(f,this);return this._systems.push(g),g}addResource(f,g){return this._resources.set(f,g),this}getSystems(){return this._systems.map((f)=>f.build())}getResources(){return new Map(this._resources)}getResource(f){return this._resources.get(f)}getSystemBuilders(){return[...this._systems]}hasResource(f){return this._resources.has(f)}}function H(f,...g){if(g.length===0)return new M(f);let j=new M(f);for(let K of g){for(let F of K.getSystemBuilders())j.addSystem(F);for(let[F,J]of K.getResources().entries())j.addResource(F,J)}return j}class X{_label;_bundle;queries={};processFunction;attachFunction;detachFunction;eventHandlers;constructor(f,g=new M){this._label=f;this._bundle=g}get label(){return this._label}get bundle(){return this._bundle}addQuery(f,g){let j=this;return j.queries={...this.queries,[f]:g},j}setProcess(f){return this.processFunction=f,this}setOnAttach(f){return this.attachFunction=f,this}setOnDetach(f){return this.detachFunction=f,this}setEventHandlers(f){return this.eventHandlers=f,this}build(){let f={label:this._label,entityQueries:this.queries};if(this.processFunction)f.process=this.processFunction;if(this.attachFunction)f.onAttach=this.attachFunction;if(this.detachFunction)f.onDetach=this.detachFunction;if(this.eventHandlers)f.eventHandlers=this.eventHandlers;return f}}var i=W;export{H as mergeBundles,i as default,X as SystemBuilder,U as ResourceManager,Q as EventBus,P as EntityManager,M as Bundle};
|
|
2
2
|
|
|
3
|
-
//# debugId=
|
|
3
|
+
//# debugId=51C1642754D171C064756E2164756E21
|
|
4
4
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -11,6 +11,6 @@
|
|
|
11
11
|
"import ECSpresso from './ecspresso';\nimport { SystemBuilder } from './system-builder';\nimport Bundle, { mergeBundles } from './bundle';\n\nexport * from './types';\nexport { default as EntityManager } from './entity-manager';\nexport { default as EventBus } from './event-bus';\nexport { default as ResourceManager } from './resource-manager';\nexport { SystemBuilder };\nexport { Bundle, mergeBundles };\nexport default ECSpresso;\n"
|
|
12
12
|
],
|
|
13
13
|
"mappings": "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",
|
|
14
|
-
"debugId": "
|
|
14
|
+
"debugId": "51C1642754D171C064756E2164756E21",
|
|
15
15
|
"names": []
|
|
16
16
|
}
|