Skip to content

Commit 485de74

Browse files
committed
[libgdx] SkeletonClipping#clipTriangles clean up.
1 parent d860c3d commit 485de74

File tree

3 files changed

+14
-22
lines changed

3 files changed

+14
-22
lines changed

spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/Skeleton.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -729,7 +729,7 @@ public void getBounds (Vector2 offset, Vector2 size, FloatArray temp, SkeletonCl
729729
}
730730
if (vertices != null) {
731731
if (clipper != null && clipper.isClipping()) {
732-
clipper.clipTriangles(vertices, verticesLength, triangles, triangles.length);
732+
clipper.clipTriangles(vertices, triangles, triangles.length);
733733
vertices = clipper.getClippedVertices().items;
734734
verticesLength = clipper.getClippedVertices().size;
735735
}

spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/SkeletonRenderer.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -204,7 +204,7 @@ public void draw (PolygonSpriteBatch batch, Skeleton skeleton) {
204204
| (int)(r * slotColor.r * color.r * multiplier));
205205

206206
if (clipper.isClipping()) {
207-
clipper.clipTriangles(vertices, verticesLength, triangles, triangles.length, uvs, c, 0, false);
207+
clipper.clipTriangles(vertices, triangles, triangles.length, uvs, c, 0, false);
208208
FloatArray clippedVertices = clipper.getClippedVertices();
209209
ShortArray clippedTriangles = clipper.getClippedTriangles();
210210
batch.draw(texture, clippedVertices.items, 0, clippedVertices.size, clippedTriangles.items, 0,
@@ -311,7 +311,7 @@ public void draw (TwoColorPolygonBatch batch, Skeleton skeleton) {
311311
| (int)(red * darkColor.r));
312312

313313
if (clipper.isClipping()) {
314-
clipper.clipTriangles(vertices, verticesLength, triangles, triangles.length, uvs, light, dark, true);
314+
clipper.clipTriangles(vertices, triangles, triangles.length, uvs, light, dark, true);
315315
FloatArray clippedVertices = clipper.getClippedVertices();
316316
ShortArray clippedTriangles = clipper.getClippedTriangles();
317317
batch.drawTwoColor(texture, clippedVertices.items, 0, clippedVertices.size, clippedTriangles.items, 0,

spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/utils/SkeletonClipping.java

+11-19
Original file line numberDiff line numberDiff line change
@@ -82,18 +82,15 @@ public boolean isClipping () {
8282
return clipAttachment != null;
8383
}
8484

85-
public void clipTriangles (float[] vertices, int verticesLength, short[] triangles, int trianglesLength) {
86-
85+
public void clipTriangles (float[] vertices, short[] triangles, int trianglesLength) {
8786
FloatArray clipOutput = this.clipOutput, clippedVertices = this.clippedVertices;
8887
ShortArray clippedTriangles = this.clippedTriangles;
8988
Object[] polygons = clippingPolygons.items;
9089
int polygonsCount = clippingPolygons.size;
91-
int vertexSize = 2;
9290

9391
short index = 0;
9492
clippedVertices.clear();
9593
clippedTriangles.clear();
96-
outer:
9794
for (int i = 0; i < trianglesLength; i += 3) {
9895
int vertexOffset = triangles[i] << 1;
9996
float x1 = vertices[vertexOffset], y1 = vertices[vertexOffset + 1];
@@ -112,27 +109,25 @@ public void clipTriangles (float[] vertices, int verticesLength, short[] triangl
112109

113110
int clipOutputCount = clipOutputLength >> 1;
114111
float[] clipOutputItems = clipOutput.items;
115-
float[] clippedVerticesItems = clippedVertices.setSize(s + clipOutputCount * vertexSize);
116-
for (int ii = 0; ii < clipOutputLength; ii += 2) {
112+
float[] clippedVerticesItems = clippedVertices.setSize(s + clipOutputCount * 2);
113+
for (int ii = 0; ii < clipOutputLength; ii += 2, s += 2) {
117114
float x = clipOutputItems[ii], y = clipOutputItems[ii + 1];
118115
clippedVerticesItems[s] = x;
119116
clippedVerticesItems[s + 1] = y;
120-
s += 2;
121117
}
122118

123119
s = clippedTriangles.size;
124120
short[] clippedTrianglesItems = clippedTriangles.setSize(s + 3 * (clipOutputCount - 2));
125121
clipOutputCount--;
126-
for (int ii = 1; ii < clipOutputCount; ii++) {
122+
for (int ii = 1; ii < clipOutputCount; ii++, s += 3) {
127123
clippedTrianglesItems[s] = index;
128124
clippedTrianglesItems[s + 1] = (short)(index + ii);
129125
clippedTrianglesItems[s + 2] = (short)(index + ii + 1);
130-
s += 3;
131126
}
132127
index += clipOutputCount + 1;
133128

134129
} else {
135-
float[] clippedVerticesItems = clippedVertices.setSize(s + 3 * vertexSize);
130+
float[] clippedVerticesItems = clippedVertices.setSize(s + 3 * 2);
136131
clippedVerticesItems[s] = x1;
137132
clippedVerticesItems[s + 1] = y1;
138133

@@ -148,14 +143,14 @@ public void clipTriangles (float[] vertices, int verticesLength, short[] triangl
148143
clippedTrianglesItems[s + 1] = (short)(index + 1);
149144
clippedTrianglesItems[s + 2] = (short)(index + 2);
150145
index += 3;
151-
continue outer;
146+
break;
152147
}
153148
}
154149
}
155150
}
156151

157-
public void clipTriangles (float[] vertices, int verticesLength, short[] triangles, int trianglesLength, float[] uvs,
158-
float light, float dark, boolean twoColor) {
152+
public void clipTriangles (float[] vertices, short[] triangles, int trianglesLength, float[] uvs, float light, float dark,
153+
boolean twoColor) {
159154

160155
FloatArray clipOutput = this.clipOutput, clippedVertices = this.clippedVertices;
161156
ShortArray clippedTriangles = this.clippedTriangles;
@@ -166,7 +161,6 @@ public void clipTriangles (float[] vertices, int verticesLength, short[] triangl
166161
short index = 0;
167162
clippedVertices.clear();
168163
clippedTriangles.clear();
169-
outer:
170164
for (int i = 0; i < trianglesLength; i += 3) {
171165
int vertexOffset = triangles[i] << 1;
172166
float x1 = vertices[vertexOffset], y1 = vertices[vertexOffset + 1];
@@ -191,7 +185,7 @@ public void clipTriangles (float[] vertices, int verticesLength, short[] triangl
191185
int clipOutputCount = clipOutputLength >> 1;
192186
float[] clipOutputItems = clipOutput.items;
193187
float[] clippedVerticesItems = clippedVertices.setSize(s + clipOutputCount * vertexSize);
194-
for (int ii = 0; ii < clipOutputLength; ii += 2) {
188+
for (int ii = 0; ii < clipOutputLength; ii += 2, s += 2) {
195189
float x = clipOutputItems[ii], y = clipOutputItems[ii + 1];
196190
clippedVerticesItems[s] = x;
197191
clippedVerticesItems[s + 1] = y;
@@ -207,17 +201,15 @@ public void clipTriangles (float[] vertices, int verticesLength, short[] triangl
207201
float c = 1 - a - b;
208202
clippedVerticesItems[s] = u1 * a + u2 * b + u3 * c;
209203
clippedVerticesItems[s + 1] = v1 * a + v2 * b + v3 * c;
210-
s += 2;
211204
}
212205

213206
s = clippedTriangles.size;
214207
short[] clippedTrianglesItems = clippedTriangles.setSize(s + 3 * (clipOutputCount - 2));
215208
clipOutputCount--;
216-
for (int ii = 1; ii < clipOutputCount; ii++) {
209+
for (int ii = 1; ii < clipOutputCount; ii++, s += 3) {
217210
clippedTrianglesItems[s] = index;
218211
clippedTrianglesItems[s + 1] = (short)(index + ii);
219212
clippedTrianglesItems[s + 2] = (short)(index + ii + 1);
220-
s += 3;
221213
}
222214
index += clipOutputCount + 1;
223215

@@ -267,7 +259,7 @@ public void clipTriangles (float[] vertices, int verticesLength, short[] triangl
267259
clippedTrianglesItems[s + 1] = (short)(index + 1);
268260
clippedTrianglesItems[s + 2] = (short)(index + 2);
269261
index += 3;
270-
continue outer;
262+
break;
271263
}
272264
}
273265
}

0 commit comments

Comments
 (0)