/// <summary> /// Remove the specified cloud layer /// </summary> /// <param name="cl"></param> public void Remove(CloudLayer cl) { if (_cloudLayers.Contains(cl)) { _cloudLayers.Remove(cl); } }
/// <summary> /// Unregister cloud layer /// </summary> /// <param name="cl">Cloud layer to unregister</param> public void Unregister(CloudLayer cl) { for (int k = 0; k < _cloudLayers.Count; k++) { if (_cloudLayers[k] == cl) { _cloudLayers[k].Unregister(); break; } } }
/// <summary> /// Add a cloud layer /// </summary> /// <param name="options">Cloud layer options</param> public CloudLayer Add(CloudLayer.Options options) { CloudLayer newCloudLayer = new CloudLayer(this.SkyX, options); // TODO using (MaterialPtr mat = (MaterialPtr)MaterialManager.Singleton.GetByName(this.SkyX.GpuManager.SkydomeMaterialName)) { newCloudLayer.RegisterCloudLayer(mat.GetTechnique(0).CreatePass()); mat.Reload(); _cloudLayers.Add(newCloudLayer); } bool changeOrder = false; // Short layers by height for (int k = 0; k < _cloudLayers.Count; k++) { if (k + 1 < _cloudLayers.Count) { if (_cloudLayers[k].LayerOptions.Height < _cloudLayers[k + 1].LayerOptions.Height) { // Swap CloudLayer cl = _cloudLayers[k]; _cloudLayers[k] = _cloudLayers[k + 1]; _cloudLayers[k + 1] = cl; changeOrder = true; k = 0; } } } if (changeOrder) { UnregisterAll(); RegisterAll(); } return(newCloudLayer); }
/// <summary> /// Add a cloud layer /// </summary> /// <param name="options">Cloud layer options</param> public CloudLayer Add(CloudLayer.Options options) { CloudLayer newCloudLayer = new CloudLayer(this.SkyX, options); // TODO using (MaterialPtr mat = (MaterialPtr)MaterialManager.Singleton.GetByName(this.SkyX.GpuManager.SkydomeMaterialName)) { newCloudLayer.RegisterCloudLayer(mat.GetTechnique(0).CreatePass()); mat.Reload(); _cloudLayers.Add(newCloudLayer); } bool changeOrder = false; // Short layers by height for (int k = 0; k < _cloudLayers.Count; k++) { if (k + 1 < _cloudLayers.Count) { if (_cloudLayers[k].LayerOptions.Height < _cloudLayers[k + 1].LayerOptions.Height) { // Swap CloudLayer cl = _cloudLayers[k]; _cloudLayers[k] = _cloudLayers[k + 1]; _cloudLayers[k + 1] = cl; changeOrder = true; k = 0; } } } if (changeOrder) { UnregisterAll(); RegisterAll(); } return newCloudLayer; }
/// <summary> /// Remove the specified cloud layer /// </summary> /// <param name="cl"></param> public void Remove(CloudLayer cl) { if (_cloudLayers.Contains(cl)) _cloudLayers.Remove(cl); }