From 7024bd195249abbf60a2bdea60d158e70edea8e5 Mon Sep 17 00:00:00 2001 From: Andrej E Baranov Date: Tue, 20 May 2025 18:43:31 +0700 Subject: [PATCH 01/10] update vcpkg baseline --- .gitignore | 1 + .gitmodules | 5 +++++ vcpkg.json | 4 ++-- 3 files changed, 8 insertions(+), 2 deletions(-) diff --git a/.gitignore b/.gitignore index 20db8a4..9cd1e6b 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ /build* CMakeUserPresets.json .vscode +.vs diff --git a/.gitmodules b/.gitmodules index 2997a57..e6ebea3 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,3 +1,8 @@ [submodule "external/CommonLibSSE"] path = external/CommonLibSSE url = https://github.com/Ryan-rsm-McKenzie/CommonLibSSE + +[submodule "external/CommonLibSSE-NG"] + path = external/CommonLibSSE-NG + url = https://github.com/alandtse/CommonLibVR.git + branch = ng diff --git a/vcpkg.json b/vcpkg.json index df29b72..b0ef25e 100644 --- a/vcpkg.json +++ b/vcpkg.json @@ -10,11 +10,11 @@ "xbyak", "rsm-binary-io" ], - "builtin-baseline": "57d3194e702a2959e86a6748999ad71fc24f7922", + "builtin-baseline": "d9ccd77bb554e67137f3f754a2e2f11f4188c82c", "overrides": [ { "name": "tbb", - "version-string": "2020_U3" + "version-string": "2022.1.0" } ] } From ce9796e4722caabb266fe6337252756aa36d21d5 Mon Sep 17 00:00:00 2001 From: Andrej E Baranov Date: Tue, 20 May 2025 18:47:30 +0700 Subject: [PATCH 02/10] alandtse CommonLibSSE-NG --- external/CommonLibSSE-NG | 1 + 1 file changed, 1 insertion(+) create mode 160000 external/CommonLibSSE-NG diff --git a/external/CommonLibSSE-NG b/external/CommonLibSSE-NG new file mode 160000 index 0000000..e2a29de --- /dev/null +++ b/external/CommonLibSSE-NG @@ -0,0 +1 @@ +Subproject commit e2a29de9ff59d998b75fbad4d7135cfef4b45ded From 275cb61f5dbc499dfeb93921278bad046899b254 Mon Sep 17 00:00:00 2001 From: Andrej E Baranov Date: Tue, 20 May 2025 20:40:21 +0700 Subject: [PATCH 03/10] rewrite to alandtse/CommonLibVR --- .gitmodules | 4 - CMakeLists.txt | 16 ++-- CMakePresets.json | 6 +- cmake/XSEPlugin.cmake | 128 +++++++++++++++++++++++++++ cmake/ports/clib-util/portfile.cmake | 14 +++ cmake/ports/clib-util/vcpkg.json | 7 ++ cmake/version.cmake | 2 +- external/CommonLibSSE | 1 - src/fixes/doubleperkapply.cpp | 2 +- src/fixes/miscfixes.cpp | 19 ++-- src/main.cpp | 6 +- vcpkg.json | 4 + 12 files changed, 187 insertions(+), 22 deletions(-) create mode 100644 cmake/XSEPlugin.cmake create mode 100644 cmake/ports/clib-util/portfile.cmake create mode 100644 cmake/ports/clib-util/vcpkg.json delete mode 160000 external/CommonLibSSE diff --git a/.gitmodules b/.gitmodules index e6ebea3..6b4835a 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,7 +1,3 @@ -[submodule "external/CommonLibSSE"] - path = external/CommonLibSSE - url = https://github.com/Ryan-rsm-McKenzie/CommonLibSSE - [submodule "external/CommonLibSSE-NG"] path = external/CommonLibSSE-NG url = https://github.com/alandtse/CommonLibVR.git diff --git a/CMakeLists.txt b/CMakeLists.txt index e9f568f..68f59c5 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 3.20) +cmake_minimum_required(VERSION 3.21) macro(set_from_environment VARIABLE) if (NOT DEFINED ${VARIABLE} AND DEFINED ENV{${VARIABLE}}) @@ -14,6 +14,14 @@ project( LANGUAGES CXX ) +add_compile_definitions(SKYRIM) +set(CommonLibPath "external/CommonLibSSE-NG") +set(CommonLibName "CommonLibSSE") +set(GameVersion "Skyrim") +add_subdirectory(${CommonLibPath} ${CommonLibName} EXCLUDE_FROM_ALL) + +find_package(spdlog CONFIG REQUIRED) + configure_file( "${CMAKE_CURRENT_SOURCE_DIR}/cmake/Version.h.in" "${CMAKE_CURRENT_BINARY_DIR}/include/Version.h" @@ -36,9 +44,6 @@ add_compile_definitions( UNICODE ) -add_subdirectory(external/CommonLibSSE CommonLibSSE) - -find_package(AutoTOML REQUIRED CONFIG) find_package(Boost MODULE REQUIRED @@ -81,7 +86,7 @@ add_library( target_compile_features( ${PROJECT_NAME} PRIVATE - cxx_std_20 + cxx_std_23 ) target_include_directories( @@ -94,7 +99,6 @@ target_include_directories( target_link_libraries( ${PROJECT_NAME} PRIVATE - AutoTOML::AutoTOML Boost::regex CommonLibSSE::CommonLibSSE TBB::tbb diff --git a/CMakePresets.json b/CMakePresets.json index 1722752..f3f81f0 100644 --- a/CMakePresets.json +++ b/CMakePresets.json @@ -35,7 +35,11 @@ "CMAKE_TOOLCHAIN_FILE": { "type": "STRING", "value": "$env{VCPKG_ROOT}/scripts/buildsystems/vcpkg.cmake" - } + }, + "SKSE_SUPPORT_XBYAK": "ON", + "ENABLE_SKYRIM_AE": "ON", + "ENABLE_SKYRIM_SE": "OFF", + "ENABLE_SKYRIM_VR": "OFF" }, "hidden": true, "name": "vcpkg" diff --git a/cmake/XSEPlugin.cmake b/cmake/XSEPlugin.cmake new file mode 100644 index 0000000..b5fc590 --- /dev/null +++ b/cmake/XSEPlugin.cmake @@ -0,0 +1,128 @@ +option(BUILD_SKYRIM "Build for Skyrim" OFF) +option(BUILD_FALLOUT4 "Build for Fallout 4" OFF) + +if(BUILD_SKYRIM) + add_compile_definitions(SKYRIM) + set(CommonLibPath "extern/CommonLibSSE-NG") + set(CommonLibName "CommonLibSSE") + set(GameVersion "Skyrim") +elseif(BUILD_FALLOUT4) + add_compile_definitions(FALLOUT4) + set(CommonLibPath "extern/CommonLibF4/CommonLibF4") + set(CommonLibName "CommonLibF4") + set(GameVersion "Fallout 4") +else() + message( + FATAL_ERROR + "A game must be selected." + ) +endif() + +target_compile_features( + "${PROJECT_NAME}" + PRIVATE + cxx_std_23 +) + +set_property(GLOBAL PROPERTY USE_FOLDERS ON) + +configure_file( + ${CMAKE_CURRENT_SOURCE_DIR}/cmake/Plugin.h.in + ${CMAKE_CURRENT_BINARY_DIR}/cmake/Plugin.h + @ONLY +) + +configure_file( + ${CMAKE_CURRENT_SOURCE_DIR}/cmake/version.rc.in + ${CMAKE_CURRENT_BINARY_DIR}/cmake/version.rc + @ONLY +) + +target_sources( + "${PROJECT_NAME}" + PRIVATE + ${CMAKE_CURRENT_BINARY_DIR}/cmake/Plugin.h + ${CMAKE_CURRENT_BINARY_DIR}/cmake/version.rc +) + +target_precompile_headers( + "${PROJECT_NAME}" + PRIVATE + src/PCH.h +) + +set(CMAKE_INTERPROCEDURAL_OPTIMIZATION ON) +set(CMAKE_INTERPROCEDURAL_OPTIMIZATION_DEBUG OFF) + +set(Boost_USE_STATIC_LIBS ON) +set(Boost_USE_STATIC_RUNTIME ON) + +if(CMAKE_GENERATOR MATCHES "Visual Studio") + add_compile_definitions(_UNICODE) + + target_compile_definitions(${PROJECT_NAME} PRIVATE "$<$:DEBUG>") + + set(SC_RELEASE_OPTS "/Zi;/fp:fast;/GL;/Gy-;/Gm-;/Gw;/sdl-;/GS-;/guard:cf-;/O2;/Ob2;/Oi;/Ot;/Oy;/fp:except-") + + target_compile_options( + "${PROJECT_NAME}" + PRIVATE + /MP + /W4 + /WX + /permissive- + /Zc:alignedNew + /Zc:auto + /Zc:__cplusplus + /Zc:externC + /Zc:externConstexpr + /Zc:forScope + /Zc:hiddenFriend + /Zc:implicitNoexcept + /Zc:lambda + /Zc:noexceptTypes + /Zc:preprocessor + /Zc:referenceBinding + /Zc:rvalueCast + /Zc:sizedDealloc + /Zc:strictStrings + /Zc:ternary + /Zc:threadSafeInit + /Zc:trigraphs + /Zc:wchar_t + /wd4200 # nonstandard extension used : zero-sized array in struct/union + ) + + target_compile_options(${PROJECT_NAME} PUBLIC "$<$:/fp:strict>") + target_compile_options(${PROJECT_NAME} PUBLIC "$<$:/ZI>") + target_compile_options(${PROJECT_NAME} PUBLIC "$<$:/Od>") + target_compile_options(${PROJECT_NAME} PUBLIC "$<$:/Gy>") + target_compile_options(${PROJECT_NAME} PUBLIC "$<$:${SC_RELEASE_OPTS}>") + + target_link_options( + ${PROJECT_NAME} + PRIVATE + /WX + "$<$:/INCREMENTAL;/OPT:NOREF;/OPT:NOICF>" + "$<$:/LTCG;/INCREMENTAL:NO;/OPT:REF;/OPT:ICF;/DEBUG:FULL>" + ) +endif() + +add_subdirectory(${CommonLibPath} ${CommonLibName} EXCLUDE_FROM_ALL) + +find_package(spdlog CONFIG REQUIRED) + +target_include_directories( + ${PROJECT_NAME} + PUBLIC + ${CMAKE_CURRENT_SOURCE_DIR}/include + PRIVATE + ${CMAKE_CURRENT_BINARY_DIR}/cmake + ${CMAKE_CURRENT_SOURCE_DIR}/src +) + +target_link_libraries( + ${PROJECT_NAME} + PUBLIC + CommonLibSSE::CommonLibSSE +) diff --git a/cmake/ports/clib-util/portfile.cmake b/cmake/ports/clib-util/portfile.cmake new file mode 100644 index 0000000..3579a0e --- /dev/null +++ b/cmake/ports/clib-util/portfile.cmake @@ -0,0 +1,14 @@ +# header-only library +vcpkg_from_github( + OUT_SOURCE_PATH SOURCE_PATH + REPO powerof3/CLibUtil + REF 993aa55e7d963ba844d53888302587ebabb69547 + SHA512 0419049fb92aee3e3ab0a592c410f11cd09db46814f35b822c12e80fb65076d606b3c39c48eaa663c3cac6817f3d947c06e0a7f0e6fc5b34406d60379c4e01bd + HEAD_REF master +) + +# Install codes +set(CLIBUTIL_SOURCE ${SOURCE_PATH}/include/ClibUtil) +file(INSTALL ${CLIBUTIL_SOURCE} DESTINATION ${CURRENT_PACKAGES_DIR}/include) + +vcpkg_install_copyright(FILE_LIST "${SOURCE_PATH}/LICENSE") diff --git a/cmake/ports/clib-util/vcpkg.json b/cmake/ports/clib-util/vcpkg.json new file mode 100644 index 0000000..5317495 --- /dev/null +++ b/cmake/ports/clib-util/vcpkg.json @@ -0,0 +1,7 @@ +{ + "name": "clib-util", + "version-string": "1.3.7", + "port-version": 1, + "description": "", + "homepage": "https://github.com/powerof3/CLibUtil" +} diff --git a/cmake/version.cmake b/cmake/version.cmake index 672c37b..a374fb7 100644 --- a/cmake/version.cmake +++ b/cmake/version.cmake @@ -1 +1 @@ -set(VERSION 6.2.0) +set(VERSION 7.0.1) diff --git a/external/CommonLibSSE b/external/CommonLibSSE deleted file mode 160000 index 3282565..0000000 --- a/external/CommonLibSSE +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 3282565a2c86535036f5a556758fb1cf8ab85225 diff --git a/src/fixes/doubleperkapply.cpp b/src/fixes/doubleperkapply.cpp index 4396ecd..59261a5 100644 --- a/src/fixes/doubleperkapply.cpp +++ b/src/fixes/doubleperkapply.cpp @@ -24,7 +24,7 @@ namespace fixes { RemoveBasePerks(a_actor); - auto* currentProcess = a_actor->currentProcess; + auto* currentProcess = a_actor->GetActorRuntimeData().currentProcess; if (!currentProcess) { return; diff --git a/src/fixes/miscfixes.cpp b/src/fixes/miscfixes.cpp index e8e282a..6280549 100644 --- a/src/fixes/miscfixes.cpp +++ b/src/fixes/miscfixes.cpp @@ -1,5 +1,7 @@ #include "fixes.h" +#undef GetObject + namespace fixes { class AnimationLoadSignedCrashPatch @@ -36,7 +38,7 @@ namespace fixes private: static void Move(RE::Projectile* a_this, /*const*/ RE::NiPoint3& a_from, const RE::NiPoint3& a_to) { - const auto refShooter = a_this->shooter.get(); + const auto refShooter = a_this->GetProjectileRuntimeData().shooter.get(); if (refShooter && refShooter->Is(RE::FormType::ActorCharacter)) { const auto akShooter = static_cast(refShooter.get()); @@ -440,7 +442,7 @@ namespace fixes constexpr std::uintptr_t BRANCH_OFF = 0x13D; constexpr std::uintptr_t SEND_EVENT_BEGIN = 0x149; constexpr std::uintptr_t SEND_EVENT_END = 0x1C7; - constexpr std::size_t EQUIPPED_SHOUT = offsetof(RE::Actor, selectedPower); + constexpr std::size_t EQUIPPED_SHOUT = offsetof(RE::Actor, GetActorRuntimeData().selectedPower); constexpr std::uint32_t BRANCH_SIZE = 5; constexpr std::uint32_t CODE_CAVE_SIZE = 12; constexpr std::uint32_t DIFF = CODE_CAVE_SIZE - BRANCH_SIZE; @@ -772,7 +774,7 @@ namespace fixes static void DoFinish(RE::BSIMusicType* a_this, bool a_immediate) { - a_this->tracks[a_this->currentTrackIndex]->DoFinish(a_immediate, std::max(a_this->fadeTime, 4.0f)); + a_this->tracks[a_this->currentTrackIndex]->DoFinish(a_immediate, std::max(a_this->fadeTime, 4.0f)); a_this->typeStatus = static_cast(a_this->tracks[a_this->currentTrackIndex]->GetMusicStatus()); } }; @@ -1300,7 +1302,7 @@ namespace fixes static RE::TESObjectWEAP* GetWeaponData(RE::Actor* a_actor) { - const auto proc = a_actor->currentProcess; + const auto proc = a_actor->GetActorRuntimeData().currentProcess; if (!proc || !proc->middleHigh) { return nullptr; @@ -1617,7 +1619,14 @@ namespace fixes static void LoadGame(RE::Sky* a_this, RE::BGSLoadGameBuffer* a_loadGameBuffer) { _LoadGame(a_this, a_loadGameBuffer); - a_this->flags |= 0x7E00; + a_this->flags.set( + RE::Sky::Flags::kUpdateSunriseBegin, + RE::Sky::Flags::kUpdateSunriseEnd, + RE::Sky::Flags::kUpdateSunsetBegin, + RE::Sky::Flags::kUpdateSunsetEnd, + RE::Sky::Flags::kUpdateColorsSunriseBegin, + RE::Sky::Flags::kUpdateColorsSunsetEnd + ); } static inline REL::Relocation _LoadGame; diff --git a/src/main.cpp b/src/main.cpp index 853353f..41a65c3 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -60,8 +60,8 @@ extern "C" DLLEXPORT constinit auto SKSEPlugin_Version = []() { v.PluginName(Version::NAME); v.AuthorName("aers"sv); v.CompatibleVersions({ RUNTIME_1_6_1170 }); - v.UsesAddressLibrary(true); - v.UsesStructsPost629(true); + v.UsesAddressLibrary(); + v.UsesNoStructs(); return v; }(); @@ -121,7 +121,7 @@ extern "C" void DLLEXPORT APIENTRY Initialize() extern "C" DLLEXPORT bool SKSEAPI SKSEPlugin_Load(const SKSE::LoadInterface* a_skse) { - SKSE::Init(a_skse); + SKSE::Init(a_skse, false); const auto messaging = SKSE::GetMessagingInterface(); if (!messaging->RegisterListener("SKSE", MessageHandler)) diff --git a/vcpkg.json b/vcpkg.json index b0ef25e..2a81169 100644 --- a/vcpkg.json +++ b/vcpkg.json @@ -3,6 +3,10 @@ "version-string": "1", "dependencies": [ "autotoml", + "directxtk", + "directxtex", + "rapidcsv", + "catch2", "boost-regex", "boost-stl-interfaces", "spdlog", From 6b638622f000cea87b414564b1d9317b922a7833 Mon Sep 17 00:00:00 2001 From: Andrej E Baranov Date: Wed, 21 May 2025 04:13:21 +0700 Subject: [PATCH 04/10] Fix EquipShoutEventSpamPatch --- src/fixes/miscfixes.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/fixes/miscfixes.cpp b/src/fixes/miscfixes.cpp index 6280549..2fe3d5d 100644 --- a/src/fixes/miscfixes.cpp +++ b/src/fixes/miscfixes.cpp @@ -442,7 +442,9 @@ namespace fixes constexpr std::uintptr_t BRANCH_OFF = 0x13D; constexpr std::uintptr_t SEND_EVENT_BEGIN = 0x149; constexpr std::uintptr_t SEND_EVENT_END = 0x1C7; - constexpr std::size_t EQUIPPED_SHOUT = offsetof(RE::Actor, GetActorRuntimeData().selectedPower); + // TODO: runtime independent EQUIPPED_SHOUT + constexpr std::size_t EQUIPPED_SHOUT = 0xE8 + offsetof(RE::Actor::ACTOR_RUNTIME_DATA, selectedPower); // > SSE_1_6_629 TO + //constexpr std::size_t EQUIPPED_SHOUT = 0xE0 + offsetof(RE::Actor::ACTOR_RUNTIME_DATA, selectedPower); // < SSE_1_6_629 constexpr std::uint32_t BRANCH_SIZE = 5; constexpr std::uint32_t CODE_CAVE_SIZE = 12; constexpr std::uint32_t DIFF = CODE_CAVE_SIZE - BRANCH_SIZE; From a538a83104c4ada2584f76c52fd82ee2ecbbc471 Mon Sep 17 00:00:00 2001 From: Andrej E Baranov Date: Wed, 21 May 2025 16:58:23 +0700 Subject: [PATCH 05/10] remove unused files after update and change port for AutoToml --- CMakeLists.txt | 5 +- cmake/XSEPlugin.cmake | 128 --------------------------- cmake/ports/autotoml/portfile.cmake | 2 +- cmake/ports/clib-util/portfile.cmake | 14 --- cmake/ports/clib-util/vcpkg.json | 7 -- 5 files changed, 5 insertions(+), 151 deletions(-) delete mode 100644 cmake/XSEPlugin.cmake delete mode 100644 cmake/ports/clib-util/portfile.cmake delete mode 100644 cmake/ports/clib-util/vcpkg.json diff --git a/CMakeLists.txt b/CMakeLists.txt index 68f59c5..89ec3fb 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -18,9 +18,9 @@ add_compile_definitions(SKYRIM) set(CommonLibPath "external/CommonLibSSE-NG") set(CommonLibName "CommonLibSSE") set(GameVersion "Skyrim") -add_subdirectory(${CommonLibPath} ${CommonLibName} EXCLUDE_FROM_ALL) find_package(spdlog CONFIG REQUIRED) +find_package(AutoTOML REQUIRED CONFIG) configure_file( "${CMAKE_CURRENT_SOURCE_DIR}/cmake/Version.h.in" @@ -60,6 +60,8 @@ find_package(TBB ) find_package(xbyak REQUIRED CONFIG) +add_subdirectory(${CommonLibPath} ${CommonLibName} EXCLUDE_FROM_ALL) + include(cmake/sourcelist.cmake) source_group( @@ -99,6 +101,7 @@ target_include_directories( target_link_libraries( ${PROJECT_NAME} PRIVATE + AutoTOML::AutoTOML Boost::regex CommonLibSSE::CommonLibSSE TBB::tbb diff --git a/cmake/XSEPlugin.cmake b/cmake/XSEPlugin.cmake deleted file mode 100644 index b5fc590..0000000 --- a/cmake/XSEPlugin.cmake +++ /dev/null @@ -1,128 +0,0 @@ -option(BUILD_SKYRIM "Build for Skyrim" OFF) -option(BUILD_FALLOUT4 "Build for Fallout 4" OFF) - -if(BUILD_SKYRIM) - add_compile_definitions(SKYRIM) - set(CommonLibPath "extern/CommonLibSSE-NG") - set(CommonLibName "CommonLibSSE") - set(GameVersion "Skyrim") -elseif(BUILD_FALLOUT4) - add_compile_definitions(FALLOUT4) - set(CommonLibPath "extern/CommonLibF4/CommonLibF4") - set(CommonLibName "CommonLibF4") - set(GameVersion "Fallout 4") -else() - message( - FATAL_ERROR - "A game must be selected." - ) -endif() - -target_compile_features( - "${PROJECT_NAME}" - PRIVATE - cxx_std_23 -) - -set_property(GLOBAL PROPERTY USE_FOLDERS ON) - -configure_file( - ${CMAKE_CURRENT_SOURCE_DIR}/cmake/Plugin.h.in - ${CMAKE_CURRENT_BINARY_DIR}/cmake/Plugin.h - @ONLY -) - -configure_file( - ${CMAKE_CURRENT_SOURCE_DIR}/cmake/version.rc.in - ${CMAKE_CURRENT_BINARY_DIR}/cmake/version.rc - @ONLY -) - -target_sources( - "${PROJECT_NAME}" - PRIVATE - ${CMAKE_CURRENT_BINARY_DIR}/cmake/Plugin.h - ${CMAKE_CURRENT_BINARY_DIR}/cmake/version.rc -) - -target_precompile_headers( - "${PROJECT_NAME}" - PRIVATE - src/PCH.h -) - -set(CMAKE_INTERPROCEDURAL_OPTIMIZATION ON) -set(CMAKE_INTERPROCEDURAL_OPTIMIZATION_DEBUG OFF) - -set(Boost_USE_STATIC_LIBS ON) -set(Boost_USE_STATIC_RUNTIME ON) - -if(CMAKE_GENERATOR MATCHES "Visual Studio") - add_compile_definitions(_UNICODE) - - target_compile_definitions(${PROJECT_NAME} PRIVATE "$<$:DEBUG>") - - set(SC_RELEASE_OPTS "/Zi;/fp:fast;/GL;/Gy-;/Gm-;/Gw;/sdl-;/GS-;/guard:cf-;/O2;/Ob2;/Oi;/Ot;/Oy;/fp:except-") - - target_compile_options( - "${PROJECT_NAME}" - PRIVATE - /MP - /W4 - /WX - /permissive- - /Zc:alignedNew - /Zc:auto - /Zc:__cplusplus - /Zc:externC - /Zc:externConstexpr - /Zc:forScope - /Zc:hiddenFriend - /Zc:implicitNoexcept - /Zc:lambda - /Zc:noexceptTypes - /Zc:preprocessor - /Zc:referenceBinding - /Zc:rvalueCast - /Zc:sizedDealloc - /Zc:strictStrings - /Zc:ternary - /Zc:threadSafeInit - /Zc:trigraphs - /Zc:wchar_t - /wd4200 # nonstandard extension used : zero-sized array in struct/union - ) - - target_compile_options(${PROJECT_NAME} PUBLIC "$<$:/fp:strict>") - target_compile_options(${PROJECT_NAME} PUBLIC "$<$:/ZI>") - target_compile_options(${PROJECT_NAME} PUBLIC "$<$:/Od>") - target_compile_options(${PROJECT_NAME} PUBLIC "$<$:/Gy>") - target_compile_options(${PROJECT_NAME} PUBLIC "$<$:${SC_RELEASE_OPTS}>") - - target_link_options( - ${PROJECT_NAME} - PRIVATE - /WX - "$<$:/INCREMENTAL;/OPT:NOREF;/OPT:NOICF>" - "$<$:/LTCG;/INCREMENTAL:NO;/OPT:REF;/OPT:ICF;/DEBUG:FULL>" - ) -endif() - -add_subdirectory(${CommonLibPath} ${CommonLibName} EXCLUDE_FROM_ALL) - -find_package(spdlog CONFIG REQUIRED) - -target_include_directories( - ${PROJECT_NAME} - PUBLIC - ${CMAKE_CURRENT_SOURCE_DIR}/include - PRIVATE - ${CMAKE_CURRENT_BINARY_DIR}/cmake - ${CMAKE_CURRENT_SOURCE_DIR}/src -) - -target_link_libraries( - ${PROJECT_NAME} - PUBLIC - CommonLibSSE::CommonLibSSE -) diff --git a/cmake/ports/autotoml/portfile.cmake b/cmake/ports/autotoml/portfile.cmake index abfe20c..1e95bb0 100644 --- a/cmake/ports/autotoml/portfile.cmake +++ b/cmake/ports/autotoml/portfile.cmake @@ -1,6 +1,6 @@ vcpkg_from_github( OUT_SOURCE_PATH SOURCE_PATH - REPO shad0wshayd3/AutoTOML + REPO Ryan-rsm-McKenzie/AutoTOML REF fc0ba2364334503684c4d4dbda6bd10c35dde1fb SHA512 36e8d2d7f042256723b28865067a7317b4783a419c16c62c02a0b5b4ed1e2256d4ed485a0a921bcd5b74ab74007f6d619e1cf06f63eccf386ea56b7d87785a25 HEAD_REF master diff --git a/cmake/ports/clib-util/portfile.cmake b/cmake/ports/clib-util/portfile.cmake deleted file mode 100644 index 3579a0e..0000000 --- a/cmake/ports/clib-util/portfile.cmake +++ /dev/null @@ -1,14 +0,0 @@ -# header-only library -vcpkg_from_github( - OUT_SOURCE_PATH SOURCE_PATH - REPO powerof3/CLibUtil - REF 993aa55e7d963ba844d53888302587ebabb69547 - SHA512 0419049fb92aee3e3ab0a592c410f11cd09db46814f35b822c12e80fb65076d606b3c39c48eaa663c3cac6817f3d947c06e0a7f0e6fc5b34406d60379c4e01bd - HEAD_REF master -) - -# Install codes -set(CLIBUTIL_SOURCE ${SOURCE_PATH}/include/ClibUtil) -file(INSTALL ${CLIBUTIL_SOURCE} DESTINATION ${CURRENT_PACKAGES_DIR}/include) - -vcpkg_install_copyright(FILE_LIST "${SOURCE_PATH}/LICENSE") diff --git a/cmake/ports/clib-util/vcpkg.json b/cmake/ports/clib-util/vcpkg.json deleted file mode 100644 index 5317495..0000000 --- a/cmake/ports/clib-util/vcpkg.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "name": "clib-util", - "version-string": "1.3.7", - "port-version": 1, - "description": "", - "homepage": "https://github.com/powerof3/CLibUtil" -} From d0768698450ee2cafda8de6d226d76212f33e1d0 Mon Sep 17 00:00:00 2001 From: Andrej E Baranov Date: Wed, 21 May 2025 17:03:51 +0700 Subject: [PATCH 06/10] log format for verbose logging --- src/main.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main.cpp b/src/main.cpp index 41a65c3..f9c0c1c 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -114,6 +114,7 @@ extern "C" void DLLEXPORT APIENTRY Initialize() logger::info("enabling verbose logging"sv); spdlog::set_level(spdlog::level::trace); spdlog::flush_on(spdlog::level::trace); + spdlog::set_pattern("[%Y-%m-%d %H:%M:%S.%e] [%L] [%t] %g(%#): %v"s); } patches::Preload(); From 995c484ec23cde36e32a6c63e56a127ffa627cbd Mon Sep 17 00:00:00 2001 From: Andrej E Baranov Date: Wed, 21 May 2025 17:27:41 +0700 Subject: [PATCH 07/10] modify for clean diff --- CMakeLists.txt | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 89ec3fb..e11b8a3 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -19,9 +19,6 @@ set(CommonLibPath "external/CommonLibSSE-NG") set(CommonLibName "CommonLibSSE") set(GameVersion "Skyrim") -find_package(spdlog CONFIG REQUIRED) -find_package(AutoTOML REQUIRED CONFIG) - configure_file( "${CMAKE_CURRENT_SOURCE_DIR}/cmake/Version.h.in" "${CMAKE_CURRENT_BINARY_DIR}/include/Version.h" @@ -44,6 +41,10 @@ add_compile_definitions( UNICODE ) +add_subdirectory(${CommonLibPath} ${CommonLibName} EXCLUDE_FROM_ALL) + +find_package(spdlog CONFIG REQUIRED) +find_package(AutoTOML REQUIRED CONFIG) find_package(Boost MODULE REQUIRED @@ -60,8 +61,6 @@ find_package(TBB ) find_package(xbyak REQUIRED CONFIG) -add_subdirectory(${CommonLibPath} ${CommonLibName} EXCLUDE_FROM_ALL) - include(cmake/sourcelist.cmake) source_group( From ea1c65a1f1917272644e4851cb98537a136817be Mon Sep 17 00:00:00 2001 From: Andrej E Baranov Date: Thu, 22 May 2025 20:01:33 +0700 Subject: [PATCH 08/10] doubleperkapply: fix offsets --- src/fixes/doubleperkapply.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/fixes/doubleperkapply.cpp b/src/fixes/doubleperkapply.cpp index 59261a5..34d53e5 100644 --- a/src/fixes/doubleperkapply.cpp +++ b/src/fixes/doubleperkapply.cpp @@ -79,7 +79,7 @@ namespace fixes { ApplyBasePerksActorImplementation(a_player); - for (auto* addedPerkRank : a_player->addedPerks) + for (auto* addedPerkRank : a_player->GetPlayerRuntimeData().addedPerks) { auto* perk = addedPerkRank->perk; From e3416e5f1fac92f431ead5358501c7b062ecef06 Mon Sep 17 00:00:00 2001 From: Andrej E Baranov Date: Thu, 22 May 2025 22:01:58 +0700 Subject: [PATCH 09/10] UsesUpdatedStructs for plugin version --- src/main.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main.cpp b/src/main.cpp index f9c0c1c..2792aa4 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -61,7 +61,7 @@ extern "C" DLLEXPORT constinit auto SKSEPlugin_Version = []() { v.AuthorName("aers"sv); v.CompatibleVersions({ RUNTIME_1_6_1170 }); v.UsesAddressLibrary(); - v.UsesNoStructs(); + v.UsesUpdatedStructs(); return v; }(); From 3c1fa73fc43bd6dab44de55b36f6c2050a487bd0 Mon Sep 17 00:00:00 2001 From: Andrej E Baranov Date: Fri, 23 May 2025 00:04:13 +0700 Subject: [PATCH 10/10] more GetRuntimeData() --- src/fixes/miscfixes.cpp | 6 +++--- src/patches/treelodreferencecaching.cpp | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/fixes/miscfixes.cpp b/src/fixes/miscfixes.cpp index 2fe3d5d..d7c7ac6 100644 --- a/src/fixes/miscfixes.cpp +++ b/src/fixes/miscfixes.cpp @@ -742,11 +742,11 @@ namespace fixes const bool retVal = _Load(a_this, a_file); // the game doesn't allow more than 10 here - if (a_this->data.size() >= 12) + if (a_this->GetRuntimeData().data.size() >= 12) { - const auto particleDensity = a_this->data[11]; + const auto particleDensity = a_this->GetRuntimeData().data[11]; if (particleDensity.f > 10.0) - a_this->data[11].f = 10.0f; + a_this->GetRuntimeData().data[11].f = 10.0f; } return retVal; diff --git a/src/patches/treelodreferencecaching.cpp b/src/patches/treelodreferencecaching.cpp index 1cc15ab..10cc317 100644 --- a/src/patches/treelodreferencecaching.cpp +++ b/src/patches/treelodreferencecaching.cpp @@ -75,7 +75,7 @@ namespace patches const auto fadeNode = obj3D->AsFadeNode(); if (fadeNode) { - alpha = 1.0f - fadeNode->currentFade; + alpha = 1.0f - fadeNode->GetRuntimeData().currentFade; if (alpha <= 0.0f) fullyHidden = true; }