private void OnDestroy() { // Detach from events map.OnMapUpdate -= OnMapUpdate; dataLayers.OnLayerVisibilityChange -= OnLayerVisibilityChange; // Stop coroutines if (drawingArea != null) { StopCoroutine(drawingArea); } if (planningOutputPanel != null) { outputPanel.DestroyPanel(planningOutputPanel.gameObject); planningOutputPanel = null; } // Clear icons foreach (var cell in planningCells) { cell.ClearIcon(); } // Destroy pulsating cell if (pulsatingCell != null) { Destroy(pulsatingCell.gameObject); pulsatingCell = null; } // Destroy containers if (iconContainer != null) { Destroy(iconContainer.gameObject); iconContainer = null; } if (flagger != null) { Destroy(flagger.gameObject); flagger = null; } // Destroy materials foreach (var mat in materialsMap) { Destroy(mat.Value); } // Clear list and maps typologiesMap.Clear(); materialsMap.Clear(); planningCells.Clear(); planningCellsMap.Clear(); planningGroups.Clear(); }
// // Event Methods // protected override void OnToggleTool(bool isOn) { if (isOn) { // Create budget layer budgetLayer = toolLayers.CreateGridMapLayer(budgetLayerPrefab, "WeightedLayer"); highlightLayer = toolLayers.CreateGridMapLayer(highlightLayerPrefab, "HighlightLayer"); highlightLayer.Show(false); // Store number of childs on start initChildsCount = transform.childCount + 1; // Add slider foreach (var panel in dataLayers.activeLayerPanels) { UpdateSlider(panel.DataLayer, true); } // Create output panel for tool municipalBudgetOutput = Instantiate(outputPrefab); municipalBudgetOutput.name = "MunicipalBudget_OutputPanel"; outputPanel.SetPanel(municipalBudgetOutput.transform); municipalBudgetOutput.OnItemHovering += OnItemHover; // Add event listeners siteBrowser.OnBeforeActiveSiteChange += OnBeforeActiveSiteChange; siteBrowser.OnAfterActiveSiteChange += OnAfterActiveSiteChange; // Listen to any data layers being added/removed dataLayers.OnLayerAvailabilityChange += OnLayerAvailabilityChange; // Listen to any grids being added/removed var gridController = map.GetLayerController <GridLayerController>(); gridController.OnShowGrid += OnShowGrid; // Initialize grids list with already visible grid layers foreach (var layer in gridController.mapLayers) { grids.Add(layer.Grid); } ShowBudgetLayer(false); // Add filter toggle event filterToggle.onValueChanged.AddListener(OnFilterToggleChange); noDataToggle.onValueChanged.AddListener(OnNoDataToggleChange); budgetLayer.useFilters = filterToggle.isOn; loadDataCR = StartCoroutine(LoadData()); } else { if (loadDataCR != null) { StopCoroutine(loadDataCR); } // Remove listeners siteBrowser.OnBeforeActiveSiteChange -= OnBeforeActiveSiteChange; siteBrowser.OnAfterActiveSiteChange -= OnAfterActiveSiteChange; dataLayers.OnLayerAvailabilityChange -= OnLayerAvailabilityChange; if (map != null) { var gridController = map.GetLayerController <GridLayerController>(); if (gridController) { gridController.OnShowGrid -= OnShowGrid; } } // Remove Output panel outputPanel.DestroyPanel(municipalBudgetOutput.gameObject); municipalBudgetOutput = null; // Remove map layer DeleteAllLayers(); // Remove sliders foreach (var pair in sliders) { Destroy(pair.Value.gameObject); } sliders.Clear(); grids.Clear(); dataLayers.ResetToolOpacity(); } }