private void SpawnProjectileInternal(Bullet bullet, bool allowSplash, bool preventProjectileView)
 {
     if (allowSplash && bullet.ProjectileType.SplashRadius > 0)
     {
         bullet.AddSplash(bullet.ProjectileType);
     }
     if (bullet.ProjectileType.IsBeam)
     {
         if (this.ImpactBeamTargets(bullet))
         {
             int maxSpeed = bullet.ProjectileType.MaxSpeed;
             if (maxSpeed > 0)
             {
                 uint num = (uint)(1000 / maxSpeed);
                 if (num != 0u)
                 {
                     Service.Get <SimTimerManager>().CreateSimTimer(num, true, new TimerDelegate(this.OnBeamProjectileImpact), bullet);
                 }
             }
         }
     }
     else
     {
         Service.Get <SimTimerManager>().CreateSimTimer(bullet.TravelTime, false, new TimerDelegate(this.OnProjectileImpact), bullet);
     }
     if (!preventProjectileView)
     {
         Service.Get <ProjectileViewManager>().SpawnProjectile(bullet);
     }
 }