Optimizes pipe network updating

This commit is contained in:
mwerezak
2014-08-04 00:20:00 -04:00
parent c640729b4d
commit a772d9094c
7 changed files with 31 additions and 34 deletions

View File

@@ -120,7 +120,7 @@
power_draw = pump_gas(air1, environment, transfer_moles, active_power_usage)
if(network1)
if(power_draw >= 0 && network1)
network1.update = 1
else //external -> internal
if (node2 && (environment.temperature || air2.temperature))
@@ -133,7 +133,7 @@
power_draw = pump_gas(environment, air2, transfer_moles, active_power_usage)
if(network2)
if(power_draw >= 0 && network2)
network2.update = 1
if (power_draw < 0)

View File

@@ -74,7 +74,7 @@ Thus, the two variables affect pump operation are set in New():
var/power_draw = -1
var/pressure_delta = target_pressure - air2.return_pressure()
if(pressure_delta > 0.01 && (air1.temperature > 0 || air2.temperature > 0))
if(pressure_delta > 0.01 && air1.temperature > 0)
//Figure out how much gas to transfer to meet the target pressure.
var/air_temperature = (air2.temperature > 0)? air2.temperature : air1.temperature
var/output_volume = air2.volume + (network2? network2.volume : 0)
@@ -83,12 +83,6 @@ Thus, the two variables affect pump operation are set in New():
var/transfer_moles = pressure_delta*output_volume/(air_temperature * R_IDEAL_GAS_EQUATION)
power_draw = pump_gas(air1, air2, transfer_moles, active_power_usage)
if(network1)
network1.update = 1
if(network2)
network2.update = 1
if (power_draw < 0)
//update_use_power(0)
@@ -97,6 +91,12 @@ Thus, the two variables affect pump operation are set in New():
last_flow_rate = 0
else
last_power_draw = handle_power_draw(power_draw)
if(network1)
network1.update = 1
if(network2)
network2.update = 1
return 1
@@ -213,7 +213,7 @@ Thus, the two variables affect pump operation are set in New():
target_pressure = max_pressure_setting
if ("set")
var/new_pressure = input(usr,"Enter new output pressure (0-[max_pressure_setting]kPa)","Pressure control",src.target_pressure) as num
src.target_pressure = max(0, min(max_pressure_setting, new_pressure))
src.target_pressure = between(0, new_pressure, max_pressure_setting)
usr.set_machine(src)
src.add_fingerprint(usr)

View File

@@ -76,6 +76,13 @@
var/power_draw = -1
if (transfer_moles > MINUMUM_MOLES_TO_FILTER)
power_draw = filter_gas_multi(filtering_outputs, input_air, output_air, transfer_moles, active_power_usage)
if (power_draw < 0)
//update_use_power(0)
use_power = 0 //don't force update - easier on CPU
last_flow_rate = 0
else
handle_power_draw(power_draw)
if(input.network)
input.network.update = 1
@@ -84,13 +91,6 @@
for(var/datum/omni_port/P in filters)
if(P.network)
P.network.update = 1
if (power_draw < 0)
//update_use_power(0)
use_power = 0 //don't force update - easier on CPU
last_flow_rate = 0
else
handle_power_draw(power_draw)
return 1

View File

@@ -115,13 +115,6 @@
var/power_draw = -1
if (transfer_moles > MINUMUM_MOLES_TO_FILTER)
power_draw = mix_gas(mixing_inputs, output, transfer_moles, active_power_usage)
for(var/datum/omni_port/P in inputs)
if(P.concentration && P.network)
P.network.update = 1
if(output.network)
output.network.update = 1
if (power_draw < 0)
//update_use_power(0)
@@ -129,6 +122,13 @@
last_flow_rate = 0
else
handle_power_draw(power_draw)
for(var/datum/omni_port/P in inputs)
if(P.concentration && P.network)
P.network.update = 1
if(output.network)
output.network.update = 1
return 1

View File

@@ -170,9 +170,6 @@
transfer_moles = min(transfer_moles, environment.total_moles*MAX_SIPHON_FLOWRATE/environment.volume) //group_multiplier gets divided out here
power_draw = pump_gas(environment, air_contents, transfer_moles, active_power_usage)
if(network)
network.update = 1
if (power_draw < 0)
last_power_draw = 0
@@ -181,7 +178,9 @@
use_power = 0 //don't force update - easier on CPU
else
last_power_draw = handle_power_draw(power_draw)
if(network)
network.update = 1
return 1
/obj/machinery/atmospherics/unary/vent_pump/proc/get_pressure_delta(datum/gas_mixture/environment)

View File

@@ -129,7 +129,7 @@
var/power_draw = -1
if(scrubbing)
//limit flow rate from turfs
var/transfer_moles = min(environment.total_moles, environment.total_moles*MAX_FILTER_FLOWRATE/environment.volume) //group_multiplier gets divided out here
var/transfer_moles = min(environment.total_moles, environment.total_moles*MAX_SCRUBBER_FLOWRATE/environment.volume) //group_multiplier gets divided out here
power_draw = scrub_gas(scrubbing_gas, environment, air_contents, transfer_moles, active_power_usage)
else //Just siphon all air