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

◆ DrawShimmer()

unsafe void Terraria.GameContent.Liquid.LiquidRenderer.DrawShimmer ( SpriteBatch spriteBatch,
Vector2 drawOffset,
bool isBackgroundDraw )
inline

Definition at line 669 of file LiquidRenderer.cs.

670 {
671 Rectangle drawArea = _drawArea;
672 Main.tileBatch.Begin();
673 fixed (SpecialLiquidDrawCache* ptr = &_drawCacheForShimmer[0])
674 {
675 SpecialLiquidDrawCache* ptr2 = ptr;
676 int num = _drawCacheForShimmer.Length;
677 for (int i = 0; i < num; i++)
678 {
679 if (!ptr2->IsVisible)
680 {
681 break;
682 }
683 Rectangle sourceRectangle = ptr2->SourceRectangle;
684 if (ptr2->IsSurfaceLiquid)
685 {
686 sourceRectangle.Y = 1280;
687 }
688 else
689 {
690 sourceRectangle.Y += _animationFrame * 80;
691 }
692 Vector2 liquidOffset = ptr2->LiquidOffset;
693 float val = ptr2->Opacity * (isBackgroundDraw ? 1f : 0.75f);
694 int num2 = 14;
695 val = Math.Min(1f, val);
696 int num3 = ptr2->X + drawArea.X - 2;
697 int num4 = ptr2->Y + drawArea.Y - 2;
698 Lighting.GetCornerColors(num3, num4, out var vertices);
699 SetShimmerVertexColors(ref vertices, val, num3, num4);
700 Main.DrawTileInWater(drawOffset, num3, num4);
701 Main.tileBatch.Draw(_liquidTextures[num2].Value, new Vector2(num3 << 4, num4 << 4) + drawOffset + liquidOffset, sourceRectangle, vertices, Vector2.Zero, 1f, SpriteEffects.None);
702 sourceRectangle = ptr2->SourceRectangle;
703 bool flag = sourceRectangle.X != 16 || sourceRectangle.Y % 80 != 48;
704 if (flag || (num3 + num4) % 2 == 0)
705 {
706 sourceRectangle.X += 48;
707 sourceRectangle.Y += 80 * GetShimmerFrame(flag, num3, num4);
708 SetShimmerVertexColors_Sparkle(ref vertices, ptr2->Opacity, num3, num4, flag);
709 Main.tileBatch.Draw(_liquidTextures[num2].Value, new Vector2(num3 << 4, num4 << 4) + drawOffset + liquidOffset, sourceRectangle, vertices, Vector2.Zero, 1f, SpriteEffects.None);
710 }
711 ptr2++;
712 }
713 }
714 Main.tileBatch.End();
715 }
static byte Min(byte val1, byte val2)
Definition Math.cs:912
int GetShimmerFrame(bool top, float worldPositionX, float worldPositionY)
SpecialLiquidDrawCache[] _drawCacheForShimmer
static void SetShimmerVertexColors(ref VertexColors colors, float opacity, int x, int y)
readonly Asset< Texture2D >[] _liquidTextures
static VertexColors SetShimmerVertexColors_Sparkle(ref VertexColors colors, float opacity, int x, int y, bool top)

References Terraria.GameContent.Liquid.LiquidRenderer._animationFrame, Terraria.GameContent.Liquid.LiquidRenderer._drawArea, Terraria.GameContent.Liquid.LiquidRenderer._drawCacheForShimmer, Terraria.GameContent.Liquid.LiquidRenderer._liquidTextures, Terraria.Main.DrawTileInWater(), Terraria.Lighting.GetCornerColors(), Terraria.GameContent.Liquid.LiquidRenderer.GetShimmerFrame(), Terraria.GameContent.Liquid.LiquidRenderer.SpecialLiquidDrawCache.IsSurfaceLiquid, Terraria.GameContent.Liquid.LiquidRenderer.SpecialLiquidDrawCache.IsVisible, Terraria.GameContent.Liquid.LiquidRenderer.SpecialLiquidDrawCache.LiquidOffset, System.Math.Min(), Terraria.GameContent.Liquid.LiquidRenderer.SpecialLiquidDrawCache.Opacity, Terraria.GameContent.Liquid.LiquidRenderer.SetShimmerVertexColors(), Terraria.GameContent.Liquid.LiquidRenderer.SetShimmerVertexColors_Sparkle(), Terraria.GameContent.Liquid.LiquidRenderer.SpecialLiquidDrawCache.SourceRectangle, Terraria.Main.tileBatch, Microsoft.Xna.Framework.Graphics.Vector2, Terraria.GameContent.Liquid.LiquidRenderer.SpecialLiquidDrawCache.X, Terraria.GameContent.Liquid.LiquidRenderer.SpecialLiquidDrawCache.Y, and Microsoft.Xna.Framework.Vector2.Zero.