From cdbff66aa895f1b50671cb4119bfe94a81556afe Mon Sep 17 00:00:00 2001 From: Hugo Bourgeon Date: Thu, 8 Aug 2024 16:38:35 +0200 Subject: [PATCH] Game - Added more ball in scene - Modify Lambert texture to Physical - Implement RectAreaLight in scene --- site/game/elements.js | 15 +++- site/game/main.js | 68 +++++++++++++----- site/game/map.js | 6 +- .../Class/__pycache__/User.cpython-310.pyc | Bin 0 -> 3522 bytes .../getPrivateListMessage.cpython-310.pyc | Bin 0 -> 1081 bytes .../getPrivateListUser.cpython-310.pyc | Bin 0 -> 1125 bytes .../__pycache__/login.cpython-310.pyc | Bin 0 -> 2565 bytes .../sendPrivateMessage.cpython-310.pyc | Bin 0 -> 740 bytes 8 files changed, 66 insertions(+), 23 deletions(-) create mode 100644 websocket-server/Class/__pycache__/User.cpython-310.pyc create mode 100644 websocket-server/typeRequets/__pycache__/getPrivateListMessage.cpython-310.pyc create mode 100644 websocket-server/typeRequets/__pycache__/getPrivateListUser.cpython-310.pyc create mode 100644 websocket-server/typeRequets/__pycache__/login.cpython-310.pyc create mode 100644 websocket-server/typeRequets/__pycache__/sendPrivateMessage.cpython-310.pyc diff --git a/site/game/elements.js b/site/game/elements.js index 37cdeb6..f36ca01 100644 --- a/site/game/elements.js +++ b/site/game/elements.js @@ -6,7 +6,7 @@ /* By: hubourge +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2024/08/07 16:07:51 by hubourge #+# #+# */ -/* Updated: 2024/08/07 16:12:33 by hubourge ### ########.fr */ +/* Updated: 2024/08/08 15:37:06 by hubourge ### ########.fr */ /* */ /* ************************************************************************** */ @@ -20,7 +20,7 @@ let BoxThickness = 0.1; function createBox(scene, x, y, z) { const geometryBox = new THREE.BoxGeometry(BoxWidth, BoxHeight, BoxThickness); - const materialBox = new THREE.MeshLambertMaterial({ + const materialBox = new THREE.MeshPhysicalMaterial({ color: 0xff0000, }); const box = new THREE.Mesh(geometryBox, materialBox); @@ -31,4 +31,15 @@ function createBox(scene, x, y, z) return box; } +function createBall(scene, x, y, z, geometryBall, materialBall) { + const ball = new THREE.Mesh(geometryBall, materialBall); + ball.position.x = x; + ball.position.y = y; + ball.position.z = z; + ball.castShadow = true; + scene.add(ball); + return ball; +} + +export { createBall }; export { createBox }; \ No newline at end of file diff --git a/site/game/main.js b/site/game/main.js index c9ffd70..bae6c17 100644 --- a/site/game/main.js +++ b/site/game/main.js @@ -6,18 +6,20 @@ /* By: hubourge +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2024/07/30 13:50:49 by edbernar #+# #+# */ -/* Updated: 2024/08/07 16:52:45 by hubourge ### ########.fr */ +/* Updated: 2024/08/08 16:33:16 by hubourge ### ########.fr */ /* */ /* ************************************************************************** */ import { sendRequest } from './websocket.js'; import { MoveObject } from './controls.js'; -import { createBox } from './elements.js'; import * as THREE from 'three'; import Stats from 'stats.js'; import { OrbitControls } from 'three/examples/jsm/controls/OrbitControls.js'; import { createSpotLight, refreshSpotLight, createLightAmbient, createLightPoint, refreshLightPoint } from './light.js'; import { createMap } from './map.js'; +import { createBox } from './elements.js'; +import { createBall } from './elements.js'; +import { RectAreaLightUniformsLib } from 'three/examples/jsm/lights/RectAreaLightUniformsLib.js'; let time = Date.now(); @@ -27,12 +29,12 @@ const renderer = new THREE.WebGLRenderer(); renderer.setSize(window.innerWidth, window.innerHeight); document.body.appendChild(renderer.domElement); -// ------------------- Stats ------------------- // +// ------------------- Stats -------------------- // const stats = new Stats(); stats.showPanel(0); // 0: fps, 1: ms, 2: mémoire document.body.appendChild(stats.dom); -// ------------------- Scene ------------------- // +// ------------------- Scene -------------------- // scene.background = new THREE.Color(0x1a1a1a); // ------------------- Shadow ------------------- // @@ -44,47 +46,77 @@ camera.position.z = 4; camera.position.y = 3; camera.rotation.x = -(Math.PI / 4); -// ------------------- Ball ------------------- // +// ------------------- Ball --------------------- // const geometryBall = new THREE.SphereGeometry(0.1, 32, 32); -const materialBall = new THREE.MeshLambertMaterial({ color: 0xffffff }); -const ball = new THREE.Mesh(geometryBall, materialBall); -ball.position.y = 0.1; -ball.castShadow = true; -scene.add(ball); +const materialBall = new THREE.MeshPhysicalMaterial({ color: 0xffffff }); + +const ball1 = createBall(scene, 0, 0.1, 0, geometryBall, materialBall); +const ball2 = createBall(scene, 2, 0.1, 0, geometryBall, materialBall); +const ball3 = createBall(scene, 2, 0.1, 2, geometryBall, materialBall); +const ball4 = createBall(scene, 0, 0.1, 0, geometryBall, materialBall); +const ball5 = createBall(scene, 2, 0.1, -1.5, geometryBall, materialBall); + +// ------------------- RectAreaLight ------------ // +RectAreaLightUniformsLib.init(); +let width = 9; +let height = 1; +let intensity = 10; +const rectLightUp = new THREE.RectAreaLight( 0xff0000, intensity, width, height ); +rectLightUp.position.set( 0, 0, -2.24); +rectLightUp.rotation.y = Math.PI; +scene.add( rectLightUp ) + +width = 9; +height = 1; +intensity = 5; +const rectLightDown = new THREE.RectAreaLight( 0x0000ff, intensity, width, height ); +rectLightDown.position.set( 0, 0, 2.24); +scene.add( rectLightDown ) // --------------- Box Constrols -------------- // const boxLeft = createBox(scene, -4.45, 0.1 / 2, 0); const boxRight = createBox(scene, 4.45, 0.1 / 2, 0); const controlBoxLeft = new MoveObject(boxLeft); -let spotLight = createSpotLight(0xffffff, ball, scene); +let spotLight = createSpotLight(0xffffff, ball4, scene); let lightAmbient = createLightAmbient(scene); let lightPoint = createLightPoint(scene); createMap(scene); - const controls = new OrbitControls(camera, renderer.domElement); -camera.position.set(0, 1, 5); +camera.position.set(0, 4, 5); controls.update(); - - function animate() { stats.begin(); if (Date.now() - time > 10000) { time = Date.now(); - spotLight = refreshSpotLight(scene, spotLight, ball); + spotLight = refreshSpotLight(scene, spotLight, ball4); lightPoint = refreshLightPoint(scene, lightPoint); } // controls.update(); - ball.position.x = Math.sin(Date.now() * 0.001) * 2; - ball.position.z = Math.cos(Date.now() * 0.001) * 2; + updateBalls(); renderer.render(scene, camera); controlBoxLeft.update(); stats.end(); } +function updateBalls() { + ball1.position.z = Math.sin(Date.now() * 0.001) * 2; + + ball2.position.x = Math.sin(Date.now() * 0.001) * 3.5; + + ball3.position.x = Math.sin(Date.now() * 0.001) * 3.5; + ball3.position.z = Math.sin(Date.now() * 0.001) * 2; + + ball4.position.z = Math.sin(Date.now() * 0.001) * 2; + ball4.position.x = Math.cos(Date.now() * 0.001) * 2; + + ball5.position.y = Math.sin(Date.now() * 0.001) * 0.5 + 0.7; +} + + renderer.setAnimationLoop(animate) document.addEventListener("wheel", onDocumentWheel, false); diff --git a/site/game/map.js b/site/game/map.js index 2ac089e..ed48400 100644 --- a/site/game/map.js +++ b/site/game/map.js @@ -6,7 +6,7 @@ /* By: hubourge +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2024/07/30 13:50:51 by edbernar #+# #+# */ -/* Updated: 2024/08/07 16:26:17 by hubourge ### ########.fr */ +/* Updated: 2024/08/08 15:36:48 by hubourge ### ########.fr */ /* */ /* ************************************************************************** */ @@ -26,7 +26,7 @@ function createMap(scene) { function createWall(scene, x, y, z, thickness) { const geometryWall = new THREE.BoxGeometry(9, 0.5, thickness); - const materialWall = new THREE.MeshLambertMaterial({ + const materialWall = new THREE.MeshPhysicalMaterial({ color: 0x3b3b3b, }); const wall = new THREE.Mesh(geometryWall, materialWall); @@ -38,7 +38,7 @@ function createWall(scene, x, y, z, thickness) { function createGround(scene) { const geometry = new THREE.PlaneGeometry(9, 4.5, 1); - const material = new THREE.MeshLambertMaterial({ + const material = new THREE.MeshPhysicalMaterial({ color: 0x3b3b3b, }); const plane = new THREE.Mesh(geometry, material); diff --git a/websocket-server/Class/__pycache__/User.cpython-310.pyc b/websocket-server/Class/__pycache__/User.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..4a2a25b74076193cf1bd1200a9493433fba68b38 GIT binary patch literal 3522 zcmbVPO>f-B8J-z(ce&rPEIa;48@5H8ECP9zkJF|p0ys`=AlVj;8o}!V#EL^HE3HUn z$hE7*I!GWNdkc_L57N=M9{La3UqPS+`hf!e134II-RGSlDek6+q7-(9GxN^O%jbRO znO9M}-C%hB{HH(c_0|~sJ2lFWg~ogM#kWvMCi#?&OwC7Jx5Y^8vyt^7lR{cgn6ysC z$d>#Q*0Y~s4jcMZmY-tHU!yl*w9ZIKKC&duv_=*Ds?r|SWJOk=u#qEc(m`F9mt|cx zp72paHf0MvP1%+m)Gds3sRZ{B?H_M1nGP5rpT;E_AS7VhmR3yLunIPwpJB)#P4^E`h#3Bn{!tK;M2 zAe23k+Ho-5Q#H8ul&L1F=Rfa=qNxr+l^*wKj^<7`LiRM+W*D&$9KGKH4bAR zD+Hk*^oy-F;pM|X^>0tdaoi_ZZXKVbj^|CnN#c1o2n7d4l{>u3JAB^OHu<>EF_u5{ zUO-38(9m7Up+hauBTfZpc(?ElRu~91jJARCtpY~c%9WG2KqEtOGlTJYS6jIGGkD&; zC-Vl?gPyG_a70y6q|OZMh2x_j6%+ZCE8@5Y&=f7Qsd=6Zrk>}b5t9LZc#E%b`(N`` z_UYQdw=tMMvn&D1DHwFnzqu}Hgak7>+G!fq?VrqU7)k2xt2XPdp6*)UPjxXTsRWyKU z4XlgD`+<51yQ&QoX^kd)I##RT){Cuw0<(A>h4@kc-VXmh*hT!RzLH;9I!c3MJtI=55p4!U+v037r z>~QuNYtC@nT*tBDNGPqG53=K1Bn;x(@gd zu0tzs(VL{8T|+3K4bnOnCE#rWQC2?Dr$Gl(sMiupR=;x|YC}c5n78kR569Dqbd%^X z2q(QCG4{ds3eXoIL-i(mC);Fdu+D()*=a>DpkBeECA5S=i>SK-RoW~q_AbU_ItB#U z24C02F37#6p(>d#=?G~GA$FVA_#1dK|0kiO?m|Zhsk@}1ns!D%b1j9w7%jzk1@AWL z>U*s9k5LJkwn#Yr|rPg|<^fZ-0SrYw+!_u(9tNFRNx1bhe#e&@cAr=lO>+24oEWZ8Unl7Gf-XK3-NX7W-#3YtrV~= zdZ>Re?;<^+Ya=rqC{hCD(hBDGC^DK&?GH3LS@vZ!mnU*0^Fddo#ZC8M{^Omo3Mb)y zW;SrcC_$Dq8&6%jFWkLI9gP!p?PB}l@-i1yu8>(vSJ|OeKcHEeMA98dn+)`ol=mK= zB%fgy`s@!T(+nAHM(NHTx;$^*{b&-FhgQ@h_W-x(#Z|c!m0sgQF%(i~rnFvMqBkwq zZO=>8*bjEc{-NikPO|ImDauLed*1#u+8s|J*65tVkuXC3Lf2hd%NUS0DXPCTbkLXW ziWKRK;6qH&X^4PQQ~E-G0#Za`B=C1t>vuj@9x)bc`X=s(d~Qdt(}0|9@Yc80TGd7- zsFSZ-7dU(;7c8`&Ab|EaNj=W^IV-6=G$mIcIxSE6uqRCJQSqk{@-<2lR=<&MrG&nb zupybH@2T>6LyN1K*T+z=OQEHV4@fsW?ywAZqGhzZp`SfbQ+SGTM3Vjvm zoAp&{>f4sQD0xPixS||V(Y;5rVw&JEo9BOyaH@@}({S32Mr%{s;Xi>!k&MS_Z5*G3 i{vc4H1IzKhv^D~kU4TaNk5N=zni~j)6%<%{S literal 0 HcmV?d00001 diff --git a/websocket-server/typeRequets/__pycache__/getPrivateListMessage.cpython-310.pyc b/websocket-server/typeRequets/__pycache__/getPrivateListMessage.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..0d47c91517fca1711aa9f6b882f8f4cbb8003275 GIT binary patch literal 1081 zcma)4&2G~`5Z+xoj?<}d#DTT;o7wT~?94Y4OifJ?SiOVK^{-h%zTshf z;opa_RSkd>PFrM`a0Z&eO`bV6{?e>7+aE1^X0uUiSUh*kb}66Wlkdqc<9R*>(%|$t zDV`g_J7h~wcciyp4MnBpsj$)(N>v*|lf%M7>0W7NZfU_OtvQRO#pR-*&AJTQI_n00 zDEv^H9PXu#t7DFdWqJH+Y8m$_GHr&vj*uBh!o^HZmjQ|mdmXk~1>m#~JoIS@OdQb- z@}kgZF^x$`2aKDc5tAdzGgrxw&5||Jr(HY7`mC+P`D)GOqTXnFul8DPKj?I&3Zwml z*S*8Jg~g@imDRO7cO^bJng);*HH4z6GqUOf4;BcHHKX*PW}_v1WWsG$rM6TkJ-?x; z_ld|0aPddo@$1TI2Ee1!jA}t78^YNL+^7wNDQA0U^HF67VkuYnT==eV4n$1_?w$y5 zDIxcTbdZ*3q8kbDZ-{U^ZO>Ea&Su)2+nt`CX$W6PY+IUOCCy|Ba!@!)CN*iE-2{}E z;OH`d(`AB!w10uEUIM%WZU=NofLF%pECG(M_l=MZ446M-2rSPKp4nsa8nB)UG2&SO03?8!7Itx4e`2DtoB zTJOUzRRCabZI-9gbOIPeDQ|$WXr^gg0X<10v5rN?_RA!^U2X?FYKaFpN~#QC=a~T? SWz_u1tpAkXtzY(h-u?|0mjQzS literal 0 HcmV?d00001 diff --git a/websocket-server/typeRequets/__pycache__/getPrivateListUser.cpython-310.pyc b/websocket-server/typeRequets/__pycache__/getPrivateListUser.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..23ce98c31046c3de4cdb5352183a49b168464e5f GIT binary patch literal 1125 zcmb7C&2AG(5S|%NY$p(Y!p{QQJF-^e9y^I+BZP=ZfFQ84KrX&S?d~3Xl9}$It0%@5 z2axt9kaB<{*L{V31}=R=oKVhtSvYLX1h0@*T4{S!)n8TD)K^t1wY-;Bv?KgMebN89kxbX#foxVNO7XZ2BN~hFTl}utO zX7|U&WN?d+2~CoWW25-OWarDT!?Oi3f8A$gW4%7L`Q_9_Y22~#QwvM39}cJm+` z#m8OGY53NcG!?cAhMF8~1p}-XbG!H~XG|FiV_Q>ER5Cx9Gsn#=mT@{NDcfQAlC-;I zW1aLm2sYMxov7Dc4cCTIi*nXxYpqtN)uW;tiKwLhcv5lf(k2+KGBpu;wl~j=d@+m# zkIn2q`dK64>S;d|%MfK(T%<|{kkF~n!NaYR=j5$l@&L^f6Ca7$y*W?ZYJ%j9pH7Wx zGg0~wg4W|We6;gO|N0W3Oag&X(w-yZ5w5YF{$x(c=Q+I52m+C}JXJr0gHiV{`%*UBx^OS4@+wQQ#y>N3g z*c*%T?_a(yI?O9JP>Z9^r-&oLB5j5O>W5F){lOAl1!c?+YS^of()GHWNMwXTTpswJ9 lt=~=+&l7RSMGNkus-La9b=UJfxA^>TUhV%P|I@jfe*<5Ab=r=Vo_pj))64o5=bN>L4=x!s*w;~d)D^G_O3It zPGZZUK~%l+c=cv3{aP&G{@+%OWa9ShF-8)^ToN`+N+l*2>m0MXSg$+mppqZm(4r5Y)Tv_O^9d1bj+{LODtM47jmo88oNr$4WGI5P#j{!a1e#Xsl!mVwC$F|v~(J^=& zbQ~uSXivlWQkk3q&K(21qfTG?isH->{-E+k= zBF@4CUf#~G%glzwW*v4ZGk2Hn%sp5VZXk>B2rnplnRTxq!(!Eo zF2H(gp2*;fed4V)J+Rk~m}<0CQnzljmJsP{@FaNz1lzLN2t7fEbseEG%3dbpN2xdm zgZsnqBaHT7nE3|`vj72ussUQ`KR6qXx z4DcW(z%Ffx6F70tiYKw}GzvV?uJ{02YOr?(cY%R<=#aP{I07T}_7QANP?3hAA_dVe z7>#)8X#5Zwk0AOsb++x0@5uMer<*JyE3`w=-CygtTLG6>8AL{Gp?$m(MGbj1lW`mV zln=0KkS~6Nr=|^M3xrEX zQW<40QiC#bqo#bIgThpC9W+i(8BI|W=V1y?kc}_^Joh+c2ypdFT_&B}J+PHY5Nyk& z1I&CiYz!FU5_IfO;zJnik$4VXA6_0)(&JtN5$E4XOs@%qqyz~`vqyGVWOP%`ZYtR) z>Ab_TpL8z5F8%{9&DBVsD<{{>Ef@E)gs&?!K`CsVLh&w^5?3K1l+u{N) zl|rF2$?gU;2Y7s4u66@Qw{$wOuhm1|ta%?{nvl0a*h!nR0Yq03^6(q78!B;8g!Nlj*2TV`Yh z{{qi@Xpi3fAM~%tRS^6aM9`P1;({6S&HLW_lK17wt*t78b@JuY@LLI?ua?|g1ju99 z`W^s73{Oym`UoRNSm8bDV@5m3D}IM6^00AO5c7B(@z5UpyNVFlHlJbZ4*>7*@?nY@ zK0q0X(F&)8ku}LkN>*^~8fS!2s22|qU@6BkAYslmWtD4^6;iY+q@X+nQ!TLb0{$ID zQA`&tj53PR@(yTwz+(Z>iO9qB));uXbjrHNM<;dkr^gxUB28j@Mrx$$ai~YSMd2@s>U;T@F3z^2bbK?p^}jyu{7mSikOSoqsqP>_$Uy9 zPgL15YRBXe=(w2jJhj|A6|-P6X7xXJ)is zkV8odQ?ZGrQc`(EQ%N*ePbPuZc@I^{oxIdiJP(w?{3BAkkopn&VyOL*gx3BjxsZvv zPv3^-x(-0Dh~wZIu3~~q`A2Z|=iSmazK@+N@=NW5=*%PeAaar$zX5w7FwSu# QSu)`#7?`F2wOWn*23*I!t^fc4 literal 0 HcmV?d00001