nrTextures++;
parameterObject.setAtlasIndex(index);
final Rectangle2 rectangle = node.getRectangle();
final ByteBuffer data = dataBuffers.get(index);
final ByteBuffer lightData = parameterObject.getTexture().getImage().getData(0);
boolean hasAlpha = false;
if (format == ImageDataFormat.RGBA) {
hasAlpha = true;
}
for (int y = 0; y < textureHeight; y++) {
for (int x = 0; x < textureWidth; x++) {
setDataPixel(rectangle, textureWidth, textureHeight, lightData, data, y, x, hasAlpha);
}
}
final WrapMode mode = parameterObject.getTexture().getWrap(WrapAxis.S);
switch (mode) {
case BorderClamp:
case MirrorBorderClamp:
final ReadOnlyColorRGBA col = parameterObject.getTexture().getBorderColor();
borderClamp(data, rectangle, textureWidth, textureHeight, parameterObject, col);
break;
case Clamp:
case MirrorClamp:
borderClamp(data, rectangle, textureWidth, textureHeight, parameterObject, ColorRGBA.BLACK);
break;
case EdgeClamp:
case MirrorEdgeClamp:
edgeClamp(data, rectangle, textureWidth, textureHeight, parameterObject);
break;
case MirroredRepeat:
case Repeat:
repeat(data, rectangle, textureWidth, textureHeight, parameterObject);
break;
default:
}
final float invAtlasWidth = 1f / atlasWidth;
final float invAtlasHeight = 1f / atlasHeight;
final float diffX = textureWidth * invAtlasWidth;
final float diffY = textureHeight * invAtlasHeight;
final float offsetX = (rectangle.getX() + 1) * invAtlasWidth;
final float offsetY = (rectangle.getY() + 1) * invAtlasHeight;
parameterObject.setDiffX(diffX);
parameterObject.setDiffY(diffY);
parameterObject.setOffsetX(offsetX);
parameterObject.setOffsetY(offsetY);