Alibek Omarov
5 years ago
committed by
GitHub
1 changed files with 88 additions and 0 deletions
@ -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…
Reference in new issue