мир.камера = {
    задано: {},
    обновить: обновитьКамеру,
};


// // // //


мир.ключники.push(function(ключ, путь, значение){
    if (!ключ.startsWith("камера"))
    {
        return;
    }

    var свойство = путь.slice(1).join(".");
    мир.камера.задано[свойство] = значение;
});


// // // //


function обновитьКамеру()
{
    var объект = мир.камера.задано.объект;
    var центрировать = мир.камера.задано.центрировать;
    var тело = мир.объекты.тела[объект];
    if (!тело || !центрировать)
    {
        return;
    }

    var корень = document.getElementById("корень");
    // Сейчас.
    var x0 = 0;
    if (корень.style.left.endsWith("px"))
    {
        x0 = корень.style.left.slice(0, -2);
    }
    var y0 = 0;
    if (корень.style.top.endsWith("px"))
    {
        y0 = корень.style.top.slice(0, -2);
    }
    // Цель.
    var x1 = window.innerWidth / 2 - тело.position.x;
    var y1 = window.innerHeight / 2 - тело.position.y;
    // Плавно.
    function lerp(v0, v1, t) {
        return v0 * (1 - t) + v1 * t;
    }
    var x = lerp(x0, x1, центрировать);
    var y = lerp(y0, y1, центрировать);

    корень.style.left = `${x}px`;
    корень.style.top = `${y}px`;
}