diff --git a/.gitignore b/.gitignore index 265ef32..44c00ec 100644 --- a/.gitignore +++ b/.gitignore @@ -5,9 +5,11 @@ node_modules/ build/ # Downloaded data files -data/* +# Ignore all generated/cached assets under data +data/** +# Keep only the local background image and optional CSVs tracked +!data/modelviewer-background.png !data/*.csv -!data/*.png # Configuration config.json diff --git a/src/tools/fetchdata.ts b/src/tools/fetchdata.ts index 7ff74d6..33a9443 100644 --- a/src/tools/fetchdata.ts +++ b/src/tools/fetchdata.ts @@ -389,8 +389,9 @@ async function parseModels(): Promise { const texturesOffset = buffer.readUInt32LE(60); const uncompressedSize = buffer.readUInt32LE(112); - const compressedData = buffer.slice(116); - const data = Buffer.from(pako.inflate(compressedData)); + const compressedData = buffer.slice(116); + const inflated = pako.inflate(new Uint8Array(compressedData)); + const data = Buffer.from(inflated); if (data.length !== uncompressedSize) { throw `Unexpected data size ${data.length}, expected ${uncompressedSize}`; } diff --git a/static/character.hbs b/static/character.hbs index 6d3cad9..81365d1 100644 --- a/static/character.hbs +++ b/static/character.hbs @@ -165,7 +165,9 @@ } $("#cb-hide-transmogs").change(() => { const hide = $("#cb-hide-transmogs").prop("checked"); - const items = hide ? charData.characterModelItems : charData.characterModelTransmogs; + const items = hide || !Array.isArray(charData.characterModelTransmogs) + ? charData.characterModelItems + : charData.characterModelTransmogs; for (const slot of (items.map((item) => item[0]))) { clearSlots([slot]); } @@ -194,8 +196,8 @@ function setSlotVisible(slot, visible) { if (visible) { - const transmogged = !$("#cb-hide-transmogs").prop("checked"); - const items = transmogged ? charData.characterModelTransmogs : charData.characterModelItems; + const useTransmog = !$("#cb-hide-transmogs").prop("checked") && Array.isArray(charData.characterModelTransmogs); + const items = useTransmog ? charData.characterModelTransmogs : charData.characterModelItems; const item = items.find(([sl, appearance]) => sl === slot); if (item !== undefined) { if (item[1] === -1) { @@ -408,9 +410,9 @@ const characterModel = { type: ZamModelViewer.WOW, - contentPath: "{{ contentPath }}", + contentPath: "{{ contentPath }}", container: $model, - hd: true, + hd: false, aspect: $model.outerWidth() / $model.outerHeight(), charCustomization: { race: charData.race,