Ideally I want to avoid this as it means having to check the overlap/hit for several different child classes and then cast to the correct child class to run the events.
I ended up changing the custom events to functions and was then able to override the functions in the child class.