// Cloned by Adesh 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;
}