¿Hay alguna manera de verificar si la función transversal está completa (terminada de atravesar la escena)?
Algo como (ejemplo)
fbx.traverse( function( c ) if ( c instanceof THREE.Camera ) { // Debug log camera child console.log( c }).onComplete(function( e ) { // Do something on complete } Explicación del problema: cuando un usuario selecciona un archivo FBX, lo atraviesa para todas las cámaras. Si es un archivo FBX válido y se lee con éxito, entonces procesa 'FBX loaded. Found ' + count + ' camera(s).'
El problema es que, cuando cargo un archivo FBX, puedo ver claramente que indica "0" cámaras, antes de que la traverse haya encontrado una cámara. Luego cambia a 1. Me gustaría saber cuándo se completa la poligonal, para que el usuario pueda recibir una notificación de que es seguro exportar el archivo de cámara convertido.
De lo contrario, es posible que se descarguen antes de que se complete la función transversal.
Código actual
reader.addEventListener( "load", function( e ) const buffer = event.target.result, loader = new THREE.FBXLoader(), fbx = loader.parse( buffer ); var count = 0; fbx.traverse( function( c ) if ( c instanceof THREE.Camera ) { // Debug log camera child console.log( c count+ }); msg.innerHTML = '<span class="green">FBX loaded. Found <strong>' + count + '</strong> camera(s).</span>'; });