Practical recipes
Small solutions for common integration tasks.
Last Canvas marker
void OnHit(VorivoxHit hit)
{
marker.anchoredPosition = hit.ToCanvasLocal(playfield);
marker.gameObject.SetActive(true);
}Duplicate shot protection
readonly HashSet<string> processed = new();
void OnHit(VorivoxHit hit)
{
if (!processed.Add(hit.ShotId)) return;
ResolveShot(hit);
}Non-blocking countdown
async Task BeginAsync(VorivoxSessionStart start)
{
await countdown.ShowAsync(start.CountdownMs);
round.EnableInput();
}Focus loss
Wait for session.pause with reason focus_lost; freeze timers and show a neutral system overlay.
Result lighting
await sdk.TriggerLedAsync(points > 0 ? "HIT" : "MISS");Check sdk.Capabilities.LedOverride before advanced override modes.