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",
|
||||
"Aircraft/c172p/Dialogs/immat.xml");
|
||||
|
||||
var refresh_immat_listener = nil;
|
||||
|
||||
setlistener("/sim/signals/fdm-initialized", func {
|
||||
if (props.globals.getNode("/sim/model/immat") == nil) {
|
||||
var immat = props.globals.getNode("/sim/model/immat",1);
|
||||
var callsign = props.globals.getNode("/sim/multiplay/callsign").getValue();
|
||||
if (callsign != "callsign") immat.setValue(callsign);
|
||||
else immat.setValue("F-GHYQ");
|
||||
if (callsign != "callsign")
|
||||
immat.setValue(callsign);
|
||||
else
|
||||
immat.setValue("F-GHYQ");
|
||||
}
|
||||
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);
|
||||
|
||||
|
|
|
@ -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);
|
||||
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 instrumentLightFactor = props.globals.getNode("sim/model/material/instruments/factor", 1);
|
||||
var panelLights = props.globals.getNode("controls/lighting/panel-norm", 1);
|
||||
|
||||
var update_intensity = func {
|
||||
|
||||
instrumentLightFactor.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
|
||||
#
|
||||
setlistener("sim/signals/fdm-initialized", update_intensity);
|
||||
|
||||
# Make sure that update_intensity is called when the sim is reset
|
||||
setlistener("sim/signals/reset", update_intensity);
|
||||
|
||||
# Setup listener call to start update loop once the fdm is initialized,
|
||||
# but only start the update loop _once_.
|
||||
var fdm_init_listener = setlistener("sim/signals/fdm-initialized", func {
|
||||
removelistener(fdm_init_listener);
|
||||
update_intensity();
|
||||
});
|
||||
|
|
Loading…
Reference in a new issue