Add weapons to gallery page

This commit is contained in:
Brian Beck 2024-12-08 16:46:30 -08:00
parent 074d801728
commit 65e87d8783
23 changed files with 47 additions and 55 deletions

View file

@ -13,33 +13,6 @@ const models = [
"hbioderm",
];
const weaponModels = [
"chaingun",
"disc",
"elf",
"energy",
"grenade_launcher",
"missile",
"mortar",
"plasmathrower",
"repair",
"shocklance",
"sniper",
"targeting",
];
const vehicleModels = [
"vehicle_grav_scout",
"vehicle_grav_tank",
"turret_assaulttank_mortar",
"vehicle_land_mpbbase",
"vehicle_air_scout",
"vehicle_air_bomber",
"vehicle_air_hapc",
];
const T2_SKINS_PATH = process.env.T2_SKINS_PATH || "../t2-skins";
export async function getSkinConfig() {
const defaultSkins = await Promise.all(
models.map((name) => globby(`./public/textures/*.${name}.png`))
@ -171,6 +144,8 @@ export async function getSkinConfig() {
},
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" },

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View file

@ -1 +1 @@
self.__BUILD_MANIFEST=function(s){return{__rewrites:{afterFiles:[],beforeFiles:[],fallback:[]},"/":[s,"static/chunks/e21e5bbe-b28e0079b469d4e8.js","static/chunks/ebc70433-4eccd1cb3af29a3e.js","static/chunks/6eb5140f-31a2b2da7903b885.js","static/chunks/85d7bc83-1ca530d7d3f44153.js","static/chunks/3a17f596-9aeae038dfa51955.js","static/chunks/f580fadb-2911e2fbf64aae5a.js","static/chunks/515-13ff0773d41722ae.js","static/chunks/pages/index-85d791f6f54d7f5e.js"],"/_error":["static/chunks/pages/_error-54b9fcf45cb5bc62.js"],"/gallery":[s,"static/chunks/737a5600-aea383aaa2061cc6.js","static/chunks/918-3c6747f76df39072.js","static/css/4d43ac65e204759a.css","static/chunks/pages/gallery-114a7231e5ec5591.js"],sortedPages:["/","/_app","/_error","/gallery"]}}("static/chunks/cb355538-dbf1c108320fc6a1.js"),self.__BUILD_MANIFEST_CB&&self.__BUILD_MANIFEST_CB();
self.__BUILD_MANIFEST=function(s){return{__rewrites:{afterFiles:[],beforeFiles:[],fallback:[]},"/":[s,"static/chunks/e21e5bbe-b28e0079b469d4e8.js","static/chunks/ebc70433-4eccd1cb3af29a3e.js","static/chunks/6eb5140f-31a2b2da7903b885.js","static/chunks/85d7bc83-1ca530d7d3f44153.js","static/chunks/3a17f596-9aeae038dfa51955.js","static/chunks/f580fadb-2911e2fbf64aae5a.js","static/chunks/515-13ff0773d41722ae.js","static/chunks/pages/index-c0f57672b4d1826e.js"],"/_error":["static/chunks/pages/_error-54b9fcf45cb5bc62.js"],"/gallery":[s,"static/chunks/737a5600-aea383aaa2061cc6.js","static/chunks/918-3c6747f76df39072.js","static/css/922e89893536f2f9.css","static/chunks/pages/gallery-53e8b702048e0fa2.js"],sortedPages:["/","/_app","/_error","/gallery"]}}("static/chunks/cb355538-dbf1c108320fc6a1.js"),self.__BUILD_MANIFEST_CB&&self.__BUILD_MANIFEST_CB();

View file

@ -1,2 +0,0 @@
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[214],{4080:function(e,l,a){(window.__NEXT_P=window.__NEXT_P||[]).push(["/gallery",function(){return a(1560)}])},1560:function(e,l,a){"use strict";a.r(l),a.d(l,{default:function(){return GalleryPage}});var n=a(5893),i=a(7294),r=a(3181),s=a(2091),t=a(1163),o=a(5316),c=a.n(o);let m={customSkins:{},newSkins:{}};var u=a(9746),d=a.n(u),h=a(9008),_=a.n(h),x=a(1664),f=a.n(x);let g=[],y={lmale:0,mmale:1,lfemale:2,mfemale:3,hmale:4,lbioderm:5,mbioderm:6,hbioderm:7};function GalleryPage(){var e,l;let a=(0,t.useRouter)(),[o,u]=function(){let[e,l]=(0,i.useState)(m);(0,i.useEffect)(()=>{let e=new AbortController,a=e.signal,n=!1,loadCustomSkins=async()=>{let e;try{if(e=await fetch("".concat("https://exogen.github.io/t2-skins","/skins.json"),{signal:a}),!n){let a=await e.json();n||l(a)}}catch(e){console.error(e)}};return loadCustomSkins(),()=>{n=!0,e.abort()}},[]);let a=e!==m;return[e,a]}(),[h,x]=(0,i.useState)("lmale"),b="hfemale"===h?"hmale":h,p=null!==(l=null===(e=o.customSkins)||void 0===e?void 0:e[b])&&void 0!==l?l:g,j=(0,i.useMemo)(()=>{if(null==o||!o.newSkins||"new"!==h)return[];{let e=[];return Object.entries(o.newSkins).forEach(l=>{let[a,n]=l;e.push(...n.map(e=>({name:e,model:a})))}),c()(e,[e=>e.name.toLowerCase(),e=>y[e.model]],["asc","asc"])}},[h,o]),v="new"===h?j:p,k=a.query.filter&&"string"==typeof a.query.filter?a.query.filter:"lmale";return(0,i.useEffect)(()=>{x(k)},[k]),(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(_(),{children:(0,n.jsx)("title",{children:"Tribes 2 Skin Gallery"})}),(0,n.jsxs)("main",{className:d().GalleryPage,children:[(0,n.jsxs)("div",{className:d().Tools,children:[(0,n.jsxs)(f(),{className:d().Back,href:"../",children:[(0,n.jsx)(s.bUI,{size:12,className:d().Icon})," ",(0,n.jsx)("span",{className:d().Label,children:"Back to Editor"})]}),(0,n.jsxs)("select",{tabIndex:0,id:"ModelSelect","aria-label":"Player model",onChange:e=>{a.push("?filter=".concat(e.target.value))},value:h,children:[(0,n.jsx)("option",{value:"new",children:"All new skins ✨"}),(0,n.jsx)("option",{value:"lmale",children:"Human Male \xb7 Light"}),(0,n.jsx)("option",{value:"mmale",children:"Human Male \xb7 Medium"}),(0,n.jsx)("option",{value:"hmale",children:"Human Male \xb7 Heavy"}),(0,n.jsx)("option",{value:"lfemale",children:"Human Female \xb7 Light"}),(0,n.jsx)("option",{value:"mfemale",children:"Human Female \xb7 Medium"}),(0,n.jsx)("option",{value:"hfemale",children:"Human Female \xb7 Heavy"}),(0,n.jsx)("option",{value:"lbioderm",children:"Bioderm \xb7 Light"}),(0,n.jsx)("option",{value:"mbioderm",children:"Bioderm \xb7 Medium"}),(0,n.jsx)("option",{value:"hbioderm",children:"Bioderm \xb7 Heavy"})]}),(0,n.jsx)("a",{href:"https://github.com/exogen/t2-model-skinner",className:d().IconLink,children:(0,n.jsx)(s.hJX,{size:32})})]}),u?(0,n.jsx)("div",{className:d().Gallery,children:v.map(e=>{let l,a;"string"==typeof e?(l=e,a=b):(l=e.name,a=e.model);let i="".concat("https://exogen.github.io/t2-skins","/gallery/").concat(encodeURIComponent(l),".").concat(a,".webp");return(0,n.jsxs)("div",{className:d().Skin,children:[(0,n.jsx)("img",{className:d().Preview,loading:"lazy",src:i,width:680,height:800,alt:l}),(0,n.jsx)("div",{className:d().Name,children:l})]},"".concat(l,":").concat(a))})}):(0,n.jsx)(r.xHo,{className:d().Spinner})]})]})}},9746:function(e){e.exports={GalleryPage:"gallery_GalleryPage__QyCLn",Tools:"gallery_Tools__COicv",Back:"gallery_Back__xvbOe",IconLink:"gallery_IconLink__7NlBA",Gallery:"gallery_Gallery__ZMJE_",Skin:"gallery_Skin__Ep_rb",Preview:"gallery_Preview__JGf2f",Name:"gallery_Name__W9Aoc",Spinner:"gallery_Spinner__9jTLL",spin:"gallery_spin__EVmH5",Label:"gallery_Label__kJfDw"}}},function(e){e.O(0,[774,365,648,918,888,179],function(){return e(e.s=4080)}),_N_E=e.O()}]);
//# sourceMappingURL=gallery-114a7231e5ec5591.js.map

