Как сделать глубокое клонирование массива
Мне нужно скопировать массив так, чтобы копия и оригинал вообще не были связаны и копия была полностью идентична оригиналу. В массиве миксер и мэш от three.js. clone() и slice() не копируют полностью, у меня всё равно происходит взаимодействие с оригиналом.
Создание оригинала:
function loadAnimatedModel(path, s, name)
{
var loader = new GLTFLoader();
loader.load(path, function (gltf) {
var mesh = gltf.scene.children[0];
var clip = gltf.animations[0];
mixer = new THREE.AnimationMixer(mesh);
// установка параметров анимации (скорость воспроизведения и стартовый кадр)
mixer.clipAction(clip, mesh).setDuration(1).startAt(0).play();
console.log(gltf.animations);
mesh.scale.set(s, s, s);
mesh.castShadow = true;
mesh.receiveShadow = true;
var t = [mesh, mixer];
models.set(name, t);
});
}
models это Map. Попытка клонирования:
function addAnimMesh(name)
{
var n = [];
n = models.get(name).slice(); //здесь нужно клонировать, slice не даёт полное копирование
var mesh = n[0];
var mixer = n[1];
mesh.position.x = getRandomNumber(0, N);
mesh.position.z = getRandomNumber(0, N);
mesh.position.y = getRandomNumber(80, 100);
mesh.rotation.y = Math.PI / getRandomNumber(1, 360);
mesh.userData.ID = ID;
mixersOnScene.push(mixer);
modelsOnScene.push(mesh);
scene.add(mesh);
ID++;
}