public InputConfiguration()
    {
        if (Application.isBatchMode)
        {
            GetBatchModeArgs();
        }
        else
        {
            RootDirectory = EditorUtility.OpenFolderPanel("Select model root folder with ModelInfo.json", Application.dataPath, "");
            OutputDir     = EditorUtility.OpenFolderPanel("Select model output directory", Application.dataPath, "");
        }
        if (string.IsNullOrEmpty(OutputDir))
        {
            OutputDir = Application.dataPath + "/StreamingAssets/";
            Log.Info("OutputDir is empty, setting it to: " + OutputDir);
        }
        if (string.IsNullOrEmpty(LogFileDir))
        {
            LogFileDir = Application.persistentDataPath + "/PreprocessingLogs/";
            Log.Info("LogFile is empty, setting it to: " + LogFileDir);
        }

        LoggingConfiguration.Configure(LogFileDir);

        if (string.IsNullOrEmpty(RootDirectory))
        {
            if (Application.isBatchMode)
            {
                DisplayHelp();
            }
            throw Log.ThrowError("Path cannot be null!", new IOException());
        }
    }
    private ModelImport.ModelImporter InitializeModelImporter(string modelType, ModelConverter modelConverter, string rootDirectory)
    {
        switch (modelType)
        {
        case "UnityNative":
            return(new GOModel(rootDirectory));

        case "ConversionRequired":
            modelConverter.Convert(rootDirectory);
            return(new ConvertedModel(modelConverter.OutputRootDir));

        case "ConvertedModel":
            return(new ConvertedModel(rootDirectory));

        case "VolumetricModel":
            return(new VolumetricModel(rootDirectory));

        default:
            throw Log.ThrowError("Incorrect ModelImporter type declared!", new IOException());
        }
    }