xushiting 3 年之前
父節點
當前提交
e63cd5f00a
共有 1 個文件被更改,包括 34 次插入13 次删除
  1. 34 13
      src/main/java/com/fdkk/fdkkmeta/task/UpdateFrameMetaTask.java

+ 34 - 13
src/main/java/com/fdkk/fdkkmeta/task/UpdateFrameMetaTask.java

@@ -88,8 +88,9 @@ public class UpdateFrameMetaTask {
             //过渡
             if(myState.getIntValue("isMoving") == 1){
                 MoveFrameEntity moveFrameEntity = moveFrameService.findByAppIAndStartBreakPointIdAndEndBreakPointIdAndAngleAndFrameIndex(user.getAppId(), startBreakPointId, endBreakPointId,_actionPO.getCameraAngle().getYaw(),_actionPO.getFrameIndex()+1);
-                //过渡下一段
+                //准备过渡下一段
                 if(moveFrameEntity==null){
+                    RotateFrameEntity rotateFrameEntity = rotateFrameService.findByAppIdAndBreakPointIdAndFrameIndex(user.getAppId(),endBreakPointId,_actionPO.getCameraAngle().getYaw());
                     path.remove(0);
                     if(path.size()>1){
                         startBreakPointId = endBreakPointId;
@@ -98,13 +99,25 @@ public class UpdateFrameMetaTask {
                         _actionPO.setFrameIndex(0);
                         _actionPO.setStartPostion(null);
                         _actionPO.setEndPosition(null);
-                        moveFrameEntity = moveFrameService.findByAppIAndStartBreakPointIdAndEndBreakPointIdAndAngleAndFrameIndex(user.getAppId(), startBreakPointId, endBreakPointId,_actionPO.getCameraAngle().getYaw(),1);
-                        user.setFrameId(moveFrameEntity.getId());
+
+                        int subFrameIndex = moveFrameService.getCountByAppIAndStartBreakPointIdAndEndBreakPointIdAndAngle( user.getAppId(),startBreakPointId,endBreakPointId, _actionPO.getCameraAngle().getYaw()%45);
+                        _actionPO.setSubFrameIndex(subFrameIndex);
+                        _actionPO.setPlayerPosition(endBreakpointsEntity.getPosition());
+
                         startBreakpointsEntity = breakpointsService.findById(startBreakPointId);
                         endBreakpointsEntity = breakpointsService.findById(endBreakPointId);
                         int _angle = sceneGrpcService.calAngleForBreakPointId(startBreakpointsEntity,endBreakpointsEntity);
                         AnglePO playerAngle = user.getPlayerAngle();
                         playerAngle.setYaw(_angle);
+                        _actionPO.setPlayerAngle(playerAngle);
+                        //更新redis记录
+                        redisCache.setCacheListByIndex("setCacheRequest"+user.getUserId(),0,_actionPO);
+
+                        myState.put("isMoving",0);
+                        redisCache.setCacheObject("UserState"+user.getUserId(),myState);
+
+                        //moveFrameEntity = moveFrameService.findByAppIAndStartBreakPointIdAndEndBreakPointIdAndAngleAndFrameIndex(user.getAppId(), startBreakPointId, endBreakPointId,_actionPO.getCameraAngle().getYaw(),0);
+                        user.setFrameId(rotateFrameEntity.getId());
                         user.setPlayerAngle(playerAngle);
                         user.setBreakPointId(startBreakPointId);
                         user.setPlayerPosition(startBreakpointsEntity.getPosition());
@@ -115,9 +128,9 @@ public class UpdateFrameMetaTask {
                         //删除redis里的数据
                         redisCache.lTrim("setCacheRequest"+user.getUserId(),1,-1);
                         //更新user表
-                        moveFrameEntity = moveFrameService.findByAppIAndStartBreakPointIdAndEndBreakPointIdAndAngleAndFrameIndex(user.getAppId(), startBreakPointId, endBreakPointId,_actionPO.getCameraAngle().getYaw(),_actionPO.getFrameIndex());
+                        //moveFrameEntity = moveFrameService.findByAppIAndStartBreakPointIdAndEndBreakPointIdAndAngleAndFrameIndex(user.getAppId(), startBreakPointId, endBreakPointId,_actionPO.getCameraAngle().getYaw(),_actionPO.getFrameIndex());
                         user.setPlayerPosition(endBreakpointsEntity.getPosition());
-                        user.setFrameId(moveFrameEntity.getId());
+                        user.setFrameId(rotateFrameEntity.getId());
                         user.setPlayerAngle(_actionPO.getPlayerAngle());
                         user.setBreakPointId(endBreakPointId);
                         userService.updateById(user);
@@ -126,9 +139,10 @@ public class UpdateFrameMetaTask {
                         redisCache.setCacheObject("UserState"+user.getUserId(),myState);
                         //执行下一条记录
                         list.remove(0);
-                        handle( user,list);
-                        return ;
                     }
+
+                    handle( user,list);
+                    return ;
                 }
                 //更新
                 if(_actionPO.getStartPostion() == null){
@@ -146,8 +160,7 @@ public class UpdateFrameMetaTask {
             }
             else if(myState.getIntValue("isMoving") == 0){
                 if(list.size()>0){
-                    //中断
-                    //执行下一条记录
+                    //中断,执行下一条记录
                     list.remove(0);
                     redisCache.lTrim("setCacheRequest"+user.getUserId(),1,-1);
                     handle( user,list);
@@ -157,6 +170,7 @@ public class UpdateFrameMetaTask {
                     //过渡
                     myState.put("isMoving",1);
                     redisCache.setCacheObject("UserState"+user.getUserId(),myState);
+
                     MoveFrameEntity moveFrameEntity = moveFrameService.findByAppIAndStartBreakPointIdAndEndBreakPointIdAndAngleAndFrameIndex(user.getAppId(), startBreakPointId, endBreakPointId,_actionPO.getCameraAngle().getYaw(),_actionPO.getFrameIndex()+1);
                     //更新
                     int _angle = sceneGrpcService.calAngleForBreakPointId(startBreakpointsEntity,endBreakpointsEntity);
@@ -173,21 +187,28 @@ public class UpdateFrameMetaTask {
             /****************************************************************************************/
             return;
         }
-
+        long lastFrameId = _actionPO.getFrameId();
         for(int i=1;i<list.size();++i){
             ActionPO actionPO = list.get(i);
-            if(firstActionType != actionPO.getAction_type()){
-                break;
-            }
+//            if(firstActionType != actionPO.getAction_type()){
+//                break;
+//            }
             //旋转
             if(actionPO.getAction_type() == 1014||actionPO.getAction_type() == 15){
                 rotateJoystickList.add(actionPO);
+                lastFrameId = actionPO.getFrameId();
                 continue;
             }
+            else{
+                break;
+            }
         }
         createRotateFrameMetadata( user, rotateJoystickList, firstActionType);
         //删除redis里的数据
         redisCache.lTrim("setCacheRequest"+user.getUserId(),rotateJoystickList.size(),-1);
+        //更新user表
+        user.setFrameId(lastFrameId);
+        userService.updateById(user);
     }
 
     private void createDefaultFrameMetadata(UserEntity user){