Babylon.js - HillValley demo source

Back to demo

main.ts

import { runDemo } from "../shared/demoRunner";
import { createHillValleyScene } from "./scene";

runDemo({ createScene: createHillValleyScene });

scene.ts

import type { Engine } from "@babylonjs/core/Engines/engine";
import type { Scene } from "@babylonjs/core/scene";
import type { FreeCamera } from "@babylonjs/core/Cameras/freeCamera";
import { LoadSceneAsync } from "@babylonjs/core/Loading/sceneLoader";
import { SceneLoaderFlags } from "@babylonjs/core/Loading/sceneLoaderFlags";
import "@babylonjs/core/Loading/Plugins/babylonFileLoader";
import "@babylonjs/core/Engines/Extensions/engine.cubeTexture";
import "@babylonjs/core/Culling/Octrees/octreeSceneComponent";

export async function createHillValleyScene(engine: Engine): Promise<Scene> {
    SceneLoaderFlags.ForceFullSceneLoadingForIncremental = true;
    const scene = await LoadSceneAsync("/Scenes/hillvalley/HillValley.incremental.babylon", engine);
    scene.collisionsEnabled = false;
    scene.lightsEnabled = false;
    if (scene.activeCamera) {
        (scene.activeCamera as FreeCamera).applyGravity = true;
    }
    scene.createOrUpdateSelectionOctree();
    for (const material of scene.materials) {
        material.checkReadyOnEveryCall = false;
    }
    return scene;
}