|
@@ -10,7 +10,7 @@ import com.fdkk.fdkkmeta.domain.entity.mysql.UserEntity;
|
|
import com.fdkk.fdkkmeta.domain.po.AnglePO;
|
|
import com.fdkk.fdkkmeta.domain.po.AnglePO;
|
|
import com.fdkk.fdkkmeta.domain.po.JoystickPO;
|
|
import com.fdkk.fdkkmeta.domain.po.JoystickPO;
|
|
import com.fdkk.fdkkmeta.domain.po.PointPO;
|
|
import com.fdkk.fdkkmeta.domain.po.PointPO;
|
|
-import com.fdkk.fdkkmeta.domain.po.RotateRequestPO;
|
|
|
|
|
|
+import com.fdkk.fdkkmeta.domain.po.RotatePO;
|
|
import com.fdkk.fdkkmeta.grpc.*;
|
|
import com.fdkk.fdkkmeta.grpc.*;
|
|
import com.fdkk.fdkkmeta.redis.RedisCache;
|
|
import com.fdkk.fdkkmeta.redis.RedisCache;
|
|
import com.fdkk.fdkkmeta.service.BreakpointsService;
|
|
import com.fdkk.fdkkmeta.service.BreakpointsService;
|
|
@@ -25,6 +25,7 @@ import net.devh.boot.grpc.server.service.GrpcService;
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
|
|
|
import java.io.File;
|
|
import java.io.File;
|
|
|
|
+import java.util.Arrays;
|
|
import java.util.List;
|
|
import java.util.List;
|
|
|
|
|
|
/**
|
|
/**
|
|
@@ -51,7 +52,8 @@ public class sceneGrpcServer extends SceneGrpcServiceGrpc.SceneGrpcServiceImplBa
|
|
@Autowired
|
|
@Autowired
|
|
RedisCache redisCache;
|
|
RedisCache redisCache;
|
|
|
|
|
|
-
|
|
|
|
|
|
+ @Autowired
|
|
|
|
+ SceneGrpcService sceneGrpcService;
|
|
/***
|
|
/***
|
|
* 回复 案例
|
|
* 回复 案例
|
|
* SceneReply res = SceneReply.newBuilder().setRes(id+","+name).build();
|
|
* SceneReply res = SceneReply.newBuilder().setRes(id+","+name).build();
|
|
@@ -230,7 +232,7 @@ public class sceneGrpcServer extends SceneGrpcServiceGrpc.SceneGrpcServiceImplBa
|
|
"user_id":"0a3987974feb4"
|
|
"user_id":"0a3987974feb4"
|
|
}
|
|
}
|
|
*/
|
|
*/
|
|
- RotateRequestPO rotateRequestPO = new RotateRequestPO();
|
|
|
|
|
|
+ RotatePO rotateRequestPO = new RotatePO();
|
|
|
|
|
|
int action_type = request.getActionType();
|
|
int action_type = request.getActionType();
|
|
String trace_id = request.getTraceId();
|
|
String trace_id = request.getTraceId();
|
|
@@ -246,7 +248,7 @@ public class sceneGrpcServer extends SceneGrpcServiceGrpc.SceneGrpcServiceImplBa
|
|
rotateRequestPO.setTrace_id(trace_id);
|
|
rotateRequestPO.setTrace_id(trace_id);
|
|
rotateRequestPO.setUser_id(user_id);
|
|
rotateRequestPO.setUser_id(user_id);
|
|
//redisCache.setCacheObject("setCacheRequest:"+user_id,rotateRequestPO);
|
|
//redisCache.setCacheObject("setCacheRequest:"+user_id,rotateRequestPO);
|
|
-
|
|
|
|
|
|
+ redisCache.setCacheList("setCacheRequest:rotate:"+user_id, Arrays.asList(rotateRequestPO));
|
|
/*
|
|
/*
|
|
//这三个变量从user表和rotateframe表里取
|
|
//这三个变量从user表和rotateframe表里取
|
|
UserEntity user = userService.findUserId(user_id);
|
|
UserEntity user = userService.findUserId(user_id);
|
|
@@ -395,15 +397,14 @@ public class sceneGrpcServer extends SceneGrpcServiceGrpc.SceneGrpcServiceImplBa
|
|
AngleUe4 playerAg =AngleUe4.newBuilder().setPitch(playerAngle.getPitch()).setYaw(playerAngle.getYaw()).setRoll(playerAngle.getRoll()).build();
|
|
AngleUe4 playerAg =AngleUe4.newBuilder().setPitch(playerAngle.getPitch()).setYaw(playerAngle.getYaw()).setRoll(playerAngle.getRoll()).build();
|
|
player.setAngle(playerAg);
|
|
player.setAngle(playerAg);
|
|
userInfo.put("player",player);
|
|
userInfo.put("player",player);
|
|
-
|
|
|
|
userInfo.put("camera",null);
|
|
userInfo.put("camera",null);
|
|
userInfo.put("cameraCenter",null);
|
|
userInfo.put("cameraCenter",null);
|
|
|
|
|
|
- State playerState = createPlayerState(userInfo);
|
|
|
|
- RenderInfo renderInfo = createRenderInfo();
|
|
|
|
- Event event = createEvent();
|
|
|
|
|
|
+ State playerState = sceneGrpcService.createPlayerState(userInfo);
|
|
|
|
+ RenderInfo renderInfo = sceneGrpcService.createRenderInfo();
|
|
|
|
+ Event event = sceneGrpcService.createEvent();
|
|
|
|
|
|
- UserState userState = createUserState( user.getUserId(), playerState, renderInfo, event);
|
|
|
|
|
|
+ UserState userState = sceneGrpcService.createUserState( user.getUserId(), playerState, renderInfo, event);
|
|
builder.addNewUserStates(userState);
|
|
builder.addNewUserStates(userState);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
@@ -737,6 +738,8 @@ public class sceneGrpcServer extends SceneGrpcServiceGrpc.SceneGrpcServiceImplBa
|
|
joystickPO.setTrace_id(trace_id);
|
|
joystickPO.setTrace_id(trace_id);
|
|
joystickPO.setUser_id(user_id);
|
|
joystickPO.setUser_id(user_id);
|
|
joystickPO.setPacket_id(packet_id);
|
|
joystickPO.setPacket_id(packet_id);
|
|
|
|
+
|
|
|
|
+ redisCache.setCacheList("setCacheRequest:joystick:"+user_id, Arrays.asList(joystickPO));
|
|
//redisCache.setCacheObject("setCacheRequest:"+user_id,joystickPO);
|
|
//redisCache.setCacheObject("setCacheRequest:"+user_id,joystickPO);
|
|
//UserEntity user = userService.findUserId(user_id);
|
|
//UserEntity user = userService.findUserId(user_id);
|
|
//Long breakPointId = user.getBreakPointId();
|
|
//Long breakPointId = user.getBreakPointId();
|
|
@@ -756,112 +759,112 @@ public class sceneGrpcServer extends SceneGrpcServiceGrpc.SceneGrpcServiceImplBa
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
- private UserState createUserState(String user_id,State state,RenderInfo renderInfo,Event event) {
|
|
|
|
- UserState userState = UserState.newBuilder()
|
|
|
|
- .setUserId(user_id)
|
|
|
|
- .setPlayerState(state)
|
|
|
|
- .setRenderInfo(renderInfo)
|
|
|
|
- .setEvent(event)
|
|
|
|
- .setRelation(1)
|
|
|
|
- .build();
|
|
|
|
- return userState;
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- private State createPlayerState(JSONObject userInfo) {
|
|
|
|
- State.Builder builder = State.newBuilder();
|
|
|
|
- builder.setRoomTypeId(userInfo.getString("roomTypeId"));
|
|
|
|
- builder.setPerson(0);
|
|
|
|
- builder.setAvatarId(userInfo.getString("avatarId"));
|
|
|
|
- builder.setSkinId(userInfo.getString("skinId"));
|
|
|
|
- builder.setRoomId(userInfo.getString("roomId"));
|
|
|
|
- builder.setIsHost(false);
|
|
|
|
- builder.setIsFollowHost(false);
|
|
|
|
- builder.setSkinDataVersion(userInfo.getString("skinDataVersion"));
|
|
|
|
- builder.setAvatarComponents("");
|
|
|
|
- builder.setNickName(userInfo.getString("nickName"));
|
|
|
|
- builder.setMovingMode(0);
|
|
|
|
- builder.setAttitude("walk");
|
|
|
|
- builder.setAreaName("");
|
|
|
|
- builder.setPathName("thirdwalk");
|
|
|
|
- builder.setPathId("thirdwalk");
|
|
|
|
- builder.setAvatarSize(1);
|
|
|
|
- if(userInfo.get("extra") != null){
|
|
|
|
- builder.setExtra((Extra)userInfo.get("extra"));
|
|
|
|
- }
|
|
|
|
- builder.setPrioritySync(false);
|
|
|
|
- builder.setPlayer((Space)userInfo.get("player"));
|
|
|
|
- if(userInfo.get("camera") != null){
|
|
|
|
- builder.setCamera((Space)userInfo.get("camera"));
|
|
|
|
- }
|
|
|
|
- if(userInfo.get("cameraCenter") != null){
|
|
|
|
- builder.setCamera((Space)userInfo.get("cameraCenter"));
|
|
|
|
- }
|
|
|
|
- return builder.build();
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- private RenderInfo createRenderInfo() {
|
|
|
|
- RenderInfo renderInfo = RenderInfo.newBuilder()
|
|
|
|
- .setRenderType(0)
|
|
|
|
- //.setVideoFrame(null)
|
|
|
|
- .setVideoFrame("")
|
|
|
|
- .setCameraStateType(0)
|
|
|
|
- .setIsMoving(0)
|
|
|
|
- .setNeedIfr(0)
|
|
|
|
- .setIsVideo(0)
|
|
|
|
- .setStillFrame(0)
|
|
|
|
- .setIsRotating(0)
|
|
|
|
- .setIsFollowing(0)
|
|
|
|
- .setClientPanoTreceId("")
|
|
|
|
- .setPrefetchVideoId("")
|
|
|
|
- .setNoMedia(false).build();
|
|
|
|
- return renderInfo;
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- private Event createEvent() {
|
|
|
|
- Event event = Event.newBuilder().setId("").setType(0).build();
|
|
|
|
- return event;
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- private Space createSpace(Point position,AngleUe4 angle) {
|
|
|
|
- Space space = Space.newBuilder().setPosition(position).setAngle(angle).build();
|
|
|
|
- return space;
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- private Point createPoint(String x,String y,String z) {
|
|
|
|
- Point point = Point.newBuilder().setX(x).setY(y).setZ(z).build();
|
|
|
|
- return point;
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- private AngleUe4 createAngle(int pitch,int yaw,int roll) {
|
|
|
|
- AngleUe4 angle = AngleUe4.newBuilder().setPitch(pitch).setYaw(yaw).setRoll(roll).build();
|
|
|
|
- return angle;
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- /**
|
|
|
|
- * 根据余弦定理计算线段1到线段2的夹角,线段1:起始点到原点,线段2:原点到结束点)
|
|
|
|
- * @param o 原点
|
|
|
|
- * @param s 起始点
|
|
|
|
- * @param e 结束点
|
|
|
|
- * @return
|
|
|
|
- */
|
|
|
|
- private double calAngle(JSONObject o, JSONObject s, JSONObject e) {
|
|
|
|
- double cosfi = 0;
|
|
|
|
- double fi = 0;
|
|
|
|
- double norm = 0;
|
|
|
|
- double dsx = s.getDoubleValue("x") - o.getDoubleValue("x");
|
|
|
|
- double dsy = s.getDoubleValue("y") - o.getDoubleValue("y");
|
|
|
|
- double dex = e.getDoubleValue("x") - o.getDoubleValue("x");
|
|
|
|
- double dey = e.getDoubleValue("y") - o.getDoubleValue("y");
|
|
|
|
- cosfi = dsx * dex + dsy * dey;
|
|
|
|
- norm = (dsx * dsx + dsy * dsy) * (dex * dex + dey * dey);
|
|
|
|
- cosfi /= Math.sqrt(norm);
|
|
|
|
- if (cosfi >= 1.0) return 0;
|
|
|
|
- if (cosfi <= -1.0) return Math.PI;
|
|
|
|
- fi = Math.acos(cosfi);
|
|
|
|
- if (180 * fi / Math.PI < 180) {
|
|
|
|
- return 180 * fi / Math.PI;
|
|
|
|
- } else {
|
|
|
|
- return 360 - 180 * fi / Math.PI;
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
|
|
+// private UserState createUserState(String user_id,State state,RenderInfo renderInfo,Event event) {
|
|
|
|
+// UserState userState = UserState.newBuilder()
|
|
|
|
+// .setUserId(user_id)
|
|
|
|
+// .setPlayerState(state)
|
|
|
|
+// .setRenderInfo(renderInfo)
|
|
|
|
+// .setEvent(event)
|
|
|
|
+// .setRelation(1)
|
|
|
|
+// .build();
|
|
|
|
+// return userState;
|
|
|
|
+// }
|
|
|
|
+
|
|
|
|
+// private State createPlayerState(JSONObject userInfo) {
|
|
|
|
+// State.Builder builder = State.newBuilder();
|
|
|
|
+// builder.setRoomTypeId(userInfo.getString("roomTypeId"));
|
|
|
|
+// builder.setPerson(0);
|
|
|
|
+// builder.setAvatarId(userInfo.getString("avatarId"));
|
|
|
|
+// builder.setSkinId(userInfo.getString("skinId"));
|
|
|
|
+// builder.setRoomId(userInfo.getString("roomId"));
|
|
|
|
+// builder.setIsHost(false);
|
|
|
|
+// builder.setIsFollowHost(false);
|
|
|
|
+// builder.setSkinDataVersion(userInfo.getString("skinDataVersion"));
|
|
|
|
+// builder.setAvatarComponents("");
|
|
|
|
+// builder.setNickName(userInfo.getString("nickName"));
|
|
|
|
+// builder.setMovingMode(0);
|
|
|
|
+// builder.setAttitude("walk");
|
|
|
|
+// builder.setAreaName("");
|
|
|
|
+// builder.setPathName("thirdwalk");
|
|
|
|
+// builder.setPathId("thirdwalk");
|
|
|
|
+// builder.setAvatarSize(1);
|
|
|
|
+// if(userInfo.get("extra") != null){
|
|
|
|
+// builder.setExtra((Extra)userInfo.get("extra"));
|
|
|
|
+// }
|
|
|
|
+// builder.setPrioritySync(false);
|
|
|
|
+// builder.setPlayer((Space)userInfo.get("player"));
|
|
|
|
+// if(userInfo.get("camera") != null){
|
|
|
|
+// builder.setCamera((Space)userInfo.get("camera"));
|
|
|
|
+// }
|
|
|
|
+// if(userInfo.get("cameraCenter") != null){
|
|
|
|
+// builder.setCamera((Space)userInfo.get("cameraCenter"));
|
|
|
|
+// }
|
|
|
|
+// return builder.build();
|
|
|
|
+// }
|
|
|
|
+//
|
|
|
|
+// private RenderInfo createRenderInfo() {
|
|
|
|
+// RenderInfo renderInfo = RenderInfo.newBuilder()
|
|
|
|
+// .setRenderType(0)
|
|
|
|
+// //.setVideoFrame(null)
|
|
|
|
+// .setVideoFrame("")
|
|
|
|
+// .setCameraStateType(0)
|
|
|
|
+// .setIsMoving(0)
|
|
|
|
+// .setNeedIfr(0)
|
|
|
|
+// .setIsVideo(0)
|
|
|
|
+// .setStillFrame(0)
|
|
|
|
+// .setIsRotating(0)
|
|
|
|
+// .setIsFollowing(0)
|
|
|
|
+// .setClientPanoTreceId("")
|
|
|
|
+// .setPrefetchVideoId("")
|
|
|
|
+// .setNoMedia(false).build();
|
|
|
|
+// return renderInfo;
|
|
|
|
+// }
|
|
|
|
+//
|
|
|
|
+// private Event createEvent() {
|
|
|
|
+// Event event = Event.newBuilder().setId("").setType(0).build();
|
|
|
|
+// return event;
|
|
|
|
+// }
|
|
|
|
+//
|
|
|
|
+// private Space createSpace(Point position,AngleUe4 angle) {
|
|
|
|
+// Space space = Space.newBuilder().setPosition(position).setAngle(angle).build();
|
|
|
|
+// return space;
|
|
|
|
+// }
|
|
|
|
+//
|
|
|
|
+// private Point createPoint(String x,String y,String z) {
|
|
|
|
+// Point point = Point.newBuilder().setX(x).setY(y).setZ(z).build();
|
|
|
|
+// return point;
|
|
|
|
+// }
|
|
|
|
+//
|
|
|
|
+// private AngleUe4 createAngle(int pitch,int yaw,int roll) {
|
|
|
|
+// AngleUe4 angle = AngleUe4.newBuilder().setPitch(pitch).setYaw(yaw).setRoll(roll).build();
|
|
|
|
+// return angle;
|
|
|
|
+// }
|
|
|
|
+//
|
|
|
|
+// /**
|
|
|
|
+// * 根据余弦定理计算线段1到线段2的夹角,线段1:起始点到原点,线段2:原点到结束点)
|
|
|
|
+// * @param o 原点
|
|
|
|
+// * @param s 起始点
|
|
|
|
+// * @param e 结束点
|
|
|
|
+// * @return
|
|
|
|
+// */
|
|
|
|
+// private double calAngle(JSONObject o, JSONObject s, JSONObject e) {
|
|
|
|
+// double cosfi = 0;
|
|
|
|
+// double fi = 0;
|
|
|
|
+// double norm = 0;
|
|
|
|
+// double dsx = s.getDoubleValue("x") - o.getDoubleValue("x");
|
|
|
|
+// double dsy = s.getDoubleValue("y") - o.getDoubleValue("y");
|
|
|
|
+// double dex = e.getDoubleValue("x") - o.getDoubleValue("x");
|
|
|
|
+// double dey = e.getDoubleValue("y") - o.getDoubleValue("y");
|
|
|
|
+// cosfi = dsx * dex + dsy * dey;
|
|
|
|
+// norm = (dsx * dsx + dsy * dsy) * (dex * dex + dey * dey);
|
|
|
|
+// cosfi /= Math.sqrt(norm);
|
|
|
|
+// if (cosfi >= 1.0) return 0;
|
|
|
|
+// if (cosfi <= -1.0) return Math.PI;
|
|
|
|
+// fi = Math.acos(cosfi);
|
|
|
|
+// if (180 * fi / Math.PI < 180) {
|
|
|
|
+// return 180 * fi / Math.PI;
|
|
|
|
+// } else {
|
|
|
|
+// return 360 - 180 * fi / Math.PI;
|
|
|
|
+// }
|
|
|
|
+// }
|
|
}
|
|
}
|