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...