Skip to content

Input interface draft

Sh1ft0x0EF edited this page Aug 15, 2015 · 8 revisions

Purpose / Цель

Eng: Clients have different platform-depended input code now. It is bad because we cannot use same functions (if we not 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, it will be sent to client.

Otherwise engine will draw own touch interface.

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. Они будут применены к генерируемым командам