GUIToggle.cs 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  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. internal GUIToggle(GUILayout parentLayout, GUIContent content, GUIToggleGroup toggleGroup, GUIElementStyle style, params GUIOption[] options)
  16. {
  17. Internal_CreateInstance(this, parentLayout, content, toggleGroup, style, options);
  18. }
  19. public void SetContent(GUIContent content)
  20. {
  21. Internal_SetContent(mCachedPtr, content);
  22. }
  23. public void ToggleOn()
  24. {
  25. Internal_ToggleOn();
  26. }
  27. public void ToggleOff()
  28. {
  29. Internal_ToggleOff();
  30. }
  31. private void DoOnClick()
  32. {
  33. if (OnClick != null)
  34. OnClick();
  35. }
  36. private void DoOnHover()
  37. {
  38. if (OnHover != null)
  39. OnHover();
  40. }
  41. private void DoOnOut()
  42. {
  43. if (OnOut != null)
  44. OnOut();
  45. }
  46. private void DoOnToggled(bool toggled)
  47. {
  48. if (OnToggled != null)
  49. OnToggled(toggled);
  50. }
  51. [MethodImpl(MethodImplOptions.InternalCall)]
  52. private static extern void Internal_CreateInstance(GUIToggle instance, GUILayout layout, GUIContent content,
  53. GUIToggleGroup toggleGroup, GUIElementStyle style, GUIOption[] options);
  54. [MethodImpl(MethodImplOptions.InternalCall)]
  55. private static extern void Internal_SetContent(IntPtr nativeInstance, GUIContent content);
  56. [MethodImpl(MethodImplOptions.InternalCall)]
  57. private static extern void Internal_ToggleOn();
  58. [MethodImpl(MethodImplOptions.InternalCall)]
  59. private static extern void Internal_ToggleOff();
  60. }
  61. }