MCPcopy Create free account
hub / github.com/SpecialKO/SpecialK / SK_Unity_SetupInputHooks

Function SK_Unity_SetupInputHooks

src/plugins/unity.cpp:3270–3463  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

3268}
3269
3270bool
3271SK_Unity_SetupInputHooks (void)
3272{
3273 // Mono not init'd
3274 if (SK_mono_thread_attach == nullptr)
3275 return false;
3276
3277 if (! SK_mono_image_loaded ("Assembly-CSharp"))
3278 {
3279 return false;
3280 }
3281
3282 static HANDLE hMonoInitFinished =
3283 SK_CreateEvent (nullptr, FALSE, FALSE, nullptr);
3284
3285 // Create a managed thread to keep assemblies and their JIT'd functions alive.
3286 SK_RunOnce (
3287 SK_Thread_CreateEx ([](LPVOID)->DWORD
3288 {
3289 AttachThread ();
3290
3291 // Optional, may not exist.
3292 LoadMonoAssembly ("Assembly-CSharp-firstpass");
3293 LoadMonoAssembly ("InControl");
3294 LoadMonoAssembly ("Rewired_Core");
3295 LoadMonoAssembly ("UnityEngine.CoreModule");
3296
3297 SK_Unity_MonoAssemblies.assemblyCSharp = SK_mono_image_loaded ("Assembly-CSharp");
3298 SK_Unity_MonoAssemblies.assemblyCSharp_firstpass = SK_mono_image_loaded ("Assembly-CSharp-firstpass");
3299 SK_Unity_MonoAssemblies.assemblyInControl = SK_mono_image_loaded ("InControl");
3300 SK_Unity_MonoAssemblies.assemblyRewired = SK_mono_image_loaded ("Rewired_Core");
3301
3302 auto assemblyInControl =
3303 SK_Unity_MonoAssemblies.assemblyInControl != nullptr ?
3304 SK_Unity_MonoAssemblies.assemblyInControl :
3305 SK_Unity_MonoAssemblies.assemblyCSharp;
3306
3307 if (assemblyInControl == SK_Unity_MonoAssemblies.assemblyCSharp &&
3308 assemblyInControl != nullptr &&
3309 SK_mono_class_from_name (assemblyInControl, "InControl", "InputDevice") == nullptr)
3310 {
3311 assemblyInControl = SK_Unity_MonoAssemblies.assemblyCSharp_firstpass;
3312
3313 if ( assemblyInControl != nullptr &&
3314 SK_mono_class_from_name (assemblyInControl, "InControl", "InputDevice"))
3315 {
3316 SK_LOGi0 (
3317 L"InControl not found in Assembly-CSharp, but was found in Assembly-CSharp-firstpass!"
3318 );
3319 }
3320 }
3321
3322 const char* assemblyInControl_filename =
3323 assemblyInControl == SK_Unity_MonoAssemblies.assemblyCSharp ? "Assembly-CSharp" :
3324 assemblyInControl == SK_Unity_MonoAssemblies.assemblyCSharp_firstpass ? "Assembly-CSharp-firstpass"
3325 : "InControl";
3326
3327 SK_Unity_MonoAssemblies.assemblyInControl = assemblyInControl;

Callers 1

SK_Unity_OnInitMonoFunction · 0.85

Calls 11

SK_CreateEventFunction · 0.85
SK_RunOnceFunction · 0.85
SK_Thread_CreateExFunction · 0.85
SK_CreateFuncHookFunction · 0.85
SK_QueueEnableHookFunction · 0.85
SK_ApplyQueuedHooksFunction · 0.85
SK_Thread_CloseSelfFunction · 0.85
AttachThreadFunction · 0.70
LoadMonoAssemblyFunction · 0.70
CompileMethodFunction · 0.70

Tested by

no test coverage detected