Fixed unnecessary zero-length array allocations
Changed all currently present zero-length array allocations in the codebase to use `Array.Empty` instead.
This commit is contained in:
@@ -24,8 +24,8 @@ namespace OpenRA.Graphics
|
||||
readonly Dictionary<string, ImmutablePalette> palettes = new Dictionary<string, ImmutablePalette>();
|
||||
readonly Dictionary<string, MutablePalette> mutablePalettes = new Dictionary<string, MutablePalette>();
|
||||
readonly Dictionary<string, int> indices = new Dictionary<string, int>();
|
||||
byte[] buffer = new byte[0];
|
||||
float[] colorShiftBuffer = new float[0];
|
||||
byte[] buffer = Array.Empty<byte>();
|
||||
float[] colorShiftBuffer = Array.Empty<float>();
|
||||
|
||||
public HardwarePalette()
|
||||
{
|
||||
|
||||
@@ -9,6 +9,7 @@
|
||||
*/
|
||||
#endregion
|
||||
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using OpenRA.Primitives;
|
||||
|
||||
@@ -16,7 +17,7 @@ namespace OpenRA.Graphics
|
||||
{
|
||||
public class SpriteRenderable : IPalettedRenderable, IModifyableRenderable, IFinalizedRenderable
|
||||
{
|
||||
public static readonly IEnumerable<IRenderable> None = new IRenderable[0];
|
||||
public static readonly IEnumerable<IRenderable> None = Array.Empty<IRenderable>();
|
||||
|
||||
readonly Sprite sprite;
|
||||
readonly WPos pos;
|
||||
|
||||
@@ -370,11 +370,11 @@ namespace OpenRA
|
||||
newData.SpawnPoints = spawns.ToArray();
|
||||
}
|
||||
else
|
||||
newData.SpawnPoints = new CPos[0];
|
||||
newData.SpawnPoints = Array.Empty<CPos>();
|
||||
}
|
||||
catch (Exception)
|
||||
{
|
||||
newData.SpawnPoints = new CPos[0];
|
||||
newData.SpawnPoints = Array.Empty<CPos>();
|
||||
newData.Status = MapStatus.Unavailable;
|
||||
}
|
||||
|
||||
|
||||
@@ -77,7 +77,7 @@ namespace OpenRA.Primitives
|
||||
{
|
||||
if (data.TryGetValue(typeof(T), out var objs))
|
||||
return objs.Cast<T>();
|
||||
return new T[0];
|
||||
return Array.Empty<T>();
|
||||
}
|
||||
|
||||
public void Remove<T>(T val)
|
||||
|
||||
@@ -279,7 +279,7 @@ namespace OpenRA.Scripting
|
||||
return outer.SelectMany(i => i.GetGenericArguments());
|
||||
}
|
||||
|
||||
static readonly object[] NoArguments = new object[0];
|
||||
static readonly object[] NoArguments = Array.Empty<object>();
|
||||
Type[] FilterActorCommands(ActorInfo ai)
|
||||
{
|
||||
return FilterCommands(ai, knownActorCommands);
|
||||
|
||||
@@ -229,7 +229,7 @@ namespace OpenRA
|
||||
if (!string.IsNullOrEmpty(text))
|
||||
bytes = encoding.GetBytes(text);
|
||||
else
|
||||
bytes = new byte[0];
|
||||
bytes = Array.Empty<byte>();
|
||||
|
||||
s.Write(bytes.Length);
|
||||
s.WriteArray(bytes);
|
||||
|
||||
@@ -72,8 +72,8 @@ namespace OpenRA.Traits
|
||||
|
||||
public Polygon MouseBounds = Polygon.Empty;
|
||||
|
||||
static readonly IRenderable[] NoRenderables = new IRenderable[0];
|
||||
static readonly Rectangle[] NoBounds = new Rectangle[0];
|
||||
static readonly IRenderable[] NoRenderables = Array.Empty<IRenderable>();
|
||||
static readonly Rectangle[] NoBounds = Array.Empty<Rectangle>();
|
||||
|
||||
int flashTicks;
|
||||
TintModifiers flashModifiers;
|
||||
|
||||
@@ -41,7 +41,7 @@ namespace OpenRA.Traits
|
||||
|
||||
public class ScreenMap : IWorldLoaded
|
||||
{
|
||||
static readonly IEnumerable<FrozenActor> NoFrozenActors = new FrozenActor[0];
|
||||
static readonly IEnumerable<FrozenActor> NoFrozenActors = Array.Empty<FrozenActor>();
|
||||
readonly Func<FrozenActor, bool> frozenActorIsValid = fa => fa.IsValid;
|
||||
readonly Func<Actor, bool> actorIsInWorld = a => a.IsInWorld;
|
||||
readonly Func<Actor, ActorBoundsPair> selectActorAndBounds;
|
||||
|
||||
@@ -51,7 +51,7 @@ namespace OpenRA
|
||||
public LongBitSet<PlayerBitMask> AllPlayersMask = default(LongBitSet<PlayerBitMask>);
|
||||
public readonly LongBitSet<PlayerBitMask> NoPlayersMask = default(LongBitSet<PlayerBitMask>);
|
||||
|
||||
public Player[] Players = new Player[0];
|
||||
public Player[] Players = Array.Empty<Player>();
|
||||
|
||||
public event Action<Player> RenderPlayerChanged;
|
||||
|
||||
|
||||
@@ -58,7 +58,7 @@ namespace OpenRA.Mods.Cnc.Graphics
|
||||
|
||||
cachedPos = WPos.Zero;
|
||||
cachedLength = WVec.Zero;
|
||||
cache = new IFinalizedRenderable[] { };
|
||||
cache = Array.Empty<IFinalizedRenderable>();
|
||||
}
|
||||
|
||||
public WPos Pos => pos;
|
||||
|
||||
@@ -9,6 +9,7 @@
|
||||
*/
|
||||
#endregion
|
||||
|
||||
using System;
|
||||
using System.IO;
|
||||
using OpenRA.Graphics;
|
||||
using OpenRA.Primitives;
|
||||
@@ -32,7 +33,7 @@ namespace OpenRA.Mods.Cnc.SpriteLoaders
|
||||
Data = data;
|
||||
|
||||
if (data == null)
|
||||
Data = new byte[0];
|
||||
Data = Array.Empty<byte>();
|
||||
else
|
||||
Size = size;
|
||||
}
|
||||
|
||||
@@ -9,6 +9,7 @@
|
||||
*/
|
||||
#endregion
|
||||
|
||||
using System;
|
||||
using System.IO;
|
||||
using OpenRA.Graphics;
|
||||
using OpenRA.Primitives;
|
||||
@@ -32,7 +33,7 @@ namespace OpenRA.Mods.Cnc.SpriteLoaders
|
||||
Data = data;
|
||||
|
||||
if (data == null)
|
||||
Data = new byte[0];
|
||||
Data = Array.Empty<byte>();
|
||||
else
|
||||
Size = size;
|
||||
}
|
||||
|
||||
@@ -9,6 +9,7 @@
|
||||
*/
|
||||
#endregion
|
||||
|
||||
using System;
|
||||
using System.IO;
|
||||
using OpenRA.Graphics;
|
||||
using OpenRA.Primitives;
|
||||
@@ -109,7 +110,7 @@ namespace OpenRA.Mods.Cnc.SpriteLoaders
|
||||
}
|
||||
}
|
||||
else
|
||||
Data = new byte[0];
|
||||
Data = Array.Empty<byte>();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -50,7 +50,7 @@ namespace OpenRA.Mods.Cnc.UtilityCommands
|
||||
Game.ModData = destModData;
|
||||
var destPaletteInfo = destModData.DefaultRules.Actors[SystemActors.Player].TraitInfo<PlayerColorPaletteInfo>();
|
||||
var destRemapIndex = destPaletteInfo.RemapIndex;
|
||||
var shadowIndex = new int[] { };
|
||||
var shadowIndex = Array.Empty<int>();
|
||||
|
||||
// the remap range is always 16 entries, but their location and order changes
|
||||
for (var i = 0; i < 16; i++)
|
||||
|
||||
@@ -54,7 +54,7 @@ namespace OpenRA.Mods.Common.Activities
|
||||
aircraft = self.Trait<Aircraft>();
|
||||
this.target = target;
|
||||
this.offset = offset;
|
||||
this.clearCells = clearCells ?? new CPos[0];
|
||||
this.clearCells = clearCells ?? Array.Empty<CPos>();
|
||||
this.landRange = landRange.Length >= 0 ? landRange : aircraft.Info.LandRange;
|
||||
this.targetLineColor = targetLineColor;
|
||||
|
||||
|
||||
@@ -9,6 +9,7 @@
|
||||
*/
|
||||
#endregion
|
||||
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using OpenRA.Activities;
|
||||
using OpenRA.Effects;
|
||||
@@ -26,10 +27,10 @@ namespace OpenRA.Mods.Common.Effects
|
||||
int remainingDelay;
|
||||
|
||||
public SpawnActorEffect(Actor actor)
|
||||
: this(actor, 0, new CPos[0], null) { }
|
||||
: this(actor, 0, Array.Empty<CPos>(), null) { }
|
||||
|
||||
public SpawnActorEffect(Actor actor, int delay)
|
||||
: this(actor, delay, new CPos[0], null) { }
|
||||
: this(actor, delay, Array.Empty<CPos>(), null) { }
|
||||
|
||||
public SpawnActorEffect(Actor actor, int delay, CPos[] pathAfterSpawn, Activity activityAtDestination)
|
||||
{
|
||||
|
||||
@@ -9,6 +9,7 @@
|
||||
*/
|
||||
#endregion
|
||||
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
@@ -78,7 +79,7 @@ namespace OpenRA.Mods.Common.SpriteLoaders
|
||||
|
||||
public TgaFrame()
|
||||
{
|
||||
Data = new byte[0];
|
||||
Data = Array.Empty<byte>();
|
||||
}
|
||||
|
||||
public TgaFrame(Stream stream)
|
||||
|
||||
@@ -9,6 +9,7 @@
|
||||
*/
|
||||
#endregion
|
||||
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using OpenRA.Traits;
|
||||
@@ -27,7 +28,7 @@ namespace OpenRA.Mods.Common.Traits
|
||||
readonly Actor[] parents = null;
|
||||
|
||||
public LineBuildParentInit(Actor[] value)
|
||||
: base(new string[0])
|
||||
: base(Array.Empty<string>())
|
||||
{
|
||||
parents = value;
|
||||
}
|
||||
@@ -70,7 +71,7 @@ namespace OpenRA.Mods.Common.Traits
|
||||
public class LineBuild : INotifyKilled, INotifyAddedToWorld, INotifyRemovedFromWorld, INotifyLineBuildSegmentsChanged
|
||||
{
|
||||
readonly LineBuildInfo info;
|
||||
readonly Actor[] parentNodes = new Actor[0];
|
||||
readonly Actor[] parentNodes = Array.Empty<Actor>();
|
||||
HashSet<Actor> segments;
|
||||
|
||||
public LineBuild(ActorInitializer init, LineBuildInfo info)
|
||||
|
||||
@@ -9,6 +9,7 @@
|
||||
*/
|
||||
#endregion
|
||||
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using OpenRA.Traits;
|
||||
|
||||
@@ -46,7 +47,7 @@ namespace OpenRA.Mods.Common.Traits
|
||||
if (info.OccupiesSpace)
|
||||
occupied = new[] { (TopLeft, SubCell.FullCell) };
|
||||
else
|
||||
occupied = new (CPos, SubCell)[0];
|
||||
occupied = Array.Empty<(CPos, SubCell)>();
|
||||
}
|
||||
|
||||
public CPos TopLeft => location;
|
||||
|
||||
@@ -9,6 +9,7 @@
|
||||
*/
|
||||
#endregion
|
||||
|
||||
using System;
|
||||
using System.Linq;
|
||||
using OpenRA.Primitives;
|
||||
using OpenRA.Traits;
|
||||
@@ -29,7 +30,7 @@ namespace OpenRA.Mods.Common.Traits
|
||||
|
||||
public class Targetable : ConditionalTrait<TargetableInfo>, ITargetable
|
||||
{
|
||||
protected static readonly string[] None = new string[] { };
|
||||
protected static readonly string[] None = Array.Empty<string>();
|
||||
protected Cloak[] cloaks;
|
||||
|
||||
public Targetable(Actor self, TargetableInfo info)
|
||||
|
||||
@@ -35,7 +35,7 @@ namespace OpenRA.Mods.Common.UtilityCommands
|
||||
var modData = Game.ModData = utility.ModData;
|
||||
|
||||
var src = args[1];
|
||||
var shadowIndex = new int[] { };
|
||||
var shadowIndex = Array.Empty<int>();
|
||||
if (args.Contains("--noshadow"))
|
||||
{
|
||||
Array.Resize(ref shadowIndex, shadowIndex.Length + 3);
|
||||
|
||||
@@ -38,7 +38,7 @@ namespace OpenRA.Mods.Common.UtilityCommands
|
||||
Console.WriteLine(".SH OPTIONS");
|
||||
|
||||
var sections = Game.Settings.Sections;
|
||||
sections.Add("Launch", new LaunchArguments(new Arguments(new string[0])));
|
||||
sections.Add("Launch", new LaunchArguments(new Arguments(Array.Empty<string>())));
|
||||
foreach (var section in sections.OrderBy(s => s.Key))
|
||||
{
|
||||
var fields = section.Value.GetType().GetFields();
|
||||
|
||||
@@ -32,7 +32,7 @@ namespace OpenRA.Mods.Common.UtilityCommands
|
||||
// HACK: The engine code assumes that Game.modData is set.
|
||||
var modData = Game.ModData = utility.ModData;
|
||||
|
||||
var palette = new ImmutablePalette(args[1], new[] { 0 }, new int[0]);
|
||||
var palette = new ImmutablePalette(args[1], new[] { 0 }, Array.Empty<int>());
|
||||
|
||||
SequenceProvider sequences = null;
|
||||
var mapPackage = new Folder(Platform.EngineDir).OpenPackage(args[2], modData.ModFiles);
|
||||
|
||||
@@ -9,6 +9,7 @@
|
||||
*/
|
||||
#endregion
|
||||
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using OpenRA.GameRules;
|
||||
@@ -80,8 +81,8 @@ namespace OpenRA.Mods.Common.Warheads
|
||||
CurrentMuzzleFacing = () => (map.CenterOfCell(targetCell) - target.CenterPosition).Yaw,
|
||||
|
||||
DamageModifiers = args.DamageModifiers,
|
||||
InaccuracyModifiers = new int[0],
|
||||
RangeModifiers = new int[0],
|
||||
InaccuracyModifiers = Array.Empty<int>(),
|
||||
RangeModifiers = Array.Empty<int>(),
|
||||
|
||||
Source = target.CenterPosition,
|
||||
CurrentSource = () => target.CenterPosition,
|
||||
|
||||
@@ -26,7 +26,7 @@ namespace OpenRA.Mods.Common.Widgets
|
||||
|
||||
readonly WorldRenderer worldRenderer;
|
||||
|
||||
IActorPreview[] preview = new IActorPreview[0];
|
||||
IActorPreview[] preview = Array.Empty<IActorPreview>();
|
||||
public int2 PreviewOffset { get; private set; }
|
||||
public int2 IdealPreviewSize { get; private set; }
|
||||
|
||||
|
||||
@@ -39,7 +39,7 @@ namespace OpenRA.Mods.Common.Widgets
|
||||
int scatterHighlighted;
|
||||
int stopHighlighted;
|
||||
|
||||
TraitPair<IIssueDeployOrder>[] selectedDeploys = { };
|
||||
TraitPair<IIssueDeployOrder>[] selectedDeploys = Array.Empty<TraitPair<IIssueDeployOrder>>();
|
||||
|
||||
[ObjectCreator.UseCtor]
|
||||
public CommandBarLogic(Widget widget, World world, Dictionary<string, MiniYaml> logicArgs)
|
||||
|
||||
@@ -9,6 +9,7 @@
|
||||
*/
|
||||
#endregion
|
||||
|
||||
using System;
|
||||
using System.Linq;
|
||||
using OpenRA.Mods.Common.Traits;
|
||||
using OpenRA.Widgets;
|
||||
@@ -20,7 +21,7 @@ namespace OpenRA.Mods.Common.Widgets
|
||||
readonly World world;
|
||||
|
||||
int selectionHash;
|
||||
TraitPair<AutoTarget>[] actorStances = { };
|
||||
TraitPair<AutoTarget>[] actorStances = Array.Empty<TraitPair<AutoTarget>>();
|
||||
|
||||
[ObjectCreator.UseCtor]
|
||||
public StanceSelectorLogic(Widget widget, World world)
|
||||
|
||||
@@ -68,7 +68,7 @@ namespace OpenRA
|
||||
|
||||
if (args.Length == 0)
|
||||
{
|
||||
PrintUsage(new InstalledMods(modSearchPaths, new string[0]), null);
|
||||
PrintUsage(new InstalledMods(modSearchPaths, Array.Empty<string>()), null);
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user