BsVertexDataDescRTTI.h 1.6 KB

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