/** Removes from this array all of elements contained in the specified array. * @return true if this array was modified. */ public boolean removeAll (ShortArray array) { int size = this.size; int startSize = size; short[] items = this.items; for (int i = 0, n = array.size; i < n; i++) { short item = array.get(i); for (int ii = 0; ii < size; ii++) { if (item == items[ii]) { removeIndex(ii); size--; break; } } } return size != startSize; }
/** Removes from this array all of elements contained in the specified array. * @return true if this array was modified. */ public boolean removeAll (ShortArray array) { int size = this.size; int startSize = size; short[] items = this.items; for (int i = 0, n = array.size; i < n; i++) { short item = array.get(i); for (int ii = 0; ii < size; ii++) { if (item == items[ii]) { removeIndex(ii); size--; break; } } } return size != startSize; }
public void render () { Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT); renderer.setColor(Color.RED); renderer.begin(ShapeType.Filled); for (int i = 0; i < points.size; i += 2) renderer.circle(points.get(i), points.get(i + 1), 4, 12); renderer.end(); renderer.setColor(Color.WHITE); renderer.begin(ShapeType.Line); for (int i = 0; i < triangles.size; i += 3) { int p1 = triangles.get(i) * 2; int p2 = triangles.get(i + 1) * 2; int p3 = triangles.get(i + 2) * 2; renderer.triangle( // points.get(p1), points.get(p1 + 1), // points.get(p2), points.get(p2 + 1), // points.get(p3), points.get(p3 + 1)); } renderer.end(); }
final int o = tempOffset + s; if ((iv > 0) && (iu > 0)) // FIXME don't duplicate lines and points builder.rect(tmpIndices.get(tempOffset), tmpIndices.get((o - 1) % s), tmpIndices.get((o - (divisionsU + 2)) % s), tmpIndices.get((o - (divisionsU + 1)) % s)); tempOffset = (tempOffset + 1) % tmpIndices.size;
final int o = tempOffset + s; if ((iv > 0) && (iu > 0)) // FIXME don't duplicate lines and points builder.rect(tmpIndices.get(tempOffset), tmpIndices.get((o - 1) % s), tmpIndices.get((o - (divisionsU + 2)) % s), tmpIndices.get((o - (divisionsU + 1)) % s)); tempOffset = (tempOffset + 1) % tmpIndices.size;
/** Removes from this array all of elements contained in the specified array. * @return true if this array was modified. */ public boolean removeAll (ShortArray array) { int size = this.size; int startSize = size; short[] items = this.items; for (int i = 0, n = array.size; i < n; i++) { short item = array.get(i); for (int ii = 0; ii < size; ii++) { if (item == items[ii]) { removeIndex(ii); size--; break; } } } return size != startSize; }
public static void splitPolygon(PolygonFixtureDefModel object) { object.vertices.clear(); final FloatArray vertices = new FloatArray(); for (Vector2 v : object.polygon) { vertices.add(v.x); vertices.add(v.y); } ShortArray temp = earClippingTriangulator.computeTriangles(vertices); for (int i = 0; i < temp.size; i += 3) { Vector2[] vv = new Vector2[3]; vv[0] = new Vector2(vertices.get(2 * temp.get(i)), vertices.get(2 * temp.get(i) + 1)); vv[1] = new Vector2(vertices.get(2 * temp.get(i + 1)), vertices.get(2 * temp.get(i + 1) + 1)); vv[2] = new Vector2(vertices.get(2 * temp.get(i + 2)), vertices.get(2 * temp.get(i + 2) + 1)); if (Mathutils.isClockwise(vv[0], vv[1], vv[2])) { Vector2 vt = vv[0]; vv[0] = vv[2]; vv[2] = vt; } object.vertices.add(vv); } }
if ((iv > 0) && (iu > 0)) // FIXME don't duplicate lines and points if (!flipNormals) { rect(tmpIndices.get(tempOffset), tmpIndices.get((o - 1) % s), tmpIndices.get((o - (divisionsU + 2)) % s), tmpIndices.get((o - (divisionsU + 1)) % s)); } else { rect(tmpIndices.get(tempOffset), tmpIndices.get((o - (divisionsU + 1)) % s), tmpIndices.get((o - (divisionsU + 2)) % s), tmpIndices.get((o - 1) % s));
render.setColor(focus ? FocusColor : POLYGON); render.begin(ShapeType.Filled); render.triangle(vertices.get(2 * temp.get(i)), vertices.get(2 * temp.get(i) + 1), vertices.get(2 * temp.get(i + 1)), vertices.get(2 * temp.get(i + 1) + 1), vertices.get(2 * temp.get(i + 2)), vertices.get(2 * temp.get(i + 2) + 1)); render.end(); render.setColor(Color.CYAN); render.begin(ShapeType.Line); render.triangle(vertices.get(2 * temp.get(i)), vertices.get(2 * temp.get(i) + 1), vertices.get(2 * temp.get(i + 1)), vertices.get(2 * temp.get(i + 1) + 1), vertices.get(2 * temp.get(i + 2)), vertices.get(2 * temp.get(i + 2) + 1)); render.end();
final int o = tempOffset + s; if ((iv > 0) && (iu > 0)) // FIXME don't duplicate lines and points builder.rect(tmpIndices.get(tempOffset), tmpIndices.get((o - 1) % s), tmpIndices.get((o - (divisionsU + 2)) % s), tmpIndices.get((o - (divisionsU + 1)) % s)); tempOffset = (tempOffset + 1) % tmpIndices.size;