BsResourceRTTI.h 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  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 "BsRTTIType.h"
  7. #include "BsResource.h"
  8. namespace BansheeEngine
  9. {
  10. class BS_CORE_EXPORT ResourceRTTI : public RTTIType<Resource, IReflectable, ResourceRTTI>
  11. {
  12. private:
  13. UINT32& getSize(Resource* obj) { return obj->mSize; }
  14. void setSize(Resource* obj, UINT32& size) { obj->mSize = size; }
  15. String& getName(Resource* obj) { return obj->mName; }
  16. void setName(Resource* obj, String& name) { obj->mName = name; }
  17. public:
  18. ResourceRTTI()
  19. {
  20. addPlainField("mSize", 0, &ResourceRTTI::getSize, &ResourceRTTI::setSize);
  21. addPlainField("mName", 1, &ResourceRTTI::getName, &ResourceRTTI::setName);
  22. }
  23. virtual const String& getRTTIName()
  24. {
  25. static String name = "Resource";
  26. return name;
  27. }
  28. virtual UINT32 getRTTIId()
  29. {
  30. return 100;
  31. }
  32. virtual std::shared_ptr<IReflectable> newRTTIObject()
  33. {
  34. BS_EXCEPT(InternalErrorException, "Cannot instantiate an abstract class.");
  35. }
  36. };
  37. }