xushiting 3 年之前
父節點
當前提交
40494589b2
共有 1 個文件被更改,包括 182 次插入0 次删除
  1. 182 0
      src/back/demo.js

+ 182 - 0
src/back/demo.js

@@ -0,0 +1,182 @@
+
+//请求池,key是userId,value是数组
+var actionRequestPool = {};   
+var Actions = {
+    Clicking:1,
+    Rotation:1014,
+    Joystick:15
+}
+
+//用户信息,包括:用户Id
+var users = {};               
+
+var reply =  {
+           "traceIds": [],
+           "vehicle": null,
+           "newUserStates": [{
+               "userId": "dcff36ae4fc1d",
+               "playerState": {
+                   "roomTypeId": "",
+                   "person": 0,
+                   "avatarId": "",
+                   "skinId": "",
+                   "roomId": "",
+                   "isHost": false,
+                   "isFollowHost": false,
+                   "skinDataVersion": "",
+                   "avatarComponents": "",
+                   "nickName": "",
+                   "movingMode": 0,
+                   "attitude": "",
+                   "areaName": "",
+                   "pathName": "",
+                   "pathId": "",
+                   "avatarSize": 1,
+                   "extra": "",
+                   "prioritySync": false,
+                   "player": {
+                       "position":{"x": -700, "y": 0, "z": 0},
+                       "angle": {
+                           "pitch": 0,
+                           "yaw": 0,
+                           "roll": 0
+                       }
+                   },
+                   "camera": {
+                       "position": {"x": -1145, "y": 0, "z": 160},
+                       "angle": {
+                           "pitch": 0,
+                           "yaw": 0,
+                           "roll": 0
+                       }
+                   },
+                   "cameraCenter": {"x": -700, "y": 0, "z": 0}
+               },
+               "renderInfo": {
+                   "renderType": 0,
+                   "videoFrame": null,
+                   "cameraStateType": 3,
+                   "isMoving": 1,
+                   "needIfr": 0,
+                   "isVideo": 0,
+                   "stillFrame": 0,
+                   "isRotating": 0,
+                   "isFollowing": 0,
+                   "clientPanoTitlesBitmap": [],
+                   "clientPanoTreceId": "",
+                   "prefetchVideoId": "",
+                   "noMedia": false
+               },
+               "event": null,
+               "relation": 1
+           }],
+           "actionResponses": [
+                // {
+                //     "actionType": 15,
+                //     "pointType": 100,
+                //     "extra": "",
+                //     "traceId": "d0864cd0-378d-4d49-b7b0-3e8e1b9494c3",
+                //     "packetId": "d44bd2f5-f877-4dd7-868b-803c64f99082",
+                //     "nps": [],
+                //     "peopleNum": 0,
+                //     "zoneId": "",
+                //     "echoMsg": "",
+                //     "reserveDetail": null,
+                //     "userWithAvatarList": [],
+                //     "newUserStates": [],
+                //     "code": 0,
+                //     "msg": ""
+                // }
+            ],
+           "getStateType": 0,
+           "code": 0,
+           "msg": "OK"
+       };
+
+        function init(app_id,userId){
+            var user = {     
+                appId:null,                   
+                userId:null,
+                breakPointId:null,
+                player: {
+                    "position":{"x": -700, "y": 0, "z": 0},
+                    "angle": {
+                        "pitch": 0,
+                        "yaw": 0,
+                        "roll": 0
+                    }
+                },
+                camera: {
+                    "position": {"x": -1145, "y": 0, "z": 160},
+                    "angle": {
+                        "pitch": 0,
+                        "yaw": 0,
+                        "roll": 0
+                    }
+                },
+                rotateInfo:{
+                    frameIndex:null,
+                    horizontal_move:0,
+                    mediaSrc:null
+                },
+                moveInfo:{
+             
+                },
+                traceIds:[]
+            };  
+            user.appId = app_id;
+            user.userId = userId;
+            users[userId] = user;
+            reply["newUserStates"][0]["userId"] = userId;
+            return reply;
+        }
+
+        function rotate(actionRequest){
+
+            let userId = actionRequest["user_id"];
+            if(actionRequestPool[userId]){
+                actionRequestPool[userId].push(actionRequest);
+            }
+            else{
+                actionRequestPool[userId] = [];
+                actionRequestPool[userId].push(actionRequest);
+            }
+
+            let actionRequests = actionRequestPool[userId];
+            let user = users[userId];
+            let horizontal_move = user.rotateInfo.horizontal_move;
+            let traceIds = user.traceIds;
+            let sub = 0;
+            for(let i=0;i<actionRequests.length;++i){
+                if(actionRequests[i].action_type == Actions.Rotation){
+                    horizontal_move+=actionRequests[i].rotation_action.horizontal_move;
+                    traceIds.push(actionRequests[i].trace_id)
+                    ++sub;
+                }
+                else{
+                    break;
+                }
+            }
+
+            actionRequests.splice(0,sub);
+            let hAngle = horizontal_move * 90;
+            if(Math.abs(hAngle)<1){
+                user.rotateInfo.horizontal_move = horizontal_move;
+                user.traceIds = traceIds;
+            }
+            else{
+                user.rotateInfo.frameIndex += Math.floor(hAngle);
+            }
+
+            reply["newUserStates"][0]["userId"] = userId;
+            //从redis里取
+            //let key = user.appId + "-"+user.breakPointId+"-"+user.rotateInfo.frameIndex;
+            let key = "rotateframe:app_id:"+user.appId+":frame_index:"+user.rotateInfo.frameIndex+":break_point_id:"+user.breakPointId;
+            let value = null;
+            //
+            user.camera["position"] = value.camera_position;
+            user.camera["angle"] = value.camera_angle;
+            
+            reply.mediaSrc = metaConfig.getVideoFramePath()+"/"+"0000000001"+"/"+user.breakPointId+"/"+value.directory+"/"+value.fileName()+"?m="+new Date().getTime();
+            return reply;
+        }