|
|
@@ -197,9 +197,19 @@ public class sceneGrpcServer extends SceneGrpcServiceGrpc.SceneGrpcServiceImplBa
|
|
|
@Override
|
|
|
public void rotate(RotateRequest request, StreamObserver<NormalReply> responseObserver) {
|
|
|
try {
|
|
|
+ //redisPublishService.sendProtocolMessage(RedisQueueConstant.ROTATE_QUEUE,request.toBuilder());
|
|
|
+ int actionType = request.getActionType();
|
|
|
+ String trace_id = request.getTraceId();
|
|
|
+ String user_id = request.getUserId();
|
|
|
+ RotationAction rotationAction = request.getRotationAction();
|
|
|
|
|
|
- redisPublishService.sendProtocolMessage(RedisQueueConstant.ROTATE_QUEUE,request.toBuilder());
|
|
|
+ ActionPO rotateRequestPO = new ActionPO();
|
|
|
+ rotateRequestPO.setAction_type(actionType);
|
|
|
+ rotateRequestPO.setTrace_id(trace_id);
|
|
|
+ rotateRequestPO.setUser_id(user_id);
|
|
|
+ rotateRequestPO.setRotationAction(rotationAction);
|
|
|
|
|
|
+ redisCache.setCacheList("setCacheRequest:"+user_id, Arrays.asList(rotateRequestPO));
|
|
|
NormalReply.Builder builder = NormalReply.newBuilder();
|
|
|
builder.setCode(200);
|
|
|
responseObserver.onNext(builder.build());
|
|
|
@@ -243,100 +253,28 @@ public class sceneGrpcServer extends SceneGrpcServiceGrpc.SceneGrpcServiceImplBa
|
|
|
log.error("echoException{}",e.getMessage());
|
|
|
}
|
|
|
}
|
|
|
- /*
|
|
|
- @Override
|
|
|
- public void usersState(GetNewUserStateRequest request, StreamObserver<GetNewUserStateReply> responseObserver){
|
|
|
-
|
|
|
- try{
|
|
|
- int action_type = request.getActionType();
|
|
|
- String trace_id = request.getTraceId();
|
|
|
- String user_id = request.getUserId();
|
|
|
-
|
|
|
- //从数据库中取全部在线的user表
|
|
|
- List<UserEntity> list = userService.findUserOnline(true);
|
|
|
|
|
|
- GetNewUserStateReply.Builder builder = GetNewUserStateReply.newBuilder();
|
|
|
- builder.setActionType(action_type);
|
|
|
- builder.setPointType(100);
|
|
|
- builder.setExtra("");
|
|
|
- builder.setTraceId(trace_id);
|
|
|
- builder.setPacketId("");
|
|
|
- //builder.setNps(nps);
|
|
|
- builder.setPeopleNum(0);
|
|
|
- builder.setZoneId("");
|
|
|
- builder.setEchoMsg("");
|
|
|
- builder.setReserveDetail(null);
|
|
|
- //builder.setUserWithAvatarList();
|
|
|
- if(list.size()>0){
|
|
|
- for(int i=0;i<list.size();++i){
|
|
|
- UserEntity user = list.get(i);
|
|
|
- JSONObject userInfo = new JSONObject();
|
|
|
- userInfo.put("roomTypeId","");
|
|
|
- userInfo.put("person",0);
|
|
|
- userInfo.put("avatarId",user.getAvatarId());
|
|
|
- userInfo.put("skinId",user.getSkinId());
|
|
|
- userInfo.put("roomId",user.getRoomId());
|
|
|
- userInfo.put("isHost",false);
|
|
|
- userInfo.put("isFollowHost",false);
|
|
|
- userInfo.put("skinDataVersion",user.getSkinDataVersion());
|
|
|
- userInfo.put("avatarComponents","");
|
|
|
- userInfo.put("nickName",user.getNickName());
|
|
|
- userInfo.put("movingMode",0); //后续会修改
|
|
|
- userInfo.put("attitude","walk");
|
|
|
- userInfo.put("areaName","");
|
|
|
- userInfo.put("pathName","");
|
|
|
- userInfo.put("pathId","thirdwalk");
|
|
|
- userInfo.put("avatarSize",1);
|
|
|
- userInfo.put("extra","{\"removeWhenDisconnected\":true}");
|
|
|
- userInfo.put("prioritySync",false);
|
|
|
-
|
|
|
- Space.Builder player = Space.newBuilder();
|
|
|
- PointPO playerPosition = user.getPlayerPosition();
|
|
|
- Point playerPt = Point.newBuilder().setX(String.valueOf(playerPosition.getX())).setY(String.valueOf(playerPosition.getY())).setZ(String.valueOf(playerPosition.getZ())).build();
|
|
|
- player.setPosition(playerPt);
|
|
|
- AnglePO playerAngle = user.getPlayerAngle();
|
|
|
- AngleUe4 playerAg =AngleUe4.newBuilder().setPitch(playerAngle.getPitch()).setYaw(playerAngle.getYaw()).setRoll(playerAngle.getRoll()).build();
|
|
|
- player.setAngle(playerAg);
|
|
|
- userInfo.put("player",player);
|
|
|
- userInfo.put("camera",null);
|
|
|
- userInfo.put("cameraCenter",null);
|
|
|
-
|
|
|
- State playerState = sceneGrpcService.createPlayerState(userInfo);
|
|
|
- RenderInfo renderInfo = sceneGrpcService.createRenderInfo();
|
|
|
- Event event = sceneGrpcService.createEvent();
|
|
|
-
|
|
|
- UserState userState = sceneGrpcService.createUserState( user.getUserId(), playerState, renderInfo, event);
|
|
|
- builder.addNewUserStates(userState);
|
|
|
- }
|
|
|
- }
|
|
|
- //builder.setNewUserStates();
|
|
|
- builder.setCode(200);
|
|
|
- builder.setMsg("");
|
|
|
-
|
|
|
- responseObserver.onNext(builder.build());
|
|
|
- responseObserver.onCompleted();
|
|
|
- }
|
|
|
- catch (Exception e){
|
|
|
- e.printStackTrace();
|
|
|
- responseObserver.onNext(GetNewUserStateReply.newBuilder().setCode(500).build());
|
|
|
- responseObserver.onCompleted();
|
|
|
- log.error("usersStateException{}",e.getMessage());
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- */
|
|
|
@Override
|
|
|
public void move(MoveRequest request, StreamObserver<NormalReply> responseObserver){
|
|
|
try{
|
|
|
- //int action_type= request.getActionType();
|
|
|
+ int action_type= request.getActionType();
|
|
|
ClickingAction clicking_action = request.getClickingAction();
|
|
|
- //State clicking_state = request.getClickingState();
|
|
|
+ State clicking_state = request.getClickingState();
|
|
|
String trace_id = request.getTraceId();
|
|
|
String user_id = request.getUserId();
|
|
|
|
|
|
- UserEntity user = userService.findUserId(user_id);
|
|
|
- String appId = user.getAppId();
|
|
|
- Long breakPointId = user.getBreakPointId();
|
|
|
+ ActionPO moveRequestPO = new ActionPO();
|
|
|
+ moveRequestPO.setAction_type(action_type);
|
|
|
+ moveRequestPO.setTrace_id(trace_id);
|
|
|
+ moveRequestPO.setUser_id(user_id);
|
|
|
+ moveRequestPO.setClicking_action(clicking_action);
|
|
|
+ moveRequestPO.setClicking_state(clicking_state);
|
|
|
+ redisCache.setCacheList("setCacheRequest:"+user_id, Arrays.asList(moveRequestPO));
|
|
|
+
|
|
|
+ /*
|
|
|
+ //UserEntity user = userService.findUserId(user_id);
|
|
|
+ //String appId = user.getAppId();
|
|
|
+ //Long breakPointId = user.getBreakPointId();
|
|
|
BreakpointsEntity currentBreakpointsEntity = breakpointsService.getById(breakPointId);
|
|
|
Point end = clicking_action.getClickingPoint();
|
|
|
RotateFrameEntity rotateFrameEntity = rotateFrameService.findById(user.getFrameId());
|
|
|
@@ -383,9 +321,11 @@ public class sceneGrpcServer extends SceneGrpcServiceGrpc.SceneGrpcServiceImplBa
|
|
|
movePO.setSubFrameIndex(subFrameIndex);
|
|
|
redisCache.setCacheList("setCacheRequest:"+user_id, Arrays.asList(movePO));
|
|
|
}
|
|
|
-
|
|
|
+ */
|
|
|
NormalReply.Builder builder = NormalReply.newBuilder();
|
|
|
builder.setCode(200);
|
|
|
+ responseObserver.onNext(builder.build());
|
|
|
+ responseObserver.onCompleted();
|
|
|
|
|
|
}
|
|
|
catch (Exception e){
|
|
|
@@ -398,8 +338,6 @@ public class sceneGrpcServer extends SceneGrpcServiceGrpc.SceneGrpcServiceImplBa
|
|
|
|
|
|
}
|
|
|
|
|
|
-
|
|
|
-
|
|
|
@Override
|
|
|
public void getBreakPoint(BreakPointRequest request, StreamObserver<BreakPointReply> responseObserver) {
|
|
|
try {
|
|
|
@@ -455,7 +393,52 @@ public class sceneGrpcServer extends SceneGrpcServiceGrpc.SceneGrpcServiceImplBa
|
|
|
try {
|
|
|
log.info("进入{}",request);
|
|
|
|
|
|
- redisPublishService.sendProtocolMessage(RedisQueueConstant.JOYSTICK_QUEUE,request.toBuilder());
|
|
|
+ //redisPublishService.sendProtocolMessage(RedisQueueConstant.JOYSTICK_QUEUE,request.toBuilder());
|
|
|
+ String user_id = request.getUserId();
|
|
|
+ int actionType = request.getActionType();
|
|
|
+ String trace_id = request.getTraceId();
|
|
|
+ String packet_id = request.getPacketId();
|
|
|
+ DirAction dirAction = request.getDirAction();
|
|
|
+
|
|
|
+ ActionPO joystickPO = new ActionPO();
|
|
|
+ joystickPO.setAction_type(actionType);
|
|
|
+ joystickPO.setTrace_id(trace_id);
|
|
|
+ joystickPO.setUser_id(user_id);
|
|
|
+ joystickPO.setPacket_id(packet_id);
|
|
|
+ joystickPO.setDirAction(dirAction);
|
|
|
+ redisCache.setCacheList("setCacheRequest:"+user_id, Arrays.asList(joystickPO));
|
|
|
+ /*
|
|
|
+ //速度不够,只是让人旋转
|
|
|
+ if(dirAction.getSpeedLevel()>7){
|
|
|
+ JSONObject myState = redisCache.getCacheObject("UserState:"+user_id);
|
|
|
+ //邻居点里找角度最合适的点
|
|
|
+ BreakpointsEntity breakpointsEntity = breakpointsService.findByAppIdAndBreakPointId(myState.getString("appId"),myState.getLong("breakPointId"));
|
|
|
+ BreakpointsEntity targetBreakpointsEntity = null;
|
|
|
+ List<Integer> neighBreakPointIds = breakpointsEntity.getContact();
|
|
|
+
|
|
|
+ double offAngle = 1000;
|
|
|
+ double moveAngle = dirAction.getMoveAngle();
|
|
|
+ int playerAngleYaw = 0;
|
|
|
+
|
|
|
+ if(neighBreakPointIds.size()>0){
|
|
|
+ for(int j=0;j<neighBreakPointIds.size();++j){
|
|
|
+ BreakpointsEntity _breakpointsEntity = breakpointsService.findByAppIdAndBreakPointId(myState.getString("appId"), (long)neighBreakPointIds.get(j));
|
|
|
+ playerAngleYaw = sceneGrpcService.calAngleForBreakPointId(breakpointsEntity,_breakpointsEntity);
|
|
|
+ if(Math.abs(playerAngleYaw - moveAngle)<offAngle){
|
|
|
+ offAngle = Math.abs(playerAngleYaw - moveAngle);
|
|
|
+ targetBreakpointsEntity = _breakpointsEntity;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ JSONArray path = new JSONArray();
|
|
|
+ path.add(myState.getLong("breakPointId"));
|
|
|
+ path.add(targetBreakpointsEntity.getBreakPointId());
|
|
|
+ joystickPO.setPath(path);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ redisCache.setCacheList("setCacheRequest:"+user_id, Arrays.asList(joystickPO));
|
|
|
+ */
|
|
|
+
|
|
|
//找到与角度move_angle最近的邻居点
|
|
|
//移动player,并且更新相机角度
|
|
|
NormalReply.Builder builder = NormalReply.newBuilder();
|