/*
** 2012 Februar 20
**
** 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.bsplib.vector.Vector3f;
import info.ata4.io.DataReader;
import info.ata4.io.DataWriter;
import static info.ata4.io.Seekable.Origin.CURRENT;
import info.ata4.util.EnumConverter;
import java.io.IOException;
/**
* DStaticProp V9 variant for Dear Esther
*
* @author Nico Bergemann <barracuda415 at yahoo.de>
*/
public class DStaticPropV9DE extends DStaticPropV8 {
@Override
public int getSize() {
return super.getSize() + 8; // 76
}
@Override
public void read(DataReader in) throws IOException {
origin = Vector3f.read(in);
angles = Vector3f.read(in);
propType = in.readUnsignedShort();
firstLeaf = in.readUnsignedShort();
leafCount = in.readUnsignedShort();
solid = in.readUnsignedByte();
flags = EnumConverter.fromInteger(StaticPropFlag.class, in.readUnsignedByte());
in.seek(4, CURRENT);
skin = in.readInt();
fademin = in.readFloat();
fademax = in.readFloat();
// lightingOrigin = lio.readVector3f();
in.seek(12, CURRENT); // invalid lighting origin vector?
forcedFadeScale = in.readFloat();
minCPULevel = in.readByte();
maxCPULevel = in.readByte();
minGPULevel = in.readByte();
maxGPULevel = in.readByte();
in.seek(1, CURRENT);
diffuseModulation = new Color32(in.readInt());
in.seek(3, CURRENT);
}
@Override
public boolean usesLightingOrigin() {
// workaround for the invalid lighting origin vector
return false;
}
@Override
public void write(DataWriter out) throws IOException {
throw new UnsupportedOperationException();
}
}