@@ -34,16 +34,17 @@ const constinit Pattern<19> PROCESS_EVENT_SIG{
3434 " 48 81 EC F0000000" // sub rsp, 000000F0
3535};
3636
37- } // namespace
38-
3937void process_event_hook (UObject* obj, UFunction* func, void * params) {
4038 try {
4139 auto data = hook_manager::impl::preprocess_hook (" ProcessEvent" , func, obj);
4240 if (data != nullptr ) {
4341 // Copy args so that hooks can't modify them, for parity with call function
4442 const WrappedStruct args_base{func, params};
4543 WrappedStruct args = args_base.copy_params_only ();
46- hook_manager::Details hook{obj, &args, {func->find_return_param ()}, {func, obj}};
44+ hook_manager::Details hook{.obj = obj,
45+ .args = &args,
46+ .ret = {func->find_return_param ()},
47+ .func = {.func = func, .object = obj}};
4748
4849 const bool block_execution =
4950 hook_manager::impl::run_hooks_of_type (*data, hook_manager::Type::PRE, hook);
@@ -104,6 +105,8 @@ bool locking(void) {
104105 return locking;
105106}
106107
108+ } // namespace
109+
107110void BL3Hook::hook_process_event (void ) {
108111 detour (PROCESS_EVENT_SIG, locking () ? locking_process_event_hook : process_event_hook,
109112 &process_event_ptr, " ProcessEvent" );
@@ -135,8 +138,6 @@ const constinit Pattern<20> CALL_FUNCTION_SIG{
135138 " 48 81 EC 28010000" // sub rsp, 00000128
136139};
137140
138- } // namespace
139-
140141void call_function_hook (UObject* obj, FFrame* stack, void * result, UFunction* func) {
141142 try {
142143 /*
@@ -167,7 +168,10 @@ void call_function_hook(UObject* obj, FFrame* stack, void* result, UFunction* fu
167168 WrappedStruct args{func};
168169 auto original_code = stack->extract_current_args (args);
169170
170- hook_manager::Details hook{obj, &args, {func->find_return_param ()}, {func, obj}};
171+ hook_manager::Details hook{.obj = obj,
172+ .args = &args,
173+ .ret = {func->find_return_param ()},
174+ .func = {.func = func, .object = obj}};
171175
172176 const bool block_execution =
173177 hook_manager::impl::run_hooks_of_type (*data, hook_manager::Type::PRE, hook);
@@ -212,6 +216,8 @@ void call_function_hook(UObject* obj, FFrame* stack, void* result, UFunction* fu
212216static_assert (std::is_same_v<decltype (call_function_hook), call_function_func>,
213217 " call_function signature is incorrect" );
214218
219+ } // namespace
220+
215221void BL3Hook::hook_call_function (void ) {
216222 detour (CALL_FUNCTION_SIG, call_function_hook, &call_function_ptr, " CallFunction" );
217223}
0 commit comments