#include #include using namespace geode::prelude; $execute { // this replaces the call to __dynamic_cast with a call to our own // this is needed because the transitions in cocos uses dynamic cast to check // layers, which fail on user layers due to typeinfo not matching #if defined(GEODE_IS_MACOS) (void)Mod::get()->patch( reinterpret_cast(base::get() + 0x603948), toByteArray(&cast::typeinfoCastInternal) ); #elif defined(GEODE_IS_ANDROID) void* handle = dlopen("libcocos2dcpp.so", RTLD_LAZY | RTLD_NOLOAD); void* dynamicCastAddr = dlsym(handle, "__dynamic_cast"); (void)Mod::get()->hook(dynamicCastAddr, &cast::typeinfoCastInternal, "__dynamic_cast"); dlclose(handle); #endif }