Интересует теория. Может кто посоветует что-то дельное. В общем по сцене

перемещаю Actor's, компоненты акторов, в основном это статик меши. Изменяю их Location, rotation, scale. Удаляю их и сравню новые.

Задача следующая, нужно организовать две кнопки "Вернуть изменения на шаг назад" (хотя бы до 20 шагов) и шаги вперед.

Как лучше это сделать в теории?

22 ответов

81 просмотр

Мб создать массив трансформов , в него записывать изменения и по ним скакать?

Сергей Telegram
Мб создать массив трансформов , в него записывать ...

Других вариантов нет в природе. По-любому надо сохранять

Ты undo/redo что ли решил изобрести? xD

Blackcoat+- Автор вопроса

Только я думаю не массив трансформов, а массив акторов создать, чтобы можно было с резервного актора спаунить удаленный меш

Blackcoat+- Автор вопроса

Есть пример как это грамотно сделать?

Blackcoat+
Есть пример как это грамотно сделать?

Конечно, нажать Ctrl + Z 20 раз. Я просто вопрос твой не очень понял. Ты действительно просто хочешь вернуться в истории изменений на n шагов назад?

Blackcoat+
Да, все верно

У тебя плюсовый проект?

Blackcoat+- Автор вопроса
Blackcoat+- Автор вопроса
Артём
Оптимизация минус?

Там проект в одну сцену

Blackcoat+
Там проект в одну сцену

В любом случае грамотно будет заносить в массив только то, что действительно необходимо

Blackcoat+
Блупринты

Скорее всего на блюпринтах так сделать не получится. Может быть в 5-ке, конечно, в какой-то подсистеме есть какие-то блюпринтовые функции для отмены действий на N шагов назад, но надо искать (хотя подозреваю, что их всё же нет). В коде такое сделать несложно. Тут есть пара вариантов: 1. Ты просто пользуешься Undo History и руками отменяешь действия 2. Создаёшь EditorUtilityWidget, в котором в ручном режиме вызываешь методы BeginTransaction и EndTransaction. Это не поможет тебе вернуться на какое-то определённое количество шагов назад, но зато позволит откатиться в строго определённое состояние. Ну т.е. задумывал ты масштабное редактирование объектов, вызываешь BeginTransaction, закончил редактирование - вызываешь EndTranscation. Если что-то не получилось - в буффере отмены у тебя будет твоё действие, оно разом отменит изменения

Вообще у меня был вариант подвязаться на какие-нибудь редакторские делегаты, типа перемещения, помещения на сцену и т.д. Но во-первых, оно всё-равно как-то в голове не укладывается зачем это мудрить, если можно Ctrl + Z нажать. А во-вторых, вообще сходу не ясно что там вынесено в блюпринты, а проверять всё времени не хватит. Ну и интуиция мне подсказывает, что чуваку реально какой-то снапшот во времени был важнее вот этого вот всего и просто транзакции идеально подойдут. Но может я и ошибаюсь :)

А кроме шуток, кстати, вполне себе идея - если тебя интересуют только определённые свойства определённых акторов, то вполне можно сделать как ты сказал, этакий свой кастомный буфер истории. Только всё-равно не ясно нафиг оно вообще понадобилось, пока это делаешь, уже 10 раз бы кубики руками расставил 😆

Blackcoat+- Автор вопроса

На счет глобального изменения и записи положения всех акторов разом на сцене задумывался. Но и отказался от этой затеи. В моем случае в проекте реализован режим редактора, где игрок сам может на подготовленную сцену расставить заготовки акторов (стены, мебель и прочее). То есть игрок сам контролирует расположения объектов на сцене. А значит на каждое изменение повешу событие записи в класс событий (буть это transform, или удаление/создание актора). На блупринтах думаю это можно сделать. Но тут загвоздка. Если все изменения записывать в массив transform, то привязать его к определенному актору проблема. Если через массив акторов это так понимаю нужно заспаунить 20 акторов (при условии n=20 шагов) и при каждом событии вносить в них изменения. В принципе реализуемо. Еще вариант создать структуру и записывать все события в нее..

Blackcoat+- Автор вопроса
Blackcoat+
На счет глобального изменения и записи положения в...

Через структуру все гуд работает 👍 Еще вопрос из теории, как организовать свойство похожее на Surface Snapping при перемещении актора по сцене? В общем при перемещении меша мышью он беспрепядственно проваливается сквозь остальные меши. Можно как нибудь это исправить?

Blackcoat+
Через структуру все гуд работает 👍 Еще вопрос из ...

еще можешь просто заранее подумать про единые размеры, которые кратны размерности в анриле, и ставить все по сетке просто

Blackcoat+- Автор вопроса
Pavel
включить surface snapping попробовать)

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

Blackcoat+
Подскажите как его включить на игровом уровне? Во...

что знач на игровом уровне. в рантайме с симуляцией физики?

Blackcoat+- Автор вопроса
Pavel
что знач на игровом уровне. в рантайме с симуляцие...

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

Похожие вопросы

Обсуждают сегодня

Коллеги, я тут для личных нужд пошел ставить MQTT сервер, пощупал mosquitto, но ужаснулся отсутствию такой банальности, как HTTP API для посмотреть список топиков. А тут что,...
Maksim Lapshin
9
Но, может, есть уже проверенная? Наши требования такие: 1. Сообщения должны приходить из Инста в CRM оду 2. Должна быть возможность подключить несколько экаунтов Инстаграм. Р...
Alexander Sharoiko MSE / Александр Шаройко
13
Вопрос на перед, на следующую пятницу. Сколько строк кода можно вешать на одного программиста, понятно что если проект хорошо написан то можно и миллион. Но есть же где то пре...
AlekseyK Kluchnikov
31
Немного оффтопа: а кто на чем сидит для осдева в плане ide/редактора? Последнее время сидел на vscode, но я его прям не могу нормально воспринимать, перешел на сlion, но меня...
Evg Resh
29
Как думаете через какой сервис они верифицируют?
inc.
5
Добрый день! Подскажите, каким сборщиком фронта для OctoberCMS кто пользуется? Я имею ввиду сборщики, с которыми можно работать по стандартной схеме директорий октября. Я испо...
Николай Афанасенко
2
Это может быть все-таки не флудвейт? у меня ботфазер принимает изменения и отображает даже что они изменились, на видео видно что он прислал якобы уже измененное описание, н...
OVERLINK
13
День добрый, подскажите пожалуйста, есть ли какой-то способ сказать ребару не компилировать определённое приложение? Всю доку их перечиатл ничего подобного не нашёл
Кирилл
14
На чём в основном щас пишут мини апы? Vuejs?
Goot evening Not everyone
6
Вопрос: Здравствуйте! У меня возникла проблема с использованием плагина Mall в OctoberCMS. Я использую все файлы и компоненты в их исходном виде, без изменений. Однако на стр...
𐩱𐩪𐩣𐩱𐩲𐩺𐩡
8
Карта сайта