Compare commits

...

4 Commits
3.1.1 ... 3.1.4

6 changed files with 39 additions and 30 deletions

View File

@ -16,7 +16,7 @@ namespace UnityExplorer
public class ExplorerCore
{
public const string NAME = "UnityExplorer";
public const string VERSION = "3.1.1";
public const string VERSION = "3.1.4";
public const string AUTHOR = "Sinai";
public const string GUID = "com.sinai.unityexplorer";
public const string EXPLORER_FOLDER = @"Mods\UnityExplorer";

View File

@ -15,6 +15,16 @@ namespace UnityExplorer.Helpers
private static MethodInfo EncodeToPNGMethod => m_encodeToPNGMethod ?? GetEncodeToPNGMethod();
private static MethodInfo m_encodeToPNGMethod;
public static byte[] EncodeToPNGSafe(this Texture2D tex)
{
var method = EncodeToPNGMethod;
if (method.IsStatic)
return (byte[])method.Invoke(null, new object[] { tex });
else
return (byte[])method.Invoke(tex, new object[0]);
}
private static MethodInfo GetEncodeToPNGMethod()
{
if (ReflectionHelpers.GetTypeByName("UnityEngine.ImageConversion") is Type imageConversion)

View File

@ -272,7 +272,14 @@ namespace UnityExplorer.Inspectors.Reflection
if (File.Exists(path))
File.Delete(path);
var data = tex.EncodeToPNG();
if (!tex.IsReadable())
tex = Texture2DHelpers.ForceReadTexture(tex);
#if CPP
byte[] data = tex.EncodeToPNG();
#else
byte[] data = tex.EncodeToPNGSafe();
#endif
File.WriteAllBytes(path, data);
}
});

View File

@ -87,12 +87,6 @@ namespace UnityExplorer.UI
new HarmonyMethod(typeof(ForceUnlockCursor).GetMethod(nameof(Prefix_set_visible))),
true);
#if BIE
#if CPP
// temporarily disabling this patch in BepInEx il2cpp as it's causing a crash in some games.
return;
#endif
#endif
TryPatch(typeof(EventSystem),
"current",
new HarmonyMethod(typeof(ForceUnlockCursor).GetMethod(nameof(Prefix_EventSystem_set_current))),
@ -164,9 +158,22 @@ namespace UnityExplorer.UI
public static void SetEventSystem()
{
// temp disabled for new InputSystem
if (InputManager.CurrentType == InputType.InputSystem)
return;
// Disable current event system object
if (m_lastEventSystem || EventSystem.current)
{
if (!m_lastEventSystem)
m_lastEventSystem = EventSystem.current;
//ExplorerCore.Log("Disabling current event system...");
m_lastEventSystem.enabled = false;
//m_lastEventSystem.gameObject.SetActive(false);
}
// Set to our current system
m_settingEventSystem = true;
EventSystem.current = UIManager.EventSys;
InputManager.ActivateUIModule();
@ -180,6 +187,9 @@ namespace UnityExplorer.UI
if (m_lastEventSystem)
{
m_lastEventSystem.enabled = true;
//m_lastEventSystem.gameObject.SetActive(true);
m_settingEventSystem = true;
EventSystem.current = m_lastEventSystem;
m_lastInputModule?.ActivateModule();

View File

@ -229,6 +229,7 @@ namespace UnityExplorer.UI.Modules
}
m_sceneDropdown.transform.Find("Label").GetComponent<Text>().text = "Any";
m_sceneFilter = SceneFilter.Any;
}
// ~~~~~ UI Callbacks ~~~~~

View File

@ -45,10 +45,6 @@ namespace UnityExplorer.UI
SceneExplorer.Instance?.OnSceneChange();
SearchPage.Instance?.OnSceneChange();
}
#if CPP
internal static float s_timeOfLastClick;
#endif
public static void Update()
{
MainMenu.Instance?.Update();
@ -56,35 +52,20 @@ namespace UnityExplorer.UI
if (EventSys)
{
if (EventSystem.current != EventSys)
{
ForceUnlockCursor.SetEventSystem();
}
#if CPP
// Fix for games which override the InputModule pointer events (eg, VRChat)
// Some IL2CPP games behave weird with multiple UI Input Systems, some fixes for them.
var evt = InputManager.InputPointerEvent;
if (evt != null)
{
if (Time.realtimeSinceStartup - s_timeOfLastClick > 0.1f)
{
s_timeOfLastClick = Time.realtimeSinceStartup;
if (!evt.eligibleForClick && evt.selectedObject)
evt.eligibleForClick = true;
}
else
{
if (evt.eligibleForClick)
evt.eligibleForClick = false;
}
if (!evt.eligibleForClick && evt.selectedObject)
evt.eligibleForClick = true;
}
#endif
}
if (PanelDragger.Instance != null)
{
PanelDragger.Instance.Update();
}
for (int i = 0; i < SliderScrollbar.Instances.Count; i++)
{