BsScriptStringTableManager.cpp 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  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 "Wrappers/BsScriptStringTable.h"
  11. namespace bs
  12. {
  13. ScriptStringTableManager::ScriptStringTableManager(MonoObject* instance)
  14. :ScriptObject(instance)
  15. { }
  16. void ScriptStringTableManager::initRuntimeData()
  17. {
  18. metaData.scriptClass->addInternalCall("Internal_GetActiveLanguage", (void*)&ScriptStringTableManager::internal_GetActiveLanguage);
  19. metaData.scriptClass->addInternalCall("Internal_SetActiveLanguage", (void*)&ScriptStringTableManager::internal_SetActiveLanguage);
  20. metaData.scriptClass->addInternalCall("Internal_GetTable", (void*)&ScriptStringTableManager::internal_GetTable);
  21. metaData.scriptClass->addInternalCall("Internal_SetTable", (void*)&ScriptStringTableManager::internal_SetTable);
  22. metaData.scriptClass->addInternalCall("Internal_RemoveTable", (void*)&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. ScriptResourceBase* scriptStringTable = ScriptResourceManager::instance().getScriptResource(table, true);
  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)->getHandle();
  43. StringTableManager::instance().setTable(id, nativeTable);
  44. }
  45. void ScriptStringTableManager::internal_RemoveTable(UINT32 id)
  46. {
  47. StringTableManager::instance().removeTable(id);
  48. }
  49. }