2
0

GUIButton.cs 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. using System;
  2. using System.Runtime.CompilerServices;
  3. namespace BansheeEngine
  4. {
  5. public sealed class GUIButton : GUIElement
  6. {
  7. public delegate void OnClickDelegate();
  8. public delegate void OnHoverDelegate();
  9. public delegate void OnOutDelegate();
  10. public event OnClickDelegate OnClick;
  11. public event OnHoverDelegate OnHover;
  12. public event OnOutDelegate OnOut;
  13. public GUIButton(GUIContent content, string style, params GUIOption[] options)
  14. {
  15. Internal_CreateInstance(this, content, style, options);
  16. }
  17. public GUIButton(GUIContent content, string style)
  18. {
  19. Internal_CreateInstance(this, content, style, new GUIOption[0]);
  20. }
  21. public GUIButton(GUIContent content, params GUIOption[] options)
  22. {
  23. Internal_CreateInstance(this, content, "", options);
  24. }
  25. public void SetContent(GUIContent content)
  26. {
  27. Internal_SetContent(mCachedPtr, content);
  28. }
  29. private void DoOnClick()
  30. {
  31. if (OnClick != null)
  32. OnClick();
  33. }
  34. private void DoOnHover()
  35. {
  36. if (OnHover != null)
  37. OnHover();
  38. }
  39. private void DoOnOut()
  40. {
  41. if (OnOut != null)
  42. OnOut();
  43. }
  44. [MethodImpl(MethodImplOptions.InternalCall)]
  45. private static extern void Internal_CreateInstance(GUIButton instance, GUIContent content, string style, GUIOption[] options);
  46. [MethodImpl(MethodImplOptions.InternalCall)]
  47. private static extern void Internal_SetContent(IntPtr nativeInstance, GUIContent content);
  48. }
  49. }