1 module prova.collision.circlecollider; 2 3 import prova.collision, 4 prova.collision.intersects, 5 prova.collision.resolve, 6 prova.core, 7 prova.graphics, 8 prova.math; 9 10 /// 11 class CircleCollider : Collider2D 12 { 13 /// 14 float radius; 15 16 /// 17 this(float radius) 18 { 19 super(Shape.CIRCLE); 20 this.radius = radius; 21 } 22 23 /// 24 override Vector2 getSize() 25 { 26 return Vector2(radius * 2, radius * 2); 27 } 28 29 /// 30 override bool intersects(PointCollider collider) 31 { 32 return pointIntersectsCircle(collider, this); 33 } 34 35 /// 36 override bool intersects(CircleCollider collider) 37 { 38 return circleIntersectsCircle(this, collider); 39 } 40 41 /// 42 override bool intersects(RectCollider collider) 43 { 44 return circleIntersectsRect(this, collider); 45 } 46 47 alias intersects = Collider2D.intersects; 48 49 /// 50 override Vector2 resolve(PointCollider collider) 51 { 52 return -resolvePointCircle(collider, this); 53 } 54 55 /// 56 override Vector2 resolve(CircleCollider collider) 57 { 58 return resolveCircleCircle(this, collider); 59 } 60 61 /// 62 override Vector2 resolve(RectCollider collider) 63 { 64 return resolveCircleRect(this, collider); 65 } 66 67 alias resolve = Collider2D.resolve; 68 }