Add handling for ArTrackingState changes in playback mode

This commit is contained in:
Georg Hagen
2024-07-12 19:45:18 +02:00
parent 515b3a6c73
commit 33bf5cd6e3
4 changed files with 18 additions and 1 deletions

View File

@@ -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<State>(name);

View File

@@ -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())
{

View File

@@ -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<ArFrame> m_nextFrame;

View File

@@ -11,8 +11,9 @@
namespace OpenVulkano::Vulkan
{
struct MemoryAllocation
class MemoryAllocation
{
public:
vk::DeviceMemory memory;
size_t used;
const size_t size;