|
@@ -1,15 +1,7 @@ |
|
|
|
|
|
const ОТСТУП_МЕЖДУ_ФИШКАМИ = 0.02; |
|
|
const КОЭФФИЦИЕНТ_ВЫСОТЫ = 1.5; |
|
|
const КОЭФФИЦИЕНТ_ВЫСОТЫ = 1.5; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
СоздатьОтладочнуюСферуВЦентреКорня = мир => |
|
|
|
|
|
{ |
|
|
|
|
|
var форма = new THREE.SphereBufferGeometry(0.5, 32, 32); |
|
|
|
|
|
var сфера = new THREE.Mesh(форма); |
|
|
|
|
|
сфера.material = new THREE.MeshLambertMaterial({ color: 0xAA00AA }); |
|
|
|
|
|
мир.кореньСценыМаджонга.add(сфера); |
|
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// // // // |
|
|
// // // // |
|
|
|
|
|
|
|
|
|
|
|
|
|
@@ -28,13 +20,17 @@ const КОЭФФИЦИЕНТ_ВЫСОТЫ = 1.5; |
|
|
|
|
|
|
|
|
ЦентрироватьФишкиСцены = мир => |
|
|
ЦентрироватьФишкиСцены = мир => |
|
|
{ |
|
|
{ |
|
|
|
|
|
// Возвращаем в центр. |
|
|
|
|
|
мир.сценаМаджонга.position.x = 0; |
|
|
|
|
|
мир.сценаМаджонга.position.z = 0; |
|
|
|
|
|
|
|
|
var р = мир.размерПоляФишек; |
|
|
var р = мир.размерПоляФишек; |
|
|
// Убираем пустоту слева. |
|
|
// Убираем пустоту слева. |
|
|
мир.кореньСценыМаджонга.position.x -= р.мин.x; |
|
|
|
|
|
мир.кореньСценыМаджонга.position.z -= р.мин.z; |
|
|
|
|
|
|
|
|
мир.сценаМаджонга.position.x -= р.мин.x; |
|
|
|
|
|
мир.сценаМаджонга.position.z -= р.мин.z; |
|
|
// Центрируем остаток. |
|
|
// Центрируем остаток. |
|
|
мир.кореньСценыМаджонга.position.x -= (р.макс.x - р.мин.x) / 2; |
|
|
|
|
|
мир.кореньСценыМаджонга.position.z -= (р.макс.z - р.мин.z) / 2; |
|
|
|
|
|
|
|
|
мир.сценаМаджонга.position.x -= (р.макс.x - р.мин.x) / 2; |
|
|
|
|
|
мир.сценаМаджонга.position.z -= (р.макс.z - р.мин.z) / 2; |
|
|
}; |
|
|
}; |
|
|
|
|
|
|
|
|
|
|
|
|
|
@@ -51,7 +47,7 @@ const КОЭФФИЦИЕНТ_ВЫСОТЫ = 1.5; |
|
|
"x": 0, |
|
|
"x": 0, |
|
|
"z": 0, |
|
|
"z": 0, |
|
|
}; |
|
|
}; |
|
|
for (var номер in мир.фишкиСцены) |
|
|
|
|
|
|
|
|
for (var номер in мир.фишкиМаджонга) |
|
|
{ |
|
|
{ |
|
|
const ф = мир.фишкиСцены[номер]; |
|
|
const ф = мир.фишкиСцены[номер]; |
|
|
if (ф.position.x < мин.x) |
|
|
if (ф.position.x < мин.x) |
|
@@ -84,7 +80,7 @@ const КОЭФФИЦИЕНТ_ВЫСОТЫ = 1.5; |
|
|
|
|
|
|
|
|
ЗадатьМатериалыФишкамСцены = мир => |
|
|
ЗадатьМатериалыФишкамСцены = мир => |
|
|
{ |
|
|
{ |
|
|
for (var н in мир.фишкиСцены) |
|
|
|
|
|
|
|
|
for (var н in мир.фишкиМаджонга) |
|
|
{ |
|
|
{ |
|
|
var ф = мир.фишкиСцены[н]; |
|
|
var ф = мир.фишкиСцены[н]; |
|
|
var г = мир.фишкиМаджонга[н]["🚩"]; |
|
|
var г = мир.фишкиМаджонга[н]["🚩"]; |
|
@@ -94,25 +90,11 @@ const КОЭФФИЦИЕНТ_ВЫСОТЫ = 1.5; |
|
|
}; |
|
|
}; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// // // // |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
УбратьСтарыеФишкиСцены = мир => |
|
|
|
|
|
{ |
|
|
|
|
|
if (мир.сценаМаджонга.children.length) |
|
|
|
|
|
{ |
|
|
|
|
|
мир.сценаМаджонга.remove(мир.кореньСценыМаджонга); |
|
|
|
|
|
} |
|
|
|
|
|
мир.кореньСценыМаджонга = new THREE.Group(); |
|
|
|
|
|
мир.сценаМаджонга.add(мир.кореньСценыМаджонга); |
|
|
|
|
|
мир.фишкиСцены = []; |
|
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// // // // |
|
|
// // // // |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
СоздатьНовыеФишкиСцены = мир => |
|
|
|
|
|
|
|
|
ПерезадатьФишкиСцены = мир => |
|
|
{ |
|
|
{ |
|
|
var фишка = мир.модельФишкиСцены; |
|
|
var фишка = мир.модельФишкиСцены; |
|
|
var границы = фишка.geometry.boundingBox; |
|
|
var границы = фишка.geometry.boundingBox; |
|
@@ -122,16 +104,14 @@ const КОЭФФИЦИЕНТ_ВЫСОТЫ = 1.5; |
|
|
(границы.max.y - границы.min.y), |
|
|
(границы.max.y - границы.min.y), |
|
|
]; |
|
|
]; |
|
|
var отступ = мир.отступМеждуФишкамиСцены; |
|
|
var отступ = мир.отступМеждуФишкамиСцены; |
|
|
|
|
|
|
|
|
for (var номер in мир.фишкиМаджонга) |
|
|
for (var номер in мир.фишкиМаджонга) |
|
|
{ |
|
|
{ |
|
|
// Узел сцены. |
|
|
// Узел сцены. |
|
|
var фм = мир.фишкиМаджонга[номер]; |
|
|
|
|
|
var ф = фишка.clone(); |
|
|
|
|
|
|
|
|
var ф = мир.фишкиСцены[номер]; |
|
|
|
|
|
ф.layers.set(0); |
|
|
ф.userData = номер; |
|
|
ф.userData = номер; |
|
|
мир.фишкиСцены.push(ф); |
|
|
|
|
|
мир.кореньСценыМаджонга.add(ф); |
|
|
|
|
|
// Расположение. |
|
|
// Расположение. |
|
|
|
|
|
var фм = мир.фишкиМаджонга[номер]; |
|
|
var п = фм["📍"]; |
|
|
var п = фм["📍"]; |
|
|
var слой = п[0]; |
|
|
var слой = п[0]; |
|
|
var ряд = п[1]; |
|
|
var ряд = п[1]; |
|
@@ -146,8 +126,45 @@ const КОЭФФИЦИЕНТ_ВЫСОТЫ = 1.5; |
|
|
// // // // |
|
|
// // // // |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
СкрытьФишкиСцены = мир => |
|
|
|
|
|
{ |
|
|
|
|
|
var фишки = мир.фишкиСцены; |
|
|
|
|
|
for (var н in фишки) |
|
|
|
|
|
{ |
|
|
|
|
|
var ф = фишки[н]; |
|
|
|
|
|
ф.layers.set(1); |
|
|
|
|
|
} |
|
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// // // // |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ДосоздатьФишкиСцены = мир => |
|
|
|
|
|
{ |
|
|
|
|
|
// Если фишек в сцене уже достаточно, то ничего не делаем. |
|
|
|
|
|
if (мир.фишкиСцены.length >= мир.фишкиМаджонга.length) |
|
|
|
|
|
{ |
|
|
|
|
|
return; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
var фишка = мир.модельФишкиСцены; |
|
|
|
|
|
var колво = мир.фишкиМаджонга.length - мир.фишкиСцены.length; |
|
|
|
|
|
for (var н = 0; н < колво; ++н) |
|
|
|
|
|
{ |
|
|
|
|
|
var ф = фишка.clone(); |
|
|
|
|
|
мир.фишкиСцены.push(ф); |
|
|
|
|
|
мир.кореньСценыМаджонга.add(ф); |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// // // // |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ПодготовитьСценуМаджонга = мир => |
|
|
ПодготовитьСценуМаджонга = мир => |
|
|
{ |
|
|
{ |
|
|
|
|
|
мир.отступМеждуФишкамиСцены = ОТСТУП_МЕЖДУ_ФИШКАМИ; |
|
|
мир.сценаМаджонга = new THREE.Group(); |
|
|
мир.сценаМаджонга = new THREE.Group(); |
|
|
мир.отступМеждуФишкамиСцены = 0.02; |
|
|
|
|
|
|
|
|
мир.фишкиСцены = []; |
|
|
}; |
|
|
}; |