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:
@@ -11,23 +11,25 @@ namespace Content.Server.Power.EntitySystems
|
|||||||
{
|
{
|
||||||
base.Initialize();
|
base.Initialize();
|
||||||
|
|
||||||
SubscribeLocalEvent<BatteryComponent, NetworkBatteryPreSync>(PreSync);
|
SubscribeLocalEvent<NetworkBatteryPreSync>(PreSync);
|
||||||
SubscribeLocalEvent<BatteryComponent, NetworkBatteryPostSync>(PostSync);
|
SubscribeLocalEvent<NetworkBatteryPostSync>(PostSync);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void PreSync(EntityUid uid, BatteryComponent component, NetworkBatteryPreSync args)
|
private void PreSync(NetworkBatteryPreSync ev)
|
||||||
{
|
{
|
||||||
var networkBattery = ComponentManager.GetComponent<PowerNetworkBatteryComponent>(uid);
|
foreach (var (bat, netBat) in ComponentManager.EntityQuery<BatteryComponent, PowerNetworkBatteryComponent>())
|
||||||
|
{
|
||||||
networkBattery.NetworkBattery.Capacity = component.MaxCharge;
|
netBat.NetworkBattery.Capacity = bat.MaxCharge;
|
||||||
networkBattery.NetworkBattery.CurrentStorage = component.CurrentCharge;
|
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);
|
foreach (var (bat, netBat) in ComponentManager.EntityQuery<BatteryComponent, PowerNetworkBatteryComponent>())
|
||||||
|
{
|
||||||
component.CurrentCharge = networkBattery.NetworkBattery.CurrentStorage;
|
bat.CurrentCharge = netBat.NetworkBattery.CurrentStorage;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public override void Update(float frameTime)
|
public override void Update(float frameTime)
|
||||||
|
|||||||
@@ -175,19 +175,13 @@ namespace Content.Server.Power.EntitySystems
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Synchronize batteries
|
// Synchronize batteries
|
||||||
foreach (var battery in ComponentManager.EntityQuery<PowerNetworkBatteryComponent>())
|
RaiseLocalEvent(new NetworkBatteryPreSync());
|
||||||
{
|
|
||||||
RaiseLocalEvent(battery.Owner.Uid, new NetworkBatteryPreSync());
|
|
||||||
}
|
|
||||||
|
|
||||||
// Run power solver.
|
// Run power solver.
|
||||||
_solver.Tick(frameTime, _powerState);
|
_solver.Tick(frameTime, _powerState);
|
||||||
|
|
||||||
// Synchronize batteries, the other way around.
|
// Synchronize batteries, the other way around.
|
||||||
foreach (var battery in ComponentManager.EntityQuery<PowerNetworkBatteryComponent>())
|
RaiseLocalEvent(new NetworkBatteryPostSync());
|
||||||
{
|
|
||||||
RaiseLocalEvent(battery.Owner.Uid, new NetworkBatteryPostSync());
|
|
||||||
}
|
|
||||||
|
|
||||||
// Send events where necessary.
|
// Send events where necessary.
|
||||||
{
|
{
|
||||||
@@ -313,7 +307,7 @@ namespace Content.Server.Power.EntitySystems
|
|||||||
/// Raised before power network simulation happens, to synchronize battery state from
|
/// Raised before power network simulation happens, to synchronize battery state from
|
||||||
/// components like <see cref="BatteryComponent"/> into <see cref="PowerNetworkBatteryComponent"/>.
|
/// components like <see cref="BatteryComponent"/> into <see cref="PowerNetworkBatteryComponent"/>.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public sealed class NetworkBatteryPreSync : EntityEventArgs
|
public struct NetworkBatteryPreSync
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -321,7 +315,7 @@ namespace Content.Server.Power.EntitySystems
|
|||||||
/// Raised after power network simulation happens, to synchronize battery charge changes from
|
/// Raised after power network simulation happens, to synchronize battery charge changes from
|
||||||
/// <see cref="PowerNetworkBatteryComponent"/> to components like <see cref="BatteryComponent"/>.
|
/// <see cref="PowerNetworkBatteryComponent"/> to components like <see cref="BatteryComponent"/>.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public sealed class NetworkBatteryPostSync : EntityEventArgs
|
public struct NetworkBatteryPostSync
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user