rw-parser
Version:
Parses RenderWare DFF and TXD files into usable format!
154 lines (153 loc) • 3.48 kB
TypeScript
import { RwFile } from '../RwFile';
export interface RwDff {
version: string;
versionNumber: number;
geometryList: RwGeometryList | null;
frameList: RwFrameList | null;
atomics: number[];
dummies: string[];
animNodes: RwAnimNode[];
}
export interface RwClump {
atomicCount: number;
lightCount?: number;
cameraCount?: number;
}
export interface RwAnimNode {
boneId: number;
bonesCount: number;
bones: RwBone[];
}
export interface RwBone {
boneId: number;
boneIndex: number;
flags: number;
}
export interface RwFrame {
rotationMatrix: RwMatrix3;
coordinatesOffset: RwVector3;
parentFrame: number;
}
export interface RwFrameList {
frameCount: number;
frames: RwFrame[];
}
export interface RwTexture {
textureFiltering: number;
uAddressing: number;
vAddressing: number;
usesMipLevels: boolean;
textureName: string;
}
export interface RwMaterial {
color: RwColor;
isTextured: boolean;
ambient?: number;
specular?: number;
diffuse?: number;
texture?: RwTexture;
}
export interface RwMaterialList {
materialInstanceCount: number;
materialData: RwMaterial[];
}
export interface RwGeometry {
vertexColorInformation: RwColor[];
textureCoordinatesCount: number;
textureMappingInformation: RwTextureCoordinate[][];
hasVertices: boolean;
hasNormals: boolean;
triangleInformation: RwTriangle[];
vertexInformation: RwVector3[];
normalInformation: RwVector3[];
boundingSphere?: RwSphere;
materialList: RwMaterialList;
binMesh: RwBinMesh;
skin?: RwSkin;
}
export interface RwGeometryList {
geometricObjectCount: number;
geometries: RwGeometry[];
}
export interface RwAtomic {
frameIndex: number;
geometryIndex: number;
flags: number;
}
export interface RwBinMesh {
meshCount: number;
meshes: RwMesh[];
}
export interface RwSkin {
boneCount: number;
usedBoneCount: number;
maxWeightsPerVertex: number;
boneVertexIndices: number[][];
vertexWeights: number[][];
inverseBoneMatrices: RwMatrix4[];
}
export interface RwMesh {
materialIndex: number;
indexCount: number;
indices: number[];
}
export interface RwMatrix3 {
right: RwVector3;
up: RwVector3;
at: RwVector3;
}
export interface RwMatrix4 {
right: RwVector4;
up: RwVector4;
at: RwVector4;
transform: RwVector4;
}
export interface RwColor {
r: number;
g: number;
b: number;
a: number;
}
export interface RwVector2 {
x: number;
y: number;
}
export interface RwVector3 {
x: number;
y: number;
z: number;
}
export interface RwVector4 {
x: number;
y: number;
z: number;
t: number;
}
export interface RwTextureCoordinate {
u: number;
v: number;
}
export interface RwTriangle {
vector: RwVector3;
materialId: number;
}
export interface RwSphere {
vector: RwVector3;
radius: number;
}
export declare class DffParser extends RwFile {
constructor(buffer: Buffer);
parse(): RwDff;
readClump(): RwClump;
readFrameList(): RwFrameList;
readGeometryList(): RwGeometryList;
readGeometry(versionNumber: number): RwGeometry;
readBinMesh(): RwBinMesh;
readSkin(vertexCount: number): RwSkin;
readAnimNode(): RwAnimNode;
readMesh(): RwMesh;
readMaterialList(): RwMaterialList;
readMaterial(): RwMaterial;
readTexture(): RwTexture;
readAtomic(): RwAtomic;
}