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:
@@ -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()
|
||||||
|
|||||||
Reference in New Issue
Block a user