예제 #1
0
        async Task ExecuteCommandGenerate(object o)
        {
            FieldView.ShowProgressBar();

            updateBasePoly();

            var hasIntersectingPolygon = World.Fields.Any(r => r.Polygon.CheckForIntersections());

            if (hasIntersectingPolygon &&
                !ParentPresenter.MasterView.ShowInfoYesNoMessage("Warning",
                                                                 "At least one polygon has intersecting lines. Do you still want to continue?"))
            {
                return;
            }
            FieldView.UpdateProgressBar("Starting generation");

            await composer.Compose(World);

            var layer = composer.ComposedLayer;

            FieldView.UpdateProgressBar("Object initialization");
            await Task.Factory.StartNew(() =>
            {
                ParentPresenter.HeightmapPresenter.InitializeGeneratedObjects(layer);
                ParentPresenter.MasterView.SelectHeightmapView();
            }
                                        , CancellationToken.None
                                        , TaskCreationOptions.None
                                        , _uiScheduler);



            FieldView.CloseProgressBar();
        }