using System; using Unity.Behavior; using Unity.Properties; using UnityEngine; namespace Colosseum.AI.BehaviorActions.Conditions { /// /// 후보 패턴 중 현재 실행 가능한 패턴이 하나라도 있는지 확인합니다. /// [Serializable, GeneratePropertyBag] [Condition(name: "Has Any Ready Pattern", story: "후보 패턴 중 실행 가능한 패턴이 있는가?", id: "f2c9e62a-f5ea-43c5-8e88-b94a449e7c7f")] [NodeDescription( name: "Has Any Ready Pattern", story: "후보 패턴 중 실행 가능한 패턴이 있는가?", category: "Condition/Pattern")] public partial class HasAnyReadyPatternCondition : Unity.Behavior.Condition { [SerializeReference] public BlackboardVariable Pattern1; [SerializeReference] public BlackboardVariable Weight1 = new BlackboardVariable(1f); [SerializeReference] public BlackboardVariable Pattern2; [SerializeReference] public BlackboardVariable Weight2 = new BlackboardVariable(1f); [SerializeReference] public BlackboardVariable Pattern3; [SerializeReference] public BlackboardVariable Weight3 = new BlackboardVariable(1f); [SerializeReference] public BlackboardVariable Pattern4; [SerializeReference] public BlackboardVariable Weight4 = new BlackboardVariable(1f); [SerializeReference] public BlackboardVariable Pattern5; [SerializeReference] public BlackboardVariable Weight5 = new BlackboardVariable(1f); public override bool IsTrue() { WeightedPatternCandidate[] candidates = { new WeightedPatternCandidate(Pattern1?.Value, Weight1?.Value ?? 0f), new WeightedPatternCandidate(Pattern2?.Value, Weight2?.Value ?? 0f), new WeightedPatternCandidate(Pattern3?.Value, Weight3?.Value ?? 0f), new WeightedPatternCandidate(Pattern4?.Value, Weight4?.Value ?? 0f), new WeightedPatternCandidate(Pattern5?.Value, Weight5?.Value ?? 0f), }; return WeightedPatternSelector.HasAnyReadyPattern(GameObject, candidates); } } }