AppState_Benchmark01.cpp 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. // Copyright (c) 2008-2023 the Urho3D project
  2. // License: MIT
  3. #include "AppState_Benchmark01.h"
  4. #include "AppStateManager.h"
  5. #include <Urho3D/Input/Input.h>
  6. #include <Urho3D/Scene/SceneEvents.h>
  7. #include <Urho3D/DebugNew.h>
  8. using namespace Urho3D;
  9. void AppState_Benchmark01::OnEnter()
  10. {
  11. assert(!scene_);
  12. LoadSceneXml("99_Benchmark/Scenes/Benchmark01.xml");
  13. GetSubsystem<Input>()->SetMouseVisible(false);
  14. SetupViewport();
  15. SubscribeToEvent(scene_, E_SCENEUPDATE, URHO3D_HANDLER(AppState_Benchmark01, HandleSceneUpdate));
  16. fpsCounter_.Clear();
  17. }
  18. void AppState_Benchmark01::OnLeave()
  19. {
  20. UnsubscribeFromAllEvents();
  21. DestroyViewport();
  22. scene_ = nullptr;
  23. }
  24. void AppState_Benchmark01::HandleSceneUpdate(StringHash eventType, VariantMap& eventData)
  25. {
  26. float timeStep = eventData[SceneUpdate::P_TIMESTEP].GetFloat();
  27. fpsCounter_.Update(timeStep);
  28. UpdateCurrentFpsElement();
  29. if (GetSubsystem<Input>()->GetKeyDown(KEY_ESCAPE))
  30. {
  31. GetSubsystem<AppStateManager>()->SetRequiredAppStateId(APPSTATEID_MAINSCREEN);
  32. return;
  33. }
  34. if (fpsCounter_.GetTotalTime() >= 25.f)
  35. GetSubsystem<AppStateManager>()->SetRequiredAppStateId(APPSTATEID_RESULTSCREEN);
  36. }