BsMaterialRTTI.h 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. #pragma once
  2. #include "BsCorePrerequisites.h"
  3. #include "BsRTTIType.h"
  4. #include "BsMaterial.h"
  5. namespace BansheeEngine
  6. {
  7. class BS_CORE_EXPORT MaterialRTTI : public RTTIType<Material, Resource, MaterialRTTI>
  8. {
  9. private:
  10. HShader& getShader(Material* obj)
  11. {
  12. return obj->mShader;
  13. }
  14. void setShader(Material* obj, HShader& val)
  15. {
  16. obj->mShader = val;
  17. }
  18. std::shared_ptr<MaterialParams> getMaterialParams(Material* obj)
  19. {
  20. return obj->mCachedParams;
  21. }
  22. void setMaterialParams(Material* obj, std::shared_ptr<MaterialParams> value)
  23. {
  24. obj->mRTTIData = value;
  25. }
  26. public:
  27. MaterialRTTI()
  28. {
  29. addReflectableField("mShader", 0, &MaterialRTTI::getShader, &MaterialRTTI::setShader);
  30. addReflectablePtrField("mMaterialParams", 2, &MaterialRTTI::getMaterialParams, &MaterialRTTI::setMaterialParams);
  31. }
  32. virtual void onDeserializationEnded(IReflectable* obj) override;
  33. virtual const String& getRTTIName() override
  34. {
  35. static String name = "Material";
  36. return name;
  37. }
  38. virtual UINT32 getRTTIId() override
  39. {
  40. return TID_Material;
  41. }
  42. virtual std::shared_ptr<IReflectable> newRTTIObject() override;
  43. };
  44. }