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); } } }
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(); }
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(); }