File diff suppressed because one or more lines are too long

View file

@ -0,0 +1,2 @@
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[214],{4080:function(e,l,a){(window.__NEXT_P=window.__NEXT_P||[]).push(["/gallery",function(){return a(1560)}])},1560:function(e,l,a){"use strict";a.r(l),a.d(l,{default:function(){return GalleryPage}});var n=a(5893),i=a(7294),r=a(3181),s=a(2091),o=a(1163),t=a(5316),c=a.n(t);let u={customSkins:{},newSkins:{}};var m=a(9746),d=a.n(m),h=a(9008),p=a.n(h),_=a(1664),x=a.n(_);let g=[],j={lmale:0,mmale:1,lfemale:2,mfemale:3,hmale:4,lbioderm:5,mbioderm:6,hbioderm:7};function GalleryPage(){var e,l;let a=(0,o.useRouter)(),[t,m]=function(){let[e,l]=(0,i.useState)(u);(0,i.useEffect)(()=>{let e=new AbortController,a=e.signal,n=!1,loadCustomSkins=async()=>{let e;try{if(e=await fetch("".concat("https://exogen.github.io/t2-skins","/skins.json"),{signal:a}),!n){let a=await e.json();n||l(a)}}catch(e){console.error(e)}};return loadCustomSkins(),()=>{n=!0,e.abort()}},[]);let a=e!==u;return[e,a]}(),[h,_]=(0,i.useState)("lmale"),v="hfemale"===h?"hmale":h,y=null!==(l=null===(e=t.customSkins)||void 0===e?void 0:e[v])&&void 0!==l?l:g,f=(0,i.useMemo)(()=>{if(null==t||!t.newSkins||"new"!==h)return[];{let e=[];return Object.entries(t.newSkins).forEach(l=>{let[a,n]=l;e.push(...n.map(e=>({name:e,model:a})))}),c()(e,[e=>e.name.toLowerCase(),e=>j[e.model]],["asc","asc"])}},[h,t]),k="new"===h?f:y,b=a.query.filter&&"string"==typeof a.query.filter?a.query.filter:"lmale";return(0,i.useEffect)(()=>{_(b)},[b]),(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(p(),{children:(0,n.jsx)("title",{children:"Tribes 2 Skin Gallery"})}),(0,n.jsxs)("main",{className:d().GalleryPage,children:[(0,n.jsxs)("div",{className:d().Tools,children:[(0,n.jsxs)(x(),{className:d().Back,href:"../",children:[(0,n.jsx)(s.bUI,{size:12,className:d().Icon})," ",(0,n.jsx)("span",{className:d().Label,children:"Back to Editor"})]}),(0,n.jsxs)("select",{tabIndex:0,id:"ModelSelect","aria-label":"Player model",onChange:e=>{a.push("?filter=".concat(e.target.value))},value:h,children:[(0,n.jsx)("option",{value:"new",children:"All new skins ✨"}),(0,n.jsxs)("optgroup",{label:"Players","data-model-type":"player",children:[(0,n.jsx)("option",{value:"lmale",children:"Human Male • Light"}),(0,n.jsx)("option",{value:"mmale",children:"Human Male • Medium"}),(0,n.jsx)("option",{value:"hmale",children:"Human Male • Heavy"}),(0,n.jsx)("option",{value:"lfemale",children:"Human Female • Light"}),(0,n.jsx)("option",{value:"mfemale",children:"Human Female • Medium"}),(0,n.jsx)("option",{value:"hfemale",children:"Human Female • Heavy"}),(0,n.jsx)("option",{value:"lbioderm",children:"Bioderm • Light"}),(0,n.jsx)("option",{value:"mbioderm",children:"Bioderm • Medium"}),(0,n.jsx)("option",{value:"hbioderm",children:"Bioderm • Heavy"})]}),(0,n.jsxs)("optgroup",{label:"Weapons","data-model-type":"weapon",children:[(0,n.jsx)("option",{value:"disc",children:"Disc Launcher"}),(0,n.jsx)("option",{value:"chaingun",children:"Chaingun"}),(0,n.jsx)("option",{value:"grenade_launcher",children:"Grenade Launcher"}),(0,n.jsx)("option",{value:"sniper",children:"Laser Rifle"}),(0,n.jsx)("option",{value:"plasmathrower",children:"Plasma Cannon"}),(0,n.jsx)("option",{value:"energy",children:"Blaster"}),(0,n.jsx)("option",{value:"shocklance",children:"Shocklance"}),(0,n.jsx)("option",{value:"elf",children:"ELF Projector"}),(0,n.jsx)("option",{value:"missile",children:"Missile Launcher"}),(0,n.jsx)("option",{value:"mortar",children:"Mortar"}),(0,n.jsx)("option",{value:"repair",children:"Repair Pack"}),(0,n.jsx)("option",{value:"targeting",children:"Targeting Laser"})]})]}),(0,n.jsx)("a",{href:"https://github.com/exogen/t2-model-skinner",className:d().IconLink,children:(0,n.jsx)(s.hJX,{size:32})})]}),m?(0,n.jsx)("div",{className:d().Gallery,children:k.map(e=>{let l,a;"string"==typeof e?(l=e,a=v):(l=e.name,a=e.model);let i="".concat("https://exogen.github.io/t2-skins","/gallery/").concat(encodeURIComponent(l),".").concat(a,".webp");return(0,n.jsxs)("div",{className:d().Skin,children:[(0,n.jsx)("img",{className:d().Preview,loading:"lazy",src:i,width:680,height:800,alt:l}),(0,n.jsx)("div",{className:d().Name,children:l})]},"".concat(l,":").concat(a))})}):(0,n.jsx)(r.xHo,{className:d().Spinner})]})]})}},9746:function(e){e.exports={GalleryPage:"gallery_GalleryPage__QyCLn",Tools:"gallery_Tools__COicv",Back:"gallery_Back__xvbOe",IconLink:"gallery_IconLink__7NlBA",Gallery:"gallery_Gallery__ZMJE_",Skin:"gallery_Skin__Ep_rb",Preview:"gallery_Preview__JGf2f",Name:"gallery_Name__W9Aoc",Spinner:"gallery_Spinner__9jTLL",spin:"gallery_spin__EVmH5",Label:"gallery_Label__kJfDw"}}},function(e){e.O(0,[774,365,648,918,888,179],function(){return e(e.s=4080)}),_N_E=e.O()}]);
//# sourceMappingURL=gallery-53e8b702048e0fa2.js.map

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View file

