private void HandleFireDown()
    {
        switch (CurFireMode)
        {
        case FireMode.Chain:
        case FireMode.Rapid: m_shooter.StartFire(); break;

        case FireMode.Single: m_shooter.Fire(); break;

        case FireMode.Timed: m_shooter.FireForSec(2.0f); break;

        case FireMode.ChargeHoldRelease: m_shooter.ChargeReset(); break;

        case FireMode.ChargePress: m_shooter.ChargeToMax(); break;

        case FireMode.ChargeHoldMax:
            if (!m_allowCharging)
            {
                return;
            }
            m_shooter.ChargeReset();
            break;
        }
    }