/// <summary>
    /// Called when the filter parametrisation is finished.
    /// </summary>
    /// <param name="sender">Is null.</param>
    /// <param name="args">Is null.</param>
    private void FilterArea_CloseArea(object sender, System.EventArgs args)
    {
        if (!(FilterArea.AreaResult is float value))
        {
            return;
        }

        FilterArea.CloseArea -= FilterArea_CloseArea;
        AreaContent.SetActive(false);
        FilterArea.gameObject.SetActive(false);
        _loadingTask = Task.Run(async() =>
        {
            try
            {
                if (_scripts == null || !_scripts.Any())
                {
                    _snackBar.ShowError("Connectivity error");
                    return;
                }

                _snackBar.ClearError();

                var targetFile = Path.Combine(_persistentPath, "reduced.obj");
                //var scriptToUse = _scripts.FirstOrDefault(s => s.FileName.Equals("QuadricEdgeCollapseDecimation.mlx")).LstFilters.FirstOrDefault(f => f.Name.Equals("Simplification: Quadric Edge Collapse Decimation"));
                var scriptToUse = _scripts.FirstOrDefault(s => s.LstFilters.Any(f => f.Name.Equals("Simplification: Quadric Edge Collapse Decimation")));

                if (scriptToUse == null)
                {
                    _snackBar.ShowError("No suitable script on server!");
                    return;
                }

                var filter = scriptToUse.LstFilters.FirstOrDefault(f => f.Name.Equals("Simplification: Quadric Edge Collapse Decimation"));

                if (filter == null)
                {
                    _snackBar.ShowError("No suitable script on server!");
                    return;
                }

                var param = filter.LstParameters.FirstOrDefault(p => p.Name.Equals("TargetPerc"));

                if (param == null)
                {
                    _snackBar.ShowError("No suitable script on server!");
                    return;
                }
                else
                {
                    _snackBar.ClearError();
                }

                var paramValue     = (double)value;
                paramValue         = Math.Round(paramValue, 2);
                param.DefaultValue = paramValue.ToString(CultureInfo.InvariantCulture);
                var stream         = File.Open(_fileToReduce, FileMode.Open);
                var fileName       = _fileToReduce.Substring(_fileToReduce.LastIndexOf(Path.DirectorySeparatorChar) + 1);

                FileParameter file = new FileParameter(stream, fileName);
                var paramList      = new List <ScriptParameterFilter>();
                var dictionary     = new Dictionary <string, string> {
                    { param.Name, param.DefaultValue }
                };
                paramList.Add(new ScriptParameterFilter
                {
                    FilterName      = filter.Name,
                    FilterParameter = dictionary
                });
                var paramJson = JsonConvert.SerializeObject(paramList);
                var jobResult = await _client.UploadJobAsync(file, paramJson, scriptToUse.FileName, "1");

                if (jobResult == null || jobResult.ResultCode.Number != 0)
                {
                    _snackBar.ShowError("Connectivity error");
                    return;
                }

                _snackBar.ClearError();
                _snackBar.UpdateInfo(jobResult);

                var reducedResult = await _client.DownloadJobFileResultAsync(jobResult.FileResultName, jobResult.JobId);

                if (reducedResult == null)
                {
                    _snackBar.ShowError("Connectivity error");
                    return;
                }

                if (File.Exists(targetFile))
                {
                    File.Delete(targetFile);
                }

                using (reducedResult.Stream)
                    using (var resultStream = File.Open(targetFile, FileMode.CreateNew))
                    {
                        await reducedResult.Stream.CopyToAsync(resultStream);
                        _controller.MeshFile = targetFile;
                    }
            }
            catch (Exception e)
            {
                Debug.Log($"Exception Occurred: {e}");
            }
        });
    }