Возможно, вы захотите добавить в puzzles.js одну крохотную запись
Blockly.runtimeChunks = runtimeChunks;
Это откроет доступ к таким функциям как retrieveObjectNames
или findUniqueObjectName
при написании плагинов и несколько облегчит из создание.
Еще можно легко замутить аналог KHR_Material_Variants, но без добавления всякой запутанной мути в интерфейс аддона. Достаточно просто материалы без юзера или с атрибутом “фейк юзер” экспортировать вместе со всеми материалами, а потом присваивать их невидимым мешам-пустышкам без геометрии (пустышки можно разместить в отдельной группе “v3d_Fake_Users”). Таким образом материалы всегда будет доступны для замены. Или можно хранить бесхозные (или все) материалы в переменной app.materials
. Сейчас проблема в том, что материалы читаются с объектов в сцене и если объект был удален, то и материала как бы нет, хотя он есть. если бы он считывался из app.materials
, то всегда был бы доступен вне зависимости от того, пользуется им кто-то или нет.
Puzzles and JS. Fast and expensive.