aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Entities/Player
diff options
context:
space:
mode:
authorGiacomo Pozzoni <giacomopoz@gmail.com>2019-08-04 11:33:29 +0200
committerGitHub <noreply@github.com>2019-08-04 11:33:29 +0200
commit15e85f882fdb7b5d1d48302907e76c993ee4e923 (patch)
tree4c37b3a480d45d4ee2a06870d459b82ee3977ab8 /src/server/game/Entities/Player
parentb159921099e3d10fbe282d9496b9ffb56f28f16d (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.cpp14
-rw-r--r--src/server/game/Entities/Player/Player.h1
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);