arx-convert
Version:
Converts various Arx Fatalis formats to JSON or YAML and back
38 lines • 1.35 kB
JavaScript
import { BinaryIO } from '../common/BinaryIO.js';
export class TextureContainer {
static readFrom(binary) {
const id = binary.readInt32();
binary.readInt32(); // temp - always 0
const filename = TextureContainer.toRelativePath(binary.readString(256));
return {
id,
filename,
};
}
static accumulateFrom(textureContainer) {
const buffer = new ArrayBuffer(TextureContainer.sizeOf());
const binary = new BinaryIO(buffer);
binary.writeInt32(textureContainer.id);
binary.writeInt32(0); // temp
binary.writeString(TextureContainer.toAbsolutePath(textureContainer.filename), 256);
return buffer;
}
/**
* from: GRAPH\\OBJ3D\\TEXTURES\\[STONE]_HUMAN_GROUND_WET.BMP
* to: [stone]_human_ground_wet.bmp
*/
static toRelativePath(filename) {
return filename.toLowerCase().replace('graph\\obj3d\\textures\\', '');
}
/**
* from: [stone]_human_ground_wet.bmp
* to: graph\\obj3d\\textures\\[stone]_human_ground_wet.bmp
*/
static toAbsolutePath(filename) {
return 'graph\\obj3d\\textures\\' + filename.toLowerCase();
}
static sizeOf() {
return BinaryIO.sizeOfInt32Array(2) + BinaryIO.sizeOfString(256);
}
}
//# sourceMappingURL=TextureContainer.js.map