That sounds reasonable, I do agree. I was going to ask if perhaps functionality for comparisons could be called/checked (i.e. AddFunction/Comparison() ), but I can basically see that as being almost on par with overriding PIT_CheckThing itself. On one hand, that would be quite nice where PIT_CheckThing is a virtual, yet that would probably be a total pain in the ass to deal with.
Even if that doesn't work, I suggest expanding CanCollide with two more bools:
- ActorBlocking - Signifies the actor blocks the caller or not.
- AmBlocking - SIgnifies the caller blocks the actor.
Or something like that.
I have a few cases where I'd like an actor to pass through another, yet the other cannot pass and gets stuck intentionally. A flag to allow this behavior might be needed. +NOUNSTICKING perhaps?