agentjs-core
Version:
A comprehensive agent-based modeling framework with built-in p5.js visualization
107 lines (105 loc) • 2.57 kB
TypeScript
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;