GUIToggle.cs 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  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. public void SetTint(Color color)
  52. {
  53. Internal_SetTint(mCachedPtr, color);
  54. }
  55. private void DoOnClick()
  56. {
  57. if (OnClick != null)
  58. OnClick();
  59. }
  60. private void DoOnHover()
  61. {
  62. if (OnHover != null)
  63. OnHover();
  64. }
  65. private void DoOnOut()
  66. {
  67. if (OnOut != null)
  68. OnOut();
  69. }
  70. private void DoOnToggled(bool toggled)
  71. {
  72. if (OnToggled != null)
  73. OnToggled(toggled);
  74. }
  75. [MethodImpl(MethodImplOptions.InternalCall)]
  76. private static extern void Internal_CreateInstance(GUIToggle instance, GUIContent content,
  77. GUIToggleGroup toggleGroup, string style, GUIOption[] options);
  78. [MethodImpl(MethodImplOptions.InternalCall)]
  79. private static extern void Internal_SetContent(IntPtr nativeInstance, GUIContent content);
  80. [MethodImpl(MethodImplOptions.InternalCall)]
  81. private static extern void Internal_ToggleOn(IntPtr nativeInstance);
  82. [MethodImpl(MethodImplOptions.InternalCall)]
  83. private static extern void Internal_ToggleOff(IntPtr nativeInstance);
  84. [MethodImpl(MethodImplOptions.InternalCall)]
  85. private static extern void Internal_SetTint(IntPtr nativeInstance, Color color);
  86. }
  87. }