JavaScript
var canvas,
engine,
scene,
camera,
boxSize = 4.0,
rowTileCount = 15, // The number of tiles in a row of our background
colTileCount = 20,
mazeWall = [],
mazeFloor = [],
mazeHeight = 60,
mazeWidth = 80,
sphere,
maze = [
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
[1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1],
[1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1],
[1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 1],
[1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 1],
[1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 1],
[1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 1],
[1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 1],
[1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 1],
[1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 1],
[1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 1],
[1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 2, 0, 1],
[1, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1],
[1, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1],
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]
];
document.addEventListener("DOMContentLoaded", function() {
if (BABYLON.Engine.isSupported()) {
initScene();
}
}, false);
window.addEventListener("resize", function () {
if (engine) {
engine.resize();
}
},false);
function initScene() {
/* Canvas, engine, scene, and lights */
canvas = document.getElementById("renderCanvas");
engine = new BABYLON.Engine(canvas, true);
scene = new BABYLON.Scene(engine);
oimo = new BABYLON.OimoJSPlugin()
scene.enablePhysics(new BABYLON.Vector3(0,-9.81,0), oimo);
var light = new BABYLON.PointLight("light", new BABYLON.Vector3(0 - (mazeWidth/2), 5, 0 - (mazeHeight/2)), scene);
var light2 = new BABYLON.PointLight("light", new BABYLON.Vector3((mazeWidth/2), 5, (mazeHeight/2)), scene);
/* Materials... all of them */
var materialSphere = new...