loadGltf.worker.js 1.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. import * as THREE from 'three'
  2. import Dexie from 'dexie';
  3. const db = new Dexie('DB')
  4. db.version(1).stores({
  5. modal: "++id, modalName, modalVal",
  6. })
  7. self.addEventListener('message', function(e) {
  8. const { data, message } = e.data;
  9. if(message == 'end') {
  10. // self.postMessage({message: 'end', data: null})
  11. // self.close()
  12. }else {
  13. if(data) {
  14. loadGltf(data)
  15. }
  16. }
  17. }, false);
  18. function loadGltf(url){
  19. const loader = new THREE.FileLoader();
  20. loader.setPath( '/3d/glft/' );
  21. loader.setResponseType( 'arraybuffer' );
  22. loader.setRequestHeader( {} );
  23. loader.setWithCredentials( false );
  24. try {
  25. loader.load(url, (data)=> {
  26. const modalName = url.replace(/(.*\/)*([^.]+).*/ig,"$2")
  27. db.modal.add({
  28. modalName: modalName,
  29. modalVal: data
  30. })
  31. self.postMessage({message: 'end', data: null})
  32. // self.close()
  33. })
  34. } catch (error) {
  35. console.log(error);
  36. }
  37. }