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);
|
handler.SendSysMessage(CypherStrings.DebugAreatriggerOff);
|
||||||
player.IsDebugAreaTriggers = false;
|
player.IsDebugAreaTriggers = false;
|
||||||
}
|
}
|
||||||
|
player.UpdateObjectVisibility();
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -256,6 +256,13 @@ namespace Game.Entities
|
|||||||
|
|
||||||
SetObjectScale(1.0f);
|
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;
|
_shape = position.Shape;
|
||||||
_maxSearchRadius = _shape.GetMaxSearchRadius();
|
_maxSearchRadius = _shape.GetMaxSearchRadius();
|
||||||
|
|
||||||
@@ -978,6 +985,23 @@ namespace Game.Entities
|
|||||||
_ai = null;
|
_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)
|
public override void BuildValuesCreate(WorldPacket data, Player target)
|
||||||
{
|
{
|
||||||
UpdateFieldFlag flags = GetUpdateFieldFlagsFor(target);
|
UpdateFieldFlag flags = GetUpdateFieldFlagsFor(target);
|
||||||
@@ -1044,11 +1068,6 @@ namespace Game.Entities
|
|||||||
|
|
||||||
public bool IsServerSide() { return _areaTriggerTemplate.Id.IsServerSide; }
|
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")]
|
[System.Diagnostics.Conditional("DEBUG")]
|
||||||
void DebugVisualizePosition()
|
void DebugVisualizePosition()
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user