BsMaterialRTTI.h 1.2 KB

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