Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches

◆ BlurLine()

void Terraria.Graphics.Light.LightMap.BlurLine ( int startIndex,
int endIndex,
int stride )
inlineprivate

Definition at line 114 of file LightMap.cs.

115 {
116 Vector3 zero = Vector3.Zero;
117 bool flag = false;
118 bool flag2 = false;
119 bool flag3 = false;
120 for (int i = startIndex; i != endIndex + stride; i += stride)
121 {
122 if (zero.X < _colors[i].X)
123 {
124 zero.X = _colors[i].X;
125 flag = false;
126 }
127 else if (!flag)
128 {
129 if (zero.X < 0.0185f)
130 {
131 flag = true;
132 }
133 else
134 {
135 _colors[i].X = zero.X;
136 }
137 }
138 if (zero.Y < _colors[i].Y)
139 {
140 zero.Y = _colors[i].Y;
141 flag2 = false;
142 }
143 else if (!flag2)
144 {
145 if (zero.Y < 0.0185f)
146 {
147 flag2 = true;
148 }
149 else
150 {
151 _colors[i].Y = zero.Y;
152 }
153 }
154 if (zero.Z < _colors[i].Z)
155 {
156 zero.Z = _colors[i].Z;
157 flag3 = false;
158 }
159 else if (!flag3)
160 {
161 if (zero.Z < 0.0185f)
162 {
163 flag3 = true;
164 }
165 else
166 {
167 _colors[i].Z = zero.Z;
168 }
169 }
170 if (flag && flag3 && flag2)
171 {
172 continue;
173 }
174 switch (_mask[i])
175 {
176 case LightMaskMode.None:
177 if (!flag)
178 {
179 zero.X *= LightDecayThroughAir;
180 }
181 if (!flag2)
182 {
183 zero.Y *= LightDecayThroughAir;
184 }
185 if (!flag3)
186 {
187 zero.Z *= LightDecayThroughAir;
188 }
189 break;
190 case LightMaskMode.Solid:
191 if (!flag)
192 {
193 zero.X *= LightDecayThroughSolid;
194 }
195 if (!flag2)
196 {
197 zero.Y *= LightDecayThroughSolid;
198 }
199 if (!flag3)
200 {
201 zero.Z *= LightDecayThroughSolid;
202 }
203 break;
204 case LightMaskMode.Water:
205 {
206 float num = (float)_random.WithModifier((ulong)i).Next(98, 100) / 100f;
207 if (!flag)
208 {
209 zero.X *= LightDecayThroughWater.X * num;
210 }
211 if (!flag2)
212 {
213 zero.Y *= LightDecayThroughWater.Y * num;
214 }
215 if (!flag3)
216 {
217 zero.Z *= LightDecayThroughWater.Z * num;
218 }
219 break;
220 }
221 case LightMaskMode.Honey:
222 if (!flag)
223 {
224 zero.X *= LightDecayThroughHoney.X;
225 }
226 if (!flag2)
227 {
228 zero.Y *= LightDecayThroughHoney.Y;
229 }
230 if (!flag3)
231 {
232 zero.Z *= LightDecayThroughHoney.Z;
233 }
234 break;
235 }
236 }
237 }
FastRandom WithModifier(ulong modifier)
Definition FastRandom.cs:27

References Terraria.Graphics.Light.LightMap._colors, Terraria.Graphics.Light.LightMap._mask, Terraria.Graphics.Light.LightMap._random, Terraria.Graphics.Light.LightMap.LightDecayThroughAir, Terraria.Graphics.Light.LightMap.LightDecayThroughHoney, Terraria.Graphics.Light.LightMap.LightDecayThroughSolid, Terraria.Utilities.FastRandom.WithModifier(), Microsoft.Xna.Framework.Vector3.X, Microsoft.Xna.Framework.Vector3.Y, Microsoft.Xna.Framework.Vector3.Z, and Microsoft.Xna.Framework.Vector3.Zero.

Referenced by Terraria.Graphics.Light.LightMap.BlurPass().