#include "FxEngine.h" #include #include "coord.h" #include #include #include #include FE_position FE_user={0,0,0}; double FE_dh,FE_dv,FE_roulis; static uint32_t frame_interval=0, frame_interval_min=1000001, frame_interval_max=1; // in milliseconds static bool loaded_before=false; static double dh_vel=0.05; static double dv_vel=0.05; static void FE_move() // call at each frame { key_event_t event; while (true) { event=pollevent(); if (event.type&KEYEV_DOWN) { if (event.key==KEY_LEFT) FE_dh-=dh_vel; if (event.key==KEY_RIGHT) FE_dh+=dh_vel; if (event.key==KEY_UP) FE_dv+=dv_vel; if (event.key==KEY_DOWN) FE_dv-=dv_vel; FE_dh=FE_modulo_2pi(FE_dh); FE_dv=FE_modulo_2pi(FE_dv); } if (event.type==KEYEV_NONE) break; } } void FE_new_frame(void) { if (loaded_before) { prof_leave(0); frame_interval=prof_time(0); if (frame_intervalframe_interval_max) frame_interval_max=frame_interval; } else { prof_init(1,0); loaded_before=true; } prof_clear(0); prof_enter(0); FE_move(); // Not implemented yet ! FE_set_matrice(); FE_zbuffer_clear(); dupdate(); dclear(C_WHITE); } static char fps_history[15]; char* FE_get_fps_history() { sprintf(fps_history,"%d/%d/%d",FE_get_fps_min(),FE_get_fps_current(),FE_get_fps_max()); return fps_history; } static const uint32_t unite=1000000; unsigned int FE_get_fps_current(void) {return unite/frame_interval;} unsigned int FE_get_fps_min(void) {return unite/frame_interval_max;} unsigned int FE_get_fps_max(void) {return unite/frame_interval_min;}