UNPKG

agentjs-core

Version:

A comprehensive agent-based modeling framework with built-in p5.js visualization

107 lines (105 loc) 2.57 kB
import { EventEmitter } from 'eventemitter3'; import { AgentManager } from '../core/AgentManager'; import { Scheduler } from '../core/scheduling/Scheduler'; /** * Simulation state enum */ export declare enum SimulationState { IDLE = "idle", RUNNING = "running", PAUSED = "paused", STEPPING = "stepping" } /** * Simulation speed settings */ export interface SpeedSettings { targetFPS: number; speedMultiplier: number; maxStepsPerFrame: number; } /** * Controller events */ export interface ControllerEvents { 'state:changed': (state: SimulationState, previousState: SimulationState) => void; 'speed:changed': (settings: SpeedSettings) => void; 'step:complete': (step: number) => void; 'reset:complete': () => void; 'error': (error: Error) => void; } /** * Comprehensive simulation control system */ export declare class SimulationController extends EventEmitter<ControllerEvents> { private agentManager; private scheduler; private state; private currentStep; private animationFrameId; private lastFrameTime; private frameAccumulator; private speedSettings; private performanceStats; constructor(agentManager: AgentManager, scheduler: Scheduler); /** * Start or resume the simulation */ play(): void; /** * Pause the simulation */ pause(): void; /** * Stop and reset the simulation */ reset(): void; /** * Execute a single simulation step */ step(): void; /** * Set simulation speed */ setSpeed(speedMultiplier: number): void; /** * Set target FPS */ setTargetFPS(fps: number): void; /** * Set maximum steps per frame */ setMaxStepsPerFrame(steps: number): void; /** * Get current simulation state */ getState(): SimulationState; /** * Get current step count */ getCurrentStep(): number; /** * Get performance statistics */ getPerformanceStats(): Readonly<typeof this.performanceStats>; /** * Get speed settings */ getSpeedSettings(): Readonly<SpeedSettings>; /** * Main simulation loop */ private runSimulation; /** * Update performance statistics */ private updatePerformanceStats; /** * Clean up resources */ destroy(): void; } /** * Factory function for creating simulation controllers */ export declare function createSimulationController(agentManager: AgentManager, scheduler: Scheduler): SimulationController;