public override void OnInspectorGUI()
    {
        serializedObject.UpdateIfDirtyOrScript();

        EditorGUILayout.PropertyField(animator);

        if (animator.objectReferenceValue != null)
        {
            var animatorController =
                AnimatorControllerExtension.GetEffectiveAnimatorController((Animator)animator.objectReferenceValue);
            controller.objectReferenceValue = animatorController;
        }
        else
        {
            controller.objectReferenceValue = null;
        }

        EditorGUILayout.ObjectField("AnimatorController", controller.objectReferenceValue, typeof(AnimatorController),
                                    false);

        EditorGUILayout.PropertyField(emitType);

        EditorGUILayout.PropertyField(data);

        serializedObject.ApplyModifiedProperties();
    }
    private void CreateStateMachine()
    {
        if (avatarPreview == null || avatarPreview.Animator == null)
        {
            return;
        }

        if (controller == null)
        {
            controller           = new AnimatorController();
            controller.hideFlags = HideFlags.DontSave;
            controller.AddLayer("preview");
            stateMachine = controller.layers[0].stateMachine;

            CreateParameters();
            state                  = stateMachine.AddState("preview");
            state.motion           = previewedMotion;
            state.iKOnFeet         = avatarPreview.IKOnFeet;
            state.hideFlags        = HideFlags.DontSave;
            stateMachine.hideFlags = HideFlags.DontSave;

            AnimatorController.SetAnimatorController(avatarPreview.Animator, controller);

            controller.AppendOnAnimatorControllerDirtyCallback(ControllerDitry);

            controllerIsDitry = false;
        }

        if (AnimatorControllerExtension.GetEffectiveAnimatorController(avatarPreview.Animator) != controller)
        {
            AnimatorController.SetAnimatorController(avatarPreview.Animator, controller);
        }
    }
    public override void OnInspectorGUI()
    {
        serializedObject.UpdateIfDirtyOrScript();

        EditorGUILayout.PropertyField(animator);

        if (GUILayout.Button("Auto Fill"))
        {
            if (animator.objectReferenceValue != null)
            {
                AnimatorController animatorController = AnimatorControllerExtension.GetEffectiveAnimatorController((Animator)animator.objectReferenceValue);
                controller.objectReferenceValue = animatorController;
            }
            else
            {
                controller.objectReferenceValue = null;
            }
        }

        EditorGUILayout.PropertyField(controller);


        serializedObject.ApplyModifiedProperties();
    }