UNPKG

unreal.js

Version:

A pak reader for games like VALORANT & Fortnite written in Node.JS

46 lines (45 loc) 2.01 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.FStaticMeshUVItem = void 0; const FPackedNormal_1 = require("../../../objects/rendercore/FPackedNormal"); const FMeshUVFloat_1 = require("./FMeshUVFloat"); const FMeshUVHalf_1 = require("./FMeshUVHalf"); class FStaticMeshUVItem { constructor(Ar = null, useHighPrecisionTangents = null, numStaticUVSets = null, useStaticFloatUVs = null) { if (Ar != null) { // Serialize Tangents this.normal = FStaticMeshUVItem.serializeTangents(Ar, useHighPrecisionTangents); // Serialize Texcoords this.uv = FStaticMeshUVItem.serializeTexcoords(Ar, numStaticUVSets, useStaticFloatUVs); } } static from(normal, uv) { const item = new FStaticMeshUVItem(); item.normal = normal; item.uv = uv; return item; } static serializeTangents(Ar, useHighPrecisionTangents) { if (!useHighPrecisionTangents) { return [new FPackedNormal_1.FPackedNormal(Ar), FPackedNormal_1.FPackedNormal.fromNumber(0), new FPackedNormal_1.FPackedNormal(Ar)]; // TangentX and TangentZ } else { const normal = new FPackedNormal_1.FPackedRGBA16N(Ar); const tangent = new FPackedNormal_1.FPackedRGBA16N(Ar); return [normal.toPackedNormal(), FPackedNormal_1.FPackedNormal.fromNumber(0), tangent.toPackedNormal()]; } } static serializeTexcoords(Ar, numStaticUVSets, useStaticFloatUVs) { const array = new Array(numStaticUVSets); if (useStaticFloatUVs) { for (let i = 0; i < numStaticUVSets; ++i) array[i] = new FMeshUVFloat_1.FMeshUVFloat(Ar); } else { for (let i = 0; i < numStaticUVSets; ++i) array[i] = new FMeshUVHalf_1.FMeshUVHalf(Ar).toMeshUVFloat(); } return array; } } exports.FStaticMeshUVItem = FStaticMeshUVItem;