public static void RemoveBone(this EditableBoneWeight editableBoneWeight, int boneIndex) { int channelCount = editableBoneWeight.GetChannelCount(); for (int i = 0; i < channelCount; ++i) { BoneWeightData data = editableBoneWeight.GetBoneWeightData(i); if (data.boneIndex > boneIndex) { data.boneIndex -= 1; } else if (data.boneIndex == boneIndex) { data.boneIndex = 0; data.weight = 0f; editableBoneWeight.EnableChannel(i, false); } editableBoneWeight.SetBoneWeightData(i, data); } editableBoneWeight.NormalizeChannels(); editableBoneWeight.SortChannels(); }
public static void ClampChannels(this EditableBoneWeight editableBoneWeight, int numChannels, bool sortChannels = true) { if (sortChannels) { editableBoneWeight.SortChannels(); } while (editableBoneWeight.GetChannelCount() > numChannels) { editableBoneWeight.RemoveChannel(numChannels); } }