Пример #1
0
    private void RemoveSnapshot(Snapshot snapshot)
    {
        // Delete snaphot item from legend panel
        LegendPanl.RemoveSnapshotItem(snapshot.id);

        // Delete the UI element
        editColourPanel.RemoveSnapshotColour(snapshot.uiTransform.GetSiblingIndex());
        Destroy(snapshot.uiTransform.gameObject);
        GuiUtils.RebuildLayout(SnapshotList);

        // Delete the map layer
        DeleteMapLayer(ref snapshot.mapLayer);

        //infoPanel.ClearEntry(snapshot.id);
        InfoPanel.RemoveEntry(snapshot.id);

        for (int i = 0; i < snapshotCount; i++)
        {
            if (snapshots[i] == snapshot)
            {
                snapshots[i] = null;
                usedSnapshots--;
                if (usedSnapshots < 1)
                {
                    editToggle.isOn = false;
                }
                editToggle.gameObject.SetActive(usedSnapshots >= 1);
                break;
            }
        }

        InfoPanel.UpdateRelativeToSnapshotDropdown();
    }
Пример #2
0
    private void CreateSnapshot(int i, GridData gridData = null)
    {
        var id            = i + 1;
        var snapshotLabel = Translator.Get("Snapshot") + "\n" + id;
        var snapshotName  = Regex.Replace(snapshotLabel, @"\n|\r", "");

        // Create Snapshot
        var snapshot = new Snapshot
        {
            id   = "S" + i,
            name = snapshotName
        };

        snapshot.uiTransform      = Instantiate(snapshotPrefab, SnapshotList, false);
        snapshot.uiTransform.name = snapshotName;
        snapshot.uiTransform.SetSiblingIndex(i);

        // Setup toggle button
        var toggleButton = snapshot.uiTransform.GetComponentInChildren <Toggle>();

        toggleButton.onValueChanged.AddListener((isOn) => OnSnapshotToggleChanged(snapshot, isOn));

        // Setup delete button
        var deleteButton = snapshot.uiTransform.GetComponentInChildren <Button>();

        deleteButton.gameObject.SetActive(false);
        deleteButton.onClick.AddListener(() => OnRemoveSnapshot(snapshot));

        // Setup label
        snapshot.uiTransform.GetComponentInChildren <Text>().text = id.ToString();

        // Setup intput text
        var input = snapshot.uiTransform.GetComponentInChildren <InputField>();

        input.text = snapshotLabel;
        input.onEndEdit.AddListener((value) => OnEndEdit(value, input, snapshot));

        // Create snapshot's map layer
        snapshot.mapLayer = toolLayers.CreateGridMapLayer(snapshotLayerPrefab, $"ContoursSnapshot_{snapshot.id}", gridData);

        // Set Snapshot color
        SetColorsToSnapshot(snapshot.mapLayer, toggleButton, deleteButton);

        // Update output and legend panel
        string titleLabel    = $"{LocalizationManager.Instance.Get("Snapshot")} {i + 1}";
        Color  snapshotColor = toggleButton.image.color;
        string snapshotID    = snapshot.id;

        InfoPanel.AddEntry(snapshotID, titleLabel, true);
        LegendPanl.AddSnapshotItem(snapshotID, snapshotColor, titleLabel);

        if (gridData != null)
        {
            var sqm = ContourUtils.GetContoursSquareMeters(gridData);
            InfoPanel.UpdateEntry(snapshotID, sqm);
        }
        InfoPanel.SetSnapshotProperties(snapshotID, i + 1, toggleButton.image.color);

        snapshots[i] = snapshot;
        editColourPanel.AddSnapshotColour(i, toggleButton.image.color);
        usedSnapshots++;
        editToggle.gameObject.SetActive(usedSnapshots >= 1);

        runningSnapshotCounter++;

        InfoPanel.UpdateRelativeToSnapshotDropdown();

        GuiUtils.RebuildLayout(SnapshotList);
    }
