Нужна помощь
16 ноября 2016 13:14
.name, i.type и i.bpy_origin - не стоит так брать, поэтому их можно заменить проверкам: "MESH" - параметр функции
get_all_objects, name - результат вызова m_scs.get_object_name, только с bpy_origin заминка - сейчас специального метода нет (добавим к этому релизу), поэтому можно проверить, что имя начинается не с "%meta" как у побочных объектов.
А это все потому-что самому приходится ковырять js. Не нашел исполнителя на эту, в принципе, не сложную задачу)) Ну ничего, в жизни пригодится и этот навык, учитывая современные тенденции…
Алексей
16 ноября 2016 14:37
Я так полагаю, что заминка на этапе сбора перечня объектов. У меня есть файл, в котором я заранее собираю все переменные и там есть определение объектов. Так как load_cb вызывается после первого json, то vars не получает весь список объектов.Да, именно в этом дело.
Вот думаю, если сделать отдельную функцию, которую вызвать callback после загрузки последнего json. А Вы такого рода объекты с перечнем чего-либо меняющегося динамически предусматриваете или каждый раз вызываете подбор объектов? Или делаете переменную с перечнем имен ключевых объектов, а потом их каждый раз собираете?Ну я не припомню, чтобы у нас такие задачи возникали, чтобы менять сразу все объекты . Но вариант с отдельной функцией подходит. Нужно сделать глобальный массив объектов, а каждому json-у назначить колбек по загрузке (как и load_cb для первого). Колбек вызывает отдельную функцию, в которой добавляются новые объекты в этот массив. Проверить, какие объекты были добавлены в конкретно этом json-е можно по их data_id (грубо говоря - счетчику json-ов):
function load_cb(data_id) {
var objs = m_scenes.get_all_objects("MESH", data_id);
}
По динамической загрузке можете посмотреть этот туториал: Меблируем комнату. Часть 1: Динамическая загрузка.
А это все потому-что самому приходится ковырять js.Ковырять вообще полезно - понимание только улучшится. А такие заминки у вас просто от небольшой практики программирования.
16 ноября 2016 14:59
16 ноября 2016 15:29
Зашёл в дом, поднялся на 2ой этаж, выпрыгнул в окно на нижний ярус крыши, бегал вокруг и с разбегу таки получилось запрыгнуть на самый верх.
Winner!
Winner!
Не стой, где попало… Попадет еще раз.
http://naviris.ru/
http://naviris.ru/
16 ноября 2016 15:35
function upd_objs() {
var excl_objs = ['Character'];
var _objs = [];
m_scs.get_all_objects('MESH').forEach(function(i){
var name = m_scs.get_object_name(i);
if (!excl_objs.includes(name) && name.indexOf('%meta') != 0) {
console.log(name);
_objs.push = i
};
});
s_vars.objs = _objs;
};
});
Никак не могу "поймать мыша" - определив один раз s_vars и в нем objs нулевой длины, хочу обновить этот массив калбэк функций, приведенной выше, но в консоль ругается на s_vars, что понятно. Подскажите, как для калбэк функции определить s_vars. Начал мучать калбэк функцию такими строками, но понятно, что не заработало. m_data.load(APP_ASSETS_PATH + "AmAve_2100_rest.json", upd_objs(b4w.require("vars").objs));
Алексей
16 ноября 2016 15:39
16 ноября 2016 15:41
16 ноября 2016 16:18
Никак не могу "поймать мыша" - определив один раз s_vars и в нем objs нулевой длины, хочу обновить этот массив калбэк функций, приведенной выше, но в консоль ругается на s_vars, что понятно. Подскажите, как для калбэк функции определить s_vars. Начал мучать калбэк функцию такими строками, но понятно, что не заработало. m_data.load(APP_ASSETS_PATH + "AmAve_2100_rest.json", upd_objs(b4w.require("vars").objs));
Это я сам себе отвечаю:
Вообще, там есть куча способов разнести загрузку функций и загрузку json и все они крутятся вокруг последовательности подключения модулей, выполнения функций и калбэков, в частности, можно загрузить основной json, запустить все функции сетапа управления, анимации, интерфейса, чтобы юзер получил картинку, а дальше загрузить оставшиеся json'ы и через калбеэк обновить необходимые переменные, причем совершенно не обязательно json грузить именно в функции load. Единственный минус при этом, что функционал кнопок будет не полноценным и если после смены картинок загрузятся дополнительные объекты, то они будут со старыми картинками, но если функция привязана к глобальной переменной, то повторная замена картинок коснется обновленного перечня объектов и замена произойдет полностью.
Алексей
16 ноября 2016 17:33