Core/AreaTriggers: Implement visibility of serverside areatriggers with .debug areatrigger command
Port From (https://github.com/TrinityCore/TrinityCore/commit/1b55f85fad95a717be912166a06cec118352fd56)
This commit is contained in:
@@ -46,6 +46,7 @@ namespace Game.Chat
|
||||
handler.SendSysMessage(CypherStrings.DebugAreatriggerOff);
|
||||
player.IsDebugAreaTriggers = false;
|
||||
}
|
||||
player.UpdateObjectVisibility();
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
@@ -256,6 +256,13 @@ namespace Game.Entities
|
||||
|
||||
SetObjectScale(1.0f);
|
||||
|
||||
SetUpdateFieldValue(m_areaTriggerData.ModifyValue(m_areaTriggerData.BoundsRadius2D), GetMaxSearchRadius());
|
||||
SetUpdateFieldValue(m_areaTriggerData.ModifyValue(m_areaTriggerData.DecalPropertiesID), 24u); // blue decal, for .debug areatrigger visibility
|
||||
|
||||
ScaleCurve extraScaleCurve = m_areaTriggerData.ModifyValue(m_areaTriggerData.ExtraScaleCurve);
|
||||
SetUpdateFieldValue(extraScaleCurve.ModifyValue(extraScaleCurve.ParameterCurve), (uint)1.0000001f);
|
||||
SetUpdateFieldValue(extraScaleCurve.ModifyValue(extraScaleCurve.OverrideActive), true);
|
||||
|
||||
_shape = position.Shape;
|
||||
_maxSearchRadius = _shape.GetMaxSearchRadius();
|
||||
|
||||
@@ -978,6 +985,23 @@ namespace Game.Entities
|
||||
_ai = null;
|
||||
}
|
||||
|
||||
public override bool IsNeverVisibleFor(WorldObject seer, bool allowServersideObjects)
|
||||
{
|
||||
if (base.IsNeverVisibleFor(seer, allowServersideObjects))
|
||||
return true;
|
||||
|
||||
if (IsServerSide() && !allowServersideObjects)
|
||||
{
|
||||
Player seerPlayer = seer.ToPlayer();
|
||||
if (seerPlayer != null)
|
||||
return !seerPlayer.IsDebugAreaTriggers;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
public override void BuildValuesCreate(WorldPacket data, Player target)
|
||||
{
|
||||
UpdateFieldFlag flags = GetUpdateFieldFlagsFor(target);
|
||||
@@ -1044,11 +1068,6 @@ namespace Game.Entities
|
||||
|
||||
public bool IsServerSide() { return _areaTriggerTemplate.Id.IsServerSide; }
|
||||
|
||||
public override bool IsNeverVisibleFor(WorldObject seer, bool allowServersideObjects = false)
|
||||
{
|
||||
return base.IsNeverVisibleFor(seer) || (IsServerSide() && !allowServersideObjects);
|
||||
}
|
||||
|
||||
[System.Diagnostics.Conditional("DEBUG")]
|
||||
void DebugVisualizePosition()
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user