import RAPIER from "@dimforge/rapier3d-compat"; import { createWorld as createBitecsWorld } from "bitecs"; import * as THREE from "three"; import { Timer } from 'three/addons/misc/Timer.js'; import { InputState } from "./input"; import { Module } from "../modules/Module"; type Resource = { resource: R; dispose?: (res: R) => void; }; export type System = (ctx: ECSContext) => void; export type World = ReturnType; export type ECSContext = World & { three: { scene: THREE.Scene; camera: THREE.Camera; renderer: THREE.WebGLRenderer; worldRoot: THREE.Group; }; rapier: { world: RAPIER.World; }; input: InputState; modules: Map>; resources: Map; pipeline: System[]; isPlaying: boolean; time: Timer; }; export declare function getModule>(ctx: ECSContext, name: string, hideWarnings?: boolean): T | undefined; export declare function setModule>(ctx: ECSContext, name: string, mod: T): void; export declare function setResource(ctx: ECSContext, name: string, resource: R, disposeFn?: (res: R) => void): void; export declare function getResource(ctx: ECSContext, name: string, hideWarnings?: boolean): R | undefined; export declare function addSystem(ctx: ECSContext, sys: System): void; export declare function runSystems(ctx: ECSContext): void; export declare function clearECS(ctx: ECSContext): void; export declare function resetECS(ctx: ECSContext): void; export declare function createECS(): ECSContext; export {}; //# sourceMappingURL=ecs.d.ts.map