AppState_Benchmark01.cpp 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. // Copyright (c) 2008-2022 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. DestroyViewport();
  21. scene_ = nullptr;
  22. }
  23. void AppState_Benchmark01::HandleSceneUpdate(StringHash eventType, VariantMap& eventData)
  24. {
  25. float timeStep = eventData[SceneUpdate::P_TIMESTEP].GetFloat();
  26. fpsCounter_.Update(timeStep);
  27. UpdateCurrentFpsElement();
  28. if (GetSubsystem<Input>()->GetKeyDown(KEY_ESCAPE))
  29. {
  30. GetSubsystem<AppStateManager>()->SetRequiredAppStateId(APPSTATEID_MAINSCREEN);
  31. return;
  32. }
  33. if (fpsCounter_.GetTotalTime() >= 25.f)
  34. GetSubsystem<AppStateManager>()->SetRequiredAppStateId(APPSTATEID_RESULTSCREEN);
  35. }