BsScriptGUIElementStyle.cpp 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. #include "BsScriptGUIElementStyle.h"
  2. #include "BsScriptMeta.h"
  3. #include "BsMonoField.h"
  4. #include "BsMonoClass.h"
  5. #include "BsMonoManager.h"
  6. #include "BsScriptFont.h"
  7. #include "CmException.h"
  8. #include "BsGUIElementStyle.h"
  9. #include "BsScriptGUIElementStateStyle.h"
  10. namespace BansheeEngine
  11. {
  12. ScriptGUIElementStyle::ScriptGUIElementStyle(const String& name)
  13. :mName(name), mElementStyle(cm_new<GUIElementStyle>()), mFont(nullptr), mOwnsStyle(true), mNormal(nullptr), mHover(nullptr),
  14. mActive(nullptr), mFocused(nullptr), mNormalOn(nullptr), mHoverOn(nullptr), mActiveOn(nullptr), mFocusedOn(nullptr)
  15. {
  16. }
  17. ScriptGUIElementStyle::ScriptGUIElementStyle(const String& name, GUIElementStyle* externalStyle)
  18. :mName(name), mElementStyle(externalStyle), mFont(nullptr), mOwnsStyle(false), mNormal(nullptr), mHover(nullptr),
  19. mActive(nullptr), mFocused(nullptr), mNormalOn(nullptr), mHoverOn(nullptr), mActiveOn(nullptr), mFocusedOn(nullptr)
  20. {
  21. }
  22. ScriptGUIElementStyle::~ScriptGUIElementStyle()
  23. {
  24. if(mOwnsStyle)
  25. cm_delete(mElementStyle);
  26. }
  27. void ScriptGUIElementStyle::initMetaData()
  28. {
  29. metaData = ScriptMeta(BansheeEngineAssemblyName, "BansheeEngine", "GUIElementStyle", &ScriptGUIElementStyle::initRuntimeData);
  30. MonoManager::registerScriptType(&metaData);
  31. }
  32. void ScriptGUIElementStyle::internal_createInstance(MonoObject* instance, MonoString* name)
  33. {
  34. char* nativeName = mono_string_to_utf8(name);
  35. String styleName(nativeName);
  36. free(nativeName);
  37. ScriptGUIElementStyle* nativeInstance = new (cm_alloc<ScriptGUIElementStyle>()) ScriptGUIElementStyle(styleName);
  38. nativeInstance->createInstance(instance);
  39. metaData.thisPtrField->setValue(instance, &nativeInstance);
  40. }
  41. void ScriptGUIElementStyle::internal_createInstanceExternal(MonoObject* instance, MonoString* name, GUIElementStyle* externalStyle)
  42. {
  43. char* nativeName = mono_string_to_utf8(name);
  44. String styleName(nativeName);
  45. free(nativeName);
  46. ScriptGUIElementStyle* nativeInstance = new (cm_alloc<ScriptGUIElementStyle>()) ScriptGUIElementStyle(styleName, externalStyle);
  47. nativeInstance->createInstance(instance);
  48. metaData.thisPtrField->setValue(instance, &nativeInstance);
  49. }
  50. void ScriptGUIElementStyle::internal_destroyInstance(ScriptGUIElementStyle* nativeInstance)
  51. {
  52. cm_delete(nativeInstance);
  53. }
  54. }