source: 2013/30/DenisZ/CastleMaster/CastleMaster/CastleMaster/Physics/BoundingRectangle.cs @ 4550

Revision 4550, 2.0 KB checked in by dezhidki, 6 years ago (diff)

Talletus.

Line 
1
2using Microsoft.Xna.Framework;
3namespace CastleMaster.Physics
4{
5    public class BoundingRectangle
6    {
7        private float x0, z0, x1, z1;
8        private BoundingRectangleOwner owner;
9
10        public BoundingRectangle(float x0, float z0, float x1, float z1, BoundingRectangleOwner owner)
11        {
12            this.owner = owner;
13            this.x0 = x0;
14            this.z0 = z0;
15            this.x1 = x1;
16            this.z1 = z1;
17        }
18
19        public float XLeft { get { return x0; } }
20
21        public float XRight { get { return x1; } }
22
23        public float ZFar { get { return z0; } }
24
25        public float ZNear { get { return z1; } }
26
27        public BoundingRectangleOwner Owner { get { return owner; } }
28
29        public BoundingRectangle Update(float x0, float z0, float x1, float z1)
30        {
31            this.x0 = x0;
32            this.z0 = z0;
33            this.x1 = x1;
34            this.z1 = z1;
35
36            return this;
37        }
38
39        public bool Intersects(float x0, float z0, float x1, float z1)
40        {
41            if (x0 >= this.x1 && x1 <= this.x0 && z0 >= this.z1 && z1 <= this.z0) return false;
42            return true;
43        }
44
45        public bool Intersects(BoundingRectangle br)
46        {
47            return Intersects(br.x0, br.z0, br.x1, br.z1);
48        }
49
50        public BoundingRectangle AddSelf(float x0, float z0, float x1, float z1)
51        {
52            this.x0 += x0;
53            this.z0 += z0;
54            this.x1 += x1;
55            this.z1 += z1;
56
57            return this;
58        }
59
60        public BoundingRectangle AddSelf(BoundingRectangle br)
61        {
62            this.x0 += br.x0;
63            this.z0 += br.z0;
64            this.x1 += br.x1;
65            this.z1 += br.z1;
66
67            return this;
68        }
69
70        public static BoundingRectangle operator +(BoundingRectangle br, Vector2 vec)
71        {
72            return new BoundingRectangle(br.x0 + vec.X, br.z0 + vec.Y, br.x1 + vec.X, br.z1 + vec.Y, br.owner);
73        }
74    }
75}
Note: See TracBrowser for help on using the repository browser.