|
@@ -5,32 +5,32 @@
|
|
|
|
|
|
|
|
namespace BansheeEngine
|
|
namespace BansheeEngine
|
|
|
{
|
|
{
|
|
|
- class BS_SCR_BE_EXPORT ScriptGUIElementBase : public ScriptObjectBase
|
|
|
|
|
|
|
+ class BS_SCR_BE_EXPORT ScriptGUIElementBaseTBase : public ScriptObjectBase
|
|
|
{
|
|
{
|
|
|
public:
|
|
public:
|
|
|
- ScriptGUIElementBase(MonoObject* instance);
|
|
|
|
|
- virtual ~ScriptGUIElementBase() {}
|
|
|
|
|
|
|
+ ScriptGUIElementBaseTBase(MonoObject* instance);
|
|
|
|
|
+ virtual ~ScriptGUIElementBaseTBase() {}
|
|
|
|
|
|
|
|
- GUIElement* getGUIElement() const { return (GUIElement*)mElement; }
|
|
|
|
|
|
|
+ GUIElementBase* getGUIElement() const { return (GUIElementBase*)mElement; }
|
|
|
|
|
|
|
|
- virtual void destroy();
|
|
|
|
|
|
|
+ virtual void destroy() = 0;
|
|
|
|
|
+ virtual void setParent(GUILayout* layout) = 0;
|
|
|
|
|
|
|
|
protected:
|
|
protected:
|
|
|
- void initialize(GUIElement* element);
|
|
|
|
|
|
|
+ void initialize(GUIElementBase* element);
|
|
|
|
|
|
|
|
- private:
|
|
|
|
|
bool mIsDestroyed;
|
|
bool mIsDestroyed;
|
|
|
- GUIElement* mElement;
|
|
|
|
|
|
|
+ GUIElementBase* mElement;
|
|
|
};
|
|
};
|
|
|
|
|
|
|
|
template <class Type>
|
|
template <class Type>
|
|
|
- class TScriptGUIElement : public ScriptObject<Type, ScriptGUIElementBase>
|
|
|
|
|
|
|
+ class TScriptGUIElementBase : public ScriptObject<Type, ScriptGUIElementBaseTBase>
|
|
|
{
|
|
{
|
|
|
public:
|
|
public:
|
|
|
- virtual ~TScriptGUIElement() {}
|
|
|
|
|
|
|
+ virtual ~TScriptGUIElementBase() {}
|
|
|
|
|
|
|
|
protected:
|
|
protected:
|
|
|
- TScriptGUIElement(MonoObject* instance, GUIElement* element)
|
|
|
|
|
|
|
+ TScriptGUIElementBase(MonoObject* instance, GUIElementBase* element)
|
|
|
:ScriptObject(instance)
|
|
:ScriptObject(instance)
|
|
|
{
|
|
{
|
|
|
initialize(element);
|
|
initialize(element);
|
|
@@ -47,15 +47,49 @@ namespace BansheeEngine
|
|
|
}
|
|
}
|
|
|
};
|
|
};
|
|
|
|
|
|
|
|
|
|
+ class BS_SCR_BE_EXPORT ScriptGUIElementTBase : public ScriptGUIElementBaseTBase
|
|
|
|
|
+ {
|
|
|
|
|
+ public:
|
|
|
|
|
+ ScriptGUIElementTBase(MonoObject* instance);
|
|
|
|
|
+ virtual ~ScriptGUIElementTBase() {}
|
|
|
|
|
+
|
|
|
|
|
+ virtual void destroy();
|
|
|
|
|
+ virtual void setParent(GUILayout* layout);
|
|
|
|
|
+ };
|
|
|
|
|
+
|
|
|
|
|
+ template <class Type>
|
|
|
|
|
+ class TScriptGUIElement : public ScriptObject<Type, ScriptGUIElementTBase>
|
|
|
|
|
+ {
|
|
|
|
|
+ public:
|
|
|
|
|
+ virtual ~TScriptGUIElement() {}
|
|
|
|
|
+
|
|
|
|
|
+ protected:
|
|
|
|
|
+ TScriptGUIElement(MonoObject* instance, GUIElementBase* element)
|
|
|
|
|
+ :ScriptObject(instance)
|
|
|
|
|
+ {
|
|
|
|
|
+ initialize(element);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ void _onManagedInstanceDeleted()
|
|
|
|
|
+ {
|
|
|
|
|
+ // Elements with a GUIWidget parent are destroyed automatically when widget is destroyed, but those without one
|
|
|
|
|
+ // we need to destroy manually.
|
|
|
|
|
+ if (getGUIElement()->_getParentWidget() == nullptr)
|
|
|
|
|
+ destroy();
|
|
|
|
|
+
|
|
|
|
|
+ ScriptObject::_onManagedInstanceDeleted();
|
|
|
|
|
+ }
|
|
|
|
|
+ };
|
|
|
|
|
+
|
|
|
class BS_SCR_BE_EXPORT ScriptGUIElement : public ScriptObject<ScriptGUIElement>
|
|
class BS_SCR_BE_EXPORT ScriptGUIElement : public ScriptObject<ScriptGUIElement>
|
|
|
{
|
|
{
|
|
|
public:
|
|
public:
|
|
|
SCRIPT_OBJ(BansheeEngineAssemblyName, "BansheeEngine", "GUIElement")
|
|
SCRIPT_OBJ(BansheeEngineAssemblyName, "BansheeEngine", "GUIElement")
|
|
|
|
|
|
|
|
private:
|
|
private:
|
|
|
- static void internal_destroy(ScriptGUIElementBase* nativeInstance);
|
|
|
|
|
- static void internal_setVisible(ScriptGUIElementBase* nativeInstance, bool visible);
|
|
|
|
|
- static void internal_setParent(ScriptGUIElementBase* nativeInstance, MonoObject* parentLayout);
|
|
|
|
|
|
|
+ static void internal_destroy(ScriptGUIElementBaseTBase* nativeInstance);
|
|
|
|
|
+ static void internal_setVisible(ScriptGUIElementBaseTBase* nativeInstance, bool visible);
|
|
|
|
|
+ static void internal_setParent(ScriptGUIElementBaseTBase* nativeInstance, MonoObject* parentLayout);
|
|
|
|
|
|
|
|
ScriptGUIElement(MonoObject* instance);
|
|
ScriptGUIElement(MonoObject* instance);
|
|
|
};
|
|
};
|