Skip to content

Commit

Permalink
removed downgrade code
Browse files Browse the repository at this point in the history
  • Loading branch information
mafaca committed Oct 24, 2019
1 parent 7a60410 commit 61b21f3
Show file tree
Hide file tree
Showing 4 changed files with 14 additions and 134 deletions.
14 changes: 1 addition & 13 deletions uTinyRipperCore/Converter/Mesh/ChannelInfoConverter.cs
Expand Up @@ -12,11 +12,6 @@ public static ChannelInfo Convert(IExportContainer container, ChannelInfo origin
{
if (VertexFormatExtensions.VertexFormat2019Relevant(container.Version))
{
// TEMP: downgrade
if (!VertexFormatExtensions.VertexFormat2019Relevant(container.ExportVersion))
{
instance.Format = origin.GetVertexFormat(container.Version).ToFormat(container.ExportVersion);
}
}
else if (ShaderChannelExtensions.ShaderChannel5Relevant(container.Version))
{
Expand All @@ -34,17 +29,10 @@ public static ChannelInfo Convert(IExportContainer container, ChannelInfo origin
if (formatv4 == VertexChannelFormat.Color)
{
// replace Color4b[1] to Color1b[4]
instance.RawDimension = (byte)((instance.RawDimension & 0xF0) | (instance.Dimension * 4));
instance.RawDimension = (byte)(instance.Dimension * 4);
}
}
}
if (ShaderChannelExtensions.ShaderChannel2018Relevant(container.Version))
{
if (!ShaderChannelExtensions.ShaderChannel2018Relevant(container.ExportVersion))
{
instance.RawDimension = origin.Dimension;
}
}
}
return instance;
}
Expand Down
8 changes: 1 addition & 7 deletions uTinyRipperCore/Converter/Mesh/MeshConverter.cs
Expand Up @@ -59,7 +59,7 @@ public static Mesh Convert(IExportContainer container, Mesh origin)
}
if (Mesh.HasSkin(container.ExportVersion))
{
instance.Skin = GetSkin(container, origin);
instance.Skin = origin.Skin;
}

if (Mesh.HasVertexData(container.ExportVersion))
Expand Down Expand Up @@ -291,12 +291,6 @@ private static SubMesh[] GetSubMeshes(IExportContainer container, Mesh origin, M
}
}

// TEMP: downgrade
private static BoneWeights4[] GetSkin(IExportContainer container, Mesh origin)
{
return Mesh.HasSkin(container.Version) ? origin.Skin.ToArray() : origin.VertexData.GenerateSkin(container);
}

