#pragma once #include "TracyAsyncEvents.hpp" #include namespace tracy { template class Awaitable : public BaseAwaitableType { public: Awaitable(BaseAwaitableType baseAwaitable); ~Awaitable(); private: AsyncScopedZone* m_pCurrentZone = nullptr; }; template Awaitable::Awaitable(BaseAwaitableType baseAwaitable) : BaseAwaitableType(std::move(baseAwaitable)) { if (g_pCurrentZone) { m_pCurrentZone = g_pCurrentZone; StopAsyncEvent(g_pCurrentZone); } } template Awaitable::~Awaitable() { if (m_pCurrentZone) StartAsyncEvent(m_pCurrentZone); } }