Cube in Babylon.js

Babylon.js Hispano

by realhunts

HTML

<script src="https://preview.babylonjs.com/recast.js"></script>
<script src="https://preview.babylonjs.com/babylon.max.js"></script>
 
<canvas id="main"></canvas>

CSS

html, body, canvas{
  margin: 0;
  padding: 0;
  width: 100%;
  height: 100%;
}

JavaScript

BABYLON.RecastJSPlugin.prototype.constructor = BABYLON.RecastJSPlugin;
        
BABYLON.RecastJSPlugin.prototype.createNavyMesh = function (meshes, parameters) {
        var rc = new this.bjsRECAST.rcConfig();
        rc.cs = parameters.cs;
        rc.ch = parameters.ch;
        rc.borderSize = 0;
        rc.tileSize = 0;
        rc.walkableSlopeAngle = parameters.walkableSlopeAngle;
        rc.walkableHeight = parameters.walkableHeight;
        rc.walkableClimb = parameters.walkableClimb;
        rc.walkableRadius = parameters.walkableRadius;
        rc.maxEdgeLen = parameters.maxEdgeLen;
        rc.maxSimplificationError = parameters.maxSimplificationError;
        rc.minRegionArea = parameters.minRegionArea;
        rc.mergeRegionArea = parameters.mergeRegionArea;
        rc.maxVertsPerPoly = parameters.maxVertsPerPoly;
        rc.detailSampleDist = parameters.detailSampleDist;
        rc.detailSampleMaxError = parameters.detailSampleMaxError;
        this.navMesh = new this.bjsRECAST.NavMesh();
        var index;
        var tri;
        var pt;
        var indices = [];
        var positions = [];
        var offset = 0;
        for (index = 0; index < meshes.length; index++) {
            if (meshes[index]) {
                var mesh = meshes[index];
                var meshIndices = mesh.getIndices();
                
                if (!meshIndices) {
                    continue;
                }
                var meshPositions = mesh.getVerticesData(BABYLON.VertexBuffer.PositionKind, false, false);
                  
                if (!meshPositions) {
                    continue;
                }
                var wm = mesh.computeWorldMatrix(false);
                for (tri = 0; tri < meshIndices.length; tri++) {
                    indices.push(meshIndices[tri] + offset);
                }
                var transformed = new BABYLON.Vector3.Zero();
                var position = new BABYLON.Vector3.Zero();
                for (pt = 0; pt...