Перейти к публикации
Планета Deus Ex

DXEditPlus -- расширенный редактор карт. Но есть одно 'но'.


Рекомендованные сообщения

Вступление:

 

После того как редактор диалогов 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. Получилось реализовать некоторые идеи.

 

Скриншоты:

 

Скрытый текст

.thumb.png.c522e955fbd9a94b61e9ae6eb5d7600e.png.thumb.png.12ee9779da457dd9decea80a535622a3.png

.thumb.png.7a65e0b6c302fdef61e4840c9b386404.png

 

 

GreenEyesMan, Gelu McAllister и Geasse понравилось это
Ссылка на комментарий

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас
×
×
  • Создать...