Files
0A-KFCommonUtilityLib/KFAttached/RigAdaptors/Adaptors/BlendConstraintAdaptor.cs
2025-06-04 16:13:32 +09:30

57 lines
2.1 KiB
C#

using UnityEngine;
using UnityEngine.Animations.Rigging;
[AddComponentMenu("")]
public class BlendConstraintAdaptor : RigAdaptorAbs
{
[SerializeField]
private string m_ConstrainedObject;
[SerializeField]
private Transform m_SourceA;
[SerializeField]
private Transform m_SourceB;
[SerializeField]
private bool m_BlendPosition;
[SerializeField]
private bool m_BlendRotation;
[SerializeField]
private float m_PositionWeight;
[SerializeField]
private float m_RotationWeight;
[SerializeField]
private bool m_MaintainPositionOffsets;
[SerializeField]
private bool m_MaintainRotationOffsets;
public override void ReadRigData()
{
var constraint = GetComponent<BlendConstraint>();
weight = constraint.weight;
m_ConstrainedObject = constraint.data.constrainedObject?.name;
m_SourceA = constraint.data.sourceObjectA;
m_SourceB = constraint.data.sourceObjectB;
m_BlendPosition = constraint.data.blendPosition;
m_BlendRotation = constraint.data.blendRotation;
m_PositionWeight = constraint.data.positionWeight;
m_RotationWeight = constraint.data.rotationWeight;
m_MaintainPositionOffsets = constraint.data.maintainPositionOffsets;
m_MaintainRotationOffsets = constraint.data.maintainRotationOffsets;
}
public override void FindRigTargets()
{
var constraint = GetComponent<BlendConstraint>();
constraint.Reset();
constraint.weight = weight;
constraint.data.constrainedObject = targetRoot.FindInAllChildren(m_ConstrainedObject);
constraint.data.sourceObjectA = m_SourceA;
constraint.data.sourceObjectB = m_SourceB;
constraint.data.blendPosition = m_BlendPosition;
constraint.data.blendRotation = m_BlendRotation;
constraint.data.positionWeight = m_PositionWeight;
constraint.data.rotationWeight = m_RotationWeight;
constraint.data.maintainPositionOffsets = m_MaintainPositionOffsets;
constraint.data.maintainRotationOffsets = m_MaintainRotationOffsets;
}
}