BsScriptProjectSettings.cpp 5.9 KB

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