Use non-directed event for powernet battery sync.

Most of the CPU time in the power system was sending these events.
This commit is contained in:
Pieter-Jan Briers
2021-07-29 16:55:09 +02:00
parent 9b42c1f69b
commit 8c362fcd9b
2 changed files with 17 additions and 21 deletions

View File

@@ -11,23 +11,25 @@ namespace Content.Server.Power.EntitySystems
{
base.Initialize();
SubscribeLocalEvent<BatteryComponent, NetworkBatteryPreSync>(PreSync);
SubscribeLocalEvent<BatteryComponent, NetworkBatteryPostSync>(PostSync);
SubscribeLocalEvent<NetworkBatteryPreSync>(PreSync);
SubscribeLocalEvent<NetworkBatteryPostSync>(PostSync);
}
private void PreSync(EntityUid uid, BatteryComponent component, NetworkBatteryPreSync args)
private void PreSync(NetworkBatteryPreSync ev)
{
var networkBattery = ComponentManager.GetComponent<PowerNetworkBatteryComponent>(uid);
networkBattery.NetworkBattery.Capacity = component.MaxCharge;
networkBattery.NetworkBattery.CurrentStorage = component.CurrentCharge;
foreach (var (bat, netBat) in ComponentManager.EntityQuery<BatteryComponent, PowerNetworkBatteryComponent>())
{
netBat.NetworkBattery.Capacity = bat.MaxCharge;
netBat.NetworkBattery.CurrentStorage = bat.CurrentCharge;
}
}
private void PostSync(EntityUid uid, BatteryComponent component, NetworkBatteryPostSync args)
private void PostSync(NetworkBatteryPostSync ev)
{
var networkBattery = ComponentManager.GetComponent<PowerNetworkBatteryComponent>(uid);
component.CurrentCharge = networkBattery.NetworkBattery.CurrentStorage;
foreach (var (bat, netBat) in ComponentManager.EntityQuery<BatteryComponent, PowerNetworkBatteryComponent>())
{
bat.CurrentCharge = netBat.NetworkBattery.CurrentStorage;
}
}
public override void Update(float frameTime)