Этот проект архивирован. Это больше не поддерживается и не развивается.
Gainput
Gainput - это потрясающая библиотека ввода C ++ для вашей игры:
- Обрабатывает ваши потребности в вводе от чтения устройств низкого уровня к картированию высокоуровневых кнопок, определяемых пользователями,
- хорошо документированный, чистый, легкий и прост в использовании
- Унифицированный интерфейс на всех поддерживаемых платформах: Android NDK, iOS/TVOS, Linux, MacOS, Windows
- Поддерживаемые устройства: клавиатура, мышь, геймпад, мульти-тауч, встроенные датчики устройства
- Открытый исходный код (лицензия MIT)
- Полный список функций
- Документация API
Использование
# include < gainput/gainput.h >
enum Button
{
ButtonConfirm
};
gainput::InputManager manager;
manager.SetDisplaySize(displayWidth, displayHeight);
const gainput::DeviceId keyboardId = manager.CreateDevice<gainput::InputDeviceKeyboard>();
const gainput::DeviceId mouseId = manager.CreateDevice<gainput::InputDeviceMouse>();
const gainput::DeviceId padId = manager.CreateDevice<gainput::InputDevicePad>();
const gainput::DeviceId touchId = manager.CreateDevice<gainput::InputDeviceTouch>();
gainput::InputMap map (manager);
map.MapBool(ButtonConfirm, keyboardId, gainput::KeyReturn);
map.MapBool(ButtonConfirm, mouseId, gainput::MouseButtonLeft);
map.MapBool(ButtonConfirm, padId, gainput::PadButtonA);
map.MapBool(ButtonConfirm, touchId, gainput::Touch0Down);
while (running)
{
manager. Update ();
// May need some platform-specific message handling here
if (map. GetBoolWasDown (ButtonConfirm))
{
// Confirmed!
}
}Функции
- Предлагает унифицированный интерфейс на всех поддерживаемых платформах. (Некоторые незначительные изменения необходимы для настройки библиотеки.)
- Предоставляет интерфейс низкого уровня и высокого уровня: запросите кнопки «Состояние устройств ввода» напрямую или кнопки устройства MAP на кнопку пользователя. Таким образом, легко поддерживать альтернативные входные данные или изменить входные отображения позже.
- Поддерживает запись и воспроизведение входных последовательностей.
- Особенности сетевого сервера для получения информации на устройствах и отображениях.
- Два экземпляра усиления могут синхронизировать состояния устройства по сети . Также можно получить многоканальные входы из обычного браузера смартфона .
- Полностью написано в портативном C ++ .
- STL не используется. Никаких исключений не брошено. RTTI не используется. Нет C ++ 11 , и нет повышения .
- Не используется странные внешние зависимости . Полагается на существующую платформу SDK.
- Легко настроить и создать с помощью вашего любимого инструмента IDE/Build.
- Слушатели могут быть установлены как для кнопок устройств, так и для пользовательских кнопок. Таким образом, вы уведомляются, когда изменяется состояние кнопки.
- Жесты позволяют обнаружить более сложные входные шаблоны, например, двойной щелчок, жесты заклинания/вращения или одновременно удерживать несколько кнопок.
- Внешний распределитель может быть предоставлен в библиотеку, чтобы все управление памятью было сделано так, как вы хотите.
- Поддерживает сырой вход на Linux и Windows.
- Gamepad Rurbling поддерживается там, где доступно.
- Легко проверить все нажатые кнопки, чтобы предложить игрокам возможность переоценить свои кнопки, легко реализовать. Точно так же это легко сохранить и загружать отображения.
- Возможно, ненужные функции, такие как жесты или сетевой сервер, легко отключены.
- Мертвые зоны могут быть настроены для любой кнопки поплавкой.
- Изменения состояния , т. Е. Если кнопка вновь опущена или просто выпущена, можно проверить.
Здание
По умолчанию Gainput создается с использованием CMAKE.
- Запустить
mkdir build - Запустить
cmake .. -
make - Библиотеку можно найти в
lib/ , исполняемые файлы в samples/ .
Внося
Все могут внести свой вклад в библиотеку. Если вы найдете какие -либо проблемы, вы можете отправить их, используя систему проблем Github. Если вы хотите внести код, вам следует разобраться в проекте, а затем отправить запрос на вытяжение.
Зависимости
Gainput имеет минимальное количество внешних зависимостей, чтобы сделать его как можно более автономным. Он использует способы получения входов платформ и не использует STL.
Тестирование
Как правило, тестирование должно проводиться путем создания и запуска Geatput на всех поддерживаемых платформах. Образцы в samples/ папке должны использоваться, чтобы определить, является ли библиотека функциональной.
Модульные тесты в test/ папке построены обычной сборкой Cmake. Исполняемый файл можно найти в test/ папке. Все конфигурации сборки и модульные тесты строятся и запускаются Travis CI всякий раз, когда что -то втягивается в репозиторий.
Альтернативы