public synchronized void update() { final BaseTextureRegion textureRegion = this.mTextureRegion; final Texture texture = textureRegion.getTexture(); if (texture == null) { // TODO Check really needed? return; } final int x1 = Float.floatToRawIntBits(textureRegion.getTextureCoordinateX1()); final int y1 = Float.floatToRawIntBits(textureRegion.getTextureCoordinateY1()); final int x2 = Float.floatToRawIntBits(textureRegion.getTextureCoordinateX2()); final int y2 = Float.floatToRawIntBits(textureRegion.getTextureCoordinateY2()); final int[] bufferData = this.mBufferData; if (this.mFlippedVertical) { if (this.mFlippedHorizontal) { bufferData[0] = x2; bufferData[1] = y2; bufferData[2] = x2; bufferData[3] = y1; bufferData[4] = x1; bufferData[5] = y2; bufferData[6] = x1; bufferData[7] = y1; } else { bufferData[0] = x1; bufferData[1] = y2; bufferData[2] = x1; bufferData[3] = y1; bufferData[4] = x2; bufferData[5] = y2; bufferData[6] = x2; bufferData[7] = y1; } } else { if (this.mFlippedHorizontal) { bufferData[0] = x2; bufferData[1] = y1; bufferData[2] = x2; bufferData[3] = y2; bufferData[4] = x1; bufferData[5] = y1; bufferData[6] = x1; bufferData[7] = y2; } else { bufferData[0] = x1; bufferData[1] = y1; bufferData[2] = x1; bufferData[3] = y2; bufferData[4] = x2; bufferData[5] = y1; bufferData[6] = x2; bufferData[7] = y2; } } final FastFloatBuffer buffer = this.mFloatBuffer; buffer.position(0); buffer.put(bufferData); buffer.position(0); super.setHardwareBufferNeedsUpdate(); }