CmCoreObjectManager.h 666 B

123456789101112131415161718192021222324
  1. #pragma once
  2. #include "CmPrerequisites.h"
  3. #include "CmModule.h"
  4. namespace CamelotFramework
  5. {
  6. // TODO - Add debug option that would remember a call stack for each resource initialization,
  7. // so when we fail to release one we know which one it is.
  8. class CM_EXPORT CoreGpuObjectManager : public Module<CoreGpuObjectManager>
  9. {
  10. public:
  11. CoreGpuObjectManager();
  12. ~CoreGpuObjectManager();
  13. UINT64 registerObject(CoreObject* object);
  14. void unregisterObject(CoreObject* object);
  15. private:
  16. // Keeps a list of ALL loaded core GPU objects
  17. UINT64 mNextAvailableID;
  18. Map<UINT64, CoreObject*>::type mObjects;
  19. CM_MUTEX(mObjectsMutex);
  20. };
  21. }