Spaces:
Runtime error
Runtime error
using Photon.Deterministic; | |
namespace Quantum | |
{ | |
public abstract unsafe partial class BTDecorator : BTNode | |
{ | |
[public AssetRefBTNode Child; | ]|
protected BTNode _childInstance; | |
public BTAbort AbortType; | |
public BTNode ChildInstance | |
{ | |
get | |
{ | |
return _childInstance; | |
} | |
} | |
public override BTNodeType NodeType | |
{ | |
get | |
{ | |
return BTNodeType.Decorator; | |
} | |
} | |
public override void OnReset(BTParams btParams) | |
{ | |
base.OnReset(btParams); | |
OnExit(btParams); | |
if (_childInstance != null) | |
_childInstance.OnReset(btParams); | |
BTManager.OnDecoratorReset?.Invoke(btParams.Entity, Guid.Value); | |
} | |
public override void OnExit(BTParams btParams) | |
{ | |
base.OnExit(btParams); | |
} | |
protected override BTStatus OnUpdate(BTParams btParams) | |
{ | |
if (DryRun(btParams) == true) | |
{ | |
BTManager.OnDecoratorChecked?.Invoke(btParams.Entity, Guid.Value, true); | |
if (_childInstance != null) | |
{ | |
var childResult = _childInstance.RunUpdate(btParams); | |
if (childResult == BTStatus.Abort) | |
{ | |
EvaluateAbortNode(btParams); | |
SetStatus(btParams.Frame, BTStatus.Abort, btParams.Agent); | |
return BTStatus.Abort; | |
} | |
return childResult; | |
} | |
return BTStatus.Success; | |
} | |
BTManager.OnDecoratorChecked?.Invoke(btParams.Entity, Guid.Value, false); | |
return BTStatus.Failure; | |
} | |
public override bool OnDynamicRun(BTParams btParams) | |
{ | |
var result = DryRun(btParams); | |
if (result == false) | |
{ | |
return false; | |
} | |
else if (ChildInstance.NodeType != BTNodeType.Decorator) | |
{ | |
return true; | |
} | |
else | |
{ | |
return ChildInstance.OnDynamicRun(btParams); | |
} | |
} | |
public override void Loaded(IResourceManager resourceManager, Native.Allocator allocator) | |
{ | |
base.Loaded(resourceManager, allocator); | |
// Cache the child | |
_childInstance = (BTNode)resourceManager.GetAsset(Child.Id); | |
_childInstance.Parent = this; | |
} | |
} | |
} |