Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches
SpriteViewMatrix.cs
Go to the documentation of this file.
3
4namespace Terraria.Graphics;
5
6public class SpriteViewMatrix
7{
9
11
13
15
17
19
21
23
25
27
28 private bool _needsRebuild = true;
29
31 {
32 get
33 {
34 return _zoom;
35 }
36 set
37 {
38 if (_zoom != value)
39 {
40 _zoom = value;
41 _needsRebuild = true;
42 }
43 }
44 }
45
47 {
48 get
49 {
50 if (ShouldRebuild())
51 {
52 Rebuild();
53 }
54 return _translation;
55 }
56 }
57
59 {
60 get
61 {
62 if (ShouldRebuild())
63 {
64 Rebuild();
65 }
66 return _zoomMatrix;
67 }
68 }
69
71 {
72 get
73 {
74 if (ShouldRebuild())
75 {
76 Rebuild();
77 }
79 }
80 }
81
83 {
84 get
85 {
86 if (ShouldRebuild())
87 {
88 Rebuild();
89 }
91 }
92 }
93
94 public SpriteEffects Effects
95 {
96 get
97 {
98 return _effects;
99 }
100 set
101 {
102 if (_effects != value)
103 {
104 _effects = value;
105 _needsRebuild = true;
106 }
107 }
108 }
109
111 {
112 get
113 {
114 if (ShouldRebuild())
115 {
116 Rebuild();
117 }
118 return _effectMatrix;
119 }
120 }
121
122 public SpriteViewMatrix(GraphicsDevice graphicsDevice)
123 {
124 _graphicsDevice = graphicsDevice;
125 }
126
127 private void Rebuild()
128 {
130 {
132 }
134 Matrix identity = Matrix.Identity;
135 if (_effects.HasFlag(SpriteEffects.FlipHorizontally))
136 {
137 identity *= Matrix.CreateScale(-1f, 1f, 1f) * Matrix.CreateTranslation(vector.X, 0f, 0f);
138 }
139 if (_effects.HasFlag(SpriteEffects.FlipVertically))
140 {
141 identity *= Matrix.CreateScale(1f, -1f, 1f) * Matrix.CreateTranslation(0f, vector.Y, 0f);
142 }
143 Vector2 vector2 = vector * 0.5f;
144 Vector2 translation = vector2 - vector2 / _zoom;
145 Matrix matrix = Matrix.CreateOrthographicOffCenter(0f, vector.X, vector.Y, 0f, 0f, 1f);
146 _translation = translation;
147 _zoomMatrix = Matrix.CreateTranslation(0f - translation.X, 0f - translation.Y, 0f) * Matrix.CreateScale(_zoom.X, _zoom.Y, 1f);
148 _effectMatrix = identity;
151 _needsRebuild = false;
152 }
153
154 public void SetViewportOverride(Viewport viewport)
155 {
156 _viewport = viewport;
158 }
159
161 {
163 }
164
165 private bool ShouldRebuild()
166 {
167 if (!_needsRebuild)
168 {
170 {
172 {
173 return _graphicsDevice.Viewport.Height != _viewport.Height;
174 }
175 return true;
176 }
177 return false;
178 }
179 return true;
180 }
181}
SpriteViewMatrix(GraphicsDevice graphicsDevice)
void SetViewportOverride(Viewport viewport)
static Matrix CreateOrthographicOffCenter(float left, float right, float bottom, float top, float zNearPlane, float zFarPlane)
Definition Matrix.cs:1054
static Matrix Invert(Matrix matrix)
Definition Matrix.cs:1694
static Matrix CreateTranslation(Vector3 position)
Definition Matrix.cs:438
static Matrix CreateScale(float xScale, float yScale, float zScale)
Definition Matrix.cs:522