GUIToggle.cs 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  1. using System;
  2. using System.Runtime.CompilerServices;
  3. namespace BansheeEngine
  4. {
  5. public sealed class GUIToggle : GUIElement
  6. {
  7. public delegate void OnClickDelegate();
  8. public delegate void OnHoverDelegate();
  9. public delegate void OnOutDelegate();
  10. public delegate void OnToggleDelegate(bool toggled);
  11. public event OnClickDelegate OnClick;
  12. public event OnHoverDelegate OnHover;
  13. public event OnOutDelegate OnOut;
  14. public event OnToggleDelegate OnToggled;
  15. public GUIToggle(GUIContent content, GUIToggleGroup toggleGroup, string style, params GUIOption[] options)
  16. {
  17. Internal_CreateInstance(this, content, toggleGroup, style, options);
  18. }
  19. public GUIToggle(GUIContent content, string style, params GUIOption[] options)
  20. {
  21. Internal_CreateInstance(this, content, null, style, options);
  22. }
  23. public GUIToggle(GUIContent content, string style)
  24. {
  25. Internal_CreateInstance(this, content, null, style, new GUIOption[0]);
  26. }
  27. public GUIToggle(GUIContent content, params GUIOption[] options)
  28. {
  29. Internal_CreateInstance(this, content, null, "", options);
  30. }
  31. public GUIToggle(GUIContent content, GUIToggleGroup toggleGroup, string style)
  32. {
  33. Internal_CreateInstance(this, content, toggleGroup, style, new GUIOption[0]);
  34. }
  35. public GUIToggle(GUIContent content, GUIToggleGroup toggleGroup, params GUIOption[] options)
  36. {
  37. Internal_CreateInstance(this, content, toggleGroup, "", options);
  38. }
  39. public void SetContent(GUIContent content)
  40. {
  41. Internal_SetContent(mCachedPtr, content);
  42. }
  43. public void ToggleOn()
  44. {
  45. Internal_ToggleOn(mCachedPtr);
  46. }
  47. public void ToggleOff()
  48. {
  49. Internal_ToggleOff(mCachedPtr);
  50. }
  51. private void DoOnClick()
  52. {
  53. if (OnClick != null)
  54. OnClick();
  55. }
  56. private void DoOnHover()
  57. {
  58. if (OnHover != null)
  59. OnHover();
  60. }
  61. private void DoOnOut()
  62. {
  63. if (OnOut != null)
  64. OnOut();
  65. }
  66. private void DoOnToggled(bool toggled)
  67. {
  68. if (OnToggled != null)
  69. OnToggled(toggled);
  70. }
  71. [MethodImpl(MethodImplOptions.InternalCall)]
  72. private static extern void Internal_CreateInstance(GUIToggle instance, GUIContent content,
  73. GUIToggleGroup toggleGroup, string style, GUIOption[] options);
  74. [MethodImpl(MethodImplOptions.InternalCall)]
  75. private static extern void Internal_SetContent(IntPtr nativeInstance, GUIContent content);
  76. [MethodImpl(MethodImplOptions.InternalCall)]
  77. private static extern void Internal_ToggleOn(IntPtr nativeInstance);
  78. [MethodImpl(MethodImplOptions.InternalCall)]
  79. private static extern void Internal_ToggleOff(IntPtr nativeInstance);
  80. }
  81. }