JSFiddle - React, Tailwind, and code Playground

by neomatt

HTML

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title>a-frame: scene Memory Test</title>
    <meta name="description" content="a-frame: scene Memory Test">
    <script src="https://aframe.io/releases/1.2.0/aframe.min.js"></script>
    	<!-- <script src="https://cdn.jsdelivr.net/gh/aframevr/aframe@1c91156f58974db40fa9f542bb959fb73fe1970f/dist/aframe-master.min.js"></script> -->
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
  </head>
  <body>
    <button id="toggleScene" type="button" style="position: fixed; top: 10px; left: 10px; z-index: 100;" onclick="toggleScene()">Start scene toggle</button>
    <script src="script.js"></script>
  </body>
</html>

JavaScript

loopCount = 0;
function toggleScene() {
  let scene = document.getElementById('scene');
  if (scene) {
    scene.remove();
	disposeObject3D(scene.object3D);
    document.getElementById('toggleScene').innerText = 'Start scene toggle';
  } else {
    let content = '<a-scene id="scene"></a-scene>'
  $(document.body).append(content);
    document.getElementById('toggleScene').style = 'display:none;';
  }
  
  loopCount++;
  if(loopCount < 20) {
    window.setTimeout(()=> {
      toggleScene();
    }, 1000);
  } else {
  	loopCount = 0;
    document.getElementById('toggleScene').style = 'position: fixed; top: 10px; left: 10px; z-index: 100; display:block;';
  }
}

function disposeObject3D (object) {
		object.traverse(obj => {
			 
			if (obj instanceof THREE.Mesh) {
				  
				if(obj.material){
					
					obj.material.dispose()
					if(obj.material.map){
						obj.material.map.dispose()
						obj.material.map = null
					}
					if(obj.material.lightMap){
						obj.material.lightMap.dispose()
						obj.material.lightMap = null
					}
					if(obj.material.aoMap){
						obj.material.aoMap.dispose()
						obj.material.aoMap = null
					}
					if(obj.material.emissiveMap){
						obj.material.emissiveMap.dispose()
						obj.material.emissiveMap = null
					}
					if(obj.material.bumpMap){
						obj.material.bumpMap.dispose()
						obj.material.bumpMap = null
					}
					if(obj.material.normalMap){
						obj.material.normalMap.dispose()
						obj.material.normalMap = null
					}
					if(obj.material.displacementMap){
						obj.material.displacementMap.dispose()
						obj.material.displacementMap = null
					}
					if(obj.material.roughnessMap){
						obj.material.roughnessMap.dispose()
						obj.material.roughnessMap = null
					}
					if(obj.material.metalnessMap){
						obj.material.metalnessMap.dispose()
						obj.material.metalnessMap = null
					}
					if(obj.material.alphaMap){
						obj.material.alphaMap.dispose()
						obj.material.alphaMap =...