public Execution Execute <TCtx>(TCtx ctx, InputTriggerPort port) where TCtx : IGraphInstance { var dstManager = ctx.EntityManager; var behaviorTree = ctx.ReadEntity(BehaviorTreeEntity); if (ctx.ReadBool(CloneBehaviorTree)) { behaviorTree = dstManager.CloneBehaviorTree(behaviorTree); } var target = ctx.ReadEntity(TargetEntity); if (target == Entity.Null) { target = ctx.CurrentEntity; } var order = ctx.ReadInt(Order); if (!dstManager.HasComponent <CurrentBehaviorTreeComponent>(target)) { dstManager.AddComponent <CurrentBehaviorTreeComponent>(target); } if (!dstManager.HasComponent <BehaviorTreeBufferElement>(target)) { dstManager.AddBuffer <BehaviorTreeBufferElement>(target); } if (dstManager.HasComponent <BehaviorTreeTargetComponent>(behaviorTree)) { dstManager.SetComponentData(behaviorTree, new BehaviorTreeTargetComponent(target)); } else { dstManager.AddComponentData(behaviorTree, new BehaviorTreeTargetComponent(target)); } if (dstManager.HasComponent <BehaviorTreeOrderComponent>(behaviorTree)) { dstManager.SetComponentData(behaviorTree, new BehaviorTreeOrderComponent(order)); } else { dstManager.AddComponentData(behaviorTree, new BehaviorTreeOrderComponent(order)); } if (ctx.ReadBool(Debug) && !dstManager.HasComponent <BehaviorTreeDebug>(behaviorTree)) { dstManager.AddComponentData(target, new BehaviorTreeDebug()); } return(Execution.Done); }
public Execution Execute <TCtx>(TCtx ctx, InputTriggerPort port) where TCtx : IGraphInstance => Execution.Done;