Spaces:
Runtime error
Runtime error
File size: 1,999 Bytes
00437a9 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 |
using Photon.Deterministic;
using System;
namespace Quantum
{
public unsafe abstract partial class BTLeaf : BTNode
{
public AssetRefBTService[] Services;
protected BTService[] _serviceInstances;
public BTService[] ServiceInstances
{
get
{
return _serviceInstances;
}
}
public override BTNodeType NodeType
{
get
{
return BTNodeType.Leaf;
}
}
public override unsafe void Init(Frame frame, AIBlackboardComponent* blackboard, BTAgent* agent)
{
base.Init(frame, blackboard, agent);
for (int i = 0; i < Services.Length; i++)
{
BTService service = frame.FindAsset<BTService>(Services[i].Id);
service.Init(frame, agent, blackboard);
}
}
public override void OnEnterRunning(BTParams btParams)
{
var activeServicesList = btParams.Frame.ResolveList<AssetRefBTService>(btParams.Agent->ActiveServices);
for (int i = 0; i < _serviceInstances.Length; i++)
{
_serviceInstances[i].OnEnter(btParams);
activeServicesList.Add(Services[i]);
}
}
public override void OnEnter(BTParams btParams)
{
base.OnEnter(btParams);
BTManager.OnNodeEnter?.Invoke(btParams.Entity, Guid.Value);
}
public override void OnExit(BTParams btParams)
{
var activeServicesList = btParams.Frame.ResolveList<AssetRefBTService>(btParams.Agent->ActiveServices);
for (Int32 i = 0; i < _serviceInstances.Length; i++)
{
activeServicesList.Remove(Services[i]);
}
BTManager.OnNodeExit?.Invoke(btParams.Entity, Guid.Value);
}
public override void OnReset(BTParams btParams)
{
base.OnReset(btParams);
OnExit(btParams);
}
public override void Loaded(IResourceManager resourceManager, Native.Allocator allocator)
{
base.Loaded(resourceManager, allocator);
// Cache the service assets links
_serviceInstances = new BTService[Services.Length];
for (int i = 0; i < Services.Length; i++)
{
_serviceInstances[i] = (BTService)resourceManager.GetAsset(Services[i].Id);
}
}
}
} |