X-Git-Url: http://git.localhorst.tv/?a=blobdiff_plain;f=src%2Fapp%2FApplication.cpp;h=6e46203aa94184de00c55d90ff41025b7433d12d;hb=8456b7dac2051bfd2b507a39854c1428eb4d91cd;hp=29eaee781e9ba20780fafa2cc4bde331777d059a;hpb=25d7499f7923291d7287123320e7563a367e92e7;p=l2e.git diff --git a/src/app/Application.cpp b/src/app/Application.cpp index 29eaee7..6e46203 100644 --- a/src/app/Application.cpp +++ b/src/app/Application.cpp @@ -28,7 +28,7 @@ Application::~Application() { State *Application::CurrentState() { - return states.top(); + return states.empty() ? 0 : states.top(); } void Application::UpdateState() { @@ -120,8 +120,12 @@ void Application::Run() { void Application::Loop() { Uint32 now(SDL_GetTicks()); Uint32 deltaT(now - last); - if (deltaT > 34) deltaT = 34; + GlobalTimers().Update(deltaT); + if (deltaT > 30) deltaT = 30; + if (CurrentState()) { + CurrentState()->GraphicsTimers().Update(deltaT); + } HandleEvents(); if (!StateChangePending()) { UpdateWorld(deltaT); @@ -155,12 +159,13 @@ void Application::HandleEvents() { break; } } - CurrentState()->HandleInput(input); + CurrentState()->HandleEvents(input); } void Application::UpdateWorld(Uint32 deltaT) { if (!CurrentState()) return; for (Uint32 i(0); i < deltaT; ++i) { + CurrentState()->PhysicsTimers().Update(0.001f); CurrentState()->UpdateWorld(0.001f); } }