Пример #3
0
    protected override void OnToggleTool(bool isOn)
    {
        IsToggled = isOn;
        var inspectorTool = ComponentManager.Instance.Get <InspectorTool>();

        if (isOn)
        {
            runningSnapshotCounter = 1;

            // Create contours layer
            contoursLayer = toolLayers.CreateGridMapLayer(contoursLayerPrefab, "Contours");
            contoursLayer.ExcludeCellsWithNoData(excludeNoDataToggle.isOn);

            // Listen to any data layers being added/removed
            dataLayers.OnLayerVisibilityChange   += OnLayerVisibilityChange;
            dataLayers.OnLayerAvailabilityChange += OnLayerAvailabilityChange;

            // Listen to any grid layers being added/removed
            var gridController = map.GetLayerController <GridLayerController>();
            gridController.OnShowGrid += OnShowGrid;

            // Initialize grids list with already visible grid layers
            grids.Clear();
            foreach (var mapLayer in gridController.mapLayers)
            {
                grids.Add(mapLayer.Grid);
            }

            // Reset buttons
            analysisToggle.isOn     = false;
            showContoursToggle.isOn = true;
            lockToggle.isOn         = false;
            //filteredToggle.isOn = true;		// Don't reset, user wants to keep this setting
            //excludeNoDataToggle.isOn = true;	// Don't reset, user wants to keep this setting
            deleteToggle.isOn         = false;
            deleteToggle.interactable = false;
            addButton.interactable    = true;
            cropToggle.isOn           = contoursLayer.CropWithViewArea;

            // Initialize listeners
            addButton.onClick.AddListener(OnAddSnapshotClick);
            deleteToggle.onValueChanged.AddListener(OnDeleteToggleChange);
            showContoursToggle.onValueChanged.AddListener(OnShowContoursChanged);
            cropToggle.onValueChanged.AddListener(OnCropWithViewAreaChanged);
            lockToggle.onValueChanged.AddListener(OnLockChanged);
            analysisToggle.onValueChanged.AddListener(OnAnalysisChanged);
            excludeNoDataToggle.onValueChanged.AddListener(OnExcludeNoDataChanged);
            editToggle.onValueChanged.AddListener(OnEditColourToggleChanged);

            // Show contours layer
            ShowContoursLayer(true);

            // Create the info panel
            InfoPanel      = Instantiate(infoPanelPrefab);
            InfoPanel.name = infoPanelPrefab.name;
            var outputPanel = ComponentManager.Instance.Get <OutputPanel>();
            outputPanel.SetPanel(InfoPanel.transform);

            var translator = LocalizationManager.Instance;
            InfoPanel.AddEntry("CC", translator.Get("Current Contours"));
            InfoPanel.AddEntry("SC", translator.Get("Selected Contours"));

            snapshots     = new Snapshot[snapshotCount];
            usedSnapshots = 0;

            UpdateContoursInfo();

            translator.OnLanguageChanged += OnLanguageChanged;

            GuiUtils.RebuildLayout(SnapshotList);
        }
        else
        {
            editToggle.isOn = false;
            editToggle.gameObject.SetActive(false);

            // Remove listeners
            addButton.onClick.RemoveAllListeners();
            showContoursToggle.onValueChanged.RemoveAllListeners();
            cropToggle.onValueChanged.RemoveAllListeners();
            lockToggle.onValueChanged.RemoveAllListeners();
            analysisToggle.onValueChanged.RemoveAllListeners();
            excludeNoDataToggle.onValueChanged.RemoveAllListeners();
            dataLayers.OnLayerVisibilityChange   -= OnLayerVisibilityChange;
            dataLayers.OnLayerAvailabilityChange -= OnLayerAvailabilityChange;
            inputHandler.OnLeftMouseUp           -= OnLeftMouseUp;
            editToggle.onValueChanged.RemoveListener(OnEditColourToggleChanged);

            if (map)
            {
                var gridController = map.GetLayerController <GridLayerController>();
                if (gridController)
                {
                    gridController.OnShowGrid -= OnShowGrid;
                }
            }

            // Remove the info panel
            ComponentManager.Instance.Get <OutputPanel>().DestroyPanel(InfoPanel.gameObject);

            // Remove map layers
            DeleteAllLayers();

            // Remove snapshots UI
            foreach (var snapshot in snapshots)
            {
                if (snapshot != null)
                {
                    Destroy(snapshot.uiTransform.gameObject);
                    LegendPanl.RemoveSnapshotItem(snapshot.id);
                }
            }
            snapshots     = null;
            usedSnapshots = 0;

            grids.Clear();

            dataLayers.ResetToolOpacity();

            CancelRemoveSnapshotMode();

            LocalizationManager.Instance.OnLanguageChanged -= OnLanguageChanged;

            if (inspectorTool.InspectOutput)
            {
                inspectorTool.InspectOutput.AreaOutput.ResetAndClearContourOutput();
            }
        }

        if (inspectorTool.InspectOutput)
        {
            inspectorTool.InspectOutput.AreaOutput.ShowAreaTypeHeaderAndDropdown(isOn);
        }
    }