ImGuiMonitor.h 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. /*
  2. * Copyright (c) Contributors to the Open 3D Engine Project.
  3. * For complete copyright and license terms please see the LICENSE at the root of this distribution.
  4. *
  5. * SPDX-License-Identifier: Apache-2.0 OR MIT
  6. *
  7. */
  8. #pragma once
  9. #ifdef IMGUI_ENABLED
  10. #include <AzCore/Component/EntityId.h>
  11. #include <AzCore/Memory/Memory.h>
  12. #include <AzCore/RTTI/RTTI.h>
  13. #include <AzCore/std/containers/vector.h>
  14. #include <AzCore/std/containers/unordered_map.h>
  15. #include <EMotionFX/Source/EMotionFXConfig.h>
  16. #include <imgui/imgui.h>
  17. #include <ImGuiBus.h>
  18. #include <ImGuiMonitorBus.h>
  19. #include <LYImGuiUtils/HistogramGroup.h>
  20. namespace EMotionFX::MotionMatching
  21. {
  22. class EMFX_API ImGuiMonitor
  23. : public ImGui::ImGuiUpdateListenerBus::Handler
  24. , public ImGuiMonitorRequestBus::Handler
  25. {
  26. public:
  27. AZ_RTTI(ImGuiMonitor, "{BF1B85A4-215C-4E3A-8FD8-CE3233E5C779}")
  28. AZ_CLASS_ALLOCATOR_DECL
  29. ImGuiMonitor();
  30. ~ImGuiMonitor();
  31. // ImGui::ImGuiUpdateListenerBus::Handler
  32. void OnImGuiUpdate() override;
  33. void OnImGuiMainMenuUpdate() override;
  34. // ImGuiMonitorRequestBus::Handler
  35. void PushPerformanceHistogramValue(const char* performanceMetricName, float value) override;
  36. void PushCostHistogramValue(const char* costName, float value, const AZ::Color& color) override;
  37. void SetFrameDatabaseInfo(const ImGuiMonitorRequests::FrameDatabaseInfo& info) override { m_frameDatabaseInfo = info; }
  38. void SetFeatureMatrixInfo(const ImGuiMonitorRequests::FeatureMatrixInfo& info) override { m_featurMatrixInfo = info; }
  39. void SetKdTreeInfo(const ImGuiMonitorRequests::KdTreeInfo& info) override { m_kdTreeInfo = info; }
  40. private:
  41. ImGui::LYImGuiUtils::HistogramGroup m_performanceStats;
  42. ImGui::LYImGuiUtils::HistogramGroup m_featureCosts;
  43. ImGuiMonitorRequests::FrameDatabaseInfo m_frameDatabaseInfo;
  44. ImGuiMonitorRequests::FeatureMatrixInfo m_featurMatrixInfo;
  45. ImGuiMonitorRequests::KdTreeInfo m_kdTreeInfo;
  46. };
  47. } // namespace EMotionFX::MotionMatching
  48. #endif // IMGUI_ENABLED