|
@@ -86,7 +86,10 @@ public class UpdateFrameMetaTask {
|
|
|
long endBreakPointId = path.getLongValue(1);
|
|
|
//过渡
|
|
|
if(myState.getIntValue("isMoving") == 1){
|
|
|
- MoveFrameEntity moveFrameEntity = moveFrameService.findByAppIAndStartBreakPointIdAndEndBreakPointIdAndAngleAndFrameIndex(user.getAppId(), startBreakPointId, endBreakPointId,_actionPO.getMoveAngle(),_actionPO.getFrameIndex()+1);
|
|
|
+ MoveFrameEntity moveFrameEntity = moveFrameService.findByAppIAndStartBreakPointIdAndEndBreakPointIdAndAngleAndFrameIndex(user.getAppId(), startBreakPointId, endBreakPointId,_actionPO.getCameraAngle().getYaw(),_actionPO.getFrameIndex()+1);
|
|
|
+ BreakpointsEntity startBreakpointsEntity = breakpointsService.findById(startBreakPointId);
|
|
|
+ BreakpointsEntity endBreakpointsEntity = breakpointsService.findById(endBreakPointId);
|
|
|
+
|
|
|
if(moveFrameEntity==null){
|
|
|
path.remove(0);
|
|
|
//过渡下一段
|
|
@@ -95,12 +98,21 @@ public class UpdateFrameMetaTask {
|
|
|
endBreakPointId = path.getLongValue(1);
|
|
|
_actionPO.setPath(path);
|
|
|
_actionPO.setFrameIndex(0);
|
|
|
- moveFrameEntity = moveFrameService.findByAppIAndStartBreakPointIdAndEndBreakPointIdAndAngleAndFrameIndex(user.getAppId(), startBreakPointId, endBreakPointId,_actionPO.getMoveAngle(),_actionPO.getFrameIndex()+1);
|
|
|
+ _actionPO.setStartPostion(null);
|
|
|
+ _actionPO.setEndPosition(null);
|
|
|
+ moveFrameEntity = moveFrameService.findByAppIAndStartBreakPointIdAndEndBreakPointIdAndAngleAndFrameIndex(user.getAppId(), startBreakPointId, endBreakPointId,_actionPO.getCameraAngle().getYaw(),_actionPO.getFrameIndex()+1);
|
|
|
}
|
|
|
//过渡全部结束
|
|
|
else{
|
|
|
//删除redis里的数据
|
|
|
+ redisCache.lTrim("setCacheRequest"+user.getUserId(),1,-1);
|
|
|
//更新user表
|
|
|
+ moveFrameEntity = moveFrameService.findByAppIAndStartBreakPointIdAndEndBreakPointIdAndAngleAndFrameIndex(user.getAppId(), startBreakPointId, endBreakPointId,_actionPO.getCameraAngle().getYaw(),_actionPO.getFrameIndex());
|
|
|
+ user.setPlayerPosition(endBreakpointsEntity.getPosition());
|
|
|
+ user.setFrameId(moveFrameEntity.getId());
|
|
|
+ user.setPlayerAngle(_actionPO.getPlayerAngle());
|
|
|
+ user.setBreakPointId(endBreakPointId);
|
|
|
+ /*************************************************************************************************************/
|
|
|
myState.put("isMoving",0);
|
|
|
redisCache.setCacheObject("UserState"+user.getUserId(),myState);
|
|
|
//执行下一条记录
|
|
@@ -110,16 +122,23 @@ public class UpdateFrameMetaTask {
|
|
|
}
|
|
|
}
|
|
|
//更新
|
|
|
- createMoveFrameMetadata( user, moveFrameEntity,_actionPO.getTrace_id());
|
|
|
+ if(_actionPO.getStartPostion() == null){
|
|
|
+ _actionPO.setStartPostion(startBreakpointsEntity.getPosition());
|
|
|
+ _actionPO.setEndPosition(endBreakpointsEntity.getPosition());
|
|
|
+ }
|
|
|
_actionPO.setFrameIndex(_actionPO.getFrameIndex()+1);
|
|
|
+ PointPO playerPosition = new PointPO();
|
|
|
+ playerPosition.setX((_actionPO.getEndPosition().getX() - _actionPO.getStartPostion().getX())/n*_actionPO.getFrameIndex());
|
|
|
+ createMoveFrameMetadata(user.getUserId(),_actionPO.getPlayerAngle(), playerPosition, moveFrameEntity,_actionPO.getTrace_id());
|
|
|
//更新redis里的数据
|
|
|
- //更新user表
|
|
|
+ redisCache.setCacheListByIndex("setCacheRequest"+user.getUserId(),0,_actionPO);
|
|
|
}
|
|
|
else if(myState.getIntValue("isMoving") == 0){
|
|
|
if(list.size()>0){
|
|
|
//中断
|
|
|
//执行下一条记录
|
|
|
list.remove(0);
|
|
|
+ redisCache.lTrim("setCacheRequest"+user.getUserId(),1,-1);
|
|
|
handle( user,list);
|
|
|
return ;
|
|
|
}
|
|
@@ -131,8 +150,9 @@ public class UpdateFrameMetaTask {
|
|
|
//更新
|
|
|
createMoveFrameMetadata( user, moveFrameEntity,_actionPO.getTrace_id());
|
|
|
_actionPO.setFrameIndex(_actionPO.getFrameIndex()+1);
|
|
|
+ _actionPO.set
|
|
|
//更新redis里的数据
|
|
|
- //更新user表
|
|
|
+ redisCache.setCacheListByIndex("setCacheRequest"+user.getUserId(),0,_actionPO);
|
|
|
}
|
|
|
}
|
|
|
/****************************************************************************************/
|
|
@@ -150,59 +170,9 @@ public class UpdateFrameMetaTask {
|
|
|
continue;
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
- JSONArray actionResponses = new JSONArray();
|
|
|
- String[] traceIds = new String[rotateJoystickList.size()];
|
|
|
- if(rotateJoystickList.size()>0){
|
|
|
- for(int j=0;j<rotateJoystickList.size();++j){
|
|
|
- ActionPO actionPO = rotateJoystickList.get(j);
|
|
|
- JSONObject actionResponse = sceneGrpcService.createActionResponse(actionPO.getAction_type(),actionPO.getTrace_id());
|
|
|
- actionResponses.add(actionResponse);
|
|
|
- traceIds[j] = actionPO.getTrace_id();
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- ActionPO lastActionPO = rotateJoystickList.get(rotateJoystickList.size()-1);
|
|
|
- RotateFrameEntity rotateFrameEntity = rotateFrameService.findById(lastActionPO.getFrameId());
|
|
|
- PointPO playerPosition = user.getPlayerPosition();
|
|
|
- Point playerPt = Point.newBuilder().setX(String.valueOf(playerPosition.getX())).setY(String.valueOf(playerPosition.getY())).setZ(String.valueOf(playerPosition.getZ())).build();
|
|
|
- AnglePO playerAngle = user.getPlayerAngle();
|
|
|
- AngleUe4 playerAg = null;
|
|
|
- if(firstActionType == 1014){
|
|
|
- playerAg = AngleUe4.newBuilder().setPitch(playerAngle.getPitch()).setYaw(playerAngle.getYaw()).setRoll(playerAngle.getRoll()).build();
|
|
|
- }
|
|
|
- else if(firstActionType == 15){
|
|
|
- playerAg = AngleUe4.newBuilder().setPitch(playerAngle.getPitch()).setYaw(lastActionPO.getPlayerAngle()).setRoll(playerAngle.getRoll()).build();
|
|
|
- }
|
|
|
- Space player = sceneGrpcService.createSpace(playerPt,playerAg);
|
|
|
-
|
|
|
- PointPO cameraPoint = rotateFrameEntity.getCameraPosition();
|
|
|
- Point cameraPosition = sceneGrpcService.createPoint(String.valueOf(cameraPoint.getX()),String.valueOf(cameraPoint.getY()),String.valueOf(cameraPoint.getZ()));
|
|
|
- AnglePO cameraAnglePO = rotateFrameEntity.getCameraAngle();
|
|
|
- AngleUe4 cameraAngle = sceneGrpcService.createAngle(cameraAnglePO.getPitch(),cameraAnglePO.getYaw(),cameraAnglePO.getRoll());
|
|
|
- Space camera = sceneGrpcService.createSpace(cameraPosition,cameraAngle);
|
|
|
-
|
|
|
- MetaDataFramePO metaDataFramePO = new MetaDataFramePO();
|
|
|
- metaDataFramePO.setTraceIds(traceIds);
|
|
|
- metaDataFramePO.setVehicle(null);
|
|
|
- State playerState = sceneGrpcService.createPlayerState2(player,camera,playerPt);
|
|
|
-
|
|
|
- RenderInfo renderInfo = sceneGrpcService.createRenderInfo();
|
|
|
- UserState userState = sceneGrpcService.createUserState( user.getUserId(), playerState, renderInfo, null);
|
|
|
-
|
|
|
- //newUserStates
|
|
|
- JSONArray newUserStates = new JSONArray();
|
|
|
- newUserStates.add(userState);
|
|
|
- metaDataFramePO.setNewUserStates(newUserStates);
|
|
|
- metaDataFramePO.setActionResponses(actionResponses);
|
|
|
- metaDataFramePO.setGetStateType(0);
|
|
|
- metaDataFramePO.setCode(0);
|
|
|
- metaDataFramePO.setMsg("");
|
|
|
-
|
|
|
- redisCache.setCacheObject("updateFrameMetadata:"+user.getUserId(),metaDataFramePO);
|
|
|
-
|
|
|
+ createRotateFrameMetadata( user, rotateJoystickList, firstActionType);
|
|
|
//删除redis里的数据
|
|
|
- //更新user表
|
|
|
+ redisCache.lTrim("setCacheRequest"+user.getUserId(),rotateJoystickList.size(),-1);
|
|
|
}
|
|
|
|
|
|
//
|
|
@@ -614,15 +584,15 @@ public class UpdateFrameMetaTask {
|
|
|
redisCache.setCacheObject("updateFrameMetadata:"+user.getUserId(),metaDataFramePO);
|
|
|
}
|
|
|
|
|
|
- private void createMoveFrameMetadata(UserEntity user,MoveFrameEntity moveFrameEntity,String traceId){
|
|
|
+ private void createMoveFrameMetadata(String user_id,AnglePO playerAngle,PointPO playerPosition,MoveFrameEntity moveFrameEntity,String traceId){
|
|
|
String[] traceIds = new String[1];
|
|
|
traceIds[0] = traceId;
|
|
|
JSONArray actionResponses = new JSONArray();
|
|
|
|
|
|
//RotateFrameEntity rotateFrameEntity = rotateFrameService.findById(user.getFrameId());
|
|
|
- PointPO playerPosition = user.getPlayerPosition();
|
|
|
+ //PointPO playerPosition = user.getPlayerPosition();
|
|
|
Point playerPt = Point.newBuilder().setX(String.valueOf(playerPosition.getX())).setY(String.valueOf(playerPosition.getY())).setZ(String.valueOf(playerPosition.getZ())).build();
|
|
|
- AnglePO playerAngle = user.getPlayerAngle();
|
|
|
+ //AnglePO playerAngle = user.getPlayerAngle();
|
|
|
AngleUe4 playerAg =AngleUe4.newBuilder().setPitch(playerAngle.getPitch()).setYaw(playerAngle.getYaw()).setRoll(playerAngle.getRoll()).build();
|
|
|
Space player = sceneGrpcService.createSpace(playerPt,playerAg);
|
|
|
|
|
@@ -638,6 +608,56 @@ public class UpdateFrameMetaTask {
|
|
|
State playerState = sceneGrpcService.createPlayerState2(player,camera,playerPt);
|
|
|
|
|
|
RenderInfo renderInfo = sceneGrpcService.createRenderInfo();
|
|
|
+ UserState userState = sceneGrpcService.createUserState( user_id, playerState, renderInfo, null);
|
|
|
+
|
|
|
+ //newUserStates
|
|
|
+ JSONArray newUserStates = new JSONArray();
|
|
|
+ newUserStates.add(userState);
|
|
|
+ metaDataFramePO.setNewUserStates(newUserStates);
|
|
|
+ metaDataFramePO.setActionResponses(actionResponses);
|
|
|
+ metaDataFramePO.setGetStateType(0);
|
|
|
+ metaDataFramePO.setCode(0);
|
|
|
+ metaDataFramePO.setMsg("");
|
|
|
+
|
|
|
+ redisCache.setCacheObject("updateFrameMetadata:"+user_id,metaDataFramePO);
|
|
|
+ }
|
|
|
+
|
|
|
+ private void createRotateFrameMetadata(UserEntity user,List<ActionPO> rotateJoystickList,int firstActionType){
|
|
|
+ JSONArray actionResponses = new JSONArray();
|
|
|
+ String[] traceIds = new String[rotateJoystickList.size()];
|
|
|
+ if(rotateJoystickList.size()>0){
|
|
|
+ for(int j=0;j<rotateJoystickList.size();++j){
|
|
|
+ ActionPO actionPO = rotateJoystickList.get(j);
|
|
|
+ JSONObject actionResponse = sceneGrpcService.createActionResponse(actionPO.getAction_type(),actionPO.getTrace_id());
|
|
|
+ actionResponses.add(actionResponse);
|
|
|
+ traceIds[j] = actionPO.getTrace_id();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ ActionPO lastActionPO = rotateJoystickList.get(rotateJoystickList.size()-1);
|
|
|
+ RotateFrameEntity rotateFrameEntity = rotateFrameService.findById(lastActionPO.getFrameId());
|
|
|
+ PointPO playerPosition = user.getPlayerPosition();
|
|
|
+ Point playerPt = Point.newBuilder().setX(String.valueOf(playerPosition.getX())).setY(String.valueOf(playerPosition.getY())).setZ(String.valueOf(playerPosition.getZ())).build();
|
|
|
+ AnglePO playerAngle = user.getPlayerAngle();
|
|
|
+ AngleUe4 playerAg = null;
|
|
|
+ if(firstActionType == 15){
|
|
|
+ playerAngle.setYaw(lastActionPO.getPlayerAngle());
|
|
|
+ }
|
|
|
+ playerAg = AngleUe4.newBuilder().setPitch(playerAngle.getPitch()).setYaw(playerAngle.getYaw()).setRoll(playerAngle.getRoll()).build();
|
|
|
+ Space player = sceneGrpcService.createSpace(playerPt,playerAg);
|
|
|
+
|
|
|
+ PointPO cameraPoint = rotateFrameEntity.getCameraPosition();
|
|
|
+ Point cameraPosition = sceneGrpcService.createPoint(String.valueOf(cameraPoint.getX()),String.valueOf(cameraPoint.getY()),String.valueOf(cameraPoint.getZ()));
|
|
|
+ AnglePO cameraAnglePO = rotateFrameEntity.getCameraAngle();
|
|
|
+ AngleUe4 cameraAngle = sceneGrpcService.createAngle(cameraAnglePO.getPitch(),cameraAnglePO.getYaw(),cameraAnglePO.getRoll());
|
|
|
+ Space camera = sceneGrpcService.createSpace(cameraPosition,cameraAngle);
|
|
|
+
|
|
|
+ MetaDataFramePO metaDataFramePO = new MetaDataFramePO();
|
|
|
+ metaDataFramePO.setTraceIds(traceIds);
|
|
|
+ metaDataFramePO.setVehicle(null);
|
|
|
+ State playerState = sceneGrpcService.createPlayerState2(player,camera,playerPt);
|
|
|
+
|
|
|
+ RenderInfo renderInfo = sceneGrpcService.createRenderInfo();
|
|
|
UserState userState = sceneGrpcService.createUserState( user.getUserId(), playerState, renderInfo, null);
|
|
|
|
|
|
//newUserStates
|
|
@@ -650,6 +670,10 @@ public class UpdateFrameMetaTask {
|
|
|
metaDataFramePO.setMsg("");
|
|
|
|
|
|
redisCache.setCacheObject("updateFrameMetadata:"+user.getUserId(),metaDataFramePO);
|
|
|
+
|
|
|
+ //更新user表
|
|
|
+ user.setFrameId(lastActionPO.getFrameId());
|
|
|
+ user.setPlayerAngle(playerAngle);
|
|
|
}
|
|
|
/*
|
|
|
* {
|