예제 #1
0
    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);
                }
            }
        }
    }
예제 #2
0
    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);
        }
    }