Forgot the files.

This commit is contained in:
hondacrx
2021-09-13 13:39:22 -04:00
parent 505e5ae216
commit 87bc4be1b5
3 changed files with 44 additions and 30 deletions
@@ -31,8 +31,8 @@ namespace Game.DataStorage
public void LoadAreaTriggerTemplates()
{
uint oldMSTime = Time.GetMSTime();
MultiMap<uint, Vector2> verticesByAreaTrigger = new();
MultiMap<uint, Vector2> verticesTargetByAreaTrigger = new();
MultiMap<uint, Vector2> verticesBySpellMisc = new();
MultiMap<uint, Vector2> verticesTargetBySpellMisc = new();
MultiMap<uint, Vector3> splinesBySpellMisc = new();
MultiMap<AreaTriggerId, AreaTriggerAction> actionsByAreaTrigger = new();
@@ -80,20 +80,20 @@ namespace Game.DataStorage
Log.outInfo(LogFilter.ServerLoading, "Loaded 0 AreaTrigger templates actions. DB table `areatrigger_template_actions` is empty.");
}
// 0 1 2 3 4 5
SQLResult vertices = DB.World.Query("SELECT AreaTriggerId, Idx, VerticeX, VerticeY, VerticeTargetX, VerticeTargetY FROM `areatrigger_template_polygon_vertices` ORDER BY `AreaTriggerId`, `Idx`");
// 0 1 2 3 4 5
SQLResult vertices = DB.World.Query("SELECT SpellMiscId, Idx, VerticeX, VerticeY, VerticeTargetX, VerticeTargetY FROM `spell_areatrigger_vertices` ORDER BY `SpellMiscId`, `Idx`");
if (!vertices.IsEmpty())
{
do
{
uint areaTriggerId = vertices.Read<uint>(0);
uint spellMiscId = vertices.Read<uint>(0);
verticesByAreaTrigger.Add(areaTriggerId, new Vector2(vertices.Read<float>(2), vertices.Read<float>(3)));
verticesBySpellMisc.Add(spellMiscId, new Vector2(vertices.Read<float>(2), vertices.Read<float>(3)));
if (!vertices.IsNull(4) && !vertices.IsNull(5))
verticesTargetByAreaTrigger.Add(areaTriggerId, new Vector2(vertices.Read<float>(4), vertices.Read<float>(5)));
verticesTargetBySpellMisc.Add(spellMiscId, new Vector2(vertices.Read<float>(4), vertices.Read<float>(5)));
else if (vertices.IsNull(4) != vertices.IsNull(5))
Log.outError(LogFilter.Sql, "Table `areatrigger_template_polygon_vertices` has listed invalid target vertices (AreaTrigger: {0}, Index: {1}).", areaTriggerId, vertices.Read<uint>(1));
Log.outError(LogFilter.Sql, $"Table `spell_areatrigger_vertices` has listed invalid target vertices (SpellMiscId: {spellMiscId}, Index: {vertices.Read<uint>(1)}).");
}
while (vertices.NextRow());
}
@@ -153,11 +153,6 @@ namespace Game.DataStorage
}
areaTriggerTemplate.ScriptId = Global.ObjectMgr.GetScriptId(templates.Read<string>(10));
if (!areaTriggerTemplate.Id.IsServerSide)
{
areaTriggerTemplate.PolygonVertices = verticesByAreaTrigger[areaTriggerTemplate.Id.Id];
areaTriggerTemplate.PolygonVerticesTarget = verticesTargetByAreaTrigger[areaTriggerTemplate.Id.Id];
}
areaTriggerTemplate.Actions = actionsByAreaTrigger[areaTriggerTemplate.Id];
areaTriggerTemplate.InitMaxSearchRadius();
@@ -207,6 +202,8 @@ namespace Game.DataStorage
miscTemplate.TimeToTarget = areatriggerSpellMiscs.Read<uint>(9);
miscTemplate.TimeToTargetScale = areatriggerSpellMiscs.Read<uint>(10);
miscTemplate.PolygonVertices = verticesBySpellMisc[miscTemplate.MiscId];
miscTemplate.PolygonVerticesTarget = verticesTargetBySpellMisc[miscTemplate.MiscId];
miscTemplate.SplinePoints = splinesBySpellMisc[miscTemplate.MiscId];
_areaTriggerTemplateSpellMisc[miscTemplate.MiscId] = miscTemplate;
@@ -107,6 +107,11 @@ namespace Game.Entities
SetObjectScale(1.0f);
if (GetTemplate().IsPolygon())
_maxSearchRadius = GetMiscTemplate().GetPolygonMaxSearchRadius();
else
_maxSearchRadius = GetTemplate().MaxSearchRadius;
SetUpdateFieldValue(m_values.ModifyValue(m_areaTriggerData).ModifyValue(m_areaTriggerData.Caster), caster.GetGUID());
SetUpdateFieldValue(m_values.ModifyValue(m_areaTriggerData).ModifyValue(m_areaTriggerData.CreatingEffectGUID), castId);
@@ -118,7 +123,7 @@ namespace Game.Entities
SetUpdateFieldValue(ref spellCastVisual.ScriptVisualID, spellVisual.ScriptVisualID);
SetUpdateFieldValue(m_values.ModifyValue(m_areaTriggerData).ModifyValue(m_areaTriggerData.TimeToTargetScale), GetMiscTemplate().TimeToTargetScale != 0 ? GetMiscTemplate().TimeToTargetScale : m_areaTriggerData.Duration);
SetUpdateFieldValue(m_values.ModifyValue(m_areaTriggerData).ModifyValue(m_areaTriggerData.BoundsRadius2D), GetTemplate().MaxSearchRadius);
SetUpdateFieldValue(m_values.ModifyValue(m_areaTriggerData).ModifyValue(m_areaTriggerData.BoundsRadius2D), GetMaxSearchRadius());
SetUpdateFieldValue(m_values.ModifyValue(m_areaTriggerData).ModifyValue(m_areaTriggerData.DecalPropertiesID), GetMiscTemplate().DecalPropertiesId);
ScaleCurve extraScaleCurve = m_values.ModifyValue(m_areaTriggerData).ModifyValue(m_areaTriggerData.ExtraScaleCurve);
@@ -356,12 +361,12 @@ namespace Game.Entities
if (IsServerSide())
{
var searcher = new PlayerListSearcher(this, targetList, check);
Cell.VisitWorldObjects(this, searcher, GetTemplate().MaxSearchRadius);
Cell.VisitWorldObjects(this, searcher, GetMaxSearchRadius());
}
else
{
var searcher = new UnitListSearcher(this, targetList, check);
Cell.VisitAllObjects(this, searcher, GetTemplate().MaxSearchRadius);
Cell.VisitAllObjects(this, searcher, GetMaxSearchRadius());
}
}
@@ -381,7 +386,7 @@ namespace Game.Entities
void SearchUnitInBox(List<Unit> targetList)
{
SearchUnits(targetList, GetTemplate().MaxSearchRadius, false);
SearchUnits(targetList, GetMaxSearchRadius(), false);
Position boxCenter = GetPosition();
float extentsX, extentsY, extentsZ;
@@ -398,7 +403,7 @@ namespace Game.Entities
void SearchUnitInPolygon(List<Unit> targetList)
{
SearchUnits(targetList, GetTemplate().MaxSearchRadius, false);
SearchUnits(targetList, GetMaxSearchRadius(), false);
float height = GetTemplate().PolygonDatas.Height;
float minZ = GetPositionZ() - height;
@@ -409,7 +414,7 @@ namespace Game.Entities
void SearchUnitInCylinder(List<Unit> targetList)
{
SearchUnits(targetList, GetTemplate().MaxSearchRadius, false);
SearchUnits(targetList, GetMaxSearchRadius(), false);
float height = GetTemplate().CylinderDatas.Height;
float minZ = GetPositionZ() - height;
@@ -508,7 +513,7 @@ namespace Game.Entities
if (MathFunctions.fuzzyEq(_previousCheckOrientation, newOrientation))
return;
_polygonVertices = GetTemplate().PolygonVertices;
_polygonVertices = GetMiscTemplate().PolygonVertices;
float angleSin = (float)Math.Sin(newOrientation);
float angleCos = (float)Math.Cos(newOrientation);
@@ -1014,6 +1019,7 @@ namespace Game.Entities
public override ObjectGuid GetOwnerGUID() { return GetCasterGuid(); }
public ObjectGuid GetCasterGuid() { return m_areaTriggerData.Caster; }
float GetMaxSearchRadius() { return _maxSearchRadius; }
public Vector3 GetRollPitchYaw() { return _rollPitchYaw; }
public Vector3 GetTargetRollPitchYaw() { return _targetRollPitchYaw; }
@@ -1029,6 +1035,7 @@ namespace Game.Entities
AuraEffect _aurEff;
float _maxSearchRadius;
int _duration;
int _totalDuration;
uint _timeSinceCreated;
@@ -234,19 +234,12 @@ namespace Game.Entities
MaxSearchRadius = (float)Math.Sqrt(BoxDatas.Extents[0] * BoxDatas.Extents[0] / 4 + BoxDatas.Extents[1] * BoxDatas.Extents[1] / 4);
break;
}
// Polygon is SpellMisc based, can't init MaxSearchRadius
case AreaTriggerTypes.Polygon:
{
if (PolygonDatas.Height <= 0.0f)
PolygonDatas.Height = 1.0f;
foreach (Vector2 vertice in PolygonVertices)
{
float pointDist = vertice.GetLength();
if (pointDist > MaxSearchRadius)
MaxSearchRadius = pointDist;
}
break;
}
case AreaTriggerTypes.Cylinder:
@@ -272,8 +265,6 @@ namespace Game.Entities
public uint ScriptId;
public float MaxSearchRadius;
public List<Vector2> PolygonVertices = new();
public List<Vector2> PolygonVerticesTarget = new();
public List<AreaTriggerAction> Actions = new();
}
@@ -289,6 +280,22 @@ namespace Game.Entities
public bool HasSplines() { return SplinePoints.Count >= 2; }
public float GetPolygonMaxSearchRadius()
{
Position center = new(0.0f, 0.0f);
float maxSearchRadius = 0.0f;
foreach (var vertice in PolygonVertices)
{
float pointDist = center.GetExactDist2d(vertice.X, vertice.Y);
if (pointDist > maxSearchRadius)
maxSearchRadius = pointDist;
}
return maxSearchRadius;
}
public uint MiscId;
public uint AreaTriggerEntry;
@@ -310,6 +317,9 @@ namespace Game.Entities
public AreaTriggerOrbitInfo OrbitInfo;
public AreaTriggerTemplate Template;
public List<Vector2> PolygonVertices = new();
public List<Vector2> PolygonVerticesTarget = new();
public List<Vector3> SplinePoints = new();
}