f52fae959ff5aeaa8bec51740b8392fe8efd309a.svn-base 825 B

1234567891011121314151617181920212223242526272829303132333435363738
  1. function singleAnimation( verticesArray, animateBuffArrays, stepTotal) {
  2. let len = verticesArray.length
  3. let pollIndex = 0;
  4. return function () {
  5. for (let i = 0, index = 0; i < len; i += 3, index++) {
  6. let Indexes = index * stepTotal + pollIndex
  7. verticesArray[i + 2] = animateBuffArrays[Indexes]
  8. }
  9. pollIndex++
  10. if (pollIndex < stepTotal) {
  11. // mesh.geometry.attributes.position.needsUpdate = true;
  12. return false
  13. } else {
  14. return true
  15. }
  16. }
  17. }
  18. self.addEventListener('message', event => {
  19. let data = event.data
  20. let id = data.id
  21. let fns = singleAnimation(
  22. data.verticesArray,
  23. data.animateBuffArrays,
  24. data.stepTotal
  25. )
  26. let interval = setInterval(() => {
  27. if (fns()) {
  28. clearInterval(interval)
  29. self.postMessage(id)
  30. }
  31. }, 16)
  32. })