c172p: avoid performance drop after sim reset/relocate
"/sim/signals/fdm-initialized" triggers _every_ time the FDM is reset. We need to uninstall the listeners after its first execution, or guard certain parts of the initialization, to avoid starting multiple "timer/update loops", or installing multiple property listeners.
This commit is contained in:
parent
e282a1e6ed
commit
4ec3850aaf
2 changed files with 18 additions and 14 deletions
|
@ -22,14 +22,20 @@ var refresh_immat = func {
|
||||||
var immat_dialog = gui.Dialog.new("/sim/gui/dialogs/c172p/status/dialog",
|
var immat_dialog = gui.Dialog.new("/sim/gui/dialogs/c172p/status/dialog",
|
||||||
"Aircraft/c172p/Dialogs/immat.xml");
|
"Aircraft/c172p/Dialogs/immat.xml");
|
||||||
|
|
||||||
|
var refresh_immat_listener = nil;
|
||||||
|
|
||||||
setlistener("/sim/signals/fdm-initialized", func {
|
setlistener("/sim/signals/fdm-initialized", func {
|
||||||
if (props.globals.getNode("/sim/model/immat") == nil) {
|
if (props.globals.getNode("/sim/model/immat") == nil) {
|
||||||
var immat = props.globals.getNode("/sim/model/immat",1);
|
var immat = props.globals.getNode("/sim/model/immat",1);
|
||||||
var callsign = props.globals.getNode("/sim/multiplay/callsign").getValue();
|
var callsign = props.globals.getNode("/sim/multiplay/callsign").getValue();
|
||||||
if (callsign != "callsign") immat.setValue(callsign);
|
if (callsign != "callsign")
|
||||||
else immat.setValue("F-GHYQ");
|
immat.setValue(callsign);
|
||||||
|
else
|
||||||
|
immat.setValue("F-GHYQ");
|
||||||
}
|
}
|
||||||
refresh_immat();
|
refresh_immat();
|
||||||
setlistener("sim/model/immat", refresh_immat, 0);
|
if (refresh_immat_listener == nil)
|
||||||
|
{
|
||||||
|
refresh_immat_listener = setlistener("sim/model/immat", refresh_immat, 0);
|
||||||
|
}
|
||||||
},0);
|
},0);
|
||||||
|
|
||||||
|
|
|
@ -7,24 +7,22 @@ aircraft.light.new("sim/model/c172p/lighting/strobes", [0.015, 1.985], strobe_sw
|
||||||
var beacon_switch = props.globals.getNode("controls/lighting/beacon", 1);
|
var beacon_switch = props.globals.getNode("controls/lighting/beacon", 1);
|
||||||
aircraft.light.new("sim/model/c172p/lighting/beacon-top", [0.10, 0.90], beacon_switch);
|
aircraft.light.new("sim/model/c172p/lighting/beacon-top", [0.10, 0.90], beacon_switch);
|
||||||
|
|
||||||
# Control both panel and instrument light intensity with one property
|
|
||||||
|
|
||||||
|
# Control both panel and instrument light intensity with one property
|
||||||
var instrumentsNorm = props.globals.getNode("controls/lighting/instruments-norm", 1);
|
var instrumentsNorm = props.globals.getNode("controls/lighting/instruments-norm", 1);
|
||||||
var instrumentLightFactor = props.globals.getNode("sim/model/material/instruments/factor", 1);
|
var instrumentLightFactor = props.globals.getNode("sim/model/material/instruments/factor", 1);
|
||||||
var panelLights = props.globals.getNode("controls/lighting/panel-norm", 1);
|
var panelLights = props.globals.getNode("controls/lighting/panel-norm", 1);
|
||||||
|
|
||||||
var update_intensity = func {
|
var update_intensity = func {
|
||||||
|
|
||||||
instrumentLightFactor.setDoubleValue(instrumentsNorm.getValue());
|
instrumentLightFactor.setDoubleValue(instrumentsNorm.getValue());
|
||||||
panelLights.setDoubleValue(instrumentsNorm.getValue());
|
panelLights.setDoubleValue(instrumentsNorm.getValue());
|
||||||
|
|
||||||
settimer(update_intensity, 0);
|
settimer(update_intensity, 0.1);
|
||||||
}
|
}
|
||||||
|
|
||||||
# Setup listener call to start update loop once the fdm is initialized
|
# Setup listener call to start update loop once the fdm is initialized,
|
||||||
#
|
# but only start the update loop _once_.
|
||||||
setlistener("sim/signals/fdm-initialized", update_intensity);
|
var fdm_init_listener = setlistener("sim/signals/fdm-initialized", func {
|
||||||
|
removelistener(fdm_init_listener);
|
||||||
# Make sure that update_intensity is called when the sim is reset
|
update_intensity();
|
||||||
setlistener("sim/signals/reset", update_intensity);
|
});
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue