Created PSM Version 2

This commit is contained in:
MayNL
2026-07-04 17:52:16 -04:00
parent 991d87d421
commit 03fce7304f
7 changed files with 198 additions and 49 deletions
@@ -4,33 +4,58 @@ using PckStudio.Core.Skin;
namespace PckStudio.ModelSupport.Internal.Format
{
/*
Magic - 3 bytes("psm")
Version - 1 byte [u8]
Anim - 4 bytes[int32]
NumberOfParts - 4 bytes[int32]
{
part parent - 1 byte (HEAD=0, BODY=1, LEG0=2, LEG1=3, ARM0=4, ARM1=5)
Position-X - 4 bytes (float32)
Position-Y - 4 bytes (float32)
Position-Z - 4 bytes (float32)
Size-X - 4 bytes (float32)
Size-Y - 4 bytes (float32)
Size-Z - 4 bytes (float32)
MirrorAndUvX - 1 bit flag 7 bits uv.x value(0-64) (s8)
HideWithArmorAndUvY - 1 bit flag 7 bits uv.y value(0-64) (s8)
inflation/scale value - 4 bytes (float32)
}
NumberOfOffsets - 4 bytes[int32]
{
offset part - 1 byte
vertical offset - 4 bytes[float]
}
*/
/*
* VERSION 1
Magic - 3 bytes("psm")
Version - 1 byte [u8]
Anim - 4 bytes[int32]
NumberOfParts - 4 bytes[int32]
{
part parent - 1 byte (HEAD=0, BODY=1, LEG0=2, LEG1=3, ARM0=4, ARM1=5)
Position-X - 4 bytes (float32)
Position-Y - 4 bytes (float32)
Position-Z - 4 bytes (float32)
Size-X - 4 bytes (float32)
Size-Y - 4 bytes (float32)
Size-Z - 4 bytes (float32)
MirrorAndUvX - 1 bit flag 7 bits uv.x value(0-64) (s8)
HideWithArmorAndUvY - 1 bit flag 7 bits uv.y value(0-64) (s8)
Inflation - 4 bytes (float32)
}
NumberOfOffsets - 4 bytes[int32]
{
offset part - 1 byte
vertical offset - 4 bytes[float]
}
* VERSION 2
Magic - 3 bytes("psm")
Version - 1 byte [u8]
Anim - 4 bytes [int32]
Game Flags - 1 byte [u8]
NumberOfParts - 4 bytes[int32]
{
ArmorMaskAndParParent - 3 bits Armor Mask 5 bits (Box Parent Type)
Position-X - 4 bytes (float32)
Position-Y - 4 bytes (float32)
Position-Z - 4 bytes (float32)
Size-X - 4 bytes (float32)
Size-Y - 4 bytes (float32)
Size-Z - 4 bytes (float32)
MirrorAndUvX - 1 bit flag 7 bits uv.x value(0-64) (s8)
ArmorMaskingAndUvY - 1 bit Helmet Mask 7 bits uv.y value(0-64) (s8)
Inflation - 4 bytes (float32)
}
NumberOfOffsets - 4 bytes[int32]
{
offset part - 1 byte
vertical offset - 4 bytes[float]
}
*/
public sealed class PSMFile
{
internal static readonly string HEADER_MAGIC = "psm";
internal const byte CurrentVersion = 1;
internal const byte CurrentVersion = 2;
public readonly byte Version;
@@ -39,13 +64,15 @@ namespace PckStudio.ModelSupport.Internal.Format
Version = version;
}
internal PSMFile(byte version, SkinANIM skinANIM)
: this(version)
internal PSMFile(byte version, SkinANIM skinANIM, SkinGameFlags skinFlags)
: this(version)
{
SkinANIM = skinANIM;
SkinANIM = skinANIM;
SkinFlags = skinFlags;
}
public SkinANIM SkinANIM { get; private set; }
public SkinANIM SkinANIM { get; private set; }
public SkinGameFlags SkinFlags { get; private set; }
public readonly List<SkinBOX> Parts = new List<SkinBOX>();
public readonly List<SkinPartOffset> Offsets = new List<SkinPartOffset>();
@@ -82,5 +109,22 @@ namespace PckStudio.ModelSupport.Internal.Format
ARM1 = 3,
LEG0 = 4,
LEG1 = 5,
HEADWEAR = 6,
JACKET = 7,
SLEEVE0 = 8,
SLEEVE1 = 9,
PANTS0 = 10,
PANTS1 = 11,
WAIST = 12,
LEGGING0 = 13,
LEGGING1 = 14,
SOCK0 = 15,
SOCK1 = 16,
BOOT0 = 17,
BOOT1 = 18,
ARMAMOR0 = 19,
ARMAMOR1 = 20,
BODYARMOR = 21,
BELT = 22,
}
}