BsScriptStringTableManager.cpp 2.2 KB

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