Merge pull request #8729 from RoosterDragon/alloc-reductions
Reduce allocations
This commit is contained in:
@@ -151,8 +151,9 @@ namespace OpenRA.Mods.Common.Graphics
|
||||
var worldTransform = v.RotationFunc().Reverse().Aggregate(scaleTransform,
|
||||
(x, y) => Util.MatrixMultiply(x, Util.MakeFloatMatrix(y.AsMatrix())));
|
||||
|
||||
var pxOffset = wr.ScreenVector(v.OffsetFunc());
|
||||
var pxPos = pxOrigin + new float2(pxOffset[0], pxOffset[1]);
|
||||
float sx, sy, sz;
|
||||
wr.ScreenVectorComponents(v.OffsetFunc(), out sx, out sy, out sz);
|
||||
var pxPos = pxOrigin + new float2(sx, sy);
|
||||
var screenTransform = Util.MatrixMultiply(cameraTransform, worldTransform);
|
||||
DrawBoundsBox(pxPos, screenTransform, bounds, Color.Yellow);
|
||||
}
|
||||
@@ -204,8 +205,9 @@ namespace OpenRA.Mods.Common.Graphics
|
||||
var worldTransform = v.RotationFunc().Reverse().Aggregate(scaleTransform,
|
||||
(x, y) => Util.MatrixMultiply(x, Util.MakeFloatMatrix(y.AsMatrix())));
|
||||
|
||||
var pxOffset = wr.ScreenVector(v.OffsetFunc());
|
||||
var pxPos = pxOrigin + new float2(pxOffset[0], pxOffset[1]);
|
||||
float sx, sy, sz;
|
||||
wr.ScreenVectorComponents(v.OffsetFunc(), out sx, out sy, out sz);
|
||||
var pxPos = pxOrigin + new float2(sx, sy);
|
||||
var screenTransform = Util.MatrixMultiply(cameraTransform, worldTransform);
|
||||
|
||||
for (var i = 0; i < 8; i++)
|
||||
|
||||
@@ -64,7 +64,7 @@ namespace OpenRA.Mods.Common.Traits
|
||||
return true;
|
||||
|
||||
var stance = self.Owner.Stances[byPlayer];
|
||||
return info.AlwaysVisibleStances.HasFlag(stance) || visible[byPlayer];
|
||||
return info.AlwaysVisibleStances.HasStance(stance) || visible[byPlayer];
|
||||
}
|
||||
|
||||
public void Tick(Actor self)
|
||||
|
||||
@@ -54,7 +54,7 @@ namespace OpenRA.Mods.Common.Traits
|
||||
return true;
|
||||
|
||||
var stance = self.Owner.Stances[byPlayer];
|
||||
return Info.AlwaysVisibleStances.HasFlag(stance) || IsVisibleInner(self, byPlayer);
|
||||
return Info.AlwaysVisibleStances.HasStance(stance) || IsVisibleInner(self, byPlayer);
|
||||
}
|
||||
|
||||
public IEnumerable<IRenderable> ModifyRender(Actor self, WorldRenderer wr, IEnumerable<IRenderable> r)
|
||||
|
||||
@@ -111,22 +111,22 @@ namespace OpenRA.Mods.Common.Traits
|
||||
public class Passenger : IIssueOrder, IResolveOrder, IOrderVoice, INotifyRemovedFromWorld
|
||||
{
|
||||
public readonly PassengerInfo Info;
|
||||
public Passenger(PassengerInfo info) { Info = info; }
|
||||
public Passenger(PassengerInfo info)
|
||||
{
|
||||
Info = info;
|
||||
Func<Actor, bool> canTarget = IsCorrectCargoType;
|
||||
Func<Actor, bool> useEnterCursor = CanEnter;
|
||||
Orders = new EnterAlliedActorTargeter<Cargo>[]
|
||||
{
|
||||
new EnterTransportTargeter("EnterTransport", 5, canTarget, useEnterCursor, Info.AlternateTransportsMode),
|
||||
new EnterTransportsTargeter("EnterTransports", 5, canTarget, useEnterCursor, Info.AlternateTransportsMode)
|
||||
};
|
||||
}
|
||||
|
||||
public Actor Transport;
|
||||
public Cargo ReservedCargo { get; private set; }
|
||||
|
||||
public IEnumerable<IOrderTargeter> Orders
|
||||
{
|
||||
get
|
||||
{
|
||||
yield return new EnterTransportTargeter("EnterTransport", 5,
|
||||
target => IsCorrectCargoType(target), target => CanEnter(target),
|
||||
Info.AlternateTransportsMode);
|
||||
yield return new EnterTransportsTargeter("EnterTransports", 5,
|
||||
target => IsCorrectCargoType(target), target => CanEnter(target),
|
||||
Info.AlternateTransportsMode);
|
||||
}
|
||||
}
|
||||
public IEnumerable<IOrderTargeter> Orders { get; private set; }
|
||||
|
||||
public Order IssueOrder(Actor self, IOrderTargeter order, Target target, bool queued)
|
||||
{
|
||||
|
||||
@@ -10,6 +10,7 @@
|
||||
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using OpenRA.Graphics;
|
||||
using OpenRA.Traits;
|
||||
|
||||
@@ -87,27 +88,27 @@ namespace OpenRA.Mods.Common.Traits
|
||||
public IEnumerable<IRenderable> Render(Actor self, WorldRenderer wr)
|
||||
{
|
||||
if (IsTraitDisabled)
|
||||
yield break;
|
||||
return Enumerable.Empty<IRenderable>();
|
||||
|
||||
if (self.IsDead || !self.IsInWorld)
|
||||
yield break;
|
||||
return Enumerable.Empty<IRenderable>();
|
||||
|
||||
if (anim == null)
|
||||
yield break;
|
||||
return Enumerable.Empty<IRenderable>();
|
||||
|
||||
var allied = self.Owner.IsAlliedWith(self.World.RenderPlayer);
|
||||
|
||||
if (!allied && !info.ShowToEnemies)
|
||||
yield break;
|
||||
return Enumerable.Empty<IRenderable>();
|
||||
|
||||
if (allied && !info.ShowToAllies)
|
||||
yield break;
|
||||
return Enumerable.Empty<IRenderable>();
|
||||
|
||||
if (!ShouldRender(self))
|
||||
yield break;
|
||||
return Enumerable.Empty<IRenderable>();
|
||||
|
||||
if (self.World.FogObscures(self))
|
||||
yield break;
|
||||
return Enumerable.Empty<IRenderable>();
|
||||
|
||||
var pxPos = wr.ScreenPxPosition(self.CenterPosition);
|
||||
var actorBounds = self.Bounds;
|
||||
@@ -150,7 +151,7 @@ namespace OpenRA.Mods.Common.Traits
|
||||
|
||||
anim.Tick();
|
||||
|
||||
yield return new SpriteRenderable(img, renderPos, WVec.Zero, info.ZOffset, wr.Palette(info.Palette), info.Scale, true);
|
||||
return new IRenderable[] { new SpriteRenderable(img, renderPos, WVec.Zero, info.ZOffset, wr.Palette(info.Palette), info.Scale, true) };
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -38,7 +38,7 @@ namespace OpenRA.Mods.Common.Traits
|
||||
|
||||
public string TooltipForPlayerStance(Stance stance)
|
||||
{
|
||||
if (stance == Stance.None || !GenericVisibility.HasFlag(stance))
|
||||
if (stance == Stance.None || !GenericVisibility.HasStance(stance))
|
||||
return Name;
|
||||
|
||||
if (GenericStancePrefix && stance == Stance.Ally)
|
||||
|
||||
@@ -95,7 +95,7 @@ namespace OpenRA.Mods.Common.Traits
|
||||
return;
|
||||
|
||||
var stance = self.Owner.Stances[a.Owner];
|
||||
if (!info.ValidStances.HasFlag(stance))
|
||||
if (!info.ValidStances.HasStance(stance))
|
||||
return;
|
||||
|
||||
var um = a.TraitOrDefault<UpgradeManager>();
|
||||
@@ -110,7 +110,7 @@ namespace OpenRA.Mods.Common.Traits
|
||||
if ((produced.CenterPosition - self.CenterPosition).HorizontalLengthSquared <= info.Range.LengthSquared)
|
||||
{
|
||||
var stance = self.Owner.Stances[produced.Owner];
|
||||
if (!info.ValidStances.HasFlag(stance))
|
||||
if (!info.ValidStances.HasStance(stance))
|
||||
return;
|
||||
|
||||
var um = produced.TraitOrDefault<UpgradeManager>();
|
||||
@@ -127,7 +127,7 @@ namespace OpenRA.Mods.Common.Traits
|
||||
return;
|
||||
|
||||
var stance = self.Owner.Stances[a.Owner];
|
||||
if (!info.ValidStances.HasFlag(stance))
|
||||
if (!info.ValidStances.HasStance(stance))
|
||||
return;
|
||||
|
||||
var um = a.TraitOrDefault<UpgradeManager>();
|
||||
|
||||
@@ -61,7 +61,7 @@ namespace OpenRA.Mods.Common.Warheads
|
||||
return false;
|
||||
|
||||
var stance = firedBy.Owner.Stances[victim.Owner];
|
||||
if (!ValidStances.HasFlag(stance))
|
||||
if (!ValidStances.HasStance(stance))
|
||||
return false;
|
||||
|
||||
// A target type is valid if it is in the valid targets list, and not in the invalid targets list.
|
||||
@@ -80,7 +80,7 @@ namespace OpenRA.Mods.Common.Warheads
|
||||
|
||||
// AffectsParent checks do not make sense for FrozenActors, so skip to stance checks
|
||||
var stance = firedBy.Owner.Stances[victim.Owner];
|
||||
if (!ValidStances.HasFlag(stance))
|
||||
if (!ValidStances.HasStance(stance))
|
||||
return false;
|
||||
|
||||
// A target type is valid if it is in the valid targets list, and not in the invalid targets list.
|
||||
|
||||
Reference in New Issue
Block a user