IEnumerator FadeIn(Color colour, float duration) { float startMS = Time.time * 1000f; float currMS = 0; float endMS = duration * 1000f; HeliosUtility.SetFadeColot(colour); for (; currMS <= endMS;) { currMS = (Time.time * 1000f) - startMS; HeliosUtility.SetFade(currMS / endMS); yield return(null); } }
/// <summary> /// Called when the trigger starts /// </summary> /// <param name="poi"></param> public override void OnStart(PegasusPoi poi) { if (poi == null) { Debug.LogWarning(string.Format("Poi was not supplied on {0} - exiting", name)); return; } if (m_heliosUtility == null) { m_heliosUtility = GameObject.FindObjectOfType <HeliosUtility>(); } if (m_heliosUtility == null) { Debug.LogWarning(string.Format("Helios was not located on {0} - exiting", name)); return; } if (m_triggerAtStart) { if (m_actionOnStart == PegasusConstants.PoiHeliosTriggerAction.FadeIn) { StartCoroutine(FadeIn(m_startColour, m_startDuration)); } else if (m_actionOnStart == PegasusConstants.PoiHeliosTriggerAction.FadeOut) { StartCoroutine(FadeOut(m_startColour, m_startDuration)); } } //Set up when the end fade starts - work it backwards from the segment time if (m_triggerAtEnd && m_actionOnEnd != PegasusConstants.PoiHeliosTriggerAction.DoNothing) { //Calculate when end start time should kick in m_endProcessStarted = false; m_endTimeStartMS = (float)poi.m_segmentDuration.TotalMilliseconds; if (m_endTimeStartMS > (m_endDuration * 1000f)) { m_endTimeStartMS = m_endDuration * 1000f; } m_endTimeStartMS = Time.time + (float)poi.m_segmentDuration.TotalMilliseconds - m_endTimeStartMS; } }