mirror of
https://github.com/GrahamKracker/UnityExplorer.git
synced 2025-07-02 03:22:41 +08:00
Compare commits
13 Commits
Author | SHA1 | Date | |
---|---|---|---|
604c499822 | |||
8964c48ba0 | |||
e85a3e0f1e | |||
c658d393f5 | |||
9a45e29e02 | |||
418ece55e3 | |||
bf455893e7 | |||
6d9cb8205a | |||
0f431e997b | |||
2107df70ad | |||
a9fbea7c96 | |||
77878ddd94 | |||
594abc47f8 |
56
README.md
56
README.md
@ -18,7 +18,7 @@
|
||||
- [How to install](#how-to-install)
|
||||
- [Mod Config](#mod-config)
|
||||
- [Building](#building)
|
||||
- [Credits](#credits)
|
||||
- [Acknowledgments](#acknowledgments)
|
||||
|
||||
## Releases
|
||||
|
||||
@ -46,6 +46,32 @@
|
||||
* <b>C# Console</b>: Interactive console for evaluating C# methods on the fly, with some basic helpers.
|
||||
* <b>Inspect-under-mouse</b>: Hover over an object with a collider and inspect it by clicking on it. There's also a UI mode to inspect UI objects.
|
||||
|
||||
### C# Console Tips
|
||||
|
||||
The C# Console can be used to define temporary classes and methods, or it can be used to evaluate an expression, but you cannot do both at the same time.
|
||||
|
||||
For example, you could run this code to define a temporary class (it will be visible within the console until you run `Reset();`).
|
||||
|
||||
```csharp
|
||||
public class MyClass
|
||||
{
|
||||
public static void Method()
|
||||
{
|
||||
UnityExplorer.ExplorerCore.Log("hello");
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
You could then delete or comment out the class and run the following expression to run that method:
|
||||
|
||||
```csharp
|
||||
MyClass.Method();
|
||||
```
|
||||
|
||||
However, you cannot define a class and run it both at the same time. You must either define class(es) and run that, or define an expression and run that.
|
||||
|
||||
You can also make use of the helper methods in the console to simplify some tasks, which you can see listed when the console has nothing entered for input. These methods are **not** accessible within any temporary classes you define, they can only be used in the expression context.
|
||||
|
||||
## How to install
|
||||
|
||||
### BepInEx
|
||||
@ -110,27 +136,21 @@ You can change the settings via the "Options" page of the main menu, or directly
|
||||
|
||||
## Building
|
||||
|
||||
If you'd like to build this yourself, all you need to do is download this repository and build from Visual Studio. If you want to build for BepInEx or MelonLoader IL2CPP then you will need to install the mod loader for a game and set the directory in the `csproj` file.
|
||||
If you'd like to build this yourself, all you need to do is download this repository and build from Visual Studio.
|
||||
|
||||
For IL2CPP:
|
||||
1. Install BepInEx or MelonLoader for your game.
|
||||
2. Open the `src\UnityExplorer.csproj` file in a text editor.
|
||||
3. Set `BIECppGameFolder` (for BepInEx) and/or `MLCppGameFolder` (for MelonLoader) so the project can locate the necessary references.
|
||||
4. For Standalone builds, you can either install BepInEx for the game to build, or just change the .csproj file and set the Unhollower reference manually.
|
||||
|
||||
For all builds:
|
||||
1. Open the `src\UnityExplorer.sln` project.
|
||||
2. Select `Solution 'UnityExplorer' (1 of 1 project)` in the Solution Explorer panel, and set the <b>Active config</b> property to the version you want to build, then build it.
|
||||
2. Select `Solution 'UnityExplorer' (1 of 1 project)` in the Solution Explorer panel, and set the <b>Active config</b> property to the version you want to build, then build it. Alternatively, use "Batch Build" and select all releases.
|
||||
3. The DLLs are built to the `Release\` folder in the root of the repository.
|
||||
4. If ILRepack fails or is missing, use the NuGet package manager to re-install `ILRepack.Lib.MSBuild.Task`, then re-build.
|
||||
|
||||
## Credits
|
||||
The references are all inside the `lib\` folder, if you need to change them for some reason then you can replace them there.
|
||||
|
||||
Written by Sinai.
|
||||
## Acknowledgments
|
||||
|
||||
### Licensing
|
||||
* [ManlyMarco](https://github.com/ManlyMarco) for [Runtime Unity Editor](https://github.com/ManlyMarco/RuntimeUnityEditor) (GPL), snippets from the REPL Console were used for UnityExplorer's C# Console.
|
||||
* [denikson](https://github.com/denikson) (aka Horse) for [mcs-unity](https://github.com/denikson/mcs-unity) (MIT), used as the `Mono.CSharp` reference for the C# Console.
|
||||
* [HerpDerpenstine](https://github.com/HerpDerpinstine) for [MelonCoroutines](https://github.com/LavaGang/MelonLoader/blob/master/MelonLoader.Support.Il2Cpp/MelonCoroutines.cs) (Apache), they were included for standalone Il2CPP coroutine support.
|
||||
* [InGameCodeEditor](https://assetstore.unity.com/packages/tools/gui/ingame-code-editor-144254) (Apache) was used as the base for the syntax highlighting for UnityExplorer's C# console (`UnityExplorer.UI.Main.CSConsole.Lexer`).
|
||||
|
||||
This project uses code from:
|
||||
* (GPL) [ManlyMarco](https://github.com/ManlyMarco)'s [Runtime Unity Editor](https://github.com/ManlyMarco/RuntimeUnityEditor), which I used for some aspects of the C# Console and Auto-Complete features. The snippets I used are indicated with a comment.
|
||||
* (MIT) [denikson](https://github.com/denikson) (aka Horse)'s [mcs-unity](https://github.com/denikson/mcs-unity). I commented out the `SkipVisibilityExt` constructor since it was causing an exception with the Hook it attempted in IL2CPP.
|
||||
* (Apache) [InGameCodeEditor](https://assetstore.unity.com/packages/tools/gui/ingame-code-editor-144254) was used as the base for the syntax highlighting for UnityExplorer's C# console, although it has been heavily rewritten and optimized. Used classes are in the `UnityExplorer.UI.Main.CSConsole.Lexer` namespace.
|
||||
### Disclaimer
|
||||
|
||||
UnityExplorer is in no way associated with Unity Technologies. "Unity", Unity logos, and other Unity trademarks are trademarks or registered trademarks of Unity Technologies or its affiliates in the U.S. and elsewhere.
|
||||
|
BIN
lib/UnhollowerBaseLib.dll
Normal file
BIN
lib/UnhollowerBaseLib.dll
Normal file
Binary file not shown.
BIN
lib/unhollowed/Il2CppSystem.Core.dll
Normal file
BIN
lib/unhollowed/Il2CppSystem.Core.dll
Normal file
Binary file not shown.
BIN
lib/unhollowed/Il2Cppmscorlib.dll
Normal file
BIN
lib/unhollowed/Il2Cppmscorlib.dll
Normal file
Binary file not shown.
BIN
lib/unhollowed/UnityEngine.CoreModule.dll
Normal file
BIN
lib/unhollowed/UnityEngine.CoreModule.dll
Normal file
Binary file not shown.
BIN
lib/unhollowed/UnityEngine.IMGUIModule.dll
Normal file
BIN
lib/unhollowed/UnityEngine.IMGUIModule.dll
Normal file
Binary file not shown.
BIN
lib/unhollowed/UnityEngine.PhysicsModule.dll
Normal file
BIN
lib/unhollowed/UnityEngine.PhysicsModule.dll
Normal file
Binary file not shown.
BIN
lib/unhollowed/UnityEngine.TextRenderingModule.dll
Normal file
BIN
lib/unhollowed/UnityEngine.TextRenderingModule.dll
Normal file
Binary file not shown.
BIN
lib/unhollowed/UnityEngine.UI.dll
Normal file
BIN
lib/unhollowed/UnityEngine.UI.dll
Normal file
Binary file not shown.
BIN
lib/unhollowed/UnityEngine.UIModule.dll
Normal file
BIN
lib/unhollowed/UnityEngine.UIModule.dll
Normal file
Binary file not shown.
BIN
lib/unhollowed/UnityEngine.dll
Normal file
BIN
lib/unhollowed/UnityEngine.dll
Normal file
Binary file not shown.
29
src/Core/CSharp/DummyBehaviour.cs
Normal file
29
src/Core/CSharp/DummyBehaviour.cs
Normal file
@ -0,0 +1,29 @@
|
||||
#if MONO
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using UnityEngine;
|
||||
|
||||
namespace UnityExplorer.Core.CSharp
|
||||
{
|
||||
public class DummyBehaviour : MonoBehaviour
|
||||
{
|
||||
public static DummyBehaviour Instance;
|
||||
|
||||
public static void Setup()
|
||||
{
|
||||
var obj = new GameObject("Explorer_DummyBehaviour");
|
||||
DontDestroyOnLoad(obj);
|
||||
obj.hideFlags |= HideFlags.HideAndDontSave;
|
||||
|
||||
obj.AddComponent<DummyBehaviour>();
|
||||
}
|
||||
|
||||
internal void Awake()
|
||||
{
|
||||
Instance = this;
|
||||
}
|
||||
}
|
||||
}
|
||||
#endif
|
@ -15,11 +15,12 @@ namespace UnityExplorer.Core.CSharp
|
||||
"mscorlib", "System.Core", "System", "System.Xml"
|
||||
};
|
||||
|
||||
private readonly TextWriter tw;
|
||||
internal static TextWriter _textWriter;
|
||||
internal static StreamReportPrinter _reportPrinter;
|
||||
|
||||
public ScriptEvaluator(TextWriter tw) : base(BuildContext(tw))
|
||||
{
|
||||
this.tw = tw;
|
||||
_textWriter = tw;
|
||||
|
||||
ImportAppdomainAssemblies(ReferenceAssembly);
|
||||
AppDomain.CurrentDomain.AssemblyLoad += OnAssemblyLoad;
|
||||
@ -28,23 +29,22 @@ namespace UnityExplorer.Core.CSharp
|
||||
public void Dispose()
|
||||
{
|
||||
AppDomain.CurrentDomain.AssemblyLoad -= OnAssemblyLoad;
|
||||
tw.Dispose();
|
||||
_textWriter.Dispose();
|
||||
}
|
||||
|
||||
private void OnAssemblyLoad(object sender, AssemblyLoadEventArgs args)
|
||||
{
|
||||
string name = args.LoadedAssembly.GetName().Name;
|
||||
|
||||
if (StdLib.Contains(name))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
ReferenceAssembly(args.LoadedAssembly);
|
||||
}
|
||||
|
||||
private static CompilerContext BuildContext(TextWriter tw)
|
||||
{
|
||||
var reporter = new StreamReportPrinter(tw);
|
||||
_reportPrinter = new StreamReportPrinter(tw);
|
||||
|
||||
var settings = new CompilerSettings
|
||||
{
|
||||
@ -56,7 +56,7 @@ namespace UnityExplorer.Core.CSharp
|
||||
EnhancedWarnings = false
|
||||
};
|
||||
|
||||
return new CompilerContext(settings, reporter);
|
||||
return new CompilerContext(settings, _reportPrinter);
|
||||
}
|
||||
|
||||
private static void ImportAppdomainAssemblies(Action<Assembly> import)
|
||||
|
@ -4,6 +4,11 @@ using UnityExplorer.UI;
|
||||
using UnityExplorer.UI.Main;
|
||||
using UnityExplorer.Core.Inspectors;
|
||||
using UnityExplorer.UI.Main.CSConsole;
|
||||
using System.Collections;
|
||||
using UnityEngine;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using UnityExplorer.Core.Runtime;
|
||||
|
||||
namespace UnityExplorer.Core.CSharp
|
||||
{
|
||||
@ -14,6 +19,11 @@ namespace UnityExplorer.Core.CSharp
|
||||
ExplorerCore.Log(message);
|
||||
}
|
||||
|
||||
public static void StartCoroutine(IEnumerator ienumerator)
|
||||
{
|
||||
RuntimeProvider.Instance.StartConsoleCoroutine(ienumerator);
|
||||
}
|
||||
|
||||
public static void AddUsing(string directive)
|
||||
{
|
||||
CSharpConsole.Instance.AddUsing(directive);
|
||||
@ -21,7 +31,7 @@ namespace UnityExplorer.Core.CSharp
|
||||
|
||||
public static void GetUsing()
|
||||
{
|
||||
ExplorerCore.Log(CSharpConsole.Instance.m_evaluator.GetUsing());
|
||||
ExplorerCore.Log(CSharpConsole.Instance.Evaluator.GetUsing());
|
||||
}
|
||||
|
||||
public static void Reset()
|
||||
|
@ -37,28 +37,40 @@ namespace UnityExplorer.Core.Inspectors
|
||||
UI = new MouseInspectorUI();
|
||||
}
|
||||
|
||||
public static void StartInspect()
|
||||
private static readonly List<Graphic> _wasDisabledGraphics = new List<Graphic>();
|
||||
private static readonly List<CanvasGroup> _wasDisabledCanvasGroups = new List<CanvasGroup>();
|
||||
private static readonly List<GameObject> _objectsAddedCastersTo = new List<GameObject>();
|
||||
|
||||
public static void StartInspect(MouseInspectMode mode)
|
||||
{
|
||||
Mode = mode;
|
||||
Enabled = true;
|
||||
MainMenu.Instance.MainPanel.SetActive(false);
|
||||
|
||||
UI.s_UIContent.SetActive(true);
|
||||
|
||||
// recache Graphic Raycasters each time we start
|
||||
var casters = RuntimeProvider.Instance.FindObjectsOfTypeAll(typeof(GraphicRaycaster));
|
||||
m_gCasters = new GraphicRaycaster[casters.Length];
|
||||
for (int i = 0; i < casters.Length; i++)
|
||||
if (mode == MouseInspectMode.UI)
|
||||
{
|
||||
m_gCasters[i] = casters[i].Cast(typeof(GraphicRaycaster)) as GraphicRaycaster;
|
||||
SetupUIRaycast();
|
||||
}
|
||||
}
|
||||
|
||||
internal static void ClearHitData()
|
||||
{
|
||||
s_lastHit = null;
|
||||
UI.s_objNameLabel.text = "No hits...";
|
||||
UI.s_objPathLabel.text = "";
|
||||
}
|
||||
|
||||
public static void StopInspect()
|
||||
{
|
||||
Enabled = false;
|
||||
MainMenu.Instance.MainPanel.SetActive(true);
|
||||
UI.s_UIContent.SetActive(false);
|
||||
|
||||
if (Mode == MouseInspectMode.UI)
|
||||
StopUIInspect();
|
||||
|
||||
ClearHitData();
|
||||
}
|
||||
|
||||
@ -91,6 +103,18 @@ namespace UnityExplorer.Core.Inspectors
|
||||
}
|
||||
}
|
||||
|
||||
internal static void UpdatePosition(Vector2 mousePos)
|
||||
{
|
||||
s_lastMousePos = mousePos;
|
||||
|
||||
var inversePos = UIManager.CanvasRoot.transform.InverseTransformPoint(mousePos);
|
||||
|
||||
UI.s_mousePosLabel.text = $"<color=grey>Mouse Position:</color> {mousePos.ToString()}";
|
||||
|
||||
float yFix = mousePos.y < 120 ? 80 : -80;
|
||||
UI.s_UIContent.transform.localPosition = new Vector3(inversePos.x, inversePos.y + yFix, 0);
|
||||
}
|
||||
|
||||
internal static void OnHitGameObject(GameObject obj)
|
||||
{
|
||||
if (obj != s_lastHit)
|
||||
@ -107,6 +131,8 @@ namespace UnityExplorer.Core.Inspectors
|
||||
}
|
||||
}
|
||||
|
||||
// Collider raycasting
|
||||
|
||||
internal static void RaycastWorld(Vector2 mousePos)
|
||||
{
|
||||
var ray = UnityHelper.MainCamera.ScreenPointToRay(mousePos);
|
||||
@ -124,6 +150,54 @@ namespace UnityExplorer.Core.Inspectors
|
||||
}
|
||||
}
|
||||
|
||||
// UI Graphic raycasting
|
||||
|
||||
private static void SetupUIRaycast()
|
||||
{
|
||||
foreach (var obj in RuntimeProvider.Instance.FindObjectsOfTypeAll(typeof(Canvas)))
|
||||
{
|
||||
var canvas = obj.Cast(typeof(Canvas)) as Canvas;
|
||||
if (!canvas || !canvas.enabled || !canvas.gameObject.activeInHierarchy)
|
||||
continue;
|
||||
if (!canvas.GetComponent<GraphicRaycaster>())
|
||||
{
|
||||
canvas.gameObject.AddComponent<GraphicRaycaster>();
|
||||
//ExplorerCore.Log("Added raycaster to " + canvas.name);
|
||||
_objectsAddedCastersTo.Add(canvas.gameObject);
|
||||
}
|
||||
}
|
||||
|
||||
// recache Graphic Raycasters each time we start
|
||||
var casters = RuntimeProvider.Instance.FindObjectsOfTypeAll(typeof(GraphicRaycaster));
|
||||
m_gCasters = new GraphicRaycaster[casters.Length];
|
||||
for (int i = 0; i < casters.Length; i++)
|
||||
{
|
||||
m_gCasters[i] = casters[i].Cast(typeof(GraphicRaycaster)) as GraphicRaycaster;
|
||||
}
|
||||
|
||||
// enable raycastTarget on Graphics
|
||||
foreach (var obj in RuntimeProvider.Instance.FindObjectsOfTypeAll(typeof(Graphic)))
|
||||
{
|
||||
var graphic = obj.Cast(typeof(Graphic)) as Graphic;
|
||||
if (!graphic || !graphic.enabled || graphic.raycastTarget || !graphic.gameObject.activeInHierarchy)
|
||||
continue;
|
||||
graphic.raycastTarget = true;
|
||||
//ExplorerCore.Log("Enabled raycastTarget on " + graphic.name);
|
||||
_wasDisabledGraphics.Add(graphic);
|
||||
}
|
||||
|
||||
// enable blocksRaycasts on CanvasGroups
|
||||
foreach (var obj in RuntimeProvider.Instance.FindObjectsOfTypeAll(typeof(CanvasGroup)))
|
||||
{
|
||||
var canvas = obj.Cast(typeof(CanvasGroup)) as CanvasGroup;
|
||||
if (!canvas || !canvas.gameObject.activeInHierarchy || canvas.blocksRaycasts)
|
||||
continue;
|
||||
canvas.blocksRaycasts = true;
|
||||
//ExplorerCore.Log("Enabled raycasts on " + canvas.name);
|
||||
_wasDisabledCanvasGroups.Add(canvas);
|
||||
}
|
||||
}
|
||||
|
||||
internal static void RaycastUI(Vector2 mousePos)
|
||||
{
|
||||
var ped = new PointerEventData(null)
|
||||
@ -136,6 +210,11 @@ namespace UnityExplorer.Core.Inspectors
|
||||
#else
|
||||
var list = new Il2CppSystem.Collections.Generic.List<RaycastResult>();
|
||||
#endif
|
||||
//ExplorerCore.Log("~~~~~~~~~ begin raycast ~~~~~~~~");
|
||||
GameObject hitObject = null;
|
||||
int highestLayer = int.MinValue;
|
||||
int highestOrder = int.MinValue;
|
||||
int highestDepth = int.MinValue;
|
||||
foreach (var gr in m_gCasters)
|
||||
{
|
||||
gr.Raycast(ped, list);
|
||||
@ -144,14 +223,40 @@ namespace UnityExplorer.Core.Inspectors
|
||||
{
|
||||
foreach (var hit in list)
|
||||
{
|
||||
if (hit.gameObject)
|
||||
if (!hit.gameObject)
|
||||
continue;
|
||||
|
||||
if (hit.gameObject.GetComponent<CanvasGroup>() is CanvasGroup group && group.alpha == 0)
|
||||
continue;
|
||||
|
||||
if (hit.gameObject.GetComponent<Graphic>() is Graphic graphic && graphic.color.a == 0f)
|
||||
continue;
|
||||
|
||||
//ExplorerCore.Log("Hit: " + hit.gameObject.name + ", depth: " + hit.depth + ", layer: " + hit.sortingLayer + ", order: " + hit.sortingOrder);
|
||||
|
||||
if (hit.sortingLayer < highestLayer)
|
||||
continue;
|
||||
|
||||
if (hit.sortingLayer > highestLayer)
|
||||
{
|
||||
var obj = hit.gameObject;
|
||||
|
||||
OnHitGameObject(obj);
|
||||
|
||||
break;
|
||||
highestLayer = hit.sortingLayer;
|
||||
highestOrder = int.MinValue;
|
||||
}
|
||||
|
||||
if (hit.depth < highestDepth)
|
||||
continue;
|
||||
|
||||
if (hit.depth > highestDepth)
|
||||
{
|
||||
highestDepth = hit.depth;
|
||||
highestOrder = int.MinValue;
|
||||
}
|
||||
|
||||
if (hit.sortingOrder <= highestOrder)
|
||||
continue;
|
||||
|
||||
highestOrder = hit.sortingOrder;
|
||||
hitObject = hit.gameObject;
|
||||
}
|
||||
}
|
||||
else
|
||||
@ -160,25 +265,30 @@ namespace UnityExplorer.Core.Inspectors
|
||||
ClearHitData();
|
||||
}
|
||||
}
|
||||
|
||||
if (hitObject)
|
||||
OnHitGameObject(hitObject);
|
||||
|
||||
//ExplorerCore.Log("~~~~~~~~~ end raycast ~~~~~~~~");
|
||||
}
|
||||
|
||||
internal static void UpdatePosition(Vector2 mousePos)
|
||||
private static void StopUIInspect()
|
||||
{
|
||||
s_lastMousePos = mousePos;
|
||||
foreach (var obj in _objectsAddedCastersTo)
|
||||
{
|
||||
if (obj.GetComponent<GraphicRaycaster>() is GraphicRaycaster raycaster)
|
||||
GameObject.Destroy(raycaster);
|
||||
}
|
||||
|
||||
var inversePos = UIManager.CanvasRoot.transform.InverseTransformPoint(mousePos);
|
||||
foreach (var graphic in _wasDisabledGraphics)
|
||||
graphic.raycastTarget = false;
|
||||
|
||||
UI.s_mousePosLabel.text = $"<color=grey>Mouse Position:</color> {mousePos.ToString()}";
|
||||
foreach (var canvas in _wasDisabledCanvasGroups)
|
||||
canvas.blocksRaycasts = false;
|
||||
|
||||
float yFix = mousePos.y < 120 ? 80 : -80;
|
||||
UI.s_UIContent.transform.localPosition = new Vector3(inversePos.x, inversePos.y + yFix, 0);
|
||||
}
|
||||
|
||||
internal static void ClearHitData()
|
||||
{
|
||||
s_lastHit = null;
|
||||
UI.s_objNameLabel.text = "No hits...";
|
||||
UI.s_objPathLabel.text = "";
|
||||
_objectsAddedCastersTo.Clear();
|
||||
_wasDisabledCanvasGroups.Clear();
|
||||
_wasDisabledGraphics.Clear();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
156
src/Core/Runtime/Il2Cpp/Il2CppCoroutine.cs
Normal file
156
src/Core/Runtime/Il2Cpp/Il2CppCoroutine.cs
Normal file
@ -0,0 +1,156 @@
|
||||
#if CPP
|
||||
using System;
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using UnhollowerBaseLib;
|
||||
using UnityEngine;
|
||||
|
||||
// CREDIT HerpDerpenstine
|
||||
// https://github.com/LavaGang/MelonLoader/blob/master/MelonLoader.Support.Il2Cpp/MelonCoroutines.cs
|
||||
|
||||
namespace UnityExplorer.Core.Runtime.Il2Cpp
|
||||
{
|
||||
public static class Il2CppCoroutine
|
||||
{
|
||||
private struct CoroTuple
|
||||
{
|
||||
public object WaitCondition;
|
||||
public IEnumerator Coroutine;
|
||||
}
|
||||
private static readonly List<CoroTuple> ourCoroutinesStore = new List<CoroTuple>();
|
||||
private static readonly List<IEnumerator> ourNextFrameCoroutines = new List<IEnumerator>();
|
||||
private static readonly List<IEnumerator> ourWaitForFixedUpdateCoroutines = new List<IEnumerator>();
|
||||
private static readonly List<IEnumerator> ourWaitForEndOfFrameCoroutines = new List<IEnumerator>();
|
||||
|
||||
private static readonly List<IEnumerator> tempList = new List<IEnumerator>();
|
||||
|
||||
internal static object Start(IEnumerator routine)
|
||||
{
|
||||
if (routine != null) ProcessNextOfCoroutine(routine);
|
||||
return routine;
|
||||
}
|
||||
|
||||
internal static void Stop(IEnumerator enumerator)
|
||||
{
|
||||
if (ourNextFrameCoroutines.Contains(enumerator)) // the coroutine is running itself
|
||||
ourNextFrameCoroutines.Remove(enumerator);
|
||||
else
|
||||
{
|
||||
int coroTupleIndex = ourCoroutinesStore.FindIndex(c => c.Coroutine == enumerator);
|
||||
if (coroTupleIndex != -1) // the coroutine is waiting for a subroutine
|
||||
{
|
||||
object waitCondition = ourCoroutinesStore[coroTupleIndex].WaitCondition;
|
||||
if (waitCondition is IEnumerator waitEnumerator)
|
||||
Stop(waitEnumerator);
|
||||
|
||||
ourCoroutinesStore.RemoveAt(coroTupleIndex);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private static void ProcessCoroList(List<IEnumerator> target)
|
||||
{
|
||||
if (target.Count == 0) return;
|
||||
|
||||
// use a temp list to make sure waits made during processing are not handled by same processing invocation
|
||||
// additionally, a temp list reduces allocations compared to an array
|
||||
tempList.AddRange(target);
|
||||
target.Clear();
|
||||
foreach (var enumerator in tempList) ProcessNextOfCoroutine(enumerator);
|
||||
tempList.Clear();
|
||||
}
|
||||
|
||||
internal static void Process()
|
||||
{
|
||||
for (var i = ourCoroutinesStore.Count - 1; i >= 0; i--)
|
||||
{
|
||||
var tuple = ourCoroutinesStore[i];
|
||||
if (tuple.WaitCondition is WaitForSeconds waitForSeconds)
|
||||
{
|
||||
if ((waitForSeconds.m_Seconds -= Time.deltaTime) <= 0)
|
||||
{
|
||||
ourCoroutinesStore.RemoveAt(i);
|
||||
ProcessNextOfCoroutine(tuple.Coroutine);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
ProcessCoroList(ourNextFrameCoroutines);
|
||||
}
|
||||
|
||||
internal static void ProcessWaitForFixedUpdate() => ProcessCoroList(ourWaitForFixedUpdateCoroutines);
|
||||
|
||||
internal static void ProcessWaitForEndOfFrame() => ProcessCoroList(ourWaitForEndOfFrameCoroutines);
|
||||
|
||||
private static void ProcessNextOfCoroutine(IEnumerator enumerator)
|
||||
{
|
||||
try
|
||||
{
|
||||
if (!enumerator.MoveNext()) // Run the next step of the coroutine. If it's done, restore the parent routine
|
||||
{
|
||||
var indices = ourCoroutinesStore.Select((it, idx) => (idx, it)).Where(it => it.it.WaitCondition == enumerator).Select(it => it.idx).ToList();
|
||||
for (var i = indices.Count - 1; i >= 0; i--)
|
||||
{
|
||||
var index = indices[i];
|
||||
ourNextFrameCoroutines.Add(ourCoroutinesStore[index].Coroutine);
|
||||
ourCoroutinesStore.RemoveAt(index);
|
||||
}
|
||||
return;
|
||||
}
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
ExplorerCore.LogError(e.ToString());
|
||||
Stop(FindOriginalCoro(enumerator)); // We want the entire coroutine hierachy to stop when an error happen
|
||||
}
|
||||
|
||||
var next = enumerator.Current;
|
||||
switch (next)
|
||||
{
|
||||
case null:
|
||||
ourNextFrameCoroutines.Add(enumerator);
|
||||
return;
|
||||
case WaitForFixedUpdate _:
|
||||
ourWaitForFixedUpdateCoroutines.Add(enumerator);
|
||||
return;
|
||||
case WaitForEndOfFrame _:
|
||||
ourWaitForEndOfFrameCoroutines.Add(enumerator);
|
||||
return;
|
||||
case WaitForSeconds _:
|
||||
break; // do nothing, this one is supported in Process
|
||||
case Il2CppObjectBase il2CppObjectBase:
|
||||
var nextAsEnumerator = il2CppObjectBase.TryCast<Il2CppSystem.Collections.IEnumerator>();
|
||||
if (nextAsEnumerator != null) // il2cpp IEnumerator also handles CustomYieldInstruction
|
||||
next = new Il2CppEnumeratorWrapper(nextAsEnumerator);
|
||||
else
|
||||
ExplorerCore.LogWarning($"Unknown coroutine yield object of type {il2CppObjectBase} for coroutine {enumerator}");
|
||||
break;
|
||||
}
|
||||
|
||||
ourCoroutinesStore.Add(new CoroTuple { WaitCondition = next, Coroutine = enumerator });
|
||||
|
||||
if (next is IEnumerator nextCoro)
|
||||
ProcessNextOfCoroutine(nextCoro);
|
||||
}
|
||||
|
||||
private static IEnumerator FindOriginalCoro(IEnumerator enumerator)
|
||||
{
|
||||
int index = ourCoroutinesStore.FindIndex(ct => ct.WaitCondition == enumerator);
|
||||
if (index == -1)
|
||||
return enumerator;
|
||||
return FindOriginalCoro(ourCoroutinesStore[index].Coroutine);
|
||||
}
|
||||
|
||||
private class Il2CppEnumeratorWrapper : IEnumerator
|
||||
{
|
||||
private readonly Il2CppSystem.Collections.IEnumerator il2cppEnumerator;
|
||||
|
||||
public Il2CppEnumeratorWrapper(Il2CppSystem.Collections.IEnumerator il2CppEnumerator) => il2cppEnumerator = il2CppEnumerator;
|
||||
public bool MoveNext() => il2cppEnumerator.MoveNext();
|
||||
public void Reset() => il2cppEnumerator.Reset();
|
||||
public object Current => il2cppEnumerator.Current;
|
||||
}
|
||||
}
|
||||
}
|
||||
#endif
|
@ -2,12 +2,15 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Reflection;
|
||||
using BF = System.Reflection.BindingFlags;
|
||||
using System.Text;
|
||||
using UnhollowerBaseLib;
|
||||
using UnhollowerRuntimeLib;
|
||||
using UnityEngine;
|
||||
using UnityEngine.Events;
|
||||
using UnityEngine.SceneManagement;
|
||||
using System.Collections;
|
||||
|
||||
namespace UnityExplorer.Core.Runtime.Il2Cpp
|
||||
{
|
||||
@ -21,14 +24,27 @@ namespace UnityExplorer.Core.Runtime.Il2Cpp
|
||||
|
||||
public override void SetupEvents()
|
||||
{
|
||||
Application.add_logMessageReceived(
|
||||
new Action<string, string, LogType>(ExplorerCore.Instance.OnUnityLog));
|
||||
try
|
||||
{
|
||||
//Application.add_logMessageReceived(new Action<string, string, LogType>(ExplorerCore.Instance.OnUnityLog));
|
||||
|
||||
//SceneManager.add_sceneLoaded(
|
||||
// new Action<Scene, LoadSceneMode>(ExplorerCore.Instance.OnSceneLoaded1));
|
||||
var logType = ReflectionUtility.GetTypeByName("UnityEngine.Application+LogCallback");
|
||||
var castMethod = logType.GetMethod("op_Implicit", new[] { typeof(Action<string, string, LogType>) });
|
||||
var addMethod = typeof(Application).GetMethod("add_logMessageReceived", BF.Static | BF.Public, null, new[] { logType }, null);
|
||||
addMethod.Invoke(null, new[]
|
||||
{
|
||||
castMethod.Invoke(null, new[] { new Action<string, string, LogType>(ExplorerCore.Instance.OnUnityLog) })
|
||||
});
|
||||
}
|
||||
catch
|
||||
{
|
||||
ExplorerCore.LogWarning("Exception setting up Unity log listener, make sure Unity libraries have been unstripped!");
|
||||
}
|
||||
}
|
||||
|
||||
//SceneManager.add_activeSceneChanged(
|
||||
// new Action<Scene, Scene>(ExplorerCore.Instance.OnSceneLoaded2));
|
||||
public override void StartConsoleCoroutine(IEnumerator routine)
|
||||
{
|
||||
Il2CppCoroutine.Start(routine);
|
||||
}
|
||||
|
||||
internal delegate IntPtr d_LayerToName(int layer);
|
||||
|
@ -1,5 +1,6 @@
|
||||
#if MONO
|
||||
using System;
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Reflection;
|
||||
@ -7,6 +8,7 @@ using System.Text;
|
||||
using UnityEngine;
|
||||
using UnityEngine.SceneManagement;
|
||||
using UnityExplorer.Core;
|
||||
using UnityExplorer.Core.CSharp;
|
||||
|
||||
namespace UnityExplorer.Core.Runtime.Mono
|
||||
{
|
||||
@ -25,6 +27,11 @@ namespace UnityExplorer.Core.Runtime.Mono
|
||||
//SceneManager.activeSceneChanged += ExplorerCore.Instance.OnSceneLoaded2;
|
||||
}
|
||||
|
||||
public override void StartConsoleCoroutine(IEnumerator routine)
|
||||
{
|
||||
DummyBehaviour.Instance.StartCoroutine(routine);
|
||||
}
|
||||
|
||||
public override string LayerToName(int layer)
|
||||
=> LayerMask.LayerToName(layer);
|
||||
|
||||
@ -50,4 +57,12 @@ namespace UnityExplorer.Core.Runtime.Mono
|
||||
}
|
||||
}
|
||||
|
||||
public static class MonoExtensions
|
||||
{
|
||||
public static void Clear(this StringBuilder sb)
|
||||
{
|
||||
sb.Remove(0, sb.Length);
|
||||
}
|
||||
}
|
||||
|
||||
#endif
|
@ -1,4 +1,5 @@
|
||||
using System;
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
@ -36,6 +37,8 @@ namespace UnityExplorer.Core.Runtime
|
||||
|
||||
public abstract void SetupEvents();
|
||||
|
||||
public abstract void StartConsoleCoroutine(IEnumerator routine);
|
||||
|
||||
// Unity API handlers
|
||||
|
||||
public abstract string LayerToName(int layer);
|
||||
|
@ -17,7 +17,7 @@ namespace UnityExplorer
|
||||
public class ExplorerCore
|
||||
{
|
||||
public const string NAME = "UnityExplorer";
|
||||
public const string VERSION = "3.2.7";
|
||||
public const string VERSION = "3.2.9";
|
||||
public const string AUTHOR = "Sinai";
|
||||
public const string GUID = "com.sinai.unityexplorer";
|
||||
|
||||
@ -44,13 +44,13 @@ namespace UnityExplorer
|
||||
|
||||
Instance = this;
|
||||
|
||||
RuntimeProvider.Init();
|
||||
|
||||
if (!Directory.Exists(EXPLORER_FOLDER))
|
||||
Directory.CreateDirectory(EXPLORER_FOLDER);
|
||||
|
||||
ExplorerConfig.OnLoad();
|
||||
|
||||
RuntimeProvider.Init();
|
||||
|
||||
InputManager.Init();
|
||||
|
||||
CursorUnlocker.Init();
|
||||
|
@ -2,6 +2,10 @@
|
||||
using System;
|
||||
using System.IO;
|
||||
using MelonLoader;
|
||||
using UnityExplorer;
|
||||
|
||||
[assembly: MelonInfo(typeof(ExplorerMelonMod), ExplorerCore.NAME, ExplorerCore.VERSION, ExplorerCore.AUTHOR)]
|
||||
[assembly: MelonGame(null, null)]
|
||||
|
||||
namespace UnityExplorer
|
||||
{
|
||||
|
@ -2,13 +2,6 @@
|
||||
using System.Runtime.InteropServices;
|
||||
using UnityExplorer;
|
||||
|
||||
#if ML
|
||||
using MelonLoader;
|
||||
|
||||
[assembly: MelonInfo(typeof(ExplorerMelonMod), "UnityExplorer", ExplorerCore.VERSION, ExplorerCore.AUTHOR)]
|
||||
[assembly: MelonGame(null, null)]
|
||||
#endif
|
||||
|
||||
// General Information about an assembly is controlled through the following
|
||||
// set of attributes. Change these attribute values to modify the information
|
||||
// associated with an assembly.
|
||||
|
@ -205,7 +205,7 @@ namespace UnityExplorer.UI.Main.CSConsole
|
||||
{
|
||||
// Credit ManylMarco
|
||||
CSharpConsole.AutoCompletes.Clear();
|
||||
string[] completions = CSharpConsole.Instance.m_evaluator.GetCompletions(input, out string prefix);
|
||||
string[] completions = CSharpConsole.Instance.Evaluator.GetCompletions(input, out string prefix);
|
||||
if (completions != null)
|
||||
{
|
||||
if (prefix == null)
|
||||
|
@ -53,15 +53,10 @@ namespace UnityExplorer.UI.Main.CSConsole
|
||||
"else", "equals", "false", "finally", "float", "for", "foreach", "from", "global", "goto", "group",
|
||||
"if", "in", "int", "into", "is", "join", "let", "lock", "long", "new", "null", "object", "on", "orderby", "out",
|
||||
"ref", "remove", "return", "sbyte", "select", "short", "sizeof", "stackalloc", "string",
|
||||
"switch", "throw", "true", "try", "typeof", "uint", "ulong", "ushort", "var", "where", "while", "yield" }
|
||||
};
|
||||
|
||||
public static KeywordMatch invalidKeywordMatcher = new KeywordMatch()
|
||||
{
|
||||
highlightColor = new Color(0.95f, 0.10f, 0.10f, 1.0f),
|
||||
Keywords = new[] { "abstract", "async", "base", "class", "delegate", "enum", "explicit", "extern", "fixed", "get",
|
||||
"implicit", "interface", "internal", "namespace", "operator", "override", "params", "private", "protected", "public",
|
||||
"using", "partial", "readonly", "sealed", "set", "static", "struct", "this", "unchecked", "unsafe", "value", "virtual", "volatile", "void" }
|
||||
"switch", "throw", "true", "try", "typeof", "uint", "ulong", "ushort", "var", "where", "while", "yield",
|
||||
"abstract", "async", "base", "class", "delegate", "enum", "explicit", "extern", "fixed", "get",
|
||||
"implicit", "interface", "internal", "namespace", "operator", "override", "params", "private", "protected", "public",
|
||||
"using", "partial", "readonly", "sealed", "set", "static", "struct", "this", "unchecked", "unsafe", "value", "virtual", "volatile", "void"}
|
||||
};
|
||||
|
||||
// ~~~~~~~ ctor ~~~~~~~
|
||||
@ -78,7 +73,6 @@ namespace UnityExplorer.UI.Main.CSConsole
|
||||
numberMatcher,
|
||||
stringMatcher,
|
||||
validKeywordMatcher,
|
||||
invalidKeywordMatcher,
|
||||
};
|
||||
|
||||
foreach (Matcher lexer in matchers)
|
||||
|
@ -12,6 +12,10 @@ using UnityEngine.UI;
|
||||
using UnityExplorer.UI.Reusable;
|
||||
using UnityExplorer.UI.Main.CSConsole;
|
||||
using UnityExplorer.Core;
|
||||
using UnityExplorer.Core.Unity;
|
||||
#if CPP
|
||||
using UnityExplorer.Core.Runtime.Il2Cpp;
|
||||
#endif
|
||||
|
||||
namespace UnityExplorer.UI.Main.CSConsole
|
||||
{
|
||||
@ -21,8 +25,8 @@ namespace UnityExplorer.UI.Main.CSConsole
|
||||
|
||||
public static CSharpConsole Instance { get; private set; }
|
||||
|
||||
//public UI.CSConsole.CSharpConsole m_codeEditor;
|
||||
public ScriptEvaluator m_evaluator;
|
||||
public ScriptEvaluator Evaluator;
|
||||
internal StringBuilder m_evalLogBuilder;
|
||||
|
||||
public static List<string> UsingDirectives;
|
||||
|
||||
@ -49,14 +53,13 @@ namespace UnityExplorer.UI.Main.CSConsole
|
||||
InitConsole();
|
||||
|
||||
AutoCompleter.Init();
|
||||
#if MONO
|
||||
DummyBehaviour.Setup();
|
||||
#endif
|
||||
|
||||
ResetConsole();
|
||||
|
||||
ResetConsole(false);
|
||||
// Make sure compiler is supported on this platform
|
||||
m_evaluator.Compile("");
|
||||
|
||||
foreach (string use in DefaultUsing)
|
||||
AddUsing(use);
|
||||
Evaluator.Compile("");
|
||||
|
||||
return true;
|
||||
}
|
||||
@ -74,10 +77,32 @@ namespace UnityExplorer.UI.Main.CSConsole
|
||||
}
|
||||
}
|
||||
|
||||
public void ResetConsole(bool log = true)
|
||||
{
|
||||
if (Evaluator != null)
|
||||
Evaluator.Dispose();
|
||||
|
||||
m_evalLogBuilder = new StringBuilder();
|
||||
|
||||
Evaluator = new ScriptEvaluator(new StringWriter(m_evalLogBuilder)) { InteractiveBaseClass = typeof(ScriptInteraction) };
|
||||
|
||||
UsingDirectives = new List<string>();
|
||||
|
||||
foreach (string use in DefaultUsing)
|
||||
AddUsing(use);
|
||||
|
||||
if (log)
|
||||
ExplorerCore.Log($"C# Console reset. Using directives:\r\n{Evaluator.GetUsing()}");
|
||||
}
|
||||
|
||||
public override void Update()
|
||||
{
|
||||
UpdateConsole();
|
||||
|
||||
AutoCompleter.Update();
|
||||
#if CPP
|
||||
Il2CppCoroutine.Process();
|
||||
#endif
|
||||
}
|
||||
|
||||
public void AddUsing(string asm)
|
||||
@ -89,40 +114,34 @@ namespace UnityExplorer.UI.Main.CSConsole
|
||||
}
|
||||
}
|
||||
|
||||
public void Evaluate(string code, bool suppressWarning = false)
|
||||
public void Evaluate(string code, bool supressLog = false)
|
||||
{
|
||||
m_evaluator.Compile(code, out Mono.CSharp.CompiledMethod compiled);
|
||||
|
||||
if (compiled == null)
|
||||
try
|
||||
{
|
||||
if (!suppressWarning)
|
||||
ExplorerCore.LogWarning("Unable to compile the code!");
|
||||
Evaluator.Run(code);
|
||||
|
||||
string output = ScriptEvaluator._textWriter.ToString();
|
||||
var outputSplit = output.Split('\n');
|
||||
if (outputSplit.Length >= 2)
|
||||
output = outputSplit[outputSplit.Length - 2];
|
||||
m_evalLogBuilder.Clear();
|
||||
|
||||
if (ScriptEvaluator._reportPrinter.ErrorsCount > 0)
|
||||
throw new FormatException($"Unable to compile the code. Evaluator's last output was:\r\n{output}");
|
||||
|
||||
if (!supressLog)
|
||||
ExplorerCore.Log("Code executed successfully.");
|
||||
}
|
||||
else
|
||||
catch (FormatException fex)
|
||||
{
|
||||
try
|
||||
{
|
||||
object ret = VoidType.Value;
|
||||
compiled.Invoke(ref ret);
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
if (!suppressWarning)
|
||||
ExplorerCore.LogWarning($"Exception executing code: {e.GetType()}, {e.Message}\r\n{e.StackTrace}");
|
||||
}
|
||||
if (!supressLog)
|
||||
ExplorerCore.LogWarning(fex.Message);
|
||||
}
|
||||
}
|
||||
|
||||
public void ResetConsole()
|
||||
{
|
||||
if (m_evaluator != null)
|
||||
catch (Exception ex)
|
||||
{
|
||||
m_evaluator.Dispose();
|
||||
if (!supressLog)
|
||||
ExplorerCore.LogWarning(ex);
|
||||
}
|
||||
|
||||
m_evaluator = new ScriptEvaluator(new StringWriter(new StringBuilder())) { InteractiveBaseClass = typeof(ScriptInteraction) };
|
||||
|
||||
UsingDirectives = new List<string>();
|
||||
}
|
||||
|
||||
// =================================================================================================
|
||||
@ -160,6 +179,8 @@ The following helper methods are available:
|
||||
|
||||
* <color=#add490>Log(""message"")</color> logs a message to the debug console
|
||||
|
||||
* <color=#add490>StartCoroutine(IEnumerator routine)</color> start the IEnumerator as a UnityEngine.Coroutine
|
||||
|
||||
* <color=#add490>CurrentTarget()</color> returns the currently inspected target on the Home page
|
||||
|
||||
* <color=#add490>AllTargets()</color> returns an object[] array containing all inspected instances
|
||||
@ -284,14 +305,16 @@ The following helper methods are available:
|
||||
return;
|
||||
}
|
||||
|
||||
UpdateIndent(newText);
|
||||
if (EnableAutoIndent)
|
||||
UpdateIndent(newText);
|
||||
|
||||
if (!forceUpdate && string.IsNullOrEmpty(newText))
|
||||
inputHighlightText.text = string.Empty;
|
||||
else
|
||||
inputHighlightText.text = SyntaxHighlightContent(newText);
|
||||
|
||||
UpdateAutocompletes();
|
||||
if (EnableAutocompletes)
|
||||
UpdateAutocompletes();
|
||||
}
|
||||
|
||||
private void UpdateIndent(string newText)
|
||||
@ -445,7 +468,7 @@ The following helper methods are available:
|
||||
mainGroup.childForceExpandHeight = true;
|
||||
mainGroup.childForceExpandWidth = true;
|
||||
|
||||
#region TOP BAR
|
||||
#region TOP BAR
|
||||
|
||||
// Main group object
|
||||
|
||||
@ -521,9 +544,9 @@ The following helper methods are available:
|
||||
autoIndentLayout.flexibleWidth = 0;
|
||||
autoIndentLayout.minHeight = 25;
|
||||
|
||||
#endregion
|
||||
#endregion
|
||||
|
||||
#region CONSOLE INPUT
|
||||
#region CONSOLE INPUT
|
||||
|
||||
int fontSize = 16;
|
||||
|
||||
@ -554,9 +577,38 @@ The following helper methods are available:
|
||||
|
||||
#endregion
|
||||
|
||||
#region COMPILE BUTTON
|
||||
#region COMPILE BUTTON BAR
|
||||
|
||||
var compileBtnObj = UIFactory.CreateButton(Content);
|
||||
var horozGroupObj = UIFactory.CreateHorizontalGroup(Content, new Color(1, 1, 1, 0));
|
||||
var horozGroup = horozGroupObj.GetComponent<HorizontalLayoutGroup>();
|
||||
horozGroup.padding.left = 2;
|
||||
horozGroup.padding.top = 2;
|
||||
horozGroup.padding.right = 2;
|
||||
horozGroup.padding.bottom = 2;
|
||||
|
||||
var resetBtnObj = UIFactory.CreateButton(horozGroupObj);
|
||||
var resetBtnLayout = resetBtnObj.AddComponent<LayoutElement>();
|
||||
resetBtnLayout.preferredWidth = 80;
|
||||
resetBtnLayout.flexibleWidth = 0;
|
||||
resetBtnLayout.minHeight = 45;
|
||||
resetBtnLayout.flexibleHeight = 0;
|
||||
var resetButton = resetBtnObj.GetComponent<Button>();
|
||||
var resetBtnColors = resetButton.colors;
|
||||
resetBtnColors.normalColor = "666666".ToColor();
|
||||
resetButton.colors = resetBtnColors;
|
||||
var resetBtnText = resetBtnObj.GetComponentInChildren<Text>();
|
||||
resetBtnText.text = "Reset";
|
||||
resetBtnText.fontSize = 18;
|
||||
resetBtnText.color = Color.white;
|
||||
|
||||
// Set compile button callback now that we have the Input Field reference
|
||||
resetButton.onClick.AddListener(ResetCallback);
|
||||
void ResetCallback()
|
||||
{
|
||||
ResetConsole();
|
||||
}
|
||||
|
||||
var compileBtnObj = UIFactory.CreateButton(horozGroupObj);
|
||||
var compileBtnLayout = compileBtnObj.AddComponent<LayoutElement>();
|
||||
compileBtnLayout.preferredWidth = 80;
|
||||
compileBtnLayout.flexibleWidth = 0;
|
||||
|
@ -150,8 +150,7 @@ namespace UnityExplorer.UI.Main.Home
|
||||
|
||||
void OnInspectMouseClicked()
|
||||
{
|
||||
InspectUnderMouse.Mode = mode;
|
||||
InspectUnderMouse.StartInspect();
|
||||
InspectUnderMouse.StartInspect(mode);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1,371 +1,332 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
|
||||
<PropertyGroup>
|
||||
<Configuration Condition=" '$(Configuration)' == '' ">Release_ML_Cpp</Configuration>
|
||||
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
|
||||
<ProjectGuid>{B21DBDE3-5D6F-4726-93AB-CC3CC68BAE7D}</ProjectGuid>
|
||||
<OutputType>Library</OutputType>
|
||||
<!--<TargetFrameworkVersion>v4.7.2</TargetFrameworkVersion>-->
|
||||
<AppDesignerFolder>Properties</AppDesignerFolder>
|
||||
<FileAlignment>512</FileAlignment>
|
||||
<Deterministic>true</Deterministic>
|
||||
<TargetFrameworkProfile />
|
||||
<OutputPath>..\Release\UnityExplorer.MelonLoader.Il2Cpp\</OutputPath>
|
||||
<DefineConstants>
|
||||
</DefineConstants>
|
||||
<IsCpp>false</IsCpp>
|
||||
<IsMelonLoader>false</IsMelonLoader>
|
||||
<DebugSymbols>false</DebugSymbols>
|
||||
<DebugType>none</DebugType>
|
||||
<Optimize>false</Optimize>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
<PlatformTarget>x64</PlatformTarget>
|
||||
<Prefer32Bit>false</Prefer32Bit>
|
||||
<RootNamespace>UnityExplorer</RootNamespace>
|
||||
<!-- Set this to the BepInEx Il2Cpp Game folder, without the ending '\' character. -->
|
||||
<BIECppGameFolder>E:\source\Unity Projects\Test\_BUILD</BIECppGameFolder>
|
||||
<!-- Set this to the MelonLoader Il2Cpp Game folder, without the ending '\' character. -->
|
||||
<MLCppGameFolder>E:\source\Unity Projects\Test\_BUILD</MLCppGameFolder>
|
||||
<NuGetPackageImportStamp>
|
||||
</NuGetPackageImportStamp>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release_ML_Cpp|AnyCPU' ">
|
||||
<TargetFrameworkVersion>v4.7.2</TargetFrameworkVersion>
|
||||
<OutputPath>..\Release\UnityExplorer.MelonLoader.Il2Cpp\</OutputPath>
|
||||
<DefineConstants>CPP,ML</DefineConstants>
|
||||
<AssemblyName>UnityExplorer.ML.IL2CPP</AssemblyName>
|
||||
<IsCpp>true</IsCpp>
|
||||
<IsMelonLoader>true</IsMelonLoader>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release_ML_Mono|AnyCPU' ">
|
||||
<TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
|
||||
<OutputPath>..\Release\UnityExplorer.MelonLoader.Mono\</OutputPath>
|
||||
<DefineConstants>MONO,ML</DefineConstants>
|
||||
<AssemblyName>UnityExplorer.ML.Mono</AssemblyName>
|
||||
<Prefer32Bit>false</Prefer32Bit>
|
||||
<IsCpp>false</IsCpp>
|
||||
<IsMelonLoader>true</IsMelonLoader>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release_BIE_Cpp|AnyCPU' ">
|
||||
<TargetFrameworkVersion>v4.7.2</TargetFrameworkVersion>
|
||||
<OutputPath>..\Release\UnityExplorer.BepInEx.Il2Cpp\</OutputPath>
|
||||
<DefineConstants>CPP,BIE,BIE6</DefineConstants>
|
||||
<AssemblyName>UnityExplorer.BIE.IL2CPP</AssemblyName>
|
||||
<IsCpp>true</IsCpp>
|
||||
<IsMelonLoader>false</IsMelonLoader>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release_BIE6_Mono|AnyCPU' ">
|
||||
<TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
|
||||
<OutputPath>..\Release\UnityExplorer.BepInEx6.Mono\</OutputPath>
|
||||
<DefineConstants>MONO,BIE,BIE6</DefineConstants>
|
||||
<AssemblyName>UnityExplorer.BIE6.Mono</AssemblyName>
|
||||
<IsCpp>false</IsCpp>
|
||||
<IsMelonLoader>false</IsMelonLoader>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release_BIE5_Mono|AnyCPU'">
|
||||
<TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
|
||||
<OutputPath>..\Release\UnityExplorer.BepInEx5.Mono\</OutputPath>
|
||||
<DefineConstants>MONO,BIE,BIE5</DefineConstants>
|
||||
<AssemblyName>UnityExplorer.BIE5.Mono</AssemblyName>
|
||||
<IsCpp>false</IsCpp>
|
||||
<IsMelonLoader>false</IsMelonLoader>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release_STANDALONE_Mono|AnyCPU'">
|
||||
<TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
|
||||
<OutputPath>..\Release\UnityExplorer.Standalone.Mono\</OutputPath>
|
||||
<DefineConstants>MONO,STANDALONE</DefineConstants>
|
||||
<AssemblyName>UnityExplorer.STANDALONE.Mono</AssemblyName>
|
||||
<IsCpp>false</IsCpp>
|
||||
<IsMelonLoader>false</IsMelonLoader>
|
||||
<IsStandalone>true</IsStandalone>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release_STANDALONE_Cpp|AnyCPU'">
|
||||
<TargetFrameworkVersion>v4.7.2</TargetFrameworkVersion>
|
||||
<OutputPath>..\Release\UnityExplorer.Standalone.Il2Cpp\</OutputPath>
|
||||
<DefineConstants>CPP,STANDALONE</DefineConstants>
|
||||
<AssemblyName>UnityExplorer.STANDALONE.IL2CPP</AssemblyName>
|
||||
<IsCpp>true</IsCpp>
|
||||
<IsMelonLoader>false</IsMelonLoader>
|
||||
<IsStandalone>true</IsStandalone>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="INIFileParser, Version=2.5.2.0, Culture=neutral, PublicKeyToken=79af7b307b65cf3c, processorArchitecture=MSIL">
|
||||
<HintPath>packages\ini-parser.2.5.2\lib\net20\INIFileParser.dll</HintPath>
|
||||
<Private>False</Private>
|
||||
</Reference>
|
||||
<Reference Include="System" />
|
||||
<Reference Include="System.Core" />
|
||||
<Reference Include="System.Xml.Linq" />
|
||||
<Reference Include="System.Data.DataSetExtensions" />
|
||||
<Reference Include="System.Data" />
|
||||
<Reference Include="System.Xml" />
|
||||
<!-- MCS ref -->
|
||||
<Reference Include="mcs">
|
||||
<HintPath>..\lib\mcs.dll</HintPath>
|
||||
<Private>False</Private>
|
||||
</Reference>
|
||||
</ItemGroup>
|
||||
<!-- Universal Mono UnityEngine.dll ref (v5.3) -->
|
||||
<ItemGroup Condition="'$(IsCpp)'=='false'">
|
||||
<Reference Include="UnityEngine">
|
||||
<HintPath>..\lib\UnityEngine.dll</HintPath>
|
||||
<Private>False</Private>
|
||||
</Reference>
|
||||
<Reference Include="UnityEngine.UI">
|
||||
<HintPath>..\lib\UnityEngine.UI.dll</HintPath>
|
||||
<Private>False</Private>
|
||||
</Reference>
|
||||
</ItemGroup>
|
||||
<!-- MelonLoader Mono refs -->
|
||||
<ItemGroup Condition="'$(IsMelonLoader)|$(IsCpp)'=='true|false'">
|
||||
<Reference Include="MelonLoader">
|
||||
<HintPath>..\lib\MelonLoader.dll</HintPath>
|
||||
<Private>False</Private>
|
||||
</Reference>
|
||||
</ItemGroup>
|
||||
<!-- BepInEx 5 Mono refs -->
|
||||
<ItemGroup Condition="'$(IsMelonLoader)|$(IsCpp)|$(Configuration)'=='false|false|Release_BIE5_Mono'">
|
||||
<Reference Include="BepInEx">
|
||||
<HintPath>..\lib\BepInEx.dll</HintPath>
|
||||
<Private>False</Private>
|
||||
</Reference>
|
||||
<Reference Include="0Harmony">
|
||||
<HintPath>..\lib\0Harmony.dll</HintPath>
|
||||
<Private>False</Private>
|
||||
</Reference>
|
||||
</ItemGroup>
|
||||
<!-- BepInEx 6 Mono refs -->
|
||||
<ItemGroup Condition="'$(IsMelonLoader)|$(IsCpp)|$(Configuration)'=='false|false|Release_BIE6_Mono'">
|
||||
<Reference Include="BepInEx">
|
||||
<HintPath>..\lib\BepInEx.Core.dll</HintPath>
|
||||
<Private>False</Private>
|
||||
</Reference>
|
||||
<Reference Include="BepInEx.Unity">
|
||||
<HintPath>..\lib\BepInEx.Unity.dll</HintPath>
|
||||
<Private>False</Private>
|
||||
</Reference>
|
||||
<Reference Include="0Harmony">
|
||||
<HintPath>..\lib\0Harmony.dll</HintPath>
|
||||
<Private>False</Private>
|
||||
</Reference>
|
||||
</ItemGroup>
|
||||
<!-- Standalone refs -->
|
||||
<ItemGroup Condition="'$(IsStandalone)'=='true'">
|
||||
<Reference Include="0Harmony">
|
||||
<HintPath>..\lib\0Harmony.dll</HintPath>
|
||||
<Private>False</Private>
|
||||
</Reference>
|
||||
</ItemGroup>
|
||||
<!-- MelonLoader Il2Cpp refs -->
|
||||
<ItemGroup Condition="'$(IsMelonLoader)|$(IsCpp)'=='true|true'">
|
||||
<Reference Include="MelonLoader">
|
||||
<HintPath>$(MLCppGameFolder)\MelonLoader\MelonLoader.dll</HintPath>
|
||||
<Private>False</Private>
|
||||
</Reference>
|
||||
<Reference Include="UnhollowerBaseLib">
|
||||
<HintPath>$(MLCppGameFolder)\MelonLoader\Managed\UnhollowerBaseLib.dll</HintPath>
|
||||
<Private>False</Private>
|
||||
</Reference>
|
||||
<Reference Include="Il2Cppmscorlib">
|
||||
<HintPath>$(MLCppGameFolder)\MelonLoader\Managed\Il2Cppmscorlib.dll</HintPath>
|
||||
<Private>False</Private>
|
||||
</Reference>
|
||||
<Reference Include="Il2CppSystem.Core">
|
||||
<HintPath>$(MLCppGameFolder)\MelonLoader\Managed\Il2CppSystem.Core.dll</HintPath>
|
||||
<Private>False</Private>
|
||||
</Reference>
|
||||
<Reference Include="UnityEngine">
|
||||
<HintPath>$(MLCppGameFolder)\MelonLoader\Managed\UnityEngine.dll</HintPath>
|
||||
<Private>False</Private>
|
||||
</Reference>
|
||||
<Reference Include="UnityEngine.CoreModule">
|
||||
<HintPath>$(MLCppGameFolder)\MelonLoader\Managed\UnityEngine.CoreModule.dll</HintPath>
|
||||
<Private>False</Private>
|
||||
</Reference>
|
||||
<Reference Include="UnityEngine.PhysicsModule">
|
||||
<HintPath>$(MLCppGameFolder)\MelonLoader\Managed\UnityEngine.PhysicsModule.dll</HintPath>
|
||||
<Private>False</Private>
|
||||
</Reference>
|
||||
<Reference Include="UnityEngine.TextRenderingModule">
|
||||
<HintPath>$(MLCppGameFolder)\MelonLoader\Managed\UnityEngine.TextRenderingModule.dll</HintPath>
|
||||
<Private>False</Private>
|
||||
</Reference>
|
||||
<Reference Include="UnityEngine.UI">
|
||||
<HintPath>$(MLCppGameFolder)\MelonLoader\Managed\UnityEngine.UI.dll</HintPath>
|
||||
<Private>False</Private>
|
||||
</Reference>
|
||||
<Reference Include="UnityEngine.UIModule">
|
||||
<HintPath>$(MLCppGameFolder)\MelonLoader\Managed\UnityEngine.UIModule.dll</HintPath>
|
||||
<Private>False</Private>
|
||||
</Reference>
|
||||
<Reference Include="UnityEngine.IMGUIModule">
|
||||
<HintPath>$(MLCppGameFolder)\MelonLoader\Managed\UnityEngine.IMGUIModule.dll</HintPath>
|
||||
<Private>False</Private>
|
||||
</Reference>
|
||||
</ItemGroup>
|
||||
<!-- BepInEx Il2Cpp refs -->
|
||||
<ItemGroup Condition="'$(IsMelonLoader)|$(IsCpp)'=='false|true'">
|
||||
<Reference Include="BepInEx">
|
||||
<HintPath>$(BIECppGameFolder)\BepInEx\core\BepInEx.Core.dll</HintPath>
|
||||
<Private>False</Private>
|
||||
</Reference>
|
||||
<Reference Include="0Harmony">
|
||||
<HintPath>$(BIECppGameFolder)\BepInEx\core\0Harmony.dll</HintPath>
|
||||
<Private>False</Private>
|
||||
</Reference>
|
||||
<Reference Include="BepInEx.IL2CPP">
|
||||
<HintPath>$(BIECppGameFolder)\BepInEx\core\BepInEx.IL2CPP.dll</HintPath>
|
||||
<Private>False</Private>
|
||||
</Reference>
|
||||
<Reference Include="UnhollowerBaseLib">
|
||||
<HintPath>$(BIECppGameFolder)\BepInEx\core\UnhollowerBaseLib.dll</HintPath>
|
||||
<Private>False</Private>
|
||||
</Reference>
|
||||
<Reference Include="Il2Cppmscorlib">
|
||||
<HintPath>$(BIECppGameFolder)\BepInEx\unhollowed\Il2Cppmscorlib.dll</HintPath>
|
||||
<Private>False</Private>
|
||||
</Reference>
|
||||
<Reference Include="Il2CppSystem.Core">
|
||||
<HintPath>$(BIECppGameFolder)\BepInEx\unhollowed\Il2CppSystem.Core.dll</HintPath>
|
||||
<Private>False</Private>
|
||||
</Reference>
|
||||
<Reference Include="UnityEngine">
|
||||
<HintPath>$(BIECppGameFolder)\BepInEx\unhollowed\UnityEngine.dll</HintPath>
|
||||
<Private>False</Private>
|
||||
</Reference>
|
||||
<Reference Include="UnityEngine.CoreModule">
|
||||
<HintPath>$(BIECppGameFolder)\BepInEx\unhollowed\UnityEngine.CoreModule.dll</HintPath>
|
||||
<Private>False</Private>
|
||||
</Reference>
|
||||
<Reference Include="UnityEngine.PhysicsModule">
|
||||
<HintPath>$(BIECppGameFolder)\BepInEx\unhollowed\UnityEngine.PhysicsModule.dll</HintPath>
|
||||
<Private>False</Private>
|
||||
</Reference>
|
||||
<Reference Include="UnityEngine.TextRenderingModule">
|
||||
<HintPath>$(BIECppGameFolder)\BepInEx\unhollowed\UnityEngine.TextRenderingModule.dll</HintPath>
|
||||
<Private>False</Private>
|
||||
</Reference>
|
||||
<Reference Include="UnityEngine.UI">
|
||||
<HintPath>$(BIECppGameFolder)\BepInEx\unhollowed\UnityEngine.UI.dll</HintPath>
|
||||
<Private>False</Private>
|
||||
</Reference>
|
||||
<Reference Include="UnityEngine.UIModule">
|
||||
<HintPath>$(BIECppGameFolder)\BepInEx\unhollowed\UnityEngine.UIModule.dll</HintPath>
|
||||
<Private>False</Private>
|
||||
</Reference>
|
||||
<Reference Include="UnityEngine.IMGUIModule">
|
||||
<HintPath>$(BIECppGameFolder)\BepInEx\unhollowed\UnityEngine.IMGUIModule.dll</HintPath>
|
||||
<Private>False</Private>
|
||||
</Reference>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Compile Include="Loader\ExplorerBepIn6Plugin.cs" />
|
||||
<Compile Include="Loader\ExplorerStandalone.cs" />
|
||||
<Compile Include="Core\Runtime\Il2Cpp\Il2CppReflection.cs" />
|
||||
<Compile Include="Core\Runtime\Il2Cpp\Il2CppTextureUtil.cs" />
|
||||
<Compile Include="Core\Runtime\Mono\MonoReflection.cs" />
|
||||
<Compile Include="Core\Runtime\Mono\MonoTextureUtil.cs" />
|
||||
<Compile Include="Core\Runtime\ReflectionProvider.cs" />
|
||||
<Compile Include="Core\Runtime\TextureUtilProvider.cs" />
|
||||
<Compile Include="Core\Inspectors\InspectUnderMouse.cs" />
|
||||
<Compile Include="Core\Inspectors\Reflection\CacheObject\CacheEnumerated.cs" />
|
||||
<Compile Include="Core\Inspectors\Reflection\CacheObject\CacheField.cs" />
|
||||
<Compile Include="Core\Inspectors\Reflection\CacheObject\CachePaired.cs" />
|
||||
<Compile Include="Core\Inspectors\Reflection\CacheObject\CacheMember.cs" />
|
||||
<Compile Include="Core\Inspectors\Reflection\CacheObject\CacheMethod.cs" />
|
||||
<Compile Include="Core\Inspectors\Reflection\CacheObject\CacheProperty.cs" />
|
||||
<Compile Include="Core\Inspectors\Reflection\CacheObject\CacheObjectBase.cs" />
|
||||
<Compile Include="Core\Config\ExplorerConfig.cs" />
|
||||
<Compile Include="ExplorerCore.cs" />
|
||||
<Compile Include="Loader\ExplorerBepIn5Plugin.cs" />
|
||||
<Compile Include="Loader\ExplorerMelonMod.cs" />
|
||||
<Compile Include="Core\ReflectionUtility.cs" />
|
||||
<Compile Include="Core\Unity\UnityHelper.cs" />
|
||||
<Compile Include="UI\Main\Home\Inspectors\GameObjects\ChildList.cs" />
|
||||
<Compile Include="UI\Main\Home\Inspectors\GameObjects\ComponentList.cs" />
|
||||
<Compile Include="UI\Main\Home\Inspectors\GameObjects\GameObjectControls.cs" />
|
||||
<Compile Include="Core\Inspectors\Reflection\InteractiveValue\InteractiveBool.cs" />
|
||||
<Compile Include="Core\Inspectors\Reflection\InteractiveValue\InteractiveDictionary.cs" />
|
||||
<Compile Include="Core\Inspectors\Reflection\InteractiveValue\InteractiveEnum.cs" />
|
||||
<Compile Include="Core\Inspectors\Reflection\InteractiveValue\InteractiveEnumerable.cs" />
|
||||
<Compile Include="Core\Inspectors\Reflection\InteractiveValue\InteractiveFlags.cs" />
|
||||
<Compile Include="Core\Inspectors\Reflection\InteractiveValue\InteractiveNumber.cs" />
|
||||
<Compile Include="Core\Inspectors\Reflection\InteractiveValue\InteractiveString.cs" />
|
||||
<Compile Include="Core\Inspectors\Reflection\InteractiveValue\InteractiveUnityStruct.cs" />
|
||||
<Compile Include="Loader\IExplorerLoader.cs" />
|
||||
<Compile Include="Core\Runtime\Il2Cpp\Il2CppProvider.cs" />
|
||||
<Compile Include="Core\Runtime\RuntimeProvider.cs" />
|
||||
<Compile Include="Core\Runtime\Mono\MonoProvider.cs" />
|
||||
<Compile Include="Core\Search\ChildFilter.cs" />
|
||||
<Compile Include="Core\Search\SceneFilter.cs" />
|
||||
<Compile Include="Core\Search\SearchContext.cs" />
|
||||
<Compile Include="Core\Search\SearchProvider.cs" />
|
||||
<Compile Include="UI\Main\Home\InspectorManagerUI.cs" />
|
||||
<Compile Include="UI\Main\Home\Inspectors\GameObjects\GameObjectInspectorUI.cs" />
|
||||
<Compile Include="UI\Main\Home\Inspectors\InspectorBaseUI.cs" />
|
||||
<Compile Include="UI\Main\Home\Inspectors\Reflection\InstanceInspectorUI.cs" />
|
||||
<Compile Include="UI\Main\Home\Inspectors\MouseInspectorUI.cs" />
|
||||
<Compile Include="UI\Main\Home\Inspectors\Reflection\ReflectionInspectorUI.cs" />
|
||||
<Compile Include="UI\Main\Home\SceneExplorerUI.cs" />
|
||||
<Compile Include="UI\Utility\CursorUnlocker.cs" />
|
||||
<Compile Include="Core\Input\IHandleInput.cs" />
|
||||
<Compile Include="Core\Tests\Tests.cs" />
|
||||
<Compile Include="Core\Input\InputManager.cs" />
|
||||
<Compile Include="Core\Input\InputSystem.cs" />
|
||||
<Compile Include="Core\Input\LegacyInput.cs" />
|
||||
<Compile Include="Core\Input\NoInput.cs" />
|
||||
<Compile Include="UI\Main\DebugConsole.cs" />
|
||||
<Compile Include="Core\InspectorManager.cs" />
|
||||
<Compile Include="Core\Inspectors\Reflection\ReflectionInspector.cs" />
|
||||
<Compile Include="UI\Main\MainMenu.cs" />
|
||||
<Compile Include="UI\Main\CSConsole\CSharpConsole.cs" />
|
||||
<Compile Include="UI\Main\CSConsole\AutoCompleter.cs" />
|
||||
<Compile Include="UI\Main\CSConsole\Lexer\CommentMatch.cs" />
|
||||
<Compile Include="UI\Main\CSConsole\CSLexerHighlighter.cs" />
|
||||
<Compile Include="UI\Main\CSConsole\Lexer\KeywordMatch.cs" />
|
||||
<Compile Include="UI\Main\CSConsole\Lexer\StringMatch.cs" />
|
||||
<Compile Include="UI\Main\CSConsole\Lexer\Matcher.cs" />
|
||||
<Compile Include="UI\Main\CSConsole\Lexer\NumberMatch.cs" />
|
||||
<Compile Include="UI\Main\CSConsole\Lexer\SymbolMatch.cs" />
|
||||
<Compile Include="Core\CSharp\Suggestion.cs" />
|
||||
<Compile Include="Core\CSharp\ScriptEvaluator.cs" />
|
||||
<Compile Include="Core\CSharp\ScriptInteraction.cs" />
|
||||
<Compile Include="UI\Main\Home\HomePage.cs" />
|
||||
<Compile Include="Core\Inspectors\GameObjects\GameObjectInspector.cs" />
|
||||
<Compile Include="Core\Inspectors\InspectorBase.cs" />
|
||||
<Compile Include="Core\Inspectors\Reflection\InstanceInspector.cs" />
|
||||
<Compile Include="Core\Inspectors\Reflection\StaticInspector.cs" />
|
||||
<Compile Include="UI\Main\BaseMenuPage.cs" />
|
||||
<Compile Include="UI\Main\Options\OptionsPage.cs" />
|
||||
<Compile Include="Core\SceneExplorer.cs" />
|
||||
<Compile Include="UI\Main\Search\SearchPage.cs" />
|
||||
<Compile Include="UI\Main\PanelDragger.cs" />
|
||||
<Compile Include="Core\Inspectors\Reflection\InteractiveValue\InteractiveValue.cs" />
|
||||
<Compile Include="UI\Reusable\InputFieldScroller.cs" />
|
||||
<Compile Include="UI\Reusable\SliderScrollbar.cs" />
|
||||
<Compile Include="UI\Reusable\PageHandler.cs" />
|
||||
<Compile Include="UI\Utility\SignatureHighlighter.cs" />
|
||||
<Compile Include="UI\UIManager.cs" />
|
||||
<Compile Include="Core\Runtime\Il2Cpp\AssetBundle.cs" />
|
||||
<Compile Include="Core\Unity\ColorHelper.cs" />
|
||||
<Compile Include="Core\Runtime\Il2Cpp\ICallManager.cs" />
|
||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||
<Compile Include="UI\UIFactory.cs" />
|
||||
<EmbeddedResource Include="Resources\*" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="ILRepack.targets" />
|
||||
<None Include="packages.config" />
|
||||
</ItemGroup>
|
||||
<ItemGroup />
|
||||
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
||||
<Import Project="packages\ILRepack.Lib.MSBuild.Task.2.0.18.1\build\ILRepack.Lib.MSBuild.Task.targets" Condition="Exists('packages\ILRepack.Lib.MSBuild.Task.2.0.18.1\build\ILRepack.Lib.MSBuild.Task.targets')" />
|
||||
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
|
||||
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
|
||||
<PropertyGroup>
|
||||
<ErrorText>This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
|
||||
<Configuration Condition=" '$(Configuration)' == '' ">Release_ML_Cpp</Configuration>
|
||||
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
|
||||
<ProjectGuid>{B21DBDE3-5D6F-4726-93AB-CC3CC68BAE7D}</ProjectGuid>
|
||||
<OutputType>Library</OutputType>
|
||||
<!--<TargetFrameworkVersion>v4.7.2</TargetFrameworkVersion>-->
|
||||
<AppDesignerFolder>Properties</AppDesignerFolder>
|
||||
<FileAlignment>512</FileAlignment>
|
||||
<Deterministic>true</Deterministic>
|
||||
<TargetFrameworkProfile />
|
||||
<OutputPath>..\Release\UnityExplorer.MelonLoader.Il2Cpp\</OutputPath>
|
||||
<DefineConstants>
|
||||
</DefineConstants>
|
||||
<IsCpp>false</IsCpp>
|
||||
<IsMelonLoader>false</IsMelonLoader>
|
||||
<DebugSymbols>false</DebugSymbols>
|
||||
<DebugType>none</DebugType>
|
||||
<Optimize>false</Optimize>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
<PlatformTarget>x64</PlatformTarget>
|
||||
<Prefer32Bit>false</Prefer32Bit>
|
||||
<RootNamespace>UnityExplorer</RootNamespace>
|
||||
<NuGetPackageImportStamp>
|
||||
</NuGetPackageImportStamp>
|
||||
</PropertyGroup>
|
||||
<Error Condition="!Exists('packages\ILRepack.Lib.MSBuild.Task.2.0.18.1\build\ILRepack.Lib.MSBuild.Task.targets')" Text="$([System.String]::Format('$(ErrorText)', 'packages\ILRepack.Lib.MSBuild.Task.2.0.18.1\build\ILRepack.Lib.MSBuild.Task.targets'))" />
|
||||
</Target>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release_ML_Cpp|AnyCPU' ">
|
||||
<TargetFrameworkVersion>v4.7.2</TargetFrameworkVersion>
|
||||
<OutputPath>..\Release\UnityExplorer.MelonLoader.Il2Cpp\</OutputPath>
|
||||
<DefineConstants>CPP,ML</DefineConstants>
|
||||
<AssemblyName>UnityExplorer.ML.IL2CPP</AssemblyName>
|
||||
<IsCpp>true</IsCpp>
|
||||
<IsMelonLoader>true</IsMelonLoader>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release_ML_Mono|AnyCPU' ">
|
||||
<TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
|
||||
<OutputPath>..\Release\UnityExplorer.MelonLoader.Mono\</OutputPath>
|
||||
<DefineConstants>MONO,ML</DefineConstants>
|
||||
<AssemblyName>UnityExplorer.ML.Mono</AssemblyName>
|
||||
<Prefer32Bit>false</Prefer32Bit>
|
||||
<IsCpp>false</IsCpp>
|
||||
<IsMelonLoader>true</IsMelonLoader>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release_BIE_Cpp|AnyCPU' ">
|
||||
<TargetFrameworkVersion>v4.7.2</TargetFrameworkVersion>
|
||||
<OutputPath>..\Release\UnityExplorer.BepInEx.Il2Cpp\</OutputPath>
|
||||
<DefineConstants>CPP,BIE,BIE6</DefineConstants>
|
||||
<AssemblyName>UnityExplorer.BIE.IL2CPP</AssemblyName>
|
||||
<IsCpp>true</IsCpp>
|
||||
<IsMelonLoader>false</IsMelonLoader>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release_BIE6_Mono|AnyCPU' ">
|
||||
<TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
|
||||
<OutputPath>..\Release\UnityExplorer.BepInEx6.Mono\</OutputPath>
|
||||
<DefineConstants>MONO,BIE,BIE6</DefineConstants>
|
||||
<AssemblyName>UnityExplorer.BIE6.Mono</AssemblyName>
|
||||
<IsCpp>false</IsCpp>
|
||||
<IsMelonLoader>false</IsMelonLoader>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release_BIE5_Mono|AnyCPU'">
|
||||
<TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
|
||||
<OutputPath>..\Release\UnityExplorer.BepInEx5.Mono\</OutputPath>
|
||||
<DefineConstants>MONO,BIE,BIE5</DefineConstants>
|
||||
<AssemblyName>UnityExplorer.BIE5.Mono</AssemblyName>
|
||||
<IsCpp>false</IsCpp>
|
||||
<IsMelonLoader>false</IsMelonLoader>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release_STANDALONE_Mono|AnyCPU'">
|
||||
<TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
|
||||
<OutputPath>..\Release\UnityExplorer.Standalone.Mono\</OutputPath>
|
||||
<DefineConstants>MONO,STANDALONE</DefineConstants>
|
||||
<AssemblyName>UnityExplorer.STANDALONE.Mono</AssemblyName>
|
||||
<IsCpp>false</IsCpp>
|
||||
<IsMelonLoader>false</IsMelonLoader>
|
||||
<IsStandalone>true</IsStandalone>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release_STANDALONE_Cpp|AnyCPU'">
|
||||
<TargetFrameworkVersion>v4.7.2</TargetFrameworkVersion>
|
||||
<OutputPath>..\Release\UnityExplorer.Standalone.Il2Cpp\</OutputPath>
|
||||
<DefineConstants>CPP,STANDALONE</DefineConstants>
|
||||
<AssemblyName>UnityExplorer.STANDALONE.IL2CPP</AssemblyName>
|
||||
<IsCpp>true</IsCpp>
|
||||
<IsMelonLoader>false</IsMelonLoader>
|
||||
<IsStandalone>true</IsStandalone>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="INIFileParser, Version=2.5.2.0, Culture=neutral, PublicKeyToken=79af7b307b65cf3c, processorArchitecture=MSIL">
|
||||
<HintPath>packages\ini-parser.2.5.2\lib\net20\INIFileParser.dll</HintPath>
|
||||
<Private>False</Private>
|
||||
</Reference>
|
||||
<Reference Include="System" />
|
||||
<Reference Include="System.Core" />
|
||||
<Reference Include="System.Xml.Linq" />
|
||||
<Reference Include="System.Data.DataSetExtensions" />
|
||||
<Reference Include="System.Data" />
|
||||
<Reference Include="System.Xml" />
|
||||
<!-- MCS ref -->
|
||||
<Reference Include="mcs">
|
||||
<HintPath>..\lib\mcs.dll</HintPath>
|
||||
<Private>False</Private>
|
||||
</Reference>
|
||||
</ItemGroup>
|
||||
<!-- Universal Mono UnityEngine.dll ref (v5.3) -->
|
||||
<ItemGroup Condition="'$(IsCpp)'=='false'">
|
||||
<Reference Include="UnityEngine">
|
||||
<HintPath>..\lib\UnityEngine.dll</HintPath>
|
||||
<Private>False</Private>
|
||||
</Reference>
|
||||
<Reference Include="UnityEngine.UI">
|
||||
<HintPath>..\lib\UnityEngine.UI.dll</HintPath>
|
||||
<Private>False</Private>
|
||||
</Reference>
|
||||
</ItemGroup>
|
||||
<!-- MelonLoader Mono refs -->
|
||||
<ItemGroup Condition="'$(IsMelonLoader)|$(IsCpp)'=='true|false'">
|
||||
<Reference Include="MelonLoader">
|
||||
<HintPath>..\lib\MelonLoader.dll</HintPath>
|
||||
<Private>False</Private>
|
||||
</Reference>
|
||||
</ItemGroup>
|
||||
<!-- BepInEx 5 Mono refs -->
|
||||
<ItemGroup Condition="'$(IsMelonLoader)|$(IsCpp)|$(Configuration)'=='false|false|Release_BIE5_Mono'">
|
||||
<Reference Include="BepInEx">
|
||||
<HintPath>..\lib\BepInEx.dll</HintPath>
|
||||
<Private>False</Private>
|
||||
</Reference>
|
||||
<Reference Include="0Harmony">
|
||||
<HintPath>..\lib\0Harmony.dll</HintPath>
|
||||
<Private>False</Private>
|
||||
</Reference>
|
||||
</ItemGroup>
|
||||
<!-- BepInEx 6 Mono refs -->
|
||||
<ItemGroup Condition="'$(IsMelonLoader)|$(IsCpp)|$(Configuration)'=='false|false|Release_BIE6_Mono'">
|
||||
<Reference Include="BepInEx">
|
||||
<HintPath>..\lib\BepInEx.Core.dll</HintPath>
|
||||
<Private>False</Private>
|
||||
</Reference>
|
||||
<Reference Include="BepInEx.Unity">
|
||||
<HintPath>..\lib\BepInEx.Unity.dll</HintPath>
|
||||
<Private>False</Private>
|
||||
</Reference>
|
||||
<Reference Include="0Harmony">
|
||||
<HintPath>..\lib\0Harmony.dll</HintPath>
|
||||
<Private>False</Private>
|
||||
</Reference>
|
||||
</ItemGroup>
|
||||
<!-- Standalone refs -->
|
||||
<ItemGroup Condition="'$(IsStandalone)'=='true'">
|
||||
<Reference Include="0Harmony">
|
||||
<HintPath>..\lib\0Harmony.dll</HintPath>
|
||||
<Private>False</Private>
|
||||
</Reference>
|
||||
</ItemGroup>
|
||||
<!-- MelonLoader Il2Cpp refs -->
|
||||
<ItemGroup Condition="'$(IsMelonLoader)|$(IsCpp)'=='true|true'">
|
||||
<Reference Include="MelonLoader">
|
||||
<HintPath>..\lib\MelonLoader.dll</HintPath>
|
||||
<Private>False</Private>
|
||||
</Reference>
|
||||
</ItemGroup>
|
||||
<!-- BepInEx Il2Cpp refs -->
|
||||
<ItemGroup Condition="'$(IsMelonLoader)|$(IsCpp)'=='false|true'">
|
||||
<Reference Include="BepInEx">
|
||||
<HintPath>..\lib\BepInEx.Core.dll</HintPath>
|
||||
<Private>False</Private>
|
||||
</Reference>
|
||||
<Reference Include="0Harmony">
|
||||
<HintPath>..\lib\0Harmony.dll</HintPath>
|
||||
<Private>False</Private>
|
||||
</Reference>
|
||||
<Reference Include="BepInEx.IL2CPP">
|
||||
<HintPath>..\lib\BepInEx.IL2CPP.dll</HintPath>
|
||||
<Private>False</Private>
|
||||
</Reference>
|
||||
</ItemGroup>
|
||||
<!-- Unhollowed Il2Cpp refs -->
|
||||
<ItemGroup Condition="'$(IsCpp)'=='true'">
|
||||
<Reference Include="UnhollowerBaseLib">
|
||||
<HintPath>..\lib\UnhollowerBaseLib.dll</HintPath>
|
||||
<Private>False</Private>
|
||||
</Reference>
|
||||
<Reference Include="Il2Cppmscorlib">
|
||||
<HintPath>..\lib\unhollowed\Il2Cppmscorlib.dll</HintPath>
|
||||
<Private>False</Private>
|
||||
</Reference>
|
||||
<Reference Include="Il2CppSystem.Core">
|
||||
<HintPath>..\lib\unhollowed\Il2CppSystem.Core.dll</HintPath>
|
||||
<Private>False</Private>
|
||||
</Reference>
|
||||
<Reference Include="UnityEngine">
|
||||
<HintPath>..\lib\unhollowed\UnityEngine.dll</HintPath>
|
||||
<Private>False</Private>
|
||||
</Reference>
|
||||
<Reference Include="UnityEngine.CoreModule">
|
||||
<HintPath>..\lib\unhollowed\UnityEngine.CoreModule.dll</HintPath>
|
||||
<Private>False</Private>
|
||||
</Reference>
|
||||
<Reference Include="UnityEngine.PhysicsModule">
|
||||
<HintPath>..\lib\unhollowed\UnityEngine.PhysicsModule.dll</HintPath>
|
||||
<Private>False</Private>
|
||||
</Reference>
|
||||
<Reference Include="UnityEngine.TextRenderingModule">
|
||||
<HintPath>..\lib\unhollowed\UnityEngine.TextRenderingModule.dll</HintPath>
|
||||
<Private>False</Private>
|
||||
</Reference>
|
||||
<Reference Include="UnityEngine.UI">
|
||||
<HintPath>..\lib\unhollowed\UnityEngine.UI.dll</HintPath>
|
||||
<Private>False</Private>
|
||||
</Reference>
|
||||
<Reference Include="UnityEngine.UIModule">
|
||||
<HintPath>..\lib\unhollowed\UnityEngine.UIModule.dll</HintPath>
|
||||
<Private>False</Private>
|
||||
</Reference>
|
||||
<Reference Include="UnityEngine.IMGUIModule">
|
||||
<HintPath>..\lib\unhollowed\UnityEngine.IMGUIModule.dll</HintPath>
|
||||
<Private>False</Private>
|
||||
</Reference>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Compile Include="Core\CSharp\DummyBehaviour.cs" />
|
||||
<Compile Include="Core\Runtime\Il2Cpp\Il2CppCoroutine.cs" />
|
||||
<Compile Include="Loader\ExplorerBepIn6Plugin.cs" />
|
||||
<Compile Include="Loader\ExplorerStandalone.cs" />
|
||||
<Compile Include="Core\Runtime\Il2Cpp\Il2CppReflection.cs" />
|
||||
<Compile Include="Core\Runtime\Il2Cpp\Il2CppTextureUtil.cs" />
|
||||
<Compile Include="Core\Runtime\Mono\MonoReflection.cs" />
|
||||
<Compile Include="Core\Runtime\Mono\MonoTextureUtil.cs" />
|
||||
<Compile Include="Core\Runtime\ReflectionProvider.cs" />
|
||||
<Compile Include="Core\Runtime\TextureUtilProvider.cs" />
|
||||
<Compile Include="Core\Inspectors\InspectUnderMouse.cs" />
|
||||
<Compile Include="Core\Inspectors\Reflection\CacheObject\CacheEnumerated.cs" />
|
||||
<Compile Include="Core\Inspectors\Reflection\CacheObject\CacheField.cs" />
|
||||
<Compile Include="Core\Inspectors\Reflection\CacheObject\CachePaired.cs" />
|
||||
<Compile Include="Core\Inspectors\Reflection\CacheObject\CacheMember.cs" />
|
||||
<Compile Include="Core\Inspectors\Reflection\CacheObject\CacheMethod.cs" />
|
||||
<Compile Include="Core\Inspectors\Reflection\CacheObject\CacheProperty.cs" />
|
||||
<Compile Include="Core\Inspectors\Reflection\CacheObject\CacheObjectBase.cs" />
|
||||
<Compile Include="Core\Config\ExplorerConfig.cs" />
|
||||
<Compile Include="ExplorerCore.cs" />
|
||||
<Compile Include="Loader\ExplorerBepIn5Plugin.cs" />
|
||||
<Compile Include="Loader\ExplorerMelonMod.cs" />
|
||||
<Compile Include="Core\ReflectionUtility.cs" />
|
||||
<Compile Include="Core\Unity\UnityHelper.cs" />
|
||||
<Compile Include="UI\Main\Home\Inspectors\GameObjects\ChildList.cs" />
|
||||
<Compile Include="UI\Main\Home\Inspectors\GameObjects\ComponentList.cs" />
|
||||
<Compile Include="UI\Main\Home\Inspectors\GameObjects\GameObjectControls.cs" />
|
||||
<Compile Include="Core\Inspectors\Reflection\InteractiveValue\InteractiveBool.cs" />
|
||||
<Compile Include="Core\Inspectors\Reflection\InteractiveValue\InteractiveDictionary.cs" />
|
||||
<Compile Include="Core\Inspectors\Reflection\InteractiveValue\InteractiveEnum.cs" />
|
||||
<Compile Include="Core\Inspectors\Reflection\InteractiveValue\InteractiveEnumerable.cs" />
|
||||
<Compile Include="Core\Inspectors\Reflection\InteractiveValue\InteractiveFlags.cs" />
|
||||
<Compile Include="Core\Inspectors\Reflection\InteractiveValue\InteractiveNumber.cs" />
|
||||
<Compile Include="Core\Inspectors\Reflection\InteractiveValue\InteractiveString.cs" />
|
||||
<Compile Include="Core\Inspectors\Reflection\InteractiveValue\InteractiveUnityStruct.cs" />
|
||||
<Compile Include="Loader\IExplorerLoader.cs" />
|
||||
<Compile Include="Core\Runtime\Il2Cpp\Il2CppProvider.cs" />
|
||||
<Compile Include="Core\Runtime\RuntimeProvider.cs" />
|
||||
<Compile Include="Core\Runtime\Mono\MonoProvider.cs" />
|
||||
<Compile Include="Core\Search\ChildFilter.cs" />
|
||||
<Compile Include="Core\Search\SceneFilter.cs" />
|
||||
<Compile Include="Core\Search\SearchContext.cs" />
|
||||
<Compile Include="Core\Search\SearchProvider.cs" />
|
||||
<Compile Include="UI\Main\Home\InspectorManagerUI.cs" />
|
||||
<Compile Include="UI\Main\Home\Inspectors\GameObjects\GameObjectInspectorUI.cs" />
|
||||
<Compile Include="UI\Main\Home\Inspectors\InspectorBaseUI.cs" />
|
||||
<Compile Include="UI\Main\Home\Inspectors\Reflection\InstanceInspectorUI.cs" />
|
||||
<Compile Include="UI\Main\Home\Inspectors\MouseInspectorUI.cs" />
|
||||
<Compile Include="UI\Main\Home\Inspectors\Reflection\ReflectionInspectorUI.cs" />
|
||||
<Compile Include="UI\Main\Home\SceneExplorerUI.cs" />
|
||||
<Compile Include="UI\Utility\CursorUnlocker.cs" />
|
||||
<Compile Include="Core\Input\IHandleInput.cs" />
|
||||
<Compile Include="Core\Tests\Tests.cs" />
|
||||
<Compile Include="Core\Input\InputManager.cs" />
|
||||
<Compile Include="Core\Input\InputSystem.cs" />
|
||||
<Compile Include="Core\Input\LegacyInput.cs" />
|
||||
<Compile Include="Core\Input\NoInput.cs" />
|
||||
<Compile Include="UI\Main\DebugConsole.cs" />
|
||||
<Compile Include="Core\InspectorManager.cs" />
|
||||
<Compile Include="Core\Inspectors\Reflection\ReflectionInspector.cs" />
|
||||
<Compile Include="UI\Main\MainMenu.cs" />
|
||||
<Compile Include="UI\Main\CSConsole\CSharpConsole.cs" />
|
||||
<Compile Include="UI\Main\CSConsole\AutoCompleter.cs" />
|
||||
<Compile Include="UI\Main\CSConsole\Lexer\CommentMatch.cs" />
|
||||
<Compile Include="UI\Main\CSConsole\CSLexerHighlighter.cs" />
|
||||
<Compile Include="UI\Main\CSConsole\Lexer\KeywordMatch.cs" />
|
||||
<Compile Include="UI\Main\CSConsole\Lexer\StringMatch.cs" />
|
||||
<Compile Include="UI\Main\CSConsole\Lexer\Matcher.cs" />
|
||||
<Compile Include="UI\Main\CSConsole\Lexer\NumberMatch.cs" />
|
||||
<Compile Include="UI\Main\CSConsole\Lexer\SymbolMatch.cs" />
|
||||
<Compile Include="Core\CSharp\Suggestion.cs" />
|
||||
<Compile Include="Core\CSharp\ScriptEvaluator.cs" />
|
||||
<Compile Include="Core\CSharp\ScriptInteraction.cs" />
|
||||
<Compile Include="UI\Main\Home\HomePage.cs" />
|
||||
<Compile Include="Core\Inspectors\GameObjects\GameObjectInspector.cs" />
|
||||
<Compile Include="Core\Inspectors\InspectorBase.cs" />
|
||||
<Compile Include="Core\Inspectors\Reflection\InstanceInspector.cs" />
|
||||
<Compile Include="Core\Inspectors\Reflection\StaticInspector.cs" />
|
||||
<Compile Include="UI\Main\BaseMenuPage.cs" />
|
||||
<Compile Include="UI\Main\Options\OptionsPage.cs" />
|
||||
<Compile Include="Core\SceneExplorer.cs" />
|
||||
<Compile Include="UI\Main\Search\SearchPage.cs" />
|
||||
<Compile Include="UI\Main\PanelDragger.cs" />
|
||||
<Compile Include="Core\Inspectors\Reflection\InteractiveValue\InteractiveValue.cs" />
|
||||
<Compile Include="UI\Reusable\InputFieldScroller.cs" />
|
||||
<Compile Include="UI\Reusable\SliderScrollbar.cs" />
|
||||
<Compile Include="UI\Reusable\PageHandler.cs" />
|
||||
<Compile Include="UI\Utility\SignatureHighlighter.cs" />
|
||||
<Compile Include="UI\UIManager.cs" />
|
||||
<Compile Include="Core\Runtime\Il2Cpp\AssetBundle.cs" />
|
||||
<Compile Include="Core\Unity\ColorHelper.cs" />
|
||||
<Compile Include="Core\Runtime\Il2Cpp\ICallManager.cs" />
|
||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||
<Compile Include="UI\UIFactory.cs" />
|
||||
<EmbeddedResource Include="Resources\*" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="ILRepack.targets" />
|
||||
<None Include="packages.config" />
|
||||
</ItemGroup>
|
||||
<ItemGroup />
|
||||
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
||||
<Import Project="packages\ILRepack.Lib.MSBuild.Task.2.0.18.1\build\ILRepack.Lib.MSBuild.Task.targets" Condition="Exists('packages\ILRepack.Lib.MSBuild.Task.2.0.18.1\build\ILRepack.Lib.MSBuild.Task.targets')" />
|
||||
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
|
||||
<PropertyGroup>
|
||||
<ErrorText>This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
|
||||
</PropertyGroup>
|
||||
<Error Condition="!Exists('packages\ILRepack.Lib.MSBuild.Task.2.0.18.1\build\ILRepack.Lib.MSBuild.Task.targets')" Text="$([System.String]::Format('$(ErrorText)', 'packages\ILRepack.Lib.MSBuild.Task.2.0.18.1\build\ILRepack.Lib.MSBuild.Task.targets'))" />
|
||||
</Target>
|
||||
</Project>
|
Reference in New Issue
Block a user