MethodAccessException: Attempt to access method 'System.Collections.IEnumerator.MoveNext' on type 'IEnumerator.BNM.Coroutine' failed.
BNM::Method<void*> StartCoroutine;
BNM::Coroutine::IEnumerator MyEnumerator() {
LOGI("MyEnumerator Started");
co_yield BNM::Coroutine::WaitForSeconds(5.0f);
LOGI("MyEnumerator Finished");
co_return;
}
void (*_PlayerScript_Start)(void*);
void PlayerScript_Start(BNM::UnityEngine::MonoBehaviour *ins) {
_PlayerScript_Start(ins);
auto enumerator = MyEnumerator().get();
auto r = StartCoroutine[ins](enumerator);
LOGI("Invoked: %p", r);
}
void OnLoad() {
StartCoroutine = BNM::Class(OBFUSCATE_BNM("UnityEngine"), OBFUSCATE_BNM("MonoBehaviour")).GetMethod(OBFUSCATE_BNM("StartCoroutine"), {OBFUSCATE_BNM("routine")});
auto playerScript = BNM::Class("", "PlayerScript");
BNM::InvokeHook(playerScript.GetMethod("Start"), PlayerScript_Start, _PlayerScript_Start);
}
Logs:
Code: