Fix actors not being visible when created within sight range of an enemy.
Since bbf5970bc1 we only update frozen actor state on demand rather than every tick. However when the actor was initially created we were failing to set the initial visibility state if the frozen actor was invisible.
With this fix, we now set the visibility states on creation correctly. This fixes an issue where enemy actors created within line of sight would not appear.
This commit is contained in:
@@ -70,18 +70,26 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
{
|
{
|
||||||
var frozenActor = new FrozenActor(self, this, footprint, player, startsRevealed);
|
var frozenActor = new FrozenActor(self, this, footprint, player, startsRevealed);
|
||||||
player.PlayerActor.Trait<FrozenActorLayer>().Add(frozenActor);
|
player.PlayerActor.Trait<FrozenActorLayer>().Add(frozenActor);
|
||||||
return new FrozenState(frozenActor) { IsVisible = startsRevealed };
|
return new FrozenState(frozenActor) { IsVisible = !frozenActor.Visible };
|
||||||
});
|
});
|
||||||
|
|
||||||
// Set the initial visibility state
|
// Set the initial visibility state
|
||||||
// This relies on actor.GetTargetablePositions(), which is also setup up in Created.
|
// This relies on actor.GetTargetablePositions(), which is also setup up in Created.
|
||||||
// Since we can't be sure whether our method will run after theirs, defer by a frame.
|
// Since we can't be sure whether our method will run after theirs, defer by a frame.
|
||||||
if (startsRevealed)
|
self.World.AddFrameEndTask(_ =>
|
||||||
self.World.AddFrameEndTask(_ =>
|
{
|
||||||
|
for (var playerIndex = 0; playerIndex < frozenStates.Count; playerIndex++)
|
||||||
{
|
{
|
||||||
for (var playerIndex = 0; playerIndex < frozenStates.Count; playerIndex++)
|
var state = frozenStates[playerIndex];
|
||||||
UpdateFrozenActor(frozenStates[playerIndex].FrozenActor, playerIndex);
|
if (startsRevealed || state.IsVisible)
|
||||||
});
|
{
|
||||||
|
UpdateFrozenActor(state.FrozenActor, playerIndex);
|
||||||
|
|
||||||
|
// Needed so tooltips appear.
|
||||||
|
state.FrozenActor.Hidden = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
created = true;
|
created = true;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user