mirror of
https://github.com/aelurum/AssetStudio.git
synced 2025-05-27 22:00:23 -04:00
fixed bug
This commit is contained in:
parent
da4eb15d6b
commit
b9cf7d5874
@ -178,7 +178,7 @@ namespace AssetStudio
|
|||||||
reader.AlignStream();
|
reader.AlignStream();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void GetStreams()
|
private void GetStreams()
|
||||||
{
|
{
|
||||||
var streamCount = m_Channels.Max(x => x.stream) + 1;
|
var streamCount = m_Channels.Max(x => x.stream) + 1;
|
||||||
m_Streams = new StreamInfo[streamCount];
|
m_Streams = new StreamInfo[streamCount];
|
||||||
@ -258,6 +258,31 @@ namespace AssetStudio
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void FixChannel()
|
||||||
|
{
|
||||||
|
if (m_Channels.FirstOrDefault(x => x.dimension > 4) != null)
|
||||||
|
{
|
||||||
|
var fixStream = m_Channels.Max(x => x.stream);
|
||||||
|
var fixChannels = m_Channels.Where(x => x.stream == fixStream).ToArray();
|
||||||
|
var stride = 0;
|
||||||
|
for (int i = 1, l = fixChannels.Length; i < l; i++)
|
||||||
|
{
|
||||||
|
var curChannel = fixChannels[i];
|
||||||
|
var preChannel = fixChannels[i - 1];
|
||||||
|
var offset = curChannel.offset - preChannel.offset;
|
||||||
|
preChannel.dimension = (byte)(offset / MeshHelper.GetChannelFormatSize(preChannel.format));
|
||||||
|
stride += offset;
|
||||||
|
}
|
||||||
|
//Fix Last
|
||||||
|
var m_Channel = fixChannels.Last();
|
||||||
|
var streamSize = m_DataSize.Length - m_Streams[fixStream].offset;
|
||||||
|
var totalStride = streamSize / m_VertexCount;
|
||||||
|
var channelStride = totalStride - stride;
|
||||||
|
m_Channel.dimension = (byte)(channelStride / MeshHelper.GetChannelFormatSize(m_Channel.format));
|
||||||
|
GetStreams();
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public class BoneWeights4
|
public class BoneWeights4
|
||||||
@ -662,22 +687,10 @@ namespace AssetStudio
|
|||||||
|
|
||||||
private void ProcessData()
|
private void ProcessData()
|
||||||
{
|
{
|
||||||
//Fix normal channel in 2018.3 and up
|
//Fix channel after 2018.3
|
||||||
if (version[0] > 2018 || (version[0] == 2018 && version[1] >= 3))
|
if (version[0] > 2018 || (version[0] == 2018 && version[1] >= 3))
|
||||||
{
|
{
|
||||||
if (m_VertexData.m_Channels[1].dimension > 4)
|
m_VertexData.FixChannel();
|
||||||
{
|
|
||||||
for (int i = 2; i < m_VertexData.m_Channels.Length; i++)
|
|
||||||
{
|
|
||||||
if (m_VertexData.m_Channels[i].dimension > 0)
|
|
||||||
{
|
|
||||||
var offset = m_VertexData.m_Channels[i].offset - m_VertexData.m_Channels[1].offset;
|
|
||||||
m_VertexData.m_Channels[1].dimension = (byte)(offset / MeshHelper.GetChannelFormatSize(m_VertexData.m_Channels[1].format));
|
|
||||||
m_VertexData.GetStreams();
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
if (!string.IsNullOrEmpty(m_StreamData?.path))
|
if (!string.IsNullOrEmpty(m_StreamData?.path))
|
||||||
{
|
{
|
||||||
|
Loading…
Reference in New Issue
Block a user