Code viewer for World: Spaghett (clone by Pavan K...

// Cloned by Pavan Kirageri on 2 Oct 2021 from World "Spaghett" by Theo Delettre 
// Please leave this clone trail here.
 


// Cloned by Theo Delettre on 30 Sep 2021 from World "One Cube World (P5)" by Starter user 
// Please leave this clone trail here.
const universeSize = 800;
 
const objectsize    = 50;      // size of object   

const anglechange   = 0.002;     // how much the rotate angle changes each step 

var angle = 0;                  // rotate angle starts at 0  

var img;

// make an array of random (x,y,z) positions 

const noboxes = 500;                 	// how many boxes to have 
var a = new Array(noboxes);         	// array of the box positions
var b = new Array(noboxes);
var c = new Array(noboxes);
var d = new Array(noboxes);

 //const MUSICFILE = '/uploads/theonogo/MickGordon-BFGDivision1.mp3';
 //AB.backgroundMusic ( MUSICFILE );

var mover = new Array(noboxes);

for ( var i=0; i < noboxes; i++ )   	// set up the array
{
    a[i] = [ AB.randomIntAtoB(-20,20), AB.randomIntAtoB(-20,20), AB.randomIntAtoB(-20,20)];
    b[i] = [ AB.randomIntAtoB(2,40), AB.randomIntAtoB(2,40), AB.randomIntAtoB(2,40), AB.randomIntAtoB(6, 16), AB.randomIntAtoB(3,12)];
    c[i] = AB.randomIntAtoB(0, 2);
    d[i] = [ AB.randomFloatAtoB(-0.5,0.5), AB.randomFloatAtoB(-0.5,0.5), AB.randomFloatAtoB(-0.5,0.5)]
    
}	


function setup()        // "setup" is called once at start of run 
{
  createCanvas ( ABWorld.fullwidth(), ABWorld.fullheight(),  WEBGL );
  img = loadImage('/uploads/theonogo/1632994832.png');
  
  
}

function draw()         // "draw" is called every timestep during run 
{
    background("LightSteelBlue");    // background color 
    texture(img);
           
    //rotateX(-angle/10);             // set each dimension rotation angle to "angle"
    rotateY(angle);
    //rotateZ(angle/10);
    
    for ( var i=0; i < noboxes; i++ )
    {
        mover = [ AB.randomFloatAtoB(-0.02,0.02), AB.randomFloatAtoB(-0.02,0.02), AB.randomFloatAtoB(-0.02,0.02) ]
        
        d[i] = [ mover[0] + d[i][0], mover[1] + d[i][1], mover[2] + d[i][2] ]; 
        
        a[i] = [ a[i][0] + d[i][0], a[i][1] + d[i][1], a[i][2] + d[i][2] ]; 
        
        translate ( borderProtect(a[i][0]), borderProtect(a[i][1]), borderProtect(a[i][2]) );		// get box position i
        //translate ( 0, borderProtect(a[i][1]), 0 );		// get box position i
        
        switch(c[i]) {
            case 0:
                box(b[i][0], b[i][1], b[i][2]);
                break;
            case 1:
                sphere(b[i][0]/2, b[i][3],b[i][4] );
                break;
            default:
                cone(b[i][0],b[i][1], b[i][3],b[i][4] );   
        }
        
        
        translate ( -borderProtect(a[i][0]), -borderProtect(a[i][1]), -borderProtect(a[i][2]) );
        //translate ( 0, borderProtect(a[i][1]), 0 );		// get box position i
    }

    angle = angle + anglechange ;       // change angle each step to get rotate movement
}

function borderProtect(x){
    m5 = (x/universeSize|0) %2;
    m10 = (x/(universeSize*2)|0) %2;
    res = x%universeSize;
    
    if(x>universeSize){
        if (m5 === 1){
            res = universeSize - res;
        }
        
        if(m10 === 1){
            res = -res;
        }
    } else if(x<-universeSize){
        if( abs(m5) === 1 ){
            res = -universeSize - res;
        }
        
        if(abs(m10) === 1){
            res = -res;
        }
    } else {
        
    }
    
    return res;
}