private void DisplayLayersSelector(ref WMSTexture wmsTexture, WMSInfo wmsInfo, out bool layerChanged) { layerChanged = false; EditorGUILayout.BeginVertical(EditorStyles.helpBox); EditorGUILayout.LabelField("Layers"); WMSLayer[] layers = wmsInfo.layers; for (int i = 0; i < layers.Length; i++) { if (layers[i].name != "") { bool newToggleValue = EditorGUILayout.ToggleLeft(layers[i].title, (wmsTexture.LayerSelected(layers[i].name))); layerChanged |= (newToggleValue != wmsTexture.LayerSelected(layers[i].name)); wmsTexture.SetLayerSelected(layers[i].name, newToggleValue); } } if (wmsTexture.SelectedLayersNumber() == 0) { EditorGUILayout.HelpBox("No layers selected", MessageType.Warning); } EditorGUILayout.EndVertical(); }
public override void OnInspectorGUI() { if (Application.isPlaying) { EditorGUILayout.LabelField("Currently play mode editting is not allowed"); return; } WMSTexture wmsTexture = (WMSTexture)target; bool serverChanged = false; bool layerChanged = false; bool boundingBoxChanged = false; EditorGUILayout.BeginVertical(EditorStyles.helpBox); EditorGUILayout.LabelField("Server"); DisplayServerSelector(ref wmsTexture, out serverChanged); if (serverChanged) { wmsTexture.selectedLayers.Clear(); RequestWMSInfo(ref wmsTexture); } RequestStatus requestStatus = wmsInfoRequester.GetRequestStatus(wmsTexture.wmsRequestID); if (requestStatus != RequestStatus.OK) { if (requestStatus == RequestStatus.DOWNLOADING) { EditorGUILayout.HelpBox("Downloading WMS info ...", MessageType.Info); } else if (requestStatus == RequestStatus.ERROR) { string errorLog = wmsInfoRequester.GetErrorLog(wmsTexture.wmsRequestID); EditorGUILayout.HelpBox("ERROR downloading WMS info: \n" + errorLog, MessageType.Error); } if (GUI.changed) { EditorUtility.SetDirty(wmsTexture); EditorSceneManager.MarkSceneDirty(EditorSceneManager.GetActiveScene()); } EditorGUILayout.EndVertical(); return; } WMSInfo wmsInfo = wmsInfoRequester.GetResponse(wmsTexture.wmsRequestID); EditorGUILayout.LabelField("Server title: " + wmsInfo.serverTitle); EditorGUILayout.LabelField("Server abstract: " + wmsInfo.serverAbstract); EditorGUILayout.EndVertical(); if (wmsInfo.GetLayerTitles().Length > 0) { DisplayLayersSelector(ref wmsTexture, wmsInfo, out layerChanged); if (layerChanged) { wmsTexture.RequestTexturePreview(); } if (wmsTexture.SelectedLayersNumber() > 0) { DisplayBoundingBoxPanel(ref wmsTexture, ref wmsInfo, out boundingBoxChanged); } } else { EditorGUILayout.HelpBox("No layers returned by server", MessageType.Warning); } if (wmsTexture.IsDownloading()) { EditorGUILayout.HelpBox("Downloading texture from server...", MessageType.Info); } // Mark the target assert as changed ("dirty") so Unity save it to disk. if (GUI.changed) { EditorUtility.SetDirty(wmsTexture); EditorSceneManager.MarkSceneDirty(EditorSceneManager.GetActiveScene()); } }