From 33bf5cd6e3df56eedde7168eb3d16562eff05061 Mon Sep 17 00:00:00 2001 From: Georg Hagen Date: Fri, 12 Jul 2024 19:45:18 +0200 Subject: [PATCH] Add handling for ArTrackingState changes in playback mode --- openVulkanoCpp/AR/ArTrackingState.hpp | 10 ++++++++++ .../AR/Provider/Playback/ArSessionPlayback.cpp | 5 +++++ .../AR/Provider/Playback/ArSessionPlayback.hpp | 1 + openVulkanoCpp/Vulkan/Resources/MemoryAllocation.hpp | 3 ++- 4 files changed, 18 insertions(+), 1 deletion(-) diff --git a/openVulkanoCpp/AR/ArTrackingState.hpp b/openVulkanoCpp/AR/ArTrackingState.hpp index 29bf304..5ae1599 100644 --- a/openVulkanoCpp/AR/ArTrackingState.hpp +++ b/openVulkanoCpp/AR/ArTrackingState.hpp @@ -75,6 +75,16 @@ namespace OpenVulkano::AR return m_state != rhs; } + [[nodiscard]] constexpr bool operator ==(const ArTrackingState& rhs) + { + return m_state == rhs.m_state; + } + + [[nodiscard]] constexpr bool operator !=(const ArTrackingState& rhs) + { + return m_state != rhs.m_state; + } + static ArTrackingState GetFromName(std::string_view name) { auto result = magic_enum::enum_cast(name); diff --git a/openVulkanoCpp/AR/Provider/Playback/ArSessionPlayback.cpp b/openVulkanoCpp/AR/Provider/Playback/ArSessionPlayback.cpp index 5d1792b..7278cac 100644 --- a/openVulkanoCpp/AR/Provider/Playback/ArSessionPlayback.cpp +++ b/openVulkanoCpp/AR/Provider/Playback/ArSessionPlayback.cpp @@ -74,6 +74,11 @@ namespace OpenVulkano::AR::Playback // Trigger events OnNewFrameAvailable(); OnNewFrame(frame); + if (frame->GetTrackingState() != m_lastTrackingState) + { + m_lastTrackingState = frame->GetTrackingState(); + OnTrackingStateChanged(m_lastTrackingState); + } OnNewCameraTransformation(frame->GetCameraTransformation()); if (OnNewCameraViewMatrix.HasHandlers()) { diff --git a/openVulkanoCpp/AR/Provider/Playback/ArSessionPlayback.hpp b/openVulkanoCpp/AR/Provider/Playback/ArSessionPlayback.hpp index 85a6502..6681124 100644 --- a/openVulkanoCpp/AR/Provider/Playback/ArSessionPlayback.hpp +++ b/openVulkanoCpp/AR/Provider/Playback/ArSessionPlayback.hpp @@ -46,6 +46,7 @@ class ArSessionPlayback final : public ArSession, public std::enable_shared_from const std::string recordingPath; const bool autoAdvance; ArPlaybackReader playbackReader; + ArTrackingState m_lastTrackingState = ArTrackingState::UNKNOWN; std::atomic_bool m_frameConsumed = true; std::shared_ptr m_nextFrame; diff --git a/openVulkanoCpp/Vulkan/Resources/MemoryAllocation.hpp b/openVulkanoCpp/Vulkan/Resources/MemoryAllocation.hpp index 428766d..3d65c57 100644 --- a/openVulkanoCpp/Vulkan/Resources/MemoryAllocation.hpp +++ b/openVulkanoCpp/Vulkan/Resources/MemoryAllocation.hpp @@ -11,8 +11,9 @@ namespace OpenVulkano::Vulkan { - struct MemoryAllocation + class MemoryAllocation { + public: vk::DeviceMemory memory; size_t used; const size_t size;