private void Awake() { float shotDelay = Data.RPMToInterval; if (Data.RPMToInterval == -1) { shotDelay = 0; } _shootDelay = new Timer(shotDelay, () => { IsShooting = false; _shootDelay.Stop(); _recoilResetDelay.Start(); }); _reloadDelay = new Timer(Data.ReloadTime, () => { ReloadWeapon(); _reloadDelay.Stop(); }); _kickTimer = new Timer(Data.KickTime, null); _recoilResetDelay = new Timer(Data.RecoilRetentionTime, () => { _recoilResetDelay.Stop(); ShootFinished(); }); WeaponRecoil.Initialize(this); }