namespace UnityEngine.Animations.Rigging { /// /// The TwistChain constraint data. /// [System.Serializable] public struct TwistChainConstraintData : IAnimationJobData, ITwistChainConstraintData { [SerializeField] private Transform m_Root; [SerializeField] private Transform m_Tip; [SyncSceneToStream, SerializeField] private Transform m_RootTarget; [SyncSceneToStream, SerializeField] private Transform m_TipTarget; [SerializeField] private AnimationCurve m_Curve; /// public Transform root { get => m_Root; set => m_Root = value; } /// public Transform tip { get => m_Tip; set => m_Tip = value; } /// public Transform rootTarget { get => m_RootTarget; set => m_RootTarget = value; } /// public Transform tipTarget { get => m_TipTarget; set => m_TipTarget = value; } /// public AnimationCurve curve { get => m_Curve; set => m_Curve = value; } /// bool IAnimationJobData.IsValid() => !(root == null || tip == null || !tip.IsChildOf(root) || rootTarget == null || tipTarget == null || curve == null); /// void IAnimationJobData.SetDefaultValues() { root = tip = rootTarget = tipTarget = null; curve = AnimationCurve.Linear(0f, 0f, 1f, 1f); } } /// /// TwistChain constraint /// [DisallowMultipleComponent, AddComponentMenu("Animation Rigging/Twist Chain Constraint")] [HelpURL("https://docs.unity3d.com/Packages/com.unity.animation.rigging@1.3/manual/constraints/TwistChainConstraint.html")] public class TwistChainConstraint : RigConstraint< TwistChainConstraintJob, TwistChainConstraintData, TwistChainConstraintJobBinder > { } }