@@ -13,34 +13,61 @@ Android IL2CPP Unity mod manager with CoreCLR runtime embedding and ImGui overla
1313## Project Structure
1414
1515```
16- StArray.ModManager/ C# mod manager (.NET 10, output: ModManager.dll)
16+ StArray.ModManager/ C# mod manager (.NET 10)
17+ UI/
18+ ImGuiRender.cs EGL rendering + GL debug panel + rainbow shader
19+ ImGuiEGLRender.cs EGL renderer (IImGuiRenderer, split architecture)
20+ ImGuiInputHandler.cs Touch/key hooks + IME callback bridge
21+ ImGuiVulkanRenderer.cs Vulkan renderer (experimental)
22+ ModManagerUI.cs ImGui mod manager UI
23+ IImGuiRenderer.cs Renderer interface
24+ FontAwesome7.cs FA7 icon codepoints
25+ PInvoke/
26+ Dobby.cs Inline hook wrapper
27+ DL.cs dlopen/dlsym
28+ JniHelperNative.cs JNI ↔ C data bridge
29+ ImGuiBackends.cs cimgui P/Invoke (OpenGL3, Android, Vulkan)
30+ Misc.cs C callback registration
31+ AndroidLog.cs Logcat logging
32+ UnityResolve.cs IL2CPP reflection engine
1733 Manager/
18- ImGuiRender.cs EGL rendering + ImGui UI
19- GLESBindingsContext.cs OpenGL ES bindings
20- MotionInputProvider.cs Touch input
21- IInputProvider.cs Input provider interface
22- Java/
23- JniWrapper.cs JNI class/object wrappers
24- AndroidLog.cs Logcat logging
25- Dobby.cs Inline hook wrapper
26- UnityResolve.cs IL2CPP/Mono reflection engine
27- Il2CppFunctions.cs IL2CPP P/Invoke bindings
28- Mono.cs CoreCLR entry point
29-
30- Android/library/ Native Android library (libmodmanager.so)
34+ IInputProvider.cs Input provider interface
35+ MotionInputProvider.cs Motion event hook
36+ MotionEventHook.cs InputConsumer hook
37+ AndroidIME.cs IME manager
38+ Unity/
39+ UnitySurfaceHelper.cs ANativeWindow from Unity SurfaceView
40+ Mono.cs CoreCLR entry point (old)
41+ Managed.cs CoreCLR entry with argc/argv
42+
43+ Android/library/ Native library (libmodmanager.so)
3144 src/main/cpp/core/
32- dobby_hook.cpp Dobby inline hook
33- mono_droid_coreclr.c CoreCLR embedding
34- jni_helper.c JNI helpers + Java/C# data bridge
35- unity_resolve.cpp Unity symbol resolution
45+ dobby_hook.cpp Dobby inline hook
46+ mono_droid_coreclr.c CoreCLR embedding + args delegate
47+ jni_helper.c JNI helpers, data bridge, C callback dispatch
48+ unity_resolve.cpp Unity symbol resolution
3649 src/main/java/
37- ModManagerUtils.java Hidden EditText IME, data bridge
50+ MonoRunner.java CoreCLR launcher (supports args)
51+ ModManagerUtils.java KeyboardView IME + InputConnection bridge
3852
39- Runtime/runtime/ .NET runtime assemblies for CoreCLR embedding
53+ Android/launcher/ Smali launcher module
54+ src/main/smali/ ModManager.smali, ModManager$1.smali
4055
41- TestAndroidProject/ Test Unity app (IL2CPP, arm64-v8a)
56+ TestAndroidProject/ Test Unity app (IL2CPP, arm64-v8a)
4257```
4358
59+ ## Features
60+
61+ - ** EGL SwapBuffers hook** with Dobby — renders ImGui overlay every frame
62+ - ** Touch & key input** via InputConsumer hooks + cimgui Android backend
63+ - ** IME support** (Chinese/Japanese) via custom KeyboardView + InputConnection bridge
64+ - ** C→C# callback pipeline** — Java ` commitText ` → native ` nativeSendChar ` → C# ` AddInputCharacter ` in real time
65+ - ** GL debug panel** — caps toggles (depth, blend, cull, etc.), blend/depth func selectors, GL state queries, viewport info
66+ - ** Rainbow text shader** — custom GLSL shader applied via ImDrawList callbacks
67+ - ** FontAwesome 7** icon support via embedded resource
68+ - ** IImGuiRenderer** interface — swap between EGL, Vulkan backends
69+ - ** CoreCLR args** — pass ` string[] ` from Java ` MonoRunner.run() ` to managed ` Entry(int, IntPtr) `
70+
4471## Build
4572
4673Requires .NET 10 SDK and Android NDK 27+.
@@ -61,6 +88,12 @@ cd Android
6188- IL2CPP Unity games (API 26+)
6289- CoreCLR .NET 10 runtime
6390
91+ ## Getting Started
92+
93+ See [ GET_STARTED.md] ( GET_STARTED.md ) for injection and build instructions.
94+
95+ Runtime assemblies can be downloaded from the [ runtime-references release] ( https://github.com/StArraySharp/StArray.ModManager/releases/tag/0 ) .
96+
6497---
6598
6699Most code generated by AI.
0 commit comments