1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192 |
- using System;
- using UnityEngine;
-
- namespace UnityEditor.U2D.Path.GUIFramework
- {
- /// <summary>
- /// SliderAction implementation of a ClickAction
- /// </summary>
- public class SliderAction : ClickAction
- {
- private SliderData m_SliderData;
-
- /// <summary>
- /// Action for OnSliderBegin
- /// </summary>
- public Action<IGUIState, Control, Vector3> onSliderBegin;
- /// <summary>
- /// Action for OnSliderChanged
- /// </summary>
- public Action<IGUIState, Control, Vector3> onSliderChanged;
- /// <summary>
- /// Action for OnSliderEnd
- /// </summary>
- public Action<IGUIState, Control, Vector3> onSliderEnd;
-
- /// <summary>
- /// Initializes and returns an instance of SliderAction
- /// </summary>
- /// <param name="control">The control to execcute an action for on slide.</param>
- public SliderAction(Control control) : base(control, 0, false)
- {
- }
-
- /// <summary>
- /// Checks to see if the finish condition has been met or not.
- /// </summary>
- /// <param name="guiState">The current state of the custom editor.</param>
- /// <returns>Returns `true` if the finish condition has been met. Otherwise, returns `false`.</returns>
- protected override bool GetFinishContidtion(IGUIState guiState)
- {
- return guiState.eventType == EventType.MouseUp && guiState.mouseButton == 0;
- }
-
- /// <summary>
- /// Called when there is interaction with the slider. It updates the stored slider data with data post-interaction.
- /// </summary>
- /// <param name="guiState">The current state of the custom editor.</param>
- protected override void OnTrigger(IGUIState guiState)
- {
- base.OnTrigger(guiState);
-
- m_SliderData.position = hoveredControl.hotLayoutData.position;
- m_SliderData.forward = hoveredControl.hotLayoutData.forward;
- m_SliderData.right = hoveredControl.hotLayoutData.right;
- m_SliderData.up = hoveredControl.hotLayoutData.up;
-
- if (onSliderBegin != null)
- onSliderBegin(guiState, hoveredControl, m_SliderData.position);
- }
-
- /// <summary>
- /// Post-processing for when the slider interaction finishes.
- /// </summary>
- /// <param name="guiState">The current state of the custom editor.</param>
- protected override void OnFinish(IGUIState guiState)
- {
- if (onSliderEnd != null)
- onSliderEnd(guiState, hoveredControl, m_SliderData.position);
-
- guiState.UseEvent();
- guiState.Repaint();
- }
-
- /// <summary>
- /// Moves the slider to the new permission and executes `onSliderChanged` using the new position.
- /// </summary>
- /// <param name="guiState">The current state of the custom editor</param>
- protected override void OnPerform(IGUIState guiState)
- {
- Vector3 newPosition;
- var changed = guiState.Slider(ID, m_SliderData, out newPosition);
-
- if (changed)
- {
- m_SliderData.position = newPosition;
-
- if (onSliderChanged != null)
- onSliderChanged(guiState, hoveredControl, newPosition);
- }
- }
- }
- }
|