public BoneWeight Map(Vector3 pos)
 {
     for (int i = 0; i < weights.Length; i++)
     {
         weights[i] = 0f;
     }
     PaintWeights(pos, weights);
     return(BoneWeightUtils.FindBestBones(weights));
 }
Exemple #2
0
        private void Override(Ragdoll ragdoll, Vector3[] targetPositions, BoneWeight[] targetWeights, ref Transform[] bones, ref Matrix4x4[] bindposes, Matrix4x4 targetMeshToWorld)
        {
            SkinOverrideVolume[] componentsInChildren = GetComponentsInChildren <SkinOverrideVolume>();
            if (componentsInChildren.Length == 0)
            {
                return;
            }
            int num = bindposes.Length;

            Array.Resize(ref bindposes, bindposes.Length + componentsInChildren.Length);
            Array.Resize(ref bones, bones.Length + componentsInChildren.Length);
            for (int i = 0; i < componentsInChildren.Length; i++)
            {
                SkinOverrideVolume skinOverrideVolume = componentsInChildren[i];
                bones[num + i]     = skinOverrideVolume.transform;
                bindposes[num + i] = skinOverrideVolume.GetBindPose(ragdoll.transform) * targetMeshToWorld;
            }
            float[] array = new float[componentsInChildren.Length];
            for (int j = 0; j < targetPositions.Length; j++)
            {
                float num2 = 0f;
                for (int k = 0; k < componentsInChildren.Length; k++)
                {
                    SkinOverrideVolume skinOverrideVolume2 = componentsInChildren[k];
                    array[k] = skinOverrideVolume2.GetWeight(targetPositions[j]);
                    num2    += array[k];
                }
                if (num2 != 0f)
                {
                    BoneWeight b = BoneWeightUtils.FindBestBones(array);
                    b.boneIndex0    += num;
                    b.boneIndex1    += num;
                    b.boneIndex2    += num;
                    b.boneIndex3    += num;
                    targetWeights[j] = BoneWeightUtils.Lerp(targetWeights[j], b, num2);
                }
            }
        }