Введение в разработку редактора
На этой странице вы узнаете:
Дизайн-решения, лежащие в основе редактора Godot.
Как эффективно работать с C++-кодом редактора Godot.
Это руководство предназначено для текущих и будущих разработчиков движка. Чтобы создать плагины редактора в GDScript, см. Создание плагинов.
См. также
Если вы новичок в Godot, рекомендуем вам ознакомиться с документом Философия дизайна Godot, прежде чем продолжить. Поскольку редактор Godot — это проект Godot, написанный на C++, значительная часть философии движка применима и к нему.
Технические решения
Редактор Godot отрисовывается с использованием рендерера Godot и UI system. Он не использует такие инструменты, как GTK или Qt. Это похоже на программы вроде Blender. Хотя использование инструментов упрощает достижение "родного" внешнего вида, они также довольно громоздки, а их лицензирование несовместимо с Godot.
Редактор полностью написан на C++. Он не может содержать код GDScript или C#.
Структура каталога
Код редактора полностью автономен и находится в папке editor/ в исходном репозитории Godot.
Некоторые функции редактора также реализованы через modules. Некоторые из них доступны только в сборках редактора для уменьшения размера двоичного файла шаблонов экспорта. См. папку modules/ в репозитории исходного кода Godot.
Некоторые важные файлы в редакторе:
editor/editor_node.cpp: Основной файл инициализации редактора. Фактически, "главная сцена" редактора.
editor/project_manager/project_manager.cpp: Main Project Manager initialization file. Effectively the "main scene" of the Project Manager.
editor/scene/canvas_item_editor_plugin.cpp: The 2D editor viewport and related functionality (toolbar at the top, editing modes, overlaid helpers/panels, …).
editor/scene/3d/node_3d_editor_plugin.cpp: The 3D editor viewport and related functionality (toolbar at the top, editing modes, overlaid panels, …).
editor/scene/3d/node_3d_editor_gizmos.cpp: Where the 3D editor gizmos are defined and drawn. This file doesn't have a 2D counterpart as 2D gizmos are drawn by the nodes themselves.
Зависимости редактора в файлах scene/
При работе над функцией редактора вам, возможно, придется изменить файлы в узлах графического интерфейса Godot, которые вы можете найти в папке scene/.
Важно помнить одно правило: не добавлять новые зависимости к editor/ в других папках, например, scene/. Это правило действует даже при использовании #ifdef TOOLS_ENABLED.
Чтобы сделать кодовую базу более понятной и замкнутой, допустимый порядок зависимостей следующий:
editor/->scene/->servers/->core/
Это означает, что файлы в каталоге editor/ могут зависеть от включений из каталогов scene/, servers/ и core/. Но, например, хотя scene/ может зависеть от включений из каталогов servers/ и core/, он не может зависеть от включений из каталога editor/.
В настоящее время существуют некоторые зависимости от editor/, включаемые в файлы scene/, но они находятся в процессе удаления.
Советы по разработке
Для быстрой итерации в редакторе рекомендуем создать тестовый проект и открыть его из командной строки после компиляции редактора. Таким образом, вам не придётся каждый раз запускать Godot через менеджер проектов.