mirror of
https://github.com/aelurum/AssetStudio.git
synced 2025-06-03 00:58:13 -04:00
support exporting AnimationClip versions below 4.3
This commit is contained in:
parent
089e164756
commit
973a1076e4
@ -637,6 +637,50 @@ namespace AssetStudio
|
|||||||
m_Binding = new ValueArrayConstant(reader);
|
m_Binding = new ValueArrayConstant(reader);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public AnimationClipBindingConstant ConvertValueArrayToGenericBinding()
|
||||||
|
{
|
||||||
|
var bindings = new AnimationClipBindingConstant();
|
||||||
|
var genericBindings = new List<GenericBinding>();
|
||||||
|
var values = m_Binding;
|
||||||
|
for (int i = 0; i < values.m_ValueArray.Length;)
|
||||||
|
{
|
||||||
|
var curveID = values.m_ValueArray[i].m_ID;
|
||||||
|
var curveTypeID = values.m_ValueArray[i].m_TypeID;
|
||||||
|
var binding = new GenericBinding();
|
||||||
|
genericBindings.Add(binding);
|
||||||
|
if (curveTypeID == 4174552735) //CRC(PositionX))
|
||||||
|
{
|
||||||
|
binding.path = curveID;
|
||||||
|
binding.attribute = 1; //kBindTransformPosition
|
||||||
|
binding.typeID = ClassIDType.Transform;
|
||||||
|
i += 3;
|
||||||
|
}
|
||||||
|
else if (curveTypeID == 2211994246) //CRC(QuaternionX))
|
||||||
|
{
|
||||||
|
binding.path = curveID;
|
||||||
|
binding.attribute = 2; //kBindTransformRotation
|
||||||
|
binding.typeID = ClassIDType.Transform;
|
||||||
|
i += 4;
|
||||||
|
}
|
||||||
|
else if (curveTypeID == 1512518241) //CRC(ScaleX))
|
||||||
|
{
|
||||||
|
binding.path = curveID;
|
||||||
|
binding.attribute = 3; //kBindTransformScale
|
||||||
|
binding.typeID = ClassIDType.Transform;
|
||||||
|
i += 3;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
binding.typeID = ClassIDType.Animator;
|
||||||
|
binding.path = 0;
|
||||||
|
binding.attribute = curveID;
|
||||||
|
i++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
bindings.genericBindings = genericBindings.ToArray();
|
||||||
|
return bindings;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public class ValueDelta
|
public class ValueDelta
|
||||||
@ -754,6 +798,8 @@ namespace AssetStudio
|
|||||||
public byte customType;
|
public byte customType;
|
||||||
public byte isPPtrCurve;
|
public byte isPPtrCurve;
|
||||||
|
|
||||||
|
public GenericBinding() { }
|
||||||
|
|
||||||
public GenericBinding(ObjectReader reader)
|
public GenericBinding(ObjectReader reader)
|
||||||
{
|
{
|
||||||
var version = reader.version;
|
var version = reader.version;
|
||||||
@ -779,6 +825,8 @@ namespace AssetStudio
|
|||||||
public GenericBinding[] genericBindings;
|
public GenericBinding[] genericBindings;
|
||||||
public PPtr<Object>[] pptrCurveMapping;
|
public PPtr<Object>[] pptrCurveMapping;
|
||||||
|
|
||||||
|
public AnimationClipBindingConstant() { }
|
||||||
|
|
||||||
public AnimationClipBindingConstant(ObjectReader reader)
|
public AnimationClipBindingConstant(ObjectReader reader)
|
||||||
{
|
{
|
||||||
int numBindings = reader.ReadInt32();
|
int numBindings = reader.ReadInt32();
|
||||||
|
@ -865,7 +865,7 @@ namespace AssetStudio
|
|||||||
{
|
{
|
||||||
var m_Clip = animationClip.m_MuscleClip.m_Clip;
|
var m_Clip = animationClip.m_MuscleClip.m_Clip;
|
||||||
var streamedFrames = m_Clip.m_StreamedClip.ReadData();
|
var streamedFrames = m_Clip.m_StreamedClip.ReadData();
|
||||||
var m_ClipBindingConstant = animationClip.m_ClipBindingConstant;
|
var m_ClipBindingConstant = animationClip.m_ClipBindingConstant ?? m_Clip.ConvertValueArrayToGenericBinding();
|
||||||
for (int frameIndex = 1; frameIndex < streamedFrames.Count - 1; frameIndex++)
|
for (int frameIndex = 1; frameIndex < streamedFrames.Count - 1; frameIndex++)
|
||||||
{
|
{
|
||||||
var frame = streamedFrames[frameIndex];
|
var frame = streamedFrames[frameIndex];
|
||||||
|
Loading…
x
Reference in New Issue
Block a user