Spaces:
Runtime error
Runtime error
using Quantum.Collections; | |
namespace Quantum | |
{ | |
public unsafe partial struct BlackboardEntry | |
{ | |
/// <summary> | |
/// Iterate through all Decorators that watches this Blackboard entry | |
/// Re-check the Decorators so it can check if an abort is needed | |
/// </summary> | |
/// <param name="btParams"></param> | |
public void TriggerDecorators(BTParams btParams) | |
{ | |
var frame = btParams.Frame; | |
// If the reactive decorators list was already allocated... | |
if (ReactiveDecorators.Ptr != default) | |
{ | |
// Solve it and trigger the decorators checks | |
var reactiveDecorators = frame.ResolveList(ReactiveDecorators); | |
for (int i = 0; i < reactiveDecorators.Count; i++) | |
{ | |
var reactiveDecoratorRef = reactiveDecorators[i]; | |
var decoratorInstance = frame.FindAsset<BTDecorator>(reactiveDecoratorRef.Id); | |
btParams.Agent->OnDecoratorReaction(btParams, decoratorInstance, decoratorInstance.AbortType, out bool abortSelf, out bool abortLowerPriority); | |
// If at least one Decorator resulted in abort, we stop and return already | |
if (abortSelf == true) | |
{ | |
btParams.Agent->AbortNodeId = decoratorInstance.Id; | |
} | |
} | |
} | |
} | |
} | |
} | |