terraria-source-code/DataStructures/PlayerDrawHelper.cs
2021-10-26 12:45:26 -04:00

72 lines
2.5 KiB
C#

// Decompiled with JetBrains decompiler
// Type: Terraria.DataStructures.PlayerDrawHelper
// Assembly: Terraria, Version=1.4.0.5, Culture=neutral, PublicKeyToken=null
// MVID: 67F9E73E-0A81-4937-A22C-5515CD405A83
// Assembly location: C:\Users\mikeyisbaeyt\Downloads\depotdownloader-2.4.5\depots\105601\6707058\Terraria.exe
using Terraria.Graphics.Shaders;
namespace Terraria.DataStructures
{
public class PlayerDrawHelper
{
public static int PackShader(
int localShaderIndex,
PlayerDrawHelper.ShaderConfiguration shaderType)
{
return localShaderIndex + (int) shaderType * 1000;
}
public static void UnpackShader(
int packedShaderIndex,
out int localShaderIndex,
out PlayerDrawHelper.ShaderConfiguration shaderType)
{
shaderType = (PlayerDrawHelper.ShaderConfiguration) (packedShaderIndex / 1000);
localShaderIndex = packedShaderIndex % 1000;
}
public static void SetShaderForData(Player player, int cHead, ref DrawData cdd)
{
int localShaderIndex;
PlayerDrawHelper.ShaderConfiguration shaderType;
PlayerDrawHelper.UnpackShader(cdd.shader, out localShaderIndex, out shaderType);
switch (shaderType)
{
case PlayerDrawHelper.ShaderConfiguration.ArmorShader:
GameShaders.Hair.Apply((short) 0, player, new DrawData?(cdd));
GameShaders.Armor.Apply(localShaderIndex, (Entity) player, new DrawData?(cdd));
break;
case PlayerDrawHelper.ShaderConfiguration.HairShader:
if (player.head == 0)
{
GameShaders.Hair.Apply((short) 0, player, new DrawData?(cdd));
GameShaders.Armor.Apply(cHead, (Entity) player, new DrawData?(cdd));
break;
}
GameShaders.Armor.Apply(0, (Entity) player, new DrawData?(cdd));
GameShaders.Hair.Apply((short) localShaderIndex, player, new DrawData?(cdd));
break;
case PlayerDrawHelper.ShaderConfiguration.TileShader:
Main.tileShader.CurrentTechnique.Passes[localShaderIndex].Apply();
break;
case PlayerDrawHelper.ShaderConfiguration.TilePaintID:
if (localShaderIndex == 31)
{
GameShaders.Armor.Apply(0, (Entity) player, new DrawData?(cdd));
break;
}
Main.tileShader.CurrentTechnique.Passes[Main.ConvertPaintIdToTileShaderIndex(localShaderIndex, false, false)].Apply();
break;
}
}
public enum ShaderConfiguration
{
ArmorShader,
HairShader,
TileShader,
TilePaintID,
}
}
}