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

◆ DrawSingleTile_SlicedBlock()

void Terraria.GameContent.Drawing.TileDrawing.DrawSingleTile_SlicedBlock ( Vector2 normalTilePosition,
int tileX,
int tileY,
TileDrawInfo drawData )
inlineprivate

Definition at line 2693 of file TileDrawing.cs.

2694 {
2695 Color color = default(Color);
2696 Vector2 origin = default(Vector2);
2697 Rectangle value = default(Rectangle);
2698 Vector3 tileLight = default(Vector3);
2699 Vector2 position = default(Vector2);
2701 {
2702 Vector3[] slices = drawData.colorSlices;
2703 Lighting.GetColor9Slice(tileX, tileY, ref slices);
2704 Vector3 vector = drawData.tileLight.ToVector3();
2705 Vector3 tint = drawData.colorTint.ToVector3();
2706 if (drawData.tileCache.fullbrightBlock())
2707 {
2709 }
2710 for (int i = 0; i < 9; i++)
2711 {
2712 value.X = 0;
2713 value.Y = 0;
2714 value.Width = 4;
2715 value.Height = 4;
2716 switch (i)
2717 {
2718 case 1:
2719 value.Width = 8;
2720 value.X = 4;
2721 break;
2722 case 2:
2723 value.X = 12;
2724 break;
2725 case 3:
2726 value.Height = 8;
2727 value.Y = 4;
2728 break;
2729 case 4:
2730 value.Width = 8;
2731 value.Height = 8;
2732 value.X = 4;
2733 value.Y = 4;
2734 break;
2735 case 5:
2736 value.X = 12;
2737 value.Y = 4;
2738 value.Height = 8;
2739 break;
2740 case 6:
2741 value.Y = 12;
2742 break;
2743 case 7:
2744 value.Width = 8;
2745 value.Height = 4;
2746 value.X = 4;
2747 value.Y = 12;
2748 break;
2749 case 8:
2750 value.X = 12;
2751 value.Y = 12;
2752 break;
2753 }
2754 tileLight.X = (slices[i].X + vector.X) * 0.5f;
2755 tileLight.Y = (slices[i].Y + vector.Y) * 0.5f;
2756 tileLight.Z = (slices[i].Z + vector.Z) * 0.5f;
2757 GetFinalLight(drawData.tileCache, drawData.typeCache, ref tileLight, ref tint);
2758 position.X = normalTilePosition.X + (float)value.X;
2759 position.Y = normalTilePosition.Y + (float)value.Y;
2760 value.X += drawData.tileFrameX + drawData.addFrX;
2761 value.Y += drawData.tileFrameY + drawData.addFrY;
2762 int num = (int)(tileLight.X * 255f);
2763 int num2 = (int)(tileLight.Y * 255f);
2764 int num3 = (int)(tileLight.Z * 255f);
2765 if (num > 255)
2766 {
2767 num = 255;
2768 }
2769 if (num2 > 255)
2770 {
2771 num2 = 255;
2772 }
2773 if (num3 > 255)
2774 {
2775 num3 = 255;
2776 }
2777 num3 <<= 16;
2778 num2 <<= 8;
2779 color.PackedValue = (uint)(num | num2 | num3) | 0xFF000000u;
2780 Main.spriteBatch.Draw(drawData.drawTexture, position, value, color, 0f, origin, 1f, drawData.tileSpriteEffect, 0f);
2781 }
2782 }
2784 {
2785 Vector3[] slices2 = drawData.colorSlices;
2786 Lighting.GetColor4Slice(tileX, tileY, ref slices2);
2787 Vector3 vector2 = drawData.tileLight.ToVector3();
2788 Vector3 tint2 = drawData.colorTint.ToVector3();
2789 if (drawData.tileCache.fullbrightBlock())
2790 {
2792 }
2793 value.Width = 8;
2794 value.Height = 8;
2795 for (int j = 0; j < 4; j++)
2796 {
2797 value.X = 0;
2798 value.Y = 0;
2799 switch (j)
2800 {
2801 case 1:
2802 value.X = 8;
2803 break;
2804 case 2:
2805 value.Y = 8;
2806 break;
2807 case 3:
2808 value.X = 8;
2809 value.Y = 8;
2810 break;
2811 }
2812 tileLight.X = (slices2[j].X + vector2.X) * 0.5f;
2813 tileLight.Y = (slices2[j].Y + vector2.Y) * 0.5f;
2814 tileLight.Z = (slices2[j].Z + vector2.Z) * 0.5f;
2815 GetFinalLight(drawData.tileCache, drawData.typeCache, ref tileLight, ref tint2);
2816 position.X = normalTilePosition.X + (float)value.X;
2817 position.Y = normalTilePosition.Y + (float)value.Y;
2818 value.X += drawData.tileFrameX + drawData.addFrX;
2819 value.Y += drawData.tileFrameY + drawData.addFrY;
2820 int num4 = (int)(tileLight.X * 255f);
2821 int num5 = (int)(tileLight.Y * 255f);
2822 int num6 = (int)(tileLight.Z * 255f);
2823 if (num4 > 255)
2824 {
2825 num4 = 255;
2826 }
2827 if (num5 > 255)
2828 {
2829 num5 = 255;
2830 }
2831 if (num6 > 255)
2832 {
2833 num6 = 255;
2834 }
2835 num6 <<= 16;
2836 num5 <<= 8;
2837 color.PackedValue = (uint)(num4 | num5 | num6) | 0xFF000000u;
2838 Main.spriteBatch.Draw(drawData.drawTexture, position, value, color, 0f, origin, 1f, drawData.tileSpriteEffect, 0f);
2839 }
2840 }
2841 else
2842 {
2843 Main.spriteBatch.Draw(drawData.drawTexture, normalTilePosition, new Rectangle(drawData.tileFrameX + drawData.addFrX, drawData.tileFrameY + drawData.addFrY, drawData.tileWidth, drawData.tileHeight), drawData.finalColor, 0f, _zero, 1f, drawData.tileSpriteEffect, 0f);
2844 }
2845 }
static Color GetFinalLight(Tile tileCache, ushort typeCache, Color tileLight, Color tint)

References Terraria.GameContent.Drawing.TileDrawing._glowPaintColorSlices, Terraria.GameContent.Drawing.TileDrawing._highQualityLightingRequirement, Terraria.GameContent.Drawing.TileDrawing._mediumQualityLightingRequirement, Terraria.GameContent.Drawing.TileDrawing._zero, Microsoft.Xna.Framework.Color.B, Microsoft.Xna.Framework.Color.G, Terraria.Lighting.GetColor4Slice(), Terraria.Lighting.GetColor9Slice(), Terraria.GameContent.Drawing.TileDrawing.GetFinalLight(), Microsoft.Xna.Framework.Color.R, Terraria.Main.spriteBatch, and System.value.

Referenced by Terraria.GameContent.Drawing.TileDrawing.DrawBasicTile().