Exemplo n.º 1
0
 public static AIBehaviourSetting CopyBehaviour(this AIBehaviourSetting s)
 {
     return(new AIBehaviourSetting
     {
         Actor = s.Actor,
         additionalMode = s.additionalMode,
         basePriority = s.basePriority,
         behaviourType = s.behaviourType,
         curveMaxSample = s.curveMaxSample,
         curveMinSample = s.curveMinSample,
         executeCustomInput = s.executeCustomInput,
         priorityCurve = s.priorityCurve,
         targetFilterMode = s.targetFilterMode,
         targetFilterTags = s.targetFilterTags
     });
 }
Exemplo n.º 2
0
        protected override void OnUpdate()
        {
            _targets.Clear();
            Entities.With(_queryAI).ForEach((Entity entity, AbilityAIInput ai) =>
            {
                if (_targets.Count == 0)
                {
                    Entities.With(_queryTargets).ForEach((Entity e, Transform transform) =>
                    {
                        _targets.Add(transform);
                    });
                }

                var bestPriority = float.MinValue;
                AIBehaviourSetting bestBehaviour = null;

                foreach (var behaviour in ai.behaviours)
                {
                    var b = behaviour.BehaviourInstance;
                    if (b == null)
                    {
                        Debug.LogError("[AI ABILITY] Could not find or create AI Behaviour instance!");
                        return;
                    }

                    var score = b.Evaluate(entity, behaviour, ai, _targets);

                    if (score <= bestPriority)
                    {
                        continue;
                    }

                    bestPriority  = score;
                    bestBehaviour = behaviour;
                }

                ai.activeBehaviour         = bestBehaviour;
                ai.activeBehaviourPriority = bestPriority;

                World.EntityManager.RemoveComponent <EvaluateAIData>(entity);
                World.EntityManager.AddComponent <SetupAIData>(entity);
            }
                                            );
        }
Exemplo n.º 3
0
        public static bool FilterTag(this Transform t, AIBehaviourSetting behaviourSetting)
        {
            if (!behaviourSetting.BehaviourInstance.NeedTarget)
            {
                Debug.LogError("[FILTER BY TAG UTILITY] FilterTag called for Behaviour that doesn't need target!");
                return(true);
            }

            var contains = behaviourSetting.targetFilterTags.Contains(t.tag);

            switch (behaviourSetting.targetFilterMode)
            {
            case TagFilterMode.IncludeOnly:
                return(contains);

            case TagFilterMode.Exclude:
                return(!contains);

            default:
                throw new ArgumentOutOfRangeException();
            }
        }