GrObject.h 868 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. // Copyright (C) 2009-2015, Panagiotis Christopoulos Charitos.
  2. // All rights reserved.
  3. // Code licensed under the BSD License.
  4. // http://www.anki3d.org/LICENSE
  5. #pragma once
  6. #include "anki/gr/Common.h"
  7. #include "anki/util/Atomic.h"
  8. #include "anki/util/NonCopyable.h"
  9. namespace anki {
  10. /// @addtogroup graphics
  11. /// @{
  12. /// Base of all graphics objects.
  13. class GrObject: public NonCopyable
  14. {
  15. public:
  16. GrObject(GrManager* manager);
  17. virtual ~GrObject()
  18. {}
  19. GrManager& getManager()
  20. {
  21. return *m_manager;
  22. }
  23. const GrManager& getManager() const
  24. {
  25. return *m_manager;
  26. }
  27. GrAllocator<U8> getAllocator() const;
  28. Atomic<I32>& getRefcount()
  29. {
  30. return m_refcount;
  31. }
  32. /// A unique identifier for caching objects.
  33. U64 getUuid() const
  34. {
  35. return m_uuid;
  36. }
  37. private:
  38. Atomic<I32> m_refcount;
  39. GrManager* m_manager;
  40. U64 m_uuid;
  41. };
  42. /// @}
  43. } // end namespace anki