Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Иерархия объектов в LE #88

Open
mnelenpridumivat opened this issue Dec 16, 2024 · 1 comment
Open

Иерархия объектов в LE #88

mnelenpridumivat opened this issue Dec 16, 2024 · 1 comment
Labels
editors enhancement New feature or request

Comments

@mnelenpridumivat
Copy link

Пожалуйста, опишите, связан ли ваш запрос на добавление новой функции с какой-либо проблемой

Было бы отлично, если объекты на уровне можно было бы расположить в виде некоторой иерархии, где дочерние объекты в качестве нулевых координат используют координаты родительского объекта.

Опишите решение, которое вы хотели бы получить

Суть идеи заключается в том, чтобы сделать так, чтобы все объекты на карте выстраивали некоторую иерархию, в которой часть объектов оказывается дочерними к одному какому-то объекту. При вращении, перемещении или изменении размеров родительского объекта размеры дочерних объектов тоже изменяются в абсолютных координатах, оставаясь неизменными относительно родительского объекта.

Для описания далее будет использоваться подобная схема (*), где элемент с большим количеством тире является дочерним к объекту выше с меньшим количеством тире:
Root
-A1
--B1
---C1
---C2
--B2
-А2

Хорошо бы, чтобы был следующий функционал:

  • Возможность назначить объекту родителя

  • При выделении объекта так-же как-то обозначался родительский объект

  • Объект можно убрать из списка дочерних, либо назначить другой родительский объект. Причём при смене родителя у объекта его дочерние объекты своего родителя не меняют. То есть, схема (*), у которой объекту В1 поменяли родителя на А2, будет выглядеть так:
    Root
    -A1
    --B2
    -А2
    --B1
    ---C1
    ---C2

  • В дополнение к предыдущему, объект было бы назначить и родителю родителя (и т.д.). К примеру, в схеме (*) объект В1 можно было бы назначить спокойно корневому элементу:
    Root
    -A1
    --B2
    -А2
    -B1
    --C1
    --C2

  • Изменение позиции, поворота или размера дочернего предмета не влияет на родителя. Но изменение позиции, поворота или размера родителя влияет на дочерние таким образом, чтобы те оставались неизменными относительно родителя.

  • При удалении родителя удаляется и все его дочерние объекты, либо они перестают быть дочерним элементом вообще. Добавить в настройки переключатель поведения.

  • При копировании и вставке объектов из одной иерархии она сохраняется. Например, если в схеме (*) скопировать В1 и все его дочерние элементы, и прицепить копию В1 к А1, то получится такая иерархия:
    Root
    -A1
    --B1
    ---C1
    ---C2
    --B1
    ---C1
    ---C2
    --B2
    -А2

Было бы идеально реализовать ещё и следующие вещи:

  • При выделении объекта отдельной командой или биндом выделить все дочерние элементы
  • Дополнительные команды, такие как "скрыть все дочерние элементы" и "показать все дочерние элементы".
  • Добавить отдельный древовидный виджет со всеми объектами на уровне, где можно проводить все вышесказанные манипуляции, не ища сам объект на уровне (что-то вроде Object List)
  • Поддержка наличия дочерних элементов другой категории (например, спавн объект может быть дочерним элементом к статике).
  • Поддержка быстрого назначения дочерних элементов тому же сектору, что и объект-родитель.

Опишите альтернативы, которые вы рассматривали

Отчасти подобное уже есть в СДК: группы. При объединении нескольких объектов в единую группу, при изменении положения группы в пространстве все составные части будут относительно друг-друга будут неподвижны. Однако, группы не являются заменой предложенной идее:

  1. Нельзя включить группу внутрь другой группы.
  2. Пока объекты сгруппированы, изменение любого из них невозможно. Для изменения группы надо расгруппировать все объекты, изменить как их нужно, выделить все объекты назад (иногда выделять объекты из разных категорий) и сгруппировать обратно, что довольно утомительно
  3. Точкой поворота группы вокруг себя будет центр этой группы, а не один конкретный объект. Поэтому не получится, к примеру, повернуть группу относительно объекта, находящимся в углу группы.

Дополнительный контекст

Примеры:

  • Иерархия объектов в Unreal Editor:
    image

  • Иерархия объектов в блендере:
    image

@mnelenpridumivat mnelenpridumivat added the enhancement New feature or request label Dec 16, 2024
@ForserX
Copy link
Member

ForserX commented Dec 16, 2024

image
Планы и так были, только времени нет. Да и устал я пока от редакторов.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
editors enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

2 participants