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

◆ Apply() [2/2]

virtual void Terraria.Graphics.Shaders.ArmorShaderData.Apply ( Entity entity,
DrawData? drawData = null )
inlinevirtual

Reimplemented in Terraria.GameContent.Dyes.ReflectiveArmorShaderData, Terraria.GameContent.Dyes.TeamArmorShaderData, and Terraria.GameContent.Dyes.TwilightDyeShaderData.

Definition at line 27 of file ArmorShaderData.cs.

28 {
29 base.Shader.Parameters["uColor"].SetValue(_uColor);
30 base.Shader.Parameters["uSaturation"].SetValue(_uSaturation);
31 base.Shader.Parameters["uSecondaryColor"].SetValue(_uSecondaryColor);
32 base.Shader.Parameters["uTime"].SetValue(Main.GlobalTimeWrappedHourly);
33 base.Shader.Parameters["uOpacity"].SetValue(_uOpacity);
34 base.Shader.Parameters["uTargetPosition"].SetValue(_uTargetPosition);
35 if (drawData.HasValue)
36 {
37 DrawData value = drawData.Value;
38 Vector4 value2 = ((!value.sourceRect.HasValue) ? new Vector4(0f, 0f, value.texture.Width, value.texture.Height) : new Vector4(value.sourceRect.Value.X, value.sourceRect.Value.Y, value.sourceRect.Value.Width, value.sourceRect.Value.Height));
39 base.Shader.Parameters["uSourceRect"].SetValue(value2);
40 base.Shader.Parameters["uLegacyArmorSourceRect"].SetValue(value2);
41 base.Shader.Parameters["uWorldPosition"].SetValue(Main.screenPosition + value.position);
42 base.Shader.Parameters["uImageSize0"].SetValue(new Vector2(value.texture.Width, value.texture.Height));
43 base.Shader.Parameters["uLegacyArmorSheetSize"].SetValue(new Vector2(value.texture.Width, value.texture.Height));
44 base.Shader.Parameters["uRotation"].SetValue(value.rotation * (value.effect.HasFlag(SpriteEffects.FlipHorizontally) ? (-1f) : 1f));
45 base.Shader.Parameters["uDirection"].SetValue((!value.effect.HasFlag(SpriteEffects.FlipHorizontally)) ? 1 : (-1));
46 }
47 else
48 {
49 Vector4 value3 = new Vector4(0f, 0f, 4f, 4f);
50 base.Shader.Parameters["uSourceRect"].SetValue(value3);
51 base.Shader.Parameters["uLegacyArmorSourceRect"].SetValue(value3);
52 base.Shader.Parameters["uRotation"].SetValue(0f);
53 }
54 if (_uImage != null)
55 {
56 Main.graphics.GraphicsDevice.Textures[1] = _uImage.Value;
57 base.Shader.Parameters["uImageSize1"].SetValue(new Vector2(_uImage.Width(), _uImage.Height()));
58 }
59 if (entity != null)
60 {
61 base.Shader.Parameters["uDirection"].SetValue((float)entity.direction);
62 }
63 if (entity is Player { bodyFrame: var bodyFrame })
64 {
65 base.Shader.Parameters["uLegacyArmorSourceRect"].SetValue(new Vector4(bodyFrame.X, bodyFrame.Y, bodyFrame.Width, bodyFrame.Height));
66 base.Shader.Parameters["uLegacyArmorSheetSize"].SetValue(new Vector2(40f, 1120f));
67 }
68 Apply();
69 }

References Terraria.Graphics.Shaders.ArmorShaderData._uColor, Terraria.Graphics.Shaders.ArmorShaderData._uImage, Terraria.Graphics.Shaders.ArmorShaderData._uOpacity, Terraria.Graphics.Shaders.ArmorShaderData._uSaturation, Terraria.Graphics.Shaders.ArmorShaderData._uSecondaryColor, Terraria.Graphics.Shaders.ArmorShaderData._uTargetPosition, Terraria.Graphics.Shaders.ShaderData.Apply(), Terraria.Entity.direction, Terraria.Main.GlobalTimeWrappedHourly, Terraria.Main.graphics, Terraria.Main.screenPosition, ReLogic.Content.Asset< T >.Value, Microsoft.Xna.Framework.Graphics.Vector2, and Microsoft.Xna.Framework.Graphics.Vector4.