public void ApplyLayer(string layerName, DateTime selectedDateTime, LayerVisualizationStyle style, int layerIndex = 0) { Debug.Log("Applying layer " + layerName + layerIndex + " in style " + style); switch (style) { case LayerVisualizationStyle.Flat: // Load specified layer directly onto the globe geometry globe.LoadLayer(layerIndex, layerName, selectedDateTime); break; case LayerVisualizationStyle.Volumetric: // Load specified layer as an extruded mesh from the globe switch (layerIndex) { case 0: if (scienceDataIngestor0.isActiveAndEnabled && dataVisualizer0.isActiveAndEnabled) { dataVisualizer0.SetVisualizationSources(globe, globeColliderTransform, scienceDataIngestor0); dataVisualizer0.Reset(); scienceDataIngestor0.IngestDataForDate(selectedDateTime, layerName, dataVisualizer0); } break; case 1: if (scienceDataIngestor1.isActiveAndEnabled && dataVisualizer1.isActiveAndEnabled) { dataVisualizer1.SetVisualizationSources(globe, globeColliderTransform, scienceDataIngestor1); dataVisualizer1.Reset(); scienceDataIngestor1.IngestDataForDate(selectedDateTime, layerName, dataVisualizer1); } break; } break; } AddToAppliedLayerList(layerName, selectedDateTime, style, layerIndex); if (OnLayerApplied != null) { OnLayerApplied.Invoke(layerName, selectedDateTime, style, layerIndex); } }
private void AddToAppliedLayerList(string layerName, DateTime selectedDateTime, LayerVisualizationStyle style, int layerIndex) { AppliedLayer layer = new AppliedLayer { layerName = layerName, selectedDateTime = selectedDateTime, style = style, layerIndex = layerIndex }; // Clear matching layer from list, if necessary appliedLayers.RemoveAll(x => (x.layerIndex == layerIndex) && (x.style == style)); // Add to list appliedLayers.Add(layer); }