Cache ProjectedCellBounds during load time
This commit is contained in:
@@ -233,7 +233,7 @@ namespace OpenRA
|
||||
public CellLayer<byte> Ramp { get; private set; }
|
||||
public CellLayer<byte> CustomTerrain { get; private set; }
|
||||
|
||||
public ProjectedCellRegion ProjectedCellBounds { get; private set; }
|
||||
public PPos[] ProjectedCells { get; private set; }
|
||||
public CellRegion AllCells { get; private set; }
|
||||
public List<CPos> AllEdgeCells { get; private set; }
|
||||
|
||||
@@ -822,6 +822,7 @@ namespace OpenRA
|
||||
foreach (var puv in projectedCells)
|
||||
if (!Contains(puv))
|
||||
return false;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -1017,7 +1018,8 @@ namespace OpenRA
|
||||
ProjectedBottomRight = new WPos(br.U * 1024 - 1, (br.V + 1) * 1024 - 1, 0);
|
||||
}
|
||||
|
||||
ProjectedCellBounds = new ProjectedCellRegion(this, tl, br);
|
||||
// PERF: This enumeration isn't going to change during the game
|
||||
ProjectedCells = new ProjectedCellRegion(this, tl, br).ToArray();
|
||||
}
|
||||
|
||||
public void FixOpenAreas()
|
||||
|
||||
@@ -162,7 +162,7 @@ namespace OpenRA.Traits
|
||||
if (OnShroudChanged == null)
|
||||
return;
|
||||
|
||||
foreach (var puv in map.ProjectedCellBounds)
|
||||
foreach (var puv in map.ProjectedCells)
|
||||
{
|
||||
if (!touched[puv])
|
||||
continue;
|
||||
@@ -298,7 +298,7 @@ namespace OpenRA.Traits
|
||||
if (map.Bounds != s.map.Bounds)
|
||||
throw new ArgumentException("The map bounds of these shrouds do not match.", "s");
|
||||
|
||||
foreach (var puv in map.ProjectedCellBounds)
|
||||
foreach (var puv in map.ProjectedCells)
|
||||
{
|
||||
if (!explored[puv] && s.explored[puv])
|
||||
{
|
||||
@@ -310,7 +310,7 @@ namespace OpenRA.Traits
|
||||
|
||||
public void ExploreAll()
|
||||
{
|
||||
foreach (var puv in map.ProjectedCellBounds)
|
||||
foreach (var puv in map.ProjectedCells)
|
||||
{
|
||||
if (!explored[puv])
|
||||
{
|
||||
@@ -322,7 +322,7 @@ namespace OpenRA.Traits
|
||||
|
||||
public void ResetExploration()
|
||||
{
|
||||
foreach (var puv in map.ProjectedCellBounds)
|
||||
foreach (var puv in map.ProjectedCells)
|
||||
{
|
||||
touched[puv] = true;
|
||||
explored[puv] = (visibleCount[puv] + passiveVisibleCount[puv]) > 0;
|
||||
|
||||
Reference in New Issue
Block a user