public override void OnInspectorGUI() { DrawDefaultInspector(); GUILayout.Label("Tour Sources", EditorStyles.boldLabel); loadFromWebsite = EditorGUILayout.BeginToggleGroup("Load from Online ID?", loadFromWebsite); tourId = EditorGUILayout.TextField("Tour ID", tourId); EditorGUILayout.EndToggleGroup(); loadFromWebsite = !EditorGUILayout.BeginToggleGroup("Load from static file?", !loadFromWebsite); jsonFile = EditorGUILayout.ObjectField("File to use", jsonFile, typeof(TextAsset), false); EditorGUILayout.EndToggleGroup(); tb = (TourBuilderScriptable)target; if (GUILayout.Button("Reset")) { tb.ResetTour(); loadStatus = "Status"; EditorApplication.update -= EditorUpdate; } if (GUILayout.Button("Load Tour")) { Tour t; if (loadFromWebsite) { www = Receiver.GetFromId(tourId); www.SendWebRequest(); loadStatus = "Loading from website..."; EditorApplication.update += EditorUpdate; } else { loadStatus = "Loaded from file"; TextAsset json = (TextAsset)jsonFile; t = Serialize.Utility.CreateFromJSON(json.text); tb.LoadTour(t); } } if (GUILayout.Button("Build Tour")) { tb.BuildTour(); loadStatus = "Built!"; } EditorGUILayout.HelpBox(loadStatus, MessageType.Info); }
static void EditorUpdate() { if (!www.isDone) { return; } if (www.isNetworkError) { EditorUtility.DisplayDialog("Tour Builder", www.error, "Ok"); } else { EditorUtility.DisplayDialog("Tour Builder", "Tour loaded OK!", "Ok"); JObject config = JObject.Parse(www.downloadHandler.text); //Parse result for Tour specification. drop things like name and ID Tour t = Serialize.Utility.CreateFromJSON(config.SelectToken("config").ToString()); tb.LoadTour(t); } EditorApplication.update -= EditorUpdate; }