diff --git a/src/main/java/cactusServer/entities/Bullet.java b/src/main/java/cactusServer/entities/Bullet.java index f2b64e5..e652933 100644 --- a/src/main/java/cactusServer/entities/Bullet.java +++ b/src/main/java/cactusServer/entities/Bullet.java @@ -37,7 +37,7 @@ return angle; } -// @JSONHint(ignore = true) + @JSONHint(ignore = true) public boolean isAlive() { return isAlive; } diff --git a/src/main/java/cactusServer/entities/Player.java b/src/main/java/cactusServer/entities/Player.java index d6cce3f..03e3b81 100644 --- a/src/main/java/cactusServer/entities/Player.java +++ b/src/main/java/cactusServer/entities/Player.java @@ -15,12 +15,10 @@ private String instanceID; private String characterID; private String areaURI; - private Object3D object; private Position3D position; private Quaternion3D angle; private CameraState cameraState; private EmoteState emoteState; - private Primitive prim; private long lastUpdateTime = System.nanoTime(); @JSONHint(ignore = true) public static final int UNIQUE_ID_LENGTH = 12; @@ -54,7 +52,6 @@ // ����Ȋ����œ��Y�R���X�g���N�^�̍Ō��placeable�̒������s�� Object3D body = CharacterModelManager.getInstance().getCharacterModel(modelID).createObject(); setPlaceable(new OvergroundActor(body, null)); - setObject(body); } public String getInstanceID() { @@ -183,7 +180,7 @@ } public void changeCharacter(String characterID) { - writeCharacterData(); + destroy(); setCharacterID(characterID); Character character = getCharacter(); initPlaceable(character.getModelID()); @@ -206,24 +203,9 @@ setAreaURI(character.getAreaURI()); } - // private void readCharacterData() { - // Character character = getCharacter(); - // readCharacterData(character); - // } - private void writeCharacterData() { Character character = getCharacter(); // if (character == null) return; character.update(position, angle, areaURI); } - - @JSONHint(ignore = true) - public Object3D getObject() { - return object; - } - - public void setObject(Object3D object) { - this.object = object; - } - } diff --git a/src/main/java/cactusServer/models/CollisionManager.java b/src/main/java/cactusServer/models/CollisionManager.java index ef6235e..1904551 100644 --- a/src/main/java/cactusServer/models/CollisionManager.java +++ b/src/main/java/cactusServer/models/CollisionManager.java @@ -47,8 +47,7 @@ Instance instance = Instances.getInstance().getInstance(instanceId); instance.getUniverse().update(interval); collisionPlayersObjects(instanceId, instance); -// collisionBulletsAndOthers(instanceId, instance); - collisionBulletsAndOthersTmp(instanceId, instance); + collisionBulletsAndOthers(instanceId, instance); } } @@ -67,9 +66,9 @@ public void collisionMove(MovableObject object, Player player) { CollisionResult result; - result = PhysicsUtility.checkCollision(player.getObject(), null, object.getObject(), null); + result = PhysicsUtility.checkCollision((Object3D)player.getPlaceable().getBody(), null, object.getObject(), null); if (result != null) { - System.out.println("�v���C���[�ƃI�u�W�F�N�g�̏Փ�"); + System.out.println("�I�u�W�F�N�g�ƃv���C���[���Փ�"); objMove(result, object, false); } } @@ -78,7 +77,7 @@ CollisionResult result; result = PhysicsUtility.checkCollision(object1.getObject(), null, object2.getObject(), null); if (result != null) { - System.out.println("�I�u�W�F�N�g���m�̏Փ�"); + System.out.println(); Vector3d vec1 = object1.getVelocity().getVector3d(); Vector3d vec2 = object2.getVelocity().getVector3d(); if (vec1.length() > vec2.length()) { @@ -98,8 +97,8 @@ object.setPosition(new Position3D(vec)); } - private void collisionBulletsAndOthersTmp(String instanceId, Instance instance) { -// collisionBulletAndOtherBulletsTmp(instance); + private void collisionBulletsAndOthers(String instanceId, Instance instance) { +// collisionBulletAndOtherBullets(instance); for (Map.Entry> playersBulletsEntry : instance.getBullets().entrySet()) { String bulletOwnerPlayerId = playersBulletsEntry.getKey(); Map bulletMap = playersBulletsEntry.getValue(); @@ -107,66 +106,14 @@ Bullet bullet = bulletEntry.getValue(); if (!bullet.isAlive()) continue; String bulletId = bulletEntry.getKey(); - collisionBulletAndPlayersTmp(instanceId, instance, bulletOwnerPlayerId, bulletId, bullet); -// if (!bullet.isAlive()) continue; - collisionBulletAndObjectsTmp(instance, bulletOwnerPlayerId, bulletId, bullet); + collisionBulletAndPlayers(instanceId, instance, bulletOwnerPlayerId, bulletId, bullet); + if (!bullet.isAlive()) continue; + collisionBulletAndObjects(instance, bulletOwnerPlayerId, bulletId, bullet); } } } - -// private void collisionBulletsAndOthers(String instanceId, Instance instance) { -// Iterator>> playersBulletsEntryIt = instance.getBullets().entrySet() -// .iterator(); -// while (playersBulletsEntryIt.hasNext()) { -// Map.Entry> playersBulletsEntry = playersBulletsEntryIt.next(); -// String bulletOwnerPlayerId = playersBulletsEntry.getKey(); -// Map bulletMap = playersBulletsEntry.getValue(); -// Iterator> bulletEntryIt = bulletMap.entrySet().iterator(); -// while (bulletEntryIt.hasNext()) { -// Map.Entry bulletEntry = bulletEntryIt.next(); -// String bulletId = bulletEntry.getKey(); -// Bullet bullet = bulletEntry.getValue(); -// boolean isRemoved = collisionBulletAndPlayers(instanceId, instance, bulletOwnerPlayerId, bulletId, -// bullet, bulletEntryIt); -// if (!isRemoved) { -// collisionBulletAndObjects(instance, bulletOwnerPlayerId, bulletId, bullet, bulletEntryIt); -// } -// } -// } -// } -// private boolean collisionBulletAndPlayers(String instanceId, Instance instance, String bulletOwnerPlayerId, -// String bulletId, Bullet bullet, Iterator> bulletEntryIt) { -// Instances instances = Instances.getInstance(); -// for (Map.Entry playersEntry : instances.getPlayers(instanceId).entrySet()) { -// if (isCollision(bullet, playersEntry.getValue())) { -// if (!(playersEntry.getKey().equals(bulletOwnerPlayerId))) { -// // Player(����������)�ƒe�������������̏��������� -// } -// // Player(�������܂�)�ɓ��������e������ -// bulletEntryIt.remove(); -// instance.getUniverse().displace(bullet.getPlaceable()); -// System.out.println(bulletId + "�폜"); -// return true; -// } -// } -// return false; -// } - -// private boolean collisionBulletAndObjects(Instance instance, String bulletOwnerPlayerId, String bulletId, -// Bullet bullet, Iterator> bulletEntryIt) { -// for (MovableObject object : instance.getObjects().values()) { -// if (isCollision(bullet, object)) { -// bulletEntryIt.remove(); -// instance.getUniverse().displace(bullet.getPlaceable()); -// System.out.println(bulletId + "�폜"); -// return true; -// } -// } -// return false; -// } - - private boolean collisionBulletAndPlayersTmp(String instanceId, Instance instance, String bulletOwnerPlayerId, + private boolean collisionBulletAndPlayers(String instanceId, Instance instance, String bulletOwnerPlayerId, String bulletId, Bullet bullet) { Instances instances = Instances.getInstance(); for (Map.Entry playersEntry : instances.getPlayers(instanceId).entrySet()) { @@ -176,26 +123,26 @@ } // Player(�������܂�)�ɓ��������e�̐����t���O��܂� bullet.setAlive(false); - System.out.println(bulletId + "�����t���O�܂� (�e�ƃv���C���[�̏Փ�)"); + System.out.println(bulletId + " �� �v���C���[�̏Փ�"); return true; } } return false; } - private boolean collisionBulletAndObjectsTmp(Instance instance, String bulletOwnerPlayerId, String bulletId, + private boolean collisionBulletAndObjects(Instance instance, String bulletOwnerPlayerId, String bulletId, Bullet bullet) { for (MovableObject object : instance.getObjects().values()) { if (isCollision(bullet, object)) { bullet.setAlive(false); - System.out.println(bulletId + "�����t���O�܂� (�e�Ɖ“����̏Փ�)"); + System.out.println(bulletId + " �� �“����̏Փ�"); return true; } } return false; } - private void collisionBulletAndOtherBulletsTmp(Instance instance) { + private void collisionBulletAndOtherBullets(Instance instance) { List> allBulletsEntryList = new ArrayList<>(); for (HashMap playerBullets : instance.getBullets().values()) { allBulletsEntryList.addAll(playerBullets.entrySet()); @@ -211,8 +158,7 @@ if (isCollision(bullet1, bullet2)) { bullet1.setAlive(false); bullet2.setAlive(false); - System.out.println(bulletEntry1.getKey() + "�����t���O�܂� (�e�ƒe�̏Փ�)"); - System.out.println(bulletEntry2.getKey() + "�����t���O�܂� (�e�ƒe�̏Փ�)"); + System.out.println(bulletEntry1.getKey() + " �� " + bulletEntry2.getKey() + "�̏Փ�"); break; } } @@ -221,7 +167,7 @@ private boolean isCollision(Bullet bullet, Player player) { CollisionResult result; - result = PhysicsUtility.checkCollision((Object3D) (bullet.getPlaceable()), null, player.getObject(), null); + result = PhysicsUtility.checkCollision((Object3D) (bullet.getPlaceable()), null, (Object3D)player.getPlaceable().getBody(), null); return (result != null); } diff --git a/src/main/java/cactusServer/models/Instances.java b/src/main/java/cactusServer/models/Instances.java index 2c3613d..0b46311 100644 --- a/src/main/java/cactusServer/models/Instances.java +++ b/src/main/java/cactusServer/models/Instances.java @@ -110,8 +110,13 @@ CameraState cameraState, EmoteState.EmoteType animationClassToStart) { long lastUpdateTime = System.nanoTime(); Player player = playerMap.get(playerId); + String previousCharacterID = player.getCharacterID(); if (player != null) { player.update(characterID, position, angle, cameraState, animationClassToStart, lastUpdateTime); + if (previousCharacterID.equals(player.getCharacterID())) { + String instanceID = player.getInstanceID(); + instanceMap.get(instanceID).getUniverse().place(player.getPlaceable()); + } } return player; } diff --git a/src/main/java/cactusServer/utils/App.java b/src/main/java/cactusServer/utils/App.java index 6ff6e6a..ed8c80e 100644 --- a/src/main/java/cactusServer/utils/App.java +++ b/src/main/java/cactusServer/utils/App.java @@ -57,7 +57,7 @@ public void run() { // System.out.println("�^�X�N�����s"); CollisionManager.getInstance().collisionRun(System.nanoTime() - lasttime); -// removeDeadBullets(); + removeDeadBullets(); removeInactivePlayers(); lasttime = System.nanoTime(); } @@ -76,7 +76,7 @@ // �_�~�[�L�����N�^�[4�� String accountUri = "/CactusServer/rest/accounts/" + Accounts.getInstance().getAccountByID("test").getUniqueID(); - Character chara1 = new Character("test1", accountUri, "chara1", new Position3D(50, 50, 50), new Quaternion3D(), 0); + Character chara1 = new Character("test1", accountUri, "chara1", new Position3D(300, 400, 500), new Quaternion3D(), 0); Character chara2 = new Character("test2", accountUri, "chara2", new Position3D(), new Quaternion3D(), 0); Instances.getInstance().getInstance("test1").getCharacters().put("chara1", chara1); Instances.getInstance().getInstance("test1").getCharacters().put("chara2", chara2); @@ -109,6 +109,8 @@ new Quaternion3D()); Instances.getInstance().getInstance("test1").createBullet("player1", "testBulletId5", new Position3D(300, 400, 500), new Quaternion3D()); + Instances.getInstance().getInstance("test1").createBullet("player1", "testBulletId6", new Position3D(300, 400, 500), + new Quaternion3D()); // // �m�F�p // String player1Encode = JSON.encode(player1, true);