init
function init()
{
var canvas = document.getElementById('blob');
if(canvas.getContext == null)
{
alert("You need Firefox version 1.5 or higher for this to work, sorry.");
return;
}
document.onkeydown = function(event)
{
var keyCode;
if(event == null)
{
keyCode = window.event.keyCode;
}
else
{
keyCode = event.keyCode;
}
switch(keyCode)
{
// left
case 37:
blobColl.addForce(new Vector(-50.0, 0.0));
break;
// up
case 38:
blobColl.addForce(new Vector(0.0, -50.0));
break;
// right
case 39:
blobColl.addForce(new Vector(50.0, 0.0));
break;
// down
case 40:
blobColl.addForce(new Vector(0.0, 50.0));
break;
// join 'j'
case 74:
blobColl.join();
break;
// split 'h'
case 72:
blobColl.split();
break;
// toggle gravity 'g'
case 71:
toggleGravity();
break;
default:
break;
}
}
function getMouseCoords(event)
{
if(event == null)
{
event = window.event;
}
if(event == null)
{
return null;
}
if(event.pageX || event.pageY){
return {x:event.pageX / scaleFactor, y:event.pageY / scaleFactor};
}
return null;
}
document.onmousedown = function(event)
{
var mouseCoords;
if(stopped == true)
{
return;
}
mouseCoords = getMouseCoords(event);
if(mouseCoords == null)
{
return;
}
selectOffset = blobColl.selectBlob(mouseCoords.x, mouseCoords.y);
}
document.onmouseup = function(event)
{
blobColl.unselectBlob();
savedMouseCoords = null;
selectOffset = null;
}
document.onmousemove = function(event)
{
var mouseCoords;
if(stopped == true)
{
return;
}
if(selectOffset == null)
{
return;
}
mouseCoords = getMouseCoords(event);
if(mouseCoords == null)
{
return;
}
blobColl.selectedBlobMoveTo(mouseCoords.x - selectOffset.x, mouseCoords.y - selectOffset.y);
savedMouseCoords = mouseCoords;
}
env = new Environment(0.2, 0.2, 2.6, 1.6);
blobColl = new BlobCollective(1.0, 1.0, 1, 200);
gravity = new Vector(0.0, 10.0);
stopped = false;
timeout();
}