2025-09-24 11:24:38 +05:00

67 lines
5.7 KiB
C#

namespace Fusion.Addons.KCC
{
using UnityEngine;
using Fusion;
[DisallowMultipleComponent]
public sealed unsafe class CallbackLogger : NetworkBehaviour, IAfterSpawned, IBeforeUpdate, IBeforeAllTicks, IBeforeTick, IAfterTick, IAfterAllTicks, IAfterRender, IAfterUpdate, IBeforeCopyPreviousState, IBeforeClientPredictionReset, IAfterClientPredictionReset
{
#if UNITY_EDITOR
private const string PREFIX = "<color=#FFFFFF>";
private const string POSTFIX = "</color>";
#else
private const string PREFIX = "";
private const string POSTFIX = "";
#endif
[SerializeField]
private bool _enableProxySimulation = true;
public void Awake() => KCCUtility.Log(this, null, EKCCLogType.Info, $"{PREFIX}{nameof(Awake)}{POSTFIX}");
public void Start() => KCCUtility.Log(this, null, EKCCLogType.Info, $"{PREFIX}{nameof(Start)}{POSTFIX}");
public void Update() => KCCUtility.Log(this, null, EKCCLogType.Info, $"{PREFIX}{nameof(Update)}{POSTFIX}");
public void LateUpdate() => KCCUtility.Log(this, null, EKCCLogType.Info, $"{PREFIX}{nameof(LateUpdate)}{POSTFIX}");
public override void Spawned()
{
if (HasStateAuthority == true) { name += "|S"; }
if (HasInputAuthority == true) { name += "|I"; }
if (IsProxy == true) { name += "|P"; }
if (IsProxy == true && Runner.GameMode != GameMode.Shared)
{
Runner.SetIsSimulated(Object, _enableProxySimulation);
}
KCCUtility.Log(this, null, EKCCLogType.Info, $"{PREFIX}{nameof(Spawned)}{POSTFIX}", $"Stage={Runner.Stage}", $"IsResimulation={Runner.IsResimulation}", $"IsLastTick={Runner.IsLastTick}", $"HasStateAuthority={HasStateAuthority}", $"HasInputAuthority={HasInputAuthority}");
}
public override void Despawned(NetworkRunner runner, bool hasState)
{
KCCUtility.Log(this, null, EKCCLogType.Info, $"{PREFIX}{nameof(Despawned)}{POSTFIX}", $"Stage={Runner.Stage}", $"IsResimulation={Runner.IsResimulation}", $"IsLastTick={Runner.IsLastTick}", $"hasState={hasState}");
}
public override void FixedUpdateNetwork()
{
KCCUtility.Log(this, null, EKCCLogType.Info, $"{PREFIX}{nameof(FixedUpdateNetwork)}{POSTFIX}", $"Stage={Runner.Stage}", $"IsResimulation={Runner.IsResimulation}", $"IsLastTick={Runner.IsLastTick}");
}
public override void Render()
{
KCCUtility.Log(this, null, EKCCLogType.Info, $"{PREFIX}{nameof(Render)}{POSTFIX}", $"Stage={Runner.Stage}", $"IsResimulation={Runner.IsResimulation}", $"IsLastTick={Runner.IsLastTick}");
}
void IAfterSpawned.AfterSpawned() => KCCUtility.Log(this, null, EKCCLogType.Info, $"{PREFIX}{nameof(IAfterSpawned)}{POSTFIX}", $"Stage={Runner.Stage}", $"IsResimulation={Runner.IsResimulation}", $"IsLastTick={Runner.IsLastTick}");
void IBeforeUpdate.BeforeUpdate() => KCCUtility.Log(this, null, EKCCLogType.Info, $"{PREFIX}{nameof(IBeforeUpdate)}{POSTFIX}", $"Stage={Runner.Stage}", $"IsResimulation={Runner.IsResimulation}", $"IsLastTick={Runner.IsLastTick}");
void IBeforeAllTicks.BeforeAllTicks(bool resimulation, int tickCount) => KCCUtility.Log(this, null, EKCCLogType.Info, $"{PREFIX}{nameof(IBeforeAllTicks)}{POSTFIX}", $"Stage={Runner.Stage}", $"IsResimulation={Runner.IsResimulation}", $"IsLastTick={Runner.IsLastTick}", $"resimulation={resimulation}", $"tickCount={tickCount}");
void IBeforeTick.BeforeTick() => KCCUtility.Log(this, null, EKCCLogType.Info, $"{PREFIX}{nameof(IBeforeTick)}{POSTFIX}", $"Stage={Runner.Stage}", $"IsResimulation={Runner.IsResimulation}", $"IsLastTick={Runner.IsLastTick}");
void IAfterTick.AfterTick() => KCCUtility.Log(this, null, EKCCLogType.Info, $"{PREFIX}{nameof(IAfterTick)}{POSTFIX}", $"Stage={Runner.Stage}", $"IsResimulation={Runner.IsResimulation}", $"IsLastTick={Runner.IsLastTick}");
void IAfterAllTicks.AfterAllTicks(bool resimulation, int tickCount) => KCCUtility.Log(this, null, EKCCLogType.Info, $"{PREFIX}{nameof(IAfterAllTicks)}{POSTFIX}", $"Stage={Runner.Stage}", $"IsResimulation={Runner.IsResimulation}", $"IsLastTick={Runner.IsLastTick}", $"resimulation={resimulation}", $"tickCount={tickCount}");
void IAfterRender.AfterRender() => KCCUtility.Log(this, null, EKCCLogType.Info, $"{PREFIX}{nameof(IAfterRender)}{POSTFIX}", $"Stage={Runner.Stage}", $"IsResimulation={Runner.IsResimulation}", $"IsLastTick={Runner.IsLastTick}");
void IAfterUpdate.AfterUpdate() => KCCUtility.Log(this, null, EKCCLogType.Info, $"{PREFIX}{nameof(IAfterUpdate)}{POSTFIX}", $"Stage={Runner.Stage}", $"IsResimulation={Runner.IsResimulation}", $"IsLastTick={Runner.IsLastTick}");
void IBeforeCopyPreviousState.BeforeCopyPreviousState() => KCCUtility.Log(this, null, EKCCLogType.Info, $"{PREFIX}{nameof(IBeforeCopyPreviousState)}{POSTFIX}", $"Stage={Runner.Stage}", $"IsResimulation={Runner.IsResimulation}", $"IsLastTick={Runner.IsLastTick}");
void IBeforeClientPredictionReset.BeforeClientPredictionReset() => KCCUtility.Log(this, null, EKCCLogType.Info, $"{PREFIX}{nameof(IBeforeClientPredictionReset)}{POSTFIX}", $"Stage={Runner.Stage}", $"IsResimulation={Runner.IsResimulation}", $"IsLastTick={Runner.IsLastTick}", $"LatestServerTick:{Runner.LatestServerTick}");
void IAfterClientPredictionReset.AfterClientPredictionReset() => KCCUtility.Log(this, null, EKCCLogType.Info, $"{PREFIX}{nameof(IAfterClientPredictionReset)}{POSTFIX}", $"Stage={Runner.Stage}", $"IsResimulation={Runner.IsResimulation}", $"IsLastTick={Runner.IsLastTick}", $"LatestServerTick:{Runner.LatestServerTick}");
}
}