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); }
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); } }