Skip to content

Commit 85b0676

Browse files
committed
Server/Environments: Improve switching of AtmosphereExchanger
1 parent acb7360 commit 85b0676

2 files changed

Lines changed: 9 additions & 3 deletions

File tree

src/ServerLib/Components/ServerEnvironmentSwitchComponent.cpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
#include <CommonLib/Components/ScriptedEntityComponent.hpp>
99
#include <CommonLib/Components/TickComponent.hpp>
1010
#include <ServerLib/ServerEnvironment.hpp>
11+
#include <ServerLib/Components/AtmosphereExchanger.hpp>
1112
#include <ServerLib/Components/AtmosphereMonitor.hpp>
1213
#include <ServerLib/Components/DatabaseComponent.hpp>
1314
#include <ServerLib/Components/NetworkedComponent.hpp>
@@ -71,6 +72,9 @@ namespace tsom
7172
newEntity.emplace<Nz::RigidBody3DComponent>(physicsSettings, rigidBodyComponent->GetReplicationMode());
7273
}
7374

75+
if (AtmosphereExchanger* atmosphereExchanger = oldEntity.try_get<AtmosphereExchanger>())
76+
newEntity.emplace<AtmosphereExchanger>(*atmosphereExchanger);
77+
7478
if (AtmosphereMonitor* atmosphereMonitor = oldEntity.try_get<AtmosphereMonitor>())
7579
newEntity.emplace<AtmosphereMonitor>(*atmosphereMonitor);
7680

src/ServerLib/Entities/ServerEntityClassLibrary.cpp

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -35,9 +35,7 @@ namespace tsom
3535
Nz::UInt32 oxygenIndex = m_playerClass->FindProperty("oxygen");
3636
Nz::UInt32 deathRpc = m_playerClass->FindClientRpc("death");
3737

38-
auto& atmosphereExchanger = entity.emplace<AtmosphereExchanger>();
39-
atmosphereExchanger.gasModifier[GasType::Oxygen] = -Constants::PlayerOxygenConsumption;
40-
atmosphereExchanger.gasModifier[GasType::CarbonDioxyde] = Constants::PlayerOxygenConsumption;
38+
auto& atmosphereExchanger = entity.get<AtmosphereExchanger>();
4139

4240
atmosphereExchanger.OnExchangeFailed.Connect([healthIndex, oxygenIndex, deathRpc](entt::handle playerEntity, AtmosphereExchanger*)
4341
{
@@ -95,6 +93,10 @@ namespace tsom
9593

9694
entity.emplace<AtmosphereMonitor>();
9795

96+
auto& atmosphereExchanger = entity.emplace<AtmosphereExchanger>();
97+
atmosphereExchanger.gasModifier[GasType::Oxygen] = -Constants::PlayerOxygenConsumption;
98+
atmosphereExchanger.gasModifier[GasType::CarbonDioxyde] = Constants::PlayerOxygenConsumption;
99+
98100
auto& characterComponent = entity.emplace<Nz::PhysCharacter3DComponent>(std::move(characterSettings));
99101
characterComponent.SetImpl(characterController);
100102
characterComponent.DisableSleeping();

0 commit comments

Comments
 (0)