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
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;
}
+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; }
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<float> m_visibilityDistanceOverride;
bool m_isWorldObject;
public ZoneScript m_zoneScript;