57 lines
1.8 KiB
C#
57 lines
1.8 KiB
C#
|
|
|||
|
using System;
|
|||
|
using System.Collections;
|
|||
|
using System.Collections.Generic;
|
|||
|
using System.Reflection;
|
|||
|
using UnityEngine;
|
|||
|
using UnityEditor;
|
|||
|
using System.Runtime.CompilerServices;
|
|||
|
using MonoHook;
|
|||
|
using HybridCLR.Editor.BuildProcessors;
|
|||
|
using System.IO;
|
|||
|
|
|||
|
namespace HybridCLR.MonoHook
|
|||
|
{
|
|||
|
#if UNITY_2022
|
|||
|
[InitializeOnLoad]
|
|||
|
public class GetIl2CppFolderHook
|
|||
|
{
|
|||
|
private static MethodHook _hook;
|
|||
|
|
|||
|
static GetIl2CppFolderHook()
|
|||
|
{
|
|||
|
if (_hook == null)
|
|||
|
{
|
|||
|
Type type = typeof(UnityEditor.EditorApplication).Assembly.GetType("UnityEditorInternal.IL2CPPUtils");
|
|||
|
MethodInfo miTarget = type.GetMethod("GetIl2CppFolder", BindingFlags.Static | BindingFlags.NonPublic | BindingFlags.Public, null,
|
|||
|
new Type[] { typeof(bool).MakeByRefType() }, null);
|
|||
|
|
|||
|
MethodInfo miReplacement = new StripAssembliesDel(OverrideMethod).Method;
|
|||
|
MethodInfo miProxy = new StripAssembliesDel(PlaceHolderMethod).Method;
|
|||
|
|
|||
|
_hook = new MethodHook(miTarget, miReplacement, miProxy);
|
|||
|
_hook.Install();
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
private delegate string StripAssembliesDel(out bool isDevelopmentLocation);
|
|||
|
|
|||
|
private static string OverrideMethod(out bool isDevelopmentLocation)
|
|||
|
{
|
|||
|
//Debug.Log("[GetIl2CppFolderHook] OverrideMethod");
|
|||
|
string result = PlaceHolderMethod(out isDevelopmentLocation);
|
|||
|
isDevelopmentLocation = false;
|
|||
|
return result;
|
|||
|
}
|
|||
|
|
|||
|
[MethodImpl(MethodImplOptions.NoOptimization)]
|
|||
|
private static string PlaceHolderMethod(out bool isDevelopmentLocation)
|
|||
|
{
|
|||
|
Debug.LogError("[GetIl2CppFolderHook] PlaceHolderMethod");
|
|||
|
isDevelopmentLocation = false;
|
|||
|
return null;
|
|||
|
}
|
|||
|
}
|
|||
|
#endif
|
|||
|
}
|