/// <summary> Utility method for applying pose animation </summary>
public void ApplyPoseToVertexData(Pose pose, VertexData data, float influence)
{
if (this.targetMode == VertexAnimationTargetMode.Hardware)
{
// Hardware
// If target mode is hardware, need to bind our pose buffer
// to a target texcoord
Debug.Assert(data.HWAnimationDataList.Count == 0, "Haven't set up hardware vertex animation elements!");
// no use for TempBlendedBufferInfo here btw
// Set pose target as required
var hwIndex = data.HWAnimDataItemsUsed++;
// If we try to use too many poses, ignore extras
if (hwIndex < data.HWAnimationDataList.Count)
{
var animData = data.HWAnimationDataList[hwIndex];
data.vertexBufferBinding.SetBinding(animData.TargetVertexElement.Source,
pose.GetHardwareVertexBuffer(data.vertexCount));
// save final influence in parametric
animData.Parametric = influence;
}
}
else
{
// Software
Mesh.SoftwareVertexPoseBlend(influence, pose.VertexOffsetMap, data);
}
}