@ -1,2 +1,2 @@
!function(){"use strict";var e,r,_,t,n,i,u,c={},o={};function __webpack_require__(e){var r=o[e];if(void 0!==r)return r.exports;var _=o[e]={id:e,loaded:!1,exports:{}},t=!0;try{c[e].call(_.exports,_,_.exports,__webpack_require__),t=!1}finally{t&&delete o[e]}return _.loaded=!0,_.exports}__webpack_require__.m=c,e=[],__webpack_require__.O=function(r,_,t,n){if(_){n=n||0;for(var i=e.length;i>0&&e[i-1][2]>n;i--)e[i]=e[i-1];e[i]=[_,t,n];return}for(var u=1/0,i=0;i<e.length;i++){for(var _=e[i][0],t=e[i][1],n=e[i][2],c=!0,o=0;o<_.length;o++)u>=n&&Object.keys(__webpack_require__.O).every(function(e){return __webpack_require__.O[e](_[o])})?_.splice(o--,1):(c=!1,n<u&&(u=n));if(c){e.splice(i--,1);var a=t()}}return a},__webpack_require__.n=function(e){var r=e&&e.__esModule?function(){return e.default}:function(){return e};return __webpack_require__.d(r,{a:r}),r},__webpack_require__.d=function(e,r){for(var _ in r)__webpack_require__.o(r,_)&&!__webpack_require__.o(e,_)&&Object.defineProperty(e,_,{enumerable:!0,get:r[_]})},__webpack_require__.f={},__webpack_require__.e=function(e){return Promise.all(Object.keys(__webpack_require__.f).reduce(function(r,_){return __webpack_require__.f[_](e,r),r},[]))},__webpack_require__.u=function(e){return"static/chunks/"+(737===e?"fb7d5399":e)+"."+({250:"10c119307e239c98",737:"bc4a70b34221e8c8",767:"0dd6b240996f3455",848:"fc0fe21cdc2e6431"})[e]+".js"},__webpack_require__.miniCssF=function(e){return"static/css/"+({214:"4d43ac65e204759a",888:"4f6df96970b4e27f"})[e]+".css"},__webpack_require__.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||Function("return this")()}catch(e){if("object"==typeof window)return window}}(),__webpack_require__.o=function(e,r){return Object.prototype.hasOwnProperty.call(e,r)},r={},_="_N_E:",__webpack_require__.l=function(e,t,n,i){if(r[e]){r[e].push(t);return}if(void 0!==n)for(var u,c,o=document.getElementsByTagName("script"),a=0;a<o.length;a++){var p=o[a];if(p.getAttribute("src")==e||p.getAttribute("data-webpack")==_+n){u=p;break}}u||(c=!0,(u=document.createElement("script")).charset="utf-8",u.timeout=120,__webpack_require__.nc&&u.setAttribute("nonce",__webpack_require__.nc),u.setAttribute("data-webpack",_+n),u.src=__webpack_require__.tu(e)),r[e]=[t];var onScriptComplete=function(_,t){u.onerror=u.onload=null,clearTimeout(b);var n=r[e];if(delete r[e],u.parentNode&&u.parentNode.removeChild(u),n&&n.forEach(function(e){return e(t)}),_)return _(t)},b=setTimeout(onScriptComplete.bind(null,void 0,{type:"timeout",target:u}),12e4);u.onerror=onScriptComplete.bind(null,u.onerror),u.onload=onScriptComplete.bind(null,u.onload),c&&document.head.appendChild(u)},__webpack_require__.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},__webpack_require__.nmd=function(e){return e.paths=[],e.children||(e.children=[]),e},__webpack_require__.tt=function(){return void 0===t&&(t={createScriptURL:function(e){return e}},"undefined"!=typeof trustedTypes&&trustedTypes.createPolicy&&(t=trustedTypes.createPolicy("nextjs#bundler",t))),t},__webpack_require__.tu=function(e){return __webpack_require__.tt().createScriptURL(e)},__webpack_require__.p="/t2-model-skinner/_next/",n={272:0},__webpack_require__.f.j=function(e,r){var _=__webpack_require__.o(n,e)?n[e]:void 0;if(0!==_){if(_)r.push(_[2]);else if(272!=e){var t=new Promise(function(r,t){_=n[e]=[r,t]});r.push(_[2]=t);var i=__webpack_require__.p+__webpack_require__.u(e),u=Error();__webpack_require__.l(i,function(r){if(__webpack_require__.o(n,e)&&(0!==(_=n[e])&&(n[e]=void 0),_)){var t=r&&("load"===r.type?"missing":r.type),i=r&&r.target&&r.target.src;u.message="Loading chunk "+e+" failed.\n("+t+": "+i+")",u.name="ChunkLoadError",u.type=t,u.request=i,_[1](u)}},"chunk-"+e,e)}else n[e]=0}},__webpack_require__.O.j=function(e){return 0===n[e]},i=function(e,r){var _,t,i=r[0],u=r[1],c=r[2],o=0;if(i.some(function(e){return 0!==n[e]})){for(_ in u)__webpack_require__.o(u,_)&&(__webpack_require__.m[_]=u[_]);if(c)var a=c(__webpack_require__)}for(e&&e(r);o<i.length;o++)t=i[o],__webpack_require__.o(n,t)&&n[t]&&n[t][0](),n[t]=0;return __webpack_require__.O(a)},(u=self.webpackChunk_N_E=self.webpackChunk_N_E||[]).forEach(i.bind(null,0)),u.push=i.bind(null,u.push.bind(u))}();
//# sourceMappingURL=webpack-add0ed20cab4e44e.js.map
!function(){"use strict";var e,r,_,t,n,i,u,c={},o={};function __webpack_require__(e){var r=o[e];if(void 0!==r)return r.exports;var _=o[e]={id:e,loaded:!1,exports:{}},t=!0;try{c[e].call(_.exports,_,_.exports,__webpack_require__),t=!1}finally{t&&delete o[e]}return _.loaded=!0,_.exports}__webpack_require__.m=c,e=[],__webpack_require__.O=function(r,_,t,n){if(_){n=n||0;for(var i=e.length;i>0&&e[i-1][2]>n;i--)e[i]=e[i-1];e[i]=[_,t,n];return}for(var u=1/0,i=0;i<e.length;i++){for(var _=e[i][0],t=e[i][1],n=e[i][2],c=!0,o=0;o<_.length;o++)u>=n&&Object.keys(__webpack_require__.O).every(function(e){return __webpack_require__.O[e](_[o])})?_.splice(o--,1):(c=!1,n<u&&(u=n));if(c){e.splice(i--,1);var a=t()}}return a},__webpack_require__.n=function(e){var r=e&&e.__esModule?function(){return e.default}:function(){return e};return __webpack_require__.d(r,{a:r}),r},__webpack_require__.d=function(e,r){for(var _ in r)__webpack_require__.o(r,_)&&!__webpack_require__.o(e,_)&&Object.defineProperty(e,_,{enumerable:!0,get:r[_]})},__webpack_require__.f={},__webpack_require__.e=function(e){return Promise.all(Object.keys(__webpack_require__.f).reduce(function(r,_){return __webpack_require__.f[_](e,r),r},[]))},__webpack_require__.u=function(e){return"static/chunks/"+(737===e?"fb7d5399":e)+"."+({250:"10c119307e239c98",737:"bc4a70b34221e8c8",767:"0dd6b240996f3455",848:"fc0fe21cdc2e6431"})[e]+".js"},__webpack_require__.miniCssF=function(e){return"static/css/"+({214:"922e89893536f2f9",888:"4f6df96970b4e27f"})[e]+".css"},__webpack_require__.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||Function("return this")()}catch(e){if("object"==typeof window)return window}}(),__webpack_require__.o=function(e,r){return Object.prototype.hasOwnProperty.call(e,r)},r={},_="_N_E:",__webpack_require__.l=function(e,t,n,i){if(r[e]){r[e].push(t);return}if(void 0!==n)for(var u,c,o=document.getElementsByTagName("script"),a=0;a<o.length;a++){var p=o[a];if(p.getAttribute("src")==e||p.getAttribute("data-webpack")==_+n){u=p;break}}u||(c=!0,(u=document.createElement("script")).charset="utf-8",u.timeout=120,__webpack_require__.nc&&u.setAttribute("nonce",__webpack_require__.nc),u.setAttribute("data-webpack",_+n),u.src=__webpack_require__.tu(e)),r[e]=[t];var onScriptComplete=function(_,t){u.onerror=u.onload=null,clearTimeout(f);var n=r[e];if(delete r[e],u.parentNode&&u.parentNode.removeChild(u),n&&n.forEach(function(e){return e(t)}),_)return _(t)},f=setTimeout(onScriptComplete.bind(null,void 0,{type:"timeout",target:u}),12e4);u.onerror=onScriptComplete.bind(null,u.onerror),u.onload=onScriptComplete.bind(null,u.onload),c&&document.head.appendChild(u)},__webpack_require__.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},__webpack_require__.nmd=function(e){return e.paths=[],e.children||(e.children=[]),e},__webpack_require__.tt=function(){return void 0===t&&(t={createScriptURL:function(e){return e}},"undefined"!=typeof trustedTypes&&trustedTypes.createPolicy&&(t=trustedTypes.createPolicy("nextjs#bundler",t))),t},__webpack_require__.tu=function(e){return __webpack_require__.tt().createScriptURL(e)},__webpack_require__.p="/t2-model-skinner/_next/",n={272:0},__webpack_require__.f.j=function(e,r){var _=__webpack_require__.o(n,e)?n[e]:void 0;if(0!==_){if(_)r.push(_[2]);else if(272!=e){var t=new Promise(function(r,t){_=n[e]=[r,t]});r.push(_[2]=t);var i=__webpack_require__.p+__webpack_require__.u(e),u=Error();__webpack_require__.l(i,function(r){if(__webpack_require__.o(n,e)&&(0!==(_=n[e])&&(n[e]=void 0),_)){var t=r&&("load"===r.type?"missing":r.type),i=r&&r.target&&r.target.src;u.message="Loading chunk "+e+" failed.\n("+t+": "+i+")",u.name="ChunkLoadError",u.type=t,u.request=i,_[1](u)}},"chunk-"+e,e)}else n[e]=0}},__webpack_require__.O.j=function(e){return 0===n[e]},i=function(e,r){var _,t,i=r[0],u=r[1],c=r[2],o=0;if(i.some(function(e){return 0!==n[e]})){for(_ in u)__webpack_require__.o(u,_)&&(__webpack_require__.m[_]=u[_]);if(c)var a=c(__webpack_require__)}for(e&&e(r);o<i.length;o++)t=i[o],__webpack_require__.o(n,t)&&n[t]&&n[t][0](),n[t]=0;return __webpack_require__.O(a)},(u=self.webpackChunk_N_E=self.webpackChunk_N_E||[]).forEach(i.bind(null,0)),u.push=i.bind(null,u.push.bind(u))}();
//# sourceMappingURL=webpack-052f8e41ec24217f.js.map

View file

@ -1,2 +0,0 @@
.gallery_GalleryPage__QyCLn{flex-direction:column}.gallery_Tools__COicv{position:-webkit-sticky;position:sticky;top:0;flex:0 0 auto;padding:10px;text-align:center;display:grid;grid-template-columns:1fr auto 1fr;align-items:center;background:rgba(0,0,0,.7);z-index:2}.gallery_Tools__COicv select:focus{outline:none;box-shadow:0 0 1px 1px rgba(0,0,0,.5),0 0 2px 3px #98ffd4}.gallery_Back__xvbOe{justify-self:start;display:inline-flex;align-items:center;gap:4px;color:#fff;text-decoration:none;font-size:14px}.gallery_IconLink__7NlBA{justify-self:end;display:grid;place-content:center;color:hsla(0,0%,100%,.3)}.gallery_IconLink__7NlBA:hover{color:#fff}.gallery_Gallery__ZMJE_{flex:0 0 auto;display:grid;width:100%;background:#0c1f28;grid-template-columns:repeat(auto-fit,minmax(280px,1fr))}.gallery_Skin__Ep_rb{position:relative;font-size:12px;text-align:center;overflow:hidden;padding-bottom:32px}.gallery_Preview__JGf2f{display:block;width:100%;height:auto}.gallery_Name__W9Aoc{position:absolute;bottom:16px;left:50%;transform:translate(-50%);display:inline-block;white-space:nowrap;color:#fff;background:rgba(0,0,0,.5);padding:3px 10px;border-radius:9999px;opacity:.5}.gallery_Skin__Ep_rb:hover .gallery_Name__W9Aoc{opacity:1}@keyframes gallery_spin__EVmH5{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.gallery_Spinner__9jTLL{flex:0 0 auto;margin:auto;font-size:64px;animation:gallery_spin__EVmH5 2s linear infinite}@media (max-width:479px){.gallery_Back__xvbOe .gallery_Label__kJfDw{display:none}}
/*# sourceMappingURL=4d43ac65e204759a.css.map*/

View file

@ -0,0 +1,2 @@
.gallery_GalleryPage__QyCLn{flex-direction:column}.gallery_Tools__COicv{position:-webkit-sticky;position:sticky;top:0;flex:0 0 auto;padding:10px;text-align:center;display:grid;grid-template-columns:1fr auto 1fr;align-items:center;background:rgba(0,0,0,.7);z-index:2}.gallery_Tools__COicv select:focus{outline:none;box-shadow:0 0 1px 1px rgba(0,0,0,.5),0 0 2px 3px #98ffd4}.gallery_Back__xvbOe{justify-self:start;display:inline-flex;align-items:center;gap:4px;color:#fff;text-decoration:none;font-size:14px}.gallery_IconLink__7NlBA{justify-self:end;display:grid;place-content:center;color:hsla(0,0%,100%,.3)}.gallery_IconLink__7NlBA:hover{color:#fff}.gallery_Gallery__ZMJE_{flex:0 0 auto;display:grid;width:100%;background:#0c1f28;grid-template-columns:repeat(auto-fill,minmax(280px,1fr))}.gallery_Skin__Ep_rb{position:relative;font-size:12px;text-align:center;overflow:hidden;padding-bottom:32px}.gallery_Preview__JGf2f{display:block;width:100%;height:auto}.gallery_Name__W9Aoc{position:absolute;bottom:16px;left:50%;transform:translate(-50%);display:inline-block;white-space:nowrap;color:#fff;background:rgba(0,0,0,.5);padding:3px 10px;border-radius:9999px;opacity:.5}.gallery_Skin__Ep_rb:hover .gallery_Name__W9Aoc{opacity:1}@keyframes gallery_spin__EVmH5{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.gallery_Spinner__9jTLL{flex:0 0 auto;margin:auto;font-size:64px;animation:gallery_spin__EVmH5 2s linear infinite}@media (max-width:479px){.gallery_Back__xvbOe .gallery_Label__kJfDw{display:none}}
/*# sourceMappingURL=922e89893536f2f9.css.map*/

View file

@ -1 +1 @@
{"version":3,"sources":["webpack://_N_E/src/pages/gallery.module.css"],"names":[],"mappings":"AAAA,4BACE,qBACF,CAEA,sBACE,uBAAgB,CAAhB,eAAgB,CAChB,KAAM,CACN,aAAc,CACd,YAAa,CACb,iBAAkB,CAClB,YAAa,CACb,kCAAmC,CACnC,kBAAmB,CACnB,yBAA8B,CAC9B,SACF,CAEA,mCACE,YAAa,CACb,yDACF,CAEA,qBACE,kBAAmB,CACnB,mBAAoB,CACpB,kBAAmB,CACnB,OAAQ,CACR,UAAW,CACX,oBAAqB,CACrB,cACF,CAEA,yBACE,gBAAiB,CACjB,YAAa,CACb,oBAAqB,CACrB,wBACF,CAEA,+BACE,UACF,CAEA,wBACE,aAAc,CACd,YAAa,CACb,UAAW,CACX,kBAA2B,CAC3B,wDACF,CAEA,qBACE,iBAAkB,CAClB,cAAe,CACf,iBAAkB,CAClB,eAAgB,CAChB,mBACF,CAEA,wBACE,aAAc,CACd,UAAW,CACX,WACF,CAEA,qBACE,iBAAkB,CAClB,WAAY,CACZ,QAAS,CACT,yBAA6B,CAC7B,oBAAqB,CACrB,kBAAmB,CACnB,UAAW,CACX,yBAA8B,CAC9B,gBAAiB,CACjB,oBAAqB,CACrB,UACF,CAEA,gDACE,SACF,CAEA,+BACE,GACE,sBACF,CAEA,GACE,uBACF,CACF,CAEA,wBACE,aAAc,CACd,WAAY,CACZ,cAAe,CACf,gDACF,CAEA,yBACE,2CACE,YACF,CACF","file":"static/css/4d43ac65e204759a.css","sourcesContent":[".GalleryPage {\n flex-direction: column;\n}\n\n.Tools {\n position: sticky;\n top: 0;\n flex: 0 0 auto;\n padding: 10px;\n text-align: center;\n display: grid;\n grid-template-columns: 1fr auto 1fr;\n align-items: center;\n background: rgba(0, 0, 0, 0.7);\n z-index: 2;\n}\n\n.Tools select:focus {\n outline: none;\n box-shadow: 0 0 1px 1px rgba(0, 0, 0, 0.5), 0 0 2px 3px rgb(152, 255, 212);\n}\n\n.Back {\n justify-self: start;\n display: inline-flex;\n align-items: center;\n gap: 4px;\n color: #fff;\n text-decoration: none;\n font-size: 14px;\n}\n\n.IconLink {\n justify-self: end;\n display: grid;\n place-content: center;\n color: rgba(255, 255, 255, 0.3);\n}\n\n.IconLink:hover {\n color: rgba(255, 255, 255, 1);\n}\n\n.Gallery {\n flex: 0 0 auto;\n display: grid;\n width: 100%;\n background: rgb(12, 31, 40);\n grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));\n}\n\n.Skin {\n position: relative;\n font-size: 12px;\n text-align: center;\n overflow: hidden;\n padding-bottom: 32px;\n}\n\n.Preview {\n display: block;\n width: 100%;\n height: auto;\n}\n\n.Name {\n position: absolute;\n bottom: 16px;\n left: 50%;\n transform: translate(-50%, 0);\n display: inline-block;\n white-space: nowrap;\n color: #fff;\n background: rgba(0, 0, 0, 0.5);\n padding: 3px 10px;\n border-radius: 9999px;\n opacity: 0.5;\n}\n\n.Skin:hover .Name {\n opacity: 1;\n}\n\n@keyframes spin {\n 0% {\n transform: rotate(0deg);\n }\n\n 100% {\n transform: rotate(360deg);\n }\n}\n\n.Spinner {\n flex: 0 0 auto;\n margin: auto;\n font-size: 64px;\n animation: spin 2s linear infinite;\n}\n\n@media (max-width: 479px) {\n .Back .Label {\n display: none;\n }\n}\n"],"sourceRoot":""}
{"version":3,"sources":["webpack://_N_E/src/pages/gallery.module.css"],"names":[],"mappings":"AAAA,4BACE,qBACF,CAEA,sBACE,uBAAgB,CAAhB,eAAgB,CAChB,KAAM,CACN,aAAc,CACd,YAAa,CACb,iBAAkB,CAClB,YAAa,CACb,kCAAmC,CACnC,kBAAmB,CACnB,yBAA8B,CAC9B,SACF,CAEA,mCACE,YAAa,CACb,yDACF,CAEA,qBACE,kBAAmB,CACnB,mBAAoB,CACpB,kBAAmB,CACnB,OAAQ,CACR,UAAW,CACX,oBAAqB,CACrB,cACF,CAEA,yBACE,gBAAiB,CACjB,YAAa,CACb,oBAAqB,CACrB,wBACF,CAEA,+BACE,UACF,CAEA,wBACE,aAAc,CACd,YAAa,CACb,UAAW,CACX,kBAA2B,CAC3B,yDACF,CAEA,qBACE,iBAAkB,CAClB,cAAe,CACf,iBAAkB,CAClB,eAAgB,CAChB,mBACF,CAEA,wBACE,aAAc,CACd,UAAW,CACX,WACF,CAEA,qBACE,iBAAkB,CAClB,WAAY,CACZ,QAAS,CACT,yBAA6B,CAC7B,oBAAqB,CACrB,kBAAmB,CACnB,UAAW,CACX,yBAA8B,CAC9B,gBAAiB,CACjB,oBAAqB,CACrB,UACF,CAEA,gDACE,SACF,CAEA,+BACE,GACE,sBACF,CAEA,GACE,uBACF,CACF,CAEA,wBACE,aAAc,CACd,WAAY,CACZ,cAAe,CACf,gDACF,CAEA,yBACE,2CACE,YACF,CACF","file":"static/css/922e89893536f2f9.css","sourcesContent":[".GalleryPage {\n flex-direction: column;\n}\n\n.Tools {\n position: sticky;\n top: 0;\n flex: 0 0 auto;\n padding: 10px;\n text-align: center;\n display: grid;\n grid-template-columns: 1fr auto 1fr;\n align-items: center;\n background: rgba(0, 0, 0, 0.7);\n z-index: 2;\n}\n\n.Tools select:focus {\n outline: none;\n box-shadow: 0 0 1px 1px rgba(0, 0, 0, 0.5), 0 0 2px 3px rgb(152, 255, 212);\n}\n\n.Back {\n justify-self: start;\n display: inline-flex;\n align-items: center;\n gap: 4px;\n color: #fff;\n text-decoration: none;\n font-size: 14px;\n}\n\n.IconLink {\n justify-self: end;\n display: grid;\n place-content: center;\n color: rgba(255, 255, 255, 0.3);\n}\n\n.IconLink:hover {\n color: rgba(255, 255, 255, 1);\n}\n\n.Gallery {\n flex: 0 0 auto;\n display: grid;\n width: 100%;\n background: rgb(12, 31, 40);\n grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));\n}\n\n.Skin {\n position: relative;\n font-size: 12px;\n text-align: center;\n overflow: hidden;\n padding-bottom: 32px;\n}\n\n.Preview {\n display: block;\n width: 100%;\n height: auto;\n}\n\n.Name {\n position: absolute;\n bottom: 16px;\n left: 50%;\n transform: translate(-50%, 0);\n display: inline-block;\n white-space: nowrap;\n color: #fff;\n background: rgba(0, 0, 0, 0.5);\n padding: 3px 10px;\n border-radius: 9999px;\n opacity: 0.5;\n}\n\n.Skin:hover .Name {\n opacity: 1;\n}\n\n@keyframes spin {\n 0% {\n transform: rotate(0deg);\n }\n\n 100% {\n transform: rotate(360deg);\n }\n}\n\n.Spinner {\n flex: 0 0 auto;\n margin: auto;\n font-size: 64px;\n animation: spin 2s linear infinite;\n}\n\n@media (max-width: 479px) {\n .Back .Label {\n display: none;\n }\n}\n"],"sourceRoot":""}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View file

@ -30,7 +30,8 @@ export default function WarriorViewer() {
animationPaused={animationPaused}
timeScale={slowModeEnabled ? 0.05 : 0.5}
cameraOrbit={
selectedModelType === "weapon" ? "315deg 70deg 105%" : undefined
cameraOverrides[selectedModel]?.orbit ??
(selectedModelType === "weapon" ? "315deg 70deg 105%" : undefined)
}
cameraTarget={cameraOverrides[selectedModel]?.target}
fieldOfView={cameraOverrides[selectedModel]?.fov}

View file

@ -46,7 +46,7 @@
display: grid;
width: 100%;
background: rgb(12, 31, 40);
grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
}
.Skin {

View file

@ -79,15 +79,31 @@ export default function GalleryPage() {
value={selectedModel}
>
<option value="new">All new skins </option>
<option value="lmale">Human Male &middot; Light</option>
<option value="mmale">Human Male &middot; Medium</option>
<option value="hmale">Human Male &middot; Heavy</option>
<option value="lfemale">Human Female &middot; Light</option>
<option value="mfemale">Human Female &middot; Medium</option>
<option value="hfemale">Human Female &middot; Heavy</option>
<option value="lbioderm">Bioderm &middot; Light</option>
<option value="mbioderm">Bioderm &middot; Medium</option>
<option value="hbioderm">Bioderm &middot; Heavy</option>
<optgroup label="Players" data-model-type="player">
<option value="lmale">Human Male &bull; Light</option>
<option value="mmale">Human Male &bull; Medium</option>
<option value="hmale">Human Male &bull; Heavy</option>
<option value="lfemale">Human Female &bull; Light</option>
<option value="mfemale">Human Female &bull; Medium</option>
<option value="hfemale">Human Female &bull; Heavy</option>
<option value="lbioderm">Bioderm &bull; Light</option>
<option value="mbioderm">Bioderm &bull; Medium</option>
<option value="hbioderm">Bioderm &bull; Heavy</option>
</optgroup>
<optgroup label="Weapons" data-model-type="weapon">
<option value="disc">Disc Launcher</option>
<option value="chaingun">Chaingun</option>
<option value="grenade_launcher">Grenade Launcher</option>
<option value="sniper">Laser Rifle</option>
<option value="plasmathrower">Plasma Cannon</option>
<option value="energy">Blaster</option>
<option value="shocklance">Shocklance</option>
<option value="elf">ELF Projector</option>
<option value="missile">Missile Launcher</option>
<option value="mortar">Mortar</option>
<option value="repair">Repair Pack</option>
<option value="targeting">Targeting Laser</option>
</optgroup>
</select>
<a
href="https://github.com/exogen/t2-model-skinner"