Core/Groups: Fixes groups staying linked with players.

This commit is contained in:
Hondacrx
2025-09-02 22:43:56 -04:00
parent 6531cd9dc1
commit 3d23a9f162
34 changed files with 385 additions and 402 deletions
+18 -5
View File
@@ -3,7 +3,6 @@
using Framework.Constants;
using Framework.Database;
using Framework.Dynamic;
using Game.BattleGrounds;
using Game.Collision;
using Game.DataStorage;
@@ -15,7 +14,6 @@ using Game.Scenarios;
using System;
using System.Collections;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Numerics;
@@ -62,7 +60,7 @@ namespace Game.Maps
_worldStateValues = Global.WorldStateMgr.GetInitialWorldStatesForMap(this);
}
public void Dispose()
public virtual void Dispose()
{
// Delete all waiting spawns
// This doesn't delete from database.
@@ -389,7 +387,6 @@ namespace Game.Maps
}
}
public void AddInfiniteAOIVignette(VignetteData vignette)
{
_infiniteAOIVignettes.Add(vignette);
@@ -4905,10 +4902,14 @@ namespace Game.Maps
}
}
~InstanceMap()
public override void Dispose()
{
if (i_instanceLock != null)
i_instanceLock.SetInUse(false);
i_owningGroupRef.Dispose();
base.Dispose();
}
public override void InitVisibilityDistance()
@@ -5339,6 +5340,18 @@ namespace Game.Maps
InitVisibilityDistance();
}
public override void Dispose()
{
if (m_bg != null)
{
//unlink to prevent crash, always unlink all pointer reference before destruction
m_bg.SetBgMap(null);
m_bg.Dispose();
}
base.Dispose();
}
public override void InitVisibilityDistance()
{
m_VisibleDistance = IsBattleArena() ? Global.WorldMgr.GetMaxVisibleDistanceInArenas() : Global.WorldMgr.GetMaxVisibleDistanceInBG();