@thi.ng/ecs
Version:
Entity Component System based around typed arrays & sparse sets
27 lines • 1.83 kB
TypeScript
import type { Event, INotify, Listener, Maybe } from "@thi.ng/api";
import { IDGen } from "@thi.ng/idgen";
import type { IMemPoolArray } from "@thi.ng/malloc";
import { type ComponentID, type ECSEventType, type ECSOpts, type GroupOpts, type IComponent, type MemMappedComponentOpts, type ObjectComponentOpts } from "./api.js";
import { MemMappedComponent } from "./components/mem-component.js";
import { ObjectComponent } from "./components/object-component.js";
import { Group } from "./groups/group.js";
export declare class ECS<SPEC> implements INotify<ECSEventType> {
idgen: IDGen;
pool: IMemPoolArray;
components: Map<ComponentID<SPEC>, IComponent<ComponentID<SPEC>, any, any, any>>;
groups: Map<string, Group<SPEC, any>>;
constructor(opts?: Partial<ECSOpts>);
defEntity<K extends ComponentID<SPEC>>(comps?: K[] | IComponent<K, any, any, any>[] | Partial<Pick<SPEC, K>>): number;
defComponent<K extends ComponentID<SPEC>>(opts: MemMappedComponentOpts<K>): Maybe<MemMappedComponent<K>>;
defComponent<K extends ComponentID<SPEC>>(opts: ObjectComponentOpts<K, SPEC[K]>): Maybe<ObjectComponent<K, SPEC[K]>>;
defGroup<K extends ComponentID<SPEC>>(comps: IComponent<K, any, any, any>[], owned?: IComponent<K, any, any, any>[], opts?: Partial<GroupOpts>): Group<SPEC, K>;
hasID(id: number): void;
deleteID(id: number): boolean;
componentsForID(id: number): IterableIterator<IComponent<ComponentID<SPEC>, any, any, any>>;
groupsForID(id: number): IterableIterator<Group<SPEC, any>>;
setCapacity(newCap: number): void;
addListener(id: ECSEventType, fn: Listener<ECSEventType>, scope?: any): boolean;
removeListener(id: ECSEventType, fn: Listener<ECSEventType>, scope?: any): boolean;
notify(event: Event<ECSEventType>): boolean;
}
//# sourceMappingURL=ecs.d.ts.map