| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374 | using System.Collections;using UnityEngine;namespace HQFPSWeapons{	[RequireComponent(typeof(Light))]    public class Firelight : MonoBehaviour    {		[SerializeField]		[Range(0.1f, 3f)]		private float m_ToggleDuration = 0.5f;		[SerializeField]		[Range(0.1f, 3f)]		private float m_LightIntensity = 1f;		[SerializeField]		[Range(0.5f, 3f)]		private float m_LightRange = 2f;		[SerializeField]		[Range(0f, 3f)]		[Tooltip("How much the light intensity changes over time.")]		private float m_IntensityNoise = 1f;		private Light m_Light;		private bool m_IsInTransition;		private bool m_TargetState;		public void Toggle(bool toggle)		{			m_TargetState = toggle;			StopAllCoroutines();			StartCoroutine(C_Toggle(toggle));		}		private void Awake()		{			m_Light = GetComponent<Light>();		}		private void Update()		{			if(!m_IsInTransition && m_TargetState)				m_Light.intensity = m_LightIntensity + Mathf.PerlinNoise(Time.time, Time.time + 3f) * m_IntensityNoise;		}		private IEnumerator C_Toggle(bool toggle)		{			m_IsInTransition = true;			float endTime = Time.time + m_ToggleDuration;			while(Time.time < endTime)			{				// Intensity.				m_Light.intensity = Mathf.MoveTowards(					m_Light.intensity, 					toggle ? m_LightIntensity : 0f, 					Time.deltaTime * m_LightIntensity / m_ToggleDuration);				// Range.				m_Light.range = Mathf.MoveTowards(					m_Light.range, 					toggle ? m_LightRange : 0f, 					Time.deltaTime * m_LightIntensity / m_ToggleDuration);				yield return null;			}			m_IsInTransition = false;		}    }}
 |