Vivian MEAZZA: tyresmoke: add spray flag/intensity for wet surfaces
This commit is contained in:
parent
996fd73c0c
commit
b1017ac425
1 changed files with 43 additions and 11 deletions
|
@ -474,7 +474,7 @@ var timer = {
|
||||||
if (m.node.getType() == "NONE")
|
if (m.node.getType() == "NONE")
|
||||||
m.node.setDoubleValue(0);
|
m.node.setDoubleValue(0);
|
||||||
|
|
||||||
m.systimeN = props.globals.getNode("/sim/time/elapsed-sec", 1);
|
me.systimeN = props.globals.getNode("/sim/time/elapsed-sec", 1);
|
||||||
m.last_systime = nil;
|
m.last_systime = nil;
|
||||||
m.interval = res;
|
m.interval = res;
|
||||||
m.loopid = 0;
|
m.loopid = 0;
|
||||||
|
@ -908,33 +908,65 @@ var autotrim = {
|
||||||
var tyresmoke = {
|
var tyresmoke = {
|
||||||
new : func(number) {
|
new : func(number) {
|
||||||
var m = { parents: [tyresmoke] };
|
var m = { parents: [tyresmoke] };
|
||||||
m.vertical_speed = props.globals.getNode("velocities/vertical-speed-fps", 1);
|
me.vertical_speed = props.initNode("velocities/vertical-speed-fps");
|
||||||
m.speed = props.globals.getNode("velocities/groundspeed-kt", 1);
|
me.speed = props.initNode("velocities/groundspeed-kt");
|
||||||
|
me.rain = props.initNode("environment/metar/rain-norm");
|
||||||
|
|
||||||
|
var gear = "gear/gear[" ~ number ~ "]/";
|
||||||
|
m.wow = props.initNode(gear ~ "wow");
|
||||||
|
m.tyresmoke = props.initNode(gear ~ "tyre-smoke", 0, "BOOL");
|
||||||
|
m.friction_factor = props.initNode(gear ~ "ground-friction-factor", 1);
|
||||||
|
m.sprayspeed = props.initNode(gear ~ "sprayspeed-ms");
|
||||||
|
m.spray = props.initNode(gear ~ "spray", 0, "BOOL");
|
||||||
|
m.spraydensity = props.initNode(gear ~ "spray-density", 0, "DOUBLE");
|
||||||
|
|
||||||
|
if (getprop("sim/flight-model") == "jsb") {
|
||||||
|
var wheel_speed = "fdm/jsbsim/gear/unit[" ~ number ~ "]/wheel-speed-fps";
|
||||||
|
m.rollspeed = props.initNode(wheel_speed);
|
||||||
|
m.get_rollspeed = func m.rollspeed.getValue() * 0.3043;
|
||||||
|
} else {
|
||||||
|
m.rollspeed = props.initNode(gear ~ "rollspeed-ms");
|
||||||
|
m.get_rollspeed = func m.rollspeed.getValue();
|
||||||
|
}
|
||||||
|
|
||||||
var gear = props.globals.getNode("gear", 1).getChild("gear", number, 1);
|
|
||||||
m.wow = props.initNode(gear.getNode("wow", 1));
|
|
||||||
m.tyresmoke = props.initNode(gear.getNode("tyre-smoke", 1), 0, "BOOL");
|
|
||||||
m.friction_factor = props.initNode(gear.getNode("ground-friction-factor", 1), 1);
|
|
||||||
m.rollspeed = props.initNode(gear.getNode("rollspeed-ms", 1));
|
|
||||||
m.lp = lowpass.new(2);
|
m.lp = lowpass.new(2);
|
||||||
return m;
|
return m;
|
||||||
},
|
},
|
||||||
update : func {
|
update : func {
|
||||||
var rollspeed = me.rollspeed.getValue();
|
var rollspeed = me.get_rollspeed();
|
||||||
var vert_speed = me.vertical_speed.getValue();
|
var vert_speed = me.vertical_speed.getValue();
|
||||||
var groundspeed = me.speed.getValue();
|
var groundspeed = me.speed.getValue();
|
||||||
var friction_factor = me.friction_factor.getValue();
|
var friction_factor = me.friction_factor.getValue();
|
||||||
var wow = me.wow.getValue();
|
var wow = me.wow.getValue();
|
||||||
|
var rain = me.rain.getValue();
|
||||||
|
|
||||||
var filtered_rollspeed = me.lp.filter(rollspeed);
|
var filtered_rollspeed = me.lp.filter(rollspeed);
|
||||||
var diff = math.abs(rollspeed - filtered_rollspeed);
|
var diff = math.abs(rollspeed - filtered_rollspeed);
|
||||||
var diff_norm = diff > 0 ? diff / rollspeed : 0;
|
var diff_norm = diff > 0 ? diff / rollspeed : 0;
|
||||||
|
|
||||||
|
# print("wow ", wow, " vert_speed ", vert_speed, " diff_norm ",
|
||||||
|
# diff_norm, " friction_factor ", friction_factor,
|
||||||
|
# " groundspeed ", groundspeed,
|
||||||
|
# " rain ", rain);
|
||||||
|
|
||||||
if (wow and vert_speed < -0.05 and diff_norm > 0.05
|
if (wow and vert_speed < -0.05 and diff_norm > 0.05
|
||||||
and friction_factor > 0.7 and groundspeed > 50)
|
and friction_factor > 0.7 and groundspeed > 50
|
||||||
|
and rain < 0.20) {
|
||||||
me.tyresmoke.setValue(1);
|
me.tyresmoke.setValue(1);
|
||||||
else
|
me.spray.setValue(0);
|
||||||
|
|
||||||
|
} elsif (wow and groundspeed > 5 and rain >= 0.20) {
|
||||||
me.tyresmoke.setValue(0);
|
me.tyresmoke.setValue(0);
|
||||||
|
me.spray.setValue(1);
|
||||||
|
me.sprayspeed.setValue(rollspeed * 6);
|
||||||
|
me.spraydensity.setValue(rain * groundspeed);
|
||||||
|
|
||||||
|
} else {
|
||||||
|
me.tyresmoke.setValue(0);
|
||||||
|
me.spray.setValue(0);
|
||||||
|
me.sprayspeed.setValue(0);
|
||||||
|
me.spraydensity.setValue(0);
|
||||||
|
}
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue