mirror of
https://github.com/mod-playerbots/azerothcore-wotlk.git
synced 2026-01-19 03:45:43 +00:00
fix(Core/Movement): (#7008)
- Get zone/area IDs from vmap data in the liquid update - Add new method Map::getFullVMapDataForPosition to get area info and liquid info in a single vmap lookup - Adjust GetZoneId/GetAreaId on WorldObject to always return these cached fields. - Clean up liquid state handling on Unit and Player - Implemented getting area id from gameobject spawns. - Removed old core related to getting movement flags dependent on environment. - Movement flags are now processed more precisely and dynamically. Original source: TrinityCore. - Closes #5086 - Updates #2208.
This commit is contained in:
@@ -1772,10 +1772,8 @@ public:
|
||||
bool IsValidAssistTarget(Unit const* target) const;
|
||||
bool _IsValidAssistTarget(Unit const* target, SpellInfo const* bySpell) const;
|
||||
|
||||
void UpdateEnvironmentIfNeeded(const uint8 option);
|
||||
[[nodiscard]] virtual bool IsInWater(bool allowAbove = false) const;
|
||||
[[nodiscard]] virtual bool IsInWater() const;
|
||||
[[nodiscard]] virtual bool IsUnderWater() const;
|
||||
virtual void UpdateUnderwaterState(Map* m, float x, float y, float z);
|
||||
bool isInAccessiblePlaceFor(Creature const* c) const;
|
||||
|
||||
void SendHealSpellLog(Unit* victim, uint32 SpellID, uint32 Damage, uint32 OverHeal, uint32 Absorb, bool critical = false);
|
||||
@@ -2454,25 +2452,6 @@ public:
|
||||
bool bRequestForcedVisibilityUpdate;
|
||||
void ExecuteDelayedUnitRelocationEvent();
|
||||
void ExecuteDelayedUnitAINotifyEvent();
|
||||
// IsInWater, UpdateUnderwaterState, etc. optimizations
|
||||
Position m_last_underwaterstate_position;
|
||||
Position m_last_environment_position;
|
||||
bool m_last_isinwater_status;
|
||||
bool m_last_islittleabovewater_status;
|
||||
bool m_last_isunderwater_status;
|
||||
bool m_is_updating_environment;
|
||||
// GetZone / GetArea optimization
|
||||
Position m_last_area_position;
|
||||
Position m_last_zone_position;
|
||||
uint32 m_last_area_id;
|
||||
uint32 m_last_zone_id;
|
||||
Position m_last_outdoors_position;
|
||||
bool m_last_outdoors_status;
|
||||
[[nodiscard]] bool IsOutdoors() const;
|
||||
|
||||
[[nodiscard]] uint32 GetZoneId(bool forceRecalc = false) const override;
|
||||
[[nodiscard]] uint32 GetAreaId(bool forceRecalc = false) const override;
|
||||
void GetZoneAndAreaId(uint32& zoneid, uint32& areaid, bool forceRecalc = false) const override;
|
||||
|
||||
// cooldowns
|
||||
[[nodiscard]] virtual bool HasSpellCooldown(uint32 /*spell_id*/) const { return false; }
|
||||
@@ -2503,6 +2482,9 @@ public:
|
||||
[[nodiscard]] float GetCollisionWidth() const override;
|
||||
[[nodiscard]] float GetCollisionRadius() const override;
|
||||
|
||||
void ProcessPositionDataChanged(PositionFullTerrainStatus const& data) override;
|
||||
virtual void ProcessTerrainStatusUpdate();
|
||||
|
||||
protected:
|
||||
explicit Unit (bool isWorldObject);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user