import { Entity, EntityManager } from "./entity"; import { EventDefinitions, IEventSource, EventKeys } from "zogra-renderer"; import { ConstructorType } from "../utils/util"; import { IAsset } from "zogra-renderer"; import { IPhysicsSystem } from "../physics/physics-generic"; interface SceneEvents extends EventDefinitions { "entity-add": (entity: Entity, parent: Entity | null) => void; "entity-remove": (entity: Entity, parent: Entity | null) => void; } export declare class Scene extends EntityManager implements IAsset, IEventSource { readonly assetID: number; name: string; physics: Physics; private eventEmitter; private addsNextFrame; private removesNextFrame; constructor(PhysicsSystem: ConstructorType); add(entity: Entity, parent?: Entity | null): void; remove(entity: Entity): void; rootEntities(): Entity[]; getEntities(): Entity[]; getEntitiesOfType(type: ConstructorType): T[]; withPhysics(physics: Physics): Scene; on>(event: T, listener: SceneEvents[T]): void; off>(event: T, listener: SceneEvents[T]): void; clearAll(): void; destroy(): void; private addPendingEntities; private removePendingEntites; } export {};