mirror of
https://gitea.tendokyu.moe/Dniel97/segatools.git
synced 2024-12-12 20:41:05 +01:00
4041844ea9
[UnityDoorstop](https://github.com/NeighTools/UnityDoorstop) is a tool to execute managed code (.NET DLLs) before Unity does, useful for modding frameworks such as BepInEx. This PR integrates parts of its code into segatools, so loading BepInEx is as simple as adding 2 lines to `segatools.ini`: ```ini [unity] targetAssembly=BepInEx\core\BepInEx.Preloader.dll ``` This PR also factors out the Unity path redirection hooks to its own module. Reviewed-on: https://gitea.tendokyu.moe/Dniel97/segatools/pulls/11 Co-authored-by: beerpsi <beerpsi@duck.com> Co-committed-by: beerpsi <beerpsi@duck.com>
21 lines
567 B
C
21 lines
567 B
C
#pragma once
|
|
|
|
#include <windows.h>
|
|
|
|
wchar_t *widen(const char *str) {
|
|
const int reqsz = MultiByteToWideChar(CP_UTF8, 0, str, -1, NULL, 0);
|
|
wchar_t *result = malloc(reqsz * sizeof(wchar_t));
|
|
|
|
MultiByteToWideChar(CP_UTF8, 0, str, -1, result, reqsz);
|
|
return result;
|
|
}
|
|
|
|
char *narrow(const wchar_t *str) {
|
|
const int reqsz = WideCharToMultiByte(CP_UTF8, 0, str, -1, NULL, 0, NULL, NULL);
|
|
char *result = malloc(reqsz * sizeof(char));
|
|
|
|
WideCharToMultiByte(CP_UTF8, 0, str, -1, result, reqsz, NULL, NULL);
|
|
return result;
|
|
}
|
|
|