mirror of
https://github.com/EsotericSoftware/spine-runtimes.git
synced 2026-03-02 13:49:07 +08:00
[libgdx] Fixed leak in Triangulator
This commit is contained in:
parent
06cc128e54
commit
a97d18aafd
@ -180,6 +180,9 @@ class Triangulator {
|
|||||||
if (polygon.size > 0) {
|
if (polygon.size > 0) {
|
||||||
convexPolygons.add(polygon);
|
convexPolygons.add(polygon);
|
||||||
convexPolygonsIndices.add(polygonIndices);
|
convexPolygonsIndices.add(polygonIndices);
|
||||||
|
} else {
|
||||||
|
polygonPool.free(polygon);
|
||||||
|
polygonIndicesPool.free(polygonIndices);
|
||||||
}
|
}
|
||||||
polygon = polygonPool.obtain();
|
polygon = polygonPool.obtain();
|
||||||
polygon.clear();
|
polygon.clear();
|
||||||
@ -255,6 +258,8 @@ class Triangulator {
|
|||||||
if (polygon.size == 0) {
|
if (polygon.size == 0) {
|
||||||
convexPolygons.removeIndex(i);
|
convexPolygons.removeIndex(i);
|
||||||
polygonPool.free(polygon);
|
polygonPool.free(polygon);
|
||||||
|
polygonIndices = convexPolygonsIndices.removeIndex(i);
|
||||||
|
polygonIndicesPool.free(polygonIndices);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -277,21 +282,4 @@ class Triangulator {
|
|||||||
float px = p2x - p1x, py = p2y - p1y;
|
float px = p2x - p1x, py = p2y - p1y;
|
||||||
return p3x * py - p3y * px + px * p1y - p1x * py >= 0 ? 1 : -1;
|
return p3x * py - p3y * px + px * p1y - p1x * py >= 0 ? 1 : -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void main (String[] args) {
|
|
||||||
Triangulator triangulator = new Triangulator();
|
|
||||||
FloatArray polygon = new FloatArray();
|
|
||||||
polygon.addAll(411, 219, 199, 230, 161, 362, 534, 407, 346, 305, 596, 265);
|
|
||||||
ShortArray triangles = triangulator.triangulate(polygon);
|
|
||||||
System.out.println(triangles);
|
|
||||||
for (short i: triangles.items) System.out.print((i + 1) + ", ");
|
|
||||||
System.out.println();
|
|
||||||
|
|
||||||
Array<FloatArray> polys = triangulator.decompose(polygon, triangles);
|
|
||||||
System.out.println(polys);
|
|
||||||
|
|
||||||
FloatArray poly2 = new FloatArray(new float[] {0, 0, 100, 0, 100, 100, 0, 100 });
|
|
||||||
SkeletonClipping.makeClockwise(poly2);
|
|
||||||
System.out.println(poly2);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user