Perform FogObscures as late as possible
FogObscures is more expensive than simpler boolean, player or HasTraitInfo checks, so in these places it makes sense to perform the other checks first.
This commit is contained in:
@@ -21,7 +21,7 @@ namespace OpenRA.Orders
|
||||
static Target TargetForInput(World world, CPos cell, int2 worldPixel, MouseInput mi)
|
||||
{
|
||||
var actor = world.ScreenMap.ActorsAt(mi)
|
||||
.Where(a => !world.FogObscures(a) && a.Info.HasTraitInfo<ITargetableInfo>())
|
||||
.Where(a => a.Info.HasTraitInfo<ITargetableInfo>() && !world.FogObscures(a))
|
||||
.WithHighestSelectionPriority(worldPixel);
|
||||
|
||||
if (actor != null)
|
||||
|
||||
@@ -42,7 +42,7 @@ namespace OpenRA.Mods.Common.Effects
|
||||
|
||||
public IEnumerable<IRenderable> Render(WorldRenderer wr)
|
||||
{
|
||||
if (world.FogObscures(pos) && !visibleThroughFog)
|
||||
if (!visibleThroughFog && world.FogObscures(pos))
|
||||
return SpriteRenderable.None;
|
||||
|
||||
var zoom = scaleSizeWithZoom ? 1f / wr.Viewport.Zoom : 1f;
|
||||
|
||||
@@ -57,9 +57,10 @@ namespace OpenRA.Mods.Common.Orders
|
||||
static IEnumerable<Actor> FriendlyGuardableUnits(World world, MouseInput mi)
|
||||
{
|
||||
return world.ScreenMap.ActorsAt(mi)
|
||||
.Where(a => !world.FogObscures(a) && !a.IsDead &&
|
||||
.Where(a => !a.IsDead &&
|
||||
a.AppearsFriendlyTo(world.LocalPlayer.PlayerActor) &&
|
||||
a.Info.HasTraitInfo<GuardableInfo>());
|
||||
a.Info.HasTraitInfo<GuardableInfo>() &&
|
||||
!world.FogObscures(a));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -159,10 +159,7 @@ namespace OpenRA.Mods.Common.Traits.Render
|
||||
if (info.ShadowImage == null)
|
||||
return Enumerable.Empty<IRenderable>();
|
||||
|
||||
if (IsTraitDisabled)
|
||||
return Enumerable.Empty<IRenderable>();
|
||||
|
||||
if (self.IsDead || !self.IsInWorld)
|
||||
if (IsTraitDisabled || self.IsDead || !self.IsInWorld)
|
||||
return Enumerable.Empty<IRenderable>();
|
||||
|
||||
if (self.World.FogObscures(self))
|
||||
|
||||
@@ -49,10 +49,10 @@ namespace OpenRA.Mods.Common.Traits.Render
|
||||
|
||||
IEnumerable<IRenderable> IRenderAboveShroudWhenSelected.RenderAboveShroud(Actor self, WorldRenderer wr)
|
||||
{
|
||||
if (self.World.FogObscures(self))
|
||||
if (self.Owner != wr.World.LocalPlayer)
|
||||
yield break;
|
||||
|
||||
if (self.Owner != wr.World.LocalPlayer)
|
||||
if (self.World.FogObscures(self))
|
||||
yield break;
|
||||
|
||||
var pal = wr.Palette(Info.Palette);
|
||||
|
||||
@@ -66,10 +66,10 @@ namespace OpenRA.Mods.Common.Traits.Render
|
||||
|
||||
IEnumerable<IRenderable> IRenderAboveShroudWhenSelected.RenderAboveShroud(Actor self, WorldRenderer wr)
|
||||
{
|
||||
if (self.World.FogObscures(self))
|
||||
if (self.Owner != wr.World.LocalPlayer)
|
||||
yield break;
|
||||
|
||||
if (self.Owner != wr.World.LocalPlayer)
|
||||
if (self.World.FogObscures(self))
|
||||
yield break;
|
||||
|
||||
foreach (var r in DrawControlGroup(self, wr))
|
||||
|
||||
@@ -185,7 +185,7 @@ namespace OpenRA.Mods.Common.Widgets
|
||||
|
||||
var worldPixel = worldRenderer.Viewport.ViewToWorldPx(Viewport.LastMousePos);
|
||||
var underCursor = world.ScreenMap.ActorsAt(worldPixel)
|
||||
.Where(a => !world.FogObscures(a) && a.Info.HasTraitInfo<ITooltipInfo>())
|
||||
.Where(a => a.Info.HasTraitInfo<ITooltipInfo>() && !world.FogObscures(a))
|
||||
.WithHighestSelectionPriority(worldPixel);
|
||||
|
||||
if (underCursor != null)
|
||||
|
||||
Reference in New Issue
Block a user