addBulletsFromPlayer :: ClientKey -> WorldS ()
addBulletsFromPlayer key = getPlayer key >>= \plyM -> case plyM of
  Nothing  -> return ()
  Just ply -> do
    let vehicleTrans = rotate $ ply ^. pVehicle . vOrientation - (pi / 2)
    mapM_
      (\w -> do
        let bulletPos = (ply ^. pVehicle . vPosition) L.^+^ downVectorDim
              (vehicleTrans L.!* upVectorDim (w ^. wPosition))
            bulletAngle = ply ^. pVehicle . vOrientation + w ^. wOrientation
            bullet      = (w ^. wBullet) { _bPosition    = bulletPos
                                         , _bOrientation = bulletAngle
                                         , _bTeam        = ply ^. pTeam
                                         }
        addBullet bullet
      )
      (ply ^. pVehicle . vWeapons)
addBulletsFromPlayer :: ClientKey -> WorldS ()
addBulletsFromPlayer key = getPlayer key >>= \plyM -> case plyM of
  Nothing  -> return ()
  Just ply -> do
    let vehicleTrans = rotate $ ply ^. pVehicle . vOrientation - (pi / 2)
    mapM_
      (\w -> do
        let bulletPos = (ply ^. pVehicle . vPosition) L.^+^ downVectorDim
              (vehicleTrans L.!* upVectorDim (w ^. wPosition))
            bulletAngle = ply ^. pVehicle . vOrientation + w ^. wOrientation
            bullet      = (w ^. wBullet) { _bPosition    = bulletPos
                                         , _bOrientation = bulletAngle
                                         , _bTeam        = ply ^. pTeam
                                         }
        addBullet bullet
      )
      (ply ^. pVehicle . vWeapons)
addBulletsFromPlayer key = getPlayer key >>= \plyM -> case plyM of
  Nothing  -> return ()
  Just ply -> do
    let vehicleTrans = rotate $ ply ^. pVehicle . vOrientation - (pi / 2)
    mapM_
      (\w -> do
        let bulletPos = (ply ^. pVehicle . vPosition) L.^+^ downVectorDim
              (vehicleTrans L.!* upVectorDim (w ^. wPosition))
            bulletAngle = ply ^. pVehicle . vOrientation + w ^. wOrientation
            bullet      = (w ^. wBullet) { _bPosition    = bulletPos
                                         , _bOrientation = bulletAngle
                                         , _bTeam        = ply ^. pTeam
                                         }
        addBullet bullet
      )
      (ply ^. pVehicle . vWeapons)