Auto update room portal counts when adding/editing portals

This commit is contained in:
dexy 2021-11-08 23:43:47 +11:00
parent 8ac37258c3
commit 958c6def5b
2 changed files with 28 additions and 0 deletions

View File

@ -315,6 +315,8 @@ namespace CodeWalker.GameFiles
{
rooms[i].Index = i;
}
UpdatePortalCounts();//portal room indices probably would need to be updated anyway
}
public void AddPortal(MCMloPortalDef portal)
@ -327,6 +329,8 @@ namespace CodeWalker.GameFiles
var newportals = portals?.ToList() ?? new List<MCMloPortalDef>();
newportals.Add(portal);
portals = newportals.ToArray();
UpdatePortalCounts();
}
public void RemovePortal(MCMloPortalDef portal)
{
@ -340,6 +344,8 @@ namespace CodeWalker.GameFiles
{
portals[i].Index = i;
}
UpdatePortalCounts();
}
public void AddEntitySet(MCMloEntitySet set)
@ -432,6 +438,26 @@ namespace CodeWalker.GameFiles
}
}
public void UpdatePortalCounts()
{
if ((rooms == null) || (portals == null)) return;
foreach (var room in rooms)
{
uint count = 0;
foreach (var portal in portals)
{
if ((portal._Data.roomFrom == room.Index) || (portal._Data.roomTo == room.Index))
{
count++;
}
}
room._Data.portalCount = count;
}
}
public void LoadChildren(Meta meta)
{
var centities = MetaTypes.ConvertDataArray<CEntityDef>(meta, MetaName.CEntityDef, _MloArchetypeDefData.entities);

View File

@ -103,6 +103,7 @@ namespace CodeWalker.Project.Panels
if (CurrentPortal._Data.roomFrom != u)
{
CurrentPortal._Data.roomFrom = u;
CurrentPortal.OwnerMlo?.UpdatePortalCounts();
ProjectForm.SetYtypHasChanged(true);
}
}
@ -123,6 +124,7 @@ namespace CodeWalker.Project.Panels
if (CurrentPortal._Data.roomTo != u)
{
CurrentPortal._Data.roomTo = u;
CurrentPortal.OwnerMlo?.UpdatePortalCounts();
ProjectForm.SetYtypHasChanged(true);
}
}