/*
** 2011 April 5
**
** The author disclaims copyright to this source code. In place of
** a legal notice, here is a blessing:
** May you do good and not evil.
** May you find forgiveness for yourself and forgive others.
** May you share freely, never taking more than you give.
*/
package info.ata4.bsplib.struct;
import info.ata4.util.EnumConverter;
import info.ata4.io.DataReader;
import info.ata4.io.DataWriter;
import java.io.IOException;
import java.util.Set;
/**
* Texture info data structure.
*
* @author Nico Bergemann <barracuda415 at yahoo.de>
*/
public class DTexInfo implements DStruct {
public static final int TEXINFO_NODE = -1;
public float[][] textureVecsTexels = new float[2][4]; // [s/t][xyz offset]
public float[][] lightmapVecsLuxels = new float[2][4]; // [s/t][xyz offset] - length is in units of texels/area
public Set<SurfaceFlag> flags; // miptex flags + overrides
public int texdata; // Pointer to texture name, size, etc.
@Override
public int getSize() {
return 72;
}
@Override
public void read(DataReader in) throws IOException {
for (int i = 0; i < textureVecsTexels.length; i++) {
for (int j = 0; j < textureVecsTexels[i].length; j++) {
textureVecsTexels[i][j] = in.readFloat();
}
}
for (int i = 0; i < lightmapVecsLuxels.length; i++) {
for (int j = 0; j < lightmapVecsLuxels[i].length; j++) {
lightmapVecsLuxels[i][j] = in.readFloat();
}
}
flags = EnumConverter.fromInteger(SurfaceFlag.class, in.readInt());
texdata = in.readInt();
}
@Override
public void write(DataWriter out) throws IOException {
for (int i = 0; i < textureVecsTexels.length; i++) {
for (int j = 0; j < textureVecsTexels[i].length; j++) {
out.writeFloat(textureVecsTexels[i][j]);
}
}
for (int i = 0; i < lightmapVecsLuxels.length; i++) {
for (int j = 0; j < lightmapVecsLuxels[i].length; j++) {
out.writeFloat(lightmapVecsLuxels[i][j]);
}
}
out.writeInt(EnumConverter.toInteger(flags));
out.writeInt(texdata);
}
}