Esempio n. 1
0
    private void ShowDataLayer(DataLayerPanel layerPanel)
    {
#if SAFETY_CHECK
        if (activeLayerPanels.Contains(layerPanel))
        {
            Debug.LogWarning("Layer " + layerPanel.DataLayer.Name + " is already active!");
            return;
        }
#endif

        activeLayerPanels.Add(layerPanel);

        var dataLayer = layerPanel.DataLayer;

        if (OnLayerVisibilityChange != null)
        {
            OnLayerVisibilityChange(dataLayer, true);
        }

        dataLayer.Show(map.CurrentLevel, map.MapCoordBounds);

        bool hasPatches = dataLayer.HasPatchesInView();
        if (hasPatches && !availableLayers.Contains(dataLayer))
        {
            availableLayers.Add(dataLayer);
            if (OnLayerAvailabilityChange != null)
            {
                OnLayerAvailabilityChange(dataLayer, true);
            }
        }
    }
Esempio n. 2
0
    private void HideDataLayer(DataLayerPanel layerPanel)
    {
#if SAFETY_CHECK
        if (!activeLayerPanels.Remove(layerPanel))
        {
            Debug.LogWarning("Layer " + layerPanel.name + " is not active!");
            return;
        }
#else
        activeLayerPanels.Remove(layerPanel);
#endif

        var dataLayer = layerPanel.DataLayer;

        if (availableLayers.Remove(dataLayer))
        {
            if (OnLayerAvailabilityChange != null)
            {
                OnLayerAvailabilityChange(dataLayer, false);
            }
        }

        dataLayer.HideLoadedPatches();

        if (OnLayerVisibilityChange != null)
        {
            OnLayerVisibilityChange(dataLayer, false);
        }
    }
Esempio n. 3
0
    private void OnLayerToggleChange(DataLayerPanel panel, bool isOn)
    {
        if (isOn)
        {
            ShowDataLayer(panel);
        }
        else
        {
            HideDataLayer(panel);
        }

        if (panel.IsFilterToggleOn)
        {
            StartCoroutine(ShowFilterPanel(panel, isOn));
        }

        if (activeLayerPanels.Count > 0)
        {
            legendToggle.interactable = true;
        }
        else
        {
            legendToggle.isOn         = false;
            legendToggle.interactable = false;
        }
    }
Esempio n. 4
0
    public void AddLayer(DataLayer layer, DataLayerGroupPanel groupController)
    {
        // Add new layer
        DataLayerPanel layerPanel = groupController.AddLayer(layerPanelPrefab, layer);

        layerPanel.layerToggle.onValueChanged.AddListener((isOn) => OnLayerToggleChange(layerPanel, isOn));
        layerPanel.filterToggle.onValueChanged.AddListener((isOn) => StartCoroutine(ShowOptionsPanel(layerPanel, isOn)));

        if (hideInactiveLayers)
        {
            layerPanel.gameObject.SetActive(false);
            layerPanel.EnableLayerPanel(true);
        }
        else
        {
            layerPanel.EnableLayerPanel(false);
            layerPanel.gameObject.SetActive(true);
        }

#if SAFETY_CHECK
        if (nameToLayer.ContainsKey(layer.name))
        {
            Debug.LogWarning(layer.name + " appears more than once in the layers list");
        }
        else
#endif
        {
            layerPanels.Add(layerPanel);
            nameToLayer.Add(layer.name, layerPanel);
        }
    }
Esempio n. 5
0
 private void UpdateLayerDistributionChart(DataLayerPanel layerPanel)
 {
     if (layerPanel.IsFilterToggleOn && layerPanel.Panel is FilterPanel)
     {
         var panel = layerPanel.Panel as FilterPanel;
         panel.UpdateDistributionChart();
     }
 }
    public DataLayerPanel AddLayer(DataLayerPanel prefab, DataLayer layer)
    {
        // Create a new instance of the layer prefab and initialize it
        var layerCtrl = Instantiate(prefab);

        // Important: set the parent AFTER Instantiate to allow toggles to awake
        // Parent could be disabled and prevent proper initialization
        layerCtrl.transform.SetParent(layersContainer, false);
        layerCtrl.Init(layer);
        return(layerCtrl);
    }
