49 lines
986 B
C#
49 lines
986 B
C#
using System;
|
|
using UnityEngine;
|
|
|
|
namespace RootMotion.FinalIK
|
|
{
|
|
[Serializable]
|
|
public class ConstraintPositionOffset : Constraint
|
|
{
|
|
public Vector3 offset;
|
|
|
|
private Vector3 defaultLocalPosition;
|
|
|
|
private Vector3 lastLocalPosition;
|
|
|
|
private bool initiated;
|
|
|
|
private bool positionChanged => transform.localPosition != lastLocalPosition;
|
|
|
|
public override void UpdateConstraint()
|
|
{
|
|
if (!(weight <= 0f) && base.isValid)
|
|
{
|
|
if (!initiated)
|
|
{
|
|
defaultLocalPosition = transform.localPosition;
|
|
lastLocalPosition = transform.localPosition;
|
|
initiated = true;
|
|
}
|
|
if (positionChanged)
|
|
{
|
|
defaultLocalPosition = transform.localPosition;
|
|
}
|
|
transform.localPosition = defaultLocalPosition;
|
|
transform.position += offset * weight;
|
|
lastLocalPosition = transform.localPosition;
|
|
}
|
|
}
|
|
|
|
public ConstraintPositionOffset()
|
|
{
|
|
}
|
|
|
|
public ConstraintPositionOffset(Transform transform)
|
|
{
|
|
base.transform = transform;
|
|
}
|
|
}
|
|
}
|