private void UpdateWeatherEffectAtPosition(WorldPosition worldPosition, Army army, bool apply) { WeatherDefinition weatherDefinitionAtPosition = this.GetWeatherDefinitionAtPosition(worldPosition); if (weatherDefinitionAtPosition == null) { return; } if (weatherDefinitionAtPosition.SimulationDescriptorReferences == null) { return; } if (apply) { for (int i = 0; i < weatherDefinitionAtPosition.SimulationDescriptorReferences.Length; i++) { SimulationDescriptor simulationDescriptor; if (this.simulationDescriptorsDatabase.TryGetValue(weatherDefinitionAtPosition.SimulationDescriptorReferences[i].Name, out simulationDescriptor) && !army.SimulationObject.Tags.Contains(simulationDescriptor.Name)) { army.AddDescriptor(simulationDescriptor, false); } } } else { for (int j = 0; j < weatherDefinitionAtPosition.SimulationDescriptorReferences.Length; j++) { army.RemoveDescriptorByName(weatherDefinitionAtPosition.SimulationDescriptorReferences[j].Name); } } army.Refresh(false); }