protected override void InitFields() { this.m_DelegateTypes = new Type[] { typeof(vp_Activity.Callback), typeof(vp_Activity.Callback), typeof(vp_Activity.Condition), typeof(vp_Activity.Condition) }; this.m_Fields = new FieldInfo[] { base.GetType().GetField("StartCallbacks"), base.GetType().GetField("StopCallbacks"), base.GetType().GetField("StartConditions"), base.GetType().GetField("StopConditions") }; base.StoreInvokerFieldNames(); this.m_DefaultMethods = new MethodInfo[] { base.GetType().GetMethod("Empty"), base.GetType().GetMethod("Empty"), base.GetType().GetMethod("AlwaysOK"), base.GetType().GetMethod("AlwaysOK") }; this.Prefixes = new Dictionary <string, int> { { "OnStart_", 0 }, { "OnStop_", 1 }, { "CanStart_", 2 }, { "CanStop_", 3 } }; this.StartCallbacks = new vp_Activity.Callback(vp_Activity.Empty); this.StopCallbacks = new vp_Activity.Callback(vp_Activity.Empty); this.StartConditions = new vp_Activity.Condition(vp_Activity.AlwaysOK); this.StopConditions = new vp_Activity.Condition(vp_Activity.AlwaysOK); }
public bool TryStop() { if (!this.m_Active) { return(false); } if (Time.time < this.NextAllowedStopTime) { return(false); } Delegate[] invocationList = this.StopConditions.GetInvocationList(); for (int i = 0; i < invocationList.Length; i++) { vp_Activity.Condition condition = (vp_Activity.Condition)invocationList[i]; if (!condition()) { return(false); } } this.Active = false; return(true); }