in each class that uses it.legacy
| @@ -22,7 +22,6 @@ class DebugFpsData | |||
| private: | |||
| int fontid; | |||
| int frame; | |||
| }; | |||
| /* | |||
| @@ -34,7 +33,6 @@ DebugFps::DebugFps() | |||
| data = new DebugFpsData(); | |||
| data->fontid = Forge::Register("gfx/font/ascii.png"); | |||
| data->frame = 0; | |||
| } | |||
| Entity::Group DebugFps::GetGroup() | |||
| @@ -46,13 +44,12 @@ void DebugFps::TickDraw(float deltams) | |||
| { | |||
| Entity::TickDraw(deltams); | |||
| data->frame++; | |||
| char buf[1024]; | |||
| Font *font = Forge::GetFont(data->fontid); | |||
| sprintf(buf, "%2.2f fps (%i)", | |||
| 1e3f / Profiler::GetAvg(Profiler::STAT_TICK_FRAME), data->frame); | |||
| 1e3f / Profiler::GetAvg(Profiler::STAT_TICK_FRAME), | |||
| Ticker::GetFrameNum()); | |||
| font->PrintBold(10, 10, buf); | |||
| sprintf(buf, "Game % 7.2f % 7.2f", | |||
| @@ -118,9 +118,9 @@ gboolean GlMapView::Destroy() | |||
| return TRUE; | |||
| } | |||
| gboolean GlMapView::Draw(GdkEventExpose *event) | |||
| gboolean GlMapView::Draw(GdkEventExpose *e) | |||
| { | |||
| if (event->count > 0) | |||
| if (e->count > 0) | |||
| return TRUE; | |||
| /* OpenGL functions can be called only if make_current returns true */ | |||
| @@ -186,19 +186,19 @@ gboolean GlMapView::MoveAdjustments(double dx, double dy) | |||
| return TRUE; | |||
| } | |||
| gboolean GlMapView::MouseButton(GdkEventButton *event) | |||
| gboolean GlMapView::MouseButton(GdkEventButton *e) | |||
| { | |||
| if (event->type == GDK_BUTTON_PRESS && event->button == 2) | |||
| if (e->type == GDK_BUTTON_PRESS && e->button == 2) | |||
| { | |||
| panning = TRUE; | |||
| xpan = event->x; | |||
| ypan = event->y; | |||
| xpan = e->x; | |||
| ypan = e->y; | |||
| GdkCursor *cursor = gdk_cursor_new(GDK_HAND1); | |||
| gdk_window_set_cursor(glarea->window, cursor); | |||
| gdk_cursor_unref(cursor); | |||
| return FALSE; | |||
| } | |||
| else if (event->type == GDK_BUTTON_RELEASE && event->button == 2) | |||
| else if (e->type == GDK_BUTTON_RELEASE && e->button == 2) | |||
| { | |||
| panning = FALSE; | |||
| gdk_window_set_cursor(glarea->window, NULL); | |||
| @@ -208,28 +208,28 @@ gboolean GlMapView::MouseButton(GdkEventButton *event) | |||
| return TRUE; | |||
| } | |||
| gboolean GlMapView::MouseMotion(GdkEventMotion *event) | |||
| gboolean GlMapView::MouseMotion(GdkEventMotion *e) | |||
| { | |||
| if (panning) | |||
| { | |||
| if (event->x != xpan) | |||
| if (e->x != xpan) | |||
| { | |||
| double val = gtk_adjustment_get_value(hadj); | |||
| int map_width = mapviewer->GetWidth(); | |||
| val += xpan - event->x; | |||
| xpan = event->x; | |||
| val += xpan - e->x; | |||
| xpan = e->x; | |||
| if (val + glarea->allocation.width > map_width) | |||
| val = map_width - glarea->allocation.width; | |||
| gtk_adjustment_set_value(hadj, val); | |||
| gtk_adjustment_value_changed(hadj); | |||
| } | |||
| if (event->y != ypan) | |||
| if (e->y != ypan) | |||
| { | |||
| double val = gtk_adjustment_get_value(vadj); | |||
| int map_height = mapviewer->GetHeight(); | |||
| val += ypan - event->y; | |||
| ypan = event->y; | |||
| val += ypan - e->y; | |||
| ypan = e->y; | |||
| if (val + glarea->allocation.height > map_height) | |||
| val = map_height - glarea->allocation.height; | |||
| gtk_adjustment_set_value(vadj, val); | |||
| @@ -240,9 +240,9 @@ gboolean GlMapView::MouseMotion(GdkEventMotion *event) | |||
| return TRUE; | |||
| } | |||
| gboolean GlMapView::KeyPress(GdkEventKey *event) | |||
| gboolean GlMapView::KeyPress(GdkEventKey *e) | |||
| { | |||
| switch (event->keyval) | |||
| switch (e->keyval) | |||
| { | |||
| case GDK_Up: MoveAdjustments( 0.0, -10.0); break; | |||
| case GDK_Down: MoveAdjustments( 0.0, 10.0); break; | |||
| @@ -272,39 +272,39 @@ gboolean GlMapView::DestroySignal(GtkWidget *w, GlMapView *that) | |||
| return that->Destroy(); | |||
| } | |||
| gboolean GlMapView::DrawSignal(GtkWidget *w, GdkEventExpose *event, | |||
| gboolean GlMapView::DrawSignal(GtkWidget *w, GdkEventExpose *e, | |||
| GlMapView *that) | |||
| { | |||
| (void)w; | |||
| return that->Draw(event); | |||
| return that->Draw(e); | |||
| } | |||
| gboolean GlMapView::ReshapeSignal(GtkWidget *w, GdkEventConfigure *event, | |||
| gboolean GlMapView::ReshapeSignal(GtkWidget *w, GdkEventConfigure *e, | |||
| GlMapView *that) | |||
| { | |||
| (void)w; | |||
| (void)event; | |||
| (void)e; | |||
| return that->Setup(); | |||
| } | |||
| gboolean GlMapView::MouseButtonSignal(GtkWidget *w, GdkEventButton *event, | |||
| gboolean GlMapView::MouseButtonSignal(GtkWidget *w, GdkEventButton *e, | |||
| GlMapView *that) | |||
| { | |||
| (void)w; | |||
| return that->MouseButton(event); | |||
| return that->MouseButton(e); | |||
| } | |||
| gboolean GlMapView::MouseMotionSignal(GtkWidget *w, GdkEventMotion *event, | |||
| gboolean GlMapView::MouseMotionSignal(GtkWidget *w, GdkEventMotion *e, | |||
| GlMapView *that) | |||
| { | |||
| (void)w; | |||
| return that->MouseMotion(event); | |||
| return that->MouseMotion(e); | |||
| } | |||
| gboolean GlMapView::KeyPressSignal(GtkWidget *w, GdkEventKey *event, | |||
| gboolean GlMapView::KeyPressSignal(GtkWidget *w, GdkEventKey *e, | |||
| GlMapView *that) | |||
| { | |||
| (void)w; | |||
| return that->KeyPress(event); | |||
| return that->KeyPress(e); | |||
| } | |||
| @@ -20,26 +20,26 @@ private: | |||
| gboolean IdleTick(); | |||
| gboolean Setup(); | |||
| gboolean Destroy(); | |||
| gboolean Draw(GdkEventExpose *event); | |||
| gboolean Draw(GdkEventExpose *e); | |||
| gboolean UpdateAdjustments(); | |||
| gboolean MoveAdjustments(double dx, double dy); | |||
| gboolean MouseButton(GdkEventButton *event); | |||
| gboolean MouseMotion(GdkEventMotion *event); | |||
| gboolean KeyPress(GdkEventKey *event); | |||
| gboolean MouseButton(GdkEventButton *e); | |||
| gboolean MouseMotion(GdkEventMotion *e); | |||
| gboolean KeyPress(GdkEventKey *e); | |||
| /* Private signal slots */ | |||
| static gboolean IdleTickSignal(GlMapView *that); | |||
| static gboolean SetupSignal(GtkWidget *w, GlMapView *that); | |||
| static gboolean DestroySignal(GtkWidget *w, GlMapView *that); | |||
| static gboolean DrawSignal(GtkWidget *w, GdkEventExpose *event, | |||
| static gboolean DrawSignal(GtkWidget *w, GdkEventExpose *e, | |||
| GlMapView *that); | |||
| static gboolean ReshapeSignal(GtkWidget *w, GdkEventConfigure *event, | |||
| static gboolean ReshapeSignal(GtkWidget *w, GdkEventConfigure *e, | |||
| GlMapView *that); | |||
| static gboolean MouseButtonSignal(GtkWidget *w, GdkEventButton *event, | |||
| static gboolean MouseButtonSignal(GtkWidget *w, GdkEventButton *e, | |||
| GlMapView *that); | |||
| static gboolean MouseMotionSignal(GtkWidget *w, GdkEventMotion *event, | |||
| static gboolean MouseMotionSignal(GtkWidget *w, GdkEventMotion *e, | |||
| GlMapView *that); | |||
| static gboolean KeyPressSignal(GtkWidget *w, GdkEventKey *event, | |||
| static gboolean KeyPressSignal(GtkWidget *w, GdkEventKey *e, | |||
| GlMapView *that); | |||
| private: | |||
| @@ -21,21 +21,19 @@ static class ProfilerData | |||
| { | |||
| friend class Profiler; | |||
| static int const HISTORY = 30; | |||
| static int const HISTORY = 32; | |||
| public: | |||
| ProfilerData() | |||
| { | |||
| for (int i = 0; i < HISTORY; i++) | |||
| history[i] = 0.0f; | |||
| frame = 0; | |||
| avg = max = 0.0f; | |||
| } | |||
| private: | |||
| float history[HISTORY]; | |||
| Timer timer; | |||
| int frame; | |||
| float avg, max; | |||
| } | |||
| data[Profiler::STAT_COUNT]; | |||
| @@ -53,8 +51,7 @@ void Profiler::Stop(int id) | |||
| { | |||
| float deltams = data[id].timer.GetMs(); | |||
| data[id].history[data->frame % ProfilerData::HISTORY] = deltams; | |||
| data[id].frame++; | |||
| data[id].history[Ticker::GetFrameNum() % ProfilerData::HISTORY] = deltams; | |||
| data[id].avg = 0.0f; | |||
| data[id].max = 0.0f; | |||
| @@ -23,12 +23,11 @@ static class TickerData | |||
| public: | |||
| TickerData() : | |||
| todo(0), | |||
| nentities(0) | |||
| todo(0), nentities(0), | |||
| frame(0), deltams(0), bias(0) | |||
| { | |||
| for (int i = 0; i < Entity::GROUP_COUNT; i++) | |||
| list[i] = NULL; | |||
| bias = 0.0f; | |||
| } | |||
| ~TickerData() | |||
| @@ -46,6 +45,7 @@ private: | |||
| int nentities; | |||
| /* Fixed framerate management */ | |||
| int frame; | |||
| Timer timer; | |||
| float deltams, bias; | |||
| } | |||
| @@ -73,6 +73,8 @@ void Ticker::TickGame() | |||
| Profiler::Start(Profiler::STAT_TICK_GAME); | |||
| data->frame++; | |||
| data->deltams = data->timer.GetMs(); | |||
| data->bias += data->deltams; | |||
| @@ -162,3 +164,8 @@ void Ticker::ClampFps(float deltams) | |||
| data->bias -= deltams; | |||
| } | |||
| int Ticker::GetFrameNum() | |||
| { | |||
| return data->frame; | |||
| } | |||
| @@ -24,6 +24,7 @@ public: | |||
| static void TickGame(); | |||
| static void TickDraw(); | |||
| static void ClampFps(float deltams); | |||
| static int GetFrameNum(); | |||
| }; | |||
| #endif // __DH_TICKER_H__ | |||