GUIElement.cs 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Runtime.CompilerServices;
  4. namespace BansheeEngine
  5. {
  6. public class GUIElement : ScriptObject
  7. {
  8. protected GUIElement parent;
  9. protected List<GUIElement> children = new List<GUIElement>();
  10. internal GUIElement(GUIElement parent)
  11. {
  12. this.parent = parent;
  13. if (parent != null)
  14. parent.children.Add(this);
  15. }
  16. public void Destroy()
  17. {
  18. for (int i = 0; i < children.Count; i++)
  19. children[i].Destroy();
  20. children.Clear();
  21. if (parent != null)
  22. parent.children.Remove(this);
  23. parent = null;
  24. Internal_Destroy(mCachedPtr);
  25. }
  26. public void Enable()
  27. {
  28. Internal_Enable(mCachedPtr);
  29. }
  30. public void Disable()
  31. {
  32. Internal_Disable(mCachedPtr);
  33. }
  34. [MethodImpl(MethodImplOptions.InternalCall)]
  35. private static extern void Internal_Destroy(IntPtr nativeInstance);
  36. [MethodImpl(MethodImplOptions.InternalCall)]
  37. private static extern void Internal_Enable(IntPtr nativeInstance);
  38. [MethodImpl(MethodImplOptions.InternalCall)]
  39. private static extern void Internal_Disable(IntPtr nativeInstance);
  40. }
  41. }