Esempio n. 1
0
 private GameObject SelectMarkerShape(IVirgisLayer layer)
 {
     if (_markerShapeMap.ContainsKey(layer.GetId()))
     {
         return(_markerShapeMap[layer.GetId()]);
     }
     else
     {
         GameObject featureShape = layer.GetFeatureShape();
         if (featureShape == null)
         {
             return(defaultMarkerShape);
         }
         else
         {
             featureShape.transform.parent     = transform;
             featureShape.transform.position   = defaultMarkerShape.transform.position;
             featureShape.transform.rotation   = defaultMarkerShape.transform.rotation;
             featureShape.transform.localScale = defaultMarkerShape.transform.localScale;
             _markerShapeMap.Add(layer.GetId(), featureShape);
             return(featureShape);
         }
     }
 }
Esempio n. 2
0
        private void CreateLayerPanels()
        {
            GameObject newLayerPanel;

            // appState.layers are actually Layer script (Component)
            _appState.layers.ForEach(comp =>
            {
                // obtain the actual Layer object
                //                ILayer layer = comp.GetComponentInChildren<ILayer>();
                IVirgisLayer layer = (IVirgisLayer)comp;
                print($"CreateLayerPanels: layer {layer.GetMetadata().Id ?? ""}, {layer.GetMetadata().DisplayName ?? ""}");
                // create a view panel for this particular layer
                newLayerPanel = (GameObject)Instantiate(layerPanelPrefab, transform);
                // obtain the panel script
                LayerUIPanel panelScript = newLayerPanel.GetComponentInChildren <LayerUIPanel>();
                // set the layer in the panel
                panelScript.layer = layer;
                // listens to panel's edit selected event
                panelScript.AddEditSelectedListener(OnLayerPanelEditSelected);
                if (layer.IsEditable())
                {
                    panelScript.editLayerToggle.isOn = true;
                }
                panelScript.viewLayerToggle.isOn = layer.IsVisible();
                // when the Layers Menu screen is first displayed,
                // edit session could already be active
                if (_appState.editSession.IsActive())
                {
                    // in edit session, layer can be set to edit
                    panelScript.editLayerToggle.interactable = true;
                }
                else
                {
                    // not in edit session, layer cannot be set to edit
                    panelScript.editLayerToggle.interactable = false;
                }
                _layersMap.Add(layer.GetId(), panelScript);
                newLayerPanel.transform.SetParent(layersScrollView.transform, false);
            });
            printEditStatus();
        }
Esempio n. 3
0
 private void OnLayerPanelEditSelected(LayerUIPanel layerPanel, bool selected)
 {
     if (selected)
     {
         IVirgisLayer oldEditableLayer = _appState.editSession.editableLayer;
         _appState.editSession.editableLayer = layerPanel.layer;
         if (oldEditableLayer != null)
         {
             _layersMap[oldEditableLayer.GetId()].editLayerToggle.isOn = false;
         }
     }
     else
     {
         IVirgisLayer oldEditableLayer = _appState.editSession.editableLayer;
         _appState.editSession.editableLayer = null;
         if (oldEditableLayer != null)
         {
             _layersMap[oldEditableLayer.GetId()].editLayerToggle.isOn = false;
         }
     }
     //printEditStatus();
 }