initial upload
This commit is contained in:
@ -0,0 +1,78 @@
|
||||
using UnityEngine;
|
||||
using System.Collections;
|
||||
|
||||
namespace RootMotion.FinalIK {
|
||||
|
||||
/// <summary>
|
||||
/// Maps a single bone to a node in %IK Solver
|
||||
/// </summary>
|
||||
[System.Serializable]
|
||||
public class IKMappingBone: IKMapping {
|
||||
|
||||
#region Main Interface
|
||||
|
||||
/// <summary>
|
||||
/// The bone transform.
|
||||
/// </summary>
|
||||
public Transform bone;
|
||||
|
||||
/// <summary>
|
||||
/// The weight of maintaining the bone's rotation after solver has finished.
|
||||
/// </summary>
|
||||
[Range(0f, 1f)]
|
||||
public float maintainRotationWeight = 1f;
|
||||
|
||||
/// <summary>
|
||||
/// Determines whether this IKMappingBone is valid.
|
||||
/// </summary>
|
||||
public override bool IsValid(IKSolver solver, ref string message) {
|
||||
if (!base.IsValid(solver, ref message)) return false;
|
||||
|
||||
if (bone == null) {
|
||||
message = "IKMappingBone's bone is null.";
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
#endregion Main Interface
|
||||
|
||||
private BoneMap boneMap = new BoneMap();
|
||||
|
||||
public IKMappingBone() {}
|
||||
|
||||
public IKMappingBone(Transform bone) {
|
||||
this.bone = bone;
|
||||
}
|
||||
|
||||
public void StoreDefaultLocalState() {
|
||||
boneMap.StoreDefaultLocalState();
|
||||
}
|
||||
|
||||
public void FixTransforms() {
|
||||
boneMap.FixTransform(false);
|
||||
}
|
||||
|
||||
/*
|
||||
* Initiating and setting defaults
|
||||
* */
|
||||
public override void Initiate(IKSolverFullBody solver) {
|
||||
if (boneMap == null) boneMap = new BoneMap();
|
||||
|
||||
boneMap.Initiate(bone, solver);
|
||||
}
|
||||
|
||||
/*
|
||||
* Pre-solving
|
||||
* */
|
||||
public void ReadPose() {
|
||||
boneMap.MaintainRotation();
|
||||
}
|
||||
|
||||
public void WritePose(float solverWeight) {
|
||||
// Rotating back to the last maintained rotation
|
||||
boneMap.RotateToMaintain(solverWeight * maintainRotationWeight);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user