/// <summary> /// Clean up. /// </summary> public void Dispose() { Bonsai.Utils.Settings.SettingsChanged -= new Bonsai.Utils.Settings.SettingsEventHandler(Settings_SettingsChanged); if (iFlightModel != null) { iFlightModel.Dispose(); iFlightModel = null; } if (modelApi != null) { modelApi.Dispose(); modelApi = null; } if (smoke != null) { smoke.Dispose(); smoke = null; } if (airplane != null) { airplane.Dispose(); airplane = null; } if (variometer != null) { variometer.Dispose(); variometer = null; } if (towLine != null) { towLine.Dispose(); towLine = null; } if (windVector != null) { windVector.Dispose(); windVector = null; } if (ripples != null) { ripples.Dispose(); ripples = null; } if (reflection != null) { reflection.Dispose(); reflection = null; } }
/// <summary> /// Clean up. /// </summary> public void Dispose() { if (smoke != null) { smoke.Dispose(); smoke = null; } if (airplaneModel != null) { airplaneModel.Dispose(); airplaneModel = null; } if (ripples != null) { ripples.Dispose(); ripples = null; } }
public void LoadModel(string fileName) { // First clean up if (iFlightModel != null) { iFlightModel.Dispose(); iFlightModel = null; } if (modelApi != null) { modelApi.Dispose(); modelApi = null; } if (airplane != null) { airplane.Dispose(); airplane = null; } if (variometer != null) { variometer.Dispose(); variometer = null; } // Now load the actual model //model = new FlightModelWind(); AircraftParameters parameters = new RCSim.DataClasses.AircraftParameters(); parameters.File = fileName; if (!string.IsNullOrEmpty(Bonsai.Utils.Settings.GetValue("ApiFlightModel"))) { try { string assemblyInfo = Bonsai.Utils.Settings.GetValue("ApiFlightModel"); string[] assemblyParts = assemblyInfo.Split(',', ';'); Assembly assembly = Assembly.LoadFrom(assemblyParts[0]); RCDeskPilot.API.FlightModelSimple flightModelSimple = assembly.CreateInstance(assemblyParts[1]) as RCDeskPilot.API.FlightModelSimple; modelApi = new FlightModelApi(); modelApi.ApiModel = flightModelSimple; iFlightModel = modelApi; } catch (Exception ex) { System.Windows.Forms.MessageBox.Show( string.Format("Failed to load the flightmodel plugin : {0}", ex.ToString())); } } else { if (parameters.Version == 2) { iFlightModel = new FlightModelWind2(); } else { iFlightModel = new FlightModelWind(); } } iFlightModel.AircraftParameters = parameters; iFlightModel.Initialize(); iFlightModel.Reset(); iFlightModel.Wind = new Vector3(0, 0, 0); iFlightModel.Heightmap = Heightmap; iFlightModel.Water = Program.Instance.Scenery.Water; airplane = new AirplaneModel(iFlightModel); CurrentModel = fileName; if (smoke != null) { smoke.Dispose(); smoke = null; } smoke = new Smoke(owner, iFlightModel); UpdateVariometer(); this.owner.UpdateCameras(); this.Reset(); }
/// <summary> /// Constructor /// </summary> /// <param name="owner"></param> public RecordedFlight(Program owner) { this.owner = owner; this.smoke = new Smoke(owner, this); this.ripples = new WaterRipples(); }