JSFiddle - React, Tailwind, and code Playground
by XGundam05
JavaScript
var RefValue = function(value){
this.val = value;
};
VoxelChunk.prototype.GetAOValue = function(x,y,z,direction){
var X,Y,Z,W,D,H;
var wInit, hInit;
var wFin, hFin;
var wDiff, hDiff, wCheck, hCheck;
X = new RefValue(x); Y = new RefValue(y); Z = new RefValue(z);
switch(direction){
case 'FRONT':
W = X;
H = Y;
D = Z; D.val += 1;
wInit = W.val - 1; hInit = H.val + 1;
wFin = W.val + 1; hFin = H.val - 1;
wDiff = 1; hDiff = -1;
wCheck = function(val, final){ return val <= final; };
hCheck = function(val, final){ return val >= final; };
break;
}
var value = 0;
var i = 0;
for(; hCheck(H.val, hFin); H.val += hDiff){
for(; wCheck(W.val, wFin); W.val += wDiff){
if(this.voxels[X.val + (Y.val * this.width) + (Z.val * this.width * this.height)] != 0x00
&& !(W.val == wInit + wDiff && H.val == hInit + hDiff)){
value += 0x01 << i;
}
if(!(W.val == wInith + wDiff && H.val == hInit + hDiff))
i++;
}
}
return value;
};
VoxelChunk.prototype.GetVertexAO = function(val, vertex){
var tmp = val;
var value = 0;
switch(vertex){
case 'UPPERRIGHT':
tmp = tmp >> 1;
case 'UPPERLEFT':
for(var i = 0; i < 3; i++){
tmp = tmp >> i;
value += tmp & 0x01;
}
break;
case 'LOWERLEFT':
tmp = tmp << 1;
case 'LOWERRIGHT':
for(var i = 0; i < 3; i++){
tmp = tmp << i;
value += (tmp & 0x80) >> 7;
}
}
return value;
};