Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches
ReflectiveArmorShaderData.cs
Go to the documentation of this file.
5
7
9{
10 public ReflectiveArmorShaderData(Ref<Effect> shader, string passName)
11 : base(shader, passName)
12 {
13 }
14
15 public override void Apply(Entity entity, DrawData? drawData)
16 {
17 if (entity == null)
18 {
19 base.Shader.Parameters["uLightSource"].SetValue(Vector3.Zero);
20 }
21 else
22 {
23 float num = 0f;
24 if (drawData.HasValue)
25 {
26 num = drawData.Value.rotation;
27 }
28 Vector2 position = entity.position;
29 float num2 = entity.width;
30 float num3 = entity.height;
31 Vector2 vector = position + new Vector2(num2, num3) * 0.1f;
32 num2 *= 0.8f;
33 num3 *= 0.8f;
34 Vector3 subLight = Lighting.GetSubLight(vector + new Vector2(num2 * 0.5f, 0f));
35 Vector3 subLight2 = Lighting.GetSubLight(vector + new Vector2(0f, num3 * 0.5f));
36 Vector3 subLight3 = Lighting.GetSubLight(vector + new Vector2(num2, num3 * 0.5f));
37 Vector3 subLight4 = Lighting.GetSubLight(vector + new Vector2(num2 * 0.5f, num3));
38 float num4 = subLight.X + subLight.Y + subLight.Z;
39 float num5 = subLight2.X + subLight2.Y + subLight2.Z;
40 float num6 = subLight3.X + subLight3.Y + subLight3.Z;
41 float num7 = subLight4.X + subLight4.Y + subLight4.Z;
42 Vector2 spinningpoint = new Vector2(num6 - num5, num7 - num4);
43 float num8 = spinningpoint.Length();
44 if (num8 > 1f)
45 {
46 num8 = 1f;
47 spinningpoint /= num8;
48 }
49 if (entity.direction == -1)
50 {
51 spinningpoint.X *= -1f;
52 }
53 spinningpoint = spinningpoint.RotatedBy(0f - num);
54 Vector3 value = new Vector3(spinningpoint, 1f - (spinningpoint.X * spinningpoint.X + spinningpoint.Y * spinningpoint.Y));
55 value.X *= 2f;
56 value.Y -= 0.15f;
57 value.Y *= 2f;
58 value.Normalize();
59 value.Z *= 0.6f;
60 base.Shader.Parameters["uLightSource"].SetValue(value);
61 }
62 base.Apply(entity, drawData);
63 }
64}
Vector2 position
Definition Entity.cs:14
ReflectiveArmorShaderData(Ref< Effect > shader, string passName)
override void Apply(Entity entity, DrawData? drawData)
static Vector3 GetSubLight(Vector2 position)
Definition Lighting.cs:122