cleanup unstripping

This commit is contained in:
sinaioutlander
2020-11-09 16:43:19 +11:00
parent 3783638c89
commit 5e761e2379
22 changed files with 115 additions and 130 deletions

View File

@ -12,7 +12,7 @@ using UnityExplorer.UI.PageModel;
using System.Collections.Generic; using System.Collections.Generic;
using System.Reflection; using System.Reflection;
#if CPP #if CPP
using UnityExplorer.Unstrip.Resources; using UnityExplorer.Unstrip;
using UnityExplorer.Helpers; using UnityExplorer.Helpers;
using UnhollowerRuntimeLib; using UnhollowerRuntimeLib;
#endif #endif
@ -421,7 +421,7 @@ The following helper methods are available:
private static Color caretColor = new Color32(255, 255, 255, 255); private static Color caretColor = new Color32(255, 255, 255, 255);
private static Color textColor = new Color32(255, 255, 255, 255); private static Color textColor = new Color32(255, 255, 255, 255);
private static Color backgroundColor = new Color32(37, 37, 37, 255); private static Color backgroundColor = new Color32(37, 37, 37, 255);
private static Color lineHighlightColor = new Color32(50, 50, 50, 255); //private static Color lineHighlightColor = new Color32(50, 50, 50, 255);
private static Color lineNumberBackgroundColor = new Color32(25, 25, 25, 255); private static Color lineNumberBackgroundColor = new Color32(25, 25, 25, 255);
private static Color lineNumberTextColor = new Color32(180, 180, 180, 255); private static Color lineNumberTextColor = new Color32(180, 180, 180, 255);
private static Color scrollbarColor = new Color32(45, 50, 50, 255); private static Color scrollbarColor = new Color32(45, 50, 50, 255);

View File

@ -1,5 +1,5 @@
using System.Collections.Generic; using System.Collections.Generic;
using UnityExplorer.Unstrip.ColorUtility; using UnityExplorer.Unstrip;
using UnityEngine; using UnityEngine;
namespace UnityExplorer.Console.Lexer namespace UnityExplorer.Console.Lexer

View File

