GUIButton.cs 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  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 OnDoubleClickDelegate();
  9. public delegate void OnHoverDelegate();
  10. public delegate void OnOutDelegate();
  11. public event OnClickDelegate OnClick;
  12. public event OnDoubleClickDelegate OnDoubleClick;
  13. public event OnHoverDelegate OnHover;
  14. public event OnOutDelegate OnOut;
  15. public GUIButton(GUIContent content, string style, params GUIOption[] options)
  16. {
  17. Internal_CreateInstance(this, content, style, options);
  18. }
  19. public GUIButton(GUIContent content, string style)
  20. {
  21. Internal_CreateInstance(this, content, style, new GUIOption[0]);
  22. }
  23. public GUIButton(GUIContent content, params GUIOption[] options)
  24. {
  25. Internal_CreateInstance(this, content, "", options);
  26. }
  27. public void SetContent(GUIContent content)
  28. {
  29. Internal_SetContent(mCachedPtr, content);
  30. }
  31. public void SetTint(Color color)
  32. {
  33. Internal_SetTint(mCachedPtr, color);
  34. }
  35. private void DoOnClick()
  36. {
  37. if (OnClick != null)
  38. OnClick();
  39. }
  40. private void DoOnDoubleClick()
  41. {
  42. if (OnDoubleClick != null)
  43. OnDoubleClick();
  44. }
  45. private void DoOnHover()
  46. {
  47. if (OnHover != null)
  48. OnHover();
  49. }
  50. private void DoOnOut()
  51. {
  52. if (OnOut != null)
  53. OnOut();
  54. }
  55. [MethodImpl(MethodImplOptions.InternalCall)]
  56. private static extern void Internal_CreateInstance(GUIButton instance, GUIContent content, string style, GUIOption[] options);
  57. [MethodImpl(MethodImplOptions.InternalCall)]
  58. private static extern void Internal_SetContent(IntPtr nativeInstance, GUIContent content);
  59. [MethodImpl(MethodImplOptions.InternalCall)]
  60. private static extern void Internal_SetTint(IntPtr nativeInstance, Color color);
  61. }
  62. }