BsScriptResource.cpp 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111
  1. #include "BsScriptResource.h"
  2. #include "BsScriptResourceManager.h"
  3. #include "BsResource.h"
  4. #include "BsMonoUtil.h"
  5. namespace BansheeEngine
  6. {
  7. ScriptResourceBase::ScriptResourceBase(MonoObject* instance)
  8. :PersistentScriptObjectBase(instance), mRefreshInProgress(false)
  9. { }
  10. ScriptObjectBackup ScriptResourceBase::beginRefresh()
  11. {
  12. mRefreshInProgress = true;
  13. return PersistentScriptObjectBase::beginRefresh();
  14. }
  15. void ScriptResourceBase::endRefresh(const ScriptObjectBackup& backupData)
  16. {
  17. mRefreshInProgress = false;
  18. PersistentScriptObjectBase::endRefresh(backupData);
  19. }
  20. void ScriptResourceBase::destroy()
  21. {
  22. mManagedInstance = nullptr;
  23. if (!mRefreshInProgress)
  24. ScriptResourceManager::instance().destroyScriptResource(this);
  25. }
  26. void ScriptResource::initRuntimeData()
  27. {
  28. metaData.scriptClass->addInternalCall("Internal_GetName", &ScriptResource::internal_getName);
  29. metaData.scriptClass->addInternalCall("Internal_GetUUID", &ScriptResource::internal_getUUID);
  30. }
  31. ScriptResourceType ScriptResource::getTypeFromTypeId(UINT32 typeId)
  32. {
  33. switch (typeId)
  34. {
  35. case TID_Texture:
  36. return ScriptResourceType::Texture;
  37. case TID_SpriteTexture:
  38. return ScriptResourceType::SpriteTexture;
  39. case TID_Mesh:
  40. return ScriptResourceType::Mesh;
  41. case TID_Shader:
  42. return ScriptResourceType::Shader;
  43. case TID_Material:
  44. return ScriptResourceType::Material;
  45. case TID_Font:
  46. return ScriptResourceType::Font;
  47. case TID_Prefab:
  48. return ScriptResourceType::Prefab;
  49. case TID_StringTable:
  50. return ScriptResourceType::StringTable;
  51. case TID_PlainText:
  52. return ScriptResourceType::PlainText;
  53. case TID_ScriptCode:
  54. return ScriptResourceType::ScriptCode;
  55. case TID_GUISkin:
  56. return ScriptResourceType::GUISkin;
  57. }
  58. return ScriptResourceType::Undefined;
  59. }
  60. UINT32 ScriptResource::getTypeIdFromType(ScriptResourceType type)
  61. {
  62. switch (type)
  63. {
  64. case ScriptResourceType::Texture:
  65. return TID_Texture;
  66. case ScriptResourceType::SpriteTexture:
  67. return TID_SpriteTexture;
  68. case ScriptResourceType::Mesh:
  69. return TID_Mesh;
  70. case ScriptResourceType::Shader:
  71. return TID_Shader;
  72. case ScriptResourceType::Font:
  73. return TID_Font;
  74. case ScriptResourceType::Material:
  75. return TID_Material;
  76. case ScriptResourceType::Prefab:
  77. return TID_Prefab;
  78. case ScriptResourceType::StringTable:
  79. return TID_StringTable;
  80. case ScriptResourceType::PlainText:
  81. return TID_PlainText;
  82. case ScriptResourceType::ScriptCode:
  83. return TID_ScriptCode;
  84. case ScriptResourceType::GUISkin:
  85. return TID_GUISkin;
  86. }
  87. return 0;
  88. }
  89. MonoString* ScriptResource::internal_getName(ScriptResourceBase* nativeInstance)
  90. {
  91. return MonoUtil::wstringToMono(MonoManager::instance().getDomain(), nativeInstance->getGenericHandle()->getName());
  92. }
  93. MonoString* ScriptResource::internal_getUUID(ScriptResourceBase* nativeInstance)
  94. {
  95. return MonoUtil::stringToMono(MonoManager::instance().getDomain(), nativeInstance->getGenericHandle().getUUID());
  96. }
  97. }