Code viewer for World: XYZ



// not using these - actually user controlled 

const	 	CLOCKTICK 	= 100;				// speed of run - move things every n milliseconds
const		MAXSTEPS 	= 1000;				// length of a run before final score
 



const objectsize = 300 ;

const MAXPOS                = 4000 ;                                 
const startRadiusConst	 	= MAXPOS * 0.5 ;		// distance from centre to start the camera at
const maxRadiusConst 		= MAXPOS * 5 ;		// maximum distance from camera we will render things  


const SKYCOLOR 	= 1000;				// a number, not a string 
 



function randomfloatAtoB ( A, B )			 
{
 return ( A + ( Math.random() * (B-A) ) );
}

function randomintAtoB ( A, B )			 
{
 return  ( Math.round ( randomfloatAtoB ( A, B ) ) );
}
  




function World() { 

var x, y, z;        // current location 

var textureArray;




function init()		 
{
    
   textureArray = [
 	( new THREE.ImageUtils.loadTexture( "/uploads/starter/minecraft.1.jpg" ) ),
 	( new THREE.ImageUtils.loadTexture( "/uploads/starter/minecraft.2.jpg" ) )
 	];
 	
 for ( var i = 0; i < textureArray.length; i++ )    // for all textures 
 { 
    textureArray[i].minFilter = THREE.LinearFilter;
 }
 
 
     // create one box to start 
     
  	var shape = new THREE.BoxGeometry( objectsize, objectsize, objectsize );
  	var theobject  = new THREE.Mesh( shape );

  	theobject.position.x = 0;     	
  	theobject.position.z = 0;     	
  	theobject.position.y = 0;  	
 
  x = theobject.position.x;     // current position
  y = theobject.position.y;
  z = theobject.position.z;
 
 	threeworld.scene.add(theobject);
    paintThis ( theobject );
    
    // 1. fiddle with x y z values here to understand x,y,z system
    
         shape = new THREE.BoxGeometry( objectsize, objectsize, objectsize );
  	  theobject  = new THREE.Mesh( shape );

 	theobject.position.x = objectsize * 2;     	
  	theobject.position.z = randomintAtoB(1,1000);     	
  	theobject.position.y = 300;  	
 
 	threeworld.scene.add(theobject);
    paintThis ( theobject );
    
    
    // 2. each time round the loop, give the new box a new x,y,z position
    // using randomintAtoB

 for (   i = 1; i <= 1000; i++ )     // do this 100 times
 {
      shape = new THREE.BoxGeometry( objectsize, objectsize, objectsize );
  	  theobject  = new THREE.Mesh( shape );

 	theobject.position.x = randomintAtoB(-10000,10000);     	
  	theobject.position.z = randomintAtoB(-10000,10000);     	
  	theobject.position.y = randomintAtoB(-10000,1);  	
 
 	threeworld.scene.add(theobject);
    paintThis ( theobject );
 }
}



  function handleKeyDown (event)
  {
   	    var shape = new THREE.BoxGeometry( objectsize, objectsize, objectsize );
  	var theobject  = new THREE.Mesh( shape );

  theobject.position.x = x;     // default position is current position - going to then move it 
  theobject.position.y = y;
  theobject.position.z = z;
 
  var code = event.keyCode;
  if (code == 37)  theobject.position.x = x - objectsize ;   // left
  if (code == 39)  theobject.position.x = x + objectsize ;   // right
 
  if (code == 38) theobject.position.z = z - objectsize ;   // forward
  if (code == 40) theobject.position.z = z + objectsize ;   // back 
  
  if (code == 34) theobject.position.y = y - objectsize ;   
  if (code == 33) theobject.position.y = y + objectsize ; 
  
  x = theobject.position.x;     // current position is now this 
  y = theobject.position.y;
  z = theobject.position.z;
 
// console.log ( "(x,y,z) = (" + x + "," + y + "," + z + ")" );
 
// threeworld.lookat.copy ( theobject.position );	
 
 	threeworld.scene.add(theobject);
      paintThis ( theobject );
      
      // sound effect credit:
      // http://soundbible.com/1399-Chambering-A-Round.html
        var audio = new Audio('/uploads/starter/chamber.mp3');
        audio.play();

 }
  



function paintThis( object )        // paint objects with random textures 
{
        var t = randomintAtoB ( 0, textureArray.length - 1 );     // random texture 
    
        object.material =  new THREE.MeshBasicMaterial ( { map: textureArray[t] } );   
}






	this.endCondition;			 


this.newRun = function() 
{
  this.endCondition = false;

  threeworld.init3d ( startRadiusConst, maxRadiusConst, SKYCOLOR  ); 

 var s = "<center> <h2> User controlled. Use arrow keys and PgUp, PgDn to draw. </h2> </center>";
 	$("#user_span2").html( s );


 	  init();
	   
document.addEventListener( 'keydown', handleKeyDown   );

};



this.getState = function()
{
  return ( null );  
};


this.takeAction = function ( a )
{
};


this.endRun = function()
{
};


this.getScore = function()
{
 return 0;
};

}