mirror of
https://github.com/Outer-Wilds-New-Horizons/new-horizons.git
synced 2025-12-11 20:15:44 +01:00
match more methods
This commit is contained in:
parent
f5ac2fd920
commit
68c969493f
@ -2,7 +2,6 @@
|
|||||||
|
|
||||||
using HarmonyLib;
|
using HarmonyLib;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Diagnostics;
|
|
||||||
using System.Reflection;
|
using System.Reflection;
|
||||||
using UnityEngine.Profiling;
|
using UnityEngine.Profiling;
|
||||||
|
|
||||||
@ -14,39 +13,48 @@ namespace NewHorizons.Patches;
|
|||||||
[HarmonyPatch]
|
[HarmonyPatch]
|
||||||
public static class ProfilerPatch
|
public static class ProfilerPatch
|
||||||
{
|
{
|
||||||
|
private static string FriendlyName(this MethodBase @this) => $"{@this.DeclaringType.Name}.{@this.Name}";
|
||||||
|
|
||||||
[HarmonyTargetMethods]
|
[HarmonyTargetMethods]
|
||||||
public static IEnumerable<MethodBase> TargetMethods()
|
public static IEnumerable<MethodBase> TargetMethods()
|
||||||
{
|
{
|
||||||
foreach (var type in Assembly.GetExecutingAssembly().GetTypes())
|
foreach (var type in Assembly.GetExecutingAssembly().GetTypes())
|
||||||
{
|
{
|
||||||
if (!type.Name.EndsWith("Builder")) continue;
|
// if (!type.Name.EndsWith("Builder")) continue;
|
||||||
|
// if (!(type.FullName.Contains("Builder") || type.FullName.Contains("Utility"))) continue;
|
||||||
|
|
||||||
foreach (var method in type.GetRuntimeMethods())
|
foreach (var method in type.GetMethods(BindingFlags.Instance | BindingFlags.Static | BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.DeclaredOnly))
|
||||||
{
|
{
|
||||||
if (!(method.Name.StartsWith("Make") || method.Name.StartsWith("Init"))) continue;
|
if (!(
|
||||||
if (method.IsGenericMethod) continue;
|
method.Name.Contains("Make") ||
|
||||||
|
method.Name.Contains("Init") ||
|
||||||
|
method.Name.Contains("Find") ||
|
||||||
|
method.Name.Contains("OnSceneLoaded")
|
||||||
|
)) continue;
|
||||||
|
|
||||||
Main.Instance.ModHelper.Console.WriteLine($"[profiler] profiling {method.DeclaringType.Name}.{method.Name}");
|
if (method.ContainsGenericParameters) continue;
|
||||||
|
|
||||||
|
Main.Instance.ModHelper.Console.WriteLine($"[profiler] profiling {method.FriendlyName()}");
|
||||||
yield return method;
|
yield return method;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
[HarmonyPrefix]
|
[HarmonyPrefix]
|
||||||
public static void Prefix(MethodBase __originalMethod/*, out Stopwatch __state*/)
|
public static void Prefix(MethodBase __originalMethod /*, out Stopwatch __state*/)
|
||||||
{
|
{
|
||||||
Profiler.BeginSample($"{__originalMethod.DeclaringType.Name}.{__originalMethod.Name}");
|
Profiler.BeginSample(__originalMethod.FriendlyName());
|
||||||
|
|
||||||
// __state = new Stopwatch();
|
// __state = new Stopwatch();
|
||||||
// __state.Start();
|
// __state.Start();
|
||||||
}
|
}
|
||||||
|
|
||||||
[HarmonyPostfix]
|
[HarmonyPostfix]
|
||||||
public static void Postfix(/*MethodBase __originalMethod, Stopwatch __state*/)
|
public static void Postfix( /*MethodBase __originalMethod, Stopwatch __state*/)
|
||||||
{
|
{
|
||||||
Profiler.EndSample();
|
Profiler.EndSample();
|
||||||
|
|
||||||
// __state.Stop();
|
// __state.Stop();
|
||||||
// Main.Instance.ModHelper.Console.WriteLine($"[profiler] {__originalMethod.DeclaringType.Name}.{__originalMethod.Name} took {__state.Elapsed.TotalMilliseconds:f1} ms");
|
// Main.Instance.ModHelper.Console.WriteLine($"[profiler] {__originalMethod.MethodName()} took {__state.Elapsed.TotalMilliseconds:f1} ms");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user