diff --git a/config/models.mjs b/config/models.mjs
deleted file mode 100644
index 68bb7bb..0000000
--- a/config/models.mjs
+++ /dev/null
@@ -1,734 +0,0 @@
-import { globby } from "globby";
-import orderBy from "lodash.orderby";
-
-const models = [
- "lmale",
- "mmale",
- "hmale",
- "lfemale",
- "mfemale",
- "hfemale",
- "lbioderm",
- "mbioderm",
- "hbioderm",
-];
-
-export async function getSkinConfig() {
- const defaultSkins = await Promise.all(
- models.map((name) => globby(`./public/textures/*.${name}.png`))
- );
-
- return {
- defaultSkins: models.reduce((skins, name, i) => {
- skins[name] = orderBy(
- defaultSkins[i].map((name) =>
- name.replace(/(^.*\/|\.[lmh](male|female|bioderm)\.png$)/g, "")
- ),
- [(name) => name.toLowerCase()],
- ["asc"]
- );
- return skins;
- }, {}),
- modelDefaults: {
- // Players
- lmale: "Blood Eagle",
- mmale: "Blood Eagle",
- hmale: "Blood Eagle",
- lfemale: "Blood Eagle",
- mfemale: "Blood Eagle",
- hfemale: "Blood Eagle",
- lbioderm: "Storm",
- mbioderm: "Storm",
- hbioderm: "Storm",
- // Weapons
- chaingun: "weapon_chaingun",
- disc: "weapon_disc",
- elf: "weapon_elf",
- energy: "weapon_energy",
- grenade_launcher: "weapon_grenade_launcher",
- mine: "mine",
- missile: "weapon_missile",
- mortar: "weapon_mortar",
- plasmathrower: "weapon_plasmathrower",
- repair: "weapon_repair",
- shocklance: "weapon_shocklance",
- sniper: "weapon_sniper",
- targeting: "weapon_targeting",
- // Vehicles
- vehicle_land_mpbbase: "vehicle_land_mpbbase",
- vehicle_grav_scout: "vehicle_grav_scout",
- vehicle_grav_tank: "vehicle_grav_tank",
- turret_assaulttank_mortar: "turret_assaulttank_mortar",
- vehicle_air_scout: "vehicle_air_scout",
- vehicle_air_bomber: "vehicle_air_bomber",
- vehicle_air_hapc: "vehicle_air_hapc",
- },
- animationLabels: {
- Forward: "Run Forward",
- Back: "Run Backward",
- Back0: "Run Backward",
- Root: "Idle",
- Root2: "Run Backward",
- Root3: "Idle",
- Idlepda: "Idle (PDA)",
- PDA: "Idle (PDA)",
- Root1: "Idle (PDA)",
- Jump: "Jump",
- Jump0: "Jump (Alternate)",
- Jump1: "Jump (Alternate)",
- Jump2: "Jump (Alternate)",
- Jump3: "Jump (Alternate)",
- Jet: "Jet",
- Fall: "Fall",
- Land: "Land",
- Land1: "Land (Alternate)",
- ski: "Ski",
- Side: "Strafe Left",
- Celwave: "Wave",
- Celbow: "Bow",
- Celdisco: "Dance",
- Celdance: "Dance",
- Celflex: "Flex",
- Celflex1: "Flex",
- Celrocky: "Awesome",
- Celjump: "Awesome",
- Celsalute: "Salute",
- celTaunt: "Too Bad",
- CelebrationGora: "Wave Arms",
- Celgora: "Wave Arms",
- CelebrationJump: "Bull Charge",
- Tauntbull: "Bull Charge",
- CelebrationJump0: "Celebrate",
- CelebrationJump4: "The Greatest",
- CelebrationRoar: "Roar",
- Celroar: "Roar",
- Celraor: "Roar",
- Celflex2: "Flex",
- celyeah: "Yeah",
- celtaunt: "Too Bad",
- Tauntbutt: "Butt",
- Tauntkiss: "Blow Kiss",
- Tauntbest: "The Greatest",
- Taunimp: "Move!",
- Tauntimp: "Move!",
- Sitting: "Sit",
- Scoutroot: "Gravcycle",
- Recoilde: "Recoil",
- Light_recoil: "Recoil",
- Dieforward: "Death (Fall Forward)",
- DeathForward: "Death (Fall Forward)",
- Dieslump: "Death (Slump)",
- DeathSlump: "Death (Slump)",
- Diespin: "Death (Spin)",
- DeathSpin: "Death (Spin)",
- diechest: "Death (Hold Chest)",
- Diechest: "Death (Hold Chest)",
- DeathChest: "Death (Hold Chest)",
- Dieback: "Death (Hold Back)",
- DeathBack: "Death (Hold Back)",
- Diehead: "Death (Hold Head)",
- DeathHead: "Death (Hold Head)",
- Dieknees: "Death (On Knees)",
- DeathKnees: "Death (On Knees)",
- Dieleglf: "Death (Left Leg Injury)",
- Dieleglft: "Death (Left Leg Injury)",
- DeathLegLeft: "Death (Left Leg Injury)",
- Dielegrt: "Death (Right Leg Injury)",
- Dielegtrt: "Death (Right Leg Injury)",
- DeathLegRight: "Death (Right Leg Injury)",
- Dielegrt0: "Death (Right Leg Injury)",
- Diesidelf: "Death (Left Side)",
- DeathSideLeft: "Death (Left Side)",
- Diesidert: "Death (Right Side)",
- DeathSideRight: "Death (Right Side)",
- Diesidert0: "Death (Right Side Alternate)",
- },
- cameraOverrides: {
- chaingun: { target: "0m 0m 0m", fov: "12deg" },
- plasmathrower: { target: "0.002m -0.001m 0m", fov: "12deg" },
- energy: { fov: "31deg", orbit: "135deg 70deg 105%" },
- hmale: { fov: "24deg" },
- hfemale: { fov: "24deg" },
- hbioderm: { fov: "24deg" },
- vehicle_grav_scout: { orbit: "290deg 60deg 130%" },
- vehicle_grav_tank: { orbit: "290deg 60deg 130%" },
- turret_assaulttank_mortar: { orbit: "290deg 60deg 130%" },
- vehicle_land_mpbbase: { orbit: "290deg 60deg 130%" },
- vehicle_air_scout: { orbit: "290deg 60deg 130%" },
- vehicle_air_bomber: { orbit: "290deg 60deg 130%" },
- vehicle_air_hapc: { orbit: "290deg 60deg 130%" },
- },
- animationLabelOverrides: {
- mmale: {
- Back: "Strafe Left",
- },
- mfemale: {
- Dielegrt: "Death (Slump)",
- },
- lbioderm: {
- Root: "Gravcycle",
- },
- },
- materials: {
- lmale: [{ name: "base", label: "Warrior", fileSuffix: ".lmale" }],
- mmale: [{ name: "base", label: "Warrior", fileSuffix: ".mmale" }],
- hmale: [{ name: "base", label: "Warrior", fileSuffix: ".hmale" }],
- lfemale: [{ name: "base", label: "Warrior", fileSuffix: ".lfemale" }],
- mfemale: [{ name: "base", label: "Warrior", fileSuffix: ".mfemale" }],
- lbioderm: [{ name: "base", label: "Warrior", fileSuffix: ".lbioderm" }],
- mbioderm: [{ name: "base", label: "Warrior", fileSuffix: ".mbioderm" }],
- hbioderm: [{ name: "base", label: "Warrior", fileSuffix: ".hbioderm" }],
- disc: [
- { name: "weapon_disc", label: "Weapon" },
- {
- name: "dcase00",
- label: "Disc Case",
- size: [256, 256],
- baseColorFactor: [1, 1, 1, 0.7],
- emissiveFactor: [1, 1, 1],
- emissiveTexture: true,
- alphaMode: "BLEND",
- metallicFactor: 0,
- roughnessFactor: 1,
- frameCount: 6,
- frameTimings: [21, 1, 1, 1, 1, 1],
- optional: true,
- },
- ],
- chaingun: [{ label: "Chaingun", name: "weapon_chaingun" }],
- grenade_launcher: [
- { label: "Grenade Launcher", name: "weapon_grenade_launcher" },
- ],
- sniper: [
- { label: "Weapon", name: "weapon_sniper" },
- {
- label: "Green Light",
- name: "greenlight",
- hasDefault: false,
- optional: true,
- },
- {
- label: "Red Light",
- name: "lite_red",
- hasDefault: false,
- optional: true,
- },
- ],
- plasmathrower: [
- {
- label: "Rear & Barrel",
- name: "weapon_plasma10",
- file: "weapon_plasma1",
- },
- {
- label: "Top & Front",
- name: "weapon_plasma21",
- file: "weapon_plasma2",
- },
- {
- name: "weapon_plasma1",
- file: "weapon_plasma1",
- selectable: false,
- },
- {
- name: "weapon_plasma2",
- file: "weapon_plasma2",
- selectable: false,
- },
- ],
- energy: [
- {
- label: "Weapon",
- name: "blinn1",
- file: "weapon_energy",
- },
- ],
- shocklance: [
- { label: "Weapon", name: "weapon_shocklance", size: [512, 256] },
- {
- label: "Glow",
- name: "weapon_shocklance_glow_",
- file: "weapon_shocklance_glow ",
- emissiveFactor: [1, 1, 1],
- alphaMode: "MASK",
- alphaCutoff: 255,
- emissiveTexture: true,
- metallicFactor: 0,
- roughnessFactor: 1,
- size: [256, 128],
- optional: true,
- },
- ],
- elf: [
- { label: "Weapon", name: "weapon_elf", file: "weapon_elf" },
- {
- label: "Glow",
- name: "weapon_elf0",
- file: "weapon_elf",
- },
- ],
- missile: [{ label: "Weapon", name: "weapon_missile" }],
- mortar: [{ label: "Weapon", name: "weapon_mortar" }],
- repair: [{ label: "Weapon", name: "weapon_repair" }],
- targeting: [{ label: "Weapon", name: "weapon_targeting" }],
- mine: [
- {
- label: "Weapon",
- name: "mine",
- size: [512, 512],
- metallicFactor: 0,
- roughnessFactor: 1,
- },
- ],
- // Vehicles
- vehicle_air_scout: [
- {
- label: "Vehicle",
- name: "vehicle_air_scout0",
- file: "vehicle_air_scout",
- },
- {
- name: "Unassigned",
- hidden: true,
- hasDefault: false,
- },
- {
- name: "vehicle_air_scout",
- hidden: true,
- hasDefault: false,
- },
- {
- label: "Flare",
- name: "shrikeflare2",
- emissiveFactor: [0, 0, 0],
- alphaMode: "BLEND",
- emissiveTexture: true,
- metallicFactor: 0,
- roughnessFactor: 1,
- size: [256, 256],
- optional: true,
- },
- ],
- vehicle_air_bomber: [
- {
- label: "Cockpit & Thrusters",
- name: "vehicle_air_bomber10",
- file: "vehicle_air_bomber1",
- size: [256, 512],
- },
- {
- name: "Unassigned",
- hidden: true,
- hasDefault: false,
- },
- {
- label: "Rear",
- name: "vehicle_air_bomber2",
- size: [256, 512],
- },
- {
- label: "Wings",
- name: "vehicle_air_bomber31",
- file: "vehicle_air_bomber3",
- },
- {
- name: "vehicle_air_bomber1",
- size: [256, 512],
- selectable: false,
- },
- {
- name: "vehicle_air_bomber3",
- selectable: false,
- },
- ],
- vehicle_air_hapc: [
- {
- label: "Cockpit",
- name: "vehicle_air_bomber1",
- size: [256, 512],
- },
- {
- name: "Unassigned",
- hidden: true,
- hasDefault: false,
- },
- {
- label: "Wings",
- name: "vehicle_air_hpc2",
- },
- {
- label: "Seats",
- name: "vehicle_air_hpc1",
- },
- {
- label: "Thrusters",
- name: "vehicle_air_hpc30",
- file: "vehicle_air_hpc3",
- },
- {
- name: "vehicle_air_hpc3",
- selectable: false,
- },
- ],
- vehicle_grav_scout: [
- {
- label: "Vehicle",
- name: "Vehicle_grav_scout0",
- file: "Vehicle_grav_scout",
- size: [512, 256],
- },
- {
- name: "Unassigned",
- hidden: true,
- hasDefault: false,
- },
- {
- label: "Pipes",
- name: "Vehicle_grav_scout_pipes1",
- file: "Vehicle_grav_scout_pipes",
- metallicFactor: 0,
- roughnessFactor: 1,
- },
- {
- name: "Vehicle_grav_scout",
- hidden: true,
- hasDefault: false,
- },
- {
- label: "Side Thrusters",
- name: "Vehicle_grav_scout_pipes",
- file: "Vehicle_grav_scout_pipes",
- emissiveFactor: [1, 1, 1],
- alphaMode: "OPAQUE",
- metallicFactor: 0,
- roughnessFactor: 1,
- emissiveTexture: true,
- selectable: false,
- },
- {
- label: "Windshield",
- name: "Vehicle_grav_scout_windshield",
- file: "Vehicle_grav_scout_windshield",
- selectable: false,
- alphaMode: "BLEND",
- baseColorFactor: [1, 1, 1, 0.5],
- metallicFactor: 0,
- roughnessFactor: 1,
- size: [128, 128],
- optional: true,
- },
- {
- label: "Windshield Inner",
- name: "Vehicle_grav_scout_windshieldInner",
- file: "Vehicle_grav_scout_windshieldInner",
- selectable: false,
- alphaMode: "BLEND",
- baseColorFactor: [1, 1, 1, 0.5],
- metallicFactor: 0,
- roughnessFactor: 1,
- size: [128, 128],
- optional: true,
- },
- ],
- vehicle_grav_tank: [
- {
- label: "Center",
- name: "Vehicle_grav_tank_bodyMain",
- size: [256, 512],
- },
- {
- name: "Unassigned",
- hidden: true,
- hasDefault: false,
- },
- {
- label: "Sides",
- name: "vehicle_grav_tank_bodyside10",
- file: "vehicle_grav_tank_bodyside1",
- size: [256, 512],
- },
- {
- label: "Thrusters",
- name: "vehicle_grav_tank_bodyside21",
- file: "vehicle_grav_tank_bodyside2",
- },
- {
- name: "vehicle_grav_tank_bodyside2",
- selectable: false,
- },
- {
- name: "vehicle_grav_tank_bodyside1",
- selectable: false,
- },
- ],
- turret_assaulttank_mortar: [
- {
- label: "Turret",
- name: "turret_assaulttank_mortar",
- file: "turret_assaultTank",
- },
- ],
- vehicle_land_mpbbase: [
- {
- label: "Vehicle Front",
- name: "vehicle_land_mpb1",
- },
- {
- label: "Vehicle Back",
- name: "vehicle_land_mpb2",
- },
- {
- label: "Wheels",
- name: "Vehicle_Land_Assault_wheel",
- file: "Vehicle_Land_Assault_Wheel",
- size: [512, 256],
- optional: true,
- },
- ],
- },
- animations: {
- global: [
- "Forward",
- "Back",
- // "Head",
- "Jump",
- "Jet",
- "Fall",
- "Land",
- "ski",
- // "Lookde",
- // "Looknw",
- "Root",
- ],
- lmale: [
- "Idlepda",
- "Side",
- "Jump0",
- "Land1",
- "Recoilde",
- "Celwave",
- "Celdisco",
- "Celflex",
- "Celrocky",
- "Celsalute",
- "celTaunt",
- "Taunimp",
- "Tauntbest",
- "Dieback",
- "diechest",
- "Dieforward",
- "Diehead",
- "Dieknees",
- "Dieleglf",
- "Dielegrt",
- "Diesidelf",
- "Diesidert",
- "Dieslump",
- "Diespin",
- // "Headside",
- // "Lookms",
- // "Looksn",
- "Scoutroot",
- "Sitting",
- ],
- mmale: [
- "Back0",
- "Jump3",
- "Recoilde",
- "Celwave",
- "Celdance",
- "Celflex",
- "Celrocky",
- "Celsalute",
- "celtaunt",
- "Tauntbest",
- "Tauntimp",
- "Dieback",
- "Diechest",
- "Dieforward",
- "Diehead",
- "Dieknees",
- "Dieleglf",
- "Dielegrt",
- "Diesidelf",
- "Diesidert",
- "Diespin",
- // "Head1",
- // "Lookms",
- // "Looksn",
- // "Root2",
- "Sitting",
- ],
- hmale: [
- "Idlepda",
- "Jump1",
- "Side",
- "Recoilde",
- "Celwave",
- "Celdance",
- "Celflex",
- "Celjump",
- "Celsalute",
- "celtaunt",
- "Tauntbest",
- "Tauntimp",
- "Dieback",
- "Diechest",
- "Dieforward",
- "Diehead",
- "Dieknees",
- "Dielegrt",
- "Diesidelf",
- "Diesidert",
- "Diesidert0",
- "Dieslump",
- "Diespin",
- // "Headside",
- // "Lookms",
- ],
- lfemale: [
- "Idlepda",
- "Jump1",
- "Side",
- "Recoilde",
- "Celwave",
- "Celbow",
- "Celdance",
- "Celsalute",
- "Tauntbest",
- "Tauntbutt",
- "Tauntimp",
- "Tauntkiss",
- "Dieback",
- "Diechest",
- "Dieforward",
- "Diehead",
- "Dieknees",
- "Dieleglf",
- "Dielegrt",
- "Diesidelf",
- "Diesidert",
- "Dieslump",
- "Diespin",
- // "Head0",
- // "Lookms",
- // "Looksn",
- "Scoutroot",
- "Sitting",
- ],
- mfemale: [
- "Idlepda",
- "Jump1",
- "Side",
- "Recoilde",
- "Celwave",
- "Celbow",
- "Celdisco",
- "Celsalute",
- "Tauntbest",
- "Tauntbutt",
- "Tauntimp",
- "Tauntkiss",
- "Dieback",
- "Diechest",
- "Dieforward",
- "Diehead",
- "Dieknees",
- "Dieleglf",
- "Dielegrt",
- "Dielegrt0",
- "Diesidelf",
- "Diesidert",
- "Diespin",
- // "Headside",
- // "Looksn",
- // "Lookth",
- "Sitting",
- ],
- lbioderm: [
- "Root3",
- "PDA",
- "Jump2",
- "Side",
- "Light_recoil",
- "CelebrationGora",
- "CelebrationJump",
- "CelebrationJump0",
- "CelebrationJump4",
- "CelebrationRoar",
- "Salute",
- "Celflex2",
- "celyeah",
- "DeathBack",
- "DeathChest",
- "DeathForward",
- "DeathHead",
- "DeathKnees",
- "DeathLegLeft",
- "DeathLegRight",
- "DeathSideLeft",
- "DeathSideRight",
- "DeathSlump",
- "DeathSpin",
- // "Head1",
- // "Lookms",
- "Sitting",
- ],
- mbioderm: [
- "Root1",
- "Jump2",
- "Side",
- "Recoilde",
- "Salute",
- "Celflex1",
- "Celgora",
- "Celjump",
- "Celroar",
- "celyeah",
- "Tauntbest",
- "Tauntbull",
- "DeathBack",
- "DeathChest",
- "DeathHead",
- "DeathSideLeft",
- "DeathSpin",
- "Dieforward",
- "Dieknees",
- "Dieleglft",
- "Dielegtrt",
- "Diesidert",
- "Dieslump",
- // "Head0",
- // "Lookms",
- "Sitting",
- ],
- hbioderm: [
- "Root1",
- "Jump2",
- "Side",
- "Recoilde",
- "Salute",
- "Celflex2",
- "Celgora",
- "Celjump",
- "Celraor",
- "celyeah",
- "Tauntbest",
- "Tauntbull",
- "DeathBack",
- "DeathChest",
- "DeathForward",
- "DeathHead",
- "DeathKnees",
- "DeathLegLeft",
- "DeathLegRight",
- "DeathSideLeft",
- "DeathSideRight",
- "DeathSlump",
- "DeathSpin",
- // "Head0",
- // "Lookms",
- ],
- },
- };
-}
diff --git a/docs/404.html b/docs/404.html
index 612be3c..76e7290 100644
--- a/docs/404.html
+++ b/docs/404.html
@@ -1 +1 @@
-
404: This page could not be found. T2 Model Viewer & Skinner
404
This page could not be found.
\ No newline at end of file
+404: This page could not be found. T2 Model Viewer & Skinner
404
This page could not be found.
\ No newline at end of file
diff --git a/docs/404/index.html b/docs/404/index.html
index 612be3c..76e7290 100644
--- a/docs/404/index.html
+++ b/docs/404/index.html
@@ -1 +1 @@
-404: This page could not be found. T2 Model Viewer & Skinner
404
This page could not be found.
\ No newline at end of file
+404: This page could not be found. T2 Model Viewer & Skinner
404
This page could not be found.
\ No newline at end of file
diff --git a/docs/_next/static/PVUb_yF9G21U3L0XIp__W/_buildManifest.js b/docs/_next/static/Vx_atjNO8Iysn7kMNwaQO/_buildManifest.js
similarity index 100%
rename from docs/_next/static/PVUb_yF9G21U3L0XIp__W/_buildManifest.js
rename to docs/_next/static/Vx_atjNO8Iysn7kMNwaQO/_buildManifest.js
diff --git a/docs/_next/static/PVUb_yF9G21U3L0XIp__W/_clientMiddlewareManifest.json b/docs/_next/static/Vx_atjNO8Iysn7kMNwaQO/_clientMiddlewareManifest.json
similarity index 100%
rename from docs/_next/static/PVUb_yF9G21U3L0XIp__W/_clientMiddlewareManifest.json
rename to docs/_next/static/Vx_atjNO8Iysn7kMNwaQO/_clientMiddlewareManifest.json
diff --git a/docs/_next/static/PVUb_yF9G21U3L0XIp__W/_ssgManifest.js b/docs/_next/static/Vx_atjNO8Iysn7kMNwaQO/_ssgManifest.js
similarity index 100%
rename from docs/_next/static/PVUb_yF9G21U3L0XIp__W/_ssgManifest.js
rename to docs/_next/static/Vx_atjNO8Iysn7kMNwaQO/_ssgManifest.js
diff --git a/docs/gallery/index.html b/docs/gallery/index.html
index 2f19af2..38606fc 100644
--- a/docs/gallery/index.html
+++ b/docs/gallery/index.html
@@ -1 +1 @@
-T2 Model Viewer & Skinner
\ No newline at end of file
+T2 Model Viewer & Skinner
\ No newline at end of file
diff --git a/docs/gallery/index.txt b/docs/gallery/index.txt
index 0ed92c7..09b8246 100644
--- a/docs/gallery/index.txt
+++ b/docs/gallery/index.txt
@@ -11,7 +11,7 @@ f:"$Sreact.suspense"
11:I[68027,[],"default"]
:HL["/t2-model-skinner/_next/static/chunks/258ad065ddacdc6d.css","style"]
:HL["/t2-model-skinner/_next/static/chunks/be25e0c53b3e76c3.css","style"]
-0:{"P":null,"b":"PVUb_yF9G21U3L0XIp__W","p":"/t2-model-skinner","c":["","gallery",""],"i":false,"f":[[["",{"children":["gallery",{"children":["__PAGE__",{}]}]},"$undefined","$undefined",true],["",["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/t2-model-skinner/_next/static/chunks/258ad065ddacdc6d.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]],["$","html",null,{"lang":"en","children":["$","body",null,{"children":["$","$L2",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L3",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]}]]}],{"children":["gallery",["$","$1","c",{"children":[null,["$","$L2",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L3",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":["__PAGE__",["$","$1","c",{"children":[["$","$L4",null,{"Component":"$5","searchParams":{},"params":{},"promises":["$@6","$@7"]}],[["$","link","0",{"rel":"stylesheet","href":"/t2-model-skinner/_next/static/chunks/be25e0c53b3e76c3.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}],["$","script","script-0",{"src":"/t2-model-skinner/_next/static/chunks/ff1a16fafef87110.js","async":true,"nonce":"$undefined"}],["$","script","script-1",{"src":"/t2-model-skinner/_next/static/chunks/6d7b92f74fb4b5af.js","async":true,"nonce":"$undefined"}],["$","script","script-2",{"src":"/t2-model-skinner/_next/static/chunks/3710394f99078da4.js","async":true,"nonce":"$undefined"}]],["$","$L8",null,{"children":["$L9",["$","$La",null,{"promise":"$@b"}]]}]]}],{},null,false]},null,false]},null,false],["$","$1","h",{"children":[null,[["$","$Lc",null,{"children":"$Ld"}],null],["$","$Le",null,{"children":["$","div",null,{"hidden":true,"children":["$","$f",null,{"fallback":null,"children":"$L10"}]}]}]]}],false]],"m":"$undefined","G":["$11",[["$","link","0",{"rel":"stylesheet","href":"/t2-model-skinner/_next/static/chunks/258ad065ddacdc6d.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]]],"s":false,"S":true}
+0:{"P":null,"b":"Vx_atjNO8Iysn7kMNwaQO","p":"/t2-model-skinner","c":["","gallery",""],"i":false,"f":[[["",{"children":["gallery",{"children":["__PAGE__",{}]}]},"$undefined","$undefined",true],["",["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/t2-model-skinner/_next/static/chunks/258ad065ddacdc6d.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]],["$","html",null,{"lang":"en","children":["$","body",null,{"children":["$","$L2",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L3",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]}]]}],{"children":["gallery",["$","$1","c",{"children":[null,["$","$L2",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L3",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":["__PAGE__",["$","$1","c",{"children":[["$","$L4",null,{"Component":"$5","searchParams":{},"params":{},"promises":["$@6","$@7"]}],[["$","link","0",{"rel":"stylesheet","href":"/t2-model-skinner/_next/static/chunks/be25e0c53b3e76c3.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}],["$","script","script-0",{"src":"/t2-model-skinner/_next/static/chunks/ff1a16fafef87110.js","async":true,"nonce":"$undefined"}],["$","script","script-1",{"src":"/t2-model-skinner/_next/static/chunks/6d7b92f74fb4b5af.js","async":true,"nonce":"$undefined"}],["$","script","script-2",{"src":"/t2-model-skinner/_next/static/chunks/3710394f99078da4.js","async":true,"nonce":"$undefined"}]],["$","$L8",null,{"children":["$L9",["$","$La",null,{"promise":"$@b"}]]}]]}],{},null,false]},null,false]},null,false],["$","$1","h",{"children":[null,[["$","$Lc",null,{"children":"$Ld"}],null],["$","$Le",null,{"children":["$","div",null,{"hidden":true,"children":["$","$f",null,{"fallback":null,"children":"$L10"}]}]}]]}],false]],"m":"$undefined","G":["$11",[["$","link","0",{"rel":"stylesheet","href":"/t2-model-skinner/_next/static/chunks/258ad065ddacdc6d.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]]],"s":false,"S":true}
6:{}
7:"$0:f:0:1:2:children:2:children:1:props:children:0:props:params"
d:[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]]
diff --git a/docs/index.html b/docs/index.html
index f564a1d..86ce335 100644
--- a/docs/index.html
+++ b/docs/index.html
@@ -1 +1 @@
-T2 Model Viewer & Skinner
\ No newline at end of file
+T2 Model Viewer & Skinner
\ No newline at end of file
diff --git a/docs/index.txt b/docs/index.txt
index ea16981..412238b 100644
--- a/docs/index.txt
+++ b/docs/index.txt
@@ -11,7 +11,7 @@ f:"$Sreact.suspense"
11:I[68027,[],"default"]
:HL["/t2-model-skinner/_next/static/chunks/258ad065ddacdc6d.css","style"]
:HL["/t2-model-skinner/_next/static/chunks/df18f9fdc6a3cb7c.css","style"]
-0:{"P":null,"b":"PVUb_yF9G21U3L0XIp__W","p":"/t2-model-skinner","c":["",""],"i":false,"f":[[["",{"children":["__PAGE__",{}]},"$undefined","$undefined",true],["",["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/t2-model-skinner/_next/static/chunks/258ad065ddacdc6d.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]],["$","html",null,{"lang":"en","children":["$","body",null,{"children":["$","$L2",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L3",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]}]]}],{"children":["__PAGE__",["$","$1","c",{"children":[["$","$L4",null,{"Component":"$5","searchParams":{},"params":{},"promises":["$@6","$@7"]}],[["$","link","0",{"rel":"stylesheet","href":"/t2-model-skinner/_next/static/chunks/df18f9fdc6a3cb7c.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}],["$","script","script-0",{"src":"/t2-model-skinner/_next/static/chunks/00e36f5c4a673582.js","async":true,"nonce":"$undefined"}],["$","script","script-1",{"src":"/t2-model-skinner/_next/static/chunks/d9e502f7607fcfba.js","async":true,"nonce":"$undefined"}],["$","script","script-2",{"src":"/t2-model-skinner/_next/static/chunks/ada16a90703ade36.js","async":true,"nonce":"$undefined"}],["$","script","script-3",{"src":"/t2-model-skinner/_next/static/chunks/ff0e0c566323c690.js","async":true,"nonce":"$undefined"}],["$","script","script-4",{"src":"/t2-model-skinner/_next/static/chunks/a55df98dcb3b60ad.js","async":true,"nonce":"$undefined"}]],["$","$L8",null,{"children":["$L9",["$","$La",null,{"promise":"$@b"}]]}]]}],{},null,false]},null,false],["$","$1","h",{"children":[null,[["$","$Lc",null,{"children":"$Ld"}],null],["$","$Le",null,{"children":["$","div",null,{"hidden":true,"children":["$","$f",null,{"fallback":null,"children":"$L10"}]}]}]]}],false]],"m":"$undefined","G":["$11",[["$","link","0",{"rel":"stylesheet","href":"/t2-model-skinner/_next/static/chunks/258ad065ddacdc6d.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]]],"s":false,"S":true}
+0:{"P":null,"b":"Vx_atjNO8Iysn7kMNwaQO","p":"/t2-model-skinner","c":["",""],"i":false,"f":[[["",{"children":["__PAGE__",{}]},"$undefined","$undefined",true],["",["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/t2-model-skinner/_next/static/chunks/258ad065ddacdc6d.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]],["$","html",null,{"lang":"en","children":["$","body",null,{"children":["$","$L2",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L3",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]}]]}],{"children":["__PAGE__",["$","$1","c",{"children":[["$","$L4",null,{"Component":"$5","searchParams":{},"params":{},"promises":["$@6","$@7"]}],[["$","link","0",{"rel":"stylesheet","href":"/t2-model-skinner/_next/static/chunks/df18f9fdc6a3cb7c.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}],["$","script","script-0",{"src":"/t2-model-skinner/_next/static/chunks/00e36f5c4a673582.js","async":true,"nonce":"$undefined"}],["$","script","script-1",{"src":"/t2-model-skinner/_next/static/chunks/d9e502f7607fcfba.js","async":true,"nonce":"$undefined"}],["$","script","script-2",{"src":"/t2-model-skinner/_next/static/chunks/ada16a90703ade36.js","async":true,"nonce":"$undefined"}],["$","script","script-3",{"src":"/t2-model-skinner/_next/static/chunks/ff0e0c566323c690.js","async":true,"nonce":"$undefined"}],["$","script","script-4",{"src":"/t2-model-skinner/_next/static/chunks/a55df98dcb3b60ad.js","async":true,"nonce":"$undefined"}]],["$","$L8",null,{"children":["$L9",["$","$La",null,{"promise":"$@b"}]]}]]}],{},null,false]},null,false],["$","$1","h",{"children":[null,[["$","$Lc",null,{"children":"$Ld"}],null],["$","$Le",null,{"children":["$","div",null,{"hidden":true,"children":["$","$f",null,{"fallback":null,"children":"$L10"}]}]}]]}],false]],"m":"$undefined","G":["$11",[["$","link","0",{"rel":"stylesheet","href":"/t2-model-skinner/_next/static/chunks/258ad065ddacdc6d.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]]],"s":false,"S":true}
6:{}
7:"$0:f:0:1:2:children:1:props:children:0:props:params"
d:[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]]
diff --git a/models.json b/models.json
index 29b6410..3708331 100644
--- a/models.json
+++ b/models.json
@@ -41,9 +41,21 @@
"Storm"
],
"hfemale": [],
- "lbioderm": ["Horde", "Inferno", "Storm"],
- "mbioderm": ["Horde", "Inferno", "Storm"],
- "hbioderm": ["Horde", "Inferno", "Storm"]
+ "lbioderm": [
+ "Horde",
+ "Inferno",
+ "Storm"
+ ],
+ "mbioderm": [
+ "Horde",
+ "Inferno",
+ "Storm"
+ ],
+ "hbioderm": [
+ "Horde",
+ "Inferno",
+ "Storm"
+ ]
},
"modelDefaults": {
"lmale": "Blood Eagle",
@@ -157,67 +169,173 @@
"Diesidert0": "Death (Right Side Alternate)"
},
"cameraOverrides": {
- "chaingun": { "target": "0m 0m 0m", "fov": "12deg" },
- "plasmathrower": { "target": "0.002m -0.001m 0m", "fov": "12deg" },
- "energy": { "fov": "31deg", "orbit": "135deg 70deg 105%" },
- "hmale": { "fov": "24deg" },
- "hfemale": { "fov": "24deg" },
- "hbioderm": { "fov": "24deg" },
- "vehicle_grav_scout": { "orbit": "290deg 60deg 130%" },
- "vehicle_grav_tank": { "orbit": "290deg 60deg 130%" },
- "turret_assaulttank_mortar": { "orbit": "290deg 60deg 130%" },
- "vehicle_land_mpbbase": { "orbit": "290deg 60deg 130%" },
- "vehicle_air_scout": { "orbit": "290deg 60deg 130%" },
- "vehicle_air_bomber": { "orbit": "290deg 60deg 130%" },
- "vehicle_air_hapc": { "orbit": "290deg 60deg 130%" }
+ "chaingun": {
+ "target": "0m 0m 0m",
+ "fov": "12deg"
+ },
+ "plasmathrower": {
+ "target": "0.002m -0.001m 0m",
+ "fov": "12deg"
+ },
+ "energy": {
+ "fov": "31deg",
+ "orbit": "135deg 70deg 105%"
+ },
+ "hmale": {
+ "fov": "24deg"
+ },
+ "hfemale": {
+ "fov": "24deg"
+ },
+ "hbioderm": {
+ "fov": "24deg"
+ },
+ "vehicle_grav_scout": {
+ "orbit": "290deg 60deg 130%"
+ },
+ "vehicle_grav_tank": {
+ "orbit": "290deg 60deg 130%"
+ },
+ "turret_assaulttank_mortar": {
+ "orbit": "290deg 60deg 130%"
+ },
+ "vehicle_land_mpbbase": {
+ "orbit": "290deg 60deg 130%"
+ },
+ "vehicle_air_scout": {
+ "orbit": "290deg 60deg 130%"
+ },
+ "vehicle_air_bomber": {
+ "orbit": "290deg 60deg 130%"
+ },
+ "vehicle_air_hapc": {
+ "orbit": "290deg 60deg 130%"
+ }
},
"animationLabelOverrides": {
- "mmale": { "Back": "Strafe Left" },
- "mfemale": { "Dielegrt": "Death (Slump)" },
- "lbioderm": { "Root": "Gravcycle" }
+ "mmale": {
+ "Back": "Strafe Left"
+ },
+ "mfemale": {
+ "Dielegrt": "Death (Slump)"
+ },
+ "lbioderm": {
+ "Root": "Gravcycle"
+ }
},
"materials": {
- "lmale": [{ "name": "base", "label": "Warrior", "fileSuffix": ".lmale" }],
- "mmale": [{ "name": "base", "label": "Warrior", "fileSuffix": ".mmale" }],
- "hmale": [{ "name": "base", "label": "Warrior", "fileSuffix": ".hmale" }],
+ "lmale": [
+ {
+ "name": "base",
+ "label": "Warrior",
+ "fileSuffix": ".lmale"
+ }
+ ],
+ "mmale": [
+ {
+ "name": "base",
+ "label": "Warrior",
+ "fileSuffix": ".mmale"
+ }
+ ],
+ "hmale": [
+ {
+ "name": "base",
+ "label": "Warrior",
+ "fileSuffix": ".hmale"
+ }
+ ],
"lfemale": [
- { "name": "base", "label": "Warrior", "fileSuffix": ".lfemale" }
+ {
+ "name": "base",
+ "label": "Warrior",
+ "fileSuffix": ".lfemale"
+ }
],
"mfemale": [
- { "name": "base", "label": "Warrior", "fileSuffix": ".mfemale" }
+ {
+ "name": "base",
+ "label": "Warrior",
+ "fileSuffix": ".mfemale"
+ }
],
"lbioderm": [
- { "name": "base", "label": "Warrior", "fileSuffix": ".lbioderm" }
+ {
+ "name": "base",
+ "label": "Warrior",
+ "fileSuffix": ".lbioderm"
+ }
],
"mbioderm": [
- { "name": "base", "label": "Warrior", "fileSuffix": ".mbioderm" }
+ {
+ "name": "base",
+ "label": "Warrior",
+ "fileSuffix": ".mbioderm"
+ }
],
"hbioderm": [
- { "name": "base", "label": "Warrior", "fileSuffix": ".hbioderm" }
+ {
+ "name": "base",
+ "label": "Warrior",
+ "fileSuffix": ".hbioderm"
+ }
],
"disc": [
- { "name": "weapon_disc", "label": "Weapon" },
+ {
+ "name": "weapon_disc",
+ "label": "Weapon"
+ },
{
"name": "dcase00",
"label": "Disc Case",
- "size": [256, 256],
- "baseColorFactor": [1, 1, 1, 0.7],
- "emissiveFactor": [1, 1, 1],
+ "size": [
+ 256,
+ 256
+ ],
+ "baseColorFactor": [
+ 1,
+ 1,
+ 1,
+ 0.7
+ ],
+ "emissiveFactor": [
+ 1,
+ 1,
+ 1
+ ],
"emissiveTexture": true,
"alphaMode": "BLEND",
"metallicFactor": 0,
"roughnessFactor": 1,
"frameCount": 6,
- "frameTimings": [21, 1, 1, 1, 1, 1],
+ "frameTimings": [
+ 21,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1
+ ],
"optional": true
}
],
- "chaingun": [{ "label": "Chaingun", "name": "weapon_chaingun" }],
+ "chaingun": [
+ {
+ "label": "Chaingun",
+ "name": "weapon_chaingun"
+ }
+ ],
"grenade_launcher": [
- { "label": "Grenade Launcher", "name": "weapon_grenade_launcher" }
+ {
+ "label": "Grenade Launcher",
+ "name": "weapon_grenade_launcher"
+ }
],
"sniper": [
- { "label": "Weapon", "name": "weapon_sniper" },
+ {
+ "label": "Weapon",
+ "name": "weapon_sniper"
+ },
{
"label": "Green Light",
"name": "greenlight",
@@ -254,37 +372,86 @@
}
],
"energy": [
- { "label": "Weapon", "name": "blinn1", "file": "weapon_energy" }
+ {
+ "label": "Weapon",
+ "name": "blinn1",
+ "file": "weapon_energy"
+ }
],
"shocklance": [
- { "label": "Weapon", "name": "weapon_shocklance", "size": [512, 256] },
+ {
+ "label": "Weapon",
+ "name": "weapon_shocklance",
+ "size": [
+ 512,
+ 256
+ ]
+ },
{
"label": "Glow",
"name": "weapon_shocklance_glow_",
"file": "weapon_shocklance_glow ",
- "emissiveFactor": [1, 1, 1],
+ "emissiveFactor": [
+ 1,
+ 1,
+ 1
+ ],
"alphaMode": "MASK",
"alphaCutoff": 255,
"emissiveTexture": true,
"metallicFactor": 0,
"roughnessFactor": 1,
- "size": [256, 128],
+ "size": [
+ 256,
+ 128
+ ],
"optional": true
}
],
"elf": [
- { "label": "Weapon", "name": "weapon_elf", "file": "weapon_elf" },
- { "label": "Glow", "name": "weapon_elf0", "file": "weapon_elf" }
+ {
+ "label": "Weapon",
+ "name": "weapon_elf",
+ "file": "weapon_elf"
+ },
+ {
+ "label": "Glow",
+ "name": "weapon_elf0",
+ "file": "weapon_elf"
+ }
+ ],
+ "missile": [
+ {
+ "label": "Weapon",
+ "name": "weapon_missile"
+ }
+ ],
+ "mortar": [
+ {
+ "label": "Weapon",
+ "name": "weapon_mortar"
+ }
+ ],
+ "repair": [
+ {
+ "label": "Weapon",
+ "name": "weapon_repair"
+ }
+ ],
+ "targeting": [
+ {
+ "label": "Weapon",
+ "name": "weapon_targeting"
+ }
],
- "missile": [{ "label": "Weapon", "name": "weapon_missile" }],
- "mortar": [{ "label": "Weapon", "name": "weapon_mortar" }],
- "repair": [{ "label": "Weapon", "name": "weapon_repair" }],
- "targeting": [{ "label": "Weapon", "name": "weapon_targeting" }],
"mine": [
{
"label": "Weapon",
"name": "mine",
- "size": [512, 512],
+ "size": [
+ 512,
+ 512
+ ],
"metallicFactor": 0,
"roughnessFactor": 1
}
@@ -295,17 +462,32 @@
"name": "vehicle_air_scout0",
"file": "vehicle_air_scout"
},
- { "name": "Unassigned", "hidden": true, "hasDefault": false },
- { "name": "vehicle_air_scout", "hidden": true, "hasDefault": false },
+ {
+ "name": "Unassigned",
+ "hidden": true,
+ "hasDefault": false
+ },
+ {
+ "name": "vehicle_air_scout",
+ "hidden": true,
+ "hasDefault": false
+ },
{
"label": "Flare",
"name": "shrikeflare2",
- "emissiveFactor": [0, 0, 0],
+ "emissiveFactor": [
+ 0,
+ 0,
+ 0
+ ],
"alphaMode": "BLEND",
"emissiveTexture": true,
"metallicFactor": 0,
"roughnessFactor": 1,
- "size": [256, 256],
+ "size": [
+ 256,
+ 256
+ ],
"optional": true
}
],
@@ -314,10 +496,24 @@
"label": "Cockpit & Thrusters",
"name": "vehicle_air_bomber10",
"file": "vehicle_air_bomber1",
- "size": [256, 512]
+ "size": [
+ 256,
+ 512
+ ]
+ },
+ {
+ "name": "Unassigned",
+ "hidden": true,
+ "hasDefault": false
+ },
+ {
+ "label": "Rear",
+ "name": "vehicle_air_bomber2",
+ "size": [
+ 256,
+ 512
+ ]
},
- { "name": "Unassigned", "hidden": true, "hasDefault": false },
- { "label": "Rear", "name": "vehicle_air_bomber2", "size": [256, 512] },
{
"label": "Wings",
"name": "vehicle_air_bomber31",
@@ -325,31 +521,64 @@
},
{
"name": "vehicle_air_bomber1",
- "size": [256, 512],
+ "size": [
+ 256,
+ 512
+ ],
"selectable": false
},
- { "name": "vehicle_air_bomber3", "selectable": false }
+ {
+ "name": "vehicle_air_bomber3",
+ "selectable": false
+ }
],
"vehicle_air_hapc": [
- { "label": "Cockpit", "name": "vehicle_air_bomber1", "size": [256, 512] },
- { "name": "Unassigned", "hidden": true, "hasDefault": false },
- { "label": "Wings", "name": "vehicle_air_hpc2" },
- { "label": "Seats", "name": "vehicle_air_hpc1" },
+ {
+ "label": "Cockpit",
+ "name": "vehicle_air_bomber1",
+ "size": [
+ 256,
+ 512
+ ]
+ },
+ {
+ "name": "Unassigned",
+ "hidden": true,
+ "hasDefault": false
+ },
+ {
+ "label": "Wings",
+ "name": "vehicle_air_hpc2"
+ },
+ {
+ "label": "Seats",
+ "name": "vehicle_air_hpc1"
+ },
{
"label": "Thrusters",
"name": "vehicle_air_hpc30",
"file": "vehicle_air_hpc3"
},
- { "name": "vehicle_air_hpc3", "selectable": false }
+ {
+ "name": "vehicle_air_hpc3",
+ "selectable": false
+ }
],
"vehicle_grav_scout": [
{
"label": "Vehicle",
"name": "Vehicle_grav_scout0",
"file": "Vehicle_grav_scout",
- "size": [512, 256]
+ "size": [
+ 512,
+ 256
+ ]
+ },
+ {
+ "name": "Unassigned",
+ "hidden": true,
+ "hasDefault": false
},
- { "name": "Unassigned", "hidden": true, "hasDefault": false },
{
"label": "Pipes",
"name": "Vehicle_grav_scout_pipes1",
@@ -357,12 +586,20 @@
"metallicFactor": 0,
"roughnessFactor": 1
},
- { "name": "Vehicle_grav_scout", "hidden": true, "hasDefault": false },
+ {
+ "name": "Vehicle_grav_scout",
+ "hidden": true,
+ "hasDefault": false
+ },
{
"label": "Side Thrusters",
"name": "Vehicle_grav_scout_pipes",
"file": "Vehicle_grav_scout_pipes",
- "emissiveFactor": [1, 1, 1],
+ "emissiveFactor": [
+ 1,
+ 1,
+ 1
+ ],
"alphaMode": "OPAQUE",
"metallicFactor": 0,
"roughnessFactor": 1,
@@ -375,10 +612,18 @@
"file": "Vehicle_grav_scout_windshield",
"selectable": false,
"alphaMode": "BLEND",
- "baseColorFactor": [1, 1, 1, 0.5],
+ "baseColorFactor": [
+ 1,
+ 1,
+ 1,
+ 0.5
+ ],
"metallicFactor": 0,
"roughnessFactor": 1,
- "size": [128, 128],
+ "size": [
+ 128,
+ 128
+ ],
"optional": true
},
{
@@ -387,10 +632,18 @@
"file": "Vehicle_grav_scout_windshieldInner",
"selectable": false,
"alphaMode": "BLEND",
- "baseColorFactor": [1, 1, 1, 0.5],
+ "baseColorFactor": [
+ 1,
+ 1,
+ 1,
+ 0.5
+ ],
"metallicFactor": 0,
"roughnessFactor": 1,
- "size": [128, 128],
+ "size": [
+ 128,
+ 128
+ ],
"optional": true
}
],
@@ -398,22 +651,38 @@
{
"label": "Center",
"name": "Vehicle_grav_tank_bodyMain",
- "size": [256, 512]
+ "size": [
+ 256,
+ 512
+ ]
+ },
+ {
+ "name": "Unassigned",
+ "hidden": true,
+ "hasDefault": false
},
- { "name": "Unassigned", "hidden": true, "hasDefault": false },
{
"label": "Sides",
"name": "vehicle_grav_tank_bodyside10",
"file": "vehicle_grav_tank_bodyside1",
- "size": [256, 512]
+ "size": [
+ 256,
+ 512
+ ]
},
{
"label": "Thrusters",
"name": "vehicle_grav_tank_bodyside21",
"file": "vehicle_grav_tank_bodyside2"
},
- { "name": "vehicle_grav_tank_bodyside2", "selectable": false },
- { "name": "vehicle_grav_tank_bodyside1", "selectable": false }
+ {
+ "name": "vehicle_grav_tank_bodyside2",
+ "selectable": false
+ },
+ {
+ "name": "vehicle_grav_tank_bodyside1",
+ "selectable": false
+ }
],
"turret_assaulttank_mortar": [
{
@@ -423,19 +692,37 @@
}
],
"vehicle_land_mpbbase": [
- { "label": "Vehicle Front", "name": "vehicle_land_mpb1" },
- { "label": "Vehicle Back", "name": "vehicle_land_mpb2" },
+ {
+ "label": "Vehicle Front",
+ "name": "vehicle_land_mpb1"
+ },
+ {
+ "label": "Vehicle Back",
+ "name": "vehicle_land_mpb2"
+ },
{
"label": "Wheels",
"name": "Vehicle_Land_Assault_wheel",
"file": "Vehicle_Land_Assault_Wheel",
- "size": [512, 256],
+ "size": [
+ 512,
+ 256
+ ],
"optional": true
}
]
},
"animations": {
- "global": ["Forward", "Back", "Jump", "Jet", "Fall", "Land", "ski", "Root"],
+ "global": [
+ "Forward",
+ "Back",
+ "Jump",
+ "Jet",
+ "Fall",
+ "Land",
+ "ski",
+ "Root"
+ ],
"lmale": [
"Idlepda",
"Side",
diff --git a/package.json b/package.json
index bc01d33..96da7e8 100644
--- a/package.json
+++ b/package.json
@@ -7,7 +7,9 @@
"keywords": [],
"type": "module",
"scripts": {
- "build": "rm -rf docs && next build --turbo && touch docs/.nojekyll",
+ "build": "npm run build:models && npm run build:pages",
+ "build:models": "node scripts/buildConfig.mjs",
+ "build:pages": "rm -rf docs && next build --turbo && touch docs/.nojekyll",
"lint": "eslint . && tsc --noEmit",
"start": "next dev --turbo"
},
diff --git a/scripts/buildConfig.mjs b/scripts/buildConfig.mjs
index 6c68a6a..ac4d8d4 100644
--- a/scripts/buildConfig.mjs
+++ b/scripts/buildConfig.mjs
@@ -1,6 +1,743 @@
import fs from "node:fs";
-import { getSkinConfig } from "../config/models.mjs";
+import { globby } from "globby";
+import orderBy from "lodash.orderby";
+
+const models = [
+ "lmale",
+ "mmale",
+ "hmale",
+ "lfemale",
+ "mfemale",
+ "hfemale",
+ "lbioderm",
+ "mbioderm",
+ "hbioderm",
+];
+
+async function getSkinConfig() {
+ const defaultSkins = await Promise.all(
+ models.map((name) => globby(`./public/textures/*.${name}.png`))
+ );
+
+ return {
+ defaultSkins: models.reduce((skins, name, i) => {
+ skins[name] = orderBy(
+ defaultSkins[i].map((name) =>
+ name.replace(/(^.*\/|\.[lmh](male|female|bioderm)\.png$)/g, "")
+ ),
+ [(name) => name.toLowerCase()],
+ ["asc"]
+ );
+ return skins;
+ }, {}),
+ modelDefaults: {
+ // Players
+ lmale: "Blood Eagle",
+ mmale: "Blood Eagle",
+ hmale: "Blood Eagle",
+ lfemale: "Blood Eagle",
+ mfemale: "Blood Eagle",
+ hfemale: "Blood Eagle",
+ lbioderm: "Storm",
+ mbioderm: "Storm",
+ hbioderm: "Storm",
+ // Weapons
+ chaingun: "weapon_chaingun",
+ disc: "weapon_disc",
+ elf: "weapon_elf",
+ energy: "weapon_energy",
+ grenade_launcher: "weapon_grenade_launcher",
+ mine: "mine",
+ missile: "weapon_missile",
+ mortar: "weapon_mortar",
+ plasmathrower: "weapon_plasmathrower",
+ repair: "weapon_repair",
+ shocklance: "weapon_shocklance",
+ sniper: "weapon_sniper",
+ targeting: "weapon_targeting",
+ // Vehicles
+ vehicle_land_mpbbase: "vehicle_land_mpbbase",
+ vehicle_grav_scout: "vehicle_grav_scout",
+ vehicle_grav_tank: "vehicle_grav_tank",
+ turret_assaulttank_mortar: "turret_assaulttank_mortar",
+ vehicle_air_scout: "vehicle_air_scout",
+ vehicle_air_bomber: "vehicle_air_bomber",
+ vehicle_air_hapc: "vehicle_air_hapc",
+ },
+ animationLabels: {
+ Forward: "Run Forward",
+ Back: "Run Backward",
+ Back0: "Run Backward",
+ Root: "Idle",
+ Root2: "Run Backward",
+ Root3: "Idle",
+ Idlepda: "Idle (PDA)",
+ PDA: "Idle (PDA)",
+ Root1: "Idle (PDA)",
+ Jump: "Jump",
+ Jump0: "Jump (Alternate)",
+ Jump1: "Jump (Alternate)",
+ Jump2: "Jump (Alternate)",
+ Jump3: "Jump (Alternate)",
+ Jet: "Jet",
+ Fall: "Fall",
+ Land: "Land",
+ Land1: "Land (Alternate)",
+ ski: "Ski",
+ Side: "Strafe Left",
+ Celwave: "Wave",
+ Celbow: "Bow",
+ Celdisco: "Dance",
+ Celdance: "Dance",
+ Celflex: "Flex",
+ Celflex1: "Flex",
+ Celrocky: "Awesome",
+ Celjump: "Awesome",
+ Celsalute: "Salute",
+ celTaunt: "Too Bad",
+ CelebrationGora: "Wave Arms",
+ Celgora: "Wave Arms",
+ CelebrationJump: "Bull Charge",
+ Tauntbull: "Bull Charge",
+ CelebrationJump0: "Celebrate",
+ CelebrationJump4: "The Greatest",
+ CelebrationRoar: "Roar",
+ Celroar: "Roar",
+ Celraor: "Roar",
+ Celflex2: "Flex",
+ celyeah: "Yeah",
+ celtaunt: "Too Bad",
+ Tauntbutt: "Butt",
+ Tauntkiss: "Blow Kiss",
+ Tauntbest: "The Greatest",
+ Taunimp: "Move!",
+ Tauntimp: "Move!",
+ Sitting: "Sit",
+ Scoutroot: "Gravcycle",
+ Recoilde: "Recoil",
+ Light_recoil: "Recoil",
+ Dieforward: "Death (Fall Forward)",
+ DeathForward: "Death (Fall Forward)",
+ Dieslump: "Death (Slump)",
+ DeathSlump: "Death (Slump)",
+ Diespin: "Death (Spin)",
+ DeathSpin: "Death (Spin)",
+ diechest: "Death (Hold Chest)",
+ Diechest: "Death (Hold Chest)",
+ DeathChest: "Death (Hold Chest)",
+ Dieback: "Death (Hold Back)",
+ DeathBack: "Death (Hold Back)",
+ Diehead: "Death (Hold Head)",
+ DeathHead: "Death (Hold Head)",
+ Dieknees: "Death (On Knees)",
+ DeathKnees: "Death (On Knees)",
+ Dieleglf: "Death (Left Leg Injury)",
+ Dieleglft: "Death (Left Leg Injury)",
+ DeathLegLeft: "Death (Left Leg Injury)",
+ Dielegrt: "Death (Right Leg Injury)",
+ Dielegtrt: "Death (Right Leg Injury)",
+ DeathLegRight: "Death (Right Leg Injury)",
+ Dielegrt0: "Death (Right Leg Injury)",
+ Diesidelf: "Death (Left Side)",
+ DeathSideLeft: "Death (Left Side)",
+ Diesidert: "Death (Right Side)",
+ DeathSideRight: "Death (Right Side)",
+ Diesidert0: "Death (Right Side Alternate)",
+ },
+ cameraOverrides: {
+ chaingun: { target: "0m 0m 0m", fov: "12deg" },
+ plasmathrower: { target: "0.002m -0.001m 0m", fov: "12deg" },
+ energy: { fov: "31deg", orbit: "135deg 70deg 105%" },
+ hmale: { fov: "24deg" },
+ hfemale: { fov: "24deg" },
+ hbioderm: { fov: "24deg" },
+ vehicle_grav_scout: { orbit: "290deg 60deg 130%" },
+ vehicle_grav_tank: { orbit: "290deg 60deg 130%" },
+ turret_assaulttank_mortar: { orbit: "290deg 60deg 130%" },
+ vehicle_land_mpbbase: { orbit: "290deg 60deg 130%" },
+ vehicle_air_scout: { orbit: "290deg 60deg 130%" },
+ vehicle_air_bomber: { orbit: "290deg 60deg 130%" },
+ vehicle_air_hapc: { orbit: "290deg 60deg 130%" },
+ },
+ animationLabelOverrides: {
+ mmale: {
+ Back: "Strafe Left",
+ },
+ mfemale: {
+ Dielegrt: "Death (Slump)",
+ },
+ lbioderm: {
+ Root: "Gravcycle",
+ },
+ },
+ materials: {
+ lmale: [{ name: "base", label: "Warrior", fileSuffix: ".lmale" }],
+ mmale: [{ name: "base", label: "Warrior", fileSuffix: ".mmale" }],
+ hmale: [{ name: "base", label: "Warrior", fileSuffix: ".hmale" }],
+ lfemale: [{ name: "base", label: "Warrior", fileSuffix: ".lfemale" }],
+ mfemale: [{ name: "base", label: "Warrior", fileSuffix: ".mfemale" }],
+ lbioderm: [{ name: "base", label: "Warrior", fileSuffix: ".lbioderm" }],
+ mbioderm: [{ name: "base", label: "Warrior", fileSuffix: ".mbioderm" }],
+ hbioderm: [{ name: "base", label: "Warrior", fileSuffix: ".hbioderm" }],
+ disc: [
+ { name: "weapon_disc", label: "Weapon" },
+ {
+ name: "dcase00",
+ label: "Disc Case",
+ size: [256, 256],
+ baseColorFactor: [1, 1, 1, 0.7],
+ emissiveFactor: [1, 1, 1],
+ emissiveTexture: true,
+ alphaMode: "BLEND",
+ metallicFactor: 0,
+ roughnessFactor: 1,
+ frameCount: 6,
+ frameTimings: [21, 1, 1, 1, 1, 1],
+ optional: true,
+ },
+ ],
+ chaingun: [{ label: "Chaingun", name: "weapon_chaingun" }],
+ grenade_launcher: [
+ { label: "Grenade Launcher", name: "weapon_grenade_launcher" },
+ ],
+ sniper: [
+ { label: "Weapon", name: "weapon_sniper" },
+ {
+ label: "Green Light",
+ name: "greenlight",
+ hasDefault: false,
+ optional: true,
+ },
+ {
+ label: "Red Light",
+ name: "lite_red",
+ hasDefault: false,
+ optional: true,
+ },
+ ],
+ plasmathrower: [
+ {
+ label: "Rear & Barrel",
+ name: "weapon_plasma10",
+ file: "weapon_plasma1",
+ },
+ {
+ label: "Top & Front",
+ name: "weapon_plasma21",
+ file: "weapon_plasma2",
+ },
+ {
+ name: "weapon_plasma1",
+ file: "weapon_plasma1",
+ selectable: false,
+ },
+ {
+ name: "weapon_plasma2",
+ file: "weapon_plasma2",
+ selectable: false,
+ },
+ ],
+ energy: [
+ {
+ label: "Weapon",
+ name: "blinn1",
+ file: "weapon_energy",
+ },
+ ],
+ shocklance: [
+ { label: "Weapon", name: "weapon_shocklance", size: [512, 256] },
+ {
+ label: "Glow",
+ name: "weapon_shocklance_glow_",
+ file: "weapon_shocklance_glow ",
+ emissiveFactor: [1, 1, 1],
+ alphaMode: "MASK",
+ alphaCutoff: 255,
+ emissiveTexture: true,
+ metallicFactor: 0,
+ roughnessFactor: 1,
+ size: [256, 128],
+ optional: true,
+ },
+ ],
+ elf: [
+ { label: "Weapon", name: "weapon_elf", file: "weapon_elf" },
+ {
+ label: "Glow",
+ name: "weapon_elf0",
+ file: "weapon_elf",
+ },
+ ],
+ missile: [{ label: "Weapon", name: "weapon_missile" }],
+ mortar: [{ label: "Weapon", name: "weapon_mortar" }],
+ repair: [{ label: "Weapon", name: "weapon_repair" }],
+ targeting: [{ label: "Weapon", name: "weapon_targeting" }],
+ mine: [
+ {
+ label: "Weapon",
+ name: "mine",
+ size: [512, 512],
+ metallicFactor: 0,
+ roughnessFactor: 1,
+ },
+ ],
+ // Vehicles
+ vehicle_air_scout: [
+ {
+ label: "Vehicle",
+ name: "vehicle_air_scout0",
+ file: "vehicle_air_scout",
+ },
+ {
+ name: "Unassigned",
+ hidden: true,
+ hasDefault: false,
+ },
+ {
+ name: "vehicle_air_scout",
+ hidden: true,
+ hasDefault: false,
+ },
+ {
+ label: "Flare",
+ name: "shrikeflare2",
+ emissiveFactor: [0, 0, 0],
+ alphaMode: "BLEND",
+ emissiveTexture: true,
+ metallicFactor: 0,
+ roughnessFactor: 1,
+ size: [256, 256],
+ optional: true,
+ },
+ ],
+ vehicle_air_bomber: [
+ {
+ label: "Cockpit & Thrusters",
+ name: "vehicle_air_bomber10",
+ file: "vehicle_air_bomber1",
+ size: [256, 512],
+ },
+ {
+ name: "Unassigned",
+ hidden: true,
+ hasDefault: false,
+ },
+ {
+ label: "Rear",
+ name: "vehicle_air_bomber2",
+ size: [256, 512],
+ },
+ {
+ label: "Wings",
+ name: "vehicle_air_bomber31",
+ file: "vehicle_air_bomber3",
+ },
+ {
+ name: "vehicle_air_bomber1",
+ size: [256, 512],
+ selectable: false,
+ },
+ {
+ name: "vehicle_air_bomber3",
+ selectable: false,
+ },
+ ],
+ vehicle_air_hapc: [
+ {
+ label: "Cockpit",
+ name: "vehicle_air_bomber1",
+ size: [256, 512],
+ },
+ {
+ name: "Unassigned",
+ hidden: true,
+ hasDefault: false,
+ },
+ {
+ label: "Wings",
+ name: "vehicle_air_hpc2",
+ },
+ {
+ label: "Seats",
+ name: "vehicle_air_hpc1",
+ },
+ {
+ label: "Thrusters",
+ name: "vehicle_air_hpc30",
+ file: "vehicle_air_hpc3",
+ },
+ {
+ name: "vehicle_air_hpc3",
+ selectable: false,
+ },
+ ],
+ vehicle_grav_scout: [
+ {
+ label: "Vehicle",
+ name: "Vehicle_grav_scout0",
+ file: "Vehicle_grav_scout",
+ size: [512, 256],
+ },
+ {
+ name: "Unassigned",
+ hidden: true,
+ hasDefault: false,
+ },
+ {
+ label: "Pipes",
+ name: "Vehicle_grav_scout_pipes1",
+ file: "Vehicle_grav_scout_pipes",
+ metallicFactor: 0,
+ roughnessFactor: 1,
+ },
+ {
+ name: "Vehicle_grav_scout",
+ hidden: true,
+ hasDefault: false,
+ },
+ {
+ label: "Side Thrusters",
+ name: "Vehicle_grav_scout_pipes",
+ file: "Vehicle_grav_scout_pipes",
+ emissiveFactor: [1, 1, 1],
+ alphaMode: "OPAQUE",
+ metallicFactor: 0,
+ roughnessFactor: 1,
+ emissiveTexture: true,
+ selectable: false,
+ },
+ {
+ label: "Windshield",
+ name: "Vehicle_grav_scout_windshield",
+ file: "Vehicle_grav_scout_windshield",
+ selectable: false,
+ alphaMode: "BLEND",
+ baseColorFactor: [1, 1, 1, 0.5],
+ metallicFactor: 0,
+ roughnessFactor: 1,
+ size: [128, 128],
+ optional: true,
+ },
+ {
+ label: "Windshield Inner",
+ name: "Vehicle_grav_scout_windshieldInner",
+ file: "Vehicle_grav_scout_windshieldInner",
+ selectable: false,
+ alphaMode: "BLEND",
+ baseColorFactor: [1, 1, 1, 0.5],
+ metallicFactor: 0,
+ roughnessFactor: 1,
+ size: [128, 128],
+ optional: true,
+ },
+ ],
+ vehicle_grav_tank: [
+ {
+ label: "Center",
+ name: "Vehicle_grav_tank_bodyMain",
+ size: [256, 512],
+ },
+ {
+ name: "Unassigned",
+ hidden: true,
+ hasDefault: false,
+ },
+ {
+ label: "Sides",
+ name: "vehicle_grav_tank_bodyside10",
+ file: "vehicle_grav_tank_bodyside1",
+ size: [256, 512],
+ },
+ {
+ label: "Thrusters",
+ name: "vehicle_grav_tank_bodyside21",
+ file: "vehicle_grav_tank_bodyside2",
+ },
+ {
+ name: "vehicle_grav_tank_bodyside2",
+ selectable: false,
+ },
+ {
+ name: "vehicle_grav_tank_bodyside1",
+ selectable: false,
+ },
+ ],
+ turret_assaulttank_mortar: [
+ {
+ label: "Turret",
+ name: "turret_assaulttank_mortar",
+ file: "turret_assaultTank",
+ },
+ ],
+ vehicle_land_mpbbase: [
+ {
+ label: "Vehicle Front",
+ name: "vehicle_land_mpb1",
+ },
+ {
+ label: "Vehicle Back",
+ name: "vehicle_land_mpb2",
+ },
+ {
+ label: "Wheels",
+ name: "Vehicle_Land_Assault_wheel",
+ file: "Vehicle_Land_Assault_Wheel",
+ size: [512, 256],
+ optional: true,
+ },
+ ],
+ },
+ animations: {
+ global: [
+ "Forward",
+ "Back",
+ // "Head",
+ "Jump",
+ "Jet",
+ "Fall",
+ "Land",
+ "ski",
+ // "Lookde",
+ // "Looknw",
+ "Root",
+ ],
+ lmale: [
+ "Idlepda",
+ "Side",
+ "Jump0",
+ "Land1",
+ "Recoilde",
+ "Celwave",
+ "Celdisco",
+ "Celflex",
+ "Celrocky",
+ "Celsalute",
+ "celTaunt",
+ "Taunimp",
+ "Tauntbest",
+ "Dieback",
+ "diechest",
+ "Dieforward",
+ "Diehead",
+ "Dieknees",
+ "Dieleglf",
+ "Dielegrt",
+ "Diesidelf",
+ "Diesidert",
+ "Dieslump",
+ "Diespin",
+ // "Headside",
+ // "Lookms",
+ // "Looksn",
+ "Scoutroot",
+ "Sitting",
+ ],
+ mmale: [
+ "Back0",
+ "Jump3",
+ "Recoilde",
+ "Celwave",
+ "Celdance",
+ "Celflex",
+ "Celrocky",
+ "Celsalute",
+ "celtaunt",
+ "Tauntbest",
+ "Tauntimp",
+ "Dieback",
+ "Diechest",
+ "Dieforward",
+ "Diehead",
+ "Dieknees",
+ "Dieleglf",
+ "Dielegrt",
+ "Diesidelf",
+ "Diesidert",
+ "Diespin",
+ // "Head1",
+ // "Lookms",
+ // "Looksn",
+ // "Root2",
+ "Sitting",
+ ],
+ hmale: [
+ "Idlepda",
+ "Jump1",
+ "Side",
+ "Recoilde",
+ "Celwave",
+ "Celdance",
+ "Celflex",
+ "Celjump",
+ "Celsalute",
+ "celtaunt",
+ "Tauntbest",
+ "Tauntimp",
+ "Dieback",
+ "Diechest",
+ "Dieforward",
+ "Diehead",
+ "Dieknees",
+ "Dielegrt",
+ "Diesidelf",
+ "Diesidert",
+ "Diesidert0",
+ "Dieslump",
+ "Diespin",
+ // "Headside",
+ // "Lookms",
+ ],
+ lfemale: [
+ "Idlepda",
+ "Jump1",
+ "Side",
+ "Recoilde",
+ "Celwave",
+ "Celbow",
+ "Celdance",
+ "Celsalute",
+ "Tauntbest",
+ "Tauntbutt",
+ "Tauntimp",
+ "Tauntkiss",
+ "Dieback",
+ "Diechest",
+ "Dieforward",
+ "Diehead",
+ "Dieknees",
+ "Dieleglf",
+ "Dielegrt",
+ "Diesidelf",
+ "Diesidert",
+ "Dieslump",
+ "Diespin",
+ // "Head0",
+ // "Lookms",
+ // "Looksn",
+ "Scoutroot",
+ "Sitting",
+ ],
+ mfemale: [
+ "Idlepda",
+ "Jump1",
+ "Side",
+ "Recoilde",
+ "Celwave",
+ "Celbow",
+ "Celdisco",
+ "Celsalute",
+ "Tauntbest",
+ "Tauntbutt",
+ "Tauntimp",
+ "Tauntkiss",
+ "Dieback",
+ "Diechest",
+ "Dieforward",
+ "Diehead",
+ "Dieknees",
+ "Dieleglf",
+ "Dielegrt",
+ "Dielegrt0",
+ "Diesidelf",
+ "Diesidert",
+ "Diespin",
+ // "Headside",
+ // "Looksn",
+ // "Lookth",
+ "Sitting",
+ ],
+ lbioderm: [
+ "Root3",
+ "PDA",
+ "Jump2",
+ "Side",
+ "Light_recoil",
+ "CelebrationGora",
+ "CelebrationJump",
+ "CelebrationJump0",
+ "CelebrationJump4",
+ "CelebrationRoar",
+ "Salute",
+ "Celflex2",
+ "celyeah",
+ "DeathBack",
+ "DeathChest",
+ "DeathForward",
+ "DeathHead",
+ "DeathKnees",
+ "DeathLegLeft",
+ "DeathLegRight",
+ "DeathSideLeft",
+ "DeathSideRight",
+ "DeathSlump",
+ "DeathSpin",
+ // "Head1",
+ // "Lookms",
+ "Sitting",
+ ],
+ mbioderm: [
+ "Root1",
+ "Jump2",
+ "Side",
+ "Recoilde",
+ "Salute",
+ "Celflex1",
+ "Celgora",
+ "Celjump",
+ "Celroar",
+ "celyeah",
+ "Tauntbest",
+ "Tauntbull",
+ "DeathBack",
+ "DeathChest",
+ "DeathHead",
+ "DeathSideLeft",
+ "DeathSpin",
+ "Dieforward",
+ "Dieknees",
+ "Dieleglft",
+ "Dielegtrt",
+ "Diesidert",
+ "Dieslump",
+ // "Head0",
+ // "Lookms",
+ "Sitting",
+ ],
+ hbioderm: [
+ "Root1",
+ "Jump2",
+ "Side",
+ "Recoilde",
+ "Salute",
+ "Celflex2",
+ "Celgora",
+ "Celjump",
+ "Celraor",
+ "celyeah",
+ "Tauntbest",
+ "Tauntbull",
+ "DeathBack",
+ "DeathChest",
+ "DeathForward",
+ "DeathHead",
+ "DeathKnees",
+ "DeathLegLeft",
+ "DeathLegRight",
+ "DeathSideLeft",
+ "DeathSideRight",
+ "DeathSlump",
+ "DeathSpin",
+ // "Head0",
+ // "Lookms",
+ ],
+ },
+ };
+}
const config = await getSkinConfig();
-fs.writeFileSync("./models.json", JSON.stringify(config), "utf8");
+fs.writeFileSync(
+ "./models.json",
+ JSON.stringify(config, null, 2) + "\n",
+ "utf8"
+);