GUIToggle.cs 2.3 KB

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