Управление в трехмерном окружении.

Вчера закончил работу над системой управления положением в трехмерном окружении. Система получилась удивительно компактной - всего двадцать строк в сумме в трех модулях, и удобной. Модульная архитектура приложения предоставляет большую гибкость кода, удобство анализа и модификации.

Информация о нажатиях клавиш управления и движения мышкой принимается через обработчик событий модуля графического окна. Этот модуль анализирует ввод только на наличие нажатия клавиши "Esc" (смена режима работы/выход) и после этого все полученные данные передает в каждом кадре в модуль промежуточного интерфейса. В интерфейсном модуле выполняются операции по преобразованию сигналов от клавиатуры и мыши в два вектора - направления движения и направления взгляда. Тут же должны быть функции (в плане разработки) по назначению/изменению клавиш управления, настройкам чувствительности и скорости движения.

Интерфейсный модуль, на основании пользовательского ввода, вычисляет изменения векторов направления движения и взгляда. После этого вызывает процедуру рендеринга из графического модуля, передавая ему в качестве параметров эти два вектора. В результате получаем полностью независимый от системы ввода графический модуль. Его задача на основании полученных в качестве параметров вызова векторов запросить из базы/сервера данные пространства и построить трехмерную сцену.