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" +);