From 7398fc60cf4a02c7c0a1a5b3f77568ac5e046e1b Mon Sep 17 00:00:00 2001 From: Joshua Davidson Date: Tue, 11 Jul 2017 14:52:21 -0400 Subject: [PATCH] A3XX: Code Cleanup, less garbage collecting nessesary = more FPS? --- Nasal/electrical.nas | 149 ++++++++++++++++++++++++++++--------------- Nasal/fire.nas | 98 ++++++++++++++++------------ 2 files changed, 155 insertions(+), 92 deletions(-) diff --git a/Nasal/electrical.nas b/Nasal/electrical.nas index 55ca1cb3..a15defd4 100644 --- a/Nasal/electrical.nas +++ b/Nasal/electrical.nas @@ -12,6 +12,53 @@ var dc_volt_min = 25; var dc_amps_std = 150; var ac_hz_std = 400; +setlistener("/sim/signals/fdm-initialized", func { + var galley_sw = getprop("/controls/electrical/switches/galley"); + var idg1_sw = getprop("/controls/electrical/switches/idg1"); + var idg2_sw = getprop("/controls/electrical/switches/idg2"); + var gen1_sw = getprop("/controls/electrical/switches/gen1"); + var gen2_sw = getprop("/controls/electrical/switches/gen2"); + var gen_apu_sw = getprop("/controls/electrical/switches/gen-apu"); + var gen_ext_sw = getprop("/controls/electrical/switches/gen-ext"); + var apu_ext_crosstie_sw = getprop("/controls/electrical/switches/apu-ext-crosstie"); + var ac_ess_feed_sw = getprop("/controls/electrical/switches/ac-ess-feed"); + var battery1_sw = getprop("/controls/electrical/switches/battery1"); + var battery2_sw = getprop("/controls/electrical/switches/battery2"); + var battery1_volts = getprop("/systems/electrical/battery1-volts"); + var battery2_volts = getprop("/systems/electrical/battery2-volts"); + var rpmapu = getprop("/systems/apu/rpm"); + var extpwr_on = getprop("/controls/switches/cart"); + var stateL = getprop("/engines/engine[0]/state"); + var stateR = getprop("/engines/engine[1]/state"); + var xtieL = getprop("/controls/electrical/xtie/xtieL"); + var xtieR = getprop("/controls/electrical/xtie/xtieR"); + var ac1 = getprop("/systems/electrical/bus/ac1"); + var ac2 = getprop("/systems/electrical/bus/ac2"); + var ac_ess = getprop("/systems/electrical/bus/ac-ess"); + var dc1 = getprop("/systems/electrical/bus/dc1"); + var dc2 = getprop("/systems/electrical/bus/dc2"); + var dcbat = getprop("/systems/electrical/bus/dcbat"); + var dc_ess = getprop("/systems/electrical/bus/dc-ess"); + var gen_1_volts = getprop("/systems/electrical/extra/gen1-volts"); + var gen_2_volts = getprop("/systems/electrical/extra/gen1-volts"); + var galley_shed = getprop("/systems/electrical/extra/galleyshed"); + var bat1_con = getprop("/systems/electrical/extra/battery/bat1-contact"); + var bat2_con = getprop("/systems/electrical/extra/battery/bat2-contact"); + var emergen = getprop("/controls/electrical/switches/emer-gen"); + var ias = getprop("/instrumentation/airspeed-indicator/indicated-speed-kt"); + var rat = getprop("/controls/hydraulic/rat"); + var manrat = getprop("/controls/hydraulic/rat-man"); + var ac_ess_fail = getprop("/systems/failures/elec-ac-ess"); + var batt1_fail = getprop("/systems/failures/elec-batt1"); + var batt2_fail = getprop("/systems/failures/elec-batt2"); + var gallery_fail = getprop("/systems/failures/elec-galley"); + var genapu_fail = getprop("/systems/failures/elec-genapu"); + var gen1_fail = getprop("/systems/failures/elec-gen1"); + var gen2_fail = getprop("/systems/failures/elec-gen2"); + var bat1_volts = getprop("/systems/electrical/battery1-volts"); + var bat2_volts = getprop("/systems/electrical/battery2-volts"); +}); + var elec_init = func { setprop("/controls/switches/annun-test", 0); setprop("/controls/electrical/switches/galley", 1); @@ -95,48 +142,48 @@ var elec_init = func { ###################### var master_elec = func { - var galley_sw = getprop("/controls/electrical/switches/galley"); - var idg1_sw = getprop("/controls/electrical/switches/idg1"); - var idg2_sw = getprop("/controls/electrical/switches/idg2"); - var gen1_sw = getprop("/controls/electrical/switches/gen1"); - var gen2_sw = getprop("/controls/electrical/switches/gen2"); - var gen_apu_sw = getprop("/controls/electrical/switches/gen-apu"); - var gen_ext_sw = getprop("/controls/electrical/switches/gen-ext"); - var apu_ext_crosstie_sw = getprop("/controls/electrical/switches/apu-ext-crosstie"); - var ac_ess_feed_sw = getprop("/controls/electrical/switches/ac-ess-feed"); - var battery1_sw = getprop("/controls/electrical/switches/battery1"); - var battery2_sw = getprop("/controls/electrical/switches/battery2"); - var battery1_volts = getprop("/systems/electrical/battery1-volts"); - var battery2_volts = getprop("/systems/electrical/battery2-volts"); - var rpmapu = getprop("/systems/apu/rpm"); - var extpwr_on = getprop("/controls/switches/cart"); - var stateL = getprop("/engines/engine[0]/state"); - var stateR = getprop("/engines/engine[1]/state"); - var xtieL = getprop("/controls/electrical/xtie/xtieL"); - var xtieR = getprop("/controls/electrical/xtie/xtieR"); - var ac1 = getprop("/systems/electrical/bus/ac1"); - var ac2 = getprop("/systems/electrical/bus/ac2"); - var ac_ess = getprop("/systems/electrical/bus/ac-ess"); - var dc1 = getprop("/systems/electrical/bus/dc1"); - var dc2 = getprop("/systems/electrical/bus/dc2"); - var dcbat = getprop("/systems/electrical/bus/dcbat"); - var dc_ess = getprop("/systems/electrical/bus/dc-ess"); - var gen_1_volts = getprop("/systems/electrical/extra/gen1-volts"); - var gen_2_volts = getprop("/systems/electrical/extra/gen1-volts"); - var galley_shed = getprop("/systems/electrical/extra/galleyshed"); - var bat1_con = getprop("/systems/electrical/extra/battery/bat1-contact"); - var bat2_con = getprop("/systems/electrical/extra/battery/bat2-contact"); - var emergen = getprop("/controls/electrical/switches/emer-gen"); - var ias = getprop("/instrumentation/airspeed-indicator/indicated-speed-kt"); - var rat = getprop("/controls/hydraulic/rat"); - var manrat = getprop("/controls/hydraulic/rat-man"); - var ac_ess_fail = getprop("/systems/failures/elec-ac-ess"); - var batt1_fail = getprop("/systems/failures/elec-batt1"); - var batt2_fail = getprop("/systems/failures/elec-batt2"); - var gallery_fail = getprop("/systems/failures/elec-galley"); - var genapu_fail = getprop("/systems/failures/elec-genapu"); - var gen1_fail = getprop("/systems/failures/elec-gen1"); - var gen2_fail = getprop("/systems/failures/elec-gen2"); + galley_sw = getprop("/controls/electrical/switches/galley"); + idg1_sw = getprop("/controls/electrical/switches/idg1"); + idg2_sw = getprop("/controls/electrical/switches/idg2"); + gen1_sw = getprop("/controls/electrical/switches/gen1"); + gen2_sw = getprop("/controls/electrical/switches/gen2"); + gen_apu_sw = getprop("/controls/electrical/switches/gen-apu"); + gen_ext_sw = getprop("/controls/electrical/switches/gen-ext"); + apu_ext_crosstie_sw = getprop("/controls/electrical/switches/apu-ext-crosstie"); + ac_ess_feed_sw = getprop("/controls/electrical/switches/ac-ess-feed"); + battery1_sw = getprop("/controls/electrical/switches/battery1"); + battery2_sw = getprop("/controls/electrical/switches/battery2"); + battery1_volts = getprop("/systems/electrical/battery1-volts"); + battery2_volts = getprop("/systems/electrical/battery2-volts"); + rpmapu = getprop("/systems/apu/rpm"); + extpwr_on = getprop("/controls/switches/cart"); + stateL = getprop("/engines/engine[0]/state"); + stateR = getprop("/engines/engine[1]/state"); + xtieL = getprop("/controls/electrical/xtie/xtieL"); + xtieR = getprop("/controls/electrical/xtie/xtieR"); + ac1 = getprop("/systems/electrical/bus/ac1"); + ac2 = getprop("/systems/electrical/bus/ac2"); + ac_ess = getprop("/systems/electrical/bus/ac-ess"); + dc1 = getprop("/systems/electrical/bus/dc1"); + dc2 = getprop("/systems/electrical/bus/dc2"); + dcbat = getprop("/systems/electrical/bus/dcbat"); + dc_ess = getprop("/systems/electrical/bus/dc-ess"); + gen_1_volts = getprop("/systems/electrical/extra/gen1-volts"); + gen_2_volts = getprop("/systems/electrical/extra/gen1-volts"); + galley_shed = getprop("/systems/electrical/extra/galleyshed"); + bat1_con = getprop("/systems/electrical/extra/battery/bat1-contact"); + bat2_con = getprop("/systems/electrical/extra/battery/bat2-contact"); + emergen = getprop("/controls/electrical/switches/emer-gen"); + ias = getprop("/instrumentation/airspeed-indicator/indicated-speed-kt"); + rat = getprop("/controls/hydraulic/rat"); + manrat = getprop("/controls/hydraulic/rat-man"); + ac_ess_fail = getprop("/systems/failures/elec-ac-ess"); + batt1_fail = getprop("/systems/failures/elec-batt1"); + batt2_fail = getprop("/systems/failures/elec-batt2"); + gallery_fail = getprop("/systems/failures/elec-galley"); + genapu_fail = getprop("/systems/failures/elec-genapu"); + gen1_fail = getprop("/systems/failures/elec-gen1"); + gen2_fail = getprop("/systems/failures/elec-gen2"); if (rpmapu >= 94.9 and gen_apu_sw) { setprop("/systems/electrical/gen-apu", 1); @@ -150,8 +197,8 @@ var master_elec = func { setprop("/systems/electrical/gen-ext", 0); } - var gen_apu = getprop("/systems/electrical/gen-apu"); - var gen_ext = getprop("/systems/electrical/gen-ext"); + gen_apu = getprop("/systems/electrical/gen-apu"); + gen_ext = getprop("/systems/electrical/gen-ext"); # Left cross tie yes? if (extpwr_on and gen_ext_sw) { @@ -296,8 +343,8 @@ var master_elec = func { setprop("/systems/electrical/extra/apu-hz", 0); } - var ac1 = getprop("/systems/electrical/bus/ac1"); - var ac2 = getprop("/systems/electrical/bus/ac2"); + ac1 = getprop("/systems/electrical/bus/ac1"); + ac2 = getprop("/systems/electrical/bus/ac2"); if (!ac_ess_fail and (ac1 >= 110 or ac2 >= 110)) { setprop("/systems/electrical/bus/ac-ess", ac_volt_std); @@ -305,7 +352,7 @@ var master_elec = func { setprop("/systems/electrical/bus/ac-ess", 0); } - var ac_ess = getprop("/systems/electrical/bus/ac-ess"); + ac_ess = getprop("/systems/electrical/bus/ac-ess"); if (ac_ess >= 110 and !gallery_fail) { if (galley_sw == 1 and !galley_shed) { @@ -478,18 +525,18 @@ var update_electrical = func { var elec_timer = maketimer(0.2, update_electrical); var charge1 = maketimer(6, func { - var bat1_volts = getprop("/systems/electrical/battery1-volts"); + bat1_volts = getprop("/systems/electrical/battery1-volts"); setprop("/systems/electrical/battery1-volts", bat1_volts + 0.1); }); var charge2 = maketimer(6, func { - var bat2_volts = getprop("/systems/electrical/battery2-volts"); + bat2_volts = getprop("/systems/electrical/battery2-volts"); setprop("/systems/electrical/battery2-volts", bat2_volts + 0.1); }); var decharge1 = maketimer(69, func { # interval is at 69 seconds, to allow about 30 min from 25.9 - var bat1_volts = getprop("/systems/electrical/battery1-volts"); + bat1_volts = getprop("/systems/electrical/battery1-volts"); setprop("/systems/electrical/battery1-volts", bat1_volts - 0.1); }); var decharge2 = maketimer(69, func { - var bat2_volts = getprop("/systems/electrical/battery2-volts"); + bat2_volts = getprop("/systems/electrical/battery2-volts"); setprop("/systems/electrical/battery2-volts", bat2_volts - 0.1); }); \ No newline at end of file diff --git a/Nasal/fire.nas b/Nasal/fire.nas index a59ff3b2..567f4eb3 100644 --- a/Nasal/fire.nas +++ b/Nasal/fire.nas @@ -5,6 +5,29 @@ # Init Vars # ############# +setlistener("/sim/signals/fdm-initialized", func { + var level = getprop("/systems/fire/cargo/bottlelevel"); + var fwdsquib = getprop("/systems/fire/cargo/fwdsquib"); + var aftsquib = getprop("/systems/fire/cargo/aftsquib"); + var fwddet = getprop("/systems/fire/cargo/fwddet"); + var aftdet = getprop("/systems/fire/cargo/aftdet"); + var test = getprop("/controls/fire/cargo/test"); + var guard1 = getprop("/controls/fire/cargo/fwdguard"); + var guard2 = getprop("/controls/fire/cargo/aftguard"); + var dischpb1 = getprop("/controls/fire/cargo/fwddisch"); + var dischpb2 = getprop("/controls/fire/cargo/aftdisch"); + var smokedet1 = getprop("/controls/fire/cargo/fwdsmokeLight"); + var smokedet2 = getprop("/controls/fire/cargo/aftsmokeLight"); + var bottleIsEmpty = getprop("/controls/fire/cargo/bottleempty"); + var WeCanExt = getprop("/controls/fire/cargo/status"); + var test2 = getprop("/systems/fire/cargo/test"); + var state = getprop("/controls/fire/cargo/test/state"); + var dc1 = getprop("/systems/electrical/bus/dc1"); + var dc2 = getprop("/systems/electrical/bus/dc2"); + var dcbat = getprop("/systems/electrical/bus/dcbat"); + var pause = getprop("/sim/freeze/master"); +}); + var fire_init = func { setprop("/systems/fire/cargo/fwddet", 0); setprop("/systems/fire/cargo/aftdet", 0); @@ -37,26 +60,26 @@ var fire_init = func { # Main Loops # ############## var master_fire = func { - var level = getprop("/systems/fire/cargo/bottlelevel"); - var fwdsquib = getprop("/systems/fire/cargo/fwdsquib"); - var aftsquib = getprop("/systems/fire/cargo/aftsquib"); - var fwddet = getprop("/systems/fire/cargo/fwddet"); - var aftdet = getprop("/systems/fire/cargo/aftdet"); - var test = getprop("/controls/fire/cargo/test"); - var guard1 = getprop("/controls/fire/cargo/fwdguard"); - var guard2 = getprop("/controls/fire/cargo/aftguard"); - var dischpb1 = getprop("/controls/fire/cargo/fwddisch"); - var dischpb2 = getprop("/controls/fire/cargo/aftdisch"); - var smokedet1 = getprop("/controls/fire/cargo/fwdsmokeLight"); - var smokedet2 = getprop("/controls/fire/cargo/aftsmokeLight"); - var bottleIsEmpty = getprop("/controls/fire/cargo/bottleempty"); - var WeCanExt = getprop("/controls/fire/cargo/status"); - var test2 = getprop("/systems/fire/cargo/test"); - var state = getprop("/controls/fire/cargo/test/state"); - var dc1 = getprop("/systems/electrical/bus/dc1"); - var dc2 = getprop("/systems/electrical/bus/dc2"); - var dcbat = getprop("/systems/electrical/bus/dcbat"); - var pause = getprop("/sim/freeze/master"); + level = getprop("/systems/fire/cargo/bottlelevel"); + fwdsquib = getprop("/systems/fire/cargo/fwdsquib"); + aftsquib = getprop("/systems/fire/cargo/aftsquib"); + fwddet = getprop("/systems/fire/cargo/fwddet"); + aftdet = getprop("/systems/fire/cargo/aftdet"); + test = getprop("/controls/fire/cargo/test"); + guard1 = getprop("/controls/fire/cargo/fwdguard"); + guard2 = getprop("/controls/fire/cargo/aftguard"); + dischpb1 = getprop("/controls/fire/cargo/fwddisch"); + dischpb2 = getprop("/controls/fire/cargo/aftdisch"); + smokedet1 = getprop("/controls/fire/cargo/fwdsmokeLight"); + smokedet2 = getprop("/controls/fire/cargo/aftsmokeLight"); + bottleIsEmpty = getprop("/controls/fire/cargo/bottleempty"); + WeCanExt = getprop("/controls/fire/cargo/status"); + test2 = getprop("/systems/fire/cargo/test"); + state = getprop("/controls/fire/cargo/test/state"); + dc1 = getprop("/systems/electrical/bus/dc1"); + dc2 = getprop("/systems/electrical/bus/dc2"); + dcbat = getprop("/systems/electrical/bus/dcbat"); + pause = getprop("/sim/freeze/master"); ################### # Detection Logic # @@ -86,9 +109,8 @@ var master_fire = func { } } - if (dischpb1 and fwdsqib and !bottleIsEmpty and !puase) { - var bottle = getprop("/systems/fire/cargo/bottlelevel"); - setprop("/systems/fire/cargo/bottlelevel", bottle - 0.166); + if (dischpb1 and fwdsquib and !bottleIsEmpty and !pause) { + setprop("/systems/fire/cargo/bottlelevel", getprop("/systems/fire/cargo/bottlelevel") - 0.166); } if (dischpb2) { @@ -97,30 +119,24 @@ var master_fire = func { } } - if (dischpb1 and fwdsqib and !bottleIsEmpty and !puase) { - var bottle = getprop("/systems/fire/cargo/bottlelevel"); - setprop("/systems/fire/cargo/bottlelevel", bottle - 0.166); - } - ################# # Test Sequence # ################# - setlistener("/controls/fire/cargo/test", func { - var test = getprop("/controls/fire/cargo/test"); - if (test) { - setprop("/systems/fire/cargo/test", 1); - } - }); + if (getprop("/controls/fire/cargo/test")) { + setprop("/systems/fire/cargo/test", 1); + } else { + setprop("/systems/fire/cargo/test", 0); + } if (test2 and state == 0) { - setprop("/controls/fire/cargo/fwdsmokeLight", 1); - setprop("/controls/fire/cargo/warnfwd", 1); - settimer(func(){ - setprop("/controls/fire/cargo/fwdsmokeLight", 0); - setprop("/controls/fire/cargo/warnfwd", 0); - setprop("/controls/fire/cargo/test/state", 1); - }, 0.5); + setprop("/controls/fire/cargo/fwdsmokeLight", 1); + setprop("/controls/fire/cargo/warnfwd", 1); + settimer(func(){ + setprop("/controls/fire/cargo/fwdsmokeLight", 0); + setprop("/controls/fire/cargo/warnfwd", 0); + setprop("/controls/fire/cargo/test/state", 1); + }, 0.5); } else if (test2 and state == 1) { setprop("/controls/fire/cargo/aftsmokeLight", 1); setprop("/controls/fire/cargo/warnaft", 1);