BsScriptResource.cpp 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  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. }
  30. ScriptResourceType ScriptResource::getTypeFromTypeId(UINT32 typeId)
  31. {
  32. switch (typeId)
  33. {
  34. case TID_Texture:
  35. return ScriptResourceType::Texture;
  36. case TID_SpriteTexture:
  37. return ScriptResourceType::SpriteTexture;
  38. case TID_Mesh:
  39. return ScriptResourceType::Mesh;
  40. case TID_Shader:
  41. return ScriptResourceType::Shader;
  42. case TID_Material:
  43. return ScriptResourceType::Material;
  44. case TID_Font:
  45. return ScriptResourceType::Font;
  46. case TID_Prefab:
  47. return ScriptResourceType::Prefab;
  48. case TID_StringTable:
  49. return ScriptResourceType::StringTable;
  50. case TID_PlainText:
  51. return ScriptResourceType::PlainText;
  52. case TID_ScriptCode:
  53. return ScriptResourceType::ScriptCode;
  54. case TID_GUISkin:
  55. return ScriptResourceType::GUISkin;
  56. }
  57. return ScriptResourceType::Undefined;
  58. }
  59. UINT32 ScriptResource::getTypeIdFromType(ScriptResourceType type)
  60. {
  61. switch (type)
  62. {
  63. case ScriptResourceType::Texture:
  64. return TID_Texture;
  65. case ScriptResourceType::SpriteTexture:
  66. return TID_SpriteTexture;
  67. case ScriptResourceType::Mesh:
  68. return TID_Mesh;
  69. case ScriptResourceType::Shader:
  70. return TID_Shader;
  71. case ScriptResourceType::Font:
  72. return TID_Font;
  73. case ScriptResourceType::Material:
  74. return TID_Material;
  75. case ScriptResourceType::Prefab:
  76. return TID_Prefab;
  77. case ScriptResourceType::StringTable:
  78. return TID_StringTable;
  79. case ScriptResourceType::PlainText:
  80. return TID_PlainText;
  81. case ScriptResourceType::ScriptCode:
  82. return TID_ScriptCode;
  83. case ScriptResourceType::GUISkin:
  84. return TID_GUISkin;
  85. }
  86. return 0;
  87. }
  88. MonoString* ScriptResource::internal_getName(ScriptResourceBase* nativeInstance)
  89. {
  90. return MonoUtil::wstringToMono(MonoManager::instance().getDomain(), nativeInstance->getGenericHandle()->getName());
  91. }
  92. }