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);
    }