|
|
@@ -1,4 +1,4 @@ |
|
|
|
function Объекты(события, изображения, тела, слежение) |
|
|
|
function Объекты(события, состояние) |
|
|
|
{ |
|
|
|
this.создать = function() |
|
|
|
{ |
|
|
@@ -9,67 +9,71 @@ function Объекты(события, изображения, тела, сле |
|
|
|
события.подписать(this); |
|
|
|
}; |
|
|
|
|
|
|
|
this.обработатьКлюч = function(ключ, путь, значение) |
|
|
|
this.обновитьИзображение = function(имя) |
|
|
|
{ |
|
|
|
if (путь[0] != "объекты") |
|
|
|
let имяИзо = `объекты-${имя}`; |
|
|
|
let за = this.задано[имя]; |
|
|
|
let пр = this.умолчание.пр; |
|
|
|
var описание = { |
|
|
|
ширина: за["пр.2"] ? за["пр.2"] : пр[2], |
|
|
|
высота: за["пр.3"] ? за["пр.3"] : пр[3], |
|
|
|
вид: {}, |
|
|
|
}; |
|
|
|
for (var ключ in за) |
|
|
|
{ |
|
|
|
return; |
|
|
|
if (ключ.startsWith("вид.")) |
|
|
|
{ |
|
|
|
var к = ключ.substring(4); |
|
|
|
var значение = за[ключ]; |
|
|
|
описание.вид[к] = значение; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
var имя = путь[1]; |
|
|
|
var свойство = путь.slice(2).join("."); |
|
|
|
if (!this.задано[имя]) |
|
|
|
{ |
|
|
|
this.задано[имя] = {}; |
|
|
|
} |
|
|
|
this.задано[имя][свойство] = значение; |
|
|
|
this.обновитьОбъект(имя); |
|
|
|
состояние.разобрать({ |
|
|
|
изображения: { |
|
|
|
[имяИзо]: описание, |
|
|
|
}, |
|
|
|
}); |
|
|
|
}; |
|
|
|
|
|
|
|
this.обновитьОбъект = function(имя) |
|
|
|
this.обработатьКлюч = function(ключ, путь, значение) |
|
|
|
{ |
|
|
|
/* |
|
|
|
var тело = тела.тела[за.тело]; |
|
|
|
if (!тело) |
|
|
|
if (путь[0] != "объекты") |
|
|
|
{ |
|
|
|
return; |
|
|
|
} |
|
|
|
|
|
|
|
var элемент = изображения.элементы[за.изображение]; |
|
|
|
var ум = this.умолчание; |
|
|
|
|
|
|
|
// Параметры. |
|
|
|
var скорость = за.скорость ? за.скорость : ум.скорость; |
|
|
|
var смещениеX = за["смещение.0"] ? за["смещение.0"] : ум.смещение[0]; |
|
|
|
var смещениеY = за["смещение.1"] ? за["смещение.1"] : ум.смещение[1]; |
|
|
|
var предел = за.предел ? за.предел : ум.предел; |
|
|
|
|
|
|
|
// Текущая позиция. |
|
|
|
var x0 = 0; |
|
|
|
if (элемент.dataset.слежениеX) |
|
|
|
let имя = путь[1]; |
|
|
|
let свойство = путь.slice(2).join("."); |
|
|
|
if (!this.задано[имя]) |
|
|
|
{ |
|
|
|
x0 = элемент.dataset.слежениеX; |
|
|
|
this.задано[имя] = {}; |
|
|
|
} |
|
|
|
var y0 = 0; |
|
|
|
if (элемент.dataset.слежениеY) |
|
|
|
this.задано[имя][свойство] = значение; |
|
|
|
|
|
|
|
let пр = свойство.startsWith("пр."); |
|
|
|
if (пр) |
|
|
|
{ |
|
|
|
y0 = элемент.dataset.слежениеY; |
|
|
|
this.пересоздатьТело(имя); |
|
|
|
} |
|
|
|
this.обновитьИзображение(имя); |
|
|
|
}; |
|
|
|
|
|
|
|
// Целевая позиция. |
|
|
|
var x1 = тело.position.x + смещениеX; |
|
|
|
var y1 = тело.position.y + смещениеY; |
|
|
|
// Radians -> Degrees. |
|
|
|
var угол = тело.angle * 180 / Math.PI; |
|
|
|
|
|
|
|
// Устанавливаемая плавно позиция. |
|
|
|
var x = this.lerp(x0, x1, скорость, предел); |
|
|
|
var y = this.lerp(y0, y1, скорость, предел); |
|
|
|
|
|
|
|
элемент.dataset.слежениеX = x; |
|
|
|
элемент.dataset.слежениеY = y; |
|
|
|
изображения.обновитьРасположение(за.изображение, x, y, угол); |
|
|
|
*/ |
|
|
|
this.пересоздатьТело = function(имя) |
|
|
|
{ |
|
|
|
let имяТела = `объекты-${имя}`; |
|
|
|
let за = this.задано[имя]; |
|
|
|
let пр = this.умолчание.пр; |
|
|
|
состояние.разобрать({ |
|
|
|
тела: { |
|
|
|
[имяТела]: { |
|
|
|
x: за["пр.0"] ? за["пр.0"] : пр[0], |
|
|
|
y: за["пр.1"] ? за["пр.1"] : пр[1], |
|
|
|
ширина: за["пр.2"] ? за["пр.2"] : пр[2], |
|
|
|
высота: за["пр.3"] ? за["пр.3"] : пр[3], |
|
|
|
}, |
|
|
|
}, |
|
|
|
}); |
|
|
|
}; |
|
|
|
|
|
|
|
// Конструктор. |
|
|
|