public void OnDrawRuntimeGizmos(RuntimeGizmoDrawer drawer) { drawer.color = LeapColor.cyan; var rDelta = 0.008f; var dt = Time.deltaTime; FailedPaintGizmo gizmo; for (int i = 0; i < _failedPaintGizmos.Count; i++) { gizmo = _failedPaintGizmos[i]; gizmo.t += dt; if (gizmo.t > gizmo.duration) { gizmo.t = gizmo.duration; gizmo.isFinished = true; } var progress = _curve.Evaluate(gizmo.t / gizmo.duration); drawer.color = drawer.color.WithAlpha(Mathf.Sin(progress * Mathf.PI)); for (int j = 0; j < 3; j++) { var r = Mathf.Lerp(gizmo.initRingSize, gizmo.finalRingSize, progress) - rDelta * j; if (r > 0f) { drawer.DrawWireArc(gizmo.position, gizmo.normal, gizmo.normal.Perpendicular(), r, 1f, 32); } } drawer.DrawDashedLine(gizmo.position, gizmo.colliderPos, segmentsPerMeter: 128); _failedPaintGizmos[i] = gizmo; } _failedPaintGizmos.RemoveAll((g) => g.isFinished); }