SliderAction.cs 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. using System;
  2. using UnityEngine;
  3. namespace UnityEditor.U2D.Path.GUIFramework
  4. {
  5. public class SliderAction : ClickAction
  6. {
  7. private SliderData m_SliderData;
  8. public Action<IGUIState, Control, Vector3> onSliderBegin;
  9. public Action<IGUIState, Control, Vector3> onSliderChanged;
  10. public Action<IGUIState, Control, Vector3> onSliderEnd;
  11. public SliderAction(Control control) : base(control, 0, false)
  12. {
  13. }
  14. protected override bool GetFinishContidtion(IGUIState guiState)
  15. {
  16. return guiState.eventType == EventType.MouseUp && guiState.mouseButton == 0;
  17. }
  18. protected override void OnTrigger(IGUIState guiState)
  19. {
  20. base.OnTrigger(guiState);
  21. m_SliderData.position = hoveredControl.hotLayoutData.position;
  22. m_SliderData.forward = hoveredControl.hotLayoutData.forward;
  23. m_SliderData.right = hoveredControl.hotLayoutData.right;
  24. m_SliderData.up = hoveredControl.hotLayoutData.up;
  25. if (onSliderBegin != null)
  26. onSliderBegin(guiState, hoveredControl, m_SliderData.position);
  27. }
  28. protected override void OnFinish(IGUIState guiState)
  29. {
  30. if (onSliderEnd != null)
  31. onSliderEnd(guiState, hoveredControl, m_SliderData.position);
  32. guiState.UseEvent();
  33. guiState.Repaint();
  34. }
  35. protected override void OnPerform(IGUIState guiState)
  36. {
  37. Vector3 newPosition;
  38. var changed = guiState.Slider(ID, m_SliderData, out newPosition);
  39. if (changed)
  40. {
  41. m_SliderData.position = newPosition;
  42. if (onSliderChanged != null)
  43. onSliderChanged(guiState, hoveredControl, newPosition);
  44. }
  45. }
  46. }
  47. }