Esempio n. 7
0
 private void UpdateLayerPanelIsActive(DataLayerPanel panel, bool active)
 {
     if (active)
     {
         activeSiteLayerPanels.Add(panel);
         EnableLayerPanel(panel, true);
     }
     else
     {
         panel.layerToggle.isOn = false;
         EnableLayerPanel(panel, false);
     }
 }
Esempio n. 8
0
    private void OnLayerToggleChange(DataLayerPanel panel, bool isOn)
    {
        if (isOn)
        {
            ShowDataLayer(panel);
        }
        else
        {
            HideDataLayer(panel);
        }

        if (panel.IsFilterToggleOn)
        {
            StartCoroutine(ShowFilterPanel(panel, isOn));
        }
    }
Esempio n. 9
0
    private IEnumerator ShowOptionsPanel(DataLayerPanel layerCtrl, bool show)
    {
        // FIX: scrollbar won't retract if value is zero.
        if (!show && scrollRect.verticalScrollbar.value < 0.001f && scrollRect.verticalScrollbar.size < 1)
        {
            scrollRect.verticalScrollbar.value = 0.001f;
        }

        layerCtrl.ShowOptionsPanel(show);
        yield return(null);

        if (show)
        {
            float offset = 30f / (scrollRect.content.rect.height - scrollRect.viewport.rect.height);
            while (scrollRect.verticalScrollbar.size < 0.99f &&
                   RectTransformUtility.RectangleContainsScreenPoint(layerCtrl.GetComponent <RectTransform>(), bottomPoint))
            {
                scrollRect.verticalScrollbar.value -= offset;
                yield return(null);
            }
        }
    }
Esempio n. 10
0
    private void UpdateLayerPanel(DataLayerPanel layerPanel, int level, AreaBounds bounds)
    {
        var dataLayer = layerPanel.DataLayer;

        var site = ComponentManager.Instance.Get <SiteBrowser>().ActiveSite;

        bool hasPatches;

        if (layerPanel.IsLayerToggleOn)
        {
            dataLayer.UpdatePatches(site, level, bounds);
            hasPatches = dataLayer.HasPatchesInView();

            if (hasPatches && !availableLayers.Contains(dataLayer))
            {
                availableLayers.Add(dataLayer);
                if (OnLayerAvailabilityChange != null)
                {
                    OnLayerAvailabilityChange(dataLayer, true);
                }
            }
            else if (!hasPatches && availableLayers.Contains(dataLayer))
            {
                availableLayers.Remove(dataLayer);
                if (OnLayerAvailabilityChange != null)
                {
                    OnLayerAvailabilityChange(dataLayer, false);
                }
            }
        }
        else
        {
            hasPatches = dataLayer.HasPatches(site, level, bounds.west, bounds.east, bounds.north, bounds.south);
        }

        // Show/hide a layer panel when only visible layers are allowed, otherwise enable/disable the layer panel
        EnableLayerPanel(layerPanel, hasPatches);
    }
Esempio n. 11
0
    // Helper function to show/hide or enable/disable layer depending on HideLayersWithoutVisiblePatches
    public void EnableLayerPanel(DataLayerPanel layerPanel, bool enable)
    {
        if (hideInactiveLayers)
        {
            // Show the group BEFORE the layer is shown
            if (hideEmptyGroups && enable && layerPanel.gameObject.activeSelf != enable)
            {
                GetGroupPanel(layerPanel).Show(true);
            }

            if (layerPanel.ShowLayerPanel(enable))
            {
                // Hide the group AFTER the layer is hidden (only if no other layers are visible)
                if (hideEmptyGroups && !enable)
                {
                    GetGroupPanel(layerPanel).UpdateVisibility();
                }
            }
        }
        else
        {
            layerPanel.EnableLayerPanel(enable);
        }
    }
Esempio n. 12
0
 private DataLayerGroupPanel GetGroupPanel(DataLayerPanel layerPanel)
 {
     return(layerPanel.transform.parent.parent.GetComponent <DataLayerGroupPanel>());
 }