From da5eb28902d5fa68d511b51fcce0c00ac1fcb357 Mon Sep 17 00:00:00 2001 From: hondacrx Date: Sun, 8 Aug 2021 23:31:06 -0400 Subject: [PATCH] Core/Entities: remove grid-wide visibility from setActive and implement another method for it Port From (https://github.com/TrinityCore/TrinityCore/commit/8713a623283b4d0e414a97b566854c1b21e8754b) --- Source/Game/BattleFields/BattleField.cs | 2 ++ Source/Game/Entities/Object/WorldObject.cs | 27 +++++++++++++++------- 2 files changed, 21 insertions(+), 8 deletions(-) diff --git a/Source/Game/BattleFields/BattleField.cs b/Source/Game/BattleFields/BattleField.cs index 2f799ba11..29c0c2645 100644 --- a/Source/Game/BattleFields/BattleField.cs +++ b/Source/Game/BattleFields/BattleField.cs @@ -681,6 +681,7 @@ namespace Game.BattleFields // Set creature in world m_Map.AddToMap(creature); creature.SetActive(true); + creature.SetFarVisible(true); return creature; } @@ -705,6 +706,7 @@ namespace Game.BattleFields // Add to world m_Map.AddToMap(go); go.SetActive(true); + go.SetFarVisible(true); return go; } diff --git a/Source/Game/Entities/Object/WorldObject.cs b/Source/Game/Entities/Object/WorldObject.cs index 8c8f78e42..55fabb842 100644 --- a/Source/Game/Entities/Object/WorldObject.cs +++ b/Source/Game/Entities/Object/WorldObject.cs @@ -990,6 +990,16 @@ namespace Game.Entities } } + bool IsFarVisible() { return m_isFarVisible; } + + public void SetFarVisible(bool on) + { + if (IsPlayer()) + return; + + m_isFarVisible = on; + } + bool IsVisibilityOverridden() { return m_visibilityDistanceOverride.HasValue; } public void SetVisibilityDistanceOverride(VisibilityDistanceType type) @@ -1053,9 +1063,9 @@ namespace Game.Entities public float GetVisibilityRange() { - if (IsVisibilityOverridden() && !IsTypeId(TypeId.Player)) + if (IsVisibilityOverridden() && !IsPlayer()) return m_visibilityDistanceOverride.Value; - else if (IsActiveObject() && !IsTypeId(TypeId.Player)) + else if (IsFarVisible() && !IsPlayer()) return SharedConst.MaxVisibilityDistance; else return GetMap().GetVisibilityRange(); @@ -1063,26 +1073,26 @@ namespace Game.Entities public float GetSightRange(WorldObject target = null) { - if (IsTypeId(TypeId.Player) || IsTypeId(TypeId.Unit)) + if (IsPlayer() || IsCreature()) { - if (IsTypeId(TypeId.Player)) + if (IsPlayer()) { - if (target != null && target.IsVisibilityOverridden() && !target.IsTypeId(TypeId.Player)) + if (target != null && target.IsVisibilityOverridden() && !target.IsPlayer()) return target.m_visibilityDistanceOverride.Value; - else if (target != null && target.IsActiveObject() && !target.IsTypeId(TypeId.Player)) + else if (target != null && target.IsFarVisible() && !target.IsPlayer()) return SharedConst.MaxVisibilityDistance; else if (ToPlayer().GetCinematicMgr().IsOnCinematic()) return SharedConst.DefaultVisibilityInstance; else return GetMap().GetVisibilityRange(); } - else if (IsTypeId(TypeId.Unit)) + else if (IsCreature()) return ToCreature().m_SightDistance; else return SharedConst.SightRangeUnit; } - if (IsTypeId(TypeId.DynamicObject) && IsActiveObject()) + if (IsDynObject() && IsActiveObject()) { return GetMap().GetVisibilityRange(); } @@ -2383,6 +2393,7 @@ namespace Game.Entities public MovementInfo m_movementInfo; string _name; protected bool m_isActive; + bool m_isFarVisible; Optional m_visibilityDistanceOverride; bool m_isWorldObject; public ZoneScript m_zoneScript;