public void NextBehaviorModeRule(bool _update = false) { if (!ActiveBehaviourIsValid) { PrintDebugLog(this, "NextBehaviorModeRule : invalid Behaviour '" + ActiveBehaviourModeKey + "', please check this mode and its rules!"); } else { // NextRule will be false if there are no rules but also no new rule, the first // case should never be true so we can use _forced to run a simulated rule change // to refresh the parameter and/or start animation and audio files, effects and events // etc. if (m_ActiveBehaviourMode.NextRule() || _update) { if (m_ActiveBehaviourMode.LastRule != null) { BehaviourAnimation.Stop(m_ActiveBehaviourMode.Rule.Animation); m_ActiveBehaviourMode.LastRule.Stop(); } if (m_ActiveBehaviourMode.Rule != null) { if (DebugLogIsEnabled) { PrintDebugLog(this, "NextBehaviorModeRule : Start rule #" + m_ActiveBehaviourMode.Rule.Index + " of Behaviour Mode " + ActiveBehaviourModeKey + "!"); } m_ActiveBehaviourMode.Rule.Start(OwnerComponent); BehaviourAnimation.Play(m_ActiveBehaviourMode.Rule.Animation); BehaviourAudioPlayer.Play(m_ActiveBehaviourMode.Rule.Audio); BehaviourLook.Adapt(m_ActiveBehaviourMode.Rule.Look); //BehaviourMessage.Send( m_ActiveBehaviourMode.Rule.Message ); } m_BehaviourModeRuleLength = m_ActiveBehaviourMode.RuleLength(); m_BehaviourModeRuleTimer = 0; m_BehaviourModeRuleChanged = m_ActiveBehaviourMode.RuleChanged; if (OnBehaviourModeRuleChanged != null && m_BehaviourModeRuleChanged == true) { OnBehaviourModeRuleChanged(Owner, m_ActiveBehaviourMode.Rule, m_ActiveBehaviourMode.LastRule); } } } }
public void NextBehaviorModeRule(bool _forced = false) { if (m_ActiveBehaviourMode == null) { if (m_BehaviourModeValid) { Debug.LogWarning("CAUTION : INVALID BEHAVIOURMODE '" + BehaviourModeKey + "' AT CREATURE '" + m_Owner.gameObject.name.ToUpper() + "'!"); } m_BehaviourModeValid = false; return; } else { m_BehaviourModeValid = true; } if (m_ActiveBehaviourMode.NextRule() || _forced) { BehaviourAnimation.Play(m_ActiveBehaviourMode.Rule); BehaviourAudio.Play(m_ActiveBehaviourMode.Rule.Audio); if (m_ActiveBehaviourMode.LastRule != null) { m_ActiveBehaviourMode.LastRule.StopEffect(); } if (m_ActiveBehaviourMode.Rule != null) { m_ActiveBehaviourMode.Rule.StartEffect(m_Owner); } m_BehaviourModeRuleLength = m_ActiveBehaviourMode.RuleLength(); m_BehaviourModeRuleTimer = 0; m_BehaviourModeRuleChanged = m_ActiveBehaviourMode.RuleChanged; } }