I'm in a delicate situation where the default hit box is causing problems with my widgets, as my controls are hexagonal and in some cases tesselating, causing overlaps. I know that I can use mesh colliders, but that would mean I'd need a mesh for every size of button I intend on having and that doesn't sound like a fun night out.
Enter NGUI.IHittable interface! (name open to change)
My proposed interface would have a bool IsHit (Vector3); method that provides the hit location in the widget's local coordinates. The bool return would tell NGUI whether the widget was in fact hit or not based on any methodologies the coder decides on, in my case, does it fit in a hexagon of arbitrary size/orientation.
The implementation shouldn't be difficult, the UICamera can collect all behaviors OnEnable / Start / Awake / Refresh / whatever, put them in a Dictionary<Widget, NGUI.IHittable>, when the widget is hit and it has an entry in the dictionary it can first check if the paired NGUI.IHittable.IsHit returns true, if not go to the next possibly hit widget until a widget is in fact fully hit.
Thoughts?