Spaces:
Runtime error
Runtime error
| using Photon.Deterministic; | |
| using System; | |
| namespace Quantum | |
| { | |
| public unsafe abstract partial class BTService | |
| { | |
| public FP IntervalInSec; | |
| [] public Int32 Id; | |
| public virtual void Init(Frame frame, BTAgent* agent, AIBlackboardComponent* blackboard) | |
| { | |
| var endTimesList = frame.ResolveList<FP>(agent->ServicesEndTimes); | |
| endTimesList.Add(0); | |
| } | |
| public void SetEndTime(Frame frame, BTAgent* agent) | |
| { | |
| var endTimesList = frame.ResolveList<FP>(agent->ServicesEndTimes); | |
| endTimesList[Id] = frame.BotSDKGameTime + IntervalInSec; | |
| } | |
| public FP GetEndTime(Frame frame, BTAgent* agent) | |
| { | |
| var endTime = frame.ResolveList(agent->ServicesEndTimes); | |
| return endTime[Id]; | |
| } | |
| public virtual void RunUpdate(BTParams btParams) | |
| { | |
| var endTime = GetEndTime(btParams.Frame, btParams.Agent); | |
| if (btParams.Frame.BotSDKGameTime >= endTime) | |
| { | |
| OnUpdate(btParams); | |
| SetEndTime(btParams.Frame, btParams.Agent); | |
| } | |
| } | |
| public virtual void OnEnter(BTParams btParams) | |
| { | |
| SetEndTime(btParams.Frame, btParams.Agent); | |
| } | |
| /// <summary> | |
| /// Called whenever the Service is part of the current subtree | |
| /// and its waiting time is already over | |
| /// </summary> | |
| protected abstract void OnUpdate(BTParams btParams); | |
| public static void TickServices(BTParams btParams) | |
| { | |
| var activeServicesList = btParams.Frame.ResolveList<AssetRefBTService>(btParams.Agent->ActiveServices); | |
| for (int i = 0; i < activeServicesList.Count; i++) | |
| { | |
| var service = btParams.Frame.FindAsset<BTService>(activeServicesList[i].Id); | |
| try | |
| { | |
| service.RunUpdate(btParams); | |
| } | |
| catch (Exception e) | |
| { | |
| Log.Error("Exception in Behaviour Tree service '{0}' ({1}) - setting node status to Failure", service.GetType().ToString(), service.Guid); | |
| Log.Exception(e); | |
| } | |
| } | |
| } | |
| } | |
| } | |