Сохранение/Загрузка сцены

3+

Сделал черновик функции сохранения сцены на диск и открытие сцены из файла.

function saveSceneOnDisk () {

	let link = document.createElement('a');
	link.download = 'Scene.txt';

	let blob = new Blob([JSON.stringify(ta_scene.scene.toJSON(), null, 2)], {type: 'text/plain'});

	link.href = URL.createObjectURL(blob);

	link.click();

	URL.revokeObjectURL(link.href);

}

loadFromDiskLabel.addEventListener( 'change', function loadSceneFromDisk( e ){

		let file = e.srcElement.files[0];

		let reader = new FileReader();

		reader.readAsText(file);

		reader.onload = function() {
		console.log( ta_scene.scene.children );

		let loader = new THREE.ObjectLoader();

		let loadedScene = loader.parse( JSON.parse( reader.result ) );

		let children = loadedScene.children;

		let elemToImport = [];

		children.forEach( element => {

			if ( element.userData.createdByUser ) {

				elemToImport.push( element );
				ta_scene.selectableObjects.push( element );

				Object.assign( ta_scene.scene.children, elemToImport );

			}

		});

		reader.onerror = function() {
			alert(reader.error);
		  };

};

Сейчас загружаются только объекты, созданные пользователем. Для этого добавил в объект

UserData:this.currentEntity.userData = { createdByUser: true, selectable: true };

TODO: Есть ошибки в консоли и много вопросов нужно проработать, такие как очистка сцены перед загрузкой, загрузка камер и установка позиции камеры, источников света, снятие выделения перед сохранением…

3+