DREAMS_3D_Editor/Dream/DreamEngine/DREAMEngine.cpp не должен знать о всех форматах которые движок поддерживает.
Не должно быть метода
extern "C" DREAMENGINE_X_EXPORT bool ImportFBX_GetDesc(QString Path, QObject *Desc)
Ты таким образом на каждый формат будешь делать метод?
Делай универсальные методы:
extern "C" DREAMENGINE_X_EXPORT bool Import_GetDesc(QString Extension, QString Path, QObject *Desc) extern "C" DREAMENGINE_X_EXPORT bool Import_GetScene( QString Extension, QObject *Desc)
Эти методы уже берут плагин (он должен быть синглтоном или методы статическими) который поддерживает формат с данным расширением, и вызывают эти методы, передавая туда расширение (если плагин поддерживает несколько форматов).
Нет, не сделано. Делаю.
Убрал из Shell и Engine всё, относящееся к FBX, в том числе диалоги опций импорта. Запихнул это всё в плагин.
Добавлены новые возможности. Теперь можно выделять несколько мешей. Выделение снимается кликом на пустой области. Соответственно улучшено вращение вокруг выделенного. На хоткей F4 повесил показ/скрытие сетки поверх геометрии. На выделенном меше сетку показываю всегда.
Virtual_Light ты не всегда делаешь коммиты?
Сделай dev ветку в которой будешь вести разработку и тестирование. После тестирования уже сливай в мастер.
Коммиты делай чаще, вплоть до моментов когда сделал маленькое исправление, чтобы потом не вспоминать что ты там делал и что писать в описание коммита.
Коммиты имеющие описание изменений вроде поста 33 плохие. Плохие потому что если придется делать откат, то откатывается слишком много. Надо разбивать.
Virtual_Light
От редактора игры нужно чтобы мышкой можно было загружать и расставлять модельки
из 3D MAX и искривлять сетку террейна и затем сохранять готовую карту в текстовом файле.
Это минимум.
Кучу всяких форматов графических файлов можно и не делать, так как это только
усложнит код игры.
Panur
J.A.C.K. - это новый редактор уровней для игр с квейковской BSP-архитектурой.
Это уже вымерло по сути. BSP решал проблемы производительности путем отсечения невидимой геометрии. Расчет видимости происходил по предварительно рассчитанному дереву. Сейчас используются другие техники для оптимизации.
Virtual_Light не понятно что делает SDK. Что там за исходники и для чего они. Нужно комментировать как файлы (в начале), так и код - методы и переменные (public).
Для тог чтобы написать плагин по сути нужен только lib и h файлы из SDK. Ну и отладочные pdb. Код из движка, cpp файлы, не нужно ложить в SDK.
DDR3
> Для тог чтобы написать плагин по сути нужен только lib и h файлы из SDK.
Именно так. Это не SDK, а его исходный код. На выходе именно lib и h. Просто и этот код нужно где-то хранить.
Бабер
Это не редактор игры. Это самостоятельная программа, которая не будет входить в игровой движок. Террейн я делать не буду.
DDR3
> Virtual_Light ты не всегда делаешь коммиты?
Именно. В 11 часов вечера нет особого желания делать ещё и коммит. Разве что на следующий день с утра.
Опять авария. Проект Dream_Shell будет залит заново под другим именем.
Virtual_Light
> Именно так. Это не SDK, а его исходный код. На выходе именно lib и h. Просто и
> этот код нужно где-то хранить.
Стоп. Это неправильно. У тебя в файле
DreamX\Dream_Shell\Source_FBX\FbxImportOptionsWindow.cpp
есть строки:
#include "zRollout.h"
....
Rollout5 = new zRollout(this);
То есть, по сути zRollout.h это часть движка, так как его использует движок.
Убери zRollout.h, ISceneImporter.h и другие, в движок или в редактор, сам реши куда правильнее.
SDK - это просто публичный интерфейс к внутренностям движка и редактора. просто h-файлы.
Чтобы юзер не парился искать нужные файлы для включения при написании плагина, сделай файл который включает h-файлы содержащие нужные ему классы и назови его «SDK.h» как нибудь так и всё.
Многие движки сделаны по другому - дублируются h-файлы в папке sdk.
SDK как правило не содержит исходников (cpp). Если и содержит, то это подфрейворк в составе движка. Но наружу эти исходники не выходят. Юзеру они не нужны.
По части коммитов. Я тебе говорю как лучше делать - делай коммиты чаще. Например написал новый функционал - сделай коммит. Исправил что-то - сделай коммит. Не обязательно сразу на сервак изменения отправлять. Это можно сделать в конце дня.
Virtual_Light
> Опять авария. Проект Dream_Shell будет залит заново под другим именем.
Подробности описывай. Что у тебя там с Git не получается?
Что используешь для работы с репозиторием?
DDR3
> Подробности описывай. Что у тебя там с Git не получается?
Решил собрать Shell в Release конфигурации. Студия стала выдавать ошибки, указывала на FbxImportOptions. Сорок минут искал в проекте эти файлы, не нашёл. Открыл проект в блокноте, нашёл там эти строки, нигде в интерфейсе IDE их не было. Удалил их. Загрузка проекта стала валиться с ошибкой. Проект я не починил, взял старый файл. Утром залил код в репозиторий, потом скачал снова, эти файлы подошли отлично. В середине дня всё починил.
DDR3
> Что у тебя там с Git не получается?
Использую TortoiseGit, не могу сохранить в свойствах репозитория remote. При каждом push он сбрасываетя на старое значение.
DDR3
> Я тебе говорю как лучше делать - делай коммиты чаще. Например написал новый
> функционал - сделай коммит
Неудобно делать коммиты, долго.
DDR3
> То есть, по сути zRollout.h это часть движка, так как его использует движок.
zRollout - это класс раскрывающейся панели. Его использует редактор, чтобы отображать виджеты, и его должен использовать пользователь в плагине, чтобы отобразить виджеты в своих диалогах. Иначе плагин будет без нормального гуя. ISceneImporter - это абстрактный интерфейс для плагина. Его использует пользователь в плагине, чтобы сказать движку, что класс плагина ему знаком. Плагин от него наследуется. И его использует движок, чтобы загрузить плагин.
DDR3
если я что-то изменю на сервере, то попытка сделать push окончится pull-ом и необходимостью разрешить конфликт, а это не получается. Кнопка Mark As Resolved всегда неактивна. Это час, потерянный впустую. Чем меньше коммитов, тем меньше проблем.
Virtual_Light выкинь tortoise.
https://ru.atlassian.com/software/sourcetree
В SDK у тебя получается часть ядра движка. SDK это просто лишний проект. У тебя уже есть ядро - это сам движок.
Эти файлы нужно перенести в движок:
VM_Triangulator.h
VM_Triangulator_Adapter.h
zGeometryStatistics.h
zMesh.h
zTransform3d.h
Этот файл перенести в Shell:
ISceneImporter.h
Таким образом у тебя получится три проекта - ядро, редактор и FBX плагин.
Переименуй ядро в DreamEngine или DreamCore; редактор в DreamEditor
Все исходные файлы помести в каталог Source; Все заголовочные в каталог Include
Структура получится вот такой:
DDR3
> SDK это просто лишний проект
Как пользователь будет писать плагин без SDK?
DDR3
> Этот файл перенести в Shell:
Зачем? Shell его никак не использует. Плагины загружает движок, чтобы получить прямой доступ к их механике. Shell это посредник.
Тема в архиве.