2023-01-24 11:27:46 -05:00
|
|
|
#include <Geode/DefaultInclude.hpp>
|
2023-10-02 09:50:10 -04:00
|
|
|
#include <Geode/loader/Mod.hpp>
|
2023-01-24 11:27:46 -05:00
|
|
|
|
2023-03-10 14:33:24 -05:00
|
|
|
using namespace geode::prelude;
|
2023-01-24 11:27:46 -05:00
|
|
|
|
|
|
|
$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
|
|
|
|
|
2023-10-02 09:50:10 -04:00
|
|
|
#if defined(GEODE_IS_MACOS)
|
|
|
|
(void)Mod::get()->patch(
|
|
|
|
reinterpret_cast<void*>(base::get() + 0x603948), toByteArray(&cast::typeinfoCastInternal)
|
|
|
|
);
|
2023-12-23 08:10:23 -05:00
|
|
|
#elif defined(GEODE_IS_ANDROID32)
|
2024-01-14 16:47:02 -05:00
|
|
|
(void)Mod::get()->hook(reinterpret_cast<void*>(base::get() + (0x720348 - 0x10000) + 1), &cast::typeinfoCastInternal, "__dynamic_cast");
|
2023-12-23 10:02:13 -05:00
|
|
|
#elif defined(GEODE_IS_ANDROID64)
|
2024-01-14 16:47:02 -05:00
|
|
|
(void)Mod::get()->hook(reinterpret_cast<void*>(base::get() + (0xd6cb8c - 0x100000)), &cast::typeinfoCastInternal, "__dynamic_cast");
|
2023-10-02 09:50:10 -04:00
|
|
|
#endif
|
|
|
|
|
|
|
|
|
2024-01-14 16:47:02 -05:00
|
|
|
}
|