private void OnModelImporteDialogWindowYes(ModelImportDialogWindow sender)
        {
            EditorUtility.SetDirty(sender.ModelImportData);
            ModelImportDataHelper.SetModelImporterImportSettings(sender.ModelImporter, sender.ModelImportData);
            _state = SkipImportAfterReimportState;
            AssetDatabase.ImportAsset(sender.ModelImporter.assetPath, ImportAssetOptions.ForceUpdate);
            var prefab = PrefabHelper.CreateOrReplacePrefab(sender.ModelPath);

            if (sender.ModelImportData.GenerateMesh)
            {
                MeshHelper.CopyMesh(prefab);
            }
            GenerateAnimatorIfRequired(sender.ModelImporter, sender.ModelImportData);
        }
        private void HandleModelImportData(ModelImportData mid, string modelPath)
        {
            if (ModelImportDataHelper.CheckModeImportDataForFull(mid, ModelImporter))
            {
                ModelImportDataHelper.SetModelImporterImportSettings(ModelImporter, mid);
            }
            else
            {
                ModelImportDataHelper.FillModelImportDataSettings(ModelImporter, mid);
            }
            var window = Dialog.ShowDialog <ModelImportDialogWindow>("Model importer", DialogType.Yes);

            window.Initialize(ModelImporter, mid, modelPath);
            window.Yes += OnModelImporteDialogWindowYes;
        }
        private void OnPostprocessModel(GameObject model)
        {
            if (!PrefsHelper.ModeImporterActive)
            {
                return;
            }
            if (_state == SkipImportAfterReimportState)
            {
                _state = DefaultImport;
                return;
            }
            if (_state == SetAnimatorState)
            {
                _state = DefaultImport;
                SetAnimatorControllerToModel(assetPath, _animatorController.Animator);
                return;
            }
            var gameObjectsWithWrongScale = ModelImportDataHelper.GetGameObjectsWithWrongScale(model);

            if (gameObjectsWithWrongScale.Count > 0)
            {
                var wrongScaleWindow = Dialog.ShowDialog <WrongScaleWindow>("Wrong scale", DialogType.Yes);
                wrongScaleWindow.Initialize(gameObjectsWithWrongScale, assetPath);
                return;
            }
            if (!ModelImportDataHelper.CheckForRootPosition(model))
            {
                Dialog.ShowDialog <WrongPositionOrRotationWindow>("Wrong position", DialogType.Yes);
                return;
            }
            if (!ModelImportDataHelper.CheckForRootRotation(model))
            {
                Dialog.ShowDialog <WrongPositionOrRotationWindow>("Wrong rotation", DialogType.Yes);
                return;
            }
            var modelImportData = ModelImportDataHelper.LoadModeImportData(assetPath);

            if (modelImportData != null)
            {
                HandleModelImportData(modelImportData, assetPath);
                return;
            }
            var mid = ModelImportDataHelper.CreateModelImportData(assetPath);

            HandleModelImportData(mid, assetPath);
        }
 public void Initialize(string assetPath)
 {
     _path       = assetPath;
     _mid        = ModelImportDataHelper.LoadModeImportData(assetPath);
     _animations = LoadAnimations();
 }