// Cloned by Thomas Mc Cann on 16 Oct 2019 from World "One Cube World (P5) (clone by TMC)" by Thomas Mc Cann // Please leave this clone trail here.// Cloned by Thomas Mc Cann on 16 Oct 2019 from World "One Cube World (P5)" by Starter user // Please leave this clone trail here.var zoom =.4;var backGround;const MUSICFILE ="uploads/midnightsky/Interstellar.mp3";//const MUSICFILE = '/uploads/starter/SuspenseStrings.mp3';
AB.backgroundMusic(MUSICFILE);const objectsize =100;// size of object const anglechange =0.01;// how much the rotate angle changes each step var angle =0;// rotate angle starts at 0 var grow =0;var numboxes =100;var blackhole;var clickAllowed =false;var clickCount =0;var images =newArray(4);var boxPositions =newArray(numboxes);// array of the box positionsfor(var i=0; i < numboxes; i++)// set up the array{if(i%3===0){
boxPositions[i]=[ AB.randomIntAtoB(-200,200), AB.randomIntAtoB(-200,200), AB.randomIntAtoB(-200,200)];}else{
boxPositions[i]=[ AB.randomIntAtoB(200,-200), AB.randomIntAtoB(200,-200), AB.randomIntAtoB(200,-200)];}// boxPositions[i] = [ AB.randomIntAtoB(-200,200), AB.randomIntAtoB(-200,200), AB.randomIntAtoB(-200,200) ];}var boxSizes =newArray(numboxes);// array of the box positionsfor(var i=0; i < numboxes; i++)// set up the array{
boxSizes[i]= AB.randomIntAtoB(10,100);}function preload(){
images[0]= loadImage ("/uploads/midnightsky/synapse.jpg");
images[1]= loadImage ("/uploads/midnightsky/brain1.jpg");
images[2]= loadImage ("/uploads/midnightsky/synapses2.jpg");
images[3]= loadImage ("/uploads/midnightsky/brain2.jpg");
blackhole = loadImage ("/uploads/midnightsky/blackhole2.jpg");
backGround = loadImage ("/uploads/midnightsky/space1.jpg");}function setup()// "setup" is called once at start of run {
createCanvas (ABWorld.fullwidth(),ABWorld.fullheight(), WEBGL );
setTimeout(function(){clickAllowed =true; console.log("\n\n4 minutes have passed.\nYou may now try clicking...... to peel away space and time.")},240000);// Change 240000 to 100 to allow instance clicking
setTimeout(function(){console.log("\n\n1 minute has passed")},60000);
setTimeout(function(){console.log("\n\n2 minutes have passed\nSpace and time are collapsing.")},120000);
setTimeout(function(){console.log("\n\n3 minutes have passed\nYou move inside the tesseract, lost in between space and time. ")},180000);
AB.msg ("<p>Press <strong>F12 to view console!!</strong></p><p>Then try clicking and check the console</p><p>Or cheat and press <strong>z</strong> to cycle zoom levels or the <strong>space</strong> bar to allow instant clicking</p> ");}function draw()// "draw" is called every timestep during run {
scale(zoom - grow/1500);//background("#292b47"); // background color #0c4f66 #114152 #5a6a70 #0c0d1c #034b66 #242863 #292b47
background(0);/*texture(backGround);
box(screen.width*(zoom - grow/1500),screen.height*(zoom - grow/1500));*/
rotateX(angle);// set each dimension rotation angle to "angle"
rotateY(angle);
rotateZ(angle);//texture(images[0]); for(var i=0; i < numboxes; i++){if(i ===0){
texture(blackhole);//translate( boxPositions[i][0], boxPositions[i][1], boxPositions[i][2] ); // get box position i
box(boxSizes[i]+grow);}elseif(i ===1){
texture(images[1]);
box(boxSizes[i-1]+(grow*1.2));}else{
texture(images[i%4]);
translate( boxPositions[i][0], boxPositions[i][1], boxPositions[i][2]);// get box position i
box(boxSizes[i]+grow);}}
angle = angle + anglechange ;// change angle each step to get rotate movement
grow = grow +.3;// Grow cubes by 30%}// mousePressed function // Excuse the state of this code. It's needs a tidy.function mousePressed(){if(numboxes >1&& clickAllowed ===true){
clickCount++;
numboxes--;if(numboxes ==1){
console.clear();
console.log("\n\n\n\n\nIt's just you and nothing now.... floating in space, staring in to the event horizon.");}else{if(clickCount >78){
console.log("Slow down a little and enjoy the journey but keep clicking....You are nearly there.");}else{
console.log("Keep clicking.....");}}}elseif(clickAllowed ===true){
console.clear();
console.log("\n\n\n\n\nIt's just you and nothing now.... floating in space, staring in to the event horizon.");}else{//console.clear();
console.log("\n\nYou must wait and go on a journey.....\nRelax and watch as space and time collapse.\nYou will see when the time is right.");}}
document.addEventListener("keypress", magicBypass);// Bypass the wait time and change zoom/scale level to allow instance clicking and viewing from differnt perspectives// space bar press allows clicking which reduces the number of cubes// z will change the zoom cycling through 9 different scale levels from (from deafult .3 to 1,2,3,4,5,6,7,8) - 7/8 should be inside the event horizonconst zoomMin =1;const zoomMax =7;function magicBypass(e){var key = event.which || event.keyCode;// Use either which or keyCode, depending on browser supportif(key ==32){
clickAllowed =true;
console.log("You pressed the magic 'space bar' key. You can now click anytime.");
AB.msg ("<p>Clicking reduces the number of cubes by 1. <strong>You can't remove the last special cube</strong>.</p><Pressing z will cycle through 8 zoom levels.</p>");}elseif(key ==122){//console.clear();
console.log("You pressed the magic key. Press 'z' key. Use 'z' to change your perspective.");
AB.msg ("</p>Pressing z will cycle through <strong>8</strong> zoom levels. <strong></p><p>CURRENT ZOOM LEVEL: "+ zoom +"</strong><p>Clicking reduces the number of cubes by 1. <strong>You can't remove the last special cube</strong>.</p>");if(zoom < zoomMin){
zoom =1;}elseif(zoom > zoomMax){
zoom =.3;}else{
zoom++;}}}