private static VertexData GetVertexData(IExportContainer container, Mesh origin)
{
if (Mesh.HasVertexData(container.Version))
Expand Down
109 changes: 8 additions & 101 deletions uTinyRipperCore/Converter/Mesh/VertexDataConverter.cs
Expand Up @@ -32,58 +32,16 @@ public static VertexData Convert(IExportContainer container, Mesh originMesh)

private static uint GetCurrentChannels(IExportContainer container, ref VertexData origin)
{
if (VertexData.HasCurrentChannels(container.Version))
if (ShaderChannelExtensions.ShaderChannel5Relevant(container.Version))
{
if (ShaderChannelExtensions.ShaderChannel5Relevant(container.Version))
{
return origin.CurrentChannels;
}
else
{
BitArray curBits = new BitArray(BitConverter.GetBytes(origin.CurrentChannels));
curBits.Set((int)ShaderChannel5.Tangent, curBits.Get((int)ShaderChannel4.Tangent));
curBits.Set((int)ShaderChannel4.Tangent, false);
return curBits.ToUInt32();
}
return origin.CurrentChannels;
}
else // Version >= 2018
else
{
// TEMP: downgrade
BitArray curChannels = new BitArray(32);
for (int i = 0; i < origin.Channels.Length; i++)
{
if (origin.Channels[i].IsSet)
{
switch ((ShaderChannel2018)i)
{
case ShaderChannel2018.Vertex:
curChannels[(int)ShaderChannel5.Vertex] = true;
break;
case ShaderChannel2018.Normal:
curChannels[(int)ShaderChannel5.Normal] = true;
break;
case ShaderChannel2018.Color:
curChannels[(int)ShaderChannel5.Color] = true;
break;
case ShaderChannel2018.UV0:
curChannels[(int)ShaderChannel5.UV0] = true;
break;
case ShaderChannel2018.UV1:
curChannels[(int)ShaderChannel5.UV1] = true;
break;
case ShaderChannel2018.UV2:
curChannels[(int)ShaderChannel5.UV2] = true;
break;
case ShaderChannel2018.UV3:
curChannels[(int)ShaderChannel5.UV3] = true;
break;
case ShaderChannel2018.Tangent:
curChannels[(int)ShaderChannel5.Tangent] = true;
break;
}
}
}
return curChannels.ToUInt32();
BitArray curBits = new BitArray(BitConverter.GetBytes(origin.CurrentChannels));
curBits.Set((int)ShaderChannel5.Tangent, curBits.Get((int)ShaderChannel4.Tangent));
curBits.Set((int)ShaderChannel4.Tangent, false);
return curBits.ToUInt32();
}
}

Expand All @@ -92,23 +50,7 @@ private static ChannelInfo[] GetChannels(IExportContainer container, Mesh origin
ref VertexData origin = ref originMesh.VertexData;
if (ShaderChannelExtensions.ShaderChannel2018Relevant(container.Version)) // 2018.1 <= Version
{
// TEMP: downgrade
if (ShaderChannelExtensions.ShaderChannel2018Relevant(container.ExportVersion))
{
return origin.Channels.ToArray();
}
else
{
ChannelInfo[] channels = new ChannelInfo[8];
channels[(int)ShaderChannel5.Vertex] = origin.Channels[(int)ShaderChannel2018.Vertex].Convert(container);
channels[(int)ShaderChannel5.Normal] = origin.Channels[(int)ShaderChannel2018.Normal].Convert(container);
channels[(int)ShaderChannel5.Color] = origin.Channels[(int)ShaderChannel2018.Color].Convert(container);
channels[(int)ShaderChannel5.UV0] = origin.Channels[(int)ShaderChannel2018.UV0].Convert(container);
channels[(int)ShaderChannel5.UV1] = origin.Channels[(int)ShaderChannel2018.UV1].Convert(container);
channels[(int)ShaderChannel5.Tangent] = origin.Channels[(int)ShaderChannel2018.Tangent].Convert(container);
RecalculateChannelOffsets(container, channels);
return channels;
}
return origin.Channels.Select(t => t.Convert(container)).ToArray();
}
else if (ShaderChannelExtensions.ShaderChannel5Relevant(container.Version)) // 5.0.0 <= Version < 2018.1
{
Expand Down Expand Up @@ -220,30 +162,6 @@ private static void ConvertSkinChannels(IExportContainer container, Mesh origin,
}
}

// TEMP: downgrade
private static void RecalculateChannelOffsets(IExportContainer container, ChannelInfo[] channels)
{
int maxStream = channels.Max(t => t.Stream);
for (int i = 0; i <= maxStream; i++)
{
RecalculateChannelOffsets(container, channels, i);
}
}

private static void RecalculateChannelOffsets(IExportContainer container, ChannelInfo[] channels, int stream)
{
byte offset = 0;
for (int i = 0; i < channels.Length; i++)
{
ref ChannelInfo channel = ref channels[i];
if (channel.IsSet && channel.Stream == stream)
{
channel.Offset = offset;
offset += channel.GetStride(container.ExportVersion);
}
}
}

private static byte[] GetData(IExportContainer container, Mesh originMesh, ref VertexData instance)
{
if (!originMesh.CheckAssetIntegrity())
Expand Down Expand Up @@ -273,17 +191,6 @@ private static bool NeedCopyData(IExportContainer container)
return true;
}

// TEMP: downgrade
if (VertexData.ToSerializedVersion(container.Version) >= 2)
{
if (VertexData.ToSerializedVersion(container.ExportVersion) < 2)
{
/// we swap v2018 and v5 channels and since Editor up to 2017.x ignore <see cref="ChannelInfo.Offset"/>
/// value, we have to swap data as well
return true;
}
}

return false;
}

Expand Down
17 changes: 4 additions & 13 deletions uTinyRipperCore/Converter/TrailRenderer/TrailRendererConverter.cs
Expand Up @@ -29,19 +29,10 @@ private static LineParameters GetParameters(IExportContainer container, TrailRen
}
else
{
if (TrailRenderer.HasParameters(container.ExportVersion))
{
LineParameters instance = new LineParameters(container.ExportVersion);
instance.WidthCurve = origin.Parameters.WidthCurve.Convert(container);
instance.ColorGradient = origin.Colors.GenerateGragient(container);
return instance;
}
else
{
LineParameters instance = new LineParameters();
instance.WidthCurve = origin.Parameters.WidthCurve.Convert(container);
return instance;
}
LineParameters instance = new LineParameters(container.ExportVersion);
instance.WidthCurve = origin.Parameters.WidthCurve.Convert(container);
instance.ColorGradient = origin.Colors.GenerateGragient(container);
return instance;
}
}

Expand Down

0 comments on commit 61b21f3

Please sign in to comment.