BsScriptStringTableManager.cpp 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. #include "BsScriptStringTableManager.h"
  2. #include "BsScriptMeta.h"
  3. #include "BsMonoField.h"
  4. #include "BsMonoClass.h"
  5. #include "BsMonoManager.h"
  6. #include "BsMonoUtil.h"
  7. #include "BsScriptResourceManager.h"
  8. #include "BsScriptStringTable.h"
  9. namespace BansheeEngine
  10. {
  11. ScriptStringTableManager::ScriptStringTableManager(MonoObject* instance)
  12. :ScriptObject(instance)
  13. { }
  14. void ScriptStringTableManager::initRuntimeData()
  15. {
  16. metaData.scriptClass->addInternalCall("Internal_GetActiveLanguage", &ScriptStringTableManager::internal_GetActiveLanguage);
  17. metaData.scriptClass->addInternalCall("Internal_SetActiveLanguage", &ScriptStringTableManager::internal_SetActiveLanguage);
  18. metaData.scriptClass->addInternalCall("Internal_GetTable", &ScriptStringTableManager::internal_GetTable);
  19. metaData.scriptClass->addInternalCall("Internal_SetTable", &ScriptStringTableManager::internal_SetTable);
  20. metaData.scriptClass->addInternalCall("Internal_RemoveTable", &ScriptStringTableManager::internal_RemoveTable);
  21. }
  22. void ScriptStringTableManager::internal_GetActiveLanguage(Language* value)
  23. {
  24. *value = StringTableManager::instance().getActiveLanguage();
  25. }
  26. void ScriptStringTableManager::internal_SetActiveLanguage(Language value)
  27. {
  28. StringTableManager::instance().setActiveLanguage(value);
  29. }
  30. MonoObject* ScriptStringTableManager::internal_GetTable(UINT32 id)
  31. {
  32. HStringTable table = StringTableManager::instance().getTable(id);
  33. ScriptStringTable* scriptStringTable = ScriptResourceManager::instance().getScriptStringTable(table);
  34. if (scriptStringTable == nullptr)
  35. scriptStringTable = ScriptResourceManager::instance().createScriptStringTable(table);
  36. return scriptStringTable->getManagedInstance();
  37. }
  38. void ScriptStringTableManager::internal_SetTable(UINT32 id, MonoObject* table)
  39. {
  40. HStringTable nativeTable;
  41. if (table != nullptr)
  42. nativeTable = ScriptStringTable::toNative(table)->getStringTableHandle();
  43. StringTableManager::instance().setTable(id, nativeTable);
  44. }
  45. void ScriptStringTableManager::internal_RemoveTable(UINT32 id)
  46. {
  47. StringTableManager::instance().removeTable(id);
  48. }
  49. }