diff --git a/00100.мир.js b/00100.мир.js
index 6f2f437..4250359 100644
--- a/00100.мир.js
+++ b/00100.мир.js
@@ -28,10 +28,11 @@
var значения = мир.выпрямить(словарь);
for (var ключ in значения)
{
+ var путь = ключ.split(".");
var значение = значения[ключ];
for (var номер in мир.ключники)
{
- мир.ключники[номер](ключ, значение);
+ мир.ключники[номер](ключ, путь, значение);
}
}
};
diff --git a/00110.заголовок.js b/00110.заголовок.js
index 951a80e..5b1be58 100644
--- a/00110.заголовок.js
+++ b/00110.заголовок.js
@@ -1,4 +1,4 @@
-мир.ключники.push(function(ключ, значение){
+мир.ключники.push(function(ключ, путь, значение){
if (ключ != "заголовок")
{
return;
diff --git a/00120.физика.js b/00120.физика.js
index 8c13a77..3ab4556 100644
--- a/00120.физика.js
+++ b/00120.физика.js
@@ -1,14 +1,13 @@
-мир.физика = { };
-
-мир.физика.движок = Matter.Engine.create({
- enableSleeping: true,
-});
-
-мир.физика.обновить = function()
-{
- Matter.Engine.update(мир.физика.движок);
- requestAnimationFrame(мир.физика.обновить);
+мир.физика = {
+ движок: null,
+ настройки: {
+ enableSleeping: true,
+ },
+ создать: function() {
+ мир.физика.движок = Matter.Engine.create(мир.физика.настройки);
+ },
+ обновить: function() {
+ Matter.Engine.update(мир.физика.движок);
+ },
};
-// Запустить обновление.
-мир.физика.обновить();
diff --git a/00130.платформы.js b/00130.платформы.js
index f8e1e5c..a039b29 100644
--- a/00130.платформы.js
+++ b/00130.платформы.js
@@ -1,19 +1,50 @@
-мир.платформы = {};
+мир.платформы = {
+ умолчание: {
+ x: 100,
+ y: 100,
+ ширина: 40,
+ высота: 20,
+ цвет: "ff0000",
+ },
+ задано: {},
+ тела: {},
+};
-мир.ключники.push(function(ключ, значение){
+
+мир.ключники.push(function(ключ, путь, значение){
if (!ключ.startsWith("платформы"))
{
return;
}
- var к = ключ.split(".");
- var имя = к[1];
-console.debug("имя:", имя);
- if (!(имя in мир.платформы))
+
+ var имя = путь[1];
+ var свойство = путь[2];
+
+ // Сохранить заданные значения.
+ if (!(имя in мир.платформы.задано))
+ {
+ мир.платформы.задано[имя] = {};
+ }
+ мир.платформы.задано[имя][свойство] = значение;
+
+console.debug("задано", мир.платформы.задано[имя]);
+
+ // Удалить физическое тело.
+ if (имя in мир.платформы.тела)
{
- /*
- мир.платформы[имя] = {
- тело:
- };
- */
+ var тело = мир.платформы.тела[имя];
+ Matter.Composite.remove(мир.физика.движок.world, тело);
}
+ // Пересоздать физическое тело.
+ var задано = мир.платформы.задано[имя];
+ var тело = Matter.Bodies.rectangle(
+ задано["x"] ? задано["x"] : мир.платформы.умолчание["x"],
+ задано["y"] ? задано["y"] : мир.платформы.умолчание["y"],
+ задано["ширина"] ? задано["ширина"] : мир.платформы.умолчание["ширина"],
+ задано["высота"] ? задано["высота"] : мир.платформы.умолчание["высота"],
+ {
+ isStatic: true,
+ }
+ );
+ Matter.Composite.add(мир.физика.движок.world, тело);
});
diff --git a/01000.пуск.js b/01000.пуск.js
new file mode 100644
index 0000000..42ecb31
--- /dev/null
+++ b/01000.пуск.js
@@ -0,0 +1,9 @@
+мир.обновить = function()
+{
+ мир.физика.обновить();
+ requestAnimationFrame(мир.обновить);
+};
+
+// Запустить.
+мир.физика.создать();
+мир.обновить();
diff --git a/00300.пример.json.js b/01300.пример.json.js
similarity index 55%
rename from 00300.пример.json.js
rename to 01300.пример.json.js
index 213cb55..7200059 100644
--- a/00300.пример.json.js
+++ b/01300.пример.json.js
@@ -2,18 +2,8 @@
заголовок: "РК 0.1.0",
платформы: {
полка1: {
- x: 0,
- y: 0,
- ширина: 200,
- высота: 50,
- цвет: "ff0000",
- },
- полка2: {
x: 100,
- y: 0,
- ширина: 200,
- высота: 50,
- цвет: "00ff00",
+ y: 100,
},
},
спрайты: {
diff --git a/index.html b/index.html
index bb8d112..b307ee2 100644
--- a/index.html
+++ b/index.html
@@ -22,6 +22,7 @@
-
+
+