Example #1
0
        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;