protected override IEnumerable <BEHAVIOR_STATUS> Execute() { switch (g_Status) { case BEHAVIOR_STATUS.STARTED: if (g_NPCAssertion != null) { g_Assertion = g_NPCAssertion.Evaluate; } bool result = g_Assertion.Invoke(); if (result) { if (g_NPCAssertion != null && g_NPCAssertion.SetResultInBlackboard && Blackboard != null) { if (Blackboard.HasParameter(g_NPCAssertion.BlackboardValue)) { if (!Blackboard.AddValue(g_NPCAssertion.BlackboardValue, g_NPCAssertion.Result)) { Debug.Log("Failed to add NPCAssertion result int NPCBlackboard"); } } } g_Status = BEHAVIOR_STATUS.SUCCESS; } else { g_Status = BEHAVIOR_STATUS.FAILURE; } break; } yield return(g_Status); }