TL;DR: Implement custom rendering callbacks in the sprite engine.
Currently, the player ship (along with the shield, if active) is rendered by kobo_gfxengine_t::post_sprite_render(), instead of using the sprite engine. While it's done that way in order to implement full frame rate interpolation of sprite rotation, it has the unintended side effect of placing the player ship on top of any other sprites.
The idea is that bullets and similar, and perhaps most importantly, their impact animations, should be rendered on top of other objects. This is normally achieved through sprite layers, but we need to not bypass the sprite engine for that to work.
TL;DR: Implement custom rendering callbacks in the sprite engine.
Currently, the player ship (along with the shield, if active) is rendered by kobo_gfxengine_t::post_sprite_render(), instead of using the sprite engine. While it's done that way in order to implement full frame rate interpolation of sprite rotation, it has the unintended side effect of placing the player ship on top of any other sprites.
The idea is that bullets and similar, and perhaps most importantly, their impact animations, should be rendered on top of other objects. This is normally achieved through sprite layers, but we need to not bypass the sprite engine for that to work.