BsScriptEnginePrerequisites.h 6.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208
  1. //********************************** Banshee Engine (www.banshee3d.com) **************************************************//
  2. //**************** Copyright (c) 2016 Marko Pintera ([email protected]). All rights reserved. **********************//
  3. #pragma once
  4. #include "BsMonoPrerequisites.h"
  5. // DLL export
  6. #if BS_PLATFORM == BS_PLATFORM_WIN32 // Windows
  7. # if BS_COMPILER == BS_COMPILER_MSVC
  8. # if defined(BS_STATIC_LIB)
  9. # define BS_SCR_BE_EXPORT
  10. # else
  11. # if defined(BS_SCR_BE_EXPORTS)
  12. # define BS_SCR_BE_EXPORT __declspec(dllexport)
  13. # else
  14. # define BS_SCR_BE_EXPORT __declspec(dllimport)
  15. # endif
  16. # endif
  17. # else
  18. # if defined(BS_STATIC_LIB)
  19. # define BS_SCR_BE_EXPORT
  20. # else
  21. # if defined(BS_SCR_BE_EXPORTS)
  22. # define BS_SCR_BE_EXPORT __attribute__ ((dllexport))
  23. # else
  24. # define BS_SCR_BE_EXPORT __attribute__ ((dllimport))
  25. # endif
  26. # endif
  27. # endif
  28. # define BS_SCR_BE_HIDDEN
  29. #else // Linux/Mac settings
  30. # define BS_SCR_BE_EXPORT __attribute__ ((visibility ("default")))
  31. # define BS_SCR_BE_HIDDEN __attribute__ ((visibility ("hidden")))
  32. #endif
  33. /** @addtogroup Plugins
  34. * @{
  35. */
  36. /** @defgroup SBansheeEngine SBansheeEngine
  37. * Contains script interop objects and other scripting functionality for the engine layer.
  38. * @{
  39. */
  40. /** @defgroup ScriptInteropEngine Interop
  41. * Script interop objects for communicating between native code and MBansheeEngine managed assembly.
  42. */
  43. /** @cond RTTI */
  44. /** @defgroup RTTI-Impl-SEngine RTTI types
  45. * Types containing RTTI for specific classes.
  46. */
  47. /** @endcond */
  48. /** @} */
  49. /** @} */
  50. namespace bs
  51. {
  52. class ScriptObjectBase;
  53. class ScriptResourceManager;
  54. class ScriptResourceBase;
  55. class ScriptFont;
  56. class ScriptSpriteTexture;
  57. class ScriptShaderInclude;
  58. class ScriptTexture;
  59. class ScriptPlainText;
  60. class ScriptScriptCode;
  61. class ScriptShader;
  62. class ScriptMaterial;
  63. class ScriptMesh;
  64. class ScriptPrefab;
  65. class ScriptStringTable;
  66. class ScriptGUIElementStyle;
  67. class ScriptGUIElementStateStyle;
  68. class ScriptGUILayout;
  69. class ScriptGUILabel;
  70. class ScriptGUIScrollArea;
  71. class ScriptGUIScrollAreaLayout;
  72. class ScriptGameObjectBase;
  73. class ScriptSceneObject;
  74. class ScriptComponentBase;
  75. class ScriptComponent;
  76. class ScriptManagedComponent;
  77. class ScriptManagedResource;
  78. class ScriptRenderTarget;
  79. class ScriptRenderTexture;
  80. class ManagedComponent;
  81. class ManagedSerializableFieldData;
  82. class ManagedSerializableFieldKey;
  83. class ManagedSerializableFieldDataEntry;
  84. class ManagedSerializableTypeInfo;
  85. class ManagedSerializableTypeInfoPrimitive;
  86. class ManagedSerializableTypeInfoObject;
  87. class ManagedSerializableTypeInfoArray;
  88. class ManagedSerializableTypeInfoList;
  89. class ManagedSerializableTypeInfoDictionary;
  90. class ManagedSerializableObject;
  91. class ManagedSerializableArray;
  92. class ManagedSerializableList;
  93. class ManagedSerializableDictionary;
  94. class ManagedSerializableAssemblyInfo;
  95. class ManagedSerializableObjectInfo;
  96. class ManagedSerializableMemberInfo;
  97. class ManagedSerializableObjectData;
  98. class ManagedSerializableDiff;
  99. class ManagedResource;
  100. class ManagedResourceMetaData;
  101. class ScriptSerializableProperty;
  102. class ScriptAssemblyManager;
  103. class ScriptHString;
  104. class ScriptContextMenu;
  105. class ScriptGUISkin;
  106. class ScriptResourceRef;
  107. class ScriptPhysicsMaterial;
  108. class ScriptPhysicsMesh;
  109. class ScriptRigidbody;
  110. class ScriptColliderBase;
  111. class ScriptAudioClip;
  112. struct ScriptMeta;
  113. typedef GameObjectHandle<ManagedComponent> HManagedComponent;
  114. typedef ResourceHandle<ManagedResource> HManagedResource;
  115. enum TypeID_BansheeScript
  116. {
  117. TID_ManagedComponent = 50000,
  118. TID_ScriptSerializableObject = 50001,
  119. TID_ScriptSerializableArray = 50002,
  120. TID_SerializableAssemblyInfo = 50004,
  121. TID_SerializableObjectInfo = 50005,
  122. TID_SerializableMemberInfo = 50006,
  123. TID_SerializableTypeInfo = 50007,
  124. TID_SerializableTypeInfoPrimitive = 50008,
  125. TID_SerializableTypeInfoObject = 50009,
  126. TID_SerializableTypeInfoArray = 50010,
  127. TID_SerializableFieldData = 50011,
  128. TID_SerializableFieldKey = 50012,
  129. TID_SerializableFieldDataEntry = 50013,
  130. TID_SerializableFieldDataBool = 50014,
  131. TID_SerializableFieldDataChar = 50015,
  132. TID_SerializableFieldDataI8 = 50016,
  133. TID_SerializableFieldDataU8 = 50017,
  134. TID_SerializableFieldDataI16 = 50018,
  135. TID_SerializableFieldDataU16 = 50019,
  136. TID_SerializableFieldDataI32 = 50020,
  137. TID_SerializableFieldDataU32 = 50021,
  138. TID_SerializableFieldDataI64 = 50022,
  139. TID_SerializableFieldDataU64 = 50023,
  140. TID_SerializableFieldDataFloat = 50024,
  141. TID_SerializableFieldDataDouble = 50025,
  142. TID_SerializableFieldDataString = 50026,
  143. TID_SerializableFieldDataResourceRef = 50027,
  144. TID_SerializableFieldDataGameObjectRef = 50028,
  145. TID_SerializableFieldDataObject = 50029,
  146. TID_SerializableFieldDataArray = 50030,
  147. TID_SerializableFieldDataList = 50031,
  148. TID_SerializableFieldDataDictionary = 50032,
  149. TID_SerializableTypeInfoList = 50033,
  150. TID_SerializableTypeInfoDictionary = 50034,
  151. TID_ScriptSerializableList = 50035,
  152. TID_ScriptSerializableDictionary = 50036,
  153. TID_ManagedResource = 50037,
  154. TID_ManagedResourceMetaData = 50038,
  155. TID_ScriptSerializableObjectData = 50039,
  156. TID_ScriptSerializableDiff = 50040,
  157. TID_ScriptModification = 50041,
  158. TID_ScriptModifiedObject = 50042,
  159. TID_ScriptModifiedArray = 50043,
  160. TID_ScriptModifiedDictionary = 50044,
  161. TID_ScriptModifiedEntry = 50045,
  162. TID_ScriptModifiedField = 50046,
  163. TID_ScriptModifiedArrayEntry = 50047,
  164. TID_ScriptModifiedDictionaryEntry = 50048,
  165. TID_ScriptSerializableDictionaryKeyValue = 50049,
  166. TID_SerializableTypeInfoRef = 50050,
  167. TID_SerializableFieldInfo = 50051,
  168. TID_SerializablePropertyInfo = 50052,
  169. TID_SerializableTypeInfoRRef = 50053,
  170. };
  171. /** Information about a builtin component wrapped as a script object. */
  172. struct BuiltinComponentInfo
  173. {
  174. const ScriptMeta* metaData;
  175. UINT32 typeId;
  176. MonoClass* monoClass;
  177. std::function<ScriptComponentBase*(const HComponent&)> createCallback;
  178. };
  179. /** Types of resources accessible from script code. */
  180. enum class ScriptResourceType // Note: Must be the same as C# enum ResourceType
  181. {
  182. Texture, SpriteTexture, Mesh, Font, Shader, ShaderInclude, Material, Prefab,
  183. PlainText, ScriptCode, StringTable, GUISkin, PhysicsMaterial, PhysicsMesh, AudioClip, AnimationClip,
  184. VectorField, Undefined
  185. };
  186. /** Information about a builtin resource wrapped as a script object. */
  187. struct BuiltinResourceInfo
  188. {
  189. const ScriptMeta* metaData;
  190. UINT32 typeId;
  191. MonoClass* monoClass;
  192. ScriptResourceType resType;
  193. std::function<ScriptResourceBase*(const HResource&, MonoObject*)> createCallback;
  194. };
  195. }