private void AddClip(TakeInfo takeInfo)
        {
            this.m_ClipAnimations.InsertArrayElementAtIndex(this.m_ClipAnimations.arraySize);
            AnimationClipInfoProperties animationClipInfoAtIndex = this.GetAnimationClipInfoAtIndex(this.m_ClipAnimations.arraySize - 1);

            animationClipInfoAtIndex.name = this.MakeUniqueClipName(takeInfo.defaultClipName, -1);
            this.SetupTakeNameAndFrames(animationClipInfoAtIndex, takeInfo);
            animationClipInfoAtIndex.wrapMode                = 0;
            animationClipInfoAtIndex.loop                    = false;
            animationClipInfoAtIndex.orientationOffsetY      = 0f;
            animationClipInfoAtIndex.level                   = 0f;
            animationClipInfoAtIndex.cycleOffset             = 0f;
            animationClipInfoAtIndex.loopTime                = false;
            animationClipInfoAtIndex.loopBlend               = false;
            animationClipInfoAtIndex.loopBlendOrientation    = false;
            animationClipInfoAtIndex.loopBlendPositionY      = false;
            animationClipInfoAtIndex.loopBlendPositionXZ     = false;
            animationClipInfoAtIndex.keepOriginalOrientation = false;
            animationClipInfoAtIndex.keepOriginalPositionY   = true;
            animationClipInfoAtIndex.keepOriginalPositionXZ  = false;
            animationClipInfoAtIndex.heightFromFeet          = false;
            animationClipInfoAtIndex.mirror                  = false;
            animationClipInfoAtIndex.maskType                = ClipAnimationMaskType.CreateFromThisModel;
            AvatarMask mask = new AvatarMask();

            string[]         humanTransforms  = null;
            SerializedObject serializedObject = animationClipInfoAtIndex.maskTypeProperty.serializedObject;
            ModelImporter    targetObject     = serializedObject.targetObject as ModelImporter;

            if ((this.animationType == ModelImporterAnimationType.Human) && !targetObject.isAssetOlderOr42)
            {
                humanTransforms = AvatarMaskUtility.GetAvatarHumanTransform(serializedObject, targetObject.transformPaths);
                if (humanTransforms == null)
                {
                    return;
                }
            }
            AvatarMaskUtility.UpdateTransformMask(mask, targetObject.transformPaths, humanTransforms);
            animationClipInfoAtIndex.MaskToClip(mask);
            animationClipInfoAtIndex.ClearEvents();
            animationClipInfoAtIndex.ClearCurves();
            UnityEngine.Object.DestroyImmediate(mask);
        }
 private void SetTransformMaskFromReference(AnimationClipInfoProperties clipInfo)
 {
     string[] referenceTransformPaths = this.referenceTransformPaths;
     string[] humanTransforms         = (this.animationType != ModelImporterAnimationType.Human) ? null : AvatarMaskUtility.GetAvatarHumanTransform(base.serializedObject, referenceTransformPaths);
     AvatarMaskUtility.UpdateTransformMask(clipInfo.transformMaskProperty, referenceTransformPaths, humanTransforms);
 }