mirror of
https://github.com/EsotericSoftware/spine-runtimes.git
synced 2025-12-20 17:26:01 +08:00
[csharp][unity] Performed some exposed list optimizations by using added method EnsureSize which does not zero excess entries. Closes #2436.
This commit is contained in:
parent
c830f12423
commit
c4aebc14ab
@ -274,7 +274,7 @@ namespace Spine {
|
|||||||
|
|
||||||
bool shortestRotation = current.shortestRotation;
|
bool shortestRotation = current.shortestRotation;
|
||||||
bool firstFrame = !shortestRotation && current.timelinesRotation.Count != timelineCount << 1;
|
bool firstFrame = !shortestRotation && current.timelinesRotation.Count != timelineCount << 1;
|
||||||
if (firstFrame) current.timelinesRotation.Resize(timelineCount << 1);
|
if (firstFrame) current.timelinesRotation.EnsureSize(timelineCount << 1);
|
||||||
float[] timelinesRotation = current.timelinesRotation.Items;
|
float[] timelinesRotation = current.timelinesRotation.Items;
|
||||||
|
|
||||||
for (int ii = 0; ii < timelineCount; ii++) {
|
for (int ii = 0; ii < timelineCount; ii++) {
|
||||||
@ -390,7 +390,7 @@ namespace Spine {
|
|||||||
|
|
||||||
bool shortestRotation = from.shortestRotation;
|
bool shortestRotation = from.shortestRotation;
|
||||||
bool firstFrame = !shortestRotation && from.timelinesRotation.Count != timelineCount << 1;
|
bool firstFrame = !shortestRotation && from.timelinesRotation.Count != timelineCount << 1;
|
||||||
if (firstFrame) from.timelinesRotation.Resize(timelineCount << 1);
|
if (firstFrame) from.timelinesRotation.EnsureSize(timelineCount << 1);
|
||||||
float[] timelinesRotation = from.timelinesRotation.Items;
|
float[] timelinesRotation = from.timelinesRotation.Items;
|
||||||
|
|
||||||
from.totalAlpha = 0;
|
from.totalAlpha = 0;
|
||||||
@ -827,7 +827,7 @@ namespace Spine {
|
|||||||
|
|
||||||
private TrackEntry ExpandToIndex (int index) {
|
private TrackEntry ExpandToIndex (int index) {
|
||||||
if (index < tracks.Count) return tracks.Items[index];
|
if (index < tracks.Count) return tracks.Items[index];
|
||||||
tracks.Resize(index + 1);
|
tracks.EnsureSize(index + 1);
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -898,7 +898,7 @@ namespace Spine {
|
|||||||
TrackEntry to = entry.mixingTo;
|
TrackEntry to = entry.mixingTo;
|
||||||
Timeline[] timelines = entry.animation.timelines.Items;
|
Timeline[] timelines = entry.animation.timelines.Items;
|
||||||
int timelinesCount = entry.animation.timelines.Count;
|
int timelinesCount = entry.animation.timelines.Count;
|
||||||
int[] timelineMode = entry.timelineMode.Resize(timelinesCount).Items;
|
int[] timelineMode = entry.timelineMode.EnsureSize(timelinesCount).Items;
|
||||||
entry.timelineHoldMix.Clear();
|
entry.timelineHoldMix.Clear();
|
||||||
TrackEntry[] timelineHoldMix = entry.timelineHoldMix.Resize(timelinesCount).Items;
|
TrackEntry[] timelineHoldMix = entry.timelineHoldMix.Resize(timelinesCount).Items;
|
||||||
HashSet<string> propertyIds = this.propertyIds;
|
HashSet<string> propertyIds = this.propertyIds;
|
||||||
|
|||||||
@ -102,6 +102,15 @@ namespace Spine {
|
|||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public ExposedList<T> EnsureSize (int newSize) {
|
||||||
|
int itemsLength = Items.Length;
|
||||||
|
if (newSize > itemsLength) {
|
||||||
|
Array.Resize(ref Items, newSize);
|
||||||
|
}
|
||||||
|
Count = newSize;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
public void EnsureCapacity (int min) {
|
public void EnsureCapacity (int min) {
|
||||||
if (Items.Length < min) {
|
if (Items.Length < min) {
|
||||||
int newCapacity = Items.Length == 0 ? DefaultCapacity : Items.Length * 2;
|
int newCapacity = Items.Length == 0 ? DefaultCapacity : Items.Length * 2;
|
||||||
|
|||||||
@ -83,7 +83,7 @@ namespace Spine {
|
|||||||
bool tangents = data.rotateMode == RotateMode.Tangent, scale = data.rotateMode == RotateMode.ChainScale;
|
bool tangents = data.rotateMode == RotateMode.Tangent, scale = data.rotateMode == RotateMode.ChainScale;
|
||||||
int boneCount = this.bones.Count, spacesCount = tangents ? boneCount : boneCount + 1;
|
int boneCount = this.bones.Count, spacesCount = tangents ? boneCount : boneCount + 1;
|
||||||
BonePose[] bonesItems = this.bones.Items;
|
BonePose[] bonesItems = this.bones.Items;
|
||||||
float[] spaces = this.spaces.Resize(spacesCount).Items, lengths = scale ? this.lengths.Resize(boneCount).Items : null;
|
float[] spaces = this.spaces.EnsureSize(spacesCount).Items, lengths = scale ? this.lengths.EnsureSize(boneCount).Items : null;
|
||||||
float spacing = p.spacing;
|
float spacing = p.spacing;
|
||||||
switch (data.spacingMode) {
|
switch (data.spacingMode) {
|
||||||
case SpacingMode.Percent:
|
case SpacingMode.Percent:
|
||||||
@ -200,7 +200,7 @@ namespace Spine {
|
|||||||
float[] ComputeWorldPositions (Skeleton skeleton, PathAttachment path, int spacesCount, bool tangents) {
|
float[] ComputeWorldPositions (Skeleton skeleton, PathAttachment path, int spacesCount, bool tangents) {
|
||||||
Slot slot = this.slot;
|
Slot slot = this.slot;
|
||||||
float position = applied.position;
|
float position = applied.position;
|
||||||
float[] spaces = this.spaces.Items, output = this.positions.Resize(spacesCount * 3 + 2).Items, world;
|
float[] spaces = this.spaces.Items, output = this.positions.EnsureSize(spacesCount * 3 + 2).Items, world;
|
||||||
bool closed = path.Closed;
|
bool closed = path.Closed;
|
||||||
int verticesLength = path.WorldVerticesLength, curveCount = verticesLength / 6, prevCurve = NONE;
|
int verticesLength = path.WorldVerticesLength, curveCount = verticesLength / 6, prevCurve = NONE;
|
||||||
|
|
||||||
@ -224,7 +224,7 @@ namespace Spine {
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
world = this.world.Resize(8).Items;
|
world = this.world.EnsureSize(8).Items;
|
||||||
for (int i = 0, o = 0, curve = 0; i < spacesCount; i++, o += 3) {
|
for (int i = 0, o = 0, curve = 0; i < spacesCount; i++, o += 3) {
|
||||||
float space = spaces[i] * multiplier;
|
float space = spaces[i] * multiplier;
|
||||||
position += space;
|
position += space;
|
||||||
@ -279,7 +279,7 @@ namespace Spine {
|
|||||||
// World vertices.
|
// World vertices.
|
||||||
if (closed) {
|
if (closed) {
|
||||||
verticesLength += 2;
|
verticesLength += 2;
|
||||||
world = this.world.Resize(verticesLength).Items;
|
world = this.world.EnsureSize(verticesLength).Items;
|
||||||
path.ComputeWorldVertices(skeleton, slot, 2, verticesLength - 4, world, 0, 2);
|
path.ComputeWorldVertices(skeleton, slot, 2, verticesLength - 4, world, 0, 2);
|
||||||
path.ComputeWorldVertices(skeleton, slot, 0, 2, world, verticesLength - 4, 2);
|
path.ComputeWorldVertices(skeleton, slot, 0, 2, world, verticesLength - 4, 2);
|
||||||
world[verticesLength - 2] = world[0];
|
world[verticesLength - 2] = world[0];
|
||||||
@ -287,12 +287,12 @@ namespace Spine {
|
|||||||
} else {
|
} else {
|
||||||
curveCount--;
|
curveCount--;
|
||||||
verticesLength -= 4;
|
verticesLength -= 4;
|
||||||
world = this.world.Resize(verticesLength).Items;
|
world = this.world.EnsureSize(verticesLength).Items;
|
||||||
path.ComputeWorldVertices(skeleton, slot, 2, verticesLength, world, 0, 2);
|
path.ComputeWorldVertices(skeleton, slot, 2, verticesLength, world, 0, 2);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Curve lengths.
|
// Curve lengths.
|
||||||
float[] curves = this.curves.Resize(curveCount).Items;
|
float[] curves = this.curves.EnsureSize(curveCount).Items;
|
||||||
pathLength = 0;
|
pathLength = 0;
|
||||||
float x1 = world[0], y1 = world[1], cx1 = 0, cy1 = 0, cx2 = 0, cy2 = 0, x2 = 0, y2 = 0;
|
float x1 = world[0], y1 = world[1], cx1 = 0, cy1 = 0, cx2 = 0, cy2 = 0, x2 = 0, y2 = 0;
|
||||||
float tmpx, tmpy, dddfx, dddfy, ddfx, ddfy, dfx, dfy;
|
float tmpx, tmpy, dddfx, dddfy, ddfx, ddfy, dfx, dfy;
|
||||||
|
|||||||
@ -192,7 +192,7 @@ namespace Spine {
|
|||||||
o[i] = input.ReadString();
|
o[i] = input.ReadString();
|
||||||
|
|
||||||
// Bones.
|
// Bones.
|
||||||
BoneData[] bones = skeletonData.bones.Resize(n = input.ReadInt(true)).Items;
|
BoneData[] bones = skeletonData.bones.EnsureSize(n = input.ReadInt(true)).Items;
|
||||||
for (int i = 0; i < n; i++) {
|
for (int i = 0; i < n; i++) {
|
||||||
string name = input.ReadString();
|
string name = input.ReadString();
|
||||||
BoneData parent = i == 0 ? null : bones[input.ReadInt(true)];
|
BoneData parent = i == 0 ? null : bones[input.ReadInt(true)];
|
||||||
@ -217,7 +217,7 @@ namespace Spine {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Slots.
|
// Slots.
|
||||||
SlotData[] slots = skeletonData.slots.Resize(n = input.ReadInt(true)).Items;
|
SlotData[] slots = skeletonData.slots.EnsureSize(n = input.ReadInt(true)).Items;
|
||||||
for (int i = 0; i < n; i++) {
|
for (int i = 0; i < n; i++) {
|
||||||
string slotName = input.ReadString();
|
string slotName = input.ReadString();
|
||||||
|
|
||||||
@ -239,7 +239,7 @@ namespace Spine {
|
|||||||
|
|
||||||
// Constraints.
|
// Constraints.
|
||||||
int constraintCount = input.ReadInt(true);
|
int constraintCount = input.ReadInt(true);
|
||||||
IConstraintData[] constraints = skeletonData.constraints.Resize(constraintCount).Items;
|
IConstraintData[] constraints = skeletonData.constraints.EnsureSize(constraintCount).Items;
|
||||||
for (int i = 0; i < constraintCount; i++) {
|
for (int i = 0; i < constraintCount; i++) {
|
||||||
string name = input.ReadString();
|
string name = input.ReadString();
|
||||||
int nn;
|
int nn;
|
||||||
@ -247,7 +247,7 @@ namespace Spine {
|
|||||||
switch (input.ReadUByte()) {
|
switch (input.ReadUByte()) {
|
||||||
case CONSTRAINT_IK: {
|
case CONSTRAINT_IK: {
|
||||||
var data = new IkConstraintData(name);
|
var data = new IkConstraintData(name);
|
||||||
BoneData[] constraintBones = data.bones.Resize(nn = input.ReadInt(true)).Items;
|
BoneData[] constraintBones = data.bones.EnsureSize(nn = input.ReadInt(true)).Items;
|
||||||
for (int ii = 0; ii < nn; ii++)
|
for (int ii = 0; ii < nn; ii++)
|
||||||
constraintBones[ii] = bones[input.ReadInt(true)];
|
constraintBones[ii] = bones[input.ReadInt(true)];
|
||||||
data.target = bones[input.ReadInt(true)];
|
data.target = bones[input.ReadInt(true)];
|
||||||
@ -265,7 +265,7 @@ namespace Spine {
|
|||||||
}
|
}
|
||||||
case CONSTRAINT_TRANSFORM: {
|
case CONSTRAINT_TRANSFORM: {
|
||||||
var data = new TransformConstraintData(name);
|
var data = new TransformConstraintData(name);
|
||||||
BoneData[] constraintBones = data.bones.Resize(nn = input.ReadInt(true)).Items;
|
BoneData[] constraintBones = data.bones.EnsureSize(nn = input.ReadInt(true)).Items;
|
||||||
for (int ii = 0; ii < nn; ii++)
|
for (int ii = 0; ii < nn; ii++)
|
||||||
constraintBones[ii] = bones[input.ReadInt(true)];
|
constraintBones[ii] = bones[input.ReadInt(true)];
|
||||||
data.source = bones[input.ReadInt(true)];
|
data.source = bones[input.ReadInt(true)];
|
||||||
@ -275,7 +275,7 @@ namespace Spine {
|
|||||||
data.localTarget = (flags & 4) != 0;
|
data.localTarget = (flags & 4) != 0;
|
||||||
data.additive = (flags & 8) != 0;
|
data.additive = (flags & 8) != 0;
|
||||||
data.clamp = (flags & 16) != 0;
|
data.clamp = (flags & 16) != 0;
|
||||||
FromProperty[] froms = data.properties.Resize(nn = flags >> 5).Items;
|
FromProperty[] froms = data.properties.EnsureSize(nn = flags >> 5).Items;
|
||||||
for (int ii = 0, tn; ii < nn; ii++) {
|
for (int ii = 0, tn; ii < nn; ii++) {
|
||||||
float fromScale = 1;
|
float fromScale = 1;
|
||||||
FromProperty from;
|
FromProperty from;
|
||||||
@ -297,7 +297,7 @@ namespace Spine {
|
|||||||
default: from = null; break;
|
default: from = null; break;
|
||||||
}
|
}
|
||||||
from.offset = input.ReadFloat() * fromScale;
|
from.offset = input.ReadFloat() * fromScale;
|
||||||
ToProperty[] tos = from.to.Resize(tn = input.ReadSByte()).Items;
|
ToProperty[] tos = from.to.EnsureSize(tn = input.ReadSByte()).Items;
|
||||||
for (int t = 0; t < tn; t++) {
|
for (int t = 0; t < tn; t++) {
|
||||||
float toScale = 1;
|
float toScale = 1;
|
||||||
ToProperty to;
|
ToProperty to;
|
||||||
@ -345,7 +345,7 @@ namespace Spine {
|
|||||||
}
|
}
|
||||||
case CONSTRAINT_PATH: {
|
case CONSTRAINT_PATH: {
|
||||||
var data = new PathConstraintData(name);
|
var data = new PathConstraintData(name);
|
||||||
BoneData[] constraintBones = data.bones.Resize(nn = input.ReadInt(true)).Items;
|
BoneData[] constraintBones = data.bones.EnsureSize(nn = input.ReadInt(true)).Items;
|
||||||
for (int ii = 0; ii < nn; ii++)
|
for (int ii = 0; ii < nn; ii++)
|
||||||
constraintBones[ii] = bones[input.ReadInt(true)];
|
constraintBones[ii] = bones[input.ReadInt(true)];
|
||||||
data.slot = slots[input.ReadInt(true)];
|
data.slot = slots[input.ReadInt(true)];
|
||||||
@ -447,7 +447,7 @@ namespace Spine {
|
|||||||
// Skins.
|
// Skins.
|
||||||
{
|
{
|
||||||
int i = skeletonData.skins.Count;
|
int i = skeletonData.skins.Count;
|
||||||
o = skeletonData.skins.Resize(n = i + input.ReadInt(true)).Items;
|
o = skeletonData.skins.EnsureSize(n = i + input.ReadInt(true)).Items;
|
||||||
for (; i < n; i++)
|
for (; i < n; i++)
|
||||||
o[i] = ReadSkin(input, skeletonData, false, nonessential);
|
o[i] = ReadSkin(input, skeletonData, false, nonessential);
|
||||||
}
|
}
|
||||||
@ -466,7 +466,7 @@ namespace Spine {
|
|||||||
linkedMeshes.Clear();
|
linkedMeshes.Clear();
|
||||||
|
|
||||||
// Events.
|
// Events.
|
||||||
o = skeletonData.events.Resize(n = input.ReadInt(true)).Items;
|
o = skeletonData.events.EnsureSize(n = input.ReadInt(true)).Items;
|
||||||
for (int i = 0; i < n; i++) {
|
for (int i = 0; i < n; i++) {
|
||||||
var data = new EventData(input.ReadString());
|
var data = new EventData(input.ReadString());
|
||||||
data.Int = input.ReadInt(false);
|
data.Int = input.ReadInt(false);
|
||||||
@ -481,7 +481,7 @@ namespace Spine {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Animations.
|
// Animations.
|
||||||
Animation[] animations = skeletonData.animations.Resize(n = input.ReadInt(true)).Items;
|
Animation[] animations = skeletonData.animations.EnsureSize(n = input.ReadInt(true)).Items;
|
||||||
for (int i = 0; i < n; i++)
|
for (int i = 0; i < n; i++)
|
||||||
animations[i] = ReadAnimation(input, input.ReadString(), skeletonData);
|
animations[i] = ReadAnimation(input, input.ReadString(), skeletonData);
|
||||||
|
|
||||||
@ -513,12 +513,12 @@ namespace Spine {
|
|||||||
if (nonessential) input.ReadInt(); // discard, Color.rgba8888ToColor(skin.color, input.readInt());
|
if (nonessential) input.ReadInt(); // discard, Color.rgba8888ToColor(skin.color, input.readInt());
|
||||||
|
|
||||||
int n;
|
int n;
|
||||||
object[] from = skeletonData.bones.Items, to = skin.bones.Resize(n = input.ReadInt(true)).Items;
|
object[] from = skeletonData.bones.Items, to = skin.bones.EnsureSize(n = input.ReadInt(true)).Items;
|
||||||
for (int i = 0; i < n; i++)
|
for (int i = 0; i < n; i++)
|
||||||
to[i] = from[input.ReadInt(true)];
|
to[i] = from[input.ReadInt(true)];
|
||||||
|
|
||||||
from = skeletonData.constraints.Items;
|
from = skeletonData.constraints.Items;
|
||||||
to = skin.constraints.Resize(n = input.ReadInt(true)).Items;
|
to = skin.constraints.EnsureSize(n = input.ReadInt(true)).Items;
|
||||||
for (int i = 0; i < n; i++)
|
for (int i = 0; i < n; i++)
|
||||||
to[i] = from[input.ReadInt(true)];
|
to[i] = from[input.ReadInt(true)];
|
||||||
|
|
||||||
|
|||||||
@ -53,7 +53,7 @@ namespace Spine {
|
|||||||
clipAttachment = clip;
|
clipAttachment = clip;
|
||||||
|
|
||||||
int n = clip.worldVerticesLength;
|
int n = clip.worldVerticesLength;
|
||||||
float[] vertices = clippingPolygon.Resize(n).Items;
|
float[] vertices = clippingPolygon.EnsureSize(n).Items;
|
||||||
clip.ComputeWorldVertices(skeleton, slot, 0, n, vertices, 0, 2);
|
clip.ComputeWorldVertices(skeleton, slot, 0, n, vertices, 0, 2);
|
||||||
MakeClockwise(clippingPolygon);
|
MakeClockwise(clippingPolygon);
|
||||||
clippingPolygons = triangulator.Decompose(clippingPolygon, triangulator.Triangulate(clippingPolygon));
|
clippingPolygons = triangulator.Decompose(clippingPolygon, triangulator.Triangulate(clippingPolygon));
|
||||||
@ -106,7 +106,7 @@ namespace Spine {
|
|||||||
if (clipOutputLength == 0) continue;
|
if (clipOutputLength == 0) continue;
|
||||||
|
|
||||||
int clipOutputCount = clipOutputLength >> 1;
|
int clipOutputCount = clipOutputLength >> 1;
|
||||||
float[] clippedVerticesItems = clippedVertices.Resize(s + clipOutputCount * 2).Items;
|
float[] clippedVerticesItems = clippedVertices.EnsureSize(s + clipOutputCount * 2).Items;
|
||||||
for (int ii = 0; ii < clipOutputLength; ii += 2, s += 2) {
|
for (int ii = 0; ii < clipOutputLength; ii += 2, s += 2) {
|
||||||
float x = clipOutputItems[ii], y = clipOutputItems[ii + 1];
|
float x = clipOutputItems[ii], y = clipOutputItems[ii + 1];
|
||||||
clippedVerticesItems[s] = x;
|
clippedVerticesItems[s] = x;
|
||||||
@ -114,7 +114,7 @@ namespace Spine {
|
|||||||
}
|
}
|
||||||
|
|
||||||
s = clippedTriangles.Count;
|
s = clippedTriangles.Count;
|
||||||
int[] clippedTrianglesItems = clippedTriangles.Resize(s + 3 * (clipOutputCount - 2)).Items;
|
int[] clippedTrianglesItems = clippedTriangles.EnsureSize(s + 3 * (clipOutputCount - 2)).Items;
|
||||||
clipOutputCount--;
|
clipOutputCount--;
|
||||||
for (int ii = 1; ii < clipOutputCount; ii++, s += 3) {
|
for (int ii = 1; ii < clipOutputCount; ii++, s += 3) {
|
||||||
clippedTrianglesItems[s] = index;
|
clippedTrianglesItems[s] = index;
|
||||||
@ -123,7 +123,7 @@ namespace Spine {
|
|||||||
}
|
}
|
||||||
index += clipOutputCount + 1;
|
index += clipOutputCount + 1;
|
||||||
} else {
|
} else {
|
||||||
float[] clippedVerticesItems = clippedVertices.Resize(s + 3 * 2).Items;
|
float[] clippedVerticesItems = clippedVertices.EnsureSize(s + 3 * 2).Items;
|
||||||
clippedVerticesItems[s] = x1;
|
clippedVerticesItems[s] = x1;
|
||||||
clippedVerticesItems[s + 1] = y1;
|
clippedVerticesItems[s + 1] = y1;
|
||||||
clippedVerticesItems[s + 2] = x2;
|
clippedVerticesItems[s + 2] = x2;
|
||||||
@ -132,7 +132,7 @@ namespace Spine {
|
|||||||
clippedVerticesItems[s + 5] = y3;
|
clippedVerticesItems[s + 5] = y3;
|
||||||
|
|
||||||
s = clippedTriangles.Count;
|
s = clippedTriangles.Count;
|
||||||
int[] clippedTrianglesItems = clippedTriangles.Resize(s + 3).Items;
|
int[] clippedTrianglesItems = clippedTriangles.EnsureSize(s + 3).Items;
|
||||||
clippedTrianglesItems[s] = index;
|
clippedTrianglesItems[s] = index;
|
||||||
clippedTrianglesItems[s + 1] = index + 1;
|
clippedTrianglesItems[s + 1] = index + 1;
|
||||||
clippedTrianglesItems[s + 2] = index + 2;
|
clippedTrianglesItems[s + 2] = index + 2;
|
||||||
@ -178,8 +178,8 @@ namespace Spine {
|
|||||||
float d = 1 / (d0 * d2 + d1 * (y1 - y3));
|
float d = 1 / (d0 * d2 + d1 * (y1 - y3));
|
||||||
|
|
||||||
int clipOutputCount = clipOutputLength >> 1;
|
int clipOutputCount = clipOutputLength >> 1;
|
||||||
float[] clippedVerticesItems = clippedVertices.Resize(s + clipOutputCount * 2).Items;
|
float[] clippedVerticesItems = clippedVertices.EnsureSize(s + clipOutputCount * 2).Items;
|
||||||
float[] clippedUVsItems = clippedUVs.Resize(s + clipOutputCount * 2).Items;
|
float[] clippedUVsItems = clippedUVs.EnsureSize(s + clipOutputCount * 2).Items;
|
||||||
for (int ii = 0; ii < clipOutputLength; ii += 2, s += 2) {
|
for (int ii = 0; ii < clipOutputLength; ii += 2, s += 2) {
|
||||||
float x = clipOutputItems[ii], y = clipOutputItems[ii + 1];
|
float x = clipOutputItems[ii], y = clipOutputItems[ii + 1];
|
||||||
clippedVerticesItems[s] = x;
|
clippedVerticesItems[s] = x;
|
||||||
@ -193,7 +193,7 @@ namespace Spine {
|
|||||||
}
|
}
|
||||||
|
|
||||||
s = clippedTriangles.Count;
|
s = clippedTriangles.Count;
|
||||||
int[] clippedTrianglesItems = clippedTriangles.Resize(s + 3 * (clipOutputCount - 2)).Items;
|
int[] clippedTrianglesItems = clippedTriangles.EnsureSize(s + 3 * (clipOutputCount - 2)).Items;
|
||||||
clipOutputCount--;
|
clipOutputCount--;
|
||||||
for (int ii = 1; ii < clipOutputCount; ii++, s += 3) {
|
for (int ii = 1; ii < clipOutputCount; ii++, s += 3) {
|
||||||
clippedTrianglesItems[s] = index;
|
clippedTrianglesItems[s] = index;
|
||||||
@ -202,8 +202,8 @@ namespace Spine {
|
|||||||
}
|
}
|
||||||
index += clipOutputCount + 1;
|
index += clipOutputCount + 1;
|
||||||
} else {
|
} else {
|
||||||
float[] clippedVerticesItems = clippedVertices.Resize(s + 3 * 2).Items;
|
float[] clippedVerticesItems = clippedVertices.EnsureSize(s + 3 * 2).Items;
|
||||||
float[] clippedUVsItems = clippedUVs.Resize(s + 3 * 2).Items;
|
float[] clippedUVsItems = clippedUVs.EnsureSize(s + 3 * 2).Items;
|
||||||
clippedVerticesItems[s] = x1;
|
clippedVerticesItems[s] = x1;
|
||||||
clippedVerticesItems[s + 1] = y1;
|
clippedVerticesItems[s + 1] = y1;
|
||||||
clippedVerticesItems[s + 2] = x2;
|
clippedVerticesItems[s + 2] = x2;
|
||||||
@ -219,7 +219,7 @@ namespace Spine {
|
|||||||
clippedUVsItems[s + 5] = v3;
|
clippedUVsItems[s + 5] = v3;
|
||||||
|
|
||||||
s = clippedTriangles.Count;
|
s = clippedTriangles.Count;
|
||||||
int[] clippedTrianglesItems = clippedTriangles.Resize(s + 3).Items;
|
int[] clippedTrianglesItems = clippedTriangles.EnsureSize(s + 3).Items;
|
||||||
clippedTrianglesItems[s] = index;
|
clippedTrianglesItems[s] = index;
|
||||||
clippedTrianglesItems[s + 1] = index + 1;
|
clippedTrianglesItems[s + 1] = index + 1;
|
||||||
clippedTrianglesItems[s + 2] = index + 2;
|
clippedTrianglesItems[s + 2] = index + 2;
|
||||||
@ -324,7 +324,7 @@ namespace Spine {
|
|||||||
for (int i = 0, n = output.Count - 2; i < n; i++)
|
for (int i = 0, n = output.Count - 2; i < n; i++)
|
||||||
originalOutput.Add(output.Items[i]);
|
originalOutput.Add(output.Items[i]);
|
||||||
} else
|
} else
|
||||||
originalOutput.Resize(originalOutput.Count - 2);
|
originalOutput.EnsureSize(originalOutput.Count - 2);
|
||||||
|
|
||||||
return clipped;
|
return clipped;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -47,12 +47,12 @@ namespace Spine {
|
|||||||
|
|
||||||
ExposedList<int> indicesArray = this.indicesArray;
|
ExposedList<int> indicesArray = this.indicesArray;
|
||||||
indicesArray.Clear();
|
indicesArray.Clear();
|
||||||
int[] indices = indicesArray.Resize(vertexCount).Items;
|
int[] indices = indicesArray.EnsureSize(vertexCount).Items;
|
||||||
for (int i = 0; i < vertexCount; i++)
|
for (int i = 0; i < vertexCount; i++)
|
||||||
indices[i] = i;
|
indices[i] = i;
|
||||||
|
|
||||||
ExposedList<bool> isConcaveArray = this.isConcaveArray;
|
ExposedList<bool> isConcaveArray = this.isConcaveArray;
|
||||||
bool[] isConcave = isConcaveArray.Resize(vertexCount).Items;
|
bool[] isConcave = isConcaveArray.EnsureSize(vertexCount).Items;
|
||||||
for (int i = 0, n = vertexCount; i < n; ++i)
|
for (int i = 0, n = vertexCount; i < n; ++i)
|
||||||
isConcave[i] = IsConcave(i, vertexCount, vertices, indices);
|
isConcave[i] = IsConcave(i, vertexCount, vertices, indices);
|
||||||
|
|
||||||
|
|||||||
@ -2,7 +2,7 @@
|
|||||||
"name": "com.esotericsoftware.spine.spine-csharp",
|
"name": "com.esotericsoftware.spine.spine-csharp",
|
||||||
"displayName": "spine-csharp Runtime",
|
"displayName": "spine-csharp Runtime",
|
||||||
"description": "This plugin provides the spine-csharp core runtime.",
|
"description": "This plugin provides the spine-csharp core runtime.",
|
||||||
"version": "4.3.10",
|
"version": "4.3.11",
|
||||||
"unity": "2018.3",
|
"unity": "2018.3",
|
||||||
"author": {
|
"author": {
|
||||||
"name": "Esoteric Software",
|
"name": "Esoteric Software",
|
||||||
|
|||||||
@ -558,9 +558,7 @@ namespace Spine.Unity {
|
|||||||
Settings settings = this.settings;
|
Settings settings = this.settings;
|
||||||
|
|
||||||
int newSubmeshCount = submeshIndex + 1;
|
int newSubmeshCount = submeshIndex + 1;
|
||||||
if (submeshes.Items.Length < newSubmeshCount)
|
submeshes.EnsureSize(newSubmeshCount);
|
||||||
submeshes.Resize(newSubmeshCount);
|
|
||||||
submeshes.Count = newSubmeshCount;
|
|
||||||
ExposedList<int> submesh = submeshes.Items[submeshIndex];
|
ExposedList<int> submesh = submeshes.Items[submeshIndex];
|
||||||
if (submesh == null)
|
if (submesh == null)
|
||||||
submeshes.Items[submeshIndex] = submesh = new ExposedList<int>();
|
submeshes.Items[submeshIndex] = submesh = new ExposedList<int>();
|
||||||
@ -1078,7 +1076,7 @@ namespace Spine.Unity {
|
|||||||
if (updateTriangles) {
|
if (updateTriangles) {
|
||||||
// Match submesh buffers count with submeshInstruction count.
|
// Match submesh buffers count with submeshInstruction count.
|
||||||
if (this.submeshes.Items.Length < submeshInstructionCount) {
|
if (this.submeshes.Items.Length < submeshInstructionCount) {
|
||||||
this.submeshes.Resize(submeshInstructionCount);
|
this.submeshes.EnsureSize(submeshInstructionCount);
|
||||||
for (int i = 0, n = submeshInstructionCount; i < n; i++) {
|
for (int i = 0, n = submeshInstructionCount; i < n; i++) {
|
||||||
ExposedList<int> submeshBuffer = this.submeshes.Items[i];
|
ExposedList<int> submeshBuffer = this.submeshes.Items[i];
|
||||||
if (submeshBuffer == null)
|
if (submeshBuffer == null)
|
||||||
@ -1329,8 +1327,8 @@ namespace Spine.Unity {
|
|||||||
uv2 = new ExposedList<Vector2>(minimumVertexCount);
|
uv2 = new ExposedList<Vector2>(minimumVertexCount);
|
||||||
uv3 = new ExposedList<Vector2>(minimumVertexCount);
|
uv3 = new ExposedList<Vector2>(minimumVertexCount);
|
||||||
}
|
}
|
||||||
uv2.Resize(minimumVertexCount);
|
uv2.EnsureSize(minimumVertexCount);
|
||||||
uv3.Resize(minimumVertexCount);
|
uv3.EnsureSize(minimumVertexCount);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (includeNormals) {
|
if (includeNormals) {
|
||||||
|
|||||||
@ -2,7 +2,7 @@
|
|||||||
"name": "com.esotericsoftware.spine.spine-unity",
|
"name": "com.esotericsoftware.spine.spine-unity",
|
||||||
"displayName": "spine-unity Runtime",
|
"displayName": "spine-unity Runtime",
|
||||||
"description": "This plugin provides the spine-unity runtime core and examples. Spine Examples can be installed via the Samples tab.",
|
"description": "This plugin provides the spine-unity runtime core and examples. Spine Examples can be installed via the Samples tab.",
|
||||||
"version": "4.3.28",
|
"version": "4.3.29",
|
||||||
"unity": "2018.3",
|
"unity": "2018.3",
|
||||||
"author": {
|
"author": {
|
||||||
"name": "Esoteric Software",
|
"name": "Esoteric Software",
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user