sc4
Version:
A command line utility for automating SimCity 4 modding tasks & modifying savegames
106 lines (105 loc) • 2.62 kB
TypeScript
import Stream from './stream.js';
import { kFileType } from './symbols.js';
import WriteBuffer from './write-buffer.js';
export default class S3D {
static [kFileType]: 1523640343;
version: string;
vertexGroups: VertexGroup[];
indexGroups: number[][];
primGroups: PrimGroup[][];
materialGroups: MaterialGroup[];
animations: AnimationSection;
properties: PropGroup[];
regpGroups: RegpGroup[];
parse(rs: Stream): this;
toBuffer(): Uint8Array<ArrayBufferLike>;
}
declare class VertexGroup {
flags: number;
format: number;
vertices: Vertex[];
parse(rs: Stream): this;
write(ws: WriteBuffer): void;
}
declare class Vertex {
x: number;
y: number;
z: number;
u: number;
v: number;
parse(rs: Stream): this;
write(ws: WriteBuffer): void;
}
declare class PrimGroup {
type: number;
first: number;
numIndex: number;
parse(rs: Stream): this;
write(ws: WriteBuffer): void;
}
declare class MaterialGroup {
flags: number;
alphaFunc: number;
depthFunc: number;
sourceBlend: number;
destBlend: number;
alphaThreshold: number;
matClass: number;
reserved: number;
textures: MaterialGroupTexture[];
parse(rs: Stream, version: [number, number]): this;
write(ws: WriteBuffer): void;
}
declare class MaterialGroupTexture {
minor: number;
id: number;
wrapU: number;
wrapV: number;
magFilter: number;
minFilter: number;
animRate: number;
animMode: number;
name: string;
parse(rs: Stream, version: [number, number]): this;
write(ws: WriteBuffer): void;
}
declare class AnimationSection {
numFrames: number;
frameRate: number;
playMode: number;
flags: number;
displacement: number;
groups: AnimationGroup[];
parse(rs: Stream): this;
write(ws: WriteBuffer): void;
[Symbol.iterator](): Generator<AnimationGroup, void, unknown>;
map(...args: Parameters<Array<AnimationGroup>['map']>): unknown[];
}
type BlockIndex = {
vertex: number;
index: number;
prim: number;
material: number;
};
declare class AnimationGroup {
flags: number;
name: string;
blocks: BlockIndex[];
parse(rs: Stream, section: AnimationSection): this;
write(ws: WriteBuffer): void;
}
declare class PropGroup {
meshIndex: number;
frameIndex: number;
assignmentType: string;
assignedValue: string;
parse(rs: Stream): this;
write(ws: WriteBuffer): void;
}
declare class RegpGroup {
name: string;
groups: any;
parse(rs: Stream): this;
write(ws: WriteBuffer): void;
}
export {};