Files
beyond/Assets/ThirdParty/PlayMaker/Actions/UI/EventSystem/UiGetLastPointerDataInfo.cs
2024-11-20 15:21:28 +01:00

264 lines
6.1 KiB
C#

// (c) Copyright HutongGames, LLC 2010-2018. All rights reserved.
using UnityEngine.EventSystems;
namespace HutongGames.PlayMaker.Actions
{
[ActionCategory(ActionCategory.UI)]
[Tooltip("Gets pointer data on the last System event.")]
public class UiGetLastPointerDataInfo : FsmStateAction
{
public static PointerEventData lastPointerEventData;
[Tooltip("Number of clicks in a row.")]
[UIHint(UIHint.Variable)]
public FsmInt clickCount;
[Tooltip("The last time a click event was sent.")]
[UIHint(UIHint.Variable)]
public FsmFloat clickTime;
[Tooltip("Pointer delta since last update.")]
[UIHint(UIHint.Variable)]
public FsmVector2 delta;
[Tooltip("Is a drag operation currently occuring.")]
[UIHint(UIHint.Variable)]
public FsmBool dragging;
[Tooltip("The InputButton for this event.")]
[UIHint(UIHint.Variable)]
[ObjectType(typeof(PointerEventData.InputButton))]
public FsmEnum inputButton;
[Tooltip("Is the pointer being pressed? (Not documented by Unity)")]
[UIHint(UIHint.Variable)]
public FsmBool eligibleForClick;
[Tooltip("The camera associated with the last OnPointerEnter event.")]
[UIHint(UIHint.Variable)]
public FsmGameObject enterEventCamera;
[Tooltip("The camera associated with the last OnPointerPress event.")]
[UIHint(UIHint.Variable)]
public FsmGameObject pressEventCamera;
[Tooltip("Is the pointer moving.")]
[UIHint(UIHint.Variable)]
public FsmBool isPointerMoving;
[Tooltip("Is scroll being used on the input device.")]
[UIHint(UIHint.Variable)]
public FsmBool isScrolling;
[Tooltip("The GameObject for the last press event.")]
[UIHint(UIHint.Variable)]
public FsmGameObject lastPress;
[Tooltip("The object that is receiving OnDrag.")]
[UIHint(UIHint.Variable)]
public FsmGameObject pointerDrag;
[Tooltip("The object that received \'OnPointerEnter\'.")]
[UIHint(UIHint.Variable)]
public FsmGameObject pointerEnter;
[Tooltip("Id of the pointer (touch id).")]
[UIHint(UIHint.Variable)]
public FsmInt pointerId;
[Tooltip("The GameObject that received the OnPointerDown.")]
[UIHint(UIHint.Variable)]
public FsmGameObject pointerPress;
[Tooltip("Current pointer position.")]
[UIHint(UIHint.Variable)]
public FsmVector2 position;
[Tooltip("Position of the press.")]
[UIHint(UIHint.Variable)]
public FsmVector2 pressPosition;
[Tooltip("The object that the press happened on even if it can not handle the press event.")]
[UIHint(UIHint.Variable)]
public FsmGameObject rawPointerPress;
[Tooltip("The amount of scroll since the last update.")]
[UIHint(UIHint.Variable)]
public FsmVector2 scrollDelta;
[Tooltip("Is the event used?")]
[UIHint(UIHint.Variable)]
public FsmBool used;
[Tooltip("Should a drag threshold be used?")]
[UIHint(UIHint.Variable)]
public FsmBool useDragThreshold;
[Tooltip("The normal of the last raycast in world coordinates.")]
[UIHint(UIHint.Variable)]
public FsmVector3 worldNormal;
[Tooltip("The world position of the last raycast.")]
[UIHint(UIHint.Variable)]
public FsmVector3 worldPosition;
public override void Reset()
{
clickCount = null;
clickTime = null;
delta = null;
dragging = null;
inputButton = PointerEventData.InputButton.Left;
eligibleForClick = null;
enterEventCamera = null;
pressEventCamera = null;
isPointerMoving= null;
isScrolling = null;
lastPress = null;
pointerDrag = null;
pointerEnter = null;
pointerId = null;
pointerPress = null;
position = null;
pressPosition = null;
rawPointerPress = null;
scrollDelta = null;
used = null;
useDragThreshold = null;
worldNormal = null;
worldPosition = null;
}
public override void OnEnter()
{
if (lastPointerEventData==null)
{
Finish();
return;
}
if (!clickCount.IsNone)
{
clickCount.Value = lastPointerEventData.clickCount;
}
if (!clickTime.IsNone)
{
clickTime.Value = lastPointerEventData.clickTime;
}
if (!delta.IsNone)
{
delta.Value = lastPointerEventData.delta;
}
if (!dragging.IsNone)
{
dragging.Value = lastPointerEventData.dragging;
}
if (!inputButton.IsNone)
{
inputButton.Value = lastPointerEventData.button;
}
if (!eligibleForClick.IsNone)
{
eligibleForClick.Value = lastPointerEventData.eligibleForClick;
}
if (!enterEventCamera.IsNone)
{
enterEventCamera.Value = lastPointerEventData.enterEventCamera.gameObject;
}
if (!isPointerMoving.IsNone)
{
isPointerMoving.Value = lastPointerEventData.IsPointerMoving();
}
if (!isScrolling.IsNone)
{
isScrolling.Value = lastPointerEventData.IsScrolling();
}
if (!lastPress.IsNone)
{
lastPress.Value = lastPointerEventData.lastPress;
}
if (!pointerDrag.IsNone)
{
pointerDrag.Value = lastPointerEventData.pointerDrag;
}
if (!pointerEnter.IsNone)
{
pointerEnter.Value = lastPointerEventData.pointerEnter;
}
if (!pointerId.IsNone)
{
pointerId.Value = lastPointerEventData.pointerId;
}
if (!pointerPress.IsNone)
{
pointerPress.Value = lastPointerEventData.pointerPress;
}
if (!position.IsNone)
{
position.Value = lastPointerEventData.position;
}
if (!pressEventCamera.IsNone)
{
pressEventCamera.Value = lastPointerEventData.pressEventCamera.gameObject;
}
if (!pressPosition.IsNone)
{
pressPosition.Value = lastPointerEventData.pressPosition;
}
if (!rawPointerPress.IsNone)
{
rawPointerPress.Value = lastPointerEventData.rawPointerPress;
}
if (!scrollDelta.IsNone)
{
scrollDelta.Value = lastPointerEventData.scrollDelta;
}
if (!used.IsNone)
{
used.Value = lastPointerEventData.used;
}
if (!useDragThreshold.IsNone)
{
useDragThreshold.Value = lastPointerEventData.useDragThreshold;
}
if (!worldNormal.IsNone)
{
worldNormal.Value = lastPointerEventData.pointerCurrentRaycast.worldNormal;
}
if (!worldPosition.IsNone)
{
worldPosition.Value = lastPointerEventData.pointerCurrentRaycast.worldPosition;
}
Finish();
}
}
}