/// --------------------------------------------- /// Behavior Designer /// Copyright (c) Opsive. All Rights Reserved. /// https://www.opsive.com /// --------------------------------------------- namespace Opsive.BehaviorDesigner.Samples { using Opsive.BehaviorDesigner.Runtime.Tasks; using Opsive.BehaviorDesigner.Runtime.Tasks.Actions; using UnityEngine; /// /// Picks up the next available resource. /// [Shared.Utility.Category("Behavior Designer Samples")] public class Gather : Action { protected override bool ReceiveTriggerEnterCallback => true; private ResourceTrigger m_ResourceTrigger; /// /// Picks up the resource. /// /// Success if the agent was able to pickup the resource, otherwise failure if the resource is null. public override TaskStatus OnUpdate() { if (m_ResourceTrigger == null) { return TaskStatus.Failure; } m_ResourceTrigger.Pickup(); return TaskStatus.Success; } /// /// The agent has entered a trigger. /// /// The trigger that the agent entered. protected override void OnTriggerEnter(Collider other) { ResourceTrigger resourceTrigger; if ((resourceTrigger = other.GetComponent()) != null) { m_ResourceTrigger = resourceTrigger; } } } }