BsScriptSerializableArrayRTTI.h 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. #pragma once
  2. #include "BsScriptEnginePrerequisites.h"
  3. #include "CmRTTIType.h"
  4. #include "BsScriptSerializableArray.h"
  5. namespace BansheeEngine
  6. {
  7. class BS_SCR_BE_EXPORT ScriptSerializableArrayRTTI : public CM::RTTIType<ScriptSerializableArray, CM::IReflectable, ScriptSerializableArrayRTTI>
  8. {
  9. private:
  10. ScriptSerializableTypeInfoArrayPtr getTypeInfo(ScriptSerializableArray* obj)
  11. {
  12. return obj->mArrayTypeInfo;
  13. }
  14. void setTypeInfo(ScriptSerializableArray* obj, ScriptSerializableTypeInfoArrayPtr val)
  15. {
  16. obj->mArrayTypeInfo = val;
  17. }
  18. ScriptSerializableFieldDataPtr getArrayEntry(ScriptSerializableArray* obj, CM::UINT32 arrayIdx)
  19. {
  20. return obj->mArrayEntries[arrayIdx];
  21. }
  22. void setArrayEntry(ScriptSerializableArray* obj, CM::UINT32 arrayIdx, ScriptSerializableFieldDataPtr val)
  23. {
  24. obj->mArrayEntries[arrayIdx] = val;
  25. }
  26. CM::UINT32 getNumArrayEntries(ScriptSerializableArray* obj)
  27. {
  28. return (CM::UINT32)obj->mArrayEntries.size();
  29. }
  30. void setNumArrayEntries(ScriptSerializableArray* obj, CM::UINT32 numEntries)
  31. {
  32. obj->mArrayEntries.resize(numEntries);
  33. }
  34. public:
  35. ScriptSerializableArrayRTTI()
  36. {
  37. addReflectablePtrField("mArrayTypeInfo", 0, &ScriptSerializableArrayRTTI::getTypeInfo, &ScriptSerializableArrayRTTI::setTypeInfo);
  38. addReflectablePtrArrayField("mArrayEntries", 1, &ScriptSerializableArrayRTTI::getArrayEntry, &ScriptSerializableArrayRTTI::getNumArrayEntries,
  39. &ScriptSerializableArrayRTTI::setArrayEntry, &ScriptSerializableArrayRTTI::setNumArrayEntries);
  40. }
  41. virtual void onDeserializationEnded(CM::IReflectable* obj)
  42. {
  43. ScriptSerializableArray* serializableObject = static_cast<ScriptSerializableArray*>(obj);
  44. // TODO
  45. }
  46. virtual const CM::String& getRTTIName()
  47. {
  48. static CM::String name = "ScriptSerializableArray";
  49. return name;
  50. }
  51. virtual CM::UINT32 getRTTIId()
  52. {
  53. return TID_ScriptSerializableArray;
  54. }
  55. virtual std::shared_ptr<CM::IReflectable> newRTTIObject()
  56. {
  57. return ScriptSerializableArray::createEmpty();
  58. }
  59. };
  60. }