From 707931724fdd39839daaeeae9c5df6359105b81d Mon Sep 17 00:00:00 2001 From: gparant Date: Sun, 26 Apr 2020 19:59:51 +0200 Subject: [PATCH] Start visio with user colision When user enter in colision with other colision, webrtc start visio --- front/src/Phaser/Game/GameManager.ts | 13 ++++++++++--- front/src/Phaser/Game/GameScene.ts | 1 + front/src/WebRtc/MediaManager.ts | 10 +--------- front/src/WebRtc/SimplePeer.ts | 12 ++++++++---- 4 files changed, 20 insertions(+), 16 deletions(-) diff --git a/front/src/Phaser/Game/GameManager.ts b/front/src/Phaser/Game/GameManager.ts index fbc1d5bd..6121d262 100644 --- a/front/src/Phaser/Game/GameManager.ts +++ b/front/src/Phaser/Game/GameManager.ts @@ -1,7 +1,7 @@ import {GameSceneInterface, GameScene} from "./GameScene"; import {ROOM} from "../../Enum/EnvironmentVariable" import {Connexion, ConnexionInterface, ListMessageUserPositionInterface} from "../../Connexion"; -import {SimplePeer} from "../../WebRtc/SimplePeer"; +import {SimplePeerInterface, SimplePeer} from "../../WebRtc/SimplePeer"; export enum StatusGameManagerEnum { IN_PROGRESS = 1, @@ -13,12 +13,15 @@ export let ConnexionInstance : ConnexionInterface; export interface GameManagerInterface { GameScenes: Array; status : number; + SimplePeer: SimplePeerInterface; createCurrentPlayer() : void; + startWebRtc() : void; shareUserPosition(ListMessageUserPosition : ListMessageUserPositionInterface): void; } export class GameManager implements GameManagerInterface { GameScenes: Array = []; status: number; + SimplePeer : SimplePeerInterface; constructor() { this.status = StatusGameManagerEnum.IN_PROGRESS; @@ -29,8 +32,8 @@ export class GameManager implements GameManagerInterface { return ConnexionInstance.createConnexion().then(() => { this.configureGame(); /** TODO add loader in the page **/ - //initialise cam - new SimplePeer(ConnexionInstance); + //initialise Pear Connexion of game + this.SimplePeer = new SimplePeer(ConnexionInstance); }).catch((err) => { console.error(err); throw err; @@ -59,6 +62,10 @@ export class GameManager implements GameManagerInterface { this.status = StatusGameManagerEnum.CURRENT_USER_CREATED; } + startWebRtc() : void { + this.SimplePeer.startWebRtc(); + } + /** * Share position in game * @param ListMessageUserPosition diff --git a/front/src/Phaser/Game/GameScene.ts b/front/src/Phaser/Game/GameScene.ts index a08c8fd2..0fac397e 100644 --- a/front/src/Phaser/Game/GameScene.ts +++ b/front/src/Phaser/Game/GameScene.ts @@ -253,6 +253,7 @@ export class GameScene extends Phaser.Scene implements GameSceneInterface{ //init colision this.physics.add.collider(this.CurrentPlayer, player, (CurrentPlayer: CurrentGamerInterface, MapPlayer: GamerInterface) => { CurrentPlayer.say("Hello, how are you ? "); + this.GameManager.startWebRtc(); }); } } diff --git a/front/src/WebRtc/MediaManager.ts b/front/src/WebRtc/MediaManager.ts index 7363f155..0d1a3a99 100644 --- a/front/src/WebRtc/MediaManager.ts +++ b/front/src/WebRtc/MediaManager.ts @@ -40,13 +40,11 @@ export class MediaManager { //update tracking }); - this.enabledMicrophone(); this.enabledCamera(); + this.enabledMicrophone(); let webRtc = document.getElementById('webRtc'); webRtc.classList.add('active'); - - //this.getCamera(); } enabledCamera() { @@ -55,7 +53,6 @@ export class MediaManager { this.constraintsMedia.video = true; this.localStream = null; this.myCamVideo.srcObject = null; - //this.getCamera(); } disabledCamera() { @@ -73,14 +70,12 @@ export class MediaManager { } this.localStream = null; this.myCamVideo.srcObject = null; - //this.getCamera(); } enabledMicrophone() { this.microphoneClose.style.display = "none"; this.microphone.style.display = "block"; this.constraintsMedia.audio = true; - //this.getCamera(); } disabledMicrophone() { @@ -94,7 +89,6 @@ export class MediaManager { } }); } - //this.getCamera(); } //get camera @@ -103,7 +97,6 @@ export class MediaManager { .then((stream: MediaStream) => { this.localStream = stream; this.myCamVideo.srcObject = this.localStream; - this.myCamVideo.play(); return stream; }).catch((err) => { console.error(err); @@ -119,7 +112,6 @@ export class MediaManager { addActiveVideo(userId : string){ let elementRemoteVideo = document.getElementById("activeCam"); elementRemoteVideo.insertAdjacentHTML('beforeend', ''); - this.remoteVideo[(userId as any)] = document.getElementById(userId); } diff --git a/front/src/WebRtc/SimplePeer.ts b/front/src/WebRtc/SimplePeer.ts index a410906b..86b33850 100644 --- a/front/src/WebRtc/SimplePeer.ts +++ b/front/src/WebRtc/SimplePeer.ts @@ -2,6 +2,10 @@ import {ConnexionInterface} from "../Connexion"; import {MediaManager} from "./MediaManager"; let Peer = require('simple-peer'); +export interface SimplePeerInterface { + startWebRtc(): void; +} + export class SimplePeer { Connexion: ConnexionInterface; MediaManager: MediaManager; @@ -11,16 +15,16 @@ export class SimplePeer { constructor(Connexion: ConnexionInterface, roomId: string = "test-webrtc") { this.Connexion = Connexion; - this.MediaManager = new MediaManager(); this.RoomId = roomId; - this.initialise(); } /** * server has two person connected, start the meet */ - initialise() { - return this.MediaManager.getCamera().then(() => { + startWebRtc() { + this.MediaManager = new MediaManager(); + return this.MediaManager.getCamera().then((stream: MediaStream) => { + this.MediaManager.localStream = stream; //send message to join a room this.Connexion.sendWebrtcRomm(this.RoomId);