import { Env, TypeEntity } from "./Env.js"; import { Plane } from "./Plane.js"; import { Player } from "./Player.js"; import { Quality } from "./utils.js"; window.addEventListener("load", () => main()); const main = () => { // THREE.js const env = new Env(); document.body.appendChild(env.getDomElement()); // World const plan = new Plane( window.innerWidth / 50, 10, THREE.Color.NAMES.white, THREE.Color.NAMES.black ); env.addToScene(plan); // Player const player = new Player(THREE.Color.NAMES.red); env.addToScene(player, TypeEntity.player); addEventListener("keypress", player.controlUser); // GUI const gui = new dat.gui.GUI({ closeOnTop: true }); const menu = Quality.buildGUI(env.quality); for (const quality in menu) { gui.add(menu, quality) .listen() .onFinishChange(() => { Quality.update(env.setQuality, menu, quality); }); } /** * Run the game */ const animate = () => { const delta = env.clock.getDelta(); const ticks = Math.round(delta / (1 / 120)); for (let i = 0; i < ticks; i++) { env.update(); } requestAnimationFrame(animate); }; // Run it animate(); };