public ModelControl(string filename, bool create) { reflection = new Reflection(); heightmap = new Heightmap(1000); heightmap.MinHeight = -5f; heightmap.MaxHeight = 5f; useAileronForRudder = Convert.ToBoolean(Bonsai.Utils.Settings.GetValue("UseAileronChannel")); AircraftParameters parameters = new AircraftParameters(); if (create) { parameters.CreateDefault(filename); } else { parameters.File = filename; } if (parameters.Version == 2) { iFlightModel = new FlightModelWind2(); } else { iFlightModel = new FlightModelWind(); } iFlightModel.AircraftParameters = parameters; iFlightModel.Heightmap = heightmap; iFlightModel.Paused = true; iFlightModel.Initialize(); airplaneModel = new AirplaneModel(iFlightModel); airplaneModel.Position = new Vector3(0, 0, 0); }
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(); }