SimulationLoopControl


public:
 static void StartSim(void);
 static void StopSim(void);

 static void StartGraphics(void);
 static void StopGraphics(void);

 static void Loop(void);
static void StartLoop(void);

static int  InSim(void)   { return currentMode == RunningGraphics; }
 static int  GetSimTick(void) { return sim_tick; }

 static HANDLE wait_for_sim_cleanup;
 static HANDLE wait_for_graphics_cleanup;

  protected:
 static enum SimLoopControlMode {
  Stopped,
  StartingSim,
  RunningSim,
  StartingGraphics,
  Step2,
  StartRunningGraphics,
  RunningGraphics,
  StoppingGraphics,
  Step5,
  StoppingSim,
 } currentMode;

 static HANDLE wait_for_start_graphics;
 static HANDLE wait_for_stop_graphics;
 static int sim_tick;