You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
100 lines
2.7 KiB
100 lines
2.7 KiB
var looptime = 0.1;
|
|
var throttle = "controls/engines/engine[0]/throttle";
|
|
var rpm = "engines/engine[0]/rpm-c";
|
|
var idle_rpm =700;
|
|
var maxRPM = 5400;
|
|
var eng_accel = 60;
|
|
var engon ="engines/engine[0]/running";
|
|
var leftwheelF= "controls/gear/gear[0]/throttle";
|
|
var rightwheelF= "controls/gear/gear[1]/throttle";
|
|
var leftwheelR= "controls/gear/gear[2]/throttle";
|
|
var rightwheelR= "controls/gear/gear[3]/throttle";
|
|
var difflockF= "controls/gear/axle[0]/difflock";
|
|
var difflockR= "controls/gear/axle[1]/difflock";
|
|
var fwd= "controls/gear/fourwd";
|
|
var aileron = "controls/flight/aileron";
|
|
var mousesteer = "controls/flight/mousesteer";
|
|
var brake = "controls/gear/brake-left";
|
|
|
|
var init = func {
|
|
if (getprop("controls/engines/engine[0]/on-startup-running")) {
|
|
magicstart();
|
|
}
|
|
settimer(main_loop, looptime);
|
|
}
|
|
|
|
var main_loop = func {
|
|
if (getprop (mousesteer) ) {
|
|
elevator = getprop ("controls/flight/elevator");
|
|
if (elevator > 0 ) {
|
|
setprop ( throttle, elevator );
|
|
setprop ( brake, 0 );
|
|
} else {
|
|
setprop ( throttle, 0 );
|
|
setprop ( brake, abs (elevator) );
|
|
}
|
|
}
|
|
if (engon) {
|
|
# print ("engine running");
|
|
# update_eng_state();
|
|
# update_transmission();
|
|
}
|
|
settimer(main_loop, looptime);
|
|
}
|
|
|
|
var update_eng_state = func {
|
|
var c_throttle = getprop (throttle);
|
|
# print (c_throttle);
|
|
var currentRPM = getprop (rpm );
|
|
# print (currentRPM);
|
|
var target_rpm = c_throttle * maxRPM;
|
|
if (target_rpm > currentRPM) {
|
|
interpolate (rpm, currentRPM + eng_accel, looptime);
|
|
} else {
|
|
if (currentRPM > idle_rpm ) {
|
|
interpolate (rpm, currentRPM - eng_accel, looptime);
|
|
}
|
|
}
|
|
}
|
|
|
|
var update_transmission = func {
|
|
var ail = getprop (aileron);
|
|
var diffR = getprop (difflockR);
|
|
var diffF = getprop (difflockF);
|
|
# rear axle
|
|
if (ail > 0.2 and diffR != 1) {
|
|
setprop (rightwheelR, 0);
|
|
setprop (leftwheelR, getprop(rpm)*0.00047);
|
|
} else {
|
|
if ( -0.2 > ail and diffR != 1) {
|
|
setprop (leftwheelR, 0);
|
|
setprop (rightwheelR, getprop(rpm)*0.00047);
|
|
} else {
|
|
setprop (leftwheelR, getprop(rpm)*0.0002);
|
|
setprop (rightwheelR, getprop(rpm)*0.0002);
|
|
}
|
|
}
|
|
if (getprop (fwd)) {
|
|
if (ail > 0.2 and diffF != 1) {
|
|
setprop (rightwheelF, 0);
|
|
setprop (leftwheelF, getprop(rpm)*0.00047);
|
|
} else {
|
|
if ( -0.2 > ail and diffF != 1) {
|
|
setprop (leftwheelF, 0);
|
|
setprop (rightwheelF, getprop(rpm)*0.00047);
|
|
} else {
|
|
setprop (leftwheelF, getprop(rpm)*0.0002);
|
|
setprop (rightwheelF, getprop(rpm)*0.0002);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
var magicstart = func {
|
|
setprop (rpm, idle_rpm);
|
|
setprop (engon, 1);
|
|
}
|
|
|
|
#Listener
|
|
|
|
setlistener("/sim/signals/fdm-initialized",init);
|
|
|