BsScriptProjectSettings.cpp 5.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146
  1. #include "BsScriptProjectSettings.h"
  2. #include "BsMonoManager.h"
  3. #include "BsMonoClass.h"
  4. #include "BsMonoMethod.h"
  5. #include "BsMonoUtil.h"
  6. #include "BsEditorApplication.h"
  7. #include "BsProjectSettings.h"
  8. namespace BansheeEngine
  9. {
  10. ScriptProjectSettings::ScriptProjectSettings(MonoObject* instance)
  11. :ScriptObject(instance)
  12. { }
  13. void ScriptProjectSettings::initRuntimeData()
  14. {
  15. metaData.scriptClass->addInternalCall("Internal_GetLastOpenScene", &ScriptProjectSettings::internal_GetLastOpenScene);
  16. metaData.scriptClass->addInternalCall("Internal_SetLastOpenScene", &ScriptProjectSettings::internal_SetLastOpenScene);
  17. metaData.scriptClass->addInternalCall("Internal_SetFloat", &ScriptProjectSettings::internal_SetFloat);
  18. metaData.scriptClass->addInternalCall("Internal_SetInt", &ScriptProjectSettings::internal_SetInt);
  19. metaData.scriptClass->addInternalCall("Internal_SetBool", &ScriptProjectSettings::internal_SetBool);
  20. metaData.scriptClass->addInternalCall("Internal_SetString", &ScriptProjectSettings::internal_SetString);
  21. metaData.scriptClass->addInternalCall("Internal_GetFloat", &ScriptProjectSettings::internal_GetFloat);
  22. metaData.scriptClass->addInternalCall("Internal_GetInt", &ScriptProjectSettings::internal_GetInt);
  23. metaData.scriptClass->addInternalCall("Internal_GetBool", &ScriptProjectSettings::internal_GetBool);
  24. metaData.scriptClass->addInternalCall("Internal_GetString", &ScriptProjectSettings::internal_GetString);
  25. metaData.scriptClass->addInternalCall("Internal_HasKey", &ScriptProjectSettings::internal_HasKey);
  26. metaData.scriptClass->addInternalCall("Internal_DeleteKey", &ScriptProjectSettings::internal_DeleteKey);
  27. metaData.scriptClass->addInternalCall("Internal_DeleteAllKeys", &ScriptProjectSettings::internal_DeleteAllKeys);
  28. metaData.scriptClass->addInternalCall("Internal_GetHash", &ScriptProjectSettings::internal_GetHash);
  29. metaData.scriptClass->addInternalCall("Internal_Save", &ScriptProjectSettings::internal_Save);
  30. }
  31. MonoString* ScriptProjectSettings::internal_GetLastOpenScene()
  32. {
  33. ProjectSettingsPtr settings = gEditorApplication().getProjectSettings();
  34. return MonoUtil::stringToMono(MonoManager::instance().getDomain(), settings->getLastOpenScene());
  35. }
  36. void ScriptProjectSettings::internal_SetLastOpenScene(MonoString* value)
  37. {
  38. ProjectSettingsPtr settings = gEditorApplication().getProjectSettings();
  39. settings->setLastOpenScene(MonoUtil::monoToString(value));
  40. }
  41. void ScriptProjectSettings::internal_SetFloat(MonoString* name, float value)
  42. {
  43. String nativeName = MonoUtil::monoToString(name);
  44. ProjectSettingsPtr settings = gEditorApplication().getProjectSettings();
  45. settings->setFloat(nativeName, value);
  46. }
  47. void ScriptProjectSettings::internal_SetInt(MonoString* name, int value)
  48. {
  49. String nativeName = MonoUtil::monoToString(name);
  50. ProjectSettingsPtr settings = gEditorApplication().getProjectSettings();
  51. settings->setInt(nativeName, value);
  52. }
  53. void ScriptProjectSettings::internal_SetBool(MonoString* name, bool value)
  54. {
  55. String nativeName = MonoUtil::monoToString(name);
  56. ProjectSettingsPtr settings = gEditorApplication().getProjectSettings();
  57. settings->setBool(nativeName, value);
  58. }
  59. void ScriptProjectSettings::internal_SetString(MonoString* name, MonoString* value)
  60. {
  61. String nativeName = MonoUtil::monoToString(name);
  62. WString nativeValue = MonoUtil::monoToWString(value);
  63. ProjectSettingsPtr settings = gEditorApplication().getProjectSettings();
  64. settings->setString(nativeName, nativeValue);
  65. }
  66. float ScriptProjectSettings::internal_GetFloat(MonoString* name, float defaultValue)
  67. {
  68. String nativeName = MonoUtil::monoToString(name);
  69. ProjectSettingsPtr settings = gEditorApplication().getProjectSettings();
  70. return settings->getFloat(nativeName, defaultValue);
  71. }
  72. int ScriptProjectSettings::internal_GetInt(MonoString* name, int defaultValue)
  73. {
  74. String nativeName = MonoUtil::monoToString(name);
  75. ProjectSettingsPtr settings = gEditorApplication().getProjectSettings();
  76. return settings->getInt(nativeName, defaultValue);
  77. }
  78. bool ScriptProjectSettings::internal_GetBool(MonoString* name, bool defaultValue)
  79. {
  80. String nativeName = MonoUtil::monoToString(name);
  81. ProjectSettingsPtr settings = gEditorApplication().getProjectSettings();
  82. return settings->getBool(nativeName, defaultValue);
  83. }
  84. MonoString* ScriptProjectSettings::internal_GetString(MonoString* name, MonoString* defaultValue)
  85. {
  86. String nativeName = MonoUtil::monoToString(name);
  87. WString nativeDefaultValue = MonoUtil::monoToWString(defaultValue);
  88. ProjectSettingsPtr settings = gEditorApplication().getProjectSettings();
  89. WString nativeValue = settings->getString(nativeName, nativeDefaultValue);
  90. return MonoUtil::wstringToMono(MonoManager::instance().getDomain(), nativeValue);
  91. }
  92. bool ScriptProjectSettings::internal_HasKey(MonoString* name)
  93. {
  94. String nativeName = MonoUtil::monoToString(name);
  95. ProjectSettingsPtr settings = gEditorApplication().getProjectSettings();
  96. return settings->hasKey(nativeName);
  97. }
  98. void ScriptProjectSettings::internal_DeleteKey(MonoString* name)
  99. {
  100. String nativeName = MonoUtil::monoToString(name);
  101. ProjectSettingsPtr settings = gEditorApplication().getProjectSettings();
  102. settings->deleteKey(nativeName);
  103. }
  104. void ScriptProjectSettings::internal_DeleteAllKeys()
  105. {
  106. ProjectSettingsPtr settings = gEditorApplication().getProjectSettings();
  107. settings->deleteAllKeys();
  108. }
  109. UINT32 ScriptProjectSettings::internal_GetHash()
  110. {
  111. ProjectSettingsPtr settings = gEditorApplication().getProjectSettings();
  112. return settings->getHash();
  113. }
  114. void ScriptProjectSettings::internal_Save()
  115. {
  116. gEditorApplication().saveProjectSettings();
  117. }
  118. }