From 53441d47858ac5bb27153ba1f5969fbb6af419a5 Mon Sep 17 00:00:00 2001 From: hubourge Date: Tue, 17 Sep 2024 18:02:35 +0200 Subject: [PATCH] merge --- .../static/javascript/multiOnlineGame/Map.js | 30 ++++++++++++- .../multiOnlineGame/multiOnlineGamePage.js | 40 ++++++++++++++++-- .../models3D/multiOnlineGame/fireworkv1.glb | Bin 0 -> 11552 bytes 3 files changed, 65 insertions(+), 5 deletions(-) create mode 100644 docker-compose/requirements/nginx/static/models3D/multiOnlineGame/fireworkv1.glb diff --git a/docker-compose/requirements/nginx/static/javascript/multiOnlineGame/Map.js b/docker-compose/requirements/nginx/static/javascript/multiOnlineGame/Map.js index a1b99df..1b86832 100644 --- a/docker-compose/requirements/nginx/static/javascript/multiOnlineGame/Map.js +++ b/docker-compose/requirements/nginx/static/javascript/multiOnlineGame/Map.js @@ -3,10 +3,10 @@ /* ::: :::::::: */ /* Map.js :+: :+: :+: */ /* +:+ +:+ +:+ */ -/* By: edbernar +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2024/08/20 14:52:55 by hubourge #+# #+# */ -/* Updated: 2024/09/17 13:59:13 by edbernar ### ########.fr */ +/* Updated: 2024/09/17 17:23:53 by hubourge ### ########.fr */ /* */ /* ************************************************************************** */ @@ -55,6 +55,9 @@ class Map ballObject = null; mapLength = 0; banner = null; + firework = null; + fireworkMixer = null; + fireworkAnimations = null; centerPos = { x: -1, y: -1, @@ -474,6 +477,26 @@ class Map scene.remove(this.banner); } + animationGoal() + { + loader.load('/static/models3D/multiOnlineGame/fireworkv1.glb', (gltf) => { + this.firework = gltf.scene.children[0]; + this.fireworkAnimations = gltf.animations; // Récupérez les animations du modèle + gltf = null; + this.firework.material = new THREE.MeshPhysicalMaterial({color: 0xff0000}); + scene.add(this.firework); + + this.fireworkMixer = new THREE.AnimationMixer(this.firework); + this.fireworkAnimations.forEach((clip) => { + this.fireworkMixer.clipAction(clip).play(); // Joue toutes les animations + }); + + console.log(this.firework); + }, undefined, function (error) { + console.error(error); + }); + } + #animationGravityChanger(group, onTop) { let geometryGC = new THREE.TorusGeometry(1.5, 0.05, 12, 24); @@ -541,6 +564,9 @@ class Map update(ball) { + if (this.mixer) { + this.mixer.update(0.016); // Le deltaTime, ajustez selon le temps entre les frames + } for (let i = 0; this.arrObject && i < this.arrObject.length; i++) { if (this.arrObject[i].name == "wallLeft") diff --git a/docker-compose/requirements/nginx/static/javascript/multiOnlineGame/multiOnlineGamePage.js b/docker-compose/requirements/nginx/static/javascript/multiOnlineGame/multiOnlineGamePage.js index 33e58de..6316da8 100644 --- a/docker-compose/requirements/nginx/static/javascript/multiOnlineGame/multiOnlineGamePage.js +++ b/docker-compose/requirements/nginx/static/javascript/multiOnlineGame/multiOnlineGamePage.js @@ -3,15 +3,17 @@ /* ::: :::::::: */ /* multiOnlineGamePage.js :+: :+: :+: */ /* +:+ +:+ +:+ */ -/* By: edbernar +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2024/08/18 00:53:53 by edbernar #+# #+# */ -/* Updated: 2024/09/17 15:38:02 by edbernar ### ########.fr */ +/* Updated: 2024/09/17 18:02:20 by hubourge ### ########.fr */ /* */ /* ************************************************************************** */ import { createNotification as CN } from "/static/javascript/notification/main.js"; import * as THREE from '/static/javascript/three/build/three.module.js' +import Stats from '/static/javascript/three/examples/jsm/libs/stats.module.js' +import { OrbitControls } from '/static/javascript/three/examples/jsm/Addons.js'; import { sendRequest } from "/static/javascript/websocket.js"; import { Player } from '/static/javascript/multiOnlineGame/Player.js' import { Map } from '/static/javascript/multiOnlineGame/Map.js' @@ -55,6 +57,15 @@ let ambiantLight = null; let opponent = null; let interval = null; +// ------------------- (need to be remove) -------------------- // +const stats = new Stats(); +stats.showPanel(0); +document.body.appendChild(stats.dom); + +const cameraTmp = new THREE.PerspectiveCamera(90, window.innerWidth / window.innerHeight); +let controls = null; +// ------------------------------------------------------------ // + class MultiOnlineGamePage { static create() @@ -88,6 +99,12 @@ class MultiOnlineGamePage ball.initMoveBallTmp(); map.ballObject = ball.object; + ////////////////////////// + controls = new OrbitControls(cameraTmp, renderer.domElement) + cameraTmp.position.set(5, 3, 5); + controls.target = new THREE.Vector3(map.centerPos.x, 0, map.centerPos.z); + ////////////////////////// + document.addEventListener('keypress', (e) => { if (e.key == 'g') @@ -99,7 +116,10 @@ class MultiOnlineGamePage if (e.key == 'p') map.putVideoOnCanvas(0, null); if (e.key == 'o') + { map.putVideoOnCanvas(3, 'goal'); + map.animationGoal(); + } if (e.key == 'i') map.putVideoOnCanvas(3, 'outstanding'); if (e.key == 'u') @@ -182,11 +202,25 @@ function changeBarColor(bar, color) function loop() { + ///////////// + stats.begin(); + ///////////// + player.update(); opponent.update(); ball.update(); map.update(ball); - renderer.render(scene, player.camera); + if (debug) + { + controls.update(); + renderer.render(scene, cameraTmp); + } + else + renderer.render(scene, player.camera); + + ///////////// + stats.end(); + //////////// } export { MultiOnlineGamePage, opponent, ball }; diff --git a/docker-compose/requirements/nginx/static/models3D/multiOnlineGame/fireworkv1.glb b/docker-compose/requirements/nginx/static/models3D/multiOnlineGame/fireworkv1.glb new file mode 100644 index 0000000000000000000000000000000000000000..8bdff7655d8b8a9dddb0fd504af5ee74b25f0ecb GIT binary patch literal 11552 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 k6