You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
71 lines
1.8 KiB
C#
71 lines
1.8 KiB
C#
using UnityEngine;
|
|
using System.Collections;
|
|
|
|
namespace RootMotion.FinalIK {
|
|
|
|
/// <summary>
|
|
/// The base abstract class for all class that are translating a hierarchy of bones to match the translation of bones in another hierarchy.
|
|
/// </summary>
|
|
public abstract class Poser: SolverManager {
|
|
|
|
/// <summary>
|
|
/// Reference to the other Transform (should be identical to this one)
|
|
/// </summary>
|
|
public Transform poseRoot;
|
|
/// <summary>
|
|
/// The master weight.
|
|
/// </summary>
|
|
[Range(0f, 1f)] public float weight = 1f;
|
|
/// <summary>
|
|
/// Weight of localRotation matching
|
|
/// </summary>
|
|
[Range(0f, 1f)] public float localRotationWeight = 1f;
|
|
/// <summary>
|
|
/// Weight of localPosition matching
|
|
/// </summary>
|
|
[Range(0f, 1f)] public float localPositionWeight;
|
|
|
|
/// <summary>
|
|
/// Map this instance to the poseRoot.
|
|
/// </summary>
|
|
public abstract void AutoMapping();
|
|
public virtual void AutoMapping(Transform[] bones) { }
|
|
|
|
/// <summary>
|
|
/// For manual update of the poser.
|
|
/// </summary>
|
|
public void UpdateManual() {
|
|
UpdatePoser();
|
|
}
|
|
|
|
private bool initiated;
|
|
protected abstract void InitiatePoser();
|
|
protected abstract void UpdatePoser();
|
|
protected abstract void FixPoserTransforms();
|
|
|
|
/*
|
|
* Updates the solver. If you need full control of the execution order of your IK solvers, disable this script and call UpdateSolver() instead.
|
|
* */
|
|
protected override void UpdateSolver() {
|
|
if (!initiated) InitiateSolver();
|
|
if (!initiated) return;
|
|
|
|
UpdatePoser();
|
|
}
|
|
|
|
/*
|
|
* Initiates the %IK solver
|
|
* */
|
|
protected override void InitiateSolver() {
|
|
if (initiated) return;
|
|
InitiatePoser();
|
|
initiated = true;
|
|
}
|
|
|
|
protected override void FixTransforms() {
|
|
if (!initiated) return;
|
|
FixPoserTransforms();
|
|
}
|
|
}
|
|
}
|