Убран замер фризов FreezeProbe; закоммичены звук, пирамида и necroboneshiv
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5.5
parent
0c1235b079
commit
0d55f895de
@@ -1,46 +0,0 @@
|
||||
using UnityEngine;
|
||||
|
||||
namespace NecromancerTome
|
||||
{
|
||||
/// <summary>
|
||||
/// Замер фризов (жалоба 10.10: «в чертогах лагает... это были фризы»). Средний FPS из строк игры «Time: ... FPS»
|
||||
/// их не показывает - он за минуту. Здесь каждый кадр дольше Threshold пишется в лог: длительность, сколько
|
||||
/// сборок мусора прошло за этот кадр (GC поколения 0 - если растёт, фриз от сборки мусора: мод или игра много
|
||||
/// выделяют), режим мода (чертоги/змея/одержимость) и сколько областей мира загружено.
|
||||
/// Строки: «[NecromancerTome] FreezeProbe: ...». Ничего не хранит, кроме пары чисел.
|
||||
/// </summary>
|
||||
public static class FreezeProbe
|
||||
{
|
||||
public const float Threshold = 0.1f;
|
||||
static int _gc = -1;
|
||||
static float _skipUntil;
|
||||
|
||||
public static void Init()
|
||||
{
|
||||
ModEvents.UnityUpdate.RegisterHandler(OnUnityUpdate);
|
||||
}
|
||||
|
||||
static void OnUnityUpdate(ref ModEvents.SUnityUpdateData _data)
|
||||
{
|
||||
int gc = System.GC.CollectionCount(0);
|
||||
World world = GameManager.Instance?.World;
|
||||
if (world == null || world.GetPrimaryPlayer() == null)
|
||||
{
|
||||
_gc = gc;
|
||||
_skipUntil = Time.unscaledTime + 20f; // загрузка мира - фризы ожидаемы
|
||||
return;
|
||||
}
|
||||
float dt = Time.unscaledDeltaTime;
|
||||
int dgc = _gc < 0 ? 0 : gc - _gc;
|
||||
_gc = gc;
|
||||
if (dt < Threshold || Time.unscaledTime < _skipUntil || GameManager.Instance.IsPaused())
|
||||
{
|
||||
return;
|
||||
}
|
||||
string mode = MindPalace.Active ? "чертоги" : SnakeMode.Active ? "змея" : Possession.Active ? "одержимость" : "тело";
|
||||
int obs = GameManager.Instance.World?.m_ChunkManager?.m_ObservedEntities?.Count ?? -1;
|
||||
Debug.Log("[NecromancerTome] FreezeProbe: кадр " + Mathf.RoundToInt(dt * 1000f) + " мс, сборок мусора +" + dgc +
|
||||
", режим " + mode + ", наблюдателей областей " + obs + ", куча " + (System.GC.GetTotalMemory(false) >> 20) + " МБ");
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -66,7 +66,6 @@ namespace NecromancerTome
|
||||
NecroMailbox.Init();
|
||||
Possession.Init();
|
||||
BloodTide.Init();
|
||||
FreezeProbe.Init();
|
||||
RemainsDecay.Init();
|
||||
// PyramidWardPatch.cs's TEFeaturePyramidWard needs no Init() call - it's discovered
|
||||
// automatically by the engine's own TileEntityCompositeData reflection scan (see that
|
||||
|
||||
Reference in New Issue
Block a user