BsScriptStringTableManager.cpp 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  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;
  34. ScriptResourceManager::instance().getScriptResource(table, &scriptStringTable, true);
  35. return scriptStringTable->getManagedInstance();
  36. }
  37. void ScriptStringTableManager::internal_SetTable(UINT32 id, MonoObject* table)
  38. {
  39. HStringTable nativeTable;
  40. if (table != nullptr)
  41. nativeTable = ScriptStringTable::toNative(table)->getHandle();
  42. StringTableManager::instance().setTable(id, nativeTable);
  43. }
  44. void ScriptStringTableManager::internal_RemoveTable(UINT32 id)
  45. {
  46. StringTableManager::instance().removeTable(id);
  47. }
  48. }