Babylon.js - Flat 2009 demo source

Back to demo

main.ts

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

runDemo({ createScene: createFlat2009Scene });

scene.ts

import type { Engine } from "@babylonjs/core/Engines/engine";
import type { Scene } from "@babylonjs/core/scene";
import type { Mesh } from "@babylonjs/core/Meshes/mesh";
import type { StandardMaterial } from "@babylonjs/core/Materials/standardMaterial";
import { VideoTexture } from "@babylonjs/core/Materials/Textures/videoTexture";
import { LoadSceneAsync } from "@babylonjs/core/Loading/sceneLoader";
import "@babylonjs/core/Loading/Plugins/babylonFileLoader";
import "@babylonjs/core/Materials/Textures/mirrorTexture";
import "@babylonjs/core/Particles/particleSystemComponent";
import "@babylonjs/core/Culling/Octrees/octreeSceneComponent";

export async function createFlat2009Scene(engine: Engine): Promise<Scene> {
    const scene = await LoadSceneAsync("/Scenes/Flat2009/Flat2009.babylon", engine);
    scene.collisionsEnabled = true;

    const ecran = scene.getMeshByName("Ecran") as Mesh | null;
    if (ecran && ecran.material) {
        (ecran.material as StandardMaterial).diffuseTexture = new VideoTexture(
            "video",
            ["/Scenes/Flat2009/babylonjs.mp4", "/Scenes/Flat2009/babylonjs.webm"],
            scene,
            true,
            true
        );
    }

    scene.createOrUpdateSelectionOctree();
    scene.gravity.scaleInPlace(0.5);

    return scene;
}