From 807cc6895af96123d9ecec8c5596d16b2408e6e7 Mon Sep 17 00:00:00 2001 From: Alvin Meng Date: Sat, 27 Jul 2024 22:19:02 -0400 Subject: [PATCH] run the MMPostLoad callback earlier --- Source/Shabby.cs | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/Source/Shabby.cs b/Source/Shabby.cs index f26f100..bdff0c0 100644 --- a/Source/Shabby.cs +++ b/Source/Shabby.cs @@ -90,7 +90,7 @@ public static Shader FindShader(string shaderName) return shader; } - public static void ModuleManagerPostLoad() + public static void MMPostLoadCallback() { var configNodes = GameDatabase.Instance.GetConfigNodes("SHABBY"); foreach (var shabbyNode in configNodes) { @@ -123,6 +123,13 @@ void Awake() harmony.PatchAll(Assembly.GetExecutingAssembly()); Debug.Log($"[Shabby] hooked"); + + // Register as an explicit MM callback such that it is run before all reflected + // callbacks (as used by most mods), which may wish to access the MaterialDef library. + var addPostPatchCB = AccessTools.Method("ModuleManager.MMPatchLoader:AddPostPatchCallback"); + var delegateType = addPostPatchCB.GetParameters()[0].ParameterType; + var callbackDelegate = Delegate.CreateDelegate(delegateType, typeof(Shabby), nameof(MMPostLoadCallback)); + addPostPatchCB.Invoke(null, new object[] { callbackDelegate }); } }