Release Healer Man 0.1.9
This commit is contained in:
1 parent
c245a199b6
commit
d060296ade
74 files changed
+5901
-334
No files matched your search
@@ -3,6 +3,19 @@ import path from "node:path";
|
||||
import { describe, expect, it } from "vitest";
|
||||
import type { AvatarManifest } from "./characterManifest";
|
||||
|
||||
interface RunewakerGlbDocument {
|
||||
readonly animations?: readonly { readonly name?: string }[];
|
||||
readonly nodes?: readonly { readonly name?: string }[];
|
||||
}
|
||||
|
||||
function readGlbDocument(glb: Buffer): RunewakerGlbDocument {
|
||||
expect(glb.readUInt32LE(0)).toBe(0x46546c67);
|
||||
const jsonLength = glb.readUInt32LE(12);
|
||||
return JSON.parse(
|
||||
glb.subarray(20, 20 + jsonLength).toString("utf8").trimEnd(),
|
||||
) as RunewakerGlbDocument;
|
||||
}
|
||||
|
||||
const manifestFile = path.resolve("public/assets/characters/runewaker-v1/manifest.json");
|
||||
|
||||
describe("runewaker-v1 playable avatar pack", () => {
|
||||
@@ -32,6 +45,17 @@ describe("runewaker-v1 playable avatar pack", () => {
|
||||
});
|
||||
const model = path.resolve("public", entry.model.replace(/^\//, ""));
|
||||
expect((await stat(model)).size).toBe(entry.bytes);
|
||||
const document = readGlbDocument(await readFile(model));
|
||||
const animationNames = new Set(
|
||||
document.animations?.map((animation) => animation.name ?? "") ?? [],
|
||||
);
|
||||
for (const animationName of ["Idle - 1h_idle", "Idle - 2h_idle", "Idle - bow_idle"]) {
|
||||
expect(animationNames.has(animationName), `${entry.model} ${animationName}`).toBe(true);
|
||||
}
|
||||
const nodeNames = new Set(document.nodes?.map((node) => node.name ?? "") ?? []);
|
||||
for (const nodeName of ["p_left_hand", "p_right_hand", "p_hand_shield"]) {
|
||||
expect(nodeNames.has(nodeName), `${entry.model} ${nodeName}`).toBe(true);
|
||||
}
|
||||
}
|
||||
});
|
||||
});
|
||||
Reference in new issue
Block a user