GrObject.h 870 B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. // Copyright (C) 2009-2016, 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. {
  11. /// @addtogroup graphics
  12. /// @{
  13. /// Base of all graphics objects.
  14. class GrObject : public NonCopyable
  15. {
  16. public:
  17. GrObject(GrManager* manager);
  18. virtual ~GrObject()
  19. {
  20. }
  21. GrManager& getManager()
  22. {
  23. return *m_manager;
  24. }
  25. const GrManager& getManager() const
  26. {
  27. return *m_manager;
  28. }
  29. GrAllocator<U8> getAllocator() const;
  30. Atomic<I32>& getRefcount()
  31. {
  32. return m_refcount;
  33. }
  34. /// A unique identifier for caching objects.
  35. U64 getUuid() const
  36. {
  37. return m_uuid;
  38. }
  39. private:
  40. Atomic<I32> m_refcount;
  41. GrManager* m_manager;
  42. U64 m_uuid;
  43. };
  44. /// @}
  45. } // end namespace anki