BsScriptGUIElement.h 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. #pragma once
  2. #include "BsScriptEnginePrerequisites.h"
  3. #include "BsScriptObject.h"
  4. namespace BansheeEngine
  5. {
  6. class BS_SCR_BE_EXPORT ScriptGUIElementBase
  7. {
  8. public:
  9. ScriptGUIElementBase(GUIElement* element);
  10. virtual ~ScriptGUIElementBase() {}
  11. GUIElement* getGUIElement() const { return (GUIElement*)mElement; }
  12. virtual void destroy();
  13. private:
  14. bool mIsDestroyed;
  15. GUIElement* mElement;
  16. };
  17. template <class Type>
  18. class TScriptGUIElement : public ScriptGUIElementBase, public ScriptObject<Type>
  19. {
  20. public:
  21. virtual ~TScriptGUIElement() {}
  22. protected:
  23. TScriptGUIElement(MonoObject* instance, GUIElement* element)
  24. :ScriptGUIElementBase(element), ScriptObject(instance)
  25. { }
  26. void _onManagedInstanceDeleted()
  27. {
  28. destroy();
  29. ScriptObject::_onManagedInstanceDeleted();
  30. }
  31. };
  32. class BS_SCR_BE_EXPORT ScriptGUIElement : public ScriptObject<ScriptGUIElement>
  33. {
  34. public:
  35. SCRIPT_OBJ(BansheeEngineAssemblyName, "BansheeEngine", "GUIElement")
  36. private:
  37. static void internal_destroy(ScriptGUIElementBase* nativeInstance);
  38. static void internal_setVisible(ScriptGUIElementBase* nativeInstance, bool visible);
  39. static void internal_setParent(ScriptGUIElementBase* nativeInstance, MonoObject* parentLayout);
  40. ScriptGUIElement(MonoObject* instance);
  41. };
  42. }