* init * fix spelling * mose key to button mapping * more button mouse mapping * separate file for mouse things cause Ive got recursive include problem * some fixes * updating dxgi mouse capture now compatible with sdl one * fix * fix mouse capture clip missing after alt+tab * mouse binding & gui conflict check * new mouse input block * Mouse mapping menu update * fix ImGui `WantCaptureKeyboard` locks when holding mouse button * reading mouse from config casually forgotten * fixed strange buffered mapping bug * mouse buttons callbacks * mouse button to axis mapping * fix * mark * use propper cursor hide method * merge-fixes * clang-format * store main game window ID to reduce load * update on_mouse_up/down in dxgi * MouseMeta migration * MouseKey -> MouseButton * fix name collision * another name collision fix * remove imgui direct calls * clang-format * MouseCapture keybind * replace cursor visibility with mouse capture * clang-format * mUseKeydownEventToCreateNewMapping -> mUseInputToCreateNewMapping * change MAPPING_TYPE_UNKNOWN to -1 * dxgi/sdl GetMouseDelta parity * set x/y to zero when no capture * mapping type uint -> int for MAPPING_TYPE_UNKNOWN = -1 * offset mapping popup * simple popup check completely dropped complexity * clang format * simplify mouse capture toggle * boundaries check for mouse buttons * remove duplicate cursor visibility change in fullscreen * Windows ignore mouse input while mouse is captured * simplify * make separate method for handling capture * fix cast * clang-format * ProcessMouseEvent -> ProcessMouseButtonEvent * wheel mapping support WIP * fix for axis * wheel logging * macos fix? * clang format * fix wheel axis on dx backend * Revert "wheel logging" This reverts commit 43082d871b668968de9228b0fd3836fce4186a27. * buffered wheel axis mapping (test) * clang format * fix * extend buffer * dxgi horizontal scrolling support * clang format --------- Co-authored-by: lilacLunatic <8488221+lilacLunatic@users.noreply.github.com>
libultraship
libultraship (LUS) is a library meant to provide reimplementations of libultra (n64 sdk) functions that run on modern hardware.
LUS uses an asset loading system where data is stored separately from the executable in an archive file ending in .otr, which is an .mpq compatible file. This separation the data from the executable follows modern design practices and that it is more mod friendly. All one needs to do is supply a patch .otr and the system will automatically replace the data.
Contributing
LUS accepts any and all contributions. You can interact with the project via PRs, issues, email (kenixwhisperwind@gmail.com), or Discord. Please see CONTRIBUTING.md file for more information.
Versioning
We use semantic versioning. We have defined the API as: every C linkage function, variable, struct, class, public class method, or enum included from libultraship.h.
Building on Linux/Mac
cmake -H. -Bbuild
cmake --build build
Generating a Visual Studio .sln on Windows
# Visual Studio 2022
& 'C:\Program Files\CMake\bin\cmake' -DUSE_AUTO_VCPKG=true -S . -B "build/x64" -G "Visual Studio 17 2022" -T v142 -A x64
# Visual Studio 2019
& 'C:\Program Files\CMake\bin\cmake' -DUSE_AUTO_VCPKG=true -S . -B "build/x64" -G "Visual Studio 16 2019" -T v142 -A x64
To build on Windows
& 'C:\Program Files\CMake\bin\cmake' --build .\build\x64
Sponsors
Thankyou to JetBrains for providing their IDE CLion to me for free!
License
LUS is licensed under the MIT license.
LUS makes use of the following third party libraries and resources:
- Fast3D (MIT) render display lists.
- ImGui (MIT) display UI.
- StormLib (MIT) create and read
.mpqcompatible archive files. - StrHash64 (MIT, zlib, BSD-3-Clause) provide crc64 implementation.
- ZAPD (MIT) asset utilities.
- dr_libs (MIT-0) mp3 and wav file conversion.
- metal-cpp (Apache 2.0) interface to the Apple Metal rendering backend.
- nlohmann-json (MIT) json parsing and saving.
- spdlog (MIT) logging
- stb (MIT) image conversion
- thread-pool (MIT) thread pool for the resource manager
- tinyxml2 (zlib) parse XML files for resource loaders
- zlib (zlib) compression used in StormLib
- bzip2 (bzip2) compression used in StormLib
- sdl2 (zlib) window manager, controllers, and audio player
- glew (modified BSD-3-Clause and MIT) OpenGL extension loading library.
- libzip (BSD-3-Clause) read
.zipcompatible archives - glob_match (Dual MIT/GPL) Glob pattern matching.