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); }