{
const context = initialize()
const {scene, camera, renderer, clock} = context
invalidation.then(() => renderer.dispose())
let texture = null
const geometry = new THREE.ConeGeometry(100, 0, 1000, 1, true)
const material = new THREE.MeshBasicMaterial({})
const textureLoader = new THREE.TextureLoader()
const url = 'https://i.imgur.com/gBPbGlD.jpg'
textureLoader.load(url, image => {
texture = image
texture.wrapS = texture.wrapT = THREE.RepeatWrapping;
texture.offset.set(0, 0)
texture.repeat.set(2, 0.5)
material.map = texture
material.needsUpdate = true
})
const mesh = new THREE.Mesh(geometry, material)
mesh.rotation.x = Math.PI / 2
scene.add(mesh)
let offset = 0
while (true) {
const speed = 0.1
const delta = clock.getDelta()
const elapsedTime = clock.getElapsedTime()
if (texture) {
offset = (offset + delta * speed) % 1
texture.offset.set(offset * 0.1, offset)
}
renderer.render(scene, camera)
yield renderer.domElement
}
}