unreal.js
Version:
A pak reader for games like VALORANT & Fortnite written in Node.JS
46 lines (45 loc) • 2.01 kB
JavaScript
;
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;