Track actor positions in ActorMap.

This commit is contained in:
Paul Chote
2013-09-21 16:06:39 +12:00
parent b00cc6108d
commit e03ec690ff
8 changed files with 64 additions and 8 deletions

View File

@@ -106,7 +106,10 @@ namespace OpenRA.Mods.RA.Air
CenterPosition = pos;
if (self.IsInWorld)
{
self.World.ScreenMap.Update(self);
self.World.ActorMap.UpdatePosition(self, this);
}
}
// Changes position, but not altitude
@@ -116,12 +119,14 @@ namespace OpenRA.Mods.RA.Air
public void AddedToWorld(Actor self)
{
self.World.ActorMap.AddInfluence(self, this);
self.World.ActorMap.AddPosition(self, this);
self.World.ScreenMap.Add(self);
}
public void RemovedFromWorld(Actor self)
{
self.World.ActorMap.RemoveInfluence(self, this);
self.World.ActorMap.RemovePosition(self, this);
self.World.ScreenMap.Remove(self);
}

View File

@@ -161,12 +161,14 @@ namespace OpenRA.Mods.RA.Buildings
public void AddedToWorld(Actor self)
{
self.World.ActorMap.AddInfluence(self, this);
self.World.ActorMap.AddPosition(self, this);
self.World.ScreenMap.Add(self);
}
public void RemovedFromWorld(Actor self)
{
self.World.ActorMap.RemoveInfluence(self, this);
self.World.ActorMap.RemovePosition(self, this);
self.World.ScreenMap.Remove(self);
}
}

View File

@@ -103,9 +103,7 @@ namespace OpenRA.Mods.RA
public void SetPosition(Actor self, CPos cell)
{
if (self.IsInWorld)
self.World.ActorMap.RemoveInfluence(self, this);
self.World.ActorMap.RemoveInfluence(self, this);
Location = cell;
CenterPosition = cell.CenterPosition;
@@ -117,6 +115,7 @@ namespace OpenRA.Mods.RA
if (self.IsInWorld)
{
self.World.ActorMap.AddInfluence(self, this);
self.World.ActorMap.UpdatePosition(self, this);
self.World.ScreenMap.Update(self);
}
}
@@ -129,12 +128,14 @@ namespace OpenRA.Mods.RA
public void AddedToWorld(Actor self)
{
self.World.ActorMap.AddInfluence(self, this);
self.World.ActorMap.AddPosition(self, this);
self.World.ScreenMap.Add(self);
}
public void RemovedFromWorld(Actor self)
{
self.World.ActorMap.RemoveInfluence(self, this);
self.World.ActorMap.RemovePosition(self, this);
self.World.ScreenMap.Remove(self);
}
}

View File

@@ -76,18 +76,21 @@ namespace OpenRA.Mods.RA
CenterPosition = pos;
TopLeft = pos.ToCPos();
self.World.ActorMap.AddInfluence(self, this);
self.World.ActorMap.UpdatePosition(self, this);
self.World.ScreenMap.Update(self);
}
public void AddedToWorld(Actor self)
{
self.World.ActorMap.AddInfluence(self, this);
self.World.ActorMap.AddPosition(self, this);
self.World.ScreenMap.Add(self);
}
public void RemovedFromWorld(Actor self)
{
self.World.ActorMap.RemoveInfluence(self, this);
self.World.ActorMap.RemovePosition(self, this);
self.World.ScreenMap.Remove(self);
}
}

View File

@@ -66,12 +66,14 @@ namespace OpenRA.Mods.RA
public void AddedToWorld(Actor self)
{
self.World.ActorMap.AddInfluence(self, this);
self.World.ActorMap.AddPosition(self, this);
self.World.ScreenMap.Add(self);
}
public void RemovedFromWorld(Actor self)
{
self.World.ActorMap.RemoveInfluence(self, this);
self.World.ActorMap.RemovePosition(self, this);
self.World.ScreenMap.Remove(self);
}
}

View File

@@ -232,18 +232,23 @@ namespace OpenRA.Mods.RA.Move
{
CenterPosition = pos;
if (self.IsInWorld)
{
self.World.ScreenMap.Update(self);
self.World.ActorMap.UpdatePosition(self, this);
}
}
public void AddedToWorld(Actor self)
{
self.World.ActorMap.AddInfluence(self, this);
self.World.ActorMap.AddPosition(self, this);
self.World.ScreenMap.Add(self);
}
public void RemovedFromWorld(Actor self)
{
self.World.ActorMap.RemoveInfluence(self, this);
self.World.ActorMap.RemovePosition(self, this);
self.World.ScreenMap.Remove(self);
}