NetworkReview.Performance.cs
using Sandbox;
using System;
namespace PaintballBaddies;

// Opt-in scripted load, never part of ordinary player/AI control.
public sealed partial class NetworkReview
{
    private bool soak;
    private double perfStart,perfPrevious,perfSum,perfMax,soakNextShot,soakNextRecovery;
    private int perfFrames,perfSlow33,perfSlow50,perfSlow100;
    private readonly int[] perfBins=new int[1001];
    private Vector3 perfLastPosition;
    private double perfTravel;
    private void BeginPerformance()
    {
        perfStart=perfPrevious=RealTime.NowDouble;perfSum=perfMax=perfTravel=0;
        perfFrames=perfSlow33=perfSlow50=perfSlow100=0;Array.Clear(perfBins);
        perfLastPosition=MultiplayerSession.LocalPlayer(Scene)?.WorldPosition ?? Vector3.Zero;
    }
    private void UpdatePerformance()
    {
        if(!soak)return;
        double now=RealTime.NowDouble,ms=(now-perfPrevious)*1000;perfPrevious=now;
        if(now-perfStart>5)
        {
            perfFrames++;perfSum+=ms;perfMax=Math.Max(perfMax,ms);
            perfBins[Math.Clamp((int)(ms*4),0,1000)]++;
            if(ms>33.333)perfSlow33++;if(ms>50)perfSlow50++;if(ms>100)perfSlow100++;
        }
        var player=MultiplayerSession.LocalPlayer(Scene);
        if(!player.IsValid())return;
        float travel=(player.WorldPosition-perfLastPosition).Length;
        if(travel<150)perfTravel+=travel;
        perfLastPosition=player.WorldPosition;
        if(MultiplayerSession.Find(Scene)?.InRound!=true)return;
        var contact=player.Components.Get<CloseCombat>();
        if(contact?.Incapacitated==true)
        {
            if(contact.Downed && contact.ReadyToRecover && now>=soakNextRecovery)
            {soakNextRecovery=now+.16;contact.RegisterRecoveryPress();}
            return;
        }
        var targets=Scene.GetAllComponents<PaintballCombatant>().Where(x=>x.GameObject!=player.GameObject
            && (x.Components.Get<NetworkPawn>().IsValid() || x.Components.Get<NetworkBot>().IsValid())).OrderBy(x=>x.Team).ToArray();
        if(targets.Length==0)return;
        var target=targets[(int)(now/4)%targets.Length];
        var targetPoint=target.EyePosition-Vector3.Up*12;
        player.EyeAngles=Rotation.LookAt(targetPoint-player.EyePosition).Angles();
        var marker=player.Components.Get<PaintballMarker>();marker.ReviewAimOverride=true;
        if(now<soakNextShot)return;
        soakNextShot=now+.32;
        marker.FireAt(targetPoint);
    }
    private double Percentile(double p)
    {
        if(perfFrames==0)return 0;
        int wanted=(int)Math.Ceiling(perfFrames*p),total=0;
        for(int i=0;i<perfBins.Length;i++){total+=perfBins[i];if(total>=wanted)return (i+1)*.25;}
        return perfMax;
    }
    private object PerformanceReport()=>new {Active=soak,Seconds=soak ? RealTime.NowDouble-perfStart : 0,Frames=perfFrames,
        MeanMs=perfFrames>0 ? perfSum/perfFrames : 0,P95Ms=Percentile(.95),P99Ms=Percentile(.99),MaxMs=perfMax,
        Over33Ms=perfSlow33,Over50Ms=perfSlow50,Over100Ms=perfSlow100,Travel=perfTravel,
        Width=Screen.Width,Height=Screen.Height,Renderers=Scene.GetAllComponents<ModelRenderer>().Count()};
}