Spaces:
Runtime error
Runtime error
| using Photon.Deterministic; | |
| using System; | |
| using System.Collections.Generic; | |
| namespace Quantum | |
| { | |
| [] | |
| public unsafe partial class BTRoot : BTDecorator | |
| { | |
| [] public Int32 NodesAmount; | |
| public override BTNodeType NodeType | |
| { | |
| get | |
| { | |
| return BTNodeType.Root; | |
| } | |
| } | |
| protected unsafe override BTStatus OnUpdate(BTParams btParams) | |
| { | |
| btParams.Agent->Current = this; | |
| if (_childInstance != null) | |
| { | |
| return _childInstance.RunUpdate(btParams); | |
| } | |
| return BTStatus.Success; | |
| } | |
| public void InitializeTree(Frame frame, BTAgent* agent, AIBlackboardComponent* blackboard) | |
| { | |
| InitNodesRecursively(frame, this, agent, blackboard); | |
| } | |
| private static void InitNodesRecursively(Frame frame, BTNode node, BTAgent* agent, AIBlackboardComponent* blackboard) | |
| { | |
| node.Init(frame, blackboard, agent); | |
| if (node is BTDecorator decoratorNode) | |
| { | |
| BTNode childNode = frame.FindAsset<BTNode>(decoratorNode.Child.Id); | |
| InitNodesRecursively(frame, childNode, agent, blackboard); | |
| } | |
| if (node is BTComposite compositeNode) | |
| { | |
| foreach (var child in compositeNode.Children) | |
| { | |
| BTNode childNode = frame.FindAsset<BTNode>(child.Id); | |
| InitNodesRecursively(frame, childNode, agent, blackboard); | |
| } | |
| } | |
| } | |
| } | |
| } |