diff --git a/src/main/java/cactusServer/entities/Area.java b/src/main/java/cactusServer/entities/Area.java index 90cfee8..20496b4 100644 --- a/src/main/java/cactusServer/entities/Area.java +++ b/src/main/java/cactusServer/entities/Area.java @@ -44,14 +44,12 @@ public boolean isSurroundingPosition(Position3D position) { for (Plain plain : region) { - // ������ Plain��a,b,c,d �� Character��x,y,z ��p����, �L�����N�^�[�����ʂɂ��邩�ǂ����̔�����s�� - - // double equation = (plain.getA() * position.getX()) + (plain.getB() * - // position.getY()) - // + (plain.getC() * position.getZ()) + plain.getD(); - // if (equation > 0) { - // return false; - // } + // ������ Plain��a,b,c,d �� Character��x,y,z ��p����, �L�����N�^�[�����ʂ̗��ɂ��邩�ǂ����̔�����s�� + double equation = (plain.getA() * position.getX()) + (plain.getB() * position.getY()) + + (plain.getC() * position.getZ()) + plain.getD(); + if (equation > 0) { + return false; + } } return true; } diff --git a/src/main/java/cactusServer/entities/Character.java b/src/main/java/cactusServer/entities/Character.java index 7b67348..08c2516 100644 --- a/src/main/java/cactusServer/entities/Character.java +++ b/src/main/java/cactusServer/entities/Character.java @@ -145,21 +145,27 @@ for (String areaId : instance.getAreaIdSet()) { Area area = instance.getArea(areaId); if (area.isSurroundingPosition(position)) { - int subStringStartIndex = areaURI.length() - Area.UNIQUE_ID_LENGTH; + int subStringEndIndex = areaURI.length() - Area.UNIQUE_ID_LENGTH; StringBuilder newAreaURI = new StringBuilder(); - return newAreaURI.append(areaURI.substring(0, subStringStartIndex)).append(areaId).toString(); + return newAreaURI.append(areaURI.substring(0, subStringEndIndex)).append(areaId).toString(); } } - throw new IllegalStateException("Character is in the unknown area."); + return ""; } - - public void update(Position3D position, Angle angle, String model) { + + public void update(Position3D position, Angle angle, String model, String areaURI) { setPosition(position); setAngle(angle); - setModel(model); - updateAreaURI(); + if (model != null) { + setModel(model); + } + if (areaURI != null) { + setAreaURI(areaURI); + } else { + updateAreaURI(); + } } - + private void updateAreaURI() { String[] areaURISplit = areaURI.split("/"); // �c�c/instances/{instanceId}/areas/{areaId} int splitSize = areaURISplit.length; diff --git a/src/main/java/cactusServer/entities/Instance.java b/src/main/java/cactusServer/entities/Instance.java index b2df2ab..e8860ad 100644 --- a/src/main/java/cactusServer/entities/Instance.java +++ b/src/main/java/cactusServer/entities/Instance.java @@ -20,7 +20,7 @@ /** * �C���X�^���X * - * @author ryo isitani + * @author r-isitani * */ public class Instance extends Entity { @@ -143,7 +143,7 @@ public Character updateCharacter(String characterId, Position3D position, Angle angle, String model) { Character character = characterMap.get(characterId); - character.update(position, angle, model); + character.update(position, angle, model, null); // areaURI(��4����)�̍X�V�͌Ăяo����Ŏ����ōs���� return character; } diff --git a/src/main/java/cactusServer/entities/Player.java b/src/main/java/cactusServer/entities/Player.java index eafe72f..4d1ce8e 100644 --- a/src/main/java/cactusServer/entities/Player.java +++ b/src/main/java/cactusServer/entities/Player.java @@ -102,8 +102,9 @@ public void setAnimationClassToStart(EmoteState.EmoteType animationClassToStart) { setEmoteState(new EmoteState(animationClassToStart)); } - - public Player update(String characterURI, Position3D position, Angle angle, CameraState cameraState, EmoteState.EmoteType animationClassToStart) { + + public Player update(String characterURI, Position3D position, Angle angle, CameraState cameraState, + EmoteState.EmoteType animationClassToStart) { setCharacterURI(characterURI); setPosition(position); setAngle(angle); @@ -131,26 +132,24 @@ for (String areaId : instance.getAreaIdSet()) { Area area = instance.getArea(areaId); if (area.isSurroundingPosition(position)) { - int subStringStartIndex = areaURI.length() - Area.UNIQUE_ID_LENGTH; + int subStringEndIndex = areaURI.length() - Area.UNIQUE_ID_LENGTH; StringBuilder newAreaURI = new StringBuilder(); - return newAreaURI.append(areaURI.substring(0, subStringStartIndex)).append(areaId).toString(); + return newAreaURI.append(areaURI.substring(0, subStringEndIndex)).append(areaId).toString(); } } - throw new IllegalStateException("Character is in the unknown area."); + return ""; } private void updateEmoteType(EmoteState.EmoteType animationClassToStart) { this.emoteState.setEmoteType(animationClassToStart); } - public void deletePlayer() { + public void destroyPlayer() { writeCharacterData(characterURI); } private void writeCharacterData(String characterURI) { Character character = getCharacter(characterURI); - character.setPosition(position); - character.setAngle(angle); - character.setAreaURI(areaURI); + character.update(position, angle, null, areaURI); // model(��3����)�̍X�V�͏o���Ȃ� } }