Add Frames support to Combine
This commit is contained in:
committed by
Matthias Mailänder
parent
301d09ea8f
commit
eb007fc43c
@@ -261,17 +261,18 @@ namespace OpenRA.Mods.Common.Graphics
|
|||||||
var subOffset = LoadField(sd, "Offset", float3.Zero);
|
var subOffset = LoadField(sd, "Offset", float3.Zero);
|
||||||
var subFlipX = LoadField(sd, "FlipX", false);
|
var subFlipX = LoadField(sd, "FlipX", false);
|
||||||
var subFlipY = LoadField(sd, "FlipY", false);
|
var subFlipY = LoadField(sd, "FlipY", false);
|
||||||
|
var subFrames = LoadField<int[]>(sd, "Frames", null);
|
||||||
var subLength = 0;
|
var subLength = 0;
|
||||||
|
|
||||||
Func<int, IEnumerable<int>> subGetUsedFrames = subFrameCount =>
|
Func<int, IEnumerable<int>> subGetUsedFrames = subFrameCount =>
|
||||||
{
|
{
|
||||||
MiniYaml subLengthYaml;
|
MiniYaml subLengthYaml;
|
||||||
if (sd.TryGetValue("Length", out subLengthYaml) && subLengthYaml.Value == "*")
|
if (sd.TryGetValue("Length", out subLengthYaml) && subLengthYaml.Value == "*")
|
||||||
subLength = subFrameCount - subStart;
|
subLength = subFrames != null ? subFrames.Length : subFrameCount - subStart;
|
||||||
else
|
else
|
||||||
subLength = LoadField(sd, "Length", 1);
|
subLength = LoadField(sd, "Length", 1);
|
||||||
|
|
||||||
return Enumerable.Range(subStart, subLength);
|
return subFrames != null ? subFrames.Skip(subStart).Take(subLength) : Enumerable.Range(subStart, subLength);
|
||||||
};
|
};
|
||||||
|
|
||||||
var subSrc = GetSpriteSrc(modData, tileSet, sequence, animation, sub.Key, sd);
|
var subSrc = GetSpriteSrc(modData, tileSet, sequence, animation, sub.Key, sd);
|
||||||
@@ -279,9 +280,10 @@ namespace OpenRA.Mods.Common.Graphics
|
|||||||
s => s != null ? new Sprite(s.Sheet,
|
s => s != null ? new Sprite(s.Sheet,
|
||||||
FlipRectangle(s.Bounds, subFlipX, subFlipY), ZRamp,
|
FlipRectangle(s.Bounds, subFlipX, subFlipY), ZRamp,
|
||||||
new float3(subFlipX ? -s.Offset.X : s.Offset.X, subFlipY ? -s.Offset.Y : s.Offset.Y, s.Offset.Z) + subOffset + offset,
|
new float3(subFlipX ? -s.Offset.X : s.Offset.X, subFlipY ? -s.Offset.Y : s.Offset.Y, s.Offset.Z) + subOffset + offset,
|
||||||
s.Channel, blendMode) : null);
|
s.Channel, blendMode) : null).ToList();
|
||||||
|
|
||||||
combined = combined.Concat(subSprites.Skip(subStart).Take(subLength));
|
var frames = subFrames != null ? subFrames.Skip(subStart).Take(subLength).ToArray() : Exts.MakeArray(subLength, i => subStart + i);
|
||||||
|
combined = combined.Concat(frames.Select(i => subSprites[i]));
|
||||||
}
|
}
|
||||||
|
|
||||||
sprites = combined.ToArray();
|
sprites = combined.ToArray();
|
||||||
|
|||||||
Reference in New Issue
Block a user