Files
H3VR-TNH-Quality-of-Life-Im…/Assets/MeatKit/Editor/Utils/EditorVersion.cs
T

82 lines
2.8 KiB
C#

using System;
using System.Collections.Generic;
using System.Linq;
using UnityEditor;
using UnityEngine;
namespace MeatKit
{
public class NativeHookFunctionOffsets
{
public long MonoScriptTransferWrite { get; set; }
public long MonoScriptTransferRead { get; set; }
public long ShutdownManaged { get; set; }
public long StringAssign { get; set; }
}
public class EditorVersion
{
public NativeHookFunctionOffsets FunctionOffsets { get; set; }
private static bool _hasShownPopup = false;
public static bool IsSupportedVersion
{
get
{
bool supported = SupportedVersions.ContainsKey(Application.unityVersion);
if (!supported && !_hasShownPopup)
{
// Show the warning popup about the wrong version if is hasn't come up already.
string validVersion = string.Join(", ", SupportedVersions.Keys.ToArray());
EditorUtility.DisplayDialog("Wrong editor version",
"You are using Unity version " + Application.unityVersion + ", MeatKit requires one of the following: " + validVersion,
"I'll go install that.");
_hasShownPopup = true;
}
return supported;
}
}
public static EditorVersion Current
{
get
{
EditorVersion currentVersion;
if (SupportedVersions.TryGetValue(Application.unityVersion, out currentVersion))
return currentVersion;
throw new NotSupportedException("The current editor version is not in the list of supported versions.");
}
}
private static readonly Dictionary<string, EditorVersion> SupportedVersions = new Dictionary<string, EditorVersion>()
{
{
"5.6.3p4", new EditorVersion
{
FunctionOffsets = new NativeHookFunctionOffsets
{
MonoScriptTransferWrite = 0xE321E0,
MonoScriptTransferRead = 0xE34000,
ShutdownManaged = 0x17542D0,
StringAssign = 0x1480
}
}
},
{
"5.6.7f1", new EditorVersion
{
FunctionOffsets = new NativeHookFunctionOffsets
{
MonoScriptTransferWrite = 0xE39BF0,
MonoScriptTransferRead = 0xE3BA10,
ShutdownManaged = 0x175D2C0,
StringAssign = 0x1480
}
}
},
};
}
}