slightly faster again

This commit is contained in:
Chris Forbes
2010-07-26 21:39:23 +12:00
parent d774817b0e
commit e0a5350ed6
2 changed files with 22 additions and 20 deletions

View File

@@ -191,17 +191,14 @@ namespace OpenRA.Traits
} }
// Check mobile actors // Check mobile actors
if (checkTransientActors) if (checkTransientActors && uim.AnyUnitsAt(cell))
{ {
var actors = uim.GetUnitsAt(cell); var actors = uim.GetUnitsAt(cell).Where(a => a != self && a != ignoreActor).ToArray();
if (actors.Any()) var nonshareable = canShareCell ? actors : actors.Where(a => !a.traits.Contains<SharesCell>()).ToArray();
{
var actors2 = actors.Where(a => a != self && a != ignoreActor).ToArray();
var nonshareable = canShareCell ? actors2 : actors2.Where(a => !a.traits.Contains<SharesCell>()).ToArray();
if (canShareCell) if (canShareCell)
{ {
var shareable = actors2.Where(a => a.traits.Contains<SharesCell>()); var shareable = actors.Where(a => a.traits.Contains<SharesCell>());
// only allow 5 in a cell // only allow 5 in a cell
if (shareable.Count() >= 5) if (shareable.Count() >= 5)
@@ -216,7 +213,7 @@ namespace OpenRA.Traits
a.traits.WithInterface<ICrushable>().Any(b => b.CrushClasses.Intersect(Info.Crushes).Any())))) a.traits.WithInterface<ICrushable>().Any(b => b.CrushClasses.Intersect(Info.Crushes).Any()))))
return false; return false;
} }
}
return true; return true;
} }

View File

@@ -65,6 +65,11 @@ namespace OpenRA.Traits
return influence[ a.X, a.Y ]; return influence[ a.X, a.Y ];
} }
public bool AnyUnitsAt(int2 a)
{
return map.IsInMap(a) && influence[a.X, a.Y].Count > 0;
}
public void Add( Actor self, IOccupySpace unit ) public void Add( Actor self, IOccupySpace unit )
{ {
foreach( var c in unit.OccupiedCells() ) foreach( var c in unit.OccupiedCells() )