Babylon.js - Espilit demo source

Back to demo

main.ts

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

runDemo({ createScene: createEspilitScene });

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 { Color3 } from "@babylonjs/core/Maths/math.color";
import { LoadSceneAsync } from "@babylonjs/core/Loading/sceneLoader";
import { RefractionPostProcess } from "@babylonjs/core/PostProcesses/refractionPostProcess";
import "@babylonjs/core/Loading/Plugins/babylonFileLoader";
import "@babylonjs/core/Engines/Extensions/engine.cubeTexture";
import "@babylonjs/core/Culling/Octrees/octreeSceneComponent";

export async function createEspilitScene(engine: Engine): Promise<Scene> {
    const scene = await LoadSceneAsync("/Scenes/Espilit/Espilit.binary.babylon", engine);
    scene.collisionsEnabled = true;
    scene.autoClear = true;
    scene.createOrUpdateSelectionOctree();
    const sol = scene.getMeshByName("Sol loin") as Mesh | null;
    if (sol) {
        sol.useVertexColors = false;
    }
    scene.gravity.scaleInPlace(0.5);
    if (scene.cameras.length > 1) {
        new RefractionPostProcess(
            "Refraction",
            "/Scenes/Customs/refMap.jpg",
            new Color3(1.0, 1.0, 1.0),
            0.5,
            0.5,
            1.0,
            scene.cameras[1]
        );
    }
    return scene;
}