123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161 |
- import Codes from "./enum/Codes.js"
- import {eventsManager} from "./EventsManager.js"
- import ECurrentShaderMode from "./enum/ECurrentShaderMode.js"
- import Actions from "./enum/Actions.js"
- import PointType from "./enum/PointType.js"
- import Logger from "./Logger.js"
- import util from "./util.js"
- const logger = new Logger('xverse-signal')
- export default class Signal {
- constructor(e) {
- this.signalHandleActived = !0
- this.isUpdatedYUV = !0
- this._room = e
- }
- handleSignal(e) {
- var a, s, newUserStates;
- if (!this.signalHandleActived)
- {
- return;
- }
- console.log('执行handleSignal:'+e.signal)
- const {signal: signal, alreadyUpdateYUV: alreadyUpdateYUV} = e;
- this.handleActionResponses(signal);
- //this._room.handleSignalHook(signal);
- //视频流没有传送就不能执行
- if (!alreadyUpdateYUV) {
- const u = (a = signal.newUserStates) == null ? void 0 : a.find(c=>c.userId === this._room.userId);
- if ((u == null ? void 0 : u.renderInfo) && ((s = this._room._userAvatar) == null ? void 0 : s.isMoving)) {
- logger.debug("stream stoped, make avatar to stop");
- const {isMoving: c, isRotating: h} = u.renderInfo;
- this._room.avatarManager._updateAvatarMovingStatus({
- id: u.userId,
- isMoving: !!c,
- isRotating: !!h
- })
- }
- return
- }
- this.isUpdatedYUV = alreadyUpdateYUV;
- const receiveSignal = signal;
- if (!signal) {
- logger.warn("metadata signal is empty");
- return
- }
- if (receiveSignal.code === Codes.RepeatLogin) {
- this._room.handleRepetLogin();
- return
- }
- if(receiveSignal.code !== void 0 && receiveSignal.code !== Codes.Success && receiveSignal.code !== Codes.ActionMaybeDelay && receiveSignal.code !== Codes.DoActionBlocked && receiveSignal.code !== Codes.GetOnVehicle){
- logger.error("signal errcode: ", receiveSignal)
- this._room.emit("error", receiveSignal)
- }
- if(!window.isUser && receiveSignal.newUserStates){
- receiveSignal.newUserStates[0].userId = nickname
- receiveSignal.newUserStates[0].playerState.nickName = nickname
- window.isUser = true
- }
- newUserStates = receiveSignal.newUserStates
- let currentUserStates = void 0
- if(newUserStates != null){
- currentUserStates = newUserStates.find(u=>u.userId === this._room.userId);
- }
-
- if (receiveSignal.broadcastAction)
- {
- try {
- const u = JSON.parse(receiveSignal.broadcastAction.data);
- Broadcast.handlers.forEach(c=>c(u))
- } catch (u) {
- logger.error(u)
- }
- }
- receiveSignal.newUserStates && receiveSignal.newUserStates.length > 0 && this._room.avatarManager.handleAvatar(receiveSignal);
- if (currentUserStates != null && currentUserStates.playerState) {
- this._room._currentClickingState = currentUserStates.playerState;
- const {pathName: pathName, attitude: attitude, areaName: areaName, skinId: skinId} = currentUserStates.playerState;
- if(pathName){
- this._room.pathManager.currentPathName = pathName;
- this._room.updateCurrentState({
- pathName: pathName
- })
- }
- skinId && this.udpateSkinInfo(skinId);
- areaName && this._room.updateCurrentState({
- areaName: areaName
- });
- if (attitude) {
- const d = this._room.skin.routeList.find(g=>g.areaName === this._room.currentState.areaName)
- const speed = ((d == null ? void 0 : d.step) || 7.5) * 30;
- this._room.updateCurrentState({
- speed: speed,
- attitude: attitude
- }),
- this._room.pathManager.currentAttitude = attitude,
- this._room._userAvatar && (this._room._userAvatar.motionType = attitude)
- }
- if(this._room.sceneManager.getCurrentShaderMode() !== ECurrentShaderMode.pano && !this._room.isPano && currentUserStates.playerState.camera){
- // console.error(currentUserStates.playerState)
- this._room.camera.setCameraPose(currentUserStates.playerState.camera)
- //console.log('接收数据setCameraPose:'+JSON.stringify(currentUserStates.playerState.camera.angle))
- //console.log('我们计算:'+ util.ue4Rotation2Xverse(currentUserStates.playerState.camera.angle).y/Math.PI*180)
- }
- }
- currentUserStates != null && currentUserStates.renderInfo && this._room.camera.handleRenderInfo(currentUserStates)
- if (receiveSignal.actionType !== void 0) {
- const {actionType: actionType, code: code, echoMsg: echoMsg, traceId: traceId} = receiveSignal;
- if(actionType === Actions.Echo && code === Codes.Success){
- this._room.networkController.rtcp.heartbeat.pong(echoMsg, traceId)
- }
- if(code !== Codes.Success){
- eventsManager.remove(traceId, code)
- }
- else if([Actions.GetReserveStatus, Actions.Broadcast, Actions.ChangeNickname, Actions.ConfirmEvent, Actions.ReserveSeat, Actions.Rotation, Actions.TurnTo, Actions.RotateTo, Actions.SetPlayerState, Actions.GetNeighborPoints, Actions.TurnToFace, Actions.AudienceChangeToVisitor, Actions.RemoveVisitor, Actions.GetUserWithAvatar].includes(actionType)){
- eventsManager.remove(traceId, code, receiveSignal)
- }
- }
- }
- handleActionResponses(responseData) {
- if(responseData != null && responseData.actionResponses&&responseData.actionResponses.length != 0){
- responseData.actionResponses.forEach(actionResponse=>{
- if (actionResponse.actionType == null)
- {
- return;
- }
- const {pointType: pointType, extra: extra, actionType: actionType, traceId: traceId, code: code, msg: msg} = actionResponse;
- if(actionType === Actions.GetNeighborPoints){
- eventsManager.remove(traceId, code, actionResponse.nps)
- }
- else if(actionType === Actions.GetUserWithAvatar){
- eventsManager.remove(traceId, code, actionResponse.userWithAvatarList)
- }
- else{
- eventsManager.remove(traceId, code, msg)
- }
- if(pointType === PointType.Path && actionType === Actions.Clicking){
- this._room.moveToExtra = decodeURIComponent(extra)
- }
- })
- }
- }
- async udpateSkinInfo(e) {
- this._room.updateCurrentState({
- skinId: e
- });
- const t = await this._room.skinList.find(r=>r.id === e);
- t && this._room.updateCurrentState({
- skin: t
- })
- }
- }
|