Чертоги: фризы - область у тела сжата; замер фризов в лог
В чертогах игра держала две полные области мира (у чертогов и у тела). Тело теперь сжато до 3 участков, как у змеи и одержимого; при выходе возвращается. FreezeProbe пишет каждый кадр дольше 100 мс: длительность, сборки мусора за кадр, режим, число наблюдателей областей, куча. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5.5
parent
4f742069ec
commit
197df1d307
@@ -829,6 +829,7 @@ namespace NecromancerTome
|
||||
// Дальность как у змеи: при радиусе 2 игра не строила коллизии участка (тест 03.10:
|
||||
// «чертоги не построились вовремя» - ждали коллизий 30 с).
|
||||
_observer = GameManager.Instance.AddChunkObserver(center, true, GameUtils.GetViewDistance(), -1);
|
||||
ShrinkBody(_player);
|
||||
_stage = Stage.Loading;
|
||||
_deadline = Time.time + 30f;
|
||||
Active = true;
|
||||
@@ -868,6 +869,27 @@ namespace NecromancerTome
|
||||
GameManager.Instance.RemoveChunkObserver(_observer);
|
||||
}
|
||||
_observer = null;
|
||||
EntityPlayerLocal p = GameManager.Instance?.World?.GetPrimaryPlayer();
|
||||
if (_bodyViewDim > 0 && p?.ChunkObserver != null)
|
||||
{
|
||||
p.ChunkObserver.viewDim = _bodyViewDim;
|
||||
}
|
||||
_bodyViewDim = -1;
|
||||
}
|
||||
|
||||
/// <summary>Область мира у тела до входа (-1 - не сжата). Фризы в чертогах (жалоба 10.10): игра держала две
|
||||
/// полные области - у чертогов на краю карты и у лежащего тела; подгрузка и пересборка участков - мусор
|
||||
/// и паузы его сборки. Тело сжимаем до Possession.BodyViewDim, как у змеи и одержимого.</summary>
|
||||
static int _bodyViewDim = -1;
|
||||
|
||||
static void ShrinkBody(EntityPlayerLocal _player)
|
||||
{
|
||||
ChunkManager.ChunkObserver body = _player?.ChunkObserver;
|
||||
if (body != null && _bodyViewDim < 0 && body.viewDim > Possession.BodyViewDim)
|
||||
{
|
||||
_bodyViewDim = body.viewDim;
|
||||
body.viewDim = Possession.BodyViewDim;
|
||||
}
|
||||
}
|
||||
|
||||
static void OnUnityUpdate(ref ModEvents.SUnityUpdateData _data)
|
||||
@@ -880,6 +902,7 @@ namespace NecromancerTome
|
||||
_observer = null;
|
||||
MindControl.End(null);
|
||||
_slotsFor = null;
|
||||
_bodyViewDim = -1;
|
||||
return;
|
||||
}
|
||||
EntityPlayerLocal player = world.GetPrimaryPlayer();
|
||||
|
||||
Reference in New Issue
Block a user