diff --git a/CMakeLists.txt b/CMakeLists.txt index 5101bb8a5..adc826c23 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -110,11 +110,9 @@ else() endif() if (WIN32) - set(PLATFORM "Windows") add_compile_definitions(WIN32=1) add_compile_definitions(_HAS_EXCEPTIONS=0) elseif (UNIX) - set(PLATFORM "SDL2") add_compile_definitions(SDL2=1) add_compile_definitions(_GLIBCXX_USE_CXX11_ABI=1) endif() diff --git a/Editor/Editor.cpp b/Editor/Editor.cpp index 364870657..6f214d528 100644 --- a/Editor/Editor.cpp +++ b/Editor/Editor.cpp @@ -376,7 +376,20 @@ void Editor::SaveWindowSize() { if (window != nullptr) { -#ifdef _WIN32 +#ifdef SDL2 + if (!(SDL_GetWindowFlags(window) & SDL_WINDOW_MAXIMIZED)) + { + int width = 0; + int height = 0; + SDL_GetWindowSize(window, &width, &height); + if (width > 0 && height > 0) + { + config.Set("width", width); + config.Set("height", height); + config.Commit(); + } + } +#elif defined(_WIN32) WINDOWPLACEMENT placement = {}; placement.length = sizeof(WINDOWPLACEMENT); if (GetWindowPlacement(window, &placement) && placement.showCmd != SW_SHOWMAXIMIZED) @@ -392,19 +405,6 @@ void Editor::SaveWindowSize() config.Commit(); } } -#elif defined(SDL2) - if (!(SDL_GetWindowFlags(window) & SDL_WINDOW_MAXIMIZED)) - { - int width = 0; - int height = 0; - SDL_GetWindowSize(window, &width, &height); - if (width > 0 && height > 0) - { - config.Set("width", width); - config.Set("height", height); - config.Commit(); - } - } #endif } } diff --git a/Samples/Example_ImGui/Example_ImGui.cpp b/Samples/Example_ImGui/Example_ImGui.cpp index 8775afc65..4c5df79d4 100644 --- a/Samples/Example_ImGui/Example_ImGui.cpp +++ b/Samples/Example_ImGui/Example_ImGui.cpp @@ -4,10 +4,10 @@ #include "ImGui/imgui.h" #include "ImGui/imgui_internal.h" -#ifdef _WIN32 -#include "ImGui/imgui_impl_win32.h" -#elif defined(SDL2) +#ifdef SDL2 #include "ImGui/imgui_impl_sdl.h" +#elif defined(_WIN32) +#include "ImGui/imgui_impl_win32.h" #endif #include @@ -97,10 +97,10 @@ Example_ImGui::~Example_ImGui() { // Cleanup //ImGui_ImplDX11_Shutdown(); -#ifdef _WIN32 - ImGui_ImplWin32_Shutdown(); -#elif defined(SDL2) +#ifdef SDL2 ImGui_ImplSDL2_Shutdown(); +#elif defined(_WIN32) + ImGui_ImplWin32_Shutdown(); #endif ImGui::DestroyContext(); } @@ -129,10 +129,11 @@ void Example_ImGui::Initialize() ImGui::StyleColorsDark(); //ImGui::StyleColorsClassic(); -#ifdef _WIN32 - ImGui_ImplWin32_Init(window); -#elif defined(SDL2) +#ifdef SDL2 + //FIXME: add DX12 on windows ImGui_ImplSDL2_InitForVulkan(window); +#elif defined(_WIN32) + ImGui_ImplWin32_Init(window); #endif IM_ASSERT(io.BackendRendererUserData == NULL && "Already initialized a renderer backend!"); @@ -374,10 +375,10 @@ void Example_ImGuiRenderer::Update(float dt) ImGui_Impl_CreateDeviceObjects(); } -#ifdef _WIN32 - ImGui_ImplWin32_NewFrame(); -#elif defined(SDL2) +#ifdef SDL2 ImGui_ImplSDL2_NewFrame(); +#elif defined(_WIN32) + ImGui_ImplWin32_NewFrame(); #endif ImGui::NewFrame(); diff --git a/Samples/Example_ImGui_Docking/CMakeLists.txt b/Samples/Example_ImGui_Docking/CMakeLists.txt index a242b0f64..486b9e799 100644 --- a/Samples/Example_ImGui_Docking/CMakeLists.txt +++ b/Samples/Example_ImGui_Docking/CMakeLists.txt @@ -25,7 +25,19 @@ set(IMGUI_FILES ImGui/IconsMaterialDesign.h ) -if (WIN32) +if(SDL2) + list(APPEND SOURCE_FILES + main_SDL2.cpp + ) + list(APPEND IMGUI_FILES + ImGui/imgui_impl_sdl.cpp + ImGui/imgui_impl_sdl.h + ) + add_library(Example_ImGui_Docking_Lib OBJECT ${IMGUI_FILES}) + find_package(SDL2 REQUIRED) + target_link_libraries(Example_ImGui_Docking_Lib PRIVATE SDL2::SDL2) + add_executable(Example_ImGui_Docking ${SOURCE_FILES}) +elseif(WIN32) list(APPEND SOURCE_FILES main_Windows.cpp main_Windows.h @@ -38,48 +50,31 @@ if (WIN32) add_library(Example_ImGui_Docking_Lib OBJECT ${IMGUI_FILES}) add_executable(Example_ImGui_Docking WIN32 ${SOURCE_FILES}) +endif() - target_link_libraries(Example_ImGui_Docking - PUBLIC - WickedEngine +target_link_libraries(Example_ImGui_Docking + PUBLIC + WickedEngine + $ - PRIVATE - Example_ImGui_Docking_Lib - ) + PRIVATE + Example_ImGui_Docking_Lib +) + +if(WIN32) set(LIB_DXCOMPILER "dxcompiler.dll") else() - list(APPEND SOURCE_FILES - main_SDL2.cpp - ) - list(APPEND IMGUI_FILES - ImGui/imgui_impl_sdl.cpp - ImGui/imgui_impl_sdl.h - ) - add_library(Example_ImGui_Docking_Lib OBJECT ${IMGUI_FILES}) - find_package(SDL2 REQUIRED) - target_link_libraries(Example_ImGui_Docking_Lib PRIVATE SDL2::SDL2) - add_executable(Example_ImGui_Docking ${SOURCE_FILES}) - - target_link_libraries(Example_ImGui_Docking - PUBLIC - WickedEngine - Threads::Threads - - PRIVATE - Example_ImGui_Docking_Lib - ) - - # Copy shaders and font to build and source folders just to be safe: - add_custom_command( - TARGET Example_ImGui_Docking POST_BUILD - COMMAND ${CMAKE_COMMAND} -E copy_if_different ${CMAKE_CURRENT_SOURCE_DIR}/ImGuiPS.hlsl ${CMAKE_CURRENT_BINARY_DIR} - COMMAND ${CMAKE_COMMAND} -E copy_if_different ${CMAKE_CURRENT_SOURCE_DIR}/ImGuiVS.hlsl ${CMAKE_CURRENT_BINARY_DIR} - COMMAND ${CMAKE_COMMAND} -E copy_if_different ${CMAKE_CURRENT_SOURCE_DIR}/Roboto-Medium.ttf ${CMAKE_CURRENT_BINARY_DIR} - COMMAND ${CMAKE_COMMAND} -E copy_if_different ${CMAKE_CURRENT_SOURCE_DIR}/MaterialIcons-Regular.ttf ${CMAKE_CURRENT_BINARY_DIR} - ) - set(LIB_DXCOMPILER "libdxcompiler.so") -endif () +endif() + +# Copy shaders and font to build and source folders just to be safe: +add_custom_command( + TARGET Example_ImGui_Docking POST_BUILD + COMMAND ${CMAKE_COMMAND} -E copy_if_different ${CMAKE_CURRENT_SOURCE_DIR}/ImGuiPS.hlsl ${CMAKE_CURRENT_BINARY_DIR} + COMMAND ${CMAKE_COMMAND} -E copy_if_different ${CMAKE_CURRENT_SOURCE_DIR}/ImGuiVS.hlsl ${CMAKE_CURRENT_BINARY_DIR} + COMMAND ${CMAKE_COMMAND} -E copy_if_different ${CMAKE_CURRENT_SOURCE_DIR}/Roboto-Medium.ttf ${CMAKE_CURRENT_BINARY_DIR} + COMMAND ${CMAKE_COMMAND} -E copy_if_different ${CMAKE_CURRENT_SOURCE_DIR}/MaterialIcons-Regular.ttf ${CMAKE_CURRENT_BINARY_DIR} +) if(WICKED_ENABLE_IPO) set_target_properties(Example_ImGui_Docking PROPERTIES diff --git a/Samples/Example_ImGui_Docking/Example_ImGui_Docking.cpp b/Samples/Example_ImGui_Docking/Example_ImGui_Docking.cpp index 8febc8e88..60c15d4f4 100644 --- a/Samples/Example_ImGui_Docking/Example_ImGui_Docking.cpp +++ b/Samples/Example_ImGui_Docking/Example_ImGui_Docking.cpp @@ -12,10 +12,10 @@ #endif #include "ImGui/imgui_internal.h" -#ifdef _WIN32 -#include "ImGui/imgui_impl_win32.h" -#elif defined(SDL2) +#ifdef SDL2 #include "ImGui/imgui_impl_sdl.h" +#elif defined(_WIN32) +#include "ImGui/imgui_impl_win32.h" #endif #include "ImGui/ImGuizmo.h" #ifdef INCLUDEICONFONT @@ -129,10 +129,10 @@ Example_ImGui::~Example_ImGui() { // Cleanup //ImGui_ImplDX11_Shutdown(); -#ifdef _WIN32 - ImGui_ImplWin32_Shutdown(); -#elif defined(SDL2) +#ifdef SDL2 ImGui_ImplSDL2_Shutdown(); +#elif defined(_WIN32) + ImGui_ImplWin32_Shutdown(); #endif ImGui::DestroyContext(); } @@ -468,11 +468,11 @@ void Example_ImGuiRenderer::Update(float dt) ImGui_Impl_CreateDeviceObjects(); } - -#ifdef _WIN32 - ImGui_ImplWin32_NewFrame(); -#elif defined(SDL2) + +#ifdef SDL2 ImGui_ImplSDL2_NewFrame(); +#elif defined(_WIN32) + ImGui_ImplWin32_NewFrame(); #endif ImGui::NewFrame(); @@ -692,7 +692,7 @@ void Example_ImGuiRenderer::Update(float dt) bool bUseChild = false; if (use_fixed_height > 0) bUseChild = true; if(bUseChild) ImGui::BeginChild("##objectsc", ImVec2(0.0f, use_fixed_height), false, ImGuiWindowFlags_None); //ImGuiWindowFlags_AlwaysVerticalScrollbar - + for (int i = 0; i < size; i++) { Entity e = scene.objects.GetEntity(i); @@ -1040,7 +1040,7 @@ void Example_ImGuiRenderer::Update(float dt) ImGui::EndTabBar(); } } - + if (ImGui::CollapsingHeader(ICON_MD_SETTINGS " Settings", ImGuiTreeNodeFlags_None)) //ImGuiTreeNodeFlags_DefaultOpen { ImGui::SetCursorPos(ImGui::GetCursorPos() + ImVec2(0.0f, 3.0f)); @@ -1401,7 +1401,7 @@ void Example_ImGuiRenderer::Update(float dt) if (ImGui::Selectable(lua_history[i].c_str(), is_selected)) { #ifdef _WIN32 strcpy_s(lua, lua_history[i].c_str()); - #elif __linux__ + #elif __linux__ strcpy(lua, lua_history[i].c_str()); #endif bSetKeyBoardFocus = true; @@ -1500,7 +1500,7 @@ void Example_ImGuiRenderer::Update(float dt) } float movespeed = CAMERAMOVESPEED; - + if (imgui_io.KeyShift) { movespeed *= 3.0; //Speed up camera. diff --git a/WickedEngine/CMakeLists.txt b/WickedEngine/CMakeLists.txt index dbc09a68d..b8b9c47b9 100644 --- a/WickedEngine/CMakeLists.txt +++ b/WickedEngine/CMakeLists.txt @@ -32,16 +32,19 @@ else() message(STATUS "Building WickedEngine as a static library") endif() -if (WIN32) - if (MSVC) - add_compile_options( - /bigobj - ) - endif() -else () + +if (MSVC) + add_compile_options( + /bigobj + ) +endif() + +if(SDL2) find_package(SDL2 REQUIRED) find_package(OpenImageDenoise "${MIN_OpenImageDenoise_VERSION}" QUIET) - find_package(Threads REQUIRED) + if(UNIX) + find_package(Threads REQUIRED) + endif() if(NOT ${OpenImageDenoise_FOUND}) message("OpenImageDenoise>=${MIN_OpenImageDenoise_VERSION} not found, it will be disabled.") else() diff --git a/WickedEngine/wiAudio.cpp b/WickedEngine/wiAudio.cpp index d847498d0..762cc566c 100644 --- a/WickedEngine/wiAudio.cpp +++ b/WickedEngine/wiAudio.cpp @@ -15,6 +15,7 @@ static constexpr T AlignTo(T value, T alignment) return ((value + alignment - T(1)) / alignment) * alignment; } +//FIXME: Use FAudio on Windows SDL? #ifdef _WIN32 #include // ComPtr @@ -454,7 +455,7 @@ namespace wi::audio } instanceinternal->sourceVoice->GetVoiceDetails(&instanceinternal->voiceDetails); - + instanceinternal->outputMatrix.resize(size_t(instanceinternal->voiceDetails.InputChannels) * size_t(instanceinternal->audio->masteringVoiceDetails.InputChannels)); instanceinternal->channelAzimuths.resize(instanceinternal->voiceDetails.InputChannels); for (size_t i = 0; i < instanceinternal->channelAzimuths.size(); ++i) @@ -678,7 +679,7 @@ namespace wi::audio settings.pMatrixCoefficients )); - + XAUDIO2_FILTER_PARAMETERS FilterParametersDirect = { LowPassFilter, 2.0f * sinf(X3DAUDIO_PI / 6.0f * settings.LPFDirectCoefficient), 1.0f }; xaudio_check(instanceinternal->sourceVoice->SetOutputFilterParameters(instanceinternal->audio->submixVoices[instance->type], &FilterParametersDirect)); @@ -778,10 +779,10 @@ namespace wi::audio } res = FAudio_CreateMasteringVoice( - audioEngine, - &masteringVoice, - FAUDIO_DEFAULT_CHANNELS, - FAUDIO_DEFAULT_SAMPLERATE, + audioEngine, + &masteringVoice, + FAUDIO_DEFAULT_CHANNELS, + FAUDIO_DEFAULT_SAMPLERATE, 0, 0, NULL); if (res != 0) { @@ -790,15 +791,15 @@ namespace wi::audio wi::backlog::post(ss.str(), wi::backlog::LogLevel::Error); return; } - + FAudioVoice_GetVoiceDetails(masteringVoice, &masteringVoiceDetails); for (int i=0; i filedata; bool success = wi::helper::FileRead(filename, filedata); if (!success) @@ -1072,7 +1073,7 @@ namespace wi::audio instance->IsEnableReverb() ? (uint32_t)arraysize(SFXSend) : 1, SFXSend }; - + res = FAudio_CreateSourceVoice(instanceinternal->audio->audioEngine, &instanceinternal->sourceVoice, &soundinternal->wfx, 0, FAUDIO_DEFAULT_FREQ_RATIO, NULL, &SFXSendList, NULL); if(res != 0){ @@ -1225,10 +1226,10 @@ namespace wi::audio uint32_t res = FAudioVoice_SetVolume(audio_internal->submixVoices[type], volume, FAUDIO_COMMIT_NOW); assert(res == 0); } - float GetSubmixVolume(SUBMIX_TYPE type) { + float GetSubmixVolume(SUBMIX_TYPE type) { float volume; FAudioVoice_GetVolume(audio_internal->submixVoices[type], &volume); - return volume; + return volume; } void Update3D(SoundInstance* instance, const SoundInstance3D& instance3D) { @@ -1238,13 +1239,13 @@ namespace wi::audio listener.Position = (F3DAUDIO_VECTOR){ instance3D.listenerPos.x, instance3D.listenerPos.y, instance3D.listenerPos.z }; listener.OrientFront = (F3DAUDIO_VECTOR){ instance3D.listenerFront.x, instance3D.listenerFront.y, instance3D.listenerFront.z }; listener.OrientTop = (F3DAUDIO_VECTOR){ instance3D.listenerUp.x, instance3D.listenerUp.y, instance3D.listenerUp.z }; - listener.Velocity = (F3DAUDIO_VECTOR){ instance3D.listenerVelocity.x, instance3D.listenerVelocity.y, instance3D.listenerVelocity.z }; + listener.Velocity = (F3DAUDIO_VECTOR){ instance3D.listenerVelocity.x, instance3D.listenerVelocity.y, instance3D.listenerVelocity.z }; F3DAUDIO_EMITTER emitter = {}; emitter.Position = (F3DAUDIO_VECTOR){ instance3D.emitterPos.x, instance3D.emitterPos.y, instance3D.emitterPos.z }; emitter.OrientFront = (F3DAUDIO_VECTOR){ instance3D.emitterFront.x, instance3D.emitterFront.y, instance3D.emitterFront.z }; emitter.OrientTop = (F3DAUDIO_VECTOR){ instance3D.emitterUp.x, instance3D.emitterUp.y, instance3D.emitterUp.z }; - emitter.Velocity = (F3DAUDIO_VECTOR){ instance3D.emitterVelocity.x, instance3D.emitterVelocity.y, instance3D.emitterVelocity.z }; + emitter.Velocity = (F3DAUDIO_VECTOR){ instance3D.emitterVelocity.x, instance3D.emitterVelocity.y, instance3D.emitterVelocity.z }; emitter.InnerRadius = instance3D.emitterRadius; emitter.InnerRadiusAngle = F3DAUDIO_PI / 4.0f; emitter.ChannelCount = instanceinternal->voiceDetails.InputChannels; @@ -1277,11 +1278,11 @@ namespace wi::audio assert(res == 0); res = FAudioVoice_SetOutputMatrix( - instanceinternal->sourceVoice, + instanceinternal->sourceVoice, instanceinternal->audio->submixVoices[instance->type], - settings.SrcChannelCount, - settings.DstChannelCount, - settings.pMatrixCoefficients, + settings.SrcChannelCount, + settings.DstChannelCount, + settings.pMatrixCoefficients, FAUDIO_COMMIT_NOW); assert(res == 0); diff --git a/WickedEngine/wiHelper.cpp b/WickedEngine/wiHelper.cpp index 1298ab5c8..84f84b068 100644 --- a/WickedEngine/wiHelper.cpp +++ b/WickedEngine/wiHelper.cpp @@ -101,9 +101,7 @@ namespace wi::helper StringConvert(msg, wmsg); StringConvert(caption, wcaption); MessageBox(GetActiveWindow(), wmsg.c_str(), wcaption.c_str(), 0); -#endif // PLATFORM_WINDOWS_DESKTOP - -#ifdef SDL2 +#elif defined(SDL2) SDL_ShowSimpleMessageBox(SDL_MESSAGEBOX_ERROR, caption.c_str(), msg.c_str(), NULL); #endif // SDL2 } @@ -151,9 +149,7 @@ namespace wi::helper case IDIGNORE: return MessageBoxResult::Ignore; default: return MessageBoxResult::Cancel; } -#endif // PLATFORM_WINDOWS_DESKTOP - -#ifdef SDL2 +#elif defined(SDL2) const SDL_MessageBoxButtonData buttons_data[] = { { SDL_MESSAGEBOX_BUTTON_RETURNKEY_DEFAULT, 0, "Yes" }, { 0, 1, "No" }, diff --git a/WickedEngine/wiInput.cpp b/WickedEngine/wiInput.cpp index 31ca92cab..c793ecba5 100644 --- a/WickedEngine/wiInput.cpp +++ b/WickedEngine/wiInput.cpp @@ -46,22 +46,6 @@ namespace wi::input CURSOR cursor_current = CURSOR_COUNT; // something that's not default, because at least once code should change it to default CURSOR cursor_next = CURSOR_DEFAULT; -#ifdef _WIN32 - static const HCURSOR cursor_table_original[] = { - ::LoadCursor(nullptr, IDC_ARROW), - ::LoadCursor(nullptr, IDC_IBEAM), - ::LoadCursor(nullptr, IDC_SIZEALL), - ::LoadCursor(nullptr, IDC_SIZENS), - ::LoadCursor(nullptr, IDC_SIZEWE), - ::LoadCursor(nullptr, IDC_SIZENESW), - ::LoadCursor(nullptr, IDC_SIZENWSE), - ::LoadCursor(nullptr, IDC_HAND), - ::LoadCursor(nullptr, IDC_NO), - ::LoadCursor(nullptr, IDC_CROSS), - }; - static HCURSOR cursor_table[arraysize(cursor_table_original)] = {}; -#endif // _WIN32 - #ifdef SDL2 static SDL_Cursor* cursor_table_original[] = { SDL_CreateSystemCursor(SDL_SYSTEM_CURSOR_ARROW), @@ -76,12 +60,27 @@ namespace wi::input SDL_CreateSystemCursor(SDL_SYSTEM_CURSOR_CROSSHAIR), }; static SDL_Cursor* cursor_table[arraysize(cursor_table_original)] = {}; -#endif // SDL2 +#elif defined(_WIN32) + static const HCURSOR cursor_table_original[] = { + ::LoadCursor(nullptr, IDC_ARROW), + ::LoadCursor(nullptr, IDC_IBEAM), + ::LoadCursor(nullptr, IDC_SIZEALL), + ::LoadCursor(nullptr, IDC_SIZENS), + ::LoadCursor(nullptr, IDC_SIZEWE), + ::LoadCursor(nullptr, IDC_SIZENESW), + ::LoadCursor(nullptr, IDC_SIZENWSE), + ::LoadCursor(nullptr, IDC_HAND), + ::LoadCursor(nullptr, IDC_NO), + ::LoadCursor(nullptr, IDC_CROSS), + }; + static HCURSOR cursor_table[arraysize(cursor_table_original)] = {}; +#endif + const KeyboardState& GetKeyboardState() { return keyboard; } const MouseState& GetMouseState() { return mouse; } - struct Input + struct Input { BUTTON button = BUTTON_NONE; int playerIndex = 0; @@ -154,9 +153,12 @@ namespace wi::input wi::input::ps5::Update(); #endif // PLATFORM_PS5 -#if defined(_WIN32) && !defined(PLATFORM_XBOX) +#ifdef SDL2 + wi::input::sdlinput::GetMouseState(&mouse); + wi::input::sdlinput::GetKeyboardState(&keyboard); +#elif defined(_WIN32) && !defined(PLATFORM_XBOX) wi::input::rawinput::GetMouseState(&mouse); // currently only the relative data can be used from this - wi::input::rawinput::GetKeyboardState(&keyboard); + wi::input::rawinput::GetKeyboardState(&keyboard); // apparently checking the mouse here instead of Down() avoids missing the button presses (review!) mouse.left_button_press |= KEY_DOWN(VK_LBUTTON); @@ -169,10 +171,6 @@ namespace wi::input ScreenToClient(window, &p); mouse.position.x = (float)p.x; mouse.position.y = (float)p.y; - -#elif defined(SDL2) - wi::input::sdlinput::GetMouseState(&mouse); - wi::input::sdlinput::GetKeyboardState(&keyboard); #endif if (pen_override) @@ -389,14 +387,11 @@ namespace wi::input // Cursor update: if(cursor_next != cursor_current || cursor_next != CURSOR_DEFAULT) { -#ifdef PLATFORM_WINDOWS_DESKTOP - ::SetCursor(cursor_table[cursor_next]); -#endif // PLATFORM_WINDOWS_DESKTOP - #ifdef SDL2 SDL_SetCursor(cursor_table[cursor_next] ? cursor_table[cursor_next] : cursor_table[CURSOR_DEFAULT]); -#endif // SDL2 - +#elif defined(PLATFORM_WINDOWS_DESKTOP) + ::SetCursor(cursor_table[cursor_next]); +#endif cursor_current = cursor_next; } cursor_next = CURSOR_DEFAULT; @@ -473,15 +468,15 @@ namespace wi::input switch (button) { case wi::input::MOUSE_BUTTON_LEFT: - if (mouse.left_button_press) + if (mouse.left_button_press) return true; return false; case wi::input::MOUSE_BUTTON_RIGHT: - if (mouse.right_button_press) + if (mouse.right_button_press) return true; return false; case wi::input::MOUSE_BUTTON_MIDDLE: - if (mouse.middle_button_press) + if (mouse.middle_button_press) return true; return false; #ifdef _WIN32 @@ -506,7 +501,7 @@ namespace wi::input case wi::input::KEYBOARD_BUTTON_LSHIFT: keycode = VK_LSHIFT; break; - case wi::input::KEYBOARD_BUTTON_F1: + case wi::input::KEYBOARD_BUTTON_F1: keycode = VK_F1; break; case wi::input::KEYBOARD_BUTTON_F2: @@ -635,10 +630,10 @@ namespace wi::input #endif // _WIN32 default: break; } -#if defined(_WIN32) && !defined(PLATFORM_XBOX) - return KEY_DOWN(keycode) || KEY_TOGGLE(keycode); -#elif defined(SDL2) +#ifdef SDL2 return keyboard.buttons[keycode] == 1; +#elif defined(_WIN32) && !defined(PLATFORM_XBOX) + return KEY_DOWN(keycode) || KEY_TOGGLE(keycode); #endif } @@ -712,20 +707,22 @@ namespace wi::input const uint32_t posX = canvas.LogicalToPhysical(props.x); const uint32_t posY = canvas.LogicalToPhysical(props.y); -#if defined(PLATFORM_WINDOWS_DESKTOP) +#ifdef SDL2 + SDL_WarpMouseInWindow(window, posX, posY); +#elif defined(PLATFORM_WINDOWS_DESKTOP) HWND hWnd = window; POINT p; p.x = (LONG)(posX); p.y = (LONG)(posY); ClientToScreen(hWnd, &p); SetCursorPos(p.x, p.y); -#elif defined(SDL2) - SDL_WarpMouseInWindow(window, posX, posY); #endif // SDL2 } void HidePointer(bool value) { -#ifdef _WIN32 +#ifdef SDL2 + SDL_SetRelativeMouseMode(value ? SDL_TRUE : SDL_FALSE); +#elif defined(_WIN32) if (value) { while (ShowCursor(false) >= 0) {}; @@ -734,8 +731,6 @@ namespace wi::input { while (ShowCursor(true) < 0) {}; } -#elif defined(SDL2) - SDL_SetRelativeMouseMode(value ? SDL_TRUE : SDL_FALSE); #endif // _WIN32 } @@ -824,12 +819,6 @@ namespace wi::input void SetCursorFromFile(CURSOR cursor, const char* filename) { -#ifdef PLATFORM_WINDOWS_DESKTOP - wchar_t wfilename[1024] = {}; - wi::helper::StringConvert(filename, wfilename, arraysize(wfilename)); - cursor_table[cursor] = LoadCursorFromFile(wfilename); -#endif // PLATFORM_WINDOWS_DESKTOP - #ifdef SDL2 // In SDL extract the raw color data from win32 .CUR file and use SDL to create cursor: wi::vector data; @@ -877,7 +866,12 @@ namespace wi::input SDL_FreeSurface(surface); } } -#endif // SDL2 +#elif defined(PLATFORM_WINDOWS_DESKTOP) + wchar_t wfilename[1024] = {}; + wi::helper::StringConvert(filename, wfilename, arraysize(wfilename)); + cursor_table[cursor] = LoadCursorFromFile(wfilename); +#endif // PLATFORM_WINDOWS_DESKTOP + // refresh in case we set the current one: cursor_next = cursor_current; diff --git a/WickedEngine/wiPlatform.h b/WickedEngine/wiPlatform.h index c62092b16..49ff643c9 100644 --- a/WickedEngine/wiPlatform.h +++ b/WickedEngine/wiPlatform.h @@ -38,27 +38,26 @@ typedef void* HMODULE; namespace wi::platform { -#ifdef _WIN32 - using window_type = HWND; - using error_type = HRESULT; -#elif defined(SDL2) +#ifdef SDL2 using window_type = SDL_Window*; using error_type = int; +#elif defined(_WIN32) + using window_type = HWND; + using error_type = HRESULT; #else using window_type = void*; using error_type = int; -#endif // _WIN32 +#endif inline void Exit() { -#ifdef _WIN32 - PostQuitMessage(0); -#endif // _WIN32 #ifdef SDL2 SDL_Event quit_event; quit_event.type = SDL_QUIT; SDL_PushEvent(&quit_event); -#endif +#elif defined(_WIN32) + PostQuitMessage(0); +#endif // _WIN32 } struct WindowProperties