MaskToClip() public method

public MaskToClip ( AvatarMask mask ) : void
mask AvatarMask
return void
示例#1
0
        private void AvatarMaskSettings(AnimationClipInfoProperties clipInfo)
        {
            if (clipInfo == null || !((UnityEngine.Object) this.m_AnimationClipEditor != (UnityEngine.Object)null))
            {
                return;
            }
            this.InitMask(clipInfo);
            int  indentLevel = EditorGUI.indentLevel;
            bool changed     = GUI.changed;

            ModelImporterClipEditor.m_MaskFoldout = EditorGUILayout.Foldout(ModelImporterClipEditor.m_MaskFoldout, ModelImporterClipEditor.styles.Mask);
            GUI.changed = changed;
            if (clipInfo.maskType == ClipAnimationMaskType.CreateFromThisModel && !this.m_MaskInspector.IsMaskUpToDate())
            {
                GUILayout.BeginHorizontal(EditorStyles.helpBox, new GUILayoutOption[0]);
                GUILayout.Label("Mask does not match hierarchy. Animation might not import correctly", EditorStyles.wordWrappedMiniLabel, new GUILayoutOption[0]);
                GUILayout.FlexibleSpace();
                GUILayout.BeginVertical();
                GUILayout.Space(5f);
                if (GUILayout.Button("Fix Mask"))
                {
                    this.SetTransformMaskFromReference(clipInfo);
                }
                GUILayout.EndVertical();
                GUILayout.EndHorizontal();
            }
            else if (clipInfo.maskType == ClipAnimationMaskType.CopyFromOther && clipInfo.MaskNeedsUpdating())
            {
                GUILayout.BeginHorizontal(EditorStyles.helpBox, new GUILayoutOption[0]);
                GUILayout.Label("Source Mask has changed since last import. It must be Updated", EditorStyles.wordWrappedMiniLabel, new GUILayoutOption[0]);
                GUILayout.FlexibleSpace();
                GUILayout.BeginVertical();
                GUILayout.Space(5f);
                if (GUILayout.Button("Update Mask"))
                {
                    clipInfo.MaskToClip(clipInfo.maskSource);
                }
                GUILayout.EndVertical();
                GUILayout.EndHorizontal();
            }
            if (ModelImporterClipEditor.m_MaskFoldout)
            {
                ++EditorGUI.indentLevel;
                this.m_MaskInspector.OnInspectorGUI();
            }
            EditorGUI.indentLevel = indentLevel;
        }
        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 AvatarMaskSettings(AnimationClipInfoProperties clipInfo)
        {
            if (clipInfo != null && m_AnimationClipEditor != null)
            {
                InitMask(clipInfo);
                int prevIndent = EditorGUI.indentLevel;

                // Don't make toggling foldout cause GUI.changed to be true (shouldn't cause undoable action etc.)
                bool wasChanged = GUI.changed;
                m_MaskFoldout = EditorGUILayout.Foldout(m_MaskFoldout, styles.Mask, true);
                GUI.changed   = wasChanged;

                if (clipInfo.maskType == ClipAnimationMaskType.CreateFromThisModel && !m_MaskInspector.IsMaskUpToDate() && !m_MaskInspector.IsMaskEmpty())
                {
                    GUILayout.BeginHorizontal(EditorStyles.helpBox);
                    GUILayout.Label(styles.MaskHasAPath,
                                    EditorStyles.wordWrappedMiniLabel);
                    GUILayout.FlexibleSpace();
                    GUILayout.BeginVertical();
                    GUILayout.Space(5);
                    if (GUILayout.Button(styles.UpdateMask))
                    {
                        SetTransformMaskFromReference(clipInfo);
                        m_MaskInspector.UpdateTransformInfos();
                    }

                    GUILayout.EndVertical();
                    GUILayout.EndHorizontal();
                }
                else if (clipInfo.maskType == ClipAnimationMaskType.CopyFromOther && clipInfo.MaskNeedsUpdating())
                {
                    GUILayout.BeginHorizontal(EditorStyles.helpBox);
                    GUILayout.Label(styles.SourceMaskHasChanged,
                                    EditorStyles.wordWrappedMiniLabel);
                    GUILayout.FlexibleSpace();
                    GUILayout.BeginVertical();
                    GUILayout.Space(5);
                    if (GUILayout.Button(styles.UpdateMask))
                    {
                        clipInfo.MaskToClip(clipInfo.maskSource);
                    }
                    GUILayout.EndVertical();
                    GUILayout.EndHorizontal();
                }
                else if (clipInfo.maskType == ClipAnimationMaskType.CopyFromOther && !m_MaskInspector.IsMaskUpToDate())
                {
                    GUILayout.BeginHorizontal(EditorStyles.helpBox);
                    GUILayout.Label(styles.SourceMaskHasAPath,
                                    EditorStyles.wordWrappedMiniLabel);
                    GUILayout.FlexibleSpace();
                    GUILayout.BeginVertical();
                    GUILayout.Space(5);
                    GUILayout.EndVertical();
                    GUILayout.EndHorizontal();
                }

                if (m_MaskFoldout)
                {
                    EditorGUI.indentLevel++;
                    m_MaskInspector.OnInspectorGUI();
                }

                EditorGUI.indentLevel = prevIndent;
            }
        }
 private void AvatarMaskSettings(AnimationClipInfoProperties clipInfo)
 {
   if (clipInfo == null || !((UnityEngine.Object) this.m_AnimationClipEditor != (UnityEngine.Object) null))
     return;
   this.InitMask(clipInfo);
   int indentLevel = EditorGUI.indentLevel;
   bool changed = GUI.changed;
   ModelImporterClipEditor.m_MaskFoldout = EditorGUILayout.Foldout(ModelImporterClipEditor.m_MaskFoldout, ModelImporterClipEditor.styles.Mask);
   GUI.changed = changed;
   if (clipInfo.maskType == ClipAnimationMaskType.CreateFromThisModel && !this.m_MaskInspector.IsMaskUpToDate())
   {
     GUILayout.BeginHorizontal(EditorStyles.helpBox, new GUILayoutOption[0]);
     GUILayout.Label("Mask does not match hierarchy. Animation might not import correctly", EditorStyles.wordWrappedMiniLabel, new GUILayoutOption[0]);
     GUILayout.FlexibleSpace();
     GUILayout.BeginVertical();
     GUILayout.Space(5f);
     if (GUILayout.Button("Fix Mask"))
       this.SetTransformMaskFromReference(clipInfo);
     GUILayout.EndVertical();
     GUILayout.EndHorizontal();
   }
   else if (clipInfo.maskType == ClipAnimationMaskType.CopyFromOther && clipInfo.MaskNeedsUpdating())
   {
     GUILayout.BeginHorizontal(EditorStyles.helpBox, new GUILayoutOption[0]);
     GUILayout.Label("Source Mask has changed since last import. It must be Updated", EditorStyles.wordWrappedMiniLabel, new GUILayoutOption[0]);
     GUILayout.FlexibleSpace();
     GUILayout.BeginVertical();
     GUILayout.Space(5f);
     if (GUILayout.Button("Update Mask"))
       clipInfo.MaskToClip(clipInfo.maskSource);
     GUILayout.EndVertical();
     GUILayout.EndHorizontal();
   }
   if (ModelImporterClipEditor.m_MaskFoldout)
   {
     ++EditorGUI.indentLevel;
     this.m_MaskInspector.OnInspectorGUI();
   }
   EditorGUI.indentLevel = indentLevel;
 }