Смена профиля качества приложения !

27 сентября 2017 08:30
Уважаемые спецы ! выкурил мануалы и форум не нашел решения, обращаюсь с небольшим писком о помощи. Есть хтмл кнопочки для выбора качества подвязываю на m_cfg.set("quality", m_cfg.P_LOW); и т.д само качество должно попасть в конфиг до инициализации сцены значит при смене качества сцену нужно переинициализировать с новыми параметрами, если вызову рефреш всей страницы все слетит в дефолт.. так вот как без перезагрузки страницы вызвать перезагрузку самой сцены с новым профилем качества ?? если можно маленький пример
28 сентября 2017 11:03
Можно, например, добавить в главный модуль приложения такую функцию reload:

var m_app = require("app");
var m_cfg = require("config");
var m_cont = require("container");
var m_main = require("main");

...

exports.init = function(quality) {
    quality = quality || m_cfg.P_HIGH;
    m_app.init({
        canvas_container_id: "main_canvas_container",
        callback: init_cb,
        show_fps: DEBUG,
        console_verbose: DEBUG,
        autoresize: true,
        quality: quality
    });
}

...

function reload() {
    var container = m_cont.get_container();
    m_main.reset();
    
    while (container.firstChild)
        container.removeChild(container.firstChild);

    exports.init(m_cfg.P_LOW);
}

- здесь exports.init() - стандартный метод, с которого начинается инициализация модуля, туда можно подать настройки качества для переинициализации.
28 сентября 2017 11:11
А ещё можно использовать аддон storage.js, чтобы сохранять значения настроек в window.localStorage - так сделано в Веб-плеере и ряде других приложений, тогда перезагрузка не будет страшна.
28 сентября 2017 17:38
function reload() {
var container = m_cont.get_container();
m_main.reset();

while (container.firstChild)
container.removeChild(container.firstChild);

exports.init(m_cfg.P_LOW);
}

что делает reset в данном случае ??
в цикле я так понимаю дочерние элементы сцены удаляем передавая в модуль конфиг, то есть те объекты что в сцену уже были добавлены ранее слетают ?
28 сентября 2017 17:40
Используя storage.js, пишем в сессии или куки правильно я понимаю ??
28 сентября 2017 17:51
интересное решение storage раньше не встречал…. открытие дня просто, спс за наводку !!!
28 сентября 2017 17:53
quality = quality || m_cfg.P_HIGH; если не передали значение в quality определяем его по умолчанию правильно ??
28 сентября 2017 18:01
что делает reset в данном случае ??
выгружает сцену и подчищает используемые ресурсы, вроде различных кешей, webgl-контекста и т.д.

в цикле я так понимаю дочерние элементы сцены удаляем передавая в модуль конфиг, то есть те объекты что в сцену уже были добавлены ранее слетают ?
а какие объекты? это же просто HTML-элементы, удаляется все DOM-содержимое контейнера, т.е. приводится к виду как было, до инициализации движка


интересное решение storage раньше не встречал…. открытие дня просто, спс за наводку !!!
storage.js - это обертка со стороны движка для window.localStorage - можно и напрямую им пользоваться, если удобнее

quality = quality || m_cfg.P_HIGH; если не передали значение в quality определяем его по умолчанию правильно ??
да, просто какое-то значение по умолчанию
28 сентября 2017 18:33
Жму руку за помощь !!
 
Пожалуйста, зарегистрируйтесь или войдите под своей учетной записью , чтобы оставлять сообщения.