BsVertexDataDescRTTI.h 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. #pragma once
  2. #include "BsCorePrerequisites.h"
  3. #include "BsRTTIType.h"
  4. #include "BsVertexDataDesc.h"
  5. namespace BansheeEngine
  6. {
  7. /** @cond RTTI */
  8. /** @addtogroup RTTI-Impl-Core
  9. * @{
  10. */
  11. class BS_CORE_EXPORT VertexDataDescRTTI : public RTTIType<VertexDataDesc, IReflectable, VertexDataDescRTTI>
  12. {
  13. private:
  14. VertexElement& getVertexElementData(VertexDataDesc* obj, UINT32 arrayIdx) { return obj->mVertexElements[arrayIdx]; }
  15. void setVertexElementData(VertexDataDesc* obj, UINT32 arrayIdx, VertexElement& value) { obj->mVertexElements[arrayIdx] = value; }
  16. UINT32 getNumVertexElementData(VertexDataDesc* obj) { return (UINT32)obj->mVertexElements.size(); }
  17. void setNumVertexElementData(VertexDataDesc* obj, UINT32 numElements) { obj->mVertexElements.resize(numElements); }
  18. public:
  19. VertexDataDescRTTI()
  20. {
  21. addPlainArrayField("mVertexData", 0, &VertexDataDescRTTI::getVertexElementData,
  22. &VertexDataDescRTTI::getNumVertexElementData, &VertexDataDescRTTI::setVertexElementData, &VertexDataDescRTTI::setNumVertexElementData);
  23. }
  24. std::shared_ptr<IReflectable> newRTTIObject() override
  25. {
  26. return bs_shared_ptr<VertexDataDesc>(new (bs_alloc<VertexDataDesc>()) VertexDataDesc());
  27. }
  28. const String& getRTTIName() override
  29. {
  30. static String name = "VertexDataDesc";
  31. throw name;
  32. }
  33. UINT32 getRTTIId() override
  34. {
  35. return TID_VertexDataDesc;
  36. }
  37. };
  38. /** @} */
  39. /** @endcond */
  40. }