Hit Shapes
by
xazware
| Summary | non-rectangular UI regions in s&box |
|---|---|
| Description |
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: • Download the library • Make a screen panel GameObject • Add UI Panel --> Razor Hit Shape Demo • Link camera to the Screen Panel • 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 countHit 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:
• Download the library
• Make a screen panel GameObject
• Add UI Panel --> Razor Hit Shape Demo
• Link camera to the Screen Panel
• 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
|
| Votes | 👍2 👎0 ❤️3 |
| Error Rate | 0% |
| Data | {} |
Loading history…