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)
|
static Target TargetForInput(World world, CPos cell, int2 worldPixel, MouseInput mi)
|
||||||
{
|
{
|
||||||
var actor = world.ScreenMap.ActorsAt(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);
|
.WithHighestSelectionPriority(worldPixel);
|
||||||
|
|
||||||
if (actor != null)
|
if (actor != null)
|
||||||
|
|||||||
@@ -42,7 +42,7 @@ namespace OpenRA.Mods.Common.Effects
|
|||||||
|
|
||||||
public IEnumerable<IRenderable> Render(WorldRenderer wr)
|
public IEnumerable<IRenderable> Render(WorldRenderer wr)
|
||||||
{
|
{
|
||||||
if (world.FogObscures(pos) && !visibleThroughFog)
|
if (!visibleThroughFog && world.FogObscures(pos))
|
||||||
return SpriteRenderable.None;
|
return SpriteRenderable.None;
|
||||||
|
|
||||||
var zoom = scaleSizeWithZoom ? 1f / wr.Viewport.Zoom : 1f;
|
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)
|
static IEnumerable<Actor> FriendlyGuardableUnits(World world, MouseInput mi)
|
||||||
{
|
{
|
||||||
return world.ScreenMap.ActorsAt(mi)
|
return world.ScreenMap.ActorsAt(mi)
|
||||||
.Where(a => !world.FogObscures(a) && !a.IsDead &&
|
.Where(a => !a.IsDead &&
|
||||||
a.AppearsFriendlyTo(world.LocalPlayer.PlayerActor) &&
|
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)
|
if (info.ShadowImage == null)
|
||||||
return Enumerable.Empty<IRenderable>();
|
return Enumerable.Empty<IRenderable>();
|
||||||
|
|
||||||
if (IsTraitDisabled)
|
if (IsTraitDisabled || self.IsDead || !self.IsInWorld)
|
||||||
return Enumerable.Empty<IRenderable>();
|
|
||||||
|
|
||||||
if (self.IsDead || !self.IsInWorld)
|
|
||||||
return Enumerable.Empty<IRenderable>();
|
return Enumerable.Empty<IRenderable>();
|
||||||
|
|
||||||
if (self.World.FogObscures(self))
|
if (self.World.FogObscures(self))
|
||||||
|
|||||||
@@ -49,10 +49,10 @@ namespace OpenRA.Mods.Common.Traits.Render
|
|||||||
|
|
||||||
IEnumerable<IRenderable> IRenderAboveShroudWhenSelected.RenderAboveShroud(Actor self, WorldRenderer wr)
|
IEnumerable<IRenderable> IRenderAboveShroudWhenSelected.RenderAboveShroud(Actor self, WorldRenderer wr)
|
||||||
{
|
{
|
||||||
if (self.World.FogObscures(self))
|
if (self.Owner != wr.World.LocalPlayer)
|
||||||
yield break;
|
yield break;
|
||||||
|
|
||||||
if (self.Owner != wr.World.LocalPlayer)
|
if (self.World.FogObscures(self))
|
||||||
yield break;
|
yield break;
|
||||||
|
|
||||||
var pal = wr.Palette(Info.Palette);
|
var pal = wr.Palette(Info.Palette);
|
||||||
|
|||||||
@@ -66,10 +66,10 @@ namespace OpenRA.Mods.Common.Traits.Render
|
|||||||
|
|
||||||
IEnumerable<IRenderable> IRenderAboveShroudWhenSelected.RenderAboveShroud(Actor self, WorldRenderer wr)
|
IEnumerable<IRenderable> IRenderAboveShroudWhenSelected.RenderAboveShroud(Actor self, WorldRenderer wr)
|
||||||
{
|
{
|
||||||
if (self.World.FogObscures(self))
|
if (self.Owner != wr.World.LocalPlayer)
|
||||||
yield break;
|
yield break;
|
||||||
|
|
||||||
if (self.Owner != wr.World.LocalPlayer)
|
if (self.World.FogObscures(self))
|
||||||
yield break;
|
yield break;
|
||||||
|
|
||||||
foreach (var r in DrawControlGroup(self, wr))
|
foreach (var r in DrawControlGroup(self, wr))
|
||||||
|
|||||||
@@ -185,7 +185,7 @@ namespace OpenRA.Mods.Common.Widgets
|
|||||||
|
|
||||||
var worldPixel = worldRenderer.Viewport.ViewToWorldPx(Viewport.LastMousePos);
|
var worldPixel = worldRenderer.Viewport.ViewToWorldPx(Viewport.LastMousePos);
|
||||||
var underCursor = world.ScreenMap.ActorsAt(worldPixel)
|
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);
|
.WithHighestSelectionPriority(worldPixel);
|
||||||
|
|
||||||
if (underCursor != null)
|
if (underCursor != null)
|
||||||
|
|||||||
Reference in New Issue
Block a user