Simplify ScreenMap bounds checking.

This commit is contained in:
Paul Chote
2017-12-03 15:17:07 +00:00
committed by reaperrr
parent cdc426d162
commit 9e18ec7314
4 changed files with 13 additions and 23 deletions

View File

@@ -78,12 +78,16 @@ namespace OpenRA.Traits
public void Add(Actor a)
{
partitionedActors.Add(a, ActorBounds(a));
var bounds = ActorBounds(a);
if (!bounds.Size.IsEmpty)
partitionedActors.Add(a, ActorBounds(a));
}
public void Update(Actor a)
{
partitionedActors.Update(a, ActorBounds(a));
var bounds = ActorBounds(a);
if (!bounds.Size.IsEmpty)
partitionedActors.Update(a, ActorBounds(a));
}
public void Remove(Actor a)

View File

@@ -191,9 +191,7 @@ namespace OpenRA
{
ActorMap.AddInfluence(self, ios);
ActorMap.AddPosition(self, ios);
if (!self.RenderBounds.Size.IsEmpty)
ScreenMap.Add(self);
ScreenMap.Add(self);
}
public void UpdateMaps(Actor self, IOccupySpace ios)
@@ -201,9 +199,7 @@ namespace OpenRA
if (!self.IsInWorld)
return;
if (!self.RenderBounds.Size.IsEmpty)
ScreenMap.Update(self);
ScreenMap.Update(self);
ActorMap.UpdatePosition(self, ios);
}
@@ -211,9 +207,7 @@ namespace OpenRA
{
ActorMap.RemoveInfluence(self, ios);
ActorMap.RemovePosition(self, ios);
if (!self.RenderBounds.Size.IsEmpty)
ScreenMap.Remove(self);
ScreenMap.Remove(self);
}
public void LoadComplete(WorldRenderer wr)

View File

@@ -313,9 +313,7 @@ namespace OpenRA.Mods.Common.Traits
self.World.ActorMap.AddInfluence(self, this);
self.World.ActorMap.AddPosition(self, this);
if (!self.RenderBounds.Size.IsEmpty)
self.World.ScreenMap.Add(self);
self.World.ScreenMap.Add(self);
influence.AddInfluence(self, Info.Tiles(self.Location));
}
@@ -324,9 +322,7 @@ namespace OpenRA.Mods.Common.Traits
{
self.World.ActorMap.RemoveInfluence(self, this);
self.World.ActorMap.RemovePosition(self, this);
if (!self.RenderBounds.Size.IsEmpty)
self.World.ScreenMap.Remove(self);
self.World.ScreenMap.Remove(self);
influence.RemoveInfluence(self, Info.Tiles(self.Location));
}

View File

@@ -56,18 +56,14 @@ namespace OpenRA.Mods.Common.Traits
{
self.World.ActorMap.AddInfluence(self, this);
self.World.ActorMap.AddPosition(self, this);
if (!self.RenderBounds.Size.IsEmpty)
self.World.ScreenMap.Add(self);
self.World.ScreenMap.Add(self);
}
void INotifyRemovedFromWorld.RemovedFromWorld(Actor self)
{
self.World.ActorMap.RemoveInfluence(self, this);
self.World.ActorMap.RemovePosition(self, this);
if (!self.RenderBounds.Size.IsEmpty)
self.World.ScreenMap.Remove(self);
self.World.ScreenMap.Remove(self);
}
}
}