BsScriptPlainText.cpp 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. #include "BsScriptPlainText.h"
  2. #include "BsScriptResourceManager.h"
  3. #include "BsScriptMeta.h"
  4. #include "BsMonoField.h"
  5. #include "BsMonoClass.h"
  6. #include "BsMonoManager.h"
  7. #include "BsMonoUtil.h"
  8. #include "BsPlainText.h"
  9. using namespace std::placeholders;
  10. namespace BansheeEngine
  11. {
  12. ScriptPlainText::ScriptPlainText(MonoObject* instance, const HPlainText& plainText)
  13. :ScriptObject(instance), mPlainText(plainText)
  14. {
  15. }
  16. void ScriptPlainText::initRuntimeData()
  17. {
  18. metaData.scriptClass->addInternalCall("Internal_CreateInstance", &ScriptPlainText::internal_createInstance);
  19. metaData.scriptClass->addInternalCall("Internal_GetText", &ScriptPlainText::internal_getText);
  20. metaData.scriptClass->addInternalCall("Internal_SetText", &ScriptPlainText::internal_setText);
  21. }
  22. void ScriptPlainText::internal_createInstance(MonoObject* instance, MonoString* text)
  23. {
  24. WString strText = MonoUtil::monoToWString(text);
  25. HPlainText plainText = PlainText::create(strText);
  26. ScriptPlainText* scriptInstance;
  27. ScriptResourceManager::instance().createScriptResource(instance, plainText, &scriptInstance);
  28. }
  29. MonoString* ScriptPlainText::internal_getText(ScriptPlainText* thisPtr)
  30. {
  31. HPlainText plainText = thisPtr->mPlainText;
  32. return MonoUtil::wstringToMono(MonoManager::instance().getDomain(), plainText->getString());
  33. }
  34. void ScriptPlainText::internal_setText(ScriptPlainText* thisPtr, MonoString* text)
  35. {
  36. HPlainText plainText = thisPtr->mPlainText;
  37. plainText->setString(MonoUtil::monoToWString(text));
  38. }
  39. void ScriptPlainText::_onManagedInstanceDeleted()
  40. {
  41. mManagedInstance = nullptr;
  42. if (!mRefreshInProgress)
  43. ScriptResourceManager::instance().destroyScriptResource(this);
  44. }
  45. void ScriptPlainText::setNativeHandle(const HResource& resource)
  46. {
  47. mPlainText = static_resource_cast<PlainText>(resource);
  48. }
  49. }