use of com.chrisali.javaflightsim.simulation.propulsion.Engine in project j6dof-flight-sim by chris-ali.
the class Aircraft method toString.
/**
* Outputs the stability derivatives, mass properties, and wing geometry of an aircraft
* @see java.lang.Object#toString()
*/
public String toString() {
StringBuilder sb = new StringBuilder();
sb.append("======================\n");
sb.append(this.name).append(" Aircraft Parameters:\n");
sb.append("======================\n\n");
sb.append("Engines\n\n");
for (Engine engine : engines) sb.append(engine.toString()).append("\n");
sb.append("\\nStability Derivatives\n\n");
for (StabilityDerivatives stabDer : stabDerivs.keySet()) sb.append(stabDer.toString()).append(": ").append(stabDerivs.get(stabDer)).append("\n");
sb.append("\nWing Geometry\n\n");
for (WingGeometry wingGeo : wingGeometry.keySet()) sb.append(wingGeo.toString()).append(": ").append(wingGeometry.get(wingGeo)).append("\n");
sb.append("\nMass Properties\n\n");
for (MassProperties massProp : massProps.keySet()) sb.append(massProp.toString()).append(": ").append(massProps.get(massProp)).append("\n");
sb.append("\nGround Reaction\n\n");
for (GroundReaction gndReact : groundReaction.keySet()) sb.append(gndReact.toString()).append(": ").append(groundReaction.get(gndReact)).append("\n");
return sb.toString();
}
use of com.chrisali.javaflightsim.simulation.propulsion.Engine in project j6dof-flight-sim by chris-ali.
the class ReadWriteJsonTest method WriteThenReadJsonAircraftTest.
@Test
public void WriteThenReadJsonAircraftTest() {
String aircraftName = "TwinNavion";
Aircraft aircraft = FileUtilities.readAircraftConfiguration(aircraftName);
String assertion = "Property to serialize should not be null";
assertNotNull(assertion, aircraft);
assertEquals("Names should be equal", aircraftName, aircraft.getName());
assertNotNull(assertion, aircraft.getMassProps());
assertNotNull(assertion, aircraft.getWingGeometry());
assertNotNull(assertion, aircraft.getStabDerivs());
assertNotNull(assertion, aircraft.getGroundReaction());
assertNotNull(assertion, aircraft.getEngines());
for (Engine engine : aircraft.getEngines()) {
assertNotNull(assertion, engine);
}
aircraft.save();
Aircraft readAircraft = FileUtilities.readAircraftConfiguration(aircraftName);
assertion = "Deserialized property should not be null";
assertNotNull(assertion, readAircraft);
assertEquals("Names should be equal", aircraftName, readAircraft.getName());
assertNotNull(assertion, readAircraft.getMassProps());
assertNotNull(assertion, readAircraft.getWingGeometry());
assertNotNull(assertion, readAircraft.getStabDerivs());
assertNotNull(assertion, readAircraft.getGroundReaction());
assertNotNull(assertion, readAircraft.getEngines());
for (Engine engine : readAircraft.getEngines()) {
assertNotNull(assertion, engine);
}
}
use of com.chrisali.javaflightsim.simulation.propulsion.Engine in project j6dof-flight-sim by chris-ali.
the class SoundCollection method setRPM.
/**
* Uses sound blending with cosine and linear functions with volume and pitch properties, respectively
* to mesh together engine sounds as a function of RPM
*/
public void setRPM() {
float gainLow, pitchLow, gainMed, pitchMed, gainHi, pitchHi, gainMax, pitchMax;
double RPM;
int engineNumber;
Set<Engine> engineList = aircraft.getEngines();
for (Engine engine : engineList) {
engineNumber = engine.getEngineNumber();
SoundEvent engLow = Enum.valueOf(SoundEvent.class, "ENGINE_" + engineNumber + "_LOW");
SoundEvent engMed = Enum.valueOf(SoundEvent.class, "ENGINE_" + engineNumber + "_MED");
SoundEvent engHigh = Enum.valueOf(SoundEvent.class, "ENGINE_" + engineNumber + "_HIGH");
SoundEvent engMax = Enum.valueOf(SoundEvent.class, "ENGINE_" + engineNumber + "_MAX");
SoundCategory rpmEnum = Enum.valueOf(SoundCategory.class, "RPM_" + engineNumber);
RPM = soundValues.get(rpmEnum);
gainLow = (float) ((RPM > 300 && RPM < 1800) ? Math.cos((RPM - 600) / 500) : 0);
pitchLow = (float) ((RPM > 300 && RPM < 1800) ? ((1.5 - 0.75) * (RPM - 300)) / (1800 - 300) + 0.75 : 0);
soundSources.get(engLow).setVolume(gainLow *= engineVolume);
soundSources.get(engLow).setPitch(pitchLow);
gainMed = (float) ((RPM > 600 && RPM < 2000) ? Math.cos((RPM - 1500) / 400) : 0);
pitchMed = (float) ((RPM > 600 && RPM < 2000) ? ((1.5 - 0.75) * (RPM - 600)) / (2000 - 600) + 0.75 : 0);
soundSources.get(engMed).setVolume(gainMed *= engineVolume);
soundSources.get(engMed).setPitch(pitchMed);
gainHi = (float) ((RPM > 1500 && RPM < 2500) ? Math.cos((RPM - 2000) / 300) : 0);
pitchHi = (float) ((RPM > 1500 && RPM < 2500) ? ((1.5 - 0.75) * (RPM - 1500)) / (2500 - 1500) + 0.75 : 0);
soundSources.get(engHigh).setVolume(gainHi *= engineVolume);
soundSources.get(engHigh).setPitch(pitchHi);
gainMax = (float) ((RPM > 1900 && RPM < 3000) ? Math.cos((RPM - 2600) / 400) * 2 : 0);
pitchMax = (float) ((RPM > 1900 && RPM < 3000) ? ((1.25 - 0.95) * (RPM - 1900)) / (3000 - 1900) + 0.95 : 0);
soundSources.get(engMax).setVolume(gainMax *= engineVolume);
soundSources.get(engMax).setPitch(pitchMax);
}
}
Aggregations