60 lines
1.8 KiB
C#
60 lines
1.8 KiB
C#
using NodeCanvas.Framework;
|
|
using ParadoxNotion.Design;
|
|
using UnityEngine;
|
|
|
|
|
|
namespace NodeCanvas.Tasks.Actions {
|
|
|
|
[Category("Reset")]
|
|
[Description("Breaks down an incoming RaycastHit into it's constituent parts for later use.")]
|
|
public class DecomposeRaycastHit : ActionTask{
|
|
public BBParameter<RaycastHit> raycastHit;
|
|
|
|
public BBParameter<Transform> transform;
|
|
public BBParameter<Collider> collider;
|
|
public BBParameter<GameObject> gameObject;
|
|
public BBParameter<float> distance;
|
|
public BBParameter<Vector3> normal;
|
|
public BBParameter<Vector3> point;
|
|
|
|
//Use for initialization. This is called only once in the lifetime of the task.
|
|
//Return null if init was successfull. Return an error string otherwise
|
|
|
|
protected override string info{
|
|
get{ return $"Decompose RaycastHit <b>{raycastHit}</b>"; }
|
|
}
|
|
|
|
protected override string OnInit() {
|
|
return null;
|
|
}
|
|
|
|
//This is called once each time the task is enabled.
|
|
//Call EndAction() to mark the action as finished, either in success or failure.
|
|
//EndAction can be called from anywhere.
|
|
protected override void OnExecute(){
|
|
if (transform.isDefined){ transform.value = raycastHit.value.transform; }
|
|
if (collider.isDefined){ collider.value = raycastHit.value.collider; }
|
|
if (gameObject.isDefined){ gameObject.value = raycastHit.value.transform.gameObject; }
|
|
if (distance.isDefined){ distance.value = raycastHit.value.distance; }
|
|
if (normal.isDefined){ normal.value = raycastHit.value.normal; }
|
|
if (point.isDefined){ point.value = raycastHit.value.point; }
|
|
|
|
EndAction(true);
|
|
}
|
|
|
|
//Called once per frame while the action is active.
|
|
protected override void OnUpdate() {
|
|
|
|
}
|
|
|
|
//Called when the task is disabled.
|
|
protected override void OnStop() {
|
|
|
|
}
|
|
|
|
//Called when the task is paused.
|
|
protected override void OnPause() {
|
|
|
|
}
|
|
}
|
|
} |