Files
PCK-Studio/PckStudio.Rendering/Extension/SkinBoxExtension.cs
2026-05-11 18:10:06 -04:00

49 lines
1.6 KiB
C#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using PckStudio.Core.Extensions;
using PckStudio.Core.Skin;
namespace PckStudio.Rendering.Extension
{
public static class SkinBoxExtension
{
public static Cube ToCube(this SkinBOX skinBOX) => skinBOX.ToCube(0f);
public static Cube ToCube(this SkinBOX skinBOX, float inflate, bool flipZMapping = false)
{
SkinArmorFlags ArmorFlags = skinBOX.ArmorMaskFlags;
// this is to ensure armor types include the flags on top of custom defined flags for armor masking
switch(skinBOX.Type)
{
case "BODYARMOR":
case "ARMARMOR0":
case "ARMARMOR1":
ArmorFlags |= SkinArmorFlags.ChestplateAndArmArmor;
break;
case "LEGGING0":
case "LEGGING1":
ArmorFlags |= SkinArmorFlags.Leggings;
break;
case "BOOT0":
case "BOOT1":
ArmorFlags |= SkinArmorFlags.Boots;
break;
case "BELT":
ArmorFlags |= SkinArmorFlags.Belt;
break;
case "SOCK0":
case "SOCK1":
ArmorFlags |= SkinArmorFlags.Socks;
break;
}
return new Cube(skinBOX.Pos.ToOpenTKVector(), skinBOX.Size.ToOpenTKVector(), skinBOX.UV.ToOpenTKVector(), skinBOX.Scale + inflate, skinBOX.Mirror, flipZMapping, ArmorFlags.ToValue());
}
}
}