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

Revision 4753, 2.8 KB checked in by dezhidki, 6 years ago (diff)
  • Lisätty kunnon ohjeet.
  • Ctrl + RMouse toimii nyt kunnolla (voi valita monta kerrallaan).
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 BoundingRectangle(Point p0, Point p1, BoundingRectangleOwner owner)
20        {
21            this.owner = owner;
22            this.x0 = p1.X < p0.X ? p1.X : p0.X;
23            this.z0 = p1.Y < p0.Y ? p1.Y : p0.Y;
24            this.x1 = p1.X > p0.X ? p1.X : p0.X;
25            this.z1 = p1.Y > p0.Y ? p1.Y : p0.Y;
26        }
27
28        public float XLeft { get { return x0; } }
29
30        public float XRight { get { return x1; } }
31
32        public float ZFar { get { return z0; } }
33
34        public float ZNear { get { return z1; } }
35
36        public BoundingRectangleOwner Owner { get { return owner; } }
37
38        public BoundingRectangle Update(float x0, float z0, float x1, float z1)
39        {
40            this.x0 = x0;
41            this.z0 = z0;
42            this.x1 = x1;
43            this.z1 = z1;
44
45            return this;
46        }
47
48        public bool Intersects(float x0, float z0, float x1, float z1)
49        {
50            if (x0 >= this.x1 || x1 <= this.x0 || z0 >= this.z1 || z1 <= this.z0) return false;
51            return true;
52        }
53
54        public bool Intersects(BoundingRectangle br)
55        {
56            return Intersects(br.x0, br.z0, br.x1, br.z1);
57        }
58
59        public BoundingRectangle AddSelf(float x0, float z0, float x1, float z1)
60        {
61            this.x0 += x0;
62            this.z0 += z0;
63            this.x1 += x1;
64            this.z1 += z1;
65
66            return this;
67        }
68
69        public BoundingRectangle AddSelf(BoundingRectangle br)
70        {
71            this.x0 += br.x0;
72            this.z0 += br.z0;
73            this.x1 += br.x1;
74            this.z1 += br.z1;
75
76            return this;
77        }
78
79        public BoundingRectangle Translate(Vector2 vec)
80        {
81            this.x0 += vec.X;
82            this.z0 += vec.Y;
83            this.x1 += vec.X;
84            this.z1 += vec.Y;
85
86            return this;
87        }
88
89        public static BoundingRectangle operator +(BoundingRectangle br, Vector2 vec)
90        {
91            return new BoundingRectangle(br.x0 + vec.X, br.z0 + vec.Y, br.x1 + vec.X, br.z1 + vec.Y, br.owner);
92        }
93
94        public BoundingRectangle Scale(float s)
95        {
96            this.x0 *= s;
97            this.z0 *= s;
98            this.x1 *= s;
99            this.z1 *= s;
100
101            return this;
102        }
103    }
104}
Note: See TracBrowser for help on using the repository browser.