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/Creature | |
| 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/Creature')
| -rw-r--r-- | src/server/game/Entities/Creature/Creature.cpp | 18 | ||||
| -rw-r--r-- | src/server/game/Entities/Creature/Creature.h | 1 |
2 files changed, 19 insertions, 0 deletions
diff --git a/src/server/game/Entities/Creature/Creature.cpp b/src/server/game/Entities/Creature/Creature.cpp index 096aea99f24..28d6f010e20 100644 --- a/src/server/game/Entities/Creature/Creature.cpp +++ b/src/server/game/Entities/Creature/Creature.cpp @@ -629,6 +629,24 @@ bool Creature::UpdateEntry(uint32 entry, CreatureData const* data /*= nullptr*/, return true; } +void Creature::SetPhaseMask(uint32 newPhaseMask, bool update) +{ + if (newPhaseMask == GetPhaseMask()) + return; + + Unit::SetPhaseMask(newPhaseMask, false); + + if (Vehicle* vehicle = GetVehicleKit()) + { + for (auto seat = vehicle->Seats.begin(); seat != vehicle->Seats.end(); seat++) + if (Unit* passenger = ObjectAccessor::GetUnit(*this, seat->second.Passenger.Guid)) + passenger->SetPhaseMask(newPhaseMask, update); + } + + if (update) + UpdateObjectVisibility(); +} + void Creature::Update(uint32 diff) { if (IsAIEnabled() && m_triggerJustAppeared && m_deathState != DEAD) diff --git a/src/server/game/Entities/Creature/Creature.h b/src/server/game/Entities/Creature/Creature.h index ed4b8fce669..db770589659 100644 --- a/src/server/game/Entities/Creature/Creature.h +++ b/src/server/game/Entities/Creature/Creature.h @@ -162,6 +162,7 @@ class TC_GAME_API Creature : public Unit, public GridObject<Creature>, public Ma bool HasSpell(uint32 spellID) const override; bool UpdateEntry(uint32 entry, CreatureData const* data = nullptr, bool updateLevel = true); + void SetPhaseMask(uint32 newPhaseMask, bool update) override;// overwrite Unit::SetPhaseMask bool UpdateStats(Stats stat) override; bool UpdateAllStats() override; |
