GUIElement.cs 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  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 int GetNumChildren()
  17. {
  18. return children.Count;
  19. }
  20. public GUIElement GetChild(int index)
  21. {
  22. if (index < 0 || index >= children.Count)
  23. return null;
  24. return children[index];
  25. }
  26. public void Destroy()
  27. {
  28. for (int i = 0; i < children.Count; i++)
  29. children[i].Destroy();
  30. children.Clear();
  31. if (parent != null)
  32. parent.children.Remove(this);
  33. parent = null;
  34. Internal_Destroy(mCachedPtr);
  35. }
  36. public void Enable()
  37. {
  38. Internal_Enable(mCachedPtr);
  39. }
  40. public void Disable()
  41. {
  42. Internal_Disable(mCachedPtr);
  43. }
  44. [MethodImpl(MethodImplOptions.InternalCall)]
  45. private static extern void Internal_Destroy(IntPtr nativeInstance);
  46. [MethodImpl(MethodImplOptions.InternalCall)]
  47. private static extern void Internal_Enable(IntPtr nativeInstance);
  48. [MethodImpl(MethodImplOptions.InternalCall)]
  49. private static extern void Internal_Disable(IntPtr nativeInstance);
  50. }
  51. }