JSFiddle - React, Tailwind, and code Playground
HTML
<script src="https://rawgit.com/BabylonJS/Babylon.js/v1.12/babylon.1.12.js"></script>
<script src="https://rawgit.com/kostar111/TiledGroundBJS/master/createTiledGround.js"></script>
<body>
<div id="rootDiv">
<canvas id="canvas_renderer"> </canvas>
</div>
</body>
CSS
html, body, div, canvas {
width: 100%;
height: 100%;
padding: 0;
margin: 0;
overflow: hidden;
}
JavaScript
// Scene initialization
var canvas, engine, scene, light, camera, invaderCoordinates;
init_scene();
////////////////////////////////////////////////////////////////////////
// Create tileGround
var xmin = -6.5;
var zmin = -5.5;
var xmax = 6.5;
var zmax = 5.5;
var precision = {
"w" : 1,
"h" : 1
};
var subdivisions = {
'h' : 11,
'w' : 13
};
var vData = createTiledGround(xmin, zmin, xmax, zmax, precision, subdivisions);
var ground = new BABYLON.Mesh("ground", scene);
vData.applyToMesh(ground);
////////////////////////////////////////////////////////////////////////
// Create Multi Material
var backgroundMaterial = new BABYLON.StandardMaterial("Background", scene);
backgroundMaterial.diffuseColor = new BABYLON.Color3(1, 1, 1);
var invadersMaterial = new BABYLON.StandardMaterial("Invader", scene);
invadersMaterial.diffuseColor = new BABYLON.Color3(0.6, 0, 0.6);
var multimat = new BABYLON.MultiMaterial("multi", scene);
multimat.subMaterials.push(backgroundMaterial);
multimat.subMaterials.push(invadersMaterial);
ground.material = multimat;
////////////////////////////////////////////////////////////////////////
// Apply Multi Material to the ground
ground.subMeshes = [];
var verticesCount = ground.getTotalVertices();
var tileIndicesLength = 6 * precision.w * precision.h;
var base = 0;
for (var row = 0; row < subdivisions.h; row++) {
for (var col = 0; col < subdivisions.w; col++) {
if (isInvaderPosition(col, row))
ground.subMeshes.push(new BABYLON.SubMesh(1, 0, verticesCount, base , tileIndicesLength, ground));
else
ground.subMeshes.push(new BABYLON.SubMesh(0, 0, verticesCount, base , tileIndicesLength, ground));
base += tileIndicesLength;
}
}
////////////////////////////////////////////////////////////////////////
// Render Loop
engine.runRenderLoop(function () {
scene.render();
});
////////////////////////////////////////////////////////////////////////
function init_scene(){
//...