Hit Shapes

Non-rectangular UI regions in s&box

Hit Shapes wraps a shape resolver in a state machine that turns whole-panel mouse events into per-slot OnSlotEnter / OnSlotLeave / OnSlotClick callbacks.

Depends only on Vector2 and MousePanelEvent


Quick start example:
  1. Download the library
  2. Make a screen panel GameObject
  3. Add UI Panel --> Razor Hit Shape Demo
  4. Link camera to the Screen Panel
  5. Hit play

Built-in shapes


 Radial(slots, innerRatio?, outerRatio?)  - Wheel of equal wedges  - 0..slots-1, clockwise from 12 o'clock
RectGrid(cols, rows)  - Uniform grid  - row-major, top-left = 0
Polygon(verts)  - One polygon, unit coords  - always 0 if inside
Polygons(polys)  - Many polygons  - index of first containing polygon
Custom(slotCount, nativeSize, fn)  - Resolver de-scaled to a fixed pixel frame  - whatever you return
CustomRaw(slotCount, fn)  - Resolver receives raw engine-frame coords  - whatever you return
Union(a, b)  - A's slots, then B's offset by A.SlotCount  - A wins on overlap
Intersect(a, b)  - A's slot, only where B also resolves  - A's slot count
Difference(a, b)  - A's slot, where B does NOT resolve  - A's slot count