xushiting пре 3 година
родитељ
комит
1d124cbc05
3 измењених фајлова са 60 додато и 10 уклоњено
  1. 50 7
      src/ActionsHandler.js
  2. 9 2
      src/XMaterialComponent.js
  3. 1 1
      笔记.txt

+ 50 - 7
src/ActionsHandler.js

@@ -5,7 +5,7 @@ import Person from "./enum/Person.js"
 import ClickType from "./enum/ClickType.js"
 import Logger from "./Logger.js"
 
-
+import Response from "./Response.js"
 import { VDecoder } from "./h264Decoder/VDecoder.js";
 
 const logger = new Logger('actions-handler')
@@ -46,6 +46,7 @@ export default class ActionsHandler {
     }
 
     async sendData(e) {
+        /*
         //console.log('发送数据:'+JSON.stringify(e))
         await this.beforeSend(e);
         const t = util.uuid();
@@ -73,6 +74,7 @@ export default class ActionsHandler {
             QueueActions.includes(e.data.action_type) && (this.currentActiveAction = void 0)
         }
         )
+        */
     }
 
     //async sendData(e) {
@@ -420,11 +422,36 @@ export default class ActionsHandler {
             }
         }
 
-        window.room.sceneManager.cameraComponent.mainCamera.rotation.y += angle
-        window.room.sceneManager.cameraComponent.setCameraPose(cameraState)
+        let response = JSON.parse(JSON.stringify(Response))
+
+        response.signal.newUserStates[0].userId = nickname
+
+        response.signal.newUserStates[0].playerState.player.position.x = this.room.avatarManager.avatars.get(nickname).position.x
+        response.signal.newUserStates[0].playerState.player.position.y = this.room.avatarManager.avatars.get(nickname).position.y
+        response.signal.newUserStates[0].playerState.player.position.z = this.room.avatarManager.avatars.get(nickname).position.z
+
+        response.signal.newUserStates[0].playerState.player.angle.pitch = this.room.avatarManager.avatars.get(nickname).rotation.pitch
+        response.signal.newUserStates[0].playerState.player.angle.yaw = this.room.avatarManager.avatars.get(nickname).rotation.yaw
+        response.signal.newUserStates[0].playerState.player.angle.roll = this.room.avatarManager.avatars.get(nickname).rotation.roll
+
+        response.signal.newUserStates[0].playerState.camera.position.x = cameraState.position.x
+        response.signal.newUserStates[0].playerState.camera.position.y = cameraState.position.y
+        response.signal.newUserStates[0].playerState.camera.position.z = cameraState.position.z
+        
+        response.signal.newUserStates[0].playerState.camera.angle.pitch = cameraState.angle.pitch
+        response.signal.newUserStates[0].playerState.camera.angle.yaw = cameraState.angle.yaw
+        response.signal.newUserStates[0].playerState.camera.angle.roll = cameraState.angle.roll
+
+        response.signal.newUserStates[0].playerState.cameraCenter.x = this.room.avatarManager.avatars.get(nickname).position.x
+        response.signal.newUserStates[0].playerState.cameraCenter.y = this.room.avatarManager.avatars.get(nickname).position.y
+        response.signal.newUserStates[0].playerState.cameraCenter.z = this.room.avatarManager.avatars.get(nickname).position.z
+
+        this.room.signal.handleSignal(response)
+        //window.room.sceneManager.cameraComponent.mainCamera.rotation.y += angle
+        //window.room.sceneManager.cameraComponent.setCameraPose(cameraState)
     }
     /*
-    rotate0({type: type, angle: angle}) {
+    rotate({type: type, angle: angle}) {
         let endRotation = window.room.sceneManager.cameraComponent.mainCamera.rotation.y
         if(endRotation<0){
             endRotation += 2*Math.PI
@@ -452,9 +479,25 @@ export default class ActionsHandler {
 
         this.room.sceneManager.materialComponent.initreceveFrames()
  
-        this.room.sceneManager.cameraComponent.mainCamera.rotation.y = endRotation
-        window.room.sceneManager.cameraComponent._cameraPose.rotation._y = endRotation
-        window.room.sceneManager.cameraComponent.mainCamera.rotation.y=endRotation
+        // this.room.sceneManager.cameraComponent.mainCamera.rotation.y = endRotation
+        // window.room.sceneManager.cameraComponent._cameraPose.rotation._y = endRotation
+        // window.room.sceneManager.cameraComponent.mainCamera.rotation.y=endRotation
+        let response = JSON.parse(JSON.stringify(Response))
+        response.signal.newUserStates[0].playerState.player.position.x = this.room.avatarManager.avatars.get(nickname).position.x
+        response.signal.newUserStates[0].playerState.player.position.y = this.room.avatarManager.avatars.get(nickname).position.y
+        response.signal.newUserStates[0].playerState.player.position.z = this.room.avatarManager.avatars.get(nickname).position.z
+
+        response.signal.newUserStates[0].playerState.player.angle.pitch = this.room.avatarManager.avatars.get(nickname).rotation.pitch
+        response.signal.newUserStates[0].playerState.player.angle.yaw = this.room.avatarManager.avatars.get(nickname).rotation.yaw
+        response.signal.newUserStates[0].playerState.player.angle.roll = this.room.avatarManager.avatars.get(nickname).rotation.roll
+
+        response.signal.newUserStates[0].playerState.camera.position = 
+        response.signal.newUserStates[0].playerState.camera.angle = 
+
+        response.signal.newUserStates[0].playerState.cameraCenter.x = this.room.avatarManager.avatars.get(nickname).position.x
+        response.signal.newUserStates[0].playerState.cameraCenter.y = this.room.avatarManager.avatars.get(nickname).position.y
+        response.signal.newUserStates[0].playerState.cameraCenter.z = this.room.avatarManager.avatars.get(nickname).position.z
+ 
     }
     */
 

+ 9 - 2
src/XMaterialComponent.js

@@ -260,7 +260,7 @@ export default class XMaterialComponent {
 
         //xst
         window.testPlane = null
-        this.addPlane()
+        //this.addPlane()
         this.initReceve =false
     }
 
@@ -300,9 +300,15 @@ export default class XMaterialComponent {
             }
 
             let VideoTexture = this._videoRawYUVTexArray.getVideoYUVTex(videosResOriArrayIndex)
+            if(VideoTexture != null){
+                VideoTexture.update(stream)
+                VideoTexture.updateSamplingMode(BABYLON.Texture.BILINEAR_SAMPLINGMODE)
+            }
+
             //(o = this._videoRawYUVTexArray.getVideoYUVTex(videosResOriArrayIndex)) == null || o.update(stream),
             //(a = this._videoRawYUVTexArray.getVideoYUVTex(videosResOriArrayIndex)) == null || a.updateSamplingMode(BABYLON.Texture.BILINEAR_SAMPLINGMODE)
-
+            
+            /*
             if(window.testPlane != null){
                     
                 // window.updateTexture( new Uint8Array(window.generateRandomArray()) );
@@ -318,6 +324,7 @@ export default class XMaterialComponent {
                     }
                 }
             }
+            */
         }
 
     }

+ 1 - 1
笔记.txt

@@ -23,7 +23,7 @@ registerFunction("stream")里会调用updateRawYUVData
 updateRawYUVData函数会将stream传送到材质贴图(_videoRawYUVTexArray里)上,显示最终的效果
 
 
-
+handleSignal
 
 /*****************************************************************************************************************************************************************************************************************/