2
0

BsScriptGUIElementStyle.cpp 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  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. using namespace CamelotFramework;
  11. namespace BansheeEngine
  12. {
  13. ScriptGUIElementStyle::ScriptGUIElementStyle(const String& name)
  14. :mName(name), mElementStyle(cm_new<GUIElementStyle>()), mFont(nullptr), mOwnsStyle(true), mNormal(nullptr), mHover(nullptr),
  15. mActive(nullptr), mFocused(nullptr), mNormalOn(nullptr), mHoverOn(nullptr), mActiveOn(nullptr), mFocusedOn(nullptr)
  16. {
  17. }
  18. ScriptGUIElementStyle::ScriptGUIElementStyle(const String& name, GUIElementStyle* externalStyle)
  19. :mName(name), mElementStyle(externalStyle), mFont(nullptr), mOwnsStyle(false), mNormal(nullptr), mHover(nullptr),
  20. mActive(nullptr), mFocused(nullptr), mNormalOn(nullptr), mHoverOn(nullptr), mActiveOn(nullptr), mFocusedOn(nullptr)
  21. {
  22. }
  23. ScriptGUIElementStyle::~ScriptGUIElementStyle()
  24. {
  25. if(mOwnsStyle)
  26. cm_delete(mElementStyle);
  27. }
  28. void ScriptGUIElementStyle::initMetaData()
  29. {
  30. metaData = ScriptMeta("MBansheeEngine", "BansheeEngine", "GUIElementStyle", &ScriptGUIElementStyle::initRuntimeData);
  31. MonoManager::registerScriptType(&metaData);
  32. }
  33. void ScriptGUIElementStyle::internal_createInstance(MonoObject* instance, MonoString* name)
  34. {
  35. char* nativeName = mono_string_to_utf8(name);
  36. String styleName(nativeName);
  37. free(nativeName);
  38. ScriptGUIElementStyle* nativeInstance = new (cm_alloc<ScriptGUIElementStyle>()) ScriptGUIElementStyle(styleName);
  39. nativeInstance->createInstance(instance);
  40. metaData.thisPtrField->setValue(instance, nativeInstance);
  41. }
  42. void ScriptGUIElementStyle::internal_createInstanceExternal(MonoObject* instance, MonoString* name, GUIElementStyle* externalStyle)
  43. {
  44. char* nativeName = mono_string_to_utf8(name);
  45. String styleName(nativeName);
  46. free(nativeName);
  47. ScriptGUIElementStyle* nativeInstance = new (cm_alloc<ScriptGUIElementStyle>()) ScriptGUIElementStyle(styleName, externalStyle);
  48. nativeInstance->createInstance(instance);
  49. metaData.thisPtrField->setValue(instance, nativeInstance);
  50. }
  51. void ScriptGUIElementStyle::internal_destroyInstance(ScriptGUIElementStyle* nativeInstance)
  52. {
  53. nativeInstance->destroyInstance();
  54. cm_delete(nativeInstance);
  55. }
  56. }