void Update() { if (NarrativeManager.Get().IsPaused()) { return; } timer += Time.deltaTime; if (execList.Count > 0) { if (timer >= 0f) { NarrativeEffect effect = execList[0]; execList.RemoveAt(0); if (effect.enabled) { effect.Trigger(last_triggerer); timer = -effect.GetWaitTime(); } CheckIfEnd(); } } else if (childExecList.Count > 0) { //Still running if (timer >= 0f) { NarrativeChild child = childExecList[0]; childExecList.RemoveAt(0); float wait = child.RunIfMet(last_triggerer); timer = -wait; CheckIfEnd(); } } else { if (trigger_type == NarrativeEventType.AutoTrigger && AreConditionsMet()) { Run(); } } }
void Awake() { evt_list.Add(this); conditions.AddRange(GetComponents <NarrativeCondition>()); effects.AddRange(GetComponents <NarrativeEffect>()); for (int i = 0; i < transform.childCount; i++) { GameObject child_obj = transform.GetChild(i).gameObject; if (child_obj.GetComponent <NarrativeEffect>()) { NarrativeChild child = new NarrativeChild(); child.game_obj = child_obj; child.conditions.AddRange(child_obj.GetComponents <NarrativeCondition>()); child.effects.AddRange(child_obj.GetComponents <NarrativeEffect>()); childs.Add(child); } } }