Spaces:
Running
Running
import { | |
loadObjects | |
} from './components/objects/objects.js'; | |
import { | |
createCamera | |
} from './components/camera.js'; | |
import { | |
createLights | |
} from './components/lights.js'; | |
import { | |
createScene | |
} from './components/scene.js'; | |
import { | |
FaceTracker | |
} from './components/geometry/geometry.js'; | |
import { | |
createRenderer | |
} from './systems/renderer.js'; | |
import { | |
Resizer | |
} from './systems/Resizer.js'; | |
import { | |
Loop | |
} from './systems/Loop.js'; | |
let camera; | |
let renderer; | |
let scene; | |
let loop; | |
class World { | |
constructor(container) { | |
camera = createCamera(0, 1); | |
renderer = createRenderer(); | |
scene = createScene(); | |
container.append(renderer.domElement); | |
const { | |
ambientLight, | |
mainLight | |
} = createLights(); | |
scene.add(ambientLight, mainLight); | |
loop = new Loop(camera, scene, renderer, new FaceTracker()); | |
const resizer = new Resizer(container, camera, renderer, loop); | |
} | |
async init() { | |
const object = await loadObjects(); | |
if (typeof (object.tick) == "function") { | |
loop.updatables.push(object); | |
} | |
scene.add(object); | |
await loop.init(); | |
} | |
render() { | |
renderer.render(scene, camera); | |
} | |
start() { | |
loop.start(); | |
} | |
stop() { | |
loop.stop(); | |
} | |
} | |
export { | |
World | |
}; |