#include "BsScriptGUIElement.h" #include "BsScriptMeta.h" #include "BsMonoField.h" #include "BsMonoClass.h" #include "BsMonoManager.h" #include "BsMonoMethod.h" #include "BsMonoUtil.h" #include "BsGUIElement.h" #include "BsScriptGUILayout.h" #include "BsGUILayout.h" namespace BansheeEngine { ScriptGUIElementBaseTBase::ScriptGUIElementBaseTBase(MonoObject* instance) :ScriptObjectBase(instance), mIsDestroyed(false), mElement(nullptr) { } void ScriptGUIElementBaseTBase::initialize(GUIElementBase* element) { mElement = element; } ScriptGUIElementTBase::ScriptGUIElementTBase(MonoObject* instance) :ScriptGUIElementBaseTBase(instance) { } void ScriptGUIElementTBase::destroy() { if(!mIsDestroyed) { if (mElement->_getType() == GUIElementBase::Type::Element) { GUIElement::destroy((GUIElement*)mElement); mElement = nullptr; mIsDestroyed = true; } } } void ScriptGUIElementTBase::setParent(GUILayout* layout) { layout->addElement((GUIElement*)mElement); } ScriptGUIElement::ScriptGUIElement(MonoObject* instance) :ScriptObject(instance) { } void ScriptGUIElement::initRuntimeData() { metaData.scriptClass->addInternalCall("Internal_Destroy", &ScriptGUIElement::internal_destroy); metaData.scriptClass->addInternalCall("Internal_SetVisible", &ScriptGUIElement::internal_setVisible); metaData.scriptClass->addInternalCall("Internal_SetParent", &ScriptGUIElement::internal_setParent); } void ScriptGUIElement::internal_destroy(ScriptGUIElementBaseTBase* nativeInstance) { nativeInstance->destroy(); } void ScriptGUIElement::internal_setVisible(ScriptGUIElementBaseTBase* nativeInstance, bool visible) { if(visible) nativeInstance->getGUIElement()->enableRecursively(); else nativeInstance->getGUIElement()->disableRecursively(); } void ScriptGUIElement::internal_setParent(ScriptGUIElementBaseTBase* nativeInstance, MonoObject* parentLayout) { ScriptGUILayout* scriptLayout = ScriptGUILayout::toNative(parentLayout); GUILayout* nativeLayout = scriptLayout->getInternalValue(); nativeInstance->setParent(nativeLayout); } }