@ -6,6 +6,7 @@ using UnityExplorer.UI.PageModel;
using UnityEngine; using UnityEngine;
using UnityExplorer.Inspectors; using UnityExplorer.Inspectors;
using System.IO; using System.IO;
using UnityExplorer.Unstrip;
namespace UnityExplorer namespace UnityExplorer
{ {

View File

@ -3,7 +3,7 @@ using UnityEngine;
using System.IO; using System.IO;
using System.Reflection; using System.Reflection;
#if CPP #if CPP
using UnityExplorer.Unstrip.ImageConversion; using UnityExplorer.Unstrip;
#endif #endif
namespace UnityExplorer.Helpers namespace UnityExplorer.Helpers

View File

@ -4,8 +4,7 @@ using System.Linq;
using UnityExplorer.Helpers; using UnityExplorer.Helpers;
using UnityExplorer.UI; using UnityExplorer.UI;
using UnityExplorer.UI.Shared; using UnityExplorer.UI.Shared;
using UnityExplorer.Unstrip.ColorUtility; using UnityExplorer.Unstrip;
using UnityExplorer.Unstrip.LayerMasks;
using TMPro; using TMPro;
using UnityEngine; using UnityEngine;
using UnityEngine.UI; using UnityEngine.UI;

View File

@ -7,7 +7,7 @@ using TMPro;
using UnityEngine; using UnityEngine;
using UnityEngine.UI; using UnityEngine.UI;
using UnityExplorer.Input; using UnityExplorer.Input;
using UnityExplorer.Unstrip.Resources; using UnityExplorer.Unstrip;
namespace UnityExplorer.Inspectors.GOInspector namespace UnityExplorer.Inspectors.GOInspector
{ {

View File

@ -3,7 +3,7 @@ using System.Collections.Generic;
using System.Linq; using System.Linq;
using UnityExplorer.Helpers; using UnityExplorer.Helpers;
using UnityExplorer.UI; using UnityExplorer.UI;
using UnityExplorer.Unstrip.LayerMasks; using UnityExplorer.Unstrip;
using TMPro; using TMPro;
using UnityEngine; using UnityEngine;
using UnityEngine.UI; using UnityEngine.UI;
@ -115,9 +115,7 @@ namespace UnityExplorer.Inspectors
s_controls.RefreshControls(); s_controls.RefreshControls();
if (GameObjectControls.s_sliderChangedWanted) if (GameObjectControls.s_sliderChangedWanted)
{
GameObjectControls.UpdateSliderControl(); GameObjectControls.UpdateSliderControl();
}
} }
private void RefreshTopInfo() private void RefreshTopInfo()
@ -139,6 +137,7 @@ namespace UnityExplorer.Inspectors
m_lastPath = path; m_lastPath = path;
m_pathInput.text = path; m_pathInput.text = path;
m_hiddenPathText.text = path; m_hiddenPathText.text = path;
m_pathInput.ForceLabelUpdate();
} }
} }
else if (m_pathGroupObj.activeSelf) else if (m_pathGroupObj.activeSelf)
@ -266,6 +265,7 @@ namespace UnityExplorer.Inspectors
m_hiddenPathText = pathHiddenTextObj.GetComponent<Text>(); m_hiddenPathText = pathHiddenTextObj.GetComponent<Text>();
m_hiddenPathText.color = Color.clear; m_hiddenPathText.color = Color.clear;
m_hiddenPathText.fontSize = 14; m_hiddenPathText.fontSize = 14;
m_hiddenPathText.lineSpacing = 1.5f;
m_hiddenPathText.raycastTarget = false; m_hiddenPathText.raycastTarget = false;
var hiddenFitter = pathHiddenTextObj.AddComponent<ContentSizeFitter>(); var hiddenFitter = pathHiddenTextObj.AddComponent<ContentSizeFitter>();
hiddenFitter.verticalFit = ContentSizeFitter.FitMode.PreferredSize; hiddenFitter.verticalFit = ContentSizeFitter.FitMode.PreferredSize;
@ -291,6 +291,11 @@ namespace UnityExplorer.Inspectors
pathInputLayout.flexibleHeight = 75; pathInputLayout.flexibleHeight = 75;
pathInputLayout.preferredWidth = 400; pathInputLayout.preferredWidth = 400;
pathInputLayout.flexibleWidth = 9999; pathInputLayout.flexibleWidth = 9999;
var textRect = m_pathInput.textComponent.GetComponent<RectTransform>();
textRect.offsetMin = new Vector2(3, 3);
textRect.offsetMax = new Vector2(3, 3);
m_pathInput.textComponent.color = new Color(0.75f, 0.75f, 0.75f);
m_pathInput.textComponent.lineSpacing = 1.5f;
// name row // name row

View File

