mirror of
https://github.com/aelurum/AssetStudio.git
synced 2025-05-27 22:00:23 -04:00
Implemented AnimationEvent
This commit is contained in:
parent
6b93df41f2
commit
58ab3116db
@ -832,6 +832,33 @@ namespace AssetStudio
|
||||
}
|
||||
}
|
||||
|
||||
public class AnimationEvent
|
||||
{
|
||||
public float time;
|
||||
public string functionName;
|
||||
public string data;
|
||||
public PPtr<Object> objectReferenceParameter;
|
||||
public float floatParameter;
|
||||
public int intParameter;
|
||||
public int messageOptions;
|
||||
|
||||
public AnimationEvent(ObjectReader reader)
|
||||
{
|
||||
var version = reader.version;
|
||||
|
||||
time = reader.ReadSingle();
|
||||
functionName = reader.ReadAlignedString();
|
||||
data = reader.ReadAlignedString();
|
||||
objectReferenceParameter = new PPtr<Object>(reader);
|
||||
floatParameter = reader.ReadSingle();
|
||||
if (version[0] >= 3) //3 and up
|
||||
{
|
||||
intParameter = reader.ReadInt32();
|
||||
}
|
||||
messageOptions = reader.ReadInt32();
|
||||
}
|
||||
}
|
||||
|
||||
public enum AnimationType
|
||||
{
|
||||
kLegacy = 1,
|
||||
@ -858,7 +885,7 @@ namespace AssetStudio
|
||||
public uint m_MuscleClipSize;
|
||||
public ClipMuscleConstant m_MuscleClip;
|
||||
public AnimationClipBindingConstant m_ClipBindingConstant;
|
||||
//public AnimationEvent[] m_Events;
|
||||
public AnimationEvent[] m_Events;
|
||||
|
||||
|
||||
public AnimationClip(ObjectReader reader) : base(reader)
|
||||
@ -953,14 +980,22 @@ namespace AssetStudio
|
||||
{
|
||||
m_ClipBindingConstant = new AnimationClipBindingConstant(reader);
|
||||
}
|
||||
//m_HasGenericRootTransform 2018.3
|
||||
//m_HasMotionFloatCurves 2018.3
|
||||
/*int numEvents = reader.ReadInt32();
|
||||
if (version[0] > 2018 || (version[0] == 2018 && version[1] >= 3)) //2018.3 and up
|
||||
{
|
||||
var m_HasGenericRootTransform = reader.ReadBoolean();
|
||||
var m_HasMotionFloatCurves = reader.ReadBoolean();
|
||||
reader.AlignStream();
|
||||
}
|
||||
int numEvents = reader.ReadInt32();
|
||||
m_Events = new AnimationEvent[numEvents];
|
||||
for (int i = 0; i < numEvents; i++)
|
||||
{
|
||||
m_Events[i] = new AnimationEvent(reader);
|
||||
}*/
|
||||
}
|
||||
if (version[0] >= 2017) //2017 and up
|
||||
{
|
||||
reader.AlignStream();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -115,7 +115,7 @@ namespace AssetStudio
|
||||
stream = reader.ReadByte();
|
||||
offset = reader.ReadByte();
|
||||
format = reader.ReadByte();
|
||||
dimension = reader.ReadByte();
|
||||
dimension = (byte)(reader.ReadByte() & 0xF);
|
||||
}
|
||||
}
|
||||
|
||||
@ -258,31 +258,6 @@ 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.dimension > 0 && 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
|
||||
@ -695,11 +670,6 @@ namespace AssetStudio
|
||||
m_VertexData.m_DataSize = resourceReader.GetData();
|
||||
}
|
||||
}
|
||||
//Fix channel after 2018.3
|
||||
if (version[0] > 2018 || (version[0] == 2018 && version[1] >= 3))
|
||||
{
|
||||
m_VertexData.FixChannel();
|
||||
}
|
||||
if (version[0] > 3 || (version[0] == 3 && version[1] >= 5)) //3.5 and up
|
||||
{
|
||||
ReadVertexData();
|
||||
|
Loading…
Reference in New Issue
Block a user