123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081 |
- import modalWorker from './loadGltf.worker?worker';
- import Dexie from 'dexie';
- import { useModelStore } from '/@/store/modules/threejs';
- export function initModalWorker() {
- type model = {
- modelName: string;
- modelVal: any;
- };
- const modalUrlArr = [
- 'fm/fm.glb',
- 'fm/Fm-door.glb',
- 'fm/Fm-wire.glb',
- 'fm/Fm-wall.glb',
- 'fc/sdFc.glb',
- 'fc/ddFc.glb',
- 'cf/lmcf.glb',
- 'cf/lmcfSide.glb',
- 'cf/zdcf.glb',
- 'cf/dscf.glb',
- 'jbfj/jbfj_hd.glb',
- 'jbfj/jbfj_fm.glb',
- 'jbfj/jbfj_fc.glb',
- 'ztfj/main.glb',
- 'ztfj/dj1.glb',
- 'ztfj/dj2.glb',
- 'ztfj/bg.glb',
- 'fire/laneway.glb',
- 'fire/workFace.glb',
- 'yafeng/nitrogen.glb',
- 'ceshi/glass.glb',
- ];
- const db: any = new Dexie('DB');
- window['CustomDB'] = db;
- const modelStore = useModelStore();
- db.version(1).stores({
- modal: '++id, modalName, modalVal',
- });
- new Promise(async (resolve) => {
- const validateModelUrlArr: string[] = [];
- for (let i = 0; i < modalUrlArr.length; i++) {
- const url = modalUrlArr[i];
- const modalName = url.replace(/(.*\/)*([^.]+).*/gi, '$2');
- const aa = new Date().getTime();
- const modalArr = await db.modal.where('modalName').equals(modalName).toArray();
- console.log('模型下载时间------------》', new Date().getTime() - aa);
- if (modalArr.length < 1) {
- validateModelUrlArr.push(url);
- } else {
- if (!modelStore.modelArr.get(modalName)) {
- const model: model = {
- modelName: modalName,
- modelVal: modalArr[0].modalVal,
- };
- modelStore.setModel(model);
- }
- }
- }
- resolve(validateModelUrlArr);
- }).then((validateModelUrlArr: string[]) => {
- validateModelUrlArr.forEach((url) => {
- const worker = new modalWorker();
- worker.onmessage = async function (e) {
- const { data, message } = e.data;
- if (message === 'end') {
- if (data) {
- modelStore.setModel(data);
- }
- worker.terminate();
- }
- };
- worker.postMessage({ message: 'load', data: url });
- });
- });
- }
- initModalWorker();
|