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

View File

@@ -65,6 +65,11 @@ namespace OpenRA.Traits
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 )
{
foreach( var c in unit.OccupiedCells() )