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

66 lines
1.6 KiB
C#

// (c) Copyright HutongGames, LLC 2010-2013. All rights reserved.
using UnityEngine;
namespace HutongGames.PlayMaker.Actions
{
[ActionCategory(ActionCategory.Physics)]
[Tooltip("Gets info on the last Raycast and store in variables.")]
public class GetRaycastHitInfo : FsmStateAction
{
[UIHint(UIHint.Variable)]
[Tooltip("Get the GameObject hit by the last Raycast and store it in a variable.")]
public FsmGameObject gameObjectHit;
[UIHint(UIHint.Variable)]
[Tooltip("Get the world position of the ray hit point and store it in a variable.")]
[Title("Hit Point")]
public FsmVector3 point;
[UIHint(UIHint.Variable)]
[Tooltip("Get the normal at the hit point and store it in a variable.")]
public FsmVector3 normal;
[UIHint(UIHint.Variable)]
[Tooltip("Get the distance along the ray to the hit point and store it in a variable.")]
public FsmFloat distance;
[Tooltip("Repeat every frame.")]
public bool everyFrame;
public override void Reset()
{
gameObjectHit = null;
point = null;
normal = null;
distance = null;
everyFrame = false;
}
void StoreRaycastInfo()
{
if (Fsm.RaycastHitInfo.collider != null)
{
gameObjectHit.Value = Fsm.RaycastHitInfo.collider.gameObject;
point.Value = Fsm.RaycastHitInfo.point;
normal.Value = Fsm.RaycastHitInfo.normal;
distance.Value = Fsm.RaycastHitInfo.distance;
}
}
public override void OnEnter()
{
StoreRaycastInfo();
if (!everyFrame)
{
Finish();
}
}
public override void OnUpdate()
{
StoreRaycastInfo();
}
}
}