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...