useLoadSceneModelStore.js 1.19 KB
import { defineStore, storeToRefs } from 'pinia';
import { useEditorStore } from '@/views/stores/useEditorStore';
import { drawMeshsFromLocalPromise } from '@/utility/jsm/draw/drawMesh';

export const useLoadSceneModelStore = defineStore('loadScene', () => {
    const store = useEditorStore();
    const { editor } = storeToRefs(store);
    const { addMeshToScene } = store;

    const loadScene = (rawFiles) => {
        if (!editor.value) return;
        const { scene } = editor.value;
        if (!scene) return;

        const urls = [];
        rawFiles.forEach((file) => {
            let name = file.name;
            let title = file.name;
            const names = file.name;
            const extension = names.split('.').pop();
            const sameObjects = scene.children.filter((el) => el.title === file.name);
            if (sameObjects.length > 0) {
                name = `${sameObjects.length}_${file.name}`;
            }
            urls.push({
                name,
                title,
                url: URL.createObjectURL(file),
                extension
            });
        });
        drawMeshsFromLocalPromise(urls, addMeshToScene);
    };

    return {
        loadScene
    };
});