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 =...