BsCoreObjectManager.h 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. //__________________________ Banshee Project - A modern game development toolkit _________________________________//
  2. //_____________________________________ www.banshee-project.com __________________________________________________//
  3. //________________________ Copyright (c) 2014 Marko Pintera. All rights reserved. ________________________________//
  4. #pragma once
  5. #include "BsCorePrerequisites.h"
  6. #include "BsModule.h"
  7. namespace BansheeEngine
  8. {
  9. // TODO Low priority - Add debug option that would remember a call stack for each resource initialization,
  10. // so when we fail to release one we know which one it is.
  11. /**
  12. * @brief Manager that keeps track of all active CoreObjects.
  13. *
  14. * @note Thread safe.
  15. */
  16. class BS_CORE_EXPORT CoreObjectManager : public Module<CoreObjectManager>
  17. {
  18. public:
  19. CoreObjectManager();
  20. ~CoreObjectManager();
  21. /**
  22. * @brief Registers a new CoreObject notifying the manager the object
  23. * is created.
  24. */
  25. UINT64 registerObject(CoreObject* object);
  26. /**
  27. * @brief Unregisters a CoreObject notifying the manager the object
  28. * is destroyed.
  29. */
  30. void unregisterObject(CoreObject* object);
  31. private:
  32. UINT64 mNextAvailableID;
  33. Map<UINT64, CoreObject*> mObjects;
  34. BS_MUTEX(mObjectsMutex);
  35. };
  36. }