diff options
| author | Giacomo Pozzoni <giacomopoz@gmail.com> | 2019-08-04 11:33:29 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2019-08-04 11:33:29 +0200 |
| commit | 15e85f882fdb7b5d1d48302907e76c993ee4e923 (patch) | |
| tree | 4c37b3a480d45d4ee2a06870d459b82ee3977ab8 /src/server/game/Entities/Player | |
| parent | b159921099e3d10fbe282d9496b9ffb56f28f16d (diff) | |
Core/Vehicle: Change vehicle accessories' phase according to the player on the vehicle (#23646)
* Core/Vehicle: Change vehicle accessories' phase according to the player on the vehicle
* Get the root vehicle to set the phase to all accessories.
Attempt to get the accessories to stay mounted on the vehicle.
* Fix the accessories to stay mounted on the vehicle
Diffstat (limited to 'src/server/game/Entities/Player')
| -rw-r--r-- | src/server/game/Entities/Player/Player.cpp | 14 | ||||
| -rw-r--r-- | src/server/game/Entities/Player/Player.h | 1 |
2 files changed, 15 insertions, 0 deletions
diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp index 89fd02dbdce..392514a2f93 100644 --- a/src/server/game/Entities/Player/Player.cpp +++ b/src/server/game/Entities/Player/Player.cpp @@ -22484,6 +22484,20 @@ void Player::UpdateVisibilityForPlayer() notifier.SendToSelf(); // send gathered data } +void Player::SetPhaseMask(uint32 newPhaseMask, bool update) +{ + if (newPhaseMask == GetPhaseMask()) + return; + + Unit::SetPhaseMask(newPhaseMask, false); + + if (Unit* vehicle = GetVehicleRoot()) + vehicle->SetPhaseMask(newPhaseMask, update); + + if (update) + UpdateObjectVisibility(); +} + void Player::InitPrimaryProfessions() { SetFreePrimaryProfessions(sWorld->getIntConfig(CONFIG_MAX_PRIMARY_TRADE_SKILL)); diff --git a/src/server/game/Entities/Player/Player.h b/src/server/game/Entities/Player/Player.h index 454ab16bf11..5aa9069f91a 100644 --- a/src/server/game/Entities/Player/Player.h +++ b/src/server/game/Entities/Player/Player.h @@ -2008,6 +2008,7 @@ class TC_GAME_API Player : public Unit, public GridObject<Player> void UpdateVisibilityForPlayer(); void UpdateVisibilityOf(WorldObject* target); void UpdateTriggerVisibility(); + void SetPhaseMask(uint32 newPhaseMask, bool update) override;// overwrite Unit::SetPhaseMask template<class T> void UpdateVisibilityOf(T* target, UpdateData& data, std::set<Unit*>& visibleNow); |
