using System; using BehaviorDesigner.Runtime; using BehaviorDesigner.Runtime.Tasks; using BlueWater.Enemies; using UnityEngine; using Action = BehaviorDesigner.Runtime.Tasks.Action; namespace BlueWater.BehaviorTrees.Actions { [TaskCategory("Custom")] [Serializable] public class Move : Action { [field: SerializeField] public bool UseMovePosition { get; set; } [field: SerializeField] public SharedVector3 MovePosition { get; set; } [field: SerializeField] public SharedCollider Target { get; set; } private AiMovement _aiMovement; public override void OnAwake() { _aiMovement = transform.GetComponent(); } public override void OnStart() { if (UseMovePosition) { _aiMovement.Move(MovePosition.Value); } else { _aiMovement.MoveTarget(Target.Value); } } public override TaskStatus OnUpdate() { if (!_aiMovement.HasReachedDestination()) return TaskStatus.Running; _aiMovement.StopMove(); return TaskStatus.Success; } } }