#if FUSION_PROFILER_INTEGRATION using Unity.Profiling; using UnityEngine; public static class FusionProfiler { [RuntimeInitializeOnLoadMethod] static void Init() { Fusion.EngineProfiler.InterpolationOffsetCallback = f => InterpolationOffset.Sample(f); Fusion.EngineProfiler.InterpolationTimeScaleCallback = f => InterpolationTimeScale.Sample(f); Fusion.EngineProfiler.InterpolationMultiplierCallback = f => InterpolationMultiplier.Sample(f); Fusion.EngineProfiler.InterpolationUncertaintyCallback = f => InterpolationUncertainty.Sample(f); Fusion.EngineProfiler.ResimulationsCallback = i => Resimulations.Sample(i); Fusion.EngineProfiler.WorldSnapshotSizeCallback = i => WorldSnapshotSize.Sample(i); Fusion.EngineProfiler.RoundTripTimeCallback = f => RoundTripTime.Sample(f); Fusion.EngineProfiler.InputSizeCallback = i => InputSize.Sample(i); Fusion.EngineProfiler.InputQueueCallback = i => InputQueue.Sample(i); Fusion.EngineProfiler.RpcInCallback = i => RpcIn.Value += i; Fusion.EngineProfiler.RpcOutCallback = i => RpcOut.Value += i; Fusion.EngineProfiler.SimualtionTimeScaleCallback = f => SimulationTimeScale.Sample(f); Fusion.EngineProfiler.InputOffsetCallback = f => InputOffset.Sample(f); Fusion.EngineProfiler.InputOffsetDeviationCallback = f => InputOffsetDeviation.Sample(f); Fusion.EngineProfiler.InputRecvDeltaCallback = f => InputRecvDelta.Sample(f); Fusion.EngineProfiler.InputRecvDeltaDeviationCallback = f => InputRecvDeltaDeviation.Sample(f); } public static readonly ProfilerCategory Category = ProfilerCategory.Scripts; public static readonly ProfilerCounter InterpolationOffset = new ProfilerCounter(Category, "Interp Offset", ProfilerMarkerDataUnit.Count); public static readonly ProfilerCounter InterpolationTimeScale = new ProfilerCounter(Category, "Interp Time Scale", ProfilerMarkerDataUnit.Count); public static readonly ProfilerCounter InterpolationMultiplier = new ProfilerCounter(Category, "Interp Multiplier", ProfilerMarkerDataUnit.Count); public static readonly ProfilerCounter InterpolationUncertainty = new ProfilerCounter(Category, "Interp Uncertainty", ProfilerMarkerDataUnit.Undefined); public static readonly ProfilerCounter InputSize = new ProfilerCounter(Category, "Client Input Size", ProfilerMarkerDataUnit.Bytes); public static readonly ProfilerCounter InputQueue = new ProfilerCounter(Category, "Client Input Queue", ProfilerMarkerDataUnit.Count); public static readonly ProfilerCounter WorldSnapshotSize = new ProfilerCounter(Category, "Client Snapshot Size", ProfilerMarkerDataUnit.Bytes); public static readonly ProfilerCounter Resimulations = new ProfilerCounter(Category, "Client Resims", ProfilerMarkerDataUnit.Count); public static readonly ProfilerCounter RoundTripTime = new ProfilerCounter(Category, "Client RTT", ProfilerMarkerDataUnit.Count); public static readonly ProfilerCounterValue RpcIn = new ProfilerCounterValue(Category, "RPCs In", ProfilerMarkerDataUnit.Count, ProfilerCounterOptions.FlushOnEndOfFrame | ProfilerCounterOptions.ResetToZeroOnFlush); public static readonly ProfilerCounterValue RpcOut = new ProfilerCounterValue(Category, "RPCs Out", ProfilerMarkerDataUnit.Count, ProfilerCounterOptions.FlushOnEndOfFrame | ProfilerCounterOptions.ResetToZeroOnFlush); public static readonly ProfilerCounter SimulationTimeScale = new ProfilerCounter(Category, "Simulation Time Scale", ProfilerMarkerDataUnit.Count); public static readonly ProfilerCounter InputOffset = new ProfilerCounter(Category, "Input Offset", ProfilerMarkerDataUnit.Count); public static readonly ProfilerCounter InputOffsetDeviation = new ProfilerCounter(Category, "Input Offset Dev", ProfilerMarkerDataUnit.Count); public static readonly ProfilerCounter InputRecvDelta = new ProfilerCounter(Category, "Input Recv Delta", ProfilerMarkerDataUnit.Count); public static readonly ProfilerCounter InputRecvDeltaDeviation = new ProfilerCounter(Category, "Input Recv Delta Dev", ProfilerMarkerDataUnit.Count); } #endif