From 15740faf9fe9fe4be08965098bbf2947e096aeeb Mon Sep 17 00:00:00 2001 From: chai Date: Wed, 14 Aug 2019 22:50:43 +0800 Subject: +Unity Runtime code --- Runtime/GfxDevice/threaded/ClientIDMapper.h | 46 +++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100644 Runtime/GfxDevice/threaded/ClientIDMapper.h (limited to 'Runtime/GfxDevice/threaded/ClientIDMapper.h') diff --git a/Runtime/GfxDevice/threaded/ClientIDMapper.h b/Runtime/GfxDevice/threaded/ClientIDMapper.h new file mode 100644 index 0000000..4156701 --- /dev/null +++ b/Runtime/GfxDevice/threaded/ClientIDMapper.h @@ -0,0 +1,46 @@ +#ifndef CLIENTIDMAPPER_H +#define CLIENTIDMAPPER_H + +#include "Runtime/Utilities/dynamic_array.h" +#include "Runtime/GfxDevice/GfxDevice.h" + +#if ENABLE_GFXDEVICE_REMOTE_PROCESS +#define ClientIDWrapper(type) ClientIDMapper::ClientID +#define ClientIDWrapperHandle(type) ClientIDMapper::ClientID +#else +#define ClientIDWrapper(type) type* +#define ClientIDWrapperHandle(type) type +#endif + +class ClientIDMapper { +public: + typedef UInt32 ClientID; + + ClientIDMapper() : + m_HighestAllocatedID(0) + { + } + + ClientID CreateID() + { + if (m_FreeIDs.empty()) + return ++m_HighestAllocatedID; + else + { + ClientID retval = m_FreeIDs.back(); + m_FreeIDs.pop_back(); + return retval; + } + } + + void FreeID(ClientID cid) + { + m_FreeIDs.push_back(cid); + } + +private: + ClientID m_HighestAllocatedID; + dynamic_array m_FreeIDs; +}; + +#endif \ No newline at end of file -- cgit v1.1-26-g67d0