Vector4 CalcGlobalColor() { Vector4 res = Vector4.zero; int numFlashbangs = m_Flashbangs.Count; float currTime = Time.time; for (int idx = numFlashbangs - 1; idx >= 0; idx--) { S_Flashbang curr = m_Flashbangs[idx]; float age = (currTime - curr.m_StartTime); float currI = FlashBangFunc(age, m_FlashbangPeakTime, curr.m_Duration) * curr.m_Intensity; if (age > m_FlashbangDuration) { m_Flashbangs.RemoveAt(idx); continue; } res.x += currI * curr.m_Color.r; res.y += currI * curr.m_Color.g; res.z += currI * curr.m_Color.b; } return(res); }
public void SpawnFlashbang(Color col, float intensity, float duration) { S_Flashbang f = new S_Flashbang(); f.m_Color = col; f.m_Intensity = intensity; f.m_StartTime = Time.time; f.m_Duration = duration; m_Flashbangs.Add(f); }