Hej Ville,
Well, basically a component that triggers the OnCollision check to occur again by request. It's probably most convenient if the Component itself has a OnCollision Event then just like Model / AppState and such have.
Going off-topic now
However, this is more or less just a work-around of having a fixed order pipeline. In order to make a behavior system truly flexible, I think a Priority property on most Components will be necessary. Unfortunately this kind of collides with the current design principle of ZGE .. let me explain.
For example, let's say you have a Model that you want updated before the other, right now you just Spawn it before the other .. but you run into problems when you start Spawning dynamically.
Now imagine this, let's say you have a couple of Models of which you want certain Components to execute before the rest. Right now there's no way to do so apart from using the OnCollision Event as the first priority slot, and OnUpdate as second. GM ( which also has a fixed pipeline ) for example solves this by having 3 States ( Begin Step, Step & End Step ), which still can be far too limiting. If you'd be able to set the priority on a Group or other individual Components, you have much greater control over the order things happen in ( obviously this does requires the Scene / State Manager to sort Objects before starting a execution pass ).
Perhaps technically you'd want to have a PriorityLevels property on App, so the number of levels is pre-defined. But even then it shouldn't be too complicated to comprehend.
Problem is ( here it comes ) that the moment on which a Model's Position, Rotation etc. are applied is currently fixed too ( after OnUpdate ). This is exactly the reason I had to ditch them .. And as long as there are any items fixed in the pipeline, a priority approach will always be crippled.
Anyway, this is a design issue .. plus I have no doubt that with a fixed pipeline you can have great flexibility as well.
Sorry, had to get that off my chest

K