mirror of
https://github.com/YGGverse/xash3d-fwgs.git
synced 2025-01-18 19:10:37 +00:00
Create input-interface.md [ci skip]
This commit is contained in:
parent
b36fc0e2ae
commit
e4e34cc835
88
Documentation/input-interface.md
Normal file
88
Documentation/input-interface.md
Normal file
@ -0,0 +1,88 @@
|
||||
## Purpose / Цель
|
||||
**Eng:**
|
||||
Clients have different platform-depended input code now.
|
||||
It is bad because we cannot use same functions (if we won't rewrite almost half of SDL) on different platforms.
|
||||
|
||||
**Rus:**
|
||||
На текущий момент клиенты имеют некоторые части платформозависимого кода внутри себя. Это плохо, т.к. мы не можем использовать одинаковые функции (если не перепишем почти половину кода SDL) на разных платформах.
|
||||
## Client part / Клиентская часть
|
||||
**Eng:**
|
||||
* Client will have ability to fully implement touch input. Drawing may be done by HUD.
|
||||
* Client will receive basic motion and look events from engine
|
||||
|
||||
**Rus:**
|
||||
* Клиент будет иметь возможность полностью реализовать touch-ввод. Отрисовка может быть произведена через HUD.
|
||||
* Клиент получит простые события движения и обзора от движка
|
||||
|
||||
### Client implementation / Клиентская реализация
|
||||
**Eng:**
|
||||
#### Client will optionally export some functions to Engine:
|
||||
* `int IN_ClientTouchEvent ( int fingerID, float x, float y, float dx, float dy );`
|
||||
|
||||
Return 1 if touch is active, 0 otherwise.
|
||||
|
||||
* `void IN_ClientMoveEvent ( float forwardmove, float sidemove );`
|
||||
|
||||
Client wil accumulate move values before creating commands and flush it on CreateMove.
|
||||
|
||||
* `void IN_ClientLookEvent ( float relyaw, float relpitch );`
|
||||
|
||||
Client will rotate camera when needed as in mouse implementation
|
||||
|
||||
**Rus:**
|
||||
#### Клиент будет экспортировать некоторые функции движку (опционально):
|
||||
* `int IN_ClientTouchEvent ( int fingerID, float x, float y, float dx, float dy );`
|
||||
|
||||
Вернёт 1 если касание активно, иначе 0.
|
||||
|
||||
* `void IN_ClientMoveEvent ( float forwardmove, float sidemove );`
|
||||
|
||||
Клиент будет накапливать значения величин для команд движения перед созданием команд и очищать их при CreateMove.
|
||||
|
||||
* `void IN_ClientLookEvent ( float relyaw, float relpitch );`
|
||||
|
||||
Клиент будет вращать камерой когда нужно, прямо как в реализации мыши
|
||||
|
||||
## Engine part / Движковая часть
|
||||
**Eng:**
|
||||
* Engine will handle platform events and call client functions.
|
||||
* Engine will implement fallback look and movement system when client interface not present
|
||||
|
||||
**Rus:**
|
||||
* Движок будет управлять событиями платформы и вызывать клиентские функции
|
||||
* Движок реализует стандартную систему взгляда и движения если её нет в клиенте
|
||||
|
||||
### Engine implementation / Реализация в движке
|
||||
**Eng:**
|
||||
#### Touch events
|
||||
|
||||
Before calling ClientMove engine must get touch events.
|
||||
|
||||
If client exported IN_ClientTouchEvent, event will be sent to client.
|
||||
|
||||
Otherwise engine will draw own touch interface.
|
||||
|
||||
**Rus:**
|
||||
#### События касания
|
||||
|
||||
Перед вызовом ClientMove движок обязан получить события о касании.
|
||||
|
||||
Если из клиента экспортирована функция IN_ClientTouchEvent, событие будет отправлено клиенту.
|
||||
|
||||
Иначе, движок будет рисовать свой touch-интерфейс.
|
||||
#### Other events / Другие события
|
||||
**Eng:**
|
||||
Engine touch interface and joystick support code will generate two types of events:
|
||||
* Move events (IN_ClientMoveEvent function)
|
||||
* Look events (IN_ClientLookEvent function)
|
||||
|
||||
If client exported these functions, events will be sent to client before CreateMove
|
||||
Otherwise Look Event will be processed before CreateMove, but MoveEvent after. It will be applied to generated command
|
||||
|
||||
**Rus:**
|
||||
Интерфейс прикосновений и код джойстика в движке будут генерировать следующие два типа событий:
|
||||
* События движения (функция IN_ClientMoveEvent)
|
||||
* События просмотра (функция IN_ClientLookEvent)
|
||||
|
||||
Если клиент экспортирует эти функции, события будут отправляться клиенту перед CreateMove
|
||||
Иначе события просмотра будут происходить перед CreateMove, но после MoveEvent. Они будут применены к генерируемым командам
|
Loading…
x
Reference in New Issue
Block a user