mirror of
https://github.com/hedge-dev/UnleashedRecomp.git
synced 2025-10-30 07:11:05 +00:00
Compare commits
24 commits
fc69a51c48
...
a2f98428b0
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
a2f98428b0 | ||
|
|
3c1badf183 | ||
|
|
2385bd435a | ||
|
|
6e7a2f6a13 | ||
|
|
b1d446cf2d | ||
|
|
de94e9004f | ||
|
|
cebf5e6a1b | ||
|
|
8758808d6e | ||
|
|
aedc26bf70 | ||
|
|
bbad87a0ed | ||
|
|
5fc38a1b81 | ||
|
|
75dacf5578 | ||
|
|
458938c2ae | ||
|
|
a96fc60dcd | ||
|
|
c9b3a5e03f | ||
|
|
a8cac8763d | ||
|
|
ef4e37cb41 | ||
|
|
bec2cf65ba | ||
|
|
43091838af | ||
|
|
90b35bc593 | ||
|
|
9a181e0839 | ||
|
|
176bb625e2 | ||
|
|
07d193e229 | ||
|
|
574afdf53d |
5 changed files with 128 additions and 101 deletions
|
|
@ -23,10 +23,6 @@ if (APPLE)
|
|||
enable_language(OBJC OBJCXX)
|
||||
endif()
|
||||
|
||||
if (CMAKE_SYSTEM_NAME MATCHES "Linux")
|
||||
set(SDL_VULKAN_ENABLED ON CACHE BOOL "")
|
||||
endif()
|
||||
|
||||
if (CMAKE_OSX_ARCHITECTURES)
|
||||
set(UNLEASHED_RECOMP_ARCHITECTURE ${CMAKE_OSX_ARCHITECTURES})
|
||||
elseif(CMAKE_SYSTEM_PROCESSOR)
|
||||
|
|
|
|||
|
|
@ -352,23 +352,13 @@ if (UNLEASHED_RECOMP_FLATPAK)
|
|||
)
|
||||
endif()
|
||||
|
||||
if (UNLEASHED_RECOMP_D3D12)
|
||||
find_package(directx-headers CONFIG REQUIRED)
|
||||
find_package(directx12-agility CONFIG REQUIRED)
|
||||
target_compile_definitions(UnleashedRecomp PRIVATE
|
||||
UNLEASHED_RECOMP_D3D12
|
||||
D3D12MA_USING_DIRECTX_HEADERS
|
||||
D3D12MA_OPTIONS16_SUPPORTED
|
||||
)
|
||||
endif()
|
||||
|
||||
if (SDL_VULKAN_ENABLED)
|
||||
target_compile_definitions(UnleashedRecomp PRIVATE SDL_VULKAN_ENABLED)
|
||||
endif()
|
||||
|
||||
find_package(CURL REQUIRED)
|
||||
|
||||
if (UNLEASHED_RECOMP_D3D12)
|
||||
find_package(directx-headers CONFIG REQUIRED)
|
||||
find_package(directx12-agility CONFIG REQUIRED)
|
||||
target_compile_definitions(UnleashedRecomp PRIVATE UNLEASHED_RECOMP_D3D12)
|
||||
|
||||
file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/D3D12)
|
||||
add_custom_command(TARGET UnleashedRecomp POST_BUILD
|
||||
COMMAND ${CMAKE_COMMAND} -E copy $<TARGET_PROPERTY:Microsoft::DirectX12-Core,IMPORTED_LOCATION_RELEASE> $<TARGET_FILE_DIR:UnleashedRecomp>/D3D12
|
||||
|
|
@ -379,9 +369,6 @@ if (UNLEASHED_RECOMP_D3D12)
|
|||
)
|
||||
|
||||
target_link_libraries(UnleashedRecomp PRIVATE
|
||||
Microsoft::DirectX-Headers
|
||||
Microsoft::DirectX-Guids
|
||||
Microsoft::DirectX12-Agility
|
||||
Microsoft::DirectXShaderCompiler
|
||||
Microsoft::DXIL
|
||||
dxgi
|
||||
|
|
|
|||
|
|
@ -209,13 +209,29 @@ static void SetControllerInputDevice(Controller* controller)
|
|||
}
|
||||
}
|
||||
|
||||
static void SetControllerTimeOfDayLED(Controller& controller, bool isNight)
|
||||
static void SetControllerTimeOfDayLED(Controller& ctrl, bool isNight)
|
||||
{
|
||||
auto r = isNight ? 22 : 0;
|
||||
auto g = isNight ? 0 : 37;
|
||||
auto b = isNight ? 101 : 184;
|
||||
// Fetch the lightbar color based on the time of day
|
||||
uint8_t r = 0, g = 0, b = 0;
|
||||
|
||||
controller.SetLED(r, g, b);
|
||||
if (isNight)
|
||||
{
|
||||
r = 22; // Night: Red tone
|
||||
g = 0; // Night: No green
|
||||
b = 101; // Night: Cool blue
|
||||
}
|
||||
else
|
||||
{
|
||||
r = 0; // Day: No red
|
||||
g = 0; // Day: No green
|
||||
b = 60; // Day: Dimmer blue
|
||||
}
|
||||
|
||||
// Apply the lightbar color to the specified controller
|
||||
if (ctrl.CanPoll())
|
||||
{
|
||||
ctrl.SetLED(r, g, b);
|
||||
}
|
||||
}
|
||||
|
||||
int HID_OnSDLEvent(void*, SDL_Event* event)
|
||||
|
|
@ -228,13 +244,32 @@ int HID_OnSDLEvent(void*, SDL_Event* event)
|
|||
|
||||
if (freeIndex != -1)
|
||||
{
|
||||
// Initialize the new controller
|
||||
auto controller = Controller(event->cdevice.which);
|
||||
|
||||
g_controllers[freeIndex] = controller;
|
||||
|
||||
SetControllerTimeOfDayLED(controller, App::s_isWerehog);
|
||||
// Assign "Player 1 LED" for Player 0 and Player 1
|
||||
if (freeIndex == 0 || freeIndex == 1) // Player 0 and Player 1 both use "Player 1 LED"
|
||||
{
|
||||
SDL_GameControllerSetPlayerIndex(controller.controller, 1); // Force Player LED to "Player 1"
|
||||
}
|
||||
else // Additional external controllers (Player 2+)
|
||||
{
|
||||
SDL_GameControllerSetPlayerIndex(controller.controller, freeIndex); // Assign correct LED for Player 2+
|
||||
}
|
||||
|
||||
// Apply lightbar settings immediately for the new controller
|
||||
SetControllerTimeOfDayLED(controller, App::s_isWerehog);
|
||||
|
||||
// Refresh LEDs for all connected controllers
|
||||
for (auto& ctrl : g_controllers)
|
||||
{
|
||||
if (ctrl.CanPoll())
|
||||
{
|
||||
SDL_GameControllerSetPlayerIndex(ctrl.controller, ctrl.index); // Ensure correct LED updates
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
|
|
@ -243,8 +278,43 @@ int HID_OnSDLEvent(void*, SDL_Event* event)
|
|||
auto* controller = FindController(event->cdevice.which);
|
||||
|
||||
if (controller)
|
||||
{
|
||||
controller->Close();
|
||||
|
||||
// If Player 1 disconnects, promote the next available controller to Player 1
|
||||
if (controller == &g_controllers[1]) // Player 1 removed
|
||||
{
|
||||
for (auto& ctrl : g_controllers)
|
||||
{
|
||||
if (ctrl.CanPoll() && &ctrl != &g_controllers[0]) // Skip Player 0
|
||||
{
|
||||
g_controllers[1] = ctrl; // Promote next available controller to Player 1
|
||||
SDL_GameControllerSetPlayerIndex(ctrl.controller, 1); // Reflect Player 1 LED
|
||||
SetControllerTimeOfDayLED(ctrl, App::s_isWerehog); // Update lightbar
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Update Player LED indices for all controllers immediately
|
||||
for (std::size_t i = 2; i < g_controllers.size(); ++i) // Start from Player 2 onward
|
||||
{
|
||||
if (g_controllers[i].CanPoll())
|
||||
{
|
||||
SDL_GameControllerSetPlayerIndex(g_controllers[i].controller, static_cast<int>(i)); // Assign correct LED index
|
||||
SetControllerTimeOfDayLED(g_controllers[i], App::s_isWerehog); // Update lightbars
|
||||
}
|
||||
}
|
||||
|
||||
// Refresh lightbar settings for all connected controllers
|
||||
for (auto& ctrl : g_controllers)
|
||||
{
|
||||
if (ctrl.CanPoll())
|
||||
{
|
||||
SetControllerTimeOfDayLED(ctrl, App::s_isWerehog);
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
|
|
@ -258,6 +328,7 @@ int HID_OnSDLEvent(void*, SDL_Event* event)
|
|||
if (!controller)
|
||||
break;
|
||||
|
||||
// Process input
|
||||
if (event->type == SDL_CONTROLLERAXISMOTION)
|
||||
{
|
||||
if (abs(event->caxis.value) > 8000)
|
||||
|
|
@ -276,43 +347,8 @@ int HID_OnSDLEvent(void*, SDL_Event* event)
|
|||
controller->Poll();
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
case SDL_KEYDOWN:
|
||||
case SDL_KEYUP:
|
||||
hid::g_inputDevice = hid::EInputDevice::Keyboard;
|
||||
break;
|
||||
|
||||
case SDL_MOUSEMOTION:
|
||||
case SDL_MOUSEBUTTONDOWN:
|
||||
case SDL_MOUSEBUTTONUP:
|
||||
{
|
||||
if (!GameWindow::IsFullscreen() || GameWindow::s_isFullscreenCursorVisible)
|
||||
SDL_ShowCursor(SDL_ENABLE);
|
||||
|
||||
hid::g_inputDevice = hid::EInputDevice::Mouse;
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
case SDL_WINDOWEVENT:
|
||||
{
|
||||
if (event->window.event == SDL_WINDOWEVENT_FOCUS_LOST)
|
||||
{
|
||||
// Stop vibrating controllers on focus lost.
|
||||
for (auto& controller : g_controllers)
|
||||
controller.SetVibration({ 0, 0 });
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
case SDL_USER_EVILSONIC:
|
||||
{
|
||||
for (auto& controller : g_controllers)
|
||||
SetControllerTimeOfDayLED(controller, event->user.code);
|
||||
|
||||
// Instantly apply updated lightbar settings during input
|
||||
SetControllerTimeOfDayLED(*controller, App::s_isWerehog);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
8
thirdparty/CMakeLists.txt
vendored
8
thirdparty/CMakeLists.txt
vendored
|
|
@ -15,6 +15,14 @@ set(SDL2MIXER_OPUS OFF)
|
|||
set(SDL2MIXER_VORBIS "VORBISFILE")
|
||||
set(SDL2MIXER_WAVPACK OFF)
|
||||
|
||||
if (CMAKE_SYSTEM_NAME MATCHES "Linux")
|
||||
set(SDL_VULKAN_ENABLED ON CACHE BOOL "")
|
||||
endif()
|
||||
|
||||
if (WIN32)
|
||||
set(D3D12_AGILITY_SDK_ENABLED ON CACHE BOOL "")
|
||||
endif()
|
||||
|
||||
add_subdirectory("${UNLEASHED_RECOMP_THIRDPARTY_ROOT}/msdf-atlas-gen")
|
||||
add_subdirectory("${UNLEASHED_RECOMP_THIRDPARTY_ROOT}/nativefiledialog-extended")
|
||||
add_subdirectory("${UNLEASHED_RECOMP_THIRDPARTY_ROOT}/o1heap")
|
||||
|
|
|
|||
2
thirdparty/plume
vendored
2
thirdparty/plume
vendored
|
|
@ -1 +1 @@
|
|||
Subproject commit fffeb35f836d8c945697ec82b735e77db401e2de
|
||||
Subproject commit 11926860e878e68626ea99ec88562ce2b8badc4f
|
||||
Loading…
Add table
Reference in a new issue