BsScriptGUIElementStateStyle.cpp 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. #include "BsScriptGUIElementStateStyle.h"
  2. #include "BsScriptMeta.h"
  3. #include "BsMonoField.h"
  4. #include "BsMonoClass.h"
  5. #include "BsMonoManager.h"
  6. #include "BsScriptSpriteTexture.h"
  7. #include "BsScriptResourceManager.h"
  8. #include "BsGUIElementStyle.h"
  9. namespace BansheeEngine
  10. {
  11. MonoField* ScriptGUIElementStateStyle::sTextureField = nullptr;
  12. MonoField* ScriptGUIElementStateStyle::sTextColorField = nullptr;
  13. ScriptGUIElementStateStyle::ScriptGUIElementStateStyle(MonoObject* instance)
  14. :ScriptObject(instance)
  15. {
  16. }
  17. void ScriptGUIElementStateStyle::initRuntimeData()
  18. {
  19. sTextureField = metaData.scriptClass->getField("Texture");
  20. sTextColorField = metaData.scriptClass->getField("TextColor");
  21. }
  22. MonoObject* ScriptGUIElementStateStyle::toManaged(const GUIElementStyle::GUIElementStateStyle& state)
  23. {
  24. ScriptSpriteTexture* scriptTexture = nullptr;
  25. if (state.texture != nullptr)
  26. ScriptResourceManager::instance().getScriptResource(state.texture, &scriptTexture, true);
  27. MonoObject* instance = metaData.scriptClass->createInstance();
  28. if (scriptTexture != nullptr)
  29. sTextureField->setValue(instance, scriptTexture->getManagedInstance());
  30. else
  31. sTextureField->setValue(instance, nullptr);
  32. sTextColorField->setValue(instance, (void*)&state.textColor);
  33. return instance;
  34. }
  35. GUIElementStyle::GUIElementStateStyle ScriptGUIElementStateStyle::toNative(MonoObject* instance)
  36. {
  37. GUIElementStyle::GUIElementStateStyle output;
  38. if (instance == nullptr)
  39. return output;
  40. MonoObject* monoTexture = nullptr;
  41. sTextureField->getValue(instance, &monoTexture);
  42. if (monoTexture != nullptr)
  43. {
  44. ScriptSpriteTexture* scriptTexture = ScriptSpriteTexture::toNative(monoTexture);
  45. output.texture = scriptTexture->getHandle();
  46. }
  47. sTextColorField->getValue(instance, &output.textColor);
  48. return output;
  49. }
  50. }