import * as THREE from 'three' import { Vortex } from './Vortex.js' export class TetraScene extends THREE.Scene { constructor(settings, loadingManager) { super() this.camera = new THREE.PerspectiveCamera(100, window.innerWidth / window.innerHeight, 0.1, 1000) this.camera.position.set(5, 3, 12) this.vortex = new Vortex(loadingManager) this.add(this.vortex) this.ambientLight = new THREE.AmbientLight(0xffffff, 1) this.add(this.ambientLight) this.directionalLight = new THREE.DirectionalLight(0xffffff, 2) this.directionalLight.position.set(5, -20, 20) this.add(this.directionalLight) /* Sounds */ this.music = new Audio('audio/benevolence.m4a') this.music.loop = true this.music.volume = settings.musicVolume / 100 const listener = new THREE.AudioListener() this.camera.add( listener ) const audioLoader = new THREE.AudioLoader(loadingManager) this.lineClearSound = new THREE.Audio(listener) audioLoader.load('audio/line-clear.ogg', function( buffer ) { this.lineClearSound.setBuffer(buffer) this.lineClearSound.setVolume(settings.sfxVolume/100) }.bind(this)) this.tetrisSound = new THREE.Audio(listener) audioLoader.load('audio/tetris.ogg', function( buffer ) { this.tetrisSound.setBuffer(buffer) this.tetrisSound.setVolume(settings.sfxVolume/100) }.bind(this)) this.hardDropSound = new THREE.Audio(listener) audioLoader.load('audio/hard-drop.wav', function( buffer ) { this.hardDropSound.setBuffer(buffer) this.hardDropSound.setVolume(settings.sfxVolume/100) }.bind(this)) } update(delta) { this.vortex.update(delta) } }