UNPKG

@dominicstop/utils

Version:

Yet another event emitter written in typescript.

41 lines 1.64 kB
import { AnyParticle } from "./AnyParticle"; import { PhysicsEngine } from "./PhysicsEngine"; import { SomeParticleForce } from "./SomeParticleForce"; import { SomeSystemForce } from "./SomeSystemForce"; /** * Simulation Loop Manager * * Manages the overall simulation loop, timing, and user controls * (e.g. start, stop, reset). */ export interface SomeOfflineSimulation<SomeParticle extends AnyParticle> { /** The physics engine instance */ engine: PhysicsEngine<SomeParticle>; /** Whether the simulation is currently running */ isRunning: boolean; /** Accumulated simulation time */ readonly totalSimulatedTime: number; /** Fixed time step for physics updates (e.g., 1/60th of a second) */ readonly fixedDeltaTimeSeconds: number; /** Called before engine.update */ onPreStep: ((deltaTime: number) => void) | null; /** Called after engine.update */ onPostStep: ((deltaTime: number) => void) | null; /** * Resets the simulation: clears the engine and resets simulation time. * * * Note: For a true "reset to initial state," * initial particle/force configurations would need to be stored and reloaded. */ reset(): void; /** * Advances the simulation by a single fixed time step (engine.update). * Useful for step-by-step debugging or specific scenarios. */ step(): void; /** Adds a particle to the physics engine. */ addParticle(particle: SomeParticle): void; /** Adds a force to the physics engine. */ addForce(force: SomeParticleForce | SomeSystemForce): void; } //# sourceMappingURL=SomeOfflineSimulation.d.ts.map