Ejemplo n.º 1
0
        private IEnumerator Start()
        {
            //instantiate stored components
            downloader  = GetComponent <DownloadManager>();
            tileFactory = GetComponent <TileFactory>();
            if (tileTextureCache == null)
            {
                tileTextureCache =
                    GetComponent <TileTextureCache>(); //GameObject.Find("TileTextureCache").GetComponent<TileTextureCache>();
            }

            //start processes
            //Load the local text files used to initialize the LayerLoader
            //this is done before the information is needed because you cannot access TextAsset from a thread
            LayerLoader.Init();

            //Kick off the main xml parsing in a thread to keep the application from hanging, especially for vr
            new Thread(() =>
            {
                //get the available layers by parsing the xml
                availableLayers = LayerLoader.GetLayers();
                //let the main thread know that it is safe to try to access the layers
                parsedAvailableLayers = true;
            }).Start();
            WaitForEndOfFrame w = new WaitForEndOfFrame();

            //wait for the xml to finish parsing
            while (!parsedAvailableLayers)
            {
                yield return(w);
            }

            LoadLayer(initialLayer, initialDateTime);
            CreateRootTiles();
            StartCoroutine(UpdateTileVisibility());
        }
Ejemplo n.º 2
0
        public override void OnInspectorGUI()
        {
            base.OnInspectorGUI();
            var pb = (LayerPresetLoader)target;

            if (isGettingLayers)
            {
                EGL.Space();
                EGL.Space();
                EGL.LabelField("Loading Layers...");
                return;
            }
            if (layersList.Count == 0)
            {
                isGettingLayers = true;
                LayerLoader.Init();
                new Thread(GetLayersList).Start();
            }
            EGL.Space();
            EGL.Space();
            EGL.LabelField("Presets");
            EGL.Space();
            for (int i = 0; i < pb.presets.Count; i++)
            {
                using (new HorizontalGroup())
                {
                    pb.presets[i].presetName =
                        EGL.TextField(
                            string.IsNullOrEmpty(pb.presets[i].presetName)
                                ? "Preset " + (i + 1)
                                : pb.presets[i].presetName, pb.presets[i].presetName);
                    if (GUILayout.Button("X"))
                    {
                        pb.presets[i] = null;
                        pb.presets.RemoveAt(i);
                        return;
                    }
                }
                EditorGUI.indentLevel++;
                EGL.LabelField("Flat Layers");
                EditorGUI.indentLevel++;
                filter = EGL.TextField("shared layer filter", filter);
                var filteredList = new List <string>(layersList);
                var preset       = pb.presets[i];
                for (int j = 0; j < pb.presets[i].layersInPreset.Count; j++)
                {
                    using (new HorizontalGroup())
                    {
                        if (layersList.Contains(pb.presets[i].layersInPreset[j]))
                        {
                            if (!string.IsNullOrEmpty(filter))
                            {
                                filteredList = layersList.Where(entry => entry.ToLower().Contains(filter.ToLower()) || entry == pb.presets[i].layersInPreset[j]).ToList();
                            }
                            pb.presets[i].layersInPreset[j] =
                                filteredList[
                                    EGL.Popup(j == 0 ? "Base Layer" : "Layer", filteredList.IndexOf(preset.layersInPreset[j]),
                                              filteredList.ToArray())];
                        }
                        else
                        {
                            return;
                        }
                        if (GUILayout.Button("X"))
                        {
                            pb.presets[i].RemoveLayer(j);
                            return;
                        }
                    }
                }
                if (pb.presets[i].layersInPreset.Count < 3)
                {
                    using (new HorizontalGroup())
                    {
                        //var nLayer = layersList[EGL.Popup("Layer", 0, layersList.ToArray())];
                        EGL.LabelField("New Overlay Layer");
                        if (GUILayout.Button("+"))
                        {
                            pb.presets[i].AddOverlayLayer(layersList[0]);
                            break;
                        }
                    }
                }
                EditorGUI.indentLevel--;
                EGL.LabelField("Volumetric Layers");
                EditorGUI.indentLevel++;
                for (int j = 0; j < pb.presets[i].volumetricLayers.Count; j++)
                {
                    using (new HorizontalGroup())
                    {
                        if (!string.IsNullOrEmpty(pb.presets[i].volumetricLayers[j]))
                        {
                            if (layersList.Contains(pb.presets[i].volumetricLayers[j]))
                            {
                                if (!string.IsNullOrEmpty(filter))
                                {
                                    filteredList = layersList.Where(entry => entry.ToLower().Contains(filter.ToLower()) || entry == pb.presets[i].volumetricLayers[j]).ToList();
                                }
                                pb.presets[i].volumetricLayers[j] =
                                    filteredList[
                                        EGL.Popup("Layer " + j, filteredList.IndexOf(preset.volumetricLayers[j]),
                                                  filteredList.ToArray())];
                            }
                            if (GUILayout.Button("X"))
                            {
                                pb.presets[i].volumetricLayers[j] = "";
                            }
                        }
                        else
                        {
                            if (GUILayout.Button("Activate"))
                            {
                                pb.presets[i].volumetricLayers[j] = "MODIS_Fires_All";
                            }
                        }
                    }
                }
                EditorGUI.indentLevel--;
                EditorGUI.indentLevel--;
                EGL.Space();
            }
            using (new HorizontalGroup())
            {
                if (GUILayout.Button("+"))
                {
                    pb.presets.Add(new Preset());
                }
            }
            if (GUI.changed)
            {
                Undo.RegisterCompleteObjectUndo(pb, "Preset change");
                EditorUtility.SetDirty(pb);
            }
        }