1 module prova.collision.rectcollider;
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 RectCollider : Collider2D
12 {
13   ///
14   float width;
15   ///
16   float height;
17 
18   ///
19   this(float width, float height)
20   {
21     super(Shape.RECTANGLE);
22     this.width = width;
23     this.height = height;
24   }
25 
26   ///
27   override Vector2 getSize()
28   {
29     return Vector2(width, height);
30   }
31 
32   ///
33   override bool intersects(RectCollider collider)
34   {
35     return rectIntersectsRect(this, collider);
36   }
37 
38   ///
39   override bool intersects(CircleCollider collider)
40   {
41     return circleIntersectsRect(collider, this);
42   }
43 
44   ///
45   override bool intersects(PointCollider collider)
46   {
47     return pointIntersectsRect(collider, this);
48   }
49 
50   alias intersects = Collider2D.intersects;
51 
52   ///
53   override Vector2 resolve(PointCollider collider)
54   {
55     return -resolvePointRect(collider, this);
56   }
57 
58   ///
59   override Vector2 resolve(CircleCollider collider)
60   {
61     return -resolveCircleRect(collider, this);
62   }
63 
64   ///
65   override Vector2 resolve(RectCollider collider)
66   {
67     return resolveRectRect(this, collider);
68   }
69 
70   alias resolve = Collider2D.resolve;
71 }