There are never 6 bullets shot at once, but at most 3 (namely when the player collects the pickup twice). This is explained:
You may notice that the player's Eagle plane shoots two bullets at once, which is the result of a previously collected fire spread pickup.
No, you misunderstood me (or I wasn't clear enough) :
The fact that you added that code into World::buildScene() [without telling the reader] :
Category::Type category = (i == Air) ? Category::SceneAirLayer : Category::None;
Changes the behavior for bullet shot. In fact it solves a problem. Indeed, before that line was added every SceneNode had a category
Category::Scene. That is the category for the
Projectile firing Command too.
But : or you didn't mention that change in the book or I totally missed it, so every SceneNode still has the
Category::Scene category in reader code (SceneNodes that have not overloaded the getCategory() method, of course).
The result is that the bullet firing event is "catched" by 5 or 6 SceneNodes that are in
Scene category. Each of them will action the command, giving a different "parent" node to the bullet.
Concerning the signature change for update() method, you didn't mention it in the book but it was clear (for me, at least). Perhaps a fast mention can help some people, dunno.