@ -7,7 +7,7 @@ using UnityExplorer.UI.Shared;
using UnityEngine; using UnityEngine;
using UnityEngine.SceneManagement; using UnityEngine.SceneManagement;
using UnityEngine.UI; using UnityEngine.UI;
using UnityExplorer.Unstrip.Scenes; using UnityExplorer.Unstrip;
namespace UnityExplorer.Inspectors namespace UnityExplorer.Inspectors
{ {

View File

@ -1,6 +1,6 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using UnityExplorer.Unstrip.ColorUtility; using UnityExplorer.Unstrip;
using TMPro; using TMPro;
using UnityEngine; using UnityEngine;
using UnityEngine.UI; using UnityEngine.UI;

View File

@ -6,7 +6,7 @@ using UnityEngine;
using UnityEngine.UI; using UnityEngine.UI;
using UnityExplorer.Config; using UnityExplorer.Config;
using UnityExplorer.UI.Shared; using UnityExplorer.UI.Shared;
using UnityExplorer.Unstrip.ColorUtility; using UnityExplorer.Unstrip;
namespace UnityExplorer.UI.PageModel namespace UnityExplorer.UI.PageModel
{ {
@ -169,7 +169,7 @@ namespace UnityExplorer.UI.PageModel
labelLayout.minWidth = 150; labelLayout.minWidth = 150;
labelLayout.minHeight = 25; labelLayout.minHeight = 25;
var toggleObj = UIFactory.CreateToggle(rowObj, out m_unlockMouseToggle, out Text toggleText); UIFactory.CreateToggle(rowObj, out m_unlockMouseToggle, out Text toggleText);
m_unlockMouseToggle.isOn = ModConfig.Instance.Force_Unlock_Mouse; m_unlockMouseToggle.isOn = ModConfig.Instance.Force_Unlock_Mouse;
toggleText.text = ""; toggleText.text = "";
} }

View File

@ -8,7 +8,7 @@ using UnityEngine.UI;
using UnityExplorer.Helpers; using UnityExplorer.Helpers;
using UnityExplorer.Inspectors; using UnityExplorer.Inspectors;
using UnityExplorer.UI.Shared; using UnityExplorer.UI.Shared;
using UnityExplorer.Unstrip.Resources; using UnityExplorer.Unstrip;
#if CPP #if CPP
using UnhollowerRuntimeLib; using UnhollowerRuntimeLib;
#endif #endif
@ -263,17 +263,17 @@ namespace UnityExplorer.UI.PageModel
#endif #endif
var results = new List<object>(); var results = new List<object>();
// prefer filter comparers // perform filter comparers
string nameFilter = null; string nameFilter = null;
if (!string.IsNullOrEmpty(m_nameInput.text)) if (!string.IsNullOrEmpty(m_nameInput.text))
nameFilter = m_nameInput.text.ToLower(); nameFilter = m_nameInput.text.ToLower();
bool canFilterScene = (m_sceneFilter != SceneFilter.Any || m_childFilter != ChildFilter.Any) bool canGetGameObject = (m_sceneFilter != SceneFilter.Any || m_childFilter != ChildFilter.Any)
&& (m_context == SearchContext.GameObject || typeof(Component).IsAssignableFrom(searchType)); && (m_context == SearchContext.GameObject || typeof(Component).IsAssignableFrom(searchType));
string sceneFilter = null; string sceneFilter = null;
if (!canFilterScene) if (!canGetGameObject)
{ {
if (m_context != SearchContext.UnityObject && (m_sceneFilter != SceneFilter.Any || m_childFilter != ChildFilter.Any)) if (m_context != SearchContext.UnityObject && (m_sceneFilter != SceneFilter.Any || m_childFilter != ChildFilter.Any))
ExplorerCore.LogWarning($"Type '{searchType}' cannot have Scene or Child filters applied to it"); ExplorerCore.LogWarning($"Type '{searchType}' cannot have Scene or Child filters applied to it");
@ -292,7 +292,7 @@ namespace UnityExplorer.UI.PageModel
if (!string.IsNullOrEmpty(nameFilter) && !obj.name.ToLower().Contains(nameFilter)) if (!string.IsNullOrEmpty(nameFilter) && !obj.name.ToLower().Contains(nameFilter))
continue; continue;
if (canFilterScene) if (canGetGameObject)
{ {
#if MONO #if MONO
var go = m_context == SearchContext.GameObject var go = m_context == SearchContext.GameObject
@ -304,6 +304,9 @@ namespace UnityExplorer.UI.PageModel
: obj.TryCast<Component>().gameObject; : obj.TryCast<Component>().gameObject;
#endif #endif
if (!go)
continue;
// scene check // scene check
if (m_sceneFilter != SceneFilter.Any) if (m_sceneFilter != SceneFilter.Any)
{ {
@ -484,7 +487,7 @@ namespace UnityExplorer.UI.PageModel
customTypeLayout.minHeight = 25; customTypeLayout.minHeight = 25;
customTypeLayout.flexibleHeight = 0; customTypeLayout.flexibleHeight = 0;
m_customTypeInput = customTypeObj.GetComponent<TMP_InputField>(); m_customTypeInput = customTypeObj.GetComponent<TMP_InputField>();
m_customTypeInput.placeholder.gameObject.GetComponent<TextMeshProUGUI>().text = "eg. UnityEngine.Camera"; m_customTypeInput.placeholder.gameObject.GetComponent<TextMeshProUGUI>().text = "eg. UnityEngine.Texture2D, etc...";
m_customTypeInput.onFocusSelectAll = true; m_customTypeInput.onFocusSelectAll = true;
#if MONO #if MONO
m_customTypeInput.onSelect.AddListener((string val) => { OnContextButtonClicked(SearchContext.Custom); }); m_customTypeInput.onSelect.AddListener((string val) => { OnContextButtonClicked(SearchContext.Custom); });
@ -507,13 +510,14 @@ namespace UnityExplorer.UI.PageModel
var nameLabelObj = UIFactory.CreateLabel(nameRowObj, TextAnchor.MiddleLeft); var nameLabelObj = UIFactory.CreateLabel(nameRowObj, TextAnchor.MiddleLeft);
var nameLabelText = nameLabelObj.GetComponent<Text>(); var nameLabelText = nameLabelObj.GetComponent<Text>();
nameLabelText.text = "Search by name:"; nameLabelText.text = "Name contains:";
var nameLabelLayout = nameLabelObj.AddComponent<LayoutElement>(); var nameLabelLayout = nameLabelObj.AddComponent<LayoutElement>();
nameLabelLayout.minWidth = 125; nameLabelLayout.minWidth = 125;
nameLabelLayout.minHeight = 25; nameLabelLayout.minHeight = 25;
var nameInputObj = UIFactory.CreateTMPInput(nameRowObj, 14, 0, (int)TextAlignmentOptions.MidlineLeft); var nameInputObj = UIFactory.CreateTMPInput(nameRowObj, 14, 0, (int)TextAlignmentOptions.MidlineLeft);
m_nameInput = nameInputObj.GetComponent<TMP_InputField>(); m_nameInput = nameInputObj.GetComponent<TMP_InputField>();
//m_nameInput.placeholder.gameObject.GetComponent<TextMeshProUGUI>().text = "";
var nameInputLayout = nameInputObj.AddComponent<LayoutElement>(); var nameInputLayout = nameInputObj.AddComponent<LayoutElement>();
nameInputLayout.minWidth = 150; nameInputLayout.minWidth = 150;
nameInputLayout.flexibleWidth = 5000; nameInputLayout.flexibleWidth = 5000;

View File

@ -5,7 +5,7 @@ using UnityEngine.UI;
using UnityExplorer.Input; using UnityExplorer.Input;
using System.IO; using System.IO;
#if CPP #if CPP
using UnityExplorer.Unstrip.ImageConversion; using UnityExplorer.Unstrip;
#endif #endif
namespace UnityExplorer.UI namespace UnityExplorer.UI

View File

@ -35,11 +35,6 @@ public class SliderScrollbar
this.m_slider.Set(1f, false); this.m_slider.Set(1f, false);
} }
~SliderScrollbar()
{
Instances.Remove(this);
}
internal void Update() internal void Update()
{ {
this.RefreshVisibility(); this.RefreshVisibility();
@ -47,39 +42,36 @@ public class SliderScrollbar
internal void RefreshVisibility() internal void RefreshVisibility()
{ {
if (this.m_slider && this.m_scrollbar) if (!m_slider || !m_scrollbar)
{ {
bool shouldShow = !Mathf.Approximately(this.m_scrollbar.size, 1); Instances.Remove(this);
var obj = this.m_slider.handleRect.gameObject; return;
if (obj.activeSelf != shouldShow)
{
obj.SetActive(shouldShow);
if (shouldShow)
this.m_slider.Set(this.m_scrollbar.value, false);
else
m_slider.Set(1f, false);
}
} }
}
bool shouldShow = !Mathf.Approximately(this.m_scrollbar.size, 1);
var obj = this.m_slider.handleRect.gameObject;
if (obj.activeSelf != shouldShow)
{
obj.SetActive(shouldShow);
if (shouldShow)
this.m_slider.Set(this.m_scrollbar.value, false);
else
m_slider.Set(1f, false);
}
}
public void OnScrollbarValueChanged(float _value) public void OnScrollbarValueChanged(float _value)
{ {
//this.RefreshVisibility(); if (this.m_slider.value != _value)
if (this.m_slider && this.m_slider.value != _value)
{
this.m_slider.Set(_value, false); this.m_slider.Set(_value, false);
}
} }
public void OnSliderValueChanged(float _value) public void OnSliderValueChanged(float _value)
{ {
if (this.m_scrollbar) this.m_scrollbar.value = _value;
{ }
this.m_scrollbar.value = _value;
}
}
#region UI CONSTRUCTION #region UI CONSTRUCTION

View File

@ -8,7 +8,7 @@ using TMPro;
using System.Reflection; using System.Reflection;
using UnityExplorer.Helpers; using UnityExplorer.Helpers;
#if CPP #if CPP
using UnityExplorer.Unstrip.AssetBundle; using UnityExplorer.Unstrip;
#endif #endif
namespace UnityExplorer.UI namespace UnityExplorer.UI

View File

@ -25,18 +25,18 @@
<Prefer32Bit>false</Prefer32Bit> <Prefer32Bit>false</Prefer32Bit>
<RootNamespace>UnityExplorer</RootNamespace> <RootNamespace>UnityExplorer</RootNamespace>
<AssemblyName>UnityExplorer</AssemblyName> <AssemblyName>UnityExplorer</AssemblyName>
<!-- Set this to the BepInEx Il2Cpp Game folder, without the ending '\' character. -->
<BIECppGameFolder>D:\Steam\steamapps\common\Outward</BIECppGameFolder>
<!-- Set this to the BepInEx Mono Game folder, without the ending '\' character. -->
<BIEMonoGameFolder>D:\source\Unity Projects\Test\_BUILD_MONO</BIEMonoGameFolder>
<!-- Set this to the BepInEx Mono Managed folder, without the ending '\' character. -->
<BIEMonoManagedFolder>D:\source\Unity Projects\Test\_BUILD_MONO\Test_Data\Managed</BIEMonoManagedFolder>
<!-- Set this to the MelonLoader Il2Cpp Game folder, without the ending '\' character. --> <!-- Set this to the MelonLoader Il2Cpp Game folder, without the ending '\' character. -->
<MLCppGameFolder>D:\Steam\steamapps\common\VRChat</MLCppGameFolder> <MLCppGameFolder>D:\Steam\steamapps\common\VRChat</MLCppGameFolder>
<!-- Set this to the MelonLoader Mono Game folder, without the ending '\' character. --> <!-- Set this to the MelonLoader Mono Game folder, without the ending '\' character. -->
<MLMonoGameFolder>D:\source\Unity Projects\Test\_BUILD_MONO</MLMonoGameFolder> <MLMonoGameFolder>D:\source\Unity Projects\Test\_BUILD_MONO</MLMonoGameFolder>
<!-- Set this to the Mono Managed folder, without the ending '\' character. --> <!-- Set this to the MelonLoader Mono Managed folder, without the ending '\' character. -->
<MLMonoManagedFolder>D:\source\Unity Projects\Test\_BUILD_MONO\Test_Data\Managed</MLMonoManagedFolder> <MLMonoManagedFolder>D:\source\Unity Projects\Test\_BUILD_MONO\Test_Data\Managed</MLMonoManagedFolder>
<!-- Set this to the BepInEx Il2Cpp Game folder, without the ending '\' character. -->
<BIECppGameFolder>D:\Steam\steamapps\common\Outward_Il2Cpp</BIECppGameFolder>
<!-- Set this to the BepInEx Mono Game folder, without the ending '\' character. -->
<BIEMonoGameFolder>D:\source\Unity Projects\Test\_BUILD_MONO</BIEMonoGameFolder>
<!-- Set this to the BepInEx Managed folder, without the ending '\' character. -->
<BIEMonoManagedFolder>D:\source\Unity Projects\Test\_BUILD_MONO\Test_Data\Managed</BIEMonoManagedFolder>
<NuGetPackageImportStamp> <NuGetPackageImportStamp>
</NuGetPackageImportStamp> </NuGetPackageImportStamp>
</PropertyGroup> </PropertyGroup>
@ -108,10 +108,6 @@
<HintPath>$(MLMonoGameFolder)\MelonLoader\MelonLoader.ModHandler.dll</HintPath> <HintPath>$(MLMonoGameFolder)\MelonLoader\MelonLoader.ModHandler.dll</HintPath>
<Private>False</Private> <Private>False</Private>
</Reference> </Reference>
<!--<Reference Include="netstandard">
<HintPath>$(MLMonoManagedFolder)\netstandard.dll</HintPath>
<Private>False</Private>
</Reference>-->
<Reference Include="Unity.TextMeshPro"> <Reference Include="Unity.TextMeshPro">
<HintPath>$(MLMonoManagedFolder)\Unity.TextMeshPro.dll</HintPath> <HintPath>$(MLMonoManagedFolder)\Unity.TextMeshPro.dll</HintPath>
<Private>False</Private> <Private>False</Private>
@ -163,10 +159,6 @@
<HintPath>$(BIEMonoGameFolder)\BepInEx\core\0Harmony.dll</HintPath> <HintPath>$(BIEMonoGameFolder)\BepInEx\core\0Harmony.dll</HintPath>
<Private>False</Private> <Private>False</Private>
</Reference> </Reference>
<!--<Reference Include="netstandard">
<HintPath>$(BIEMonoManagedFolder)\netstandard.dll</HintPath>
<Private>False</Private>
</Reference>-->
<Reference Include="Unity.TextMeshPro"> <Reference Include="Unity.TextMeshPro">
<HintPath>$(BIEMonoManagedFolder)\Unity.TextMeshPro.dll</HintPath> <HintPath>$(BIEMonoManagedFolder)\Unity.TextMeshPro.dll</HintPath>
<Private>False</Private> <Private>False</Private>
@ -388,13 +380,13 @@
<Compile Include="UI\Shared\PageHandler.cs" /> <Compile Include="UI\Shared\PageHandler.cs" />
<Compile Include="UI\Shared\SyntaxColors.cs" /> <Compile Include="UI\Shared\SyntaxColors.cs" />
<Compile Include="UI\UIManager.cs" /> <Compile Include="UI\UIManager.cs" />
<Compile Include="Unstrip\AssetBundle\AssetBundleUnstrip.cs" /> <Compile Include="Unstrip\AssetBundleUnstrip.cs" />
<Compile Include="Unstrip\ColorUtility\ColorUtilityUnstrip.cs" /> <Compile Include="Unstrip\ColorUtilityUnstrip.cs" />
<Compile Include="Unstrip\ImageConversion\ImageConversionUnstrip.cs" /> <Compile Include="Unstrip\ImageConversionUnstrip.cs" />
<Compile Include="Helpers\ICallHelper.cs" /> <Compile Include="Helpers\ICallHelper.cs" />
<Compile Include="Unstrip\LayerMask\LayerMaskUnstrip.cs" /> <Compile Include="Unstrip\LayerMaskUnstrip.cs" />
<Compile Include="Unstrip\Resources\ResourcesUnstrip.cs" /> <Compile Include="Unstrip\ResourcesUnstrip.cs" />
<Compile Include="Unstrip\Scene\SceneUnstrip.cs" /> <Compile Include="Unstrip\SceneUnstrip.cs" />
<Compile Include="Properties\AssemblyInfo.cs" /> <Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="UI\UIFactory.cs" /> <Compile Include="UI\UIFactory.cs" />
</ItemGroup> </ItemGroup>

View File

@ -8,7 +8,7 @@ using UnhollowerRuntimeLib;
using UnityEngine; using UnityEngine;
using UnityExplorer.Helpers; using UnityExplorer.Helpers;
namespace UnityExplorer.Unstrip.AssetBundle namespace UnityExplorer.Unstrip
{ {
public class AssetBundle public class AssetBundle
{ {

View File

@ -1,7 +1,7 @@
using System.Globalization; using System.Globalization;
using UnityEngine; using UnityEngine;
namespace UnityExplorer.Unstrip.ColorUtility namespace UnityExplorer.Unstrip
{ {
public static class ColorUtilityUnstrip public static class ColorUtilityUnstrip
{ {

View File

@ -5,30 +5,34 @@ using UnityExplorer.Helpers;
using UnhollowerBaseLib; using UnhollowerBaseLib;
using UnityEngine; using UnityEngine;
namespace UnityExplorer.Unstrip.ImageConversion namespace UnityExplorer.Unstrip
{ {
public static class ImageConversionUnstrip public static class ImageConversionUnstrip
{ {
// byte[] ImageConversion.EncodeToPNG(this Texture2D image); // byte[] ImageConversion.EncodeToPNG(this Texture2D image);
internal delegate byte[] d_EncodeToPNG(IntPtr tex); internal delegate IntPtr d_EncodeToPNG(IntPtr tex);
public static byte[] EncodeToPNG(this Texture2D tex) public static byte[] EncodeToPNG(this Texture2D tex)
{ {
byte[] data = ICallHelper.GetICall<d_EncodeToPNG>("UnityEngine.ImageConversion::EncodeToPNG") IntPtr ptr = ICallHelper.GetICall<d_EncodeToPNG>("UnityEngine.ImageConversion::EncodeToPNG")
.Invoke(tex.Pointer); .Invoke(tex.Pointer);
// The Il2Cpp EncodeToPNG() method does return System.Byte[], return new Il2CppStructArray<byte>(ptr);
// but for some reason it is not recognized or valid.
// Simple fix is iterating into a new array manually.
byte[] safeData = new byte[data.Length]; //// This is a bit of a hack. The iCall actually returns an Il2CppStructArray<byte>...
for (int i = 0; i < data.Length; i++)
{
safeData[i] = (byte)data[i];
}
return safeData; // byte[] data = ICallHelper.GetICall<d_EncodeToPNG>("UnityEngine.ImageConversion::EncodeToPNG")
// .Invoke(tex.Pointer);
//// However, if you try to use that result with for example File.WriteAllBytes, it won't work.
//// Simple fix: iterate into a new managed array.
//byte[] safeData = new byte[data.Length];
//for (int i = 0; i < data.Length; i++)
// safeData[i] = (byte)data[i];
//return safeData;
} }
// bool ImageConversion.LoadImage(this Texture2D tex, byte[] data, bool markNonReadable); // bool ImageConversion.LoadImage(this Texture2D tex, byte[] data, bool markNonReadable);
@ -39,9 +43,7 @@ namespace UnityExplorer.Unstrip.ImageConversion
{ {
Il2CppStructArray<byte> il2cppArray = new Il2CppStructArray<byte>(data.Length); Il2CppStructArray<byte> il2cppArray = new Il2CppStructArray<byte>(data.Length);
for (int i = 0; i < data.Length; i++) for (int i = 0; i < data.Length; i++)
{
il2cppArray[i] = data[i]; il2cppArray[i] = data[i];
}
bool ret = ICallHelper.GetICall<d_LoadImage>("UnityEngine.ImageConversion::LoadImage") bool ret = ICallHelper.GetICall<d_LoadImage>("UnityEngine.ImageConversion::LoadImage")
.Invoke(tex.Pointer, il2cppArray.Pointer, markNonReadable); .Invoke(tex.Pointer, il2cppArray.Pointer, markNonReadable);

View File

@ -5,7 +5,7 @@ using UnityEngine;
using UnhollowerBaseLib; using UnhollowerBaseLib;
#endif #endif
namespace UnityExplorer.Unstrip.LayerMasks namespace UnityExplorer.Unstrip
{ {
public static class LayerMaskUnstrip public static class LayerMaskUnstrip
{ {
@ -14,7 +14,7 @@ namespace UnityExplorer.Unstrip.LayerMasks
public static string LayerToName(int layer) public static string LayerToName(int layer)
{ {
d_LayerToName iCall = ICallHelper.GetICall<d_LayerToName>("UnityEngine.LayerMask::LayerToName"); var iCall = ICallHelper.GetICall<d_LayerToName>("UnityEngine.LayerMask::LayerToName");
return IL2CPP.Il2CppStringToManaged(iCall.Invoke(layer)); return IL2CPP.Il2CppStringToManaged(iCall.Invoke(layer));
} }
#else #else

View File

@ -1,36 +0,0 @@
using System;
using Mono.CSharp;
using UnityExplorer.Helpers;
#if CPP
using UnhollowerBaseLib;
#endif
namespace UnityExplorer.Unstrip.Resources
{
public class ResourcesUnstrip
{
#if CPP
internal delegate IntPtr d_FindObjectsOfTypeAll(IntPtr type);
public static UnityEngine.Object[] FindObjectsOfTypeAll(Il2CppSystem.Type type)
{
IntPtr arrayPtr = ICallHelper.GetICall<d_FindObjectsOfTypeAll>("UnityEngine.Resources::FindObjectsOfTypeAll")
.Invoke(type.Pointer);
Il2CppReferenceArray<UnityEngine.Object> array = new Il2CppReferenceArray<UnityEngine.Object>(arrayPtr);
UnityEngine.Object[] ret = new UnityEngine.Object[array.Length];
for (int i = 0; i < array.Length; i++)
{
ret[i] = array[i];
}
return ret;
}
#else
public static UnityEngine.Object[] FindObjectsOfTypeAll(Type type) => UnityEngine.Resources.FindObjectsOfTypeAll(type);
#endif
}
}

View File

@ -0,0 +1,26 @@
using System;
using Mono.CSharp;
using UnityExplorer.Helpers;
#if CPP
using UnhollowerBaseLib;
#endif
namespace UnityExplorer.Unstrip
{
public class ResourcesUnstrip
{
#if CPP
internal delegate IntPtr d_FindObjectsOfTypeAll(IntPtr type);
public static UnityEngine.Object[] FindObjectsOfTypeAll(Il2CppSystem.Type type)
{
var iCall = ICallHelper.GetICall<d_FindObjectsOfTypeAll>("UnityEngine.Resources::FindObjectsOfTypeAll");
return new Il2CppReferenceArray<UnityEngine.Object>(iCall.Invoke(type.Pointer));
}
#else
public static UnityEngine.Object[] FindObjectsOfTypeAll(Type type) => UnityEngine.Resources.FindObjectsOfTypeAll(type);
#endif
}
}

View File

@ -4,7 +4,7 @@ using UnityEngine;
using UnityEngine.SceneManagement; using UnityEngine.SceneManagement;
using UnityExplorer.Inspectors; using UnityExplorer.Inspectors;
namespace UnityExplorer.Unstrip.Scenes namespace UnityExplorer.Unstrip
{ {
public class SceneUnstrip public class SceneUnstrip
{ {
@ -31,11 +31,11 @@ namespace UnityExplorer.Unstrip.Scenes
return new GameObject[0]; return new GameObject[0];
} }
//Scene.GetRootGameObjects();
#endif #endif
#if CPP #if CPP
//Scene.GetRootGameObjects();
internal delegate void d_GetRootGameObjects(int handle, IntPtr list); internal delegate void d_GetRootGameObjects(int handle, IntPtr list);
public static GameObject[] GetRootGameObjects(Scene scene) => GetRootGameObjects(scene.handle); public static GameObject[] GetRootGameObjects(Scene scene) => GetRootGameObjects(scene.handle);