See raw JS.
const MUSICFILE = '/uploads/sam007/alien-spaceship_daniel_simion.mp3'; AB.backgroundMusic ( MUSICFILE ); // var audio; // audio = new Audio ( "uploads/sam007/alien-spaceship_daniel_simion.mp3" ); // audio = new Audio ( "/uploads/codingtrain/steam-train-whistle-daniel_simon.mp3" ); //audio.loop = true; // audio.play(); // make an array of random (x,y,z) positions const noboxes = 30; // how many boxes to have var a = new Array(noboxes); // array of the box positions for ( var i=0; i < noboxes; i++ ) // set up the array { a[i] = [ AB.randomIntAtoB(-500,500), AB.randomIntAtoB(-500,500), AB.randomIntAtoB(-500,500) ]; } // Cloned by Shamsul Abedin on 26 Oct 2019 from World "One Cube World (P5)" by Starter user // Please leave this clone trail here. const objectsize = 150; // size of object const anglechange = 0.02; // how much the rotate angle changes each step var angle = 0; // rotate angle starts at 0 var img; function preload() { img = loadImage ( "/uploads/sam007/download.jpg" ); } function setup() // "setup" is called once at start of run { createCanvas ( ABWorld.fullwidth(), ABWorld.fullheight(), WEBGL ); } function draw() // "draw" is called every timestep during run { background("green"); // background color // fill("red"); // paint box with this color texture(img); rotateX(angle); // set each dimension rotation angle to "angle" rotateY(angle); rotateZ(angle); box(objectsize); // draw a cube of this size for ( var i=0; i < noboxes; i++ ) { translate ( a[i][0], a[i][1], a[i][2] ); // get box position i box(objectsize); } angle = angle + anglechange ; // change angle each step to get rotate movement }