using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using Rimworld_Animations; namespace Rimworld_Animations_Patch { public class PawnAnimationClipExt : PawnAnimationClip { public List addons = new List(); public override void buildSimpleCurves() { base.buildSimpleCurves(); int keyframePosition = 0; for (int i = 0; i < keyframes.Count; i++) { PawnKeyframeExt keyframe = keyframes[i] as PawnKeyframeExt; if (keyframe.atTick.HasValue) { foreach (ActorAddon addon in addons) { if (keyframe.addonKeyframes.Any(x => x.AddonName == addon.AddonName) == false) { keyframe.addonKeyframes.Add(new AddonKeyframe(addon.AddonName)); } addon.PosX.Add((float)keyframe.atTick / (float)duration, keyframe.GetAddonKeyframe(addon.AddonName).PosX, true); addon.PosZ.Add((float)keyframe.atTick / (float)duration, keyframe.GetAddonKeyframe(addon.AddonName).PosZ, true); addon.Rotation.Add((float)keyframe.atTick / (float)duration, keyframe.GetAddonKeyframe(addon.AddonName).Rotation, true); } } else { foreach (ActorAddon addon in addons) { if (keyframe.addonKeyframes.Any(x => x.AddonName == addon.AddonName) == false) { keyframe.addonKeyframes.Add(new AddonKeyframe(addon.AddonName)); } addon.PosX.Add((float)keyframePosition / (float)duration, keyframe.GetAddonKeyframe(addon.AddonName).PosX, true); addon.PosZ.Add((float)keyframePosition / (float)duration, keyframe.GetAddonKeyframe(addon.AddonName).PosZ, true); addon.Rotation.Add((float)keyframePosition / (float)duration, keyframe.GetAddonKeyframe(addon.AddonName).Rotation, true); } keyframePosition += keyframe.tickDuration; } } } } }