BsVertexDataDescRTTI.h 1.3 KB

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