Start visio with user colision

When user enter in colision with other colision, webrtc start visio
This commit is contained in:
gparant 2020-04-26 19:59:51 +02:00
parent d7d7be9ed0
commit 707931724f
4 changed files with 20 additions and 16 deletions

View file

@ -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<GameSceneInterface>;
status : number;
SimplePeer: SimplePeerInterface;
createCurrentPlayer() : void;
startWebRtc() : void;
shareUserPosition(ListMessageUserPosition : ListMessageUserPositionInterface): void;
}
export class GameManager implements GameManagerInterface {
GameScenes: Array<GameSceneInterface> = [];
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

View file

@ -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();
});
}
}

View file

@ -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', '<video id="'+userId+'" autoplay></video>');
this.remoteVideo[(userId as any)] = document.getElementById(userId);
}

View file

@ -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);