Revert "Fix actors disappearing for a tick when swapping to the frozen actor."

This reverts commit 2eb090f153.

This fixes flicker for the actor->frozen transition, but then introduces the same flicker for the frozen->actor transition instead.
This commit is contained in:
RoosterDragon
2018-01-04 20:01:12 +00:00
committed by reaperrr
parent f6fcf4ca6f
commit c60ca83751

View File

@@ -254,38 +254,33 @@ namespace OpenRA.Traits
void ITick.Tick(Actor self) void ITick.Tick(Actor self)
{ {
// Update visibility at the end of the tick to make sure that UpdateDirtyFrozenActorsFromDirtyBins();
// the fog/shroud state has been updated for the tick
self.World.AddFrameEndTask(w => var frozenActorsToRemove = new List<FrozenActor>();
VisibilityHash = 0;
FrozenHash = 0;
foreach (var kvp in frozenActorsById)
{ {
UpdateDirtyFrozenActorsFromDirtyBins(); var id = kvp.Key;
var hash = (int)id;
FrozenHash += hash;
var frozenActorsToRemove = new List<FrozenActor>(); var frozenActor = kvp.Value;
VisibilityHash = 0; frozenActor.Tick();
FrozenHash = 0; if (dirtyFrozenActorIds.Contains(id))
frozenActor.UpdateVisibility();
foreach (var kvp in frozenActorsById) if (frozenActor.Visible)
{ VisibilityHash += hash;
var id = kvp.Key; else if (frozenActor.Actor == null)
var hash = (int)id; frozenActorsToRemove.Add(frozenActor);
FrozenHash += hash; }
var frozenActor = kvp.Value; dirtyFrozenActorIds.Clear();
frozenActor.Tick();
if (dirtyFrozenActorIds.Contains(id))
frozenActor.UpdateVisibility();
if (frozenActor.Visible) foreach (var fa in frozenActorsToRemove)
VisibilityHash += hash; Remove(fa);
else if (frozenActor.Actor == null)
frozenActorsToRemove.Add(frozenActor);
}
dirtyFrozenActorIds.Clear();
foreach (var fa in frozenActorsToRemove)
Remove(fa);
});
} }
void UpdateDirtyFrozenActorsFromDirtyBins() void UpdateDirtyFrozenActorsFromDirtyBins()