- // Consumables
- for ( i = 0; i < fdm1.num_tanks; ++i ) {
- result.fdm.fuel_quantity[i]
- = weight( fdm1.fuel_quantity[i], fdm2.fuel_quantity[i], ratio );
- }
-
- // Gear status
- for ( i = 0; i < fdm1.num_wheels; ++i ) {
- result.fdm.wow[i] = (int)(weight( fdm1.wow[i], fdm2.wow[i], ratio ));
- result.fdm.gear_pos[i]
- = weight( fdm1.gear_pos[i], fdm2.gear_pos[i], ratio );
- result.fdm.gear_steer[i]
- = weight( fdm1.gear_steer[i], fdm2.gear_steer[i], ratio );
- result.fdm.gear_compression[i]
- = weight( fdm1.gear_compression[i], fdm2.gear_compression[i],
- ratio );
- }
-
- // Environment
- result.fdm.cur_time = fdm1.cur_time;
- result.fdm.warp = fdm1.warp;
- result.fdm.visibility = weight( fdm1.visibility, fdm2.visibility, ratio );
-
- // Control surface positions (normalized values)
- result.fdm.elevator = weight( fdm1.elevator, fdm2.elevator, ratio );
- result.fdm.left_flap = weight( fdm1.left_flap, fdm2.left_flap, ratio );
- result.fdm.right_flap = weight( fdm1.right_flap, fdm2.right_flap, ratio );
- result.fdm.left_aileron
- = weight( fdm1.left_aileron, fdm2.left_aileron, ratio );
- result.fdm.right_aileron
- = weight( fdm1.right_aileron, fdm2.right_aileron, ratio );
- result.fdm.rudder = weight( fdm1.rudder, fdm2.rudder, ratio );
- result.fdm.speedbrake = weight( fdm1.speedbrake, fdm2.speedbrake, ratio );
- result.fdm.spoilers = weight( fdm1.spoilers, fdm2.spoilers, ratio );
-
- // Interpolate Control input data
-
- // Aero controls
- result.ctrls.aileron = weight( ctrls1.aileron, ctrls2.aileron, ratio );
- result.ctrls.elevator = weight( ctrls1.elevator, ctrls2.elevator, ratio );
- result.ctrls.rudder = weight( ctrls1.rudder, ctrls2.rudder, ratio );
- result.ctrls.aileron_trim
- = weight( ctrls1.aileron_trim, ctrls2.aileron_trim, ratio );
- result.ctrls.elevator_trim
- = weight( ctrls1.elevator_trim, ctrls2.elevator_trim, ratio );
- result.ctrls.rudder_trim
- = weight( ctrls1.rudder_trim, ctrls2.rudder_trim, ratio );
- result.ctrls.flaps = weight( ctrls1.flaps, ctrls2.flaps, ratio );
- result.ctrls.flaps_power = ctrls1.flaps_power;
- result.ctrls.flap_motor_ok = ctrls1.flap_motor_ok;
-
- // Engine controls
- for ( i = 0; i < ctrls1.num_engines; ++i ) {
- result.ctrls.master_bat[i] = ctrls1.master_bat[i];
- result.ctrls.master_alt[i] = ctrls1.master_alt[i];
- result.ctrls.magnetos[i] = ctrls1.magnetos[i];
- result.ctrls.starter_power[i] = ctrls1.starter_power[i];
- result.ctrls.throttle[i]
- = weight( ctrls1.throttle[i], ctrls2.throttle[i], ratio );
- result.ctrls.mixture[i]
- = weight( ctrls1.mixture[i], ctrls2.mixture[i], ratio );
- result.ctrls.fuel_pump_power[i] = ctrls1.fuel_pump_power[i];
- result.ctrls.prop_advance[i]
- = weight( ctrls1.prop_advance[i], ctrls2.prop_advance[i], ratio );
- result.ctrls.engine_ok[i] = ctrls1.engine_ok[i];
- result.ctrls.mag_left_ok[i] = ctrls1.mag_left_ok[i];
- result.ctrls.mag_right_ok[i] = ctrls1.mag_right_ok[i];
- result.ctrls.spark_plugs_ok[i] = ctrls1.spark_plugs_ok[i];
- result.ctrls.oil_press_status[i] = ctrls1.oil_press_status[i];
- result.ctrls.fuel_pump_ok[i] = ctrls1.fuel_pump_ok[i];