Решили: оверлей Scene view считает свою модель только в EventType.Repaint, а тяжёлый обход рига держит в кэше на 0.5 с; точки при этом берутся из живых трансформов при каждой отрисовке.

Почему: SceneView.duringSceneGui вызывается на КАЖДОЕ событие вьюпорта, включая mouseMove. Оверлей якорей делал на каждом вызове полный обход рига — поиск по путям всех шестнадцати суставов плюс обход их поддеревьев, — и в prefab stage это ощущалось рукой как залипание редактора.

Сказано: «У меня БЕЗУМНО лагает в этом префабе. Это из-за гизмо и вечных просчетов?» (03.08.2026, сессия d19f7828). Да, из-за них.

Грабли:

  • Кэшировать РЕЗУЛЬТАТ целиком нельзя: тогда перетаскивание спрайта отображалось бы с задержкой в полсекунды, а оверлей существует именно ради ответа «куда я тащу это прямо сейчас». Кэш держит состав (какой кусок к какому суставу), позиции и расхождение считаются на лету — они дёшевы.
  • Ссылки в кэше переживают закрытие стейджа мёртвыми: проверка Joint == null || Visual == null обязательна, иначе первый же кадр после закрытия сыплет MissingReferenceException.
  • Спрайты рига попали в Sprite Atlas, поэтому sprite.texture.GetPixels() падает на атласной текстуре. Мерить рисунок надо по ИСХОДНОМУ png с диска (File.ReadAllBytes + LoadImage), не трогая настройки импорта.

Владелец правды: RigAnchorOverlay.cs.