From 93e405c3704c96ac49ff45f19e8cc9c2e07fcbf0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tr=C3=A8sAbhi?= <43380238+tresabhi@users.noreply.github.com> Date: Sun, 4 Feb 2024 17:55:48 -0600 Subject: [PATCH] feat: read stream --- src/core/blitz/extractArmor.ts | 8 ++++---- src/core/blitz/extractModel.ts | 8 ++++---- src/core/blitzkrieg/readTexture.ts | 20 ++++++++++---------- src/core/streams/bkon.ts | 4 ++-- src/core/streams/buffer.ts | 2 +- src/core/streams/dds.ts | 4 ++-- src/core/streams/pvr.ts | 4 ++-- src/core/streams/sc2.ts | 4 ++-- src/core/streams/scg.ts | 10 +++++----- src/core/streams/scpg.ts | 4 ++-- src/core/streams/windows.ts | 4 ++-- 11 files changed, 36 insertions(+), 36 deletions(-) diff --git a/src/core/blitz/extractArmor.ts b/src/core/blitz/extractArmor.ts index 2e1d7a659..f0b8072d4 100644 --- a/src/core/blitz/extractArmor.ts +++ b/src/core/blitz/extractArmor.ts @@ -1,7 +1,7 @@ import { Accessor, Document, Node, Scene } from '@gltf-transform/core'; import { times } from 'lodash'; -import { Hierarchy, Sc2Stream } from '../streams/sc2'; -import { ScgStream } from '../streams/scg'; +import { Hierarchy, Sc2ReadStream } from '../streams/sc2'; +import { ScgReadStream } from '../streams/scg'; import { VertexAttribute } from '../streams/scpg'; import { vertexAttributeGLTFName, @@ -16,8 +16,8 @@ Buffer.prototype.toJSON = function () { export async function extractArmor(data: string, fileName: string) { const sc2Path = `${data}/3d/Tanks/CollisionMeshes/${fileName}.sc2.dvpl`; const scgPath = `${data}/3d/Tanks/CollisionMeshes/${fileName}.scg.dvpl`; - const sc2 = new Sc2Stream(await readDVPLFile(sc2Path)).sc2(); - const scg = new ScgStream(await readDVPLFile(scgPath)).scg(); + const sc2 = new Sc2ReadStream(await readDVPLFile(sc2Path)).sc2(); + const scg = new ScgReadStream(await readDVPLFile(scgPath)).scg(); const document = new Document(); const scene = document.createScene(); const buffer = document.createBuffer(); diff --git a/src/core/blitz/extractModel.ts b/src/core/blitz/extractModel.ts index e06c7f97a..fa00d9387 100644 --- a/src/core/blitz/extractModel.ts +++ b/src/core/blitz/extractModel.ts @@ -9,8 +9,8 @@ import { Vector4Tuple, } from 'three'; import { TextureMutation, readTexture } from '../blitzkrieg/readTexture'; -import { Hierarchy, Sc2Stream, Textures } from '../streams/sc2'; -import { ScgStream, vertexAttributeVectorSizes } from '../streams/scg'; +import { Hierarchy, Sc2ReadStream, Textures } from '../streams/sc2'; +import { ScgReadStream, vertexAttributeVectorSizes } from '../streams/scg'; import { VertexAttribute } from '../streams/scpg'; import { readDVPLFile } from './readDVPLFile'; @@ -48,8 +48,8 @@ export async function extractModel( ) { const sc2Path = `${data}/3d/${path}.sc2.dvpl`; const scgPath = `${data}/3d/${path}.scg.dvpl`; - const sc2 = new Sc2Stream(await readDVPLFile(sc2Path)).sc2(); - const scg = new ScgStream(await readDVPLFile(scgPath)).scg(); + const sc2 = new Sc2ReadStream(await readDVPLFile(sc2Path)).sc2(); + const scg = new ScgReadStream(await readDVPLFile(scgPath)).scg(); const document = new Document(); const scene = document.createScene(); const buffer = document.createBuffer(); diff --git a/src/core/blitzkrieg/readTexture.ts b/src/core/blitzkrieg/readTexture.ts index 1adbc880c..fd5620b20 100644 --- a/src/core/blitzkrieg/readTexture.ts +++ b/src/core/blitzkrieg/readTexture.ts @@ -1,9 +1,9 @@ -import { existsSync } from "fs"; -import sharp from "sharp"; -import { Vector3Tuple } from "three"; -import { readDVPLFile } from "../blitz/readDVPLFile"; -import { DdsStream } from "../streams/dds"; -import { PvrStream } from "../streams/pvr"; +import { existsSync } from 'fs'; +import sharp from 'sharp'; +import { Vector3Tuple } from 'three'; +import { readDVPLFile } from '../blitz/readDVPLFile'; +import { DdsReadStream } from '../streams/dds'; +import { PvrReadStream } from '../streams/pvr'; export enum TextureMutation { Normal, @@ -28,16 +28,16 @@ type ReadTextureOptions = }; export async function readTexture(path: string, options?: ReadTextureOptions) { - const ddsTexturePath = path.replace(".tex", ".dx11.dds.dvpl"); + const ddsTexturePath = path.replace('.tex', '.dx11.dds.dvpl'); const isDds = existsSync(ddsTexturePath); const resolvedTexturePath = isDds ? ddsTexturePath - : ddsTexturePath.replace(".dds", ".pvr"); + : ddsTexturePath.replace('.dds', '.pvr'); const decompressedDvpl = await readDVPLFile(resolvedTexturePath); const raw = isDds - ? await new DdsStream(decompressedDvpl).dds() - : new PvrStream(decompressedDvpl).pvr(); + ? await new DdsReadStream(decompressedDvpl).dds() + : new PvrReadStream(decompressedDvpl).pvr(); const channels = 4 * raw.width * raw.height; switch (options?.mutation) { diff --git a/src/core/streams/bkon.ts b/src/core/streams/bkon.ts index 9b4b14d18..51914c174 100644 --- a/src/core/streams/bkon.ts +++ b/src/core/streams/bkon.ts @@ -1,5 +1,5 @@ import { times } from 'lodash'; -import { BufferStream } from './buffer'; +import { ReadStream } from './buffer'; enum ValueType { Null, @@ -29,7 +29,7 @@ type Value = | Value[] | { [key: string]: Value }; -export class BkonStream extends BufferStream { +export class BkonReadStream extends ReadStream { bkon() { this.magic(); const header = this.header(); diff --git a/src/core/streams/buffer.ts b/src/core/streams/buffer.ts index 507878ab7..beba425b5 100644 --- a/src/core/streams/buffer.ts +++ b/src/core/streams/buffer.ts @@ -1,4 +1,4 @@ -export class BufferStream { +export class ReadStream { public index = 0; constructor(public buffer: Buffer) {} diff --git a/src/core/streams/dds.ts b/src/core/streams/dds.ts index 9855b8bd2..db1b7d7e5 100644 --- a/src/core/streams/dds.ts +++ b/src/core/streams/dds.ts @@ -1,6 +1,6 @@ import { times } from 'lodash'; import { Vector3Tuple, Vector4Tuple } from 'three'; -import { WindowsStream } from './windows'; +import { WindowsReadStream } from './windows'; enum DxgiFormat { UNKNOWN = 0, @@ -171,7 +171,7 @@ enum DdsCaps2 { VOLUME = 0x200000, } -export class DdsStream extends WindowsStream { +export class DdsReadStream extends WindowsReadStream { async dds() { this.magicNumber(); const header = this.header(); diff --git a/src/core/streams/pvr.ts b/src/core/streams/pvr.ts index b9f13f2a5..4009abf3b 100644 --- a/src/core/streams/pvr.ts +++ b/src/core/streams/pvr.ts @@ -1,5 +1,5 @@ import { clamp, isEqual, times } from 'lodash'; -import { BufferStream } from './buffer'; +import { ReadStream } from './buffer'; export enum PvrFlags { NoFlag = 0, @@ -91,7 +91,7 @@ enum ResolvedBitRatePixelFormat { R5G6B5A0, } -export class PvrStream extends BufferStream { +export class PvrReadStream extends ReadStream { pvr() { const header = this.header(); this.metadata(); diff --git a/src/core/streams/sc2.ts b/src/core/streams/sc2.ts index b54fb5b9a..d802fd6cc 100644 --- a/src/core/streams/sc2.ts +++ b/src/core/streams/sc2.ts @@ -1,5 +1,5 @@ import { Vector3Tuple, Vector4Tuple } from 'three'; -import { ScpgStream } from './scpg'; +import { ScpgReadStream } from './scpg'; export interface SC2 { '#dataNodes': DataNode[]; @@ -288,7 +288,7 @@ interface SceneComponents { count: number; } -export class Sc2Stream extends ScpgStream { +export class Sc2ReadStream extends ScpgReadStream { header() { return { name: this.ascii(4), diff --git a/src/core/streams/scg.ts b/src/core/streams/scg.ts index bede51916..26c4b946e 100644 --- a/src/core/streams/scg.ts +++ b/src/core/streams/scg.ts @@ -1,4 +1,4 @@ -import { ScpgStream, VertexAttribute } from './scpg'; +import { ScpgReadStream, VertexAttribute } from './scpg'; interface PolygonGroupRaw { '##name': 'PolygonGroup'; @@ -50,7 +50,7 @@ export const vertexAttributeVectorSizes = { [VertexAttribute.JOINTWEIGHT]: 4, } as const; -export class ScgStream extends ScpgStream { +export class ScgReadStream extends ScpgReadStream { header() { return { name: this.ascii(4), @@ -71,7 +71,7 @@ export class ScgStream extends ScpgStream { } polygonGroupsRaw.forEach((polygonGroupRaw) => { - const indicesStream = new ScpgStream(polygonGroupRaw.indices); + const indicesStream = new ScpgReadStream(polygonGroupRaw.indices); const indices: number[] = []; for (let index = 0; index < polygonGroupRaw.indexCount; index++) { @@ -82,9 +82,9 @@ export class ScgStream extends ScpgStream { ); } - const verticesStream = new ScpgStream(polygonGroupRaw.vertices); + const verticesStream = new ScpgReadStream(polygonGroupRaw.vertices); const vertices: BlitzkriegVertex[] = []; - const { format, stride } = ScgStream.parseVertexFormat( + const { format, stride } = ScgReadStream.parseVertexFormat( polygonGroupRaw.vertexFormat, ); const strideBasedSize = stride * polygonGroupRaw.vertexCount; diff --git a/src/core/streams/scpg.ts b/src/core/streams/scpg.ts index fe8f7e15f..48ccf01e0 100644 --- a/src/core/streams/scpg.ts +++ b/src/core/streams/scpg.ts @@ -1,5 +1,5 @@ import { times } from 'lodash'; -import { BufferStream } from './buffer'; +import { ReadStream } from './buffer'; enum KAType { NONE = 0, @@ -55,7 +55,7 @@ export enum VertexAttribute { CUBETEXCOORD3 = 19, } -export class ScpgStream extends BufferStream { +export class ScpgReadStream extends ReadStream { vectorN(size: number) { return times(size, () => this.float32()); } diff --git a/src/core/streams/windows.ts b/src/core/streams/windows.ts index 4cd0de709..7d0cb056d 100644 --- a/src/core/streams/windows.ts +++ b/src/core/streams/windows.ts @@ -1,6 +1,6 @@ -import { BufferStream } from './buffer'; +import { ReadStream } from './buffer'; -export class WindowsStream extends BufferStream { +export class WindowsReadStream extends ReadStream { dword() { return this.uint32(); }