This repository has been archived by the owner on May 9, 2023. It is now read-only.
-
-
Notifications
You must be signed in to change notification settings - Fork 364
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
17 changed files
with
424 additions
and
412 deletions.
There are no files selected for viewing
Binary file not shown.
Binary file not shown.
Binary file not shown.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
File renamed without changes.
File renamed without changes.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,131 @@ | ||
using System; | ||
using System.Collections; | ||
using System.Collections.Generic; | ||
using System.Linq; | ||
using System.Reflection; | ||
using System.Text; | ||
using Mono.CSharp; | ||
using UnityEngine; | ||
using Attribute = System.Attribute; | ||
using Object = UnityEngine.Object; | ||
|
||
namespace Explorer | ||
{ | ||
public class REPL : InteractiveBase | ||
{ | ||
static REPL() | ||
{ | ||
var go = new GameObject("UnityREPL"); | ||
GameObject.DontDestroyOnLoad(go); | ||
//go.transform.parent = HPExplorer.Instance.transform; | ||
MB = go.AddComponent<ReplHelper>(); | ||
} | ||
|
||
[Documentation("MB - A dummy MonoBehaviour for accessing Unity.")] | ||
public static ReplHelper MB { get; } | ||
|
||
[Documentation("find<T>() - find a UnityEngine.Object of type T.")] | ||
public static T find<T>() where T : Object | ||
{ | ||
return MB.Find<T>(); | ||
} | ||
|
||
[Documentation("findAll<T>() - find all UnityEngine.Object of type T.")] | ||
public static T[] findAll<T>() where T : Object | ||
{ | ||
return MB.FindAll<T>(); | ||
} | ||
|
||
[Documentation("runCoroutine(enumerator) - runs an IEnumerator as a Unity coroutine.")] | ||
public static object runCoroutine(IEnumerator i) | ||
{ | ||
return MB.RunCoroutine(i); | ||
} | ||
|
||
[Documentation("endCoroutine(co) - ends a Unity coroutine.")] | ||
public static void endCoroutine(Coroutine c) | ||
{ | ||
MB.EndCoroutine(c); | ||
} | ||
|
||
////[Documentation("type<T>() - obtain type info about a type T. Provides some Reflection helpers.")] | ||
////public static TypeHelper type<T>() | ||
////{ | ||
//// return new TypeHelper(typeof(T)); | ||
////} | ||
|
||
////[Documentation("type(obj) - obtain type info about object obj. Provides some Reflection helpers.")] | ||
////public static TypeHelper type(object instance) | ||
////{ | ||
//// return new TypeHelper(instance); | ||
////} | ||
|
||
//[Documentation("dir(obj) - lists all available methods and fiels of a given obj.")] | ||
//public static string dir(object instance) | ||
//{ | ||
// return type(instance).info(); | ||
//} | ||
|
||
//[Documentation("dir<T>() - lists all available methods and fields of type T.")] | ||
//public static string dir<T>() | ||
//{ | ||
// return type<T>().info(); | ||
//} | ||
|
||
//[Documentation("findrefs(obj) - find references to the object in currently loaded components.")] | ||
//public static Component[] findrefs(object obj) | ||
//{ | ||
// if (obj == null) throw new ArgumentNullException(nameof(obj)); | ||
|
||
// var results = new List<Component>(); | ||
// foreach (var component in Object.FindObjectsOfType<Component>()) | ||
// { | ||
// var type = component.GetType(); | ||
|
||
// var nameBlacklist = new[] { "parent", "parentInternal", "root", "transform", "gameObject" }; | ||
// var typeBlacklist = new[] { typeof(bool) }; | ||
|
||
// foreach (var prop in type.GetProperties(BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic) | ||
// .Where(x => x.CanRead && !nameBlacklist.Contains(x.Name) && !typeBlacklist.Contains(x.PropertyType))) | ||
// { | ||
// try | ||
// { | ||
// if (Equals(prop.GetValue(component, null), obj)) | ||
// { | ||
// results.Add(component); | ||
// goto finish; | ||
// } | ||
// } | ||
// catch { } | ||
// } | ||
// foreach (var field in type.GetFields(BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic) | ||
// .Where(x => !nameBlacklist.Contains(x.Name) && !typeBlacklist.Contains(x.FieldType))) | ||
// { | ||
// try | ||
// { | ||
// if (Equals(field.GetValue(component), obj)) | ||
// { | ||
// results.Add(component); | ||
// goto finish; | ||
// } | ||
// } | ||
// catch { } | ||
// } | ||
// finish:; | ||
// } | ||
|
||
// return results.ToArray(); | ||
//} | ||
|
||
[AttributeUsage(AttributeTargets.Method | AttributeTargets.Property)] | ||
private class DocumentationAttribute : Attribute | ||
{ | ||
public DocumentationAttribute(string doc) | ||
{ | ||
Docs = doc; | ||
} | ||
|
||
public string Docs { get; } | ||
} | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,34 @@ | ||
using System.Collections; | ||
//using Il2CppSystem; | ||
using MelonLoader; | ||
using UnityEngine; | ||
using System; | ||
using Object = UnityEngine.Object; | ||
|
||
namespace Explorer | ||
{ | ||
public class ReplHelper : MonoBehaviour | ||
{ | ||
public ReplHelper(IntPtr intPtr) : base(intPtr) { } | ||
|
||
public T Find<T>() where T : Object | ||
{ | ||
return FindObjectOfType<T>(); | ||
} | ||
|
||
public T[] FindAll<T>() where T : Object | ||
{ | ||
return FindObjectsOfType<T>(); | ||
} | ||
|
||
public object RunCoroutine(IEnumerator enumerator) | ||
{ | ||
return MelonCoroutines.Start(enumerator); | ||
} | ||
|
||
public void EndCoroutine(Coroutine c) | ||
{ | ||
StopCoroutine(c); | ||
} | ||
} | ||
} |
Oops, something went wrong.