private void CreateAnimatorOverrideController(ImportedAnimationSheet animations, bool useExistingBaseController = false)
        {
            AnimatorOverrideController overrideController;

            string directory = sharedData.animationControllersTargetLocation.GetAndEnsureTargetDirectory(animations.assetDirectory);

            // check if override controller already exists; use this to not loose any references to this in other assets
            string pathForOverrideController = directory + "/" + animations.name + ".overrideController";

            overrideController = AssetDatabase.LoadAssetAtPath <AnimatorOverrideController>(pathForOverrideController);

            RuntimeAnimatorController baseController = _baseController;

            if (useExistingBaseController && overrideController.runtimeAnimatorController != null)
            {
                baseController = overrideController.runtimeAnimatorController;
            }

            if (baseController != null)
            {
                if (overrideController == null)
                {
                    overrideController = new AnimatorOverrideController();
                    AssetDatabase.CreateAsset(overrideController, pathForOverrideController);
                }

                overrideController.runtimeAnimatorController = baseController;

                // set override clips
#if UNITY_5_6_OR_NEWER
                var clipPairs = new List <KeyValuePair <AnimationClip, AnimationClip> >(overrideController.overridesCount);
                overrideController.GetOverrides(clipPairs);

                foreach (var pair in clipPairs)
                {
                    string        animationName = pair.Key.name;
                    AnimationClip clip          = animations.GetClipOrSimilar(animationName);
                    overrideController[animationName] = clip;
                }
#else
                var clipPairs = overrideController.clips;
                for (int i = 0; i < clipPairs.Length; i++)
                {
                    string        animationName = clipPairs[i].originalClip.name;
                    AnimationClip clip          = animations.GetClipOrSimilar(animationName);
                    clipPairs[i].overrideClip = clip;
                }
                overrideController.clips = clipPairs;
#endif

                EditorUtility.SetDirty(overrideController);
            }
            else
            {
                Debug.LogWarning("No Animator Controller found as a base for the Override Controller");
            }
        }
        public void CreateAnimatorOverrideController(ImportedAnimationSheet animations, bool useExistingBaseController = false)
        {
            AnimatorOverrideController overrideController;

            // check if override controller already exists; use this to not loose any references to this in other assets
            string pathForOverrideController = animations.assetDirectory + "/" + animations.name + ".overrideController";

            overrideController = AssetDatabase.LoadAssetAtPath <AnimatorOverrideController>(pathForOverrideController);

            RuntimeAnimatorController baseController = _baseController;

            if (useExistingBaseController && overrideController.runtimeAnimatorController != null)
            {
                baseController = overrideController.runtimeAnimatorController;
            }

            if (baseController != null)
            {
                if (overrideController == null)
                {
                    overrideController = new AnimatorOverrideController();
                    AssetDatabase.CreateAsset(overrideController, pathForOverrideController);
                }

                overrideController.runtimeAnimatorController = baseController;

                // set override clips
                var clipPairs = overrideController.clips;
                for (int i = 0; i < clipPairs.Length; i++)
                {
                    string        animationName = clipPairs[i].originalClip.name;
                    AnimationClip clip          = animations.GetClipOrSimilar(animationName);
                    clipPairs[i].overrideClip = clip;
                }
                overrideController.clips = clipPairs;

                EditorUtility.SetDirty(overrideController);
            }
            else
            {
                Debug.LogWarning("No Animator Controller found as a base for the Override Controller");
            }
        }