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 System.Collections.Generic;
|
||||
using System.Diagnostics;
|
||||
using System.Reflection;
|
||||
using UnityEngine.Profiling;
|
||||
|
||||
@ -14,19 +13,28 @@ namespace NewHorizons.Patches;
|
||||
[HarmonyPatch]
|
||||
public static class ProfilerPatch
|
||||
{
|
||||
private static string FriendlyName(this MethodBase @this) => $"{@this.DeclaringType.Name}.{@this.Name}";
|
||||
|
||||
[HarmonyTargetMethods]
|
||||
public static IEnumerable<MethodBase> TargetMethods()
|
||||
{
|
||||
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 (method.IsGenericMethod) continue;
|
||||
if (!(
|
||||
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;
|
||||
}
|
||||
}
|
||||
@ -35,7 +43,7 @@ public static class ProfilerPatch
|
||||
[HarmonyPrefix]
|
||||
public static void Prefix(MethodBase __originalMethod /*, out Stopwatch __state*/)
|
||||
{
|
||||
Profiler.BeginSample($"{__originalMethod.DeclaringType.Name}.{__originalMethod.Name}");
|
||||
Profiler.BeginSample(__originalMethod.FriendlyName());
|
||||
|
||||
// __state = new Stopwatch();
|
||||
// __state.Start();
|
||||
@ -47,6 +55,6 @@ public static class ProfilerPatch
|
||||
Profiler.EndSample();
|
||||
|
||||
// __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