Core/Entities: remove grid-wide visibility from setActive and implement another method for it

Port From (https://github.com/TrinityCore/TrinityCore/commit/8713a623283b4d0e414a97b566854c1b21e8754b)
This commit is contained in:
hondacrx
2021-08-08 23:31:06 -04:00
parent dac2b45ab8
commit da5eb28902
2 changed files with 21 additions and 8 deletions
+2
View File
@@ -681,6 +681,7 @@ namespace Game.BattleFields
// Set creature in world // Set creature in world
m_Map.AddToMap(creature); m_Map.AddToMap(creature);
creature.SetActive(true); creature.SetActive(true);
creature.SetFarVisible(true);
return creature; return creature;
} }
@@ -705,6 +706,7 @@ namespace Game.BattleFields
// Add to world // Add to world
m_Map.AddToMap(go); m_Map.AddToMap(go);
go.SetActive(true); go.SetActive(true);
go.SetFarVisible(true);
return go; return go;
} }
+19 -8
View File
@@ -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; } bool IsVisibilityOverridden() { return m_visibilityDistanceOverride.HasValue; }
public void SetVisibilityDistanceOverride(VisibilityDistanceType type) public void SetVisibilityDistanceOverride(VisibilityDistanceType type)
@@ -1053,9 +1063,9 @@ namespace Game.Entities
public float GetVisibilityRange() public float GetVisibilityRange()
{ {
if (IsVisibilityOverridden() && !IsTypeId(TypeId.Player)) if (IsVisibilityOverridden() && !IsPlayer())
return m_visibilityDistanceOverride.Value; return m_visibilityDistanceOverride.Value;
else if (IsActiveObject() && !IsTypeId(TypeId.Player)) else if (IsFarVisible() && !IsPlayer())
return SharedConst.MaxVisibilityDistance; return SharedConst.MaxVisibilityDistance;
else else
return GetMap().GetVisibilityRange(); return GetMap().GetVisibilityRange();
@@ -1063,26 +1073,26 @@ namespace Game.Entities
public float GetSightRange(WorldObject target = null) 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; 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; return SharedConst.MaxVisibilityDistance;
else if (ToPlayer().GetCinematicMgr().IsOnCinematic()) else if (ToPlayer().GetCinematicMgr().IsOnCinematic())
return SharedConst.DefaultVisibilityInstance; return SharedConst.DefaultVisibilityInstance;
else else
return GetMap().GetVisibilityRange(); return GetMap().GetVisibilityRange();
} }
else if (IsTypeId(TypeId.Unit)) else if (IsCreature())
return ToCreature().m_SightDistance; return ToCreature().m_SightDistance;
else else
return SharedConst.SightRangeUnit; return SharedConst.SightRangeUnit;
} }
if (IsTypeId(TypeId.DynamicObject) && IsActiveObject()) if (IsDynObject() && IsActiveObject())
{ {
return GetMap().GetVisibilityRange(); return GetMap().GetVisibilityRange();
} }
@@ -2383,6 +2393,7 @@ namespace Game.Entities
public MovementInfo m_movementInfo; public MovementInfo m_movementInfo;
string _name; string _name;
protected bool m_isActive; protected bool m_isActive;
bool m_isFarVisible;
Optional<float> m_visibilityDistanceOverride; Optional<float> m_visibilityDistanceOverride;
bool m_isWorldObject; bool m_isWorldObject;
public ZoneScript m_zoneScript; public ZoneScript m_zoneScript;