Deletion

by Michael Prosser

JavaScript

var material1 = {
    	name: 'grass'
    };
var material2 = {
    	name: 'rock'
    };


var constellations = Array(
	{
  	points: Array(
    	{ x: 0, y: 0, z: 0 },
      { x: 1, y: 1, z: 1 },
      { x: 2, y: 0, z: 1 }
    ),
    material: material1
  },
  {
  	points: Array(
    	{ x: 1, y: 1, z: 0 },
      { x: 2, y: 2, z: 1 },
      { x: 3, y: 0, z: 2 }
    ),
    material: material2
  },
  {
  	points: Array(
    	{ x: 4, y: 4, z: 2 },
      { x: 3, y: 2, z: 3 },
      { x: 4, y: 4, z: 4 }
    ),
    material: material2
  }
)


var items = constellations;
		
		// get the unique materials of items and store them in an array;
		
colliderSpherical = function(player1,player2){
	
	// x,y,z,radius properties required on both subjects
	
	var distance = Math.sqrt(Math.pow(player2.x-player1.x,2) + Math.pow(player2.y-player1.y,2) + Math.pow(player2.z-player1.z,2));
		
	if((distance - (player1.radius + player2.radius)) < 0){
		
		return true;

	} else {

		return false;

	}

}



var materials = Array();
		
for(var i=0;i<items.length;i++){
			
			if(materials.indexOf(items[i].material.name) === -1){
				
				materials.push(items[i].material.name);
				
			}
	
}

console.log(materials);

var mergedGroups = Array();

var deletables = Array();

for(var j=0;j<materials.length;j++){

	mergedGroups[j] = Array();
		
			for(var i=0;i<items.length;i++){
      
      	if(materials[j] === items[i].material.name){
        
          var points = Array();

          var inDeletionGroup = false;

          var p = items[i].points[i];

          p.radius = 1;

          points.push(p);

          if(colliderSpherical({ x: 0,y: 0,z: 0, radius: 0.1} ,p)){

            inDeletionGroup = true;

            console.log("COLLISION!");

            deletables.push(items[i]);

          } else {

            mergedGroups[j].push(items[i]);

          }
        
        }

			}
				
			console.log("CREATE CONSTELLATION!");
      console.log("RENDERING...