BsRuntimeScriptObjects.h 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. #pragma once
  2. #include "BsScriptEnginePrerequisites.h"
  3. #include "CmModule.h"
  4. namespace BansheeEngine
  5. {
  6. enum class ScriptPrimitiveType
  7. {
  8. Bool,
  9. Char,
  10. I8,
  11. U8,
  12. I16,
  13. U16,
  14. I32,
  15. U32,
  16. I64,
  17. U64,
  18. String
  19. };
  20. enum class ScriptFieldType
  21. {
  22. Primitive,
  23. Complex,
  24. ResourceRef,
  25. GameObjectRef
  26. };
  27. enum class ScriptFieldFlags
  28. {
  29. Serializable = 0x01,
  30. Array = 0x02,
  31. Inspectable = 0x04
  32. };
  33. struct BS_SCR_BE_EXPORT SerializableFieldInfo
  34. {
  35. SerializableFieldInfo();
  36. ~SerializableFieldInfo();
  37. CM::String mName;
  38. CM::String mTypeNamespace;
  39. CM::String mTypeName;
  40. ScriptFieldType mType;
  41. ScriptFieldFlags mFlags;
  42. MonoField* mMonoField;
  43. };
  44. struct BS_SCR_BE_EXPORT SerializableObjectInfo
  45. {
  46. SerializableObjectInfo();
  47. ~SerializableObjectInfo();
  48. CM::String mNamespace;
  49. CM::String mTypeName;
  50. MonoClass* mMonoClass;
  51. CM::UnorderedMap<CM::String, SerializableFieldInfo*>::type mFields;
  52. };
  53. class BS_SCR_BE_EXPORT RuntimeScriptObjects : public CM::Module<RuntimeScriptObjects>
  54. {
  55. public:
  56. ~RuntimeScriptObjects();
  57. void refreshScriptObjects();
  58. private:
  59. CM::UnorderedMap<CM::String, SerializableObjectInfo*>::type mObjectInfos;
  60. void clearScriptObjects();
  61. };
  62. }