LeUtilities.circleCircleCollision = function(circle1,circle2) {
var cx1 = this.getSpriteCenter(circle1).x;
var cy1 = this.getSpriteCenter(circle1).y;
var cx2 = this.getSpriteCenter(circle2).x;
var cy2 = this.getSpriteCenter(circle2).y;
var dx = cx1 - cx2;
var dy = cy1 - cy2;
var distance = Math.sqrt(dx * dx + dy * dy);
var radius1 = (circle1.width*circle1.scale.x)/2;
var radius2 = (circle2.width*circle2.scale.x)/2;
return (distance < radius1 + radius2);
};
LeUtilities.circleRectCollision = function(circle,rect)
{
var cx = this.getSpriteCenter(circle).x;
var cy = this.getSpriteCenter(circle).y;
var rx = this.getSpriteCenter(rect).x;
var ry = this.getSpriteCenter(rect).y;
var circleDistance_x = Math.abs(cx - rx);
var circleDistance_y = Math.abs(cy - ry);
var radius = (circle.width*circle.scale.x)/2;
if (circleDistance_x > (rect.width/2 + radius)) { return false; }
if (circleDistance_y > (rect.height/2 + radius)) { return false; }
if (circleDistance_x <= (rect.width/2)) { return true; }
if (circleDistance_y <= (rect.height/2)) { return true; }
var cornerDistance_sq = (circleDistance_x - rect.width/2)^2 +
(circleDistance_y - rect.height/2)^2;
return (cornerDistance_sq <= (radius^2));
};
LeUtilities.getSpriteCenter = function(sprite) {
var w = sprite.width*sprite.scale.x;
var h = sprite.height*sprite.scale.y;
return {
x: sprite.x + w/2 - sprite.anchor.x*w,
y: sprite.y + h/2 - sprite.anchor.y*h
};
};