#!/usr/bin/env bash
# Game-weight pack of an Astra vehicle: <slug>.glb (raw, kept as <slug>-raw.glb) -> textures capped 1024 / ORM 512 ->
# KTX2 ETC1S + Draco (FGE pack-glb recipe). usage: tools/vehicles/pack.sh <job_dir>   -> <job>/<slug>.glb is the packed file
set -euo pipefail
J=$(readlink -f "$1"); ROOT=$(cd "$(dirname "$0")/../.." && pwd)
S=$(python3 -c "import json;print(json.load(open('$J/job.json'))['slug'])")
[ -f "$J/$S-raw.glb" ] || cp "$J/$S.glb" "$J/$S-raw.glb"
T=$(mktemp -d /tmp/veh-pack-XXXX)
node "$ROOT/tools/pack/pack_asset.mjs" "$J/$S-raw.glb" "$T/$S.glb" --max "${VEH_MAX:-1024}" --orm "${VEH_ORM:-512}" --no-draco >/dev/null
node "$ROOT/tools/pack/pack-glb.mjs" "$T" --ktx2 --cache "$T/cache" --report "$T/report.json" >/dev/null  # cache inside the temp dir: never in the repo (it gets rsynced to gex44)
cp "$T/$S.glb" "$J/$S.glb"; cp "$T/report.json" "$J/pack-report.json"
if [ -f "$J/$S-damage.glb" ] || [ -f "$J/$S-damage-raw.glb" ]; then  # tank-damage/v1: damaged twins, scars, wreck (512 px, ORM 256)
  [ -f "$J/$S-damage-raw.glb" ] || cp "$J/$S-damage.glb" "$J/$S-damage-raw.glb"
  D=$(mktemp -d /tmp/veh-pack-XXXX)
  node "$ROOT/tools/pack/pack_asset.mjs" "$J/$S-damage-raw.glb" "$D/$S-damage.glb" --max 512 --orm 256 --no-draco >/dev/null
  node "$ROOT/tools/pack/pack-glb.mjs" "$D" --ktx2 --cache "$D/cache" >/dev/null
  cp "$D/$S-damage.glb" "$J/$S-damage.glb"; find "$D" -delete
  printf 'packed %s damage: raw %s -> %s bytes\n' "$S" "$(stat -c %s "$J/$S-damage-raw.glb")" "$(stat -c %s "$J/$S-damage.glb")"
fi
find "$T" -delete
printf 'packed %s: raw %s -> %s bytes\n' "$S" "$(stat -c %s "$J/$S-raw.glb")" "$(stat -c %s "$J/$S.glb")"
