diff --git a/PCK-Studio/Classes/Conversion/Legacy/LegacySkinExporter.cs b/PCK-Studio/Classes/Conversion/Legacy/LegacySkinExporter.cs index 8b1c5eec..ce34df47 100644 --- a/PCK-Studio/Classes/Conversion/Legacy/LegacySkinExporter.cs +++ b/PCK-Studio/Classes/Conversion/Legacy/LegacySkinExporter.cs @@ -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(10); return default!; } return default!; } - private static GeometryCube[] defaultSkinParts = new GeometryCube[8] + private static Dictionary defaultSkinParts = new Dictionary() { - // 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 keyValues = new Dictionary(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; + } + } }