test pc 3 jaren geleden
bovenliggende
commit
66c8211758
2 gewijzigde bestanden met toevoegingen van 79 en 5 verwijderingen
  1. 1 1
      config.dev.yaml
  2. 78 4
      src/move/move.service.ts

+ 1 - 1
config.dev.yaml

@@ -8,7 +8,7 @@ log:
   logFolder: /var/log/metaverse
 
 queueConfig:
-  move: 80
+  move: 60
   rotate: 2
 
 http:

+ 78 - 4
src/move/move.service.ts

@@ -199,6 +199,26 @@ export class MoveService implements OnModuleInit {
     this.users[userId] = user;
   }
 
+  async getMoveFrames(appId,start_break_point_id,end_break_point_id,angleIndex){
+
+    let moveFramesRes,moveFrames;
+    let key = 'moveframe:app_id:' + appId + ':start_break_point_id:' + start_break_point_id + ':end_break_point_id:' + end_break_point_id +':angle:' + angleIndex;
+    //倒叙
+    if(start_break_point_id>end_break_point_id){
+      key = 'moveframe:app_id:' + appId + ':start_break_point_id:' + end_break_point_id + ':end_break_point_id:' + start_break_point_id +':angle:' + angleIndex;
+      console.log('getMoveFrames:'+key);
+      moveFramesRes = await this.cacheService.get(key);
+      moveFrames = JSON.parse(moveFramesRes);
+      moveFrames = moveFrames.reverse();
+    }
+    else{
+      console.log('getMoveFrames:'+key);
+      moveFramesRes = await this.cacheService.get(key);
+      moveFrames = JSON.parse(moveFramesRes);
+    }
+    return moveFrames
+  }
+
   async move(pathArray, actionRequest) {
     try {
       const userId = actionRequest['user_id'];
@@ -229,11 +249,12 @@ export class MoveService implements OnModuleInit {
       this.reply.traceIds = traceIds;
       this.reply['newUserStates'][0].userId = userId;
       this.reply['actionResponses'][0].traceId = traceId;
-      const index = Math.floor((user.camera.angle.yaw + 1) / 45); //过渡需要
+      const index = Math.floor((user.camera.angle.yaw + 1) / 45)%8; //过渡需要
       for (let i = 0; i < path.length - 1; ++i) {
         let pathReplys = [];
         const start_break_point_id = path[i];
         const end_break_point_id = path[i + 1];
+        /*
         //读redis里的数据,按照frame_index的大小排序
         const key =
           'moveframe:app_id:' +
@@ -249,6 +270,12 @@ export class MoveService implements OnModuleInit {
           return replys;
         }
         const moveFrames = JSON.parse(moveFramesRes);
+        */
+        const moveFrames = await this.getMoveFrames(appId,start_break_point_id,end_break_point_id,index);
+        if (!moveFrames) {
+          return replys;
+        }
+
         pathReplys = this.createCacheReplys(
           appId,
           moveFrames,
@@ -298,7 +325,7 @@ export class MoveService implements OnModuleInit {
     );
     const user = this.users[userId];
     let i;
-    for (i = 1; i < moveFrames.length; i += 5) {
+    for (i = 1; i < moveFrames.length; i += 3) {
       const moveFrame = moveFrames[i];
       const reply = JSON.parse(JSON.stringify(this.reply));
       if (reply.traceIds.indexOf(traceId) == -1) {
@@ -361,6 +388,19 @@ export class MoveService implements OnModuleInit {
         moveFrame.file_name +
         '?m=' +
         new Date().getTime();
+      if(startBreakPointId>endBreakPointId){
+        reply.mediaSrc =
+        '/' +
+        appId +
+        '/' +
+        endBreakPointId +
+        '/' +
+        moveFrame.file_name.substring(0, moveFrame.file_name.indexOf('.')) +
+        '/' +
+        moveFrame.file_name +
+        '?m=' +
+        new Date().getTime();
+      }
 
       reply.startBreakPointId = startBreakPointId;
       reply.endBreakPointId = endBreakPointId;
@@ -424,6 +464,20 @@ export class MoveService implements OnModuleInit {
         moveFrame.file_name +
         '?m=' +
         new Date().getTime();
+
+      if(startBreakPointId>endBreakPointId){
+        reply.mediaSrc =
+        '/' +
+        appId +
+        '/' +
+        endBreakPointId +
+        '/' +
+        moveFrame.file_name.substring(0, moveFrame.file_name.indexOf('.')) +
+        '/' +
+        moveFrame.file_name +
+        '?m=' +
+        new Date().getTime();
+      }
       reply.startBreakPointId = startBreakPointId;
       reply.endBreakPointId = endBreakPointId;
       replys.push(reply);
@@ -881,7 +935,7 @@ export class MoveService implements OnModuleInit {
         ++count;
       } else if (Math.abs(angle - move_angle) == 0) {
         count = 2
-        console.log('handlejoysticktesttest:刚好45°的倍数')
+        //console.log('handlejoysticktesttest:刚好45°的倍数')
         //debugger;
         break;
 
@@ -931,7 +985,7 @@ export class MoveService implements OnModuleInit {
         // console.log(
         //   'joystick校验--->' + breakPointId + '-' + singleInfo.breakPointId,
         // );
-        //console.log('handlejoysticktesttest校验0角度:'+_angle+','+move_angle)
+        //console.log('handlejoysticktesttest校验0角度:'+_angle+','+move_angle)       //这个没办法,得换方案
         return await this.moveDirect(
           playerPosition,
           closestDis,
@@ -1149,6 +1203,7 @@ export class MoveService implements OnModuleInit {
 
       //replys.push(checkReplys);
       //读redis里的数据,按照frame_index的大小排序
+      /*
       const key =
         'moveframe:app_id:' +
         appId +
@@ -1160,6 +1215,8 @@ export class MoveService implements OnModuleInit {
         Math.floor(user.camera.angle.yaw / 45);
       const moveFramesRes = await this.cacheService.get(key);
       const moveFrames = JSON.parse(moveFramesRes);
+      */
+      const moveFrames = await this.getMoveFrames(appId,breakPointId,chooseBreakPointId,Math.floor(user.camera.angle.yaw / 45))
       this.setCameraInfo(appId,moveFrames,breakPointId,chooseBreakPointId);
       
       user.breakPointId = chooseBreakPointId;
@@ -1203,6 +1260,23 @@ export class MoveService implements OnModuleInit {
         moveFrames[i].file_name +
         '?m=' +
         new Date().getTime();
+
+      if(startBreakPointId>endBreakPointId){
+        moveFrames[i].mediaSrc =
+        '/' +
+        appId +
+        '/' +
+        endBreakPointId +
+        '/' +
+        moveFrames[i].file_name.substring(
+          0,
+          moveFrames[i].file_name.indexOf('.'),
+        ) +
+        '/' +
+        moveFrames[i].file_name +
+        '?m=' +
+        new Date().getTime();
+      }
       this.cameraInfos.push(moveFrames[i]);
     }
   }