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

◆ DrawNormalLiquids()

unsafe void Terraria.GameContent.Liquid.LiquidRenderer.DrawNormalLiquids ( SpriteBatch spriteBatch,
Vector2 drawOffset,
int waterStyle,
float globalAlpha,
bool isBackgroundDraw )
inline

Definition at line 618 of file LiquidRenderer.cs.

619 {
620 Rectangle drawArea = _drawArea;
621 Main.tileBatch.Begin();
622 fixed (LiquidDrawCache* ptr = &_drawCache[0])
623 {
624 LiquidDrawCache* ptr2 = ptr;
625 for (int i = drawArea.X; i < drawArea.X + drawArea.Width; i++)
626 {
627 for (int j = drawArea.Y; j < drawArea.Y + drawArea.Height; j++)
628 {
629 if (ptr2->IsVisible)
630 {
631 Rectangle sourceRectangle = ptr2->SourceRectangle;
632 if (ptr2->IsSurfaceLiquid)
633 {
634 sourceRectangle.Y = 1280;
635 }
636 else
637 {
638 sourceRectangle.Y += _animationFrame * 80;
639 }
640 Vector2 liquidOffset = ptr2->LiquidOffset;
641 float num = ptr2->Opacity * (isBackgroundDraw ? 1f : DEFAULT_OPACITY[ptr2->Type]);
642 int num2 = ptr2->Type;
643 switch (num2)
644 {
645 case 0:
646 num2 = waterStyle;
647 num *= globalAlpha;
648 break;
649 case 2:
650 num2 = 11;
651 break;
652 }
653 num = Math.Min(1f, num);
654 Lighting.GetCornerColors(i, j, out var vertices);
655 vertices.BottomLeftColor *= num;
656 vertices.BottomRightColor *= num;
657 vertices.TopLeftColor *= num;
658 vertices.TopRightColor *= num;
659 Main.DrawTileInWater(drawOffset, i, j);
660 Main.tileBatch.Draw(_liquidTextures[num2].Value, new Vector2(i << 4, j << 4) + drawOffset + liquidOffset, sourceRectangle, vertices, Vector2.Zero, 1f, SpriteEffects.None);
661 }
662 ptr2++;
663 }
664 }
665 }
666 Main.tileBatch.End();
667 }
static byte Min(byte val1, byte val2)
Definition Math.cs:912
readonly Asset< Texture2D >[] _liquidTextures

References Terraria.GameContent.Liquid.LiquidRenderer._animationFrame, Terraria.GameContent.Liquid.LiquidRenderer._drawArea, Terraria.GameContent.Liquid.LiquidRenderer._drawCache, Terraria.GameContent.Liquid.LiquidRenderer._liquidTextures, Terraria.GameContent.Liquid.LiquidRenderer.DEFAULT_OPACITY, Terraria.Main.DrawTileInWater(), Terraria.Lighting.GetCornerColors(), Microsoft.Xna.Framework.Rectangle.Height, Terraria.GameContent.Liquid.LiquidRenderer.LiquidDrawCache.IsSurfaceLiquid, Terraria.GameContent.Liquid.LiquidRenderer.LiquidDrawCache.IsVisible, Terraria.GameContent.Liquid.LiquidRenderer.LiquidDrawCache.LiquidOffset, System.Math.Min(), Terraria.GameContent.Liquid.LiquidRenderer.LiquidDrawCache.Opacity, Terraria.GameContent.Liquid.LiquidRenderer.LiquidDrawCache.SourceRectangle, Terraria.Main.tileBatch, Terraria.GameContent.Liquid.LiquidRenderer.LiquidDrawCache.Type, Microsoft.Xna.Framework.Graphics.Vector2, Microsoft.Xna.Framework.Rectangle.Width, Microsoft.Xna.Framework.Rectangle.X, Microsoft.Xna.Framework.Rectangle.Y, and Microsoft.Xna.Framework.Vector2.Zero.