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;
};