Выпустил подряд две версии движка. В ядро Dagon внесен фреймворк многопоточности и обмена сообщениями, о котором я подробно писал в предыдущем посте. EventManager.userEventQueue
переименовано в EventManager.outboxEventQueue
, EventManager.numUserEvents
— в EventManager.numOutboxEvents
. Также теперь рекомендуется использовать EventManager.queueEvent
вместо EventManager.addUserEvent
, EventManager.queueFileChangeEvent
вместо EventManager.generateFileChangeEvent
, EventManager.queueLogEvent
вместо EventManager.asyncLog
.
Заметно улучшен пакет dagon.collision
, хотя он пока и далек от продакшн-уровня. Исправлены баги в модуле BVH, добавлена реализация GeomTriangle.boundingBox
, а также экспериментальный алгоритм проверки столкновений GJK (dagon.collision.gjk
). EPA пока не поддерживается, так что функция gjkTest
не возвращает информацию о контакте — основным алгоритмом проверки столкновений остается MPR. Метод CollisionShape.supportPointGlobal
теперь просто CollisionShape.supportPoint
.
В Dagon 0.31.0 я продолжил улучшение пакета core. Добавлены свойства Application.path
и Application.directory
— соответственно, полный путь к исполняемому файлу и папка, в которой он лежит. Под Windows доступно свойство Application.hwnd
для получения дескриптора окна игры. VFS теперь монтирует в качестве последнего источника данных папку, где хранится приложение, а не рабочую папку. Благодаря этому можно в командной строке запускать приложение не из текущей папки.
Экспериментальная фича: поддержка ввода с графических планшетов (пока только под Windows через Wintab). Абстрактный интерфейс InputDevice
для добавления в EventManager
кастомных устройств ввода. Новые типы событий EventType.PenMotion
, EventType.JoystickAxisMotion
, EventType.LocaleChange
.
В deferred-рендер добавлена поддержка перспективных теневых карт (PSM) для конусных источников света.

Dagon 0.31.0 является последней версией, использующей OpenGL 4.0 — со следующей движок переходит на 4.3, что позволит добавить поддержку вычислительных шейдеров.