diff --git a/src/main/java/cactusServer/entities/Player.java b/src/main/java/cactusServer/entities/Player.java index 4120783..4878612 100644 --- a/src/main/java/cactusServer/entities/Player.java +++ b/src/main/java/cactusServer/entities/Player.java @@ -17,11 +17,11 @@ private Quaternion3D angle; private CameraState cameraState; private EmoteState emoteState; - private long lastOperateTime = System.nanoTime(); + private long lastUpdateTime = System.nanoTime(); @JSONHint(ignore = true) public static final int UNIQUE_ID_LENGTH = 12; @JSONHint(ignore = true) - public static final long STOP_TIME_LIMIT = (long)(30 * Math.pow(10, 9)); + public static final long STOP_TIME_LIMIT = (long)(30 * 1e+9); private Player() { // JSONDecode���̌Ăяo���p @@ -42,7 +42,7 @@ setEmoteState(new EmoteState()); } Character character = getCharacter(); - readCharacterData(); + readCharacterData(character); initPlaceable(character.getModelID()); } @@ -85,8 +85,8 @@ } @JSONHint(ignore = true) - public long getLastOperateTime() { - return lastOperateTime; + public long getLastUpdateTime() { + return lastUpdateTime; } public void setInstanceID(String instanceID) { @@ -122,15 +122,17 @@ } @JSONHint(ignore = true) - public void setLastOperateTime(long lastOperateTime) { - this.lastOperateTime = lastOperateTime; + public void setLastUpdateTime(long lastUpdateTime) { + this.lastUpdateTime = lastUpdateTime; } public Player update(String characterID, Position3D position, Quaternion3D angle, CameraState cameraState, EmoteState.EmoteType animationClassToStart) { - setCharacterID(characterID); setPosition(position); setAngle(angle); + if (!this.characterID.equals(characterID)) { + changeCharacter(characterID); + } setCameraState(cameraState); updateEmoteType(animationClassToStart); // updateAreaURI(); @@ -169,7 +171,9 @@ public void changeCharacter(String characterID) { writeCharacterData(); setCharacterID(characterID); - readCharacterData(); + Character character = getCharacter(); + readCharacterData(character); + initPlaceable(character.getModelID()); } public void destroy() { @@ -186,13 +190,14 @@ setAreaURI(character.getAreaURI()); } - private void readCharacterData() { - Character character = getCharacter(); - readCharacterData(character); - } +// private void readCharacterData() { +// Character character = getCharacter(); +// readCharacterData(character); +// } private void writeCharacterData() { Character character = getCharacter(); +// if (character == null) return; character.update(position, angle, areaURI); } } diff --git a/src/main/java/cactusServer/models/Instances.java b/src/main/java/cactusServer/models/Instances.java index 32c7785..3f99c4a 100644 --- a/src/main/java/cactusServer/models/Instances.java +++ b/src/main/java/cactusServer/models/Instances.java @@ -113,9 +113,9 @@ } public Player updatePlayer(String playerId, String characterID, Position3D position, Quaternion3D angle, - CameraState cameraState, EmoteState.EmoteType animationClassToStart, long lastOperateTime) { + CameraState cameraState, EmoteState.EmoteType animationClassToStart, long lastUpdateTime) { Player player = updatePlayer(playerId, characterID, position, angle, cameraState, animationClassToStart); - player.setLastOperateTime(lastOperateTime); + player.setLastUpdateTime(lastUpdateTime); return player; } diff --git a/src/main/java/cactusServer/resources/PlayersRest.java b/src/main/java/cactusServer/resources/PlayersRest.java index 0fadd0f..1e0352a 100644 --- a/src/main/java/cactusServer/resources/PlayersRest.java +++ b/src/main/java/cactusServer/resources/PlayersRest.java @@ -29,14 +29,13 @@ // @Produces(MediaType.APPLICATION_JSON) @Produces(MediaType.TEXT_PLAIN) public String createPlayer(@FormParam("instanceID") String instanceID, - @FormParam("characterID") String characterID/*, @FormParam("cameraState") CameraState cameraState, - @FormParam("animationClassToStart") EmoteState.EmoteType animationClassToStart*/) { + @FormParam("characterID") String characterID) { Instances instances = Instances.getInstance(); HashMap idMap = instances.createPlayer(instanceID, characterID, null, null); HashMap uriMap = new HashMap<>(); for (String id : idMap.keySet()) { - String uri = (InstancesRest.INSTANCES_URI + "/" + "/players/") + id; + String uri = (InstancesRest.INSTANCES_URI + "/players/") + id; uriMap.put(uri, idMap.get(id)); } return JSON.encode(uriMap); diff --git a/src/main/java/cactusServer/utils/App.java b/src/main/java/cactusServer/utils/App.java index f02f092..930028c 100644 --- a/src/main/java/cactusServer/utils/App.java +++ b/src/main/java/cactusServer/utils/App.java @@ -46,11 +46,11 @@ System.out.println("pass"); } - @Override + @Override public void run() { //System.out.println("�^�X�N�����s"); CollisionManager.getCollision().collisionRun(); - deletePlayerOfExceedTimeLimit(); + removeInactivePlayers(); } public void start(int interval) { @@ -84,27 +84,35 @@ Player player2 = new Player("test2", "chara2", cameraState, EmoteType.DUMMY); Instances.getInstance().getPlayers().put("player2", player2); // �_�~�[�I�u�W�F�N�g - Instances.getInstance().getInstance("test1").createObject(new Position3D(0, 0, 0), new Velocity3D(), - new AngularVelocity3D(), new Quaternion3D(), new Attribute(true, 1), 0); - // �m�F�p - // String player1Encode = JSON.encode(player1, true); - // String player2Encode = JSON.encode(player2, true); - // Player player1Decode = JSON.decode(player1Encode, Player.class); - // Player player2Decode = JSON.decode(player2Encode, Player.class); - // System.out.println(JSON.encode(player1Decode, true)); - // System.out.println(JSON.encode(player2Decode, true)); + Instances.getInstance().getInstance("test1").createObject(new Position3D(0, 0, 0), new Velocity3D(), + new AngularVelocity3D(), new Quaternion3D(), new Attribute(true,1), 0); +// // �m�F�p +// String player1Encode = JSON.encode(player1, true); +// String player2Encode = JSON.encode(player2, true); +// Player player1Decode = JSON.decode(player1Encode, Player.class); +// Player player2Decode = JSON.decode(player2Encode, Player.class); +// System.out.println(JSON.encode(player1Decode, true)); +// System.out.println(JSON.encode(player2Decode, true)); + +// JSON json = new JSON(); +// String characterId = player1.getCharacterID(); +// String encodeCharacterId = json.encode(characterId); +// System.out.println(characterId); +// System.out.println(encodeCharacterId); +// String position = json.encode(player1.getPosition()); +// System.out.println(position); } - private void deletePlayerOfExceedTimeLimit() { + private void removeInactivePlayers() { long currentTime = System.nanoTime(); Iterator> it = Instances.getInstance().getPlayers().entrySet().iterator(); while (it.hasNext()) { Map.Entry entry = it.next(); String playerId = entry.getKey(); Player player = entry.getValue(); - long lastOperateTime = player.getLastOperateTime(); - System.out.println(currentTime + ", " + (lastOperateTime + Player.STOP_TIME_LIMIT) + " // playerId: " + playerId); - if (currentTime > (lastOperateTime + Player.STOP_TIME_LIMIT)) { + long lastUpdateTime = player.getLastUpdateTime(); + System.out.println(currentTime + ", " + (lastUpdateTime + Player.STOP_TIME_LIMIT) + " // playerId: " + playerId); + if (currentTime > (lastUpdateTime + Player.STOP_TIME_LIMIT)) { System.out.println("delete started (playerId: " + playerId + ")"); player.destroy(); Instance instance = Instances.getInstance().getInstance(player.getInstanceID());