Skip to content

Commit 8394c97

Browse files
committed
docs: update README and GET_STARTED, document refactored architecture
- Update project structure to reflect UI/, PInvoke/, Manager/ split - Document IME callback pipeline, GL debug panel, rainbow shader - Add Features section covering all major capabilities - Link runtime-references release for .NET runtime DLLs - Clarify Runtime/ is not in repo
1 parent 9bb8e1d commit 8394c97

1 file changed

Lines changed: 54 additions & 21 deletions

File tree

‎README.md‎

Lines changed: 54 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -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

4673
Requires .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

6699
Most code generated by AI.

0 commit comments

Comments
 (0)