BsScriptProjectSettings.cpp 7.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179
  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. #include "Serialization/BsManagedSerializableObject.h"
  11. #include "Reflection/BsRTTIType.h"
  12. namespace bs
  13. {
  14. ScriptProjectSettings::ScriptProjectSettings(MonoObject* instance)
  15. :ScriptObject(instance)
  16. { }
  17. void ScriptProjectSettings::initRuntimeData()
  18. {
  19. metaData.scriptClass->addInternalCall("Internal_GetLastOpenScene", (void*)&ScriptProjectSettings::internal_GetLastOpenScene);
  20. metaData.scriptClass->addInternalCall("Internal_SetLastOpenScene", (void*)&ScriptProjectSettings::internal_SetLastOpenScene);
  21. metaData.scriptClass->addInternalCall("Internal_SetFloat", (void*)&ScriptProjectSettings::internal_SetFloat);
  22. metaData.scriptClass->addInternalCall("Internal_SetInt", (void*)&ScriptProjectSettings::internal_SetInt);
  23. metaData.scriptClass->addInternalCall("Internal_SetBool", (void*)&ScriptProjectSettings::internal_SetBool);
  24. metaData.scriptClass->addInternalCall("Internal_SetString", (void*)&ScriptProjectSettings::internal_SetString);
  25. metaData.scriptClass->addInternalCall("Internal_SetObject", (void*)&ScriptProjectSettings::internal_SetObject);
  26. metaData.scriptClass->addInternalCall("Internal_GetFloat", (void*)&ScriptProjectSettings::internal_GetFloat);
  27. metaData.scriptClass->addInternalCall("Internal_GetInt", (void*)&ScriptProjectSettings::internal_GetInt);
  28. metaData.scriptClass->addInternalCall("Internal_GetBool", (void*)&ScriptProjectSettings::internal_GetBool);
  29. metaData.scriptClass->addInternalCall("Internal_GetString", (void*)&ScriptProjectSettings::internal_GetString);
  30. metaData.scriptClass->addInternalCall("Internal_GetObject", (void*)&ScriptProjectSettings::internal_GetObject);
  31. metaData.scriptClass->addInternalCall("Internal_HasKey", (void*)&ScriptProjectSettings::internal_HasKey);
  32. metaData.scriptClass->addInternalCall("Internal_DeleteKey", (void*)&ScriptProjectSettings::internal_DeleteKey);
  33. metaData.scriptClass->addInternalCall("Internal_DeleteAllKeys", (void*)&ScriptProjectSettings::internal_DeleteAllKeys);
  34. metaData.scriptClass->addInternalCall("Internal_GetHash", (void*)&ScriptProjectSettings::internal_GetHash);
  35. metaData.scriptClass->addInternalCall("Internal_Save", (void*)&ScriptProjectSettings::internal_Save);
  36. }
  37. MonoString* ScriptProjectSettings::internal_GetLastOpenScene()
  38. {
  39. SPtr<ProjectSettings> settings = gEditorApplication().getProjectSettings();
  40. return MonoUtil::stringToMono(settings->getLastOpenScene());
  41. }
  42. void ScriptProjectSettings::internal_SetLastOpenScene(MonoString* value)
  43. {
  44. SPtr<ProjectSettings> settings = gEditorApplication().getProjectSettings();
  45. settings->setLastOpenScene(MonoUtil::monoToString(value));
  46. }
  47. void ScriptProjectSettings::internal_SetFloat(MonoString* name, float value)
  48. {
  49. String nativeName = MonoUtil::monoToString(name);
  50. SPtr<ProjectSettings> settings = gEditorApplication().getProjectSettings();
  51. settings->setFloat(nativeName, value);
  52. }
  53. void ScriptProjectSettings::internal_SetInt(MonoString* name, int value)
  54. {
  55. String nativeName = MonoUtil::monoToString(name);
  56. SPtr<ProjectSettings> settings = gEditorApplication().getProjectSettings();
  57. settings->setInt(nativeName, value);
  58. }
  59. void ScriptProjectSettings::internal_SetBool(MonoString* name, bool value)
  60. {
  61. String nativeName = MonoUtil::monoToString(name);
  62. SPtr<ProjectSettings> settings = gEditorApplication().getProjectSettings();
  63. settings->setBool(nativeName, value);
  64. }
  65. void ScriptProjectSettings::internal_SetString(MonoString* name, MonoString* value)
  66. {
  67. String nativeName = MonoUtil::monoToString(name);
  68. String nativeValue = MonoUtil::monoToString(value);
  69. SPtr<ProjectSettings> settings = gEditorApplication().getProjectSettings();
  70. settings->setString(nativeName, nativeValue);
  71. }
  72. void ScriptProjectSettings::internal_SetObject(MonoString* name, MonoObject* value)
  73. {
  74. String nativeName = MonoUtil::monoToString(name);
  75. SPtr<ManagedSerializableObject> nativeValue = ManagedSerializableObject::createFromExisting(value);
  76. if(!nativeValue)
  77. return;
  78. nativeValue->serialize();
  79. SPtr<ProjectSettings> settings = gEditorApplication().getProjectSettings();
  80. settings->setObject(nativeName, nativeValue);
  81. }
  82. float ScriptProjectSettings::internal_GetFloat(MonoString* name, float defaultValue)
  83. {
  84. String nativeName = MonoUtil::monoToString(name);
  85. SPtr<ProjectSettings> settings = gEditorApplication().getProjectSettings();
  86. return settings->getFloat(nativeName, defaultValue);
  87. }
  88. int ScriptProjectSettings::internal_GetInt(MonoString* name, int defaultValue)
  89. {
  90. String nativeName = MonoUtil::monoToString(name);
  91. SPtr<ProjectSettings> settings = gEditorApplication().getProjectSettings();
  92. return settings->getInt(nativeName, defaultValue);
  93. }
  94. bool ScriptProjectSettings::internal_GetBool(MonoString* name, bool defaultValue)
  95. {
  96. String nativeName = MonoUtil::monoToString(name);
  97. SPtr<ProjectSettings> settings = gEditorApplication().getProjectSettings();
  98. return settings->getBool(nativeName, defaultValue);
  99. }
  100. MonoString* ScriptProjectSettings::internal_GetString(MonoString* name, MonoString* defaultValue)
  101. {
  102. String nativeName = MonoUtil::monoToString(name);
  103. String nativeDefaultValue = MonoUtil::monoToString(defaultValue);
  104. SPtr<ProjectSettings> settings = gEditorApplication().getProjectSettings();
  105. String nativeValue = settings->getString(nativeName, nativeDefaultValue);
  106. return MonoUtil::stringToMono(nativeValue);
  107. }
  108. MonoObject* ScriptProjectSettings::internal_GetObject(MonoString* name)
  109. {
  110. String nativeName = MonoUtil::monoToString(name);
  111. SPtr<ProjectSettings> settings = gEditorApplication().getProjectSettings();
  112. SPtr<ManagedSerializableObject> value = rtti_cast<ManagedSerializableObject>(settings->getObject(nativeName));
  113. if(!value)
  114. return nullptr;
  115. return value->deserialize();
  116. }
  117. bool ScriptProjectSettings::internal_HasKey(MonoString* name)
  118. {
  119. String nativeName = MonoUtil::monoToString(name);
  120. SPtr<ProjectSettings> settings = gEditorApplication().getProjectSettings();
  121. return settings->hasKey(nativeName);
  122. }
  123. void ScriptProjectSettings::internal_DeleteKey(MonoString* name)
  124. {
  125. String nativeName = MonoUtil::monoToString(name);
  126. SPtr<ProjectSettings> settings = gEditorApplication().getProjectSettings();
  127. settings->deleteKey(nativeName);
  128. }
  129. void ScriptProjectSettings::internal_DeleteAllKeys()
  130. {
  131. SPtr<ProjectSettings> settings = gEditorApplication().getProjectSettings();
  132. settings->deleteAllKeys();
  133. }
  134. UINT32 ScriptProjectSettings::internal_GetHash()
  135. {
  136. SPtr<ProjectSettings> settings = gEditorApplication().getProjectSettings();
  137. return settings->getHash();
  138. }
  139. void ScriptProjectSettings::internal_Save()
  140. {
  141. gEditorApplication().saveProjectSettings();
  142. }
  143. }