using System; using System.Linq; using RootMotion.FinalIK; using UnityEngine; public abstract class LimbIKData : IKCtrlData { public LimbIKData(FullBodyIKCtrl ik_ctrl, FBIKChain chain, Transform tgt_bone, bool use_old = false) : base(ik_ctrl, tgt_bone, use_old, false) { this.Chain = chain; this.m_ChainBones = (from node in this.Chain.nodes select node.transform).ToArray(); } public override void SetPullState(bool pull_on) { if (this.m_OrijinPull < 0f) { this.m_OrijinPull = this.Chain.pull; } if (pull_on) { this.Chain.pull = this.m_OrijinPull; } else { this.Chain.pull = 0.1f; } } public readonly FBIKChain Chain; protected float m_OrijinPull = -1f; }