diff --git a/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/models/CactusModels.java b/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/models/CactusModels.java index ada4dfb..9506eaf 100644 --- a/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/models/CactusModels.java +++ b/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/models/CactusModels.java @@ -19,10 +19,8 @@ public CactusModels(RealTime3DFragment fragment, Universe universe) { super(fragment, universe); - models.add(new OtherPlayerCharactersModel(fragment, universe)); } - public void setInstanceId(String id) { for(GameBaseModel model : models) { model.setInstanceId(id); diff --git a/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/models/OtherPlayerCharactersModel.java b/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/models/OtherPlayerCharactersModel.java index 9d26711..300f488 100644 --- a/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/models/OtherPlayerCharactersModel.java +++ b/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/models/OtherPlayerCharactersModel.java @@ -1,24 +1,20 @@ package org.ntlab.radishforandroidstudio.cactusClient.models; import net.arnx.jsonic.JSON; +import net.arnx.jsonic.TypeReference; -import org.ntlab.radishforandroidstudio.cactusClient.connections.CharactersConnection; -import org.ntlab.radishforandroidstudio.framework.animation.Animation3D; +import org.ntlab.radishforandroidstudio.cactusClient.connections.PlayersConnection; import org.ntlab.radishforandroidstudio.framework.gameMain.Actor; import org.ntlab.radishforandroidstudio.framework.gameMain.GameBaseModel; -import org.ntlab.radishforandroidstudio.framework.gameMain.OvergroundActor; import org.ntlab.radishforandroidstudio.framework.gameMain.RealTime3DFragment; import org.ntlab.radishforandroidstudio.framework.model3D.ModelFactory; import org.ntlab.radishforandroidstudio.framework.model3D.Object3D; -import org.ntlab.radishforandroidstudio.framework.model3D.Position3D; import org.ntlab.radishforandroidstudio.framework.model3D.Property3D; -import org.ntlab.radishforandroidstudio.framework.model3D.Quaternion3D; import org.ntlab.radishforandroidstudio.framework.model3D.Universe; import org.ntlab.radishforandroidstudio.framework.network.CallBack; import org.ntlab.radishforandroidstudio.java3d.Appearance; import org.ntlab.radishforandroidstudio.java3d.Material; -import java.math.BigDecimal; import java.util.ArrayList; import java.util.HashMap; import java.util.Map; @@ -32,11 +28,11 @@ private Universe universe; private RealTime3DFragment fragment; private ArrayList otherCharacters = new ArrayList<>(); - private CharactersConnection con; + private PlayersConnection con; private int nextConnectRenaimdTime = 0; private int connectInterval = 300; private Map visibleCharacters = new HashMap<>(); - private String id; + private String instanceId; private String playerId; public OtherPlayerCharactersModel(RealTime3DFragment fragment, Universe universe) { @@ -45,7 +41,7 @@ } public void setInstanceId(String id) { - this.id = id; + this.instanceId = id; } public void setPlayerId(String id) { @@ -63,7 +59,8 @@ nextConnectRenaimdTime -= interval; if (nextConnectRenaimdTime <= 0) { nextConnectRenaimdTime = connectInterval; - con = new CharactersConnection(id); + con = new PlayersConnection(); + con.addQueryParam("instanceId", instanceId); con.setCallBack(this); con.doGet(); } @@ -73,25 +70,25 @@ public void onResponse(String response) { Map lastVisibleCharacters = new HashMap<>(visibleCharacters); visibleCharacters.clear(); - JSON json = new JSON(); - Map m = json.decode(response); - for (Map.Entry entry: m.entrySet()) { + Map m = json.decode(response, new TypeReference>(){}); + for (Map.Entry entry: m.entrySet()) { visibleCharacters.put(entry.getKey(), 1); ArrayList properties = new ArrayList<>(); - Map player = entry.getValue(); + Player player = entry.getValue(); - String[] accountUri = ((String)player.get("accountURI")).split("/"); // 自分自身は無視する - if (accountUri[accountUri.length-1] == playerId) continue; + System.out.println(entry.getKey() + ", " + playerId); + if (entry.getKey().equals(playerId)) continue; // 情報の取得 - Map position = (Map)player.get("position"); - Map angle = (Map)player.get("angle"); - Position3D positionProp = new Position3D(((BigDecimal)position.get("x")).doubleValue(), ((BigDecimal)position.get("y")).doubleValue(), ((BigDecimal)position.get("z")).doubleValue()); - Quaternion3D quaProp = new Quaternion3D(((BigDecimal)angle.get("x")).doubleValue(), ((BigDecimal)angle.get("y")).doubleValue(), ((BigDecimal)angle.get("z")).doubleValue(), ((BigDecimal)angle.get("w")).doubleValue()); - properties.add(positionProp); - properties.add(quaProp); +// Map position = (Map)player.get("position"); +// Map angle = (Map)player.get("angle"); +// Position3D positionProp = new Position3D(((BigDecimal)position.get("x")).doubleValue(), ((BigDecimal)position.get("y")).doubleValue(), ((BigDecimal)position.get("z")).doubleValue()); +// Quaternion3D quaProp = new Quaternion3D(((BigDecimal)angle.get("x")).doubleValue(), ((BigDecimal)angle.get("y")).doubleValue(), ((BigDecimal)angle.get("z")).doubleValue(), ((BigDecimal)angle.get("w")).doubleValue()); + + properties.add(player.getPosition()); + properties.add(player.getAngle()); if (!universe.doHaveObj(entry.getKey())) { Appearance ap1 = new Appearance(); diff --git a/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/models/OwnPlayer.java b/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/models/OwnPlayer.java index 6f13e6a..6ce0c2d 100644 --- a/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/models/OwnPlayer.java +++ b/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/models/OwnPlayer.java @@ -121,7 +121,7 @@ Quaternion3D q = ((Solid3D)(actor.getBody())).getQuaternion(); player.setPosition(actor.getPosition()); - player.setQuaternion3D(q); + player.setAngle(q); JSON json = new JSON(); con.addFormParam("characterID", json.encode(player.getCharacterID())); diff --git a/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/models/Player.java b/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/models/Player.java index 6cfbe77..ce1a31c 100644 --- a/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/models/Player.java +++ b/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/models/Player.java @@ -62,7 +62,7 @@ return position; } - public Quaternion3D getQuaternion3D() { + public Quaternion3D getAngle() { return angle; } @@ -90,7 +90,7 @@ this.position = position; } - public void setQuaternion3D(Quaternion3D angle) { + public void setAngle(Quaternion3D angle) { this.angle = angle; } @@ -110,7 +110,7 @@ EmoteState.EmoteType animationClassToStart) { setCharacterID(characterURI); setPosition(position); - setQuaternion3D(angle); + setAngle(angle); setCameraState(cameraState); updateEmoteType(animationClassToStart); updateAreaURI(); @@ -165,7 +165,7 @@ private void readCharacterData(Character character) { setPosition(character.getPosition()); - setQuaternion3D(character.getQuaternion3D()); + setAngle(character.getQuaternion3D()); setAreaURI(character.getAreaURI()); setCharacterID(characterID); } diff --git a/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/views/PlayerFragment.java b/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/views/PlayerFragment.java index ef27b83..57a8743 100644 --- a/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/views/PlayerFragment.java +++ b/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/views/PlayerFragment.java @@ -43,8 +43,6 @@ public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); modelManager = new CactusModels(this, universe); - otherPlayerCharactersModel = new OtherPlayerCharactersModel(this, universe); - modelManager.addModel(otherPlayerCharactersModel); //環境光 AmbientLight amblight = new AmbientLight(new Color3f(1.0f, 1.0f, 1.0f)); @@ -89,17 +87,20 @@ super.onCreateView(inflater, container, savedInstanceState); Bundle bundle = getArguments(); // プレイヤーの作成とインスタンスIDのセット - player = new OwnPlayer((Player)bundle.getSerializable("player"), getResources(), universe, camera, bundle.getString("playerId")); + String playerId = bundle.getString("playerId"); + player = new OwnPlayer((Player)bundle.getSerializable("player"), getResources(), universe, camera, playerId); modelManager.addModel(player); + otherPlayerCharactersModel = new OtherPlayerCharactersModel(this, universe); + otherPlayerCharactersModel.setPlayerId(playerId); + modelManager.addModel(otherPlayerCharactersModel); modelManager.setInstanceId(bundle.getString("instanceId")); - otherPlayerCharactersModel.setPlayerId(bundle.getString("playerId")); initGameWindowView(); return parentView; } @Override protected void progress(long interval) { - + super.progress(interval); } diff --git a/app/src/main/java/org/ntlab/radishforandroidstudio/framework/gameMain/RealTime3DFragment.java b/app/src/main/java/org/ntlab/radishforandroidstudio/framework/gameMain/RealTime3DFragment.java index 508a37e..fcc442e 100644 --- a/app/src/main/java/org/ntlab/radishforandroidstudio/framework/gameMain/RealTime3DFragment.java +++ b/app/src/main/java/org/ntlab/radishforandroidstudio/framework/gameMain/RealTime3DFragment.java @@ -54,7 +54,6 @@ } protected void progress(long interval) { - } public Universe getUniverse() {