LoadLine Calibration Опубликовано: 9 октября Опубликовано: 9 октября Вступление: После того как редактор диалогов ConEditPlus приобрёл очертания, функционал, и им стало возможно пользоваться без особых проблем, возникла мысль написать и 'ремейк' редактора карт. Изучив доступные источники информации, стало понятно что это на самом деле на такая и сложная программа. Для управления редактором карт, а точнее для посылания команд в его движок используется 4 процедуры и одна функция. procedure EdInitServer(hWndMain: HWND; hWndCallback: HWND); stdcall; external 'Editor.dll' name '_EdInitServer@8'; procedure EdExitServer; stdcall; external 'Editor.dll' name '_EdExitServer@0'; procedure EdExec(const Cmd: PAnsiChar); stdcall; external 'Editor.dll' name '_EdExec@4'; procedure EdSetProp(const Topic, Item, Value: PAnsiChar); stdcall; external 'Editor.dll' name '_EdSetProp@12'; function EdGetProp(const Topic, Item: PAnsiChar): PAnsiChar; stdcall; external 'Editor.dll' name '_EdGetProp@8'; Первые две нужны для запуска OLE сервера и его завершения (если я правильно понимаю). Через него и идут команды, оставшиеся две процедуры нужны для отправки команд, а функция возвращает результаты запросов. Так работает версия редактора на Visual Basic, точно также работает и мой вариант. Проблемы: Главная проблема в том что для того, чтобы у меня была возможность реализовать все мои идеи, нужен доступ к объектам движка, что мне недоступно, поскольку SDK есть только на C++, а я пишу на Delphi. Ещё есть проблема с 'перескакиванием мыши', когда содержимое вьюпорта редактора может перескочить на какую-то случайную величину и в случайном направлении. Насколько я знаю, проблема эта появилась начиная с Windows Vista. Команда Camera Align не работает. Часть команд для выравнивания текстур не работает. Вьюпорт для текстур явно не был предназначен для встраивания в окно с изменяемыми размерами, из-за чего всё съезжает (см. третий скриншот). Для просмотра моделей не хватает сетки. Нет команд для просмотра полигонов на mover'ах. Нет команд для объединения/разделения полигонов. Нет команд для получения информации о выделенной поверхности. Нет команд, нужных для реализации моих идей. Команда для построения дерева классов неправильно работает с одинаковыми именами. При использовании рендеров, отличных от SoftDRV, просвечивает сетка сквозь геометрию. Решение проблем: Для того чтобы можно было сделать редактор с расширенными функциями, можно сделать следующее: * Перевести C++ headers на Delphi. * Либо написать модуль расширения для движка редактора, реализовав расширенный функционал, который я могу в свою очередь реализовать в DXEditPlus. * Либо взять редактор из патча OldUnreal (он с открытыми исходниками) и адаптировать его. В этом случае мой проект будет не нужен и я его просто сверну. В любом случае, необходима помощь C++ программиста. Примеры, SDK, всё есть. Что есть сейчас: На данный момент реализовано большинство функций редактора с использованием имеющихся команд. Интерфейс был почти полностью скопирован с UnrealEd 2. Получилось реализовать некоторые идеи. Скриншоты: Скрытый текст Geasse, Gelu McAllister и GreenEyesMan понравилось это
Dae Опубликовано: 10 октября Опубликовано: 10 октября Охренеть, Вероника. Я не представлял, что такое вообще возможно. Удачи! LoadLine Calibration понравилось это
Рекомендованные сообщения
Создайте аккаунт или войдите в него для комментирования
Вы должны быть пользователем, чтобы оставить комментарий
Создать аккаунт
Зарегистрируйтесь для получения аккаунта. Это просто!
Зарегистрировать аккаунтВойти
Уже зарегистрированы? Войдите здесь.
Войти сейчас