LegacySkinExporter.cs - Update 'defaultSkinParts'

This commit is contained in:
miku-666
2023-04-23 21:07:17 +02:00
parent 314ea2b107
commit 057748aca9

View File

@@ -12,6 +12,7 @@ using OMI.Formats.Pck;
using PckStudio.Classes.Conversion.Legacy.JsonDefinitions;
using PckStudio.Extensions;
using PckStudio.Conversion.Common.JsonDefinitions;
using PckStudio.Classes.Utils;
namespace PckStudio.Conversion.Legacy
{
@@ -48,38 +49,44 @@ namespace PckStudio.Conversion.Legacy
var file = new PckFile.FileData("", PckFile.FileData.FileType.SkinFile);
var anim = new SkinANIM();
var boxes = new Stack<SkinBOX>(10);
return default!;
}
return default!;
}
private static GeometryCube[] defaultSkinParts = new GeometryCube[8]
private static Dictionary<string, GeometryCube> defaultSkinParts = new Dictionary<string, GeometryCube>()
{
// head
new GeometryCube(new Vector3(-4, 24, -4), new Vector3(8), new Vector2(0)),
// body
new GeometryCube(new Vector3(-4, 12, -2), new Vector3(8, 12, 4), new Vector2(16)),
// leg0
new GeometryCube(new Vector3(-4, 0, -2), new Vector3(4, 12, 4), new Vector2(0, 16)),
// leg1
new GeometryCube(new Vector3(0, 0, -2), new Vector3(4, 12, 4), new Vector2(16, 48)),
// arm0
new GeometryCube(new Vector3(-7, 12, -2), new Vector3(4, 12, 4), new Vector2(40, 16)),
// arm1
new GeometryCube(new Vector3(4, 24, -2), new Vector3(4, 12, 4), new Vector2(32, 48)),
// arm0 slim
new GeometryCube(new Vector3(-7, 12, -2), new Vector3(3, 12, 4), new Vector2(40, 16)),
// arm1 slim
new GeometryCube(new Vector3(4, 24, -2), new Vector3(3, 12, 4), new Vector2(32, 48)),
["head"] = new GeometryCube(new Vector3(-4, 24, -4), new Vector3(8), new Vector2(0)),
["body"] = new GeometryCube(new Vector3(-4, 12, -2), new Vector3(8, 12, 4), new Vector2(16)),
["leg0"] = new GeometryCube(new Vector3(-4, 0, -2), new Vector3(4, 12, 4), new Vector2(0, 16)),
["leg1"] = new GeometryCube(new Vector3(0, 0, -2), new Vector3(4, 12, 4), new Vector2(16, 48)),
["arm0"] = new GeometryCube(new Vector3(-8, 12, -2), new Vector3(4, 12, 4), new Vector2(40, 16)),
["arm1"] = new GeometryCube(new Vector3(4, 24, -2), new Vector3(4, 12, 4), new Vector2(32, 48)),
["arm0_slim"] = new GeometryCube(new Vector3(-7, 12, -2), new Vector3(3, 12, 4), new Vector2(40, 16)),
["arm1_slim"] = new GeometryCube(new Vector3(4, 24, -2), new Vector3(3, 12, 4), new Vector2(32, 48))
};
private bool HasHuminodOrSlimModel(BlockbenchBedrockModel.BedrockModel bedrockModel)
{
Dictionary<string, bool> keyValues = new Dictionary<string, bool>(6);
foreach (var bone in bedrockModel.Bones)
{
if (defaultSkinParts.ContainsKey(bone.Name))
{
var defaultCube = defaultSkinParts[bone.Name];
keyValues[bone.Name] = bone.Cubes.Any(cube =>
{
return cube.Origin.SequenceEqual(defaultCube.Origin) &&
cube.Size.SequenceEqual(defaultCube.Size) &&
cube.UV.SequenceEqual(defaultCube.UV);
});
}
}
return false;
}
}
}