2025-04-25 21:14:54 +09:00

61 lines
1.8 KiB
C#

using UniGLTF;
namespace VRM
{
public class VRMData
{
public GltfData Data { get; }
public glTF_VRM_extensions VrmExtension { get; }
public VRMData(GltfData data)
{
Data = data;
if (!glTF_VRM_extensions.TryDeserialize(data.GLTF.extensions, out VRM.glTF_VRM_extensions vrm))
{
throw new NotVrm0Exception();
}
VrmExtension = vrm;
UpdateMigrationFlags(Data.MigrationFlags, VrmExtension.exporterVersion);
}
private static void UpdateMigrationFlags(MigrationFlags migrationFlags, string exportedVrmVersionString)
{
if (!PackageVersion.ParseVersion(exportedVrmVersionString, out var exportedVrmVersion)) return;
migrationFlags.IsBaseColorFactorGamma = PackageVersion.IsNewer(
new PackageVersion.Version
{
Major = 0,
Minor = 54,
Patch = 0,
Pre = "",
},
exportedVrmVersion
);
migrationFlags.IsRoughnessTextureValueSquared = PackageVersion.IsNewer(
new PackageVersion.Version
{
Major = 0,
Minor = 69,
Patch = 0,
Pre = "",
},
exportedVrmVersion
);
migrationFlags.IsEmissiveFactorGamma = PackageVersion.IsNewer(
new PackageVersion.Version
{
Major = 0,
Minor = 107,
Patch = 0,
Pre = "",
},
exportedVrmVersion
);
}
}
}