private void UpdateSitesMask() { for (int i = 0; i < dataLayer.loadedPatchesInView.Count; i++) { GridedPatch patch = dataLayer.loadedPatchesInView[i] as GridedPatch; if (patch != null) { patch.SetCategoryMask(mask); } } // Also update other patches from the same site but different record if (dataLayer.loadedPatchesInView.Count > 0) { var siteRecord = dataLayer.loadedPatchesInView[0].siteRecord; foreach (var record in siteRecord.layerSite.records) { if (record.Value == siteRecord) { continue; } foreach (var patch in record.Value.patches) { (patch as GridedPatch).SetCategoryMask(mask); } } } }
protected override void OnPatchVisibilityChange(DataLayer dataLayer, Patch patch, bool visible) { base.OnPatchVisibilityChange(dataLayer, patch, visible); bool rebuildLayout = false; if (visible) { if (AllSitesHaveSameCategories()) { if (toggles.Count == 0) { UpdateList(); rebuildLayout = true; } else { GridedPatch gridedPatch = patch as GridedPatch; gridedPatch.SetCategoryMask(mask); } } else { ClearList(); rebuildLayout = true; } (patch.Data as GridData).OnGridChange += OnGridChange; } else { if (dataLayer.HasLoadedPatchesInView() && AllSitesHaveSameCategories()) { if (toggles.Count == 0) { UpdateList(); rebuildLayout = true; } } else { ClearList(); rebuildLayout = true; } (patch.Data as GridData).OnGridChange -= OnGridChange; } if (rebuildLayout) { GuiUtils.RebuildLayout(transform); } }