|
1 | | -import { ObjectPool } from "./ObjectPool.js"; |
2 | | -import QueryManager from "./QueryManager.js"; |
3 | | -import EventDispatcher from "./EventDispatcher.js"; |
4 | | -import { SystemStateComponent } from "./SystemStateComponent.js"; |
| 1 | +import { ComponentConstructor } from "./Component.js"; |
| 2 | +import { Entity } from "./Entity"; |
5 | 3 |
|
6 | 4 | export class EntityManager { |
7 | 5 |
|
8 | 6 | constructor(world); |
9 | 7 |
|
10 | | - getEntityByName(name); |
| 8 | + getEntityByName(name): Entity | undefined; |
11 | 9 |
|
12 | 10 | /** |
13 | 11 | * Create a new entity |
14 | 12 | */ |
15 | | - createEntity(name); |
| 13 | + createEntity(name): Entity; |
16 | 14 |
|
17 | | - entityAddComponent(entity, Component, values); |
| 15 | + entityAddComponent(entity, Component, values): void; |
18 | 16 |
|
19 | 17 | /** |
20 | 18 | * Remove a component from an entity |
21 | 19 | * @param {Entity} entity Entity which will get removed the component |
22 | 20 | * @param {*} Component Component to remove from the entity |
23 | 21 | * @param {Bool} immediately If you want to remove the component immediately instead of deferred (Default is false) |
24 | 22 | */ |
25 | | - entityRemoveComponent(entity, Component, immediately); |
| 23 | + entityRemoveComponent(entity, Component, immediately): void; |
26 | 24 |
|
27 | | - _entityRemoveComponentSync(entity, Component, index); |
| 25 | + _entityRemoveComponentSync(entity, Component, index): void; |
28 | 26 |
|
29 | 27 | /** |
30 | 28 | * Remove all the components from an entity |
31 | 29 | * @param {Entity} entity Entity from which the components will be removed |
32 | 30 | */ |
33 | | - entityRemoveAllComponents(entity, immediately); |
| 31 | + entityRemoveAllComponents(entity, immediately): void; |
34 | 32 |
|
35 | 33 | /** |
36 | 34 | * Remove the entity from this manager. It will clear also its components |
37 | 35 | * @param {Entity} entity Entity to remove from the manager |
38 | 36 | * @param {Bool} immediately If you want to remove the component immediately instead of deferred (Default is false) |
39 | 37 | */ |
40 | | - removeEntity(entity, immediately); |
| 38 | + removeEntity(entity, immediately): void; |
41 | 39 |
|
42 | 40 | /** |
43 | 41 | * Remove all entities from this manager |
44 | 42 | */ |
45 | | - removeAllEntities(); |
| 43 | + removeAllEntities(): void; |
46 | 44 |
|
47 | | - processDeferredRemoval(); |
| 45 | + processDeferredRemoval(): void; |
48 | 46 |
|
49 | 47 | /** |
50 | 48 | * Get a query based on a list of components |
51 | 49 | * @param {Array(Component)} Components List of components that will form the query |
52 | 50 | */ |
53 | | - queryComponents(Components); |
| 51 | + queryComponents(Components): [ ComponentConstructor<any> ]; |
54 | 52 |
|
55 | 53 | /** |
56 | 54 | * Return number of entities |
57 | 55 | */ |
58 | | - count(); |
| 56 | + count(): number; |
59 | 57 |
|
60 | 58 | /** |
61 | 59 | * Return some stats |
62 | 60 | */ |
63 | | - stats(); |
| 61 | + stats(): Stats; |
| 62 | +} |
| 63 | + |
| 64 | +interface EventDispatcherStats { |
| 65 | + fired: number; |
| 66 | + handled: number; |
| 67 | +} |
| 68 | + |
| 69 | +interface PoolStats { |
| 70 | + used: number; |
| 71 | + size: number; |
| 72 | +} |
| 73 | + |
| 74 | +interface QueryStats { |
| 75 | + numComponents: number; |
| 76 | + numEntities: number; |
| 77 | +} |
| 78 | + |
| 79 | +interface Stats { |
| 80 | + numEntities: number; |
| 81 | + numQueries: number; |
| 82 | + queries: { [ key: string ]: QueryStats }; |
| 83 | + numComponentPool: number; |
| 84 | + componentPool: { [ key: string ]: PoolStats }; |
| 85 | + eventDispatcher: EventDispatcherStats; |
64 | 86 | } |
0 commit comments