private IEnumerator Fade(float direction, RealtimeLight light) { light.gameObject.SetActive(true); direction = Mathf.Sign(direction); light.SetIntensity(direction > 0f ? 0f : 1.0f); float timer = 0.0f; while (timer < fadeDuration) { float t = Mathf.Clamp01(timer / fadeDuration); light.SetIntensity(direction > 0 ? t : (1.0f - t)); if (direction > 0f) { light.SetLocalRotation(Quaternion.AngleAxis(180.0f - t * 180.0f, Vector3.right)); } else { light.SetLocalRotation(Quaternion.AngleAxis(180.0f + (1.0f - t) * 180.0f, Vector3.right)); } timer += Time.deltaTime; yield return(null); } light.SetIntensity(direction > 0f ? 1f : 0.0f); light.gameObject.SetActive(false); light.SetLocalRotation(direction > 0 ? Quaternion.AngleAxis(0.0f, Vector3.right) : Quaternion.AngleAxis(90.0f, Vector3.right)); }
private IEnumerator Fade(float direction, RealtimeLight light) { light.gameObject.SetActive(true); direction = Mathf.Sign(direction); Debug.Log("Begin Fade on " + light.gameObject.name + " direction=" + direction); light.SetIntensity(direction > 0f ? 0f : 1.0f); if (m_LabelMeshFilter != null) { m_LabelMeshFilter.mesh = light.textMesh; } float timer = 0.0f; while (timer < m_FadeDuration) { float t = Mathf.Clamp01(timer / m_FadeDuration); light.SetIntensity(direction > 0 ? t : (1.0f - t)); if (m_LabelMeshFilter != null) { if (direction > 0f) { m_LabelMeshFilter.transform.localRotation = Quaternion.AngleAxis(180.0f - t * 180.0f, Vector3.right); } else { m_LabelMeshFilter.transform.localRotation = Quaternion.AngleAxis(180.0f + (1.0f - t) * 180.0f, Vector3.right); } } timer += Time.deltaTime; yield return(null); } light.SetIntensity(direction > 0f ? 1f : 0.0f); light.gameObject.SetActive(false); if (m_LabelMeshFilter != null) { m_LabelMeshFilter.transform.localRotation = direction > 0 ? Quaternion.AngleAxis(0.0f, Vector3.right) : Quaternion.AngleAxis(90.0f, Vector3.right); } Debug.Log("Ending Fade on " + light.gameObject.name + " direction=" + direction); }