From 975c7d31e6e6ee1fb54c0c7a997331cdd6bde357 Mon Sep 17 00:00:00 2001 From: toast Date: Sun, 14 Apr 2024 17:39:13 +0900 Subject: [PATCH] first commit --- android-chrome-192x192.png | Bin 0 -> 3895 bytes android-chrome-512x512.png | Bin 0 -> 15103 bytes apple-touch-icon.png | Bin 0 -> 3415 bytes favicon-16x16.png | Bin 0 -> 367 bytes favicon-32x32.png | Bin 0 -> 701 bytes favicon.ico | Bin 0 -> 15406 bytes index.html | 88 ++++++++++++++++++++++ main.js | 150 +++++++++++++++++++++++++++++++++++++ model.glb | Bin 0 -> 23348 bytes site.webmanifest | 1 + 10 files changed, 239 insertions(+) create mode 100644 android-chrome-192x192.png create mode 100644 android-chrome-512x512.png create mode 100644 apple-touch-icon.png create mode 100644 favicon-16x16.png create mode 100644 favicon-32x32.png create mode 100644 favicon.ico create mode 100644 index.html create mode 100644 main.js create mode 100644 model.glb create mode 100644 site.webmanifest diff --git a/android-chrome-192x192.png b/android-chrome-192x192.png new file mode 100644 index 0000000000000000000000000000000000000000..3f1d7b7522af548daeb3c203863e9bb96076193a GIT binary patch literal 3895 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%0Dh_=A+T!&hRjEVTEfZ7~P6i)yhS}tsehw~s47ddC zpvUJjM}IsuGYwp-O(P5r5ih<>7~b_z(grt$&<}$6edL?GQ^;C?x3|Ukkypnd*CWI> zHw?9;TDWdRt6V_XPQ+8$jpw~+Utf>5WdcxdtAD>;`$v9o_jvlx!%r-XyYM_G3|N@j Km{5(pZ~P5=*}5|T literal 0 HcmV?d00001 diff --git a/android-chrome-512x512.png b/android-chrome-512x512.png new file mode 100644 index 0000000000000000000000000000000000000000..0f68f6209181fdadd6dec0c9877333dbfa815670 GIT binary patch literal 15103 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 GpZ*umZiHh1 literal 0 HcmV?d00001 diff --git a/apple-touch-icon.png b/apple-touch-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..2b81f8969f581a3d0a1d7f66b5daff2b3835b000 GIT binary patch literal 3415 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 N002ovPDHLkV1mjNpXmSq literal 0 HcmV?d00001 diff --git a/favicon-32x32.png b/favicon-32x32.png new file mode 100644 index 0000000000000000000000000000000000000000..136084c9c034fd58cfc5336e8c84874ea85790e6 GIT binary patch literal 701 zcmV;u0z&Px%cS%G+R9HvtmrH09Q51&%J9j3N=Oi^HG{HcksKrH-wxY$N3q`~#ii=VagxdOO zL~2cI60*26685#ktVm4poj9zLVZmfPIYoFPS(EK^2r-F-Nh zN@fZ0`0NPotBL&*@>o48Dew*eZ#N(ziI6H>uK9xl{S*LKxEd^X7c?d!j-Q?s}bY$9t`IgC^gGrXaK0gQE@8&cx&&$MyV>fF&o zTdY8dYCx2#(o{5`?k&rwyGfNx%?o>xhotXjhqrt1=nM8^af;+tAQUpJg*-Iv*WzyhJlVDlOs*r&EM&aWgulfZ)(L&A_a#5oi&o zs6&t#1yodwnMxelrpD*|LuH91DswIih#+lgd)wYVX!m^=u9ot!w1w$*Zt}~0oY!}L z=R4u(Y=1@b@C&*evU19sA0aXzG%uibIE-0vC&r9%9_)P%h?6F zRr+ZgkDno8<-#r$hDvkE%nj`5#d~bPnf;vJX8b%`W>~gqtLada(ejg_-5eqkn>L@S zVV4$Pg)vZE>#Mvg@6PW7Qa&VgDv8McZg^aQy(hhK{x&JKqLN7RBD=_sFX9|wpL)yd zb#MCHt-_c81Fkax01*J!Cwfr^`pv-PRemINt$>7X6cEu4??Gfk`z1q&w1kAFSjqHs z6U<)=5i6`-z{K^TKLP}<TLsXdl{EwgViV17t@I`*Zcseyp;lZOzF$T6Zx^UftFq zvv1nZsIFt2*ZdbfqnxyT)EmmbFZ7@4-yqJvP+b3{_UG$gzP*!wJIs4$INRgS-|Zdq zKi|&je^d^5Krgt0R{E0=>1Dt*^5K?yBwEf05(?Y4Uj0iCV2(8EThANXnICS}s-{JW z7=--7Ed#DY70o6F)2bOO6O;6r7Sk4_Z+U{{wqAXt1snJ}XWxpIX}wCp{qIt&+`1o` z&8=N;tvFzT`rEOMb2=OItJ&e$cjY%mAQ0FQS!XYDYvQq|W-jd)*4`c%9&Uj&hh)WS zEtWgbV6dVM&aH(p%6w1TuToibC_~ZhI(6jY1O}0Fxt8mHc{6Lkw6i*!K0bB57Sq1S z-PPvH_OUKc;H&<7(l+gXKlD$SI+}ze7ZbESqPNwezWOiSYh82Vw%ayGPqxXIC+}$d zKH6PI#CfH#7A)&k|D6-Kyx!Pc&SgFL|HkB%cwuk4+N%AxKO+==KC!!b+nqRuIMYj? zDFgp^1~5(nAzHE$K;tAp0=*~$lz~^7fgwbgFp^A6AN36L3P+KFhDZjxT|T&ktH*-x zl@0#iE)Fv{6cCBxd$1dK4H&TgnEWNg7kv<}9S?Fp;QVIvoo8ek!G;D~PzgTpfWgLb zgk$XO#mS#i&-uR?`<#(!0=YZ&N=V8!)G<&n@==%)~lZ&Ejuh-Uuglf!a2jgiAc_nm^?VkmS>%^uAC{nuQ3-s&{z>in+#8XW*t_< z=_WNRS)QbQ``rmvMC6j?`og+KJSWG=e@bIf@p)^E?PhV}Ck&rgI3vO+zkFB2)q7uU zNi4ml9zM6=DahXnHfaM9^V&Z> zbc4k+c3itLN+WPLkIJv?#(zaKtHm)u9DS^9%_u2rNy?V15Gh56RYea~&&KLV3){x$ zg?nqpf%2B5EV&x7O0h@1_g)i@E$Z5!@z3jqkMC4|H|MX9dFO2n%0K0w*9A}Rp6d_B znnO~vxR@u}J=53K!T-y^|G(Z#tuQHSn^B5A|k$?3IFgvdHF}o+i4q@SfuwhUf6f}BHh^K`}U8D+c^==ua76Q z3f_TO^lNU)-!&VSM-B!qR@>7VSl`7DQGT)F0mzTG$Y8;D@$)#@SRzqo57=HsPx~Og m+`qv2kN`IIK<^j1*6)kGm##B`zEK7!1C#;E0A=7`XW$>7NR8Y8 literal 0 HcmV?d00001 diff --git a/index.html b/index.html new file mode 100644 index 0000000..2b8df2e --- /dev/null +++ b/index.html @@ -0,0 +1,88 @@ + + + + + + toast + + + + + + + + + + + +
hold...
+ @lightly-toasted + + + \ No newline at end of file diff --git a/main.js b/main.js new file mode 100644 index 0000000..f7b2a7f --- /dev/null +++ b/main.js @@ -0,0 +1,150 @@ +import * as THREE from 'three'; +import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'; + +document.addEventListener('contextmenu', function(event) { + event.preventDefault(); +}); + +const message = document.getElementById('message'); + + +const githubProfile = document.getElementById('github'); +githubProfile.addEventListener('click', () => { + githubProfile.textContent = 'double click!' + setTimeout(() => { + githubProfile.textContent = '@lightly-toasted' + }, 1000) + return false; +}); + +const scene = new THREE.Scene(); +const camera = new THREE.PerspectiveCamera( 75, window.innerWidth / window.innerHeight, 0.1, 1000 ); + +const renderer = new THREE.WebGLRenderer(); +renderer.setSize( window.innerWidth, window.innerHeight ); + +window.addEventListener('resize', () => { + camera.aspect = window.innerWidth / window.innerHeight; + camera.updateProjectionMatrix(); + + renderer.setSize( window.innerWidth, window.innerHeight ); +}); + + +document.body.appendChild( renderer.domElement ); +renderer.setClearColor(0x000000, 0) + +const directionalLight = new THREE.AmbientLight(0xffffff, 3.6); +directionalLight.position.set(1, 1, 1); +scene.add(directionalLight); + +camera.position.z = 5; + +var loader = new GLTFLoader(); + +loader.load('model.glb', function ( gltf ) +{ + const toaster = gltf.scene; // sword 3D object is loaded + toaster.scale.set(3, 3, 3); + toaster.position.y = -.5; + toaster.rotation.set(0.4, 37, 0) + scene.add(toaster); + const burntTexture = toaster.children[0].children[0].children[3] + burntTexture.visible = false + + document.body.addEventListener('mousedown', onStart); + document.body.addEventListener('mouseup', onEnd); + document.body.addEventListener('touchstart', onStart); + document.body.addEventListener('touchend', onEnd); + + const mixer = new THREE.AnimationMixer( toaster ); + const actionStart = mixer.clipAction(gltf.animations[0]); + const actionEnd = mixer.clipAction(gltf.animations[1]); + + let time = 0 + let burntAt = 0 + let holdInterval; + + const tiers = [ + { + name: 'Eww!', + color: 'darkgray', + threshold: 200, + }, + { + name: 'Yucky', + color: 'gray', + threshold: 150, + }, + { + name: 'Meh.', + color: 'darkseagreen', + threshold: 100, + }, + { + name: 'Hmm...', + color: 'darkolivegreen', + threshold: 50, + }, + { + name: 'Tasty!', + color: 'lightblue', + threshold: 40, + }, + { + name: 'LEGENDARY', + color: 'goldenrod', + threshold: 2, + }, + { + name: 'PERFECT!', + color: 'gold', + threshold: 0, + } + ] + + function onStart() { + burntTexture.visible = false + message.style.color = 'white' + time = 0 + burntAt = Math.round(Math.random() * 5) + 5 + + holdInterval = setInterval(() => { + time++ + message.textContent = `${time / 100} / ${burntAt}` + }, 10) + actionEnd.stop(); + actionStart.play(); + actionStart.clampWhenFinished = true; + actionStart.loop = THREE.LoopOnce; + } + + function onEnd() { + const diff = burntAt * 100 - time + if (time < 100) message.textContent = 'hold...'; + else if (diff > 0) { + const resultTier = tiers.find(tier => diff >= tier.threshold); + message.style.color = resultTier.color; + message.textContent = `${resultTier.name} (-${diff / 100}s)`; + } else { + message.textContent = `Burnt! (+${-diff / 100}s)`; + message.style.color = 'black'; + burntTexture.visible = true + } + clearInterval(holdInterval) + actionStart.stop(); + actionEnd.play(); + actionEnd.clampWhenFinished = true; + actionEnd.loop = THREE.LoopOnce; + } + + const clock = new THREE.Clock(); + function animate() { + requestAnimationFrame(animate); + const delta = clock.getDelta(); + mixer.update(delta) + renderer.render(scene, camera); + } + + animate(); +} ); \ No newline at end of file diff --git a/model.glb b/model.glb new file mode 100644 index 0000000000000000000000000000000000000000..a3c792153fa6c236866e0c102bc489a452be97fc GIT binary patch literal 23348 zcmdU04UkmTm3}kG|A2!a;9qPSNwIFz_Iv%$f;J34Vu0aiP%I=)Pty!t%yf@EJp?5~ zp7=wIy2YXx;#RCKV=9SmS;S&%T~}u&5L~jFg`{??%&J>$Lb4{CRm;_^iiSPk?R&a! z{|vmQAE39meSYq_=iGbGIrqMI=h4~Kwxm(hG~WiQhNj)LwsqwWXSBCBo^j6I;oKHa z_a;(F=Uk`Z_BdV6&UiAOj%HG6;wmf1OXNNPL%0x3_92@3@ z+yTGe=MDRVp0E+}=)U+IJ?NU_aR)s?-4h6gbUhUC`+|N~g{WVMR!9blL+XmtjA@?T z@!l;ohJM$1w4F&sdou;w`USLYoLAc&ed%Oz-rfsn+XvemoN`pLEs3s8={Tjp2CvJv zQI$v~*|%54qQ0X!3$?Pbm2^gFPv#z?2Mc# z(cZE=2)aV9uuG?O&|SJA(m~0RfJ^so#7^JQw|R3seRCrIwfq^8r^VLaac3spx_PrW zh3F&zxjdfi%+RK6ghDQ7CYtWV3FY;L14h1mZ6=-AM8}FQcCTS{iO#lZ^9KW^W7ESl znA40+M9VNk3kGOj>d=B^y2Q>nOy`i#&Q;QNqiig7ExPX0ZCock;3*qiEeoXwLbk3{ zxZG=Xt(0N-ZCokC=c{9-48LLLO3|ZQ*y94u*t(+!4Lf)AV8zx@%Sr|Pw(jV` zkgYpK;AOwMEEEezWO{LXWPP~GO*Ung~yN7Odl9{$Ud+1ftuN$(Ou%-8MKqftZA1cuAE7U0i$C0-f9K}Q!E$)GQVJkw=i~3 zQRmv01}k98k>K z&UWU7UNz0D?TcsUj~ep*tTIEdn%MRG!+J*Bm>cw$t}4N0pEIl{{8=VP)#R?*8F;U; zwow%~BrhEa+|m;zXSrKs#u=Zjyj63&Zja!V%G##I`%={{OFBz}id3(B z>+n`hb^DxBL(2QZ`DgbMuN0rXv#=qNm|7f+c&uAKQO z@m5WI`}|VF2Ecw1urMonw=KTCRecNbR?YXioq~%K%b9|gZ;!h&RXB-i@QAN!;@jpC zUkw`oZ(n6+`x*SCHjfwB{D0kA_&OD0i4*F`N zCDoNmx5c+-`qFgUwZoZ6Zi>?dm#4pc=Tc`p@Soup%1k>`ZD0} zaIR`yyR2q-$(D_hsBSg@Qv;c_|K7O!t+^hb@NDcZ+*%cU`$ohgb~Hbu`yswsR!SG0v&!@7;(j*zY4+OEW$ zuf!b9yJ*fhySd>TfPy(%tP*n+iOTF~?sc2PB@dg!wTo)bD2WkVW)#iQrgAnxg1`3^ z%$0?SQ4%M3W3S(w5-E6XR%hoe2^GAK)@=?ipFBIf5SExL2^G9()o)G-6};z^m@5et zyh7A%4lfKmJ3Pdz=6ofgf+yrsa~o-kO40_4|8I~#gXDLv^!GhFsno+Mk?iTCzYO{) zQc``HJWi{XNYZ)Llj@THWx=_8*~-QELlk~U)96NNVLLiTc0F+Rq%fjkZ#^93Y6?B^h>;AjJ1l>yHDoRrrHGR}G+!+hYZ zhxvdiUmaWd7&NJ0l?M(!Amcgk21@6`GRzmUkWu5;3jR5Zahjz7aDZ&TRFq*HZNOC-;LOhv&N>-a`%F`KH*|o!3SBI^jN?lZAq_c+k#%z_W7`pmHra82nTIS9-vAizCm-G z1Lry<`-pZD0nKfIpdGS5AZU|nPD0So3!3#4mZu4#-K2_kK-=<2>WmQ7Brf8LaPXKf z-~idCb0(!tyjhw3}4X4rp5*NgEN;i30s1t_Xm~d;tf@w%q?k zj45Y$qNL$jYj>Cdp)%N+YktIKIF$o6^h*C}?zR?aiBxOOPf<^(30vb41&<@!j5VT1( zCn0F)1{rSwA#F*oIt~kZRomy%MmzZr@i-(QXv8yUhG@rm!E)e(2Fy`K%paE!H29za zxiTL#~%m)sB;kih`AyatP zQgG&HiHE)#RmNG5sqlfb9_I5Hm>-ey<>O)bEOeYkk49~fiAWj7!B=$_aQH_SOYuI) z(xlG<4rxnz)p1zRtJ*%7HV~f&Xzj4y1A<1Zg9a4wOE_qaDrn>ZXu#tn(@qtB00bS8 zG~f`$o#;#50YRf53Ls=)XOD!SAqSe}(av(LkLB#nBe6e|y)0}F&>#sSmY5G5e2#w= zhfE>P6`c91PR3aeWMB(?mM^!f@*`5dd^}e5ur27}F;vr8&@X*Pqq7$8gOJP@HI|3N zA!&YrZHPRfIdH5CntUl}g4JkKwgVog>Y$pH5VR&~z-sLg*$#+;JQe#aFZ%=10Gs!7@*X+X3?7uo?qzb9!xyYfiW zo_YG(`OiH4G{u~D{knDQNViFK`0^)D(~I2Nzk0??jK6i~I|ZD01I%ar1cmN(>-Mq! zg3Pn8=hVImj(EV0Y(^b3ihi&D-&0Wn4ZUlY zF4Ug=*DHTd#0|?9Eock1#=5q?`_bUe&+Z!49P0nWH8b}wXl#Gz;nt5XUNgA;t;W6n zdp@{(g5wtNYuY8ZJ-F`oKWzBk-J!?#IBp%GJ^SFrlSZ$fatEo>mMvbn=-Gwsy9lj$ z9N(4Wcw_&O4{zUp@`e#jFMjqfV>(Z^p1eOdw0QMp4=ueZd}{0W-LdVTd@%N&g9n=q zzcuz3?Uy=Qx?dQa9MDcQe*gH&1Dl(l5B$}*dhHle-IWm3ZpS$DjBO+g&@gL(I zN8WxbvUgh7_{Vm2FW%Ph&DMj{K6>eeRfn|SIiGCGhMIr8_`2Ec5B&J5r>1S4x3)|B z>qWcQ?Qg$n=BC$v*wECZ{f}eKq+fSD<|~P98Ha`sn%BreEKGa^%!o zxBX$-%;&BQ1Y-A(ICko9Z-`Id`PnCjhhBd9kmKY3`_lTWj%F_#J(+_n1~zn%V{ z{huCk{Pfsi$FWbxBqyzQ4{g?7y<*X2+WU>K9`pR*ktw4b)8=*F{Nz`szy1DzWBye4 zHy(?OU9|U*w&9IkFD_oL?fRhO;m%b#o_yf8Oxv@~fxcd*6LOS@7nY|NgVkBWs(U*!K1%jYt1xaNEv{e>2tnqf-yh zeXi-lTfXEye$9mJ4+67RZ$5DR^?yiR_Pd{dw`Kn5{f~bqwy9e6dQeaqSL%7`UjpQs(VE}-4?@jp3#z2#kP{gk1F4V&~P z^Gfrb9c#Wm(K|XdrumA89J_Zt=e%{+jDgwHjfv*Ik%#~CqCKyekF4I=boHsR9`jqV z<_Xt6`p!##e$YQ{&*RN^e0kvs*YoaQjz7||zh%$sW7=BpJvuS8fAaW0>979R;a3`d z^1!V3UeIp&bl+q9PA#3-u>QtXv&Mb%XaDUPJ+$kIf4leoV-uge_Ti^aJbLQrKbr4M obbR^Iqw8AQ#_ZV|(mz>pmFM!t@6DheZSt=sc}_apI#kd7KhS?6X#fBK literal 0 HcmV?d00001 diff --git a/site.webmanifest b/site.webmanifest new file mode 100644 index 0000000..45dc8a2 --- /dev/null +++ b/site.webmanifest @@ -0,0 +1 @@ +{"name":"","short_name":"","icons":[{"src":"/android-chrome-192x192.png","sizes":"192x192","type":"image/png"},{"src":"/android-chrome-512x512.png","sizes":"512x512","type":"image/png"}],"theme_color":"#ffffff","background_color":"#ffffff","display":"standalone"} \ No newline at end of file