BsScriptSerializableArray.h 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. #pragma once
  2. #include "BsScriptEnginePrerequisites.h"
  3. #include "CmIReflectable.h"
  4. #include <mono/jit/jit.h>
  5. namespace BansheeEngine
  6. {
  7. class BS_SCR_BE_EXPORT ScriptSerializableArray : public CM::IReflectable
  8. {
  9. private:
  10. struct ConstructPrivately {};
  11. public:
  12. ScriptSerializableArray(const ConstructPrivately& dummy, const ScriptSerializableTypeInfoArrayPtr& typeInfo, MonoObject* managedInstance);
  13. ScriptSerializableArray(const ConstructPrivately& dummy);
  14. static ScriptSerializableArrayPtr create(MonoObject* managedInstance, const ScriptSerializableTypeInfoArrayPtr& typeInfo);
  15. protected:
  16. ScriptSerializableTypeInfoArrayPtr mArrayTypeInfo;
  17. CM::Vector<ScriptSerializableFieldDataPtr>::type mArrayEntries;
  18. MonoObject* mManagedInstance;
  19. ::MonoClass* mClass;
  20. CM::UINT32 mNumElements;
  21. void setFieldData(CM::UINT32 arrayIdx, const ScriptSerializableFieldDataPtr& val);
  22. ScriptSerializableFieldDataPtr getFieldData(CM::UINT32 arrayIdx);
  23. void setValue(CM::UINT32 arrayIdx, void* val);
  24. void* getValue(CM::UINT32 arrayIdx);
  25. /************************************************************************/
  26. /* RTTI */
  27. /************************************************************************/
  28. static ScriptSerializableArrayPtr createEmpty();
  29. public:
  30. friend class ScriptSerializableArrayRTTI;
  31. static CM::RTTITypeBase* getRTTIStatic();
  32. virtual CM::RTTITypeBase* getRTTI() const;
  33. };
  34. }