BsScriptGUIArea.cpp 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111
  1. #include "BsScriptGUIArea.h"
  2. #include "BsScriptMeta.h"
  3. #include "BsMonoField.h"
  4. #include "BsMonoClass.h"
  5. #include "BsMonoManager.h"
  6. #include "BsScriptGUIArea.h"
  7. #include "BsGUIArea.h"
  8. #include "BsGUILayout.h"
  9. #include "BsScriptGUIBase.h"
  10. using namespace CamelotFramework;
  11. namespace BansheeEngine
  12. {
  13. ScriptGUIArea::ScriptGUIArea(GUIArea* area, ScriptGUIBase* parentGUI)
  14. :mArea(area), mParentGUI(parentGUI)
  15. {
  16. }
  17. void ScriptGUIArea::initMetaData()
  18. {
  19. metaData = ScriptMeta(BansheeEngineAssemblyName, "BansheeEngine", "GUIArea", &ScriptGUIArea::initRuntimeData);
  20. MonoManager::registerScriptType(&metaData);
  21. }
  22. void ScriptGUIArea::initRuntimeData()
  23. {
  24. metaData.scriptClass->addInternalCall("Internal_CreateInstance", &ScriptGUIArea::internal_createInstance);
  25. metaData.scriptClass->addInternalCall("Internal_CreateInstanceResizableX", &ScriptGUIArea::internal_createInstanceResizeableX);
  26. metaData.scriptClass->addInternalCall("Internal_CreateInstanceResizableY", &ScriptGUIArea::internal_createInstanceResizeableY);
  27. metaData.scriptClass->addInternalCall("Internal_CreateInstanceResizableXY", &ScriptGUIArea::internal_createInstanceResizeableXY);
  28. metaData.scriptClass->addInternalCall("Internal_DestroyInstance", &ScriptGUIArea::internal_destroyInstance);
  29. metaData.scriptClass->addInternalCall("Internal_Destroy", &ScriptGUIArea::internal_destroy);
  30. metaData.scriptClass->addInternalCall("Internal_Enable", &ScriptGUIArea::internal_enable);
  31. metaData.scriptClass->addInternalCall("Internal_Disable", &ScriptGUIArea::internal_disable);
  32. }
  33. GUIWidget& ScriptGUIArea::getParentWidget() const
  34. {
  35. return mParentGUI->getWidget();
  36. }
  37. void ScriptGUIArea::internal_createInstance(MonoObject* instance, MonoObject* parentGUI, CM::INT32 x, CM::INT32 y, CM::UINT32 width, CM::UINT32 height, CM::UINT16 depth)
  38. {
  39. ScriptGUIBase* scriptGUIBase = ScriptGUIBase::toNative(parentGUI);
  40. GUIArea* nativeArea = GUIArea::create(scriptGUIBase->getWidget(), x, y, width, height, depth);
  41. ScriptGUIArea* nativeInstance = new (cm_alloc<ScriptGUIArea>()) ScriptGUIArea(nativeArea, scriptGUIBase);
  42. nativeInstance->createInstance(instance);
  43. metaData.thisPtrField->setValue(instance, nativeInstance);
  44. }
  45. void ScriptGUIArea::internal_createInstanceResizeableX(MonoObject* instance, MonoObject* parentGUI, CM::UINT32 offsetLeft, CM::UINT32 offsetRight,
  46. CM::UINT32 offsetTop, CM::UINT32 height, CM::UINT16 depth)
  47. {
  48. ScriptGUIBase* scriptGUIBase = ScriptGUIBase::toNative(parentGUI);
  49. GUIArea* nativeArea = GUIArea::createStretchedX(scriptGUIBase->getWidget(), offsetLeft, offsetRight, offsetTop, height, depth);
  50. ScriptGUIArea* nativeInstance = new (cm_alloc<ScriptGUIArea>()) ScriptGUIArea(nativeArea, scriptGUIBase);
  51. nativeInstance->createInstance(instance);
  52. metaData.thisPtrField->setValue(instance, nativeInstance);
  53. }
  54. void ScriptGUIArea::internal_createInstanceResizeableY(MonoObject* instance, MonoObject* parentGUI, CM::UINT32 offsetTop,
  55. CM::UINT32 offsetBottom, CM::UINT32 offsetLeft, CM::UINT32 width, CM::UINT16 depth)
  56. {
  57. ScriptGUIBase* scriptGUIBase = ScriptGUIBase::toNative(parentGUI);
  58. GUIArea* nativeArea = GUIArea::createStretchedY(scriptGUIBase->getWidget(), offsetTop, offsetBottom, offsetLeft, width, depth);
  59. ScriptGUIArea* nativeInstance = new (cm_alloc<ScriptGUIArea>()) ScriptGUIArea(nativeArea, scriptGUIBase);
  60. nativeInstance->createInstance(instance);
  61. metaData.thisPtrField->setValue(instance, nativeInstance);
  62. }
  63. void ScriptGUIArea::internal_createInstanceResizeableXY(MonoObject* instance, MonoObject* parentGUI, CM::UINT32 offsetLeft,
  64. CM::UINT32 offsetRight, CM::UINT32 offsetTop, CM::UINT32 offsetBottom, CM::UINT16 depth)
  65. {
  66. ScriptGUIBase* scriptGUIBase = ScriptGUIBase::toNative(parentGUI);
  67. GUIArea* nativeArea = GUIArea::createStretchedXY(scriptGUIBase->getWidget(), offsetLeft, offsetRight, offsetTop, offsetBottom, depth);
  68. ScriptGUIArea* nativeInstance = new (cm_alloc<ScriptGUIArea>()) ScriptGUIArea(nativeArea, scriptGUIBase);
  69. nativeInstance->createInstance(instance);
  70. metaData.thisPtrField->setValue(instance, nativeInstance);
  71. }
  72. void ScriptGUIArea::internal_destroyInstance(ScriptGUIArea* nativeInstance)
  73. {
  74. cm_delete(nativeInstance);
  75. }
  76. void ScriptGUIArea::internal_destroy(ScriptGUIArea* nativeInstance)
  77. {
  78. GUIArea::destroy(nativeInstance->getInternalValue());
  79. }
  80. void ScriptGUIArea::internal_disable(ScriptGUIArea* nativeInstance)
  81. {
  82. nativeInstance->getInternalValue()->disable();
  83. }
  84. void ScriptGUIArea::internal_enable(ScriptGUIArea* nativeInstance)
  85. {
  86. nativeInstance->getInternalValue()->enable();
  87. }
  88. }