Files
2026-03-04 10:03:45 +08:00

50 lines
1.7 KiB
C#

using System;
using System.Collections.Generic;
using UnityEngine;
namespace Gaia.FullSerializer.Internal.DirectConverters
{
public class AnimationCurve_DirectConverter : fsDirectConverter<AnimationCurve>
{
protected override fsResult DoSerialize(AnimationCurve model, Dictionary<string, fsData> serialized)
{
return fsResult.Success + SerializeMember(serialized, "keys", model.keys) + SerializeMember(serialized, "preWrapMode", model.preWrapMode) + SerializeMember(serialized, "postWrapMode", model.postWrapMode);
}
protected override fsResult DoDeserialize(Dictionary<string, fsData> data, ref AnimationCurve model)
{
fsResult success = fsResult.Success;
if (data.ContainsKey("keys"))
{
List<fsData> asList = data["keys"].AsList;
for (int i = 0; i < asList.Count; i++)
{
Dictionary<string, fsData> asDictionary = asList[i].AsDictionary;
if (!asDictionary.ContainsKey("tangentMode"))
{
break;
}
SerializeMember(asDictionary, "weightedMode", WeightedMode.None);
SerializeMember(asDictionary, "inWeight", 0f);
SerializeMember(asDictionary, "outWeight", 0f);
}
}
Keyframe[] value = model.keys;
success += DeserializeMember<Keyframe[]>(data, "keys", out value);
model.keys = value;
WrapMode value2 = model.preWrapMode;
success += DeserializeMember<WrapMode>(data, "preWrapMode", out value2);
model.preWrapMode = value2;
WrapMode value3 = model.postWrapMode;
success += DeserializeMember<WrapMode>(data, "postWrapMode", out value3);
model.postWrapMode = value3;
return success;
}
public override object CreateInstance(fsData data, Type storageType)
{
return new AnimationCurve();
}
}
}