One other thing that would be possible is to make explosions cast shadows. I specifically made the actual shadow logic separate from the DynamicShadowVolume stuff, so it's possible to cast shadows without a volume involved. Is there anything like SpawnNotify in UT2003? I was thinking I could watch for the explosion effect to be created and add a shadow caster for them and appropriate shadow projectors for visible actors? what's the "right way" to do this?
What you could do, although it would probably mean more work, is to spawn your own type of explosion emitter. The explosion emitter would detect for actors around a certain radius, the actors detected in the radius check would then have the shadow code applied to them. However the offset is that it doesn't check for any actors during the time of explosion (since it is probably only the best thing to run the radius check once).
In my game, with source lighting I actually cut up my maps into volumes. The volumes know exactly what exactly is in there space, thus, any new actors entering the space could be stored in variables (an array is probably the best thing to do) and sorted between what is a light source and what is a actor that receives a shadow.
Running through the list, each actor could then have the shadow logic applied to them.
But this would be slow and it works well in my game since it's a rather slow paced game, and the maps are always inside a building. Thus, when you enter a room, the door behind you closes and when you exit the room the door closes again. Think of it like those console games in which the doors would always close again from room to room... that might change thou.