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 31d9e40..9d26711 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 @@ -36,6 +36,8 @@ private int nextConnectRenaimdTime = 0; private int connectInterval = 300; private Map visibleCharacters = new HashMap<>(); + private String id; + private String playerId; public OtherPlayerCharactersModel(RealTime3DFragment fragment, Universe universe) { this.fragment = fragment; @@ -43,8 +45,11 @@ } public void setInstanceId(String id) { - con = new CharactersConnection(id); - con.setCallBack(this); + this.id = id; + } + + public void setPlayerId(String id) { + playerId = id; } /** @@ -56,10 +61,11 @@ @Override public void update(double interval) { nextConnectRenaimdTime -= interval; - if (nextConnectRenaimdTime <= 0 && con != null) { + if (nextConnectRenaimdTime <= 0) { nextConnectRenaimdTime = connectInterval; + con = new CharactersConnection(id); + con.setCallBack(this); con.doGet(); -// con.doAnything(); } } @@ -72,10 +78,13 @@ Map m = json.decode(response); for (Map.Entry entry: m.entrySet()) { visibleCharacters.put(entry.getKey(), 1); - ArrayList properties = new ArrayList<>(); Map player = entry.getValue(); + String[] accountUri = ((String)player.get("accountURI")).split("/"); + // 自分自身は無視する + if (accountUri[accountUri.length-1] == playerId) continue; + // 情報の取得 Map position = (Map)player.get("position"); Map angle = (Map)player.get("angle"); @@ -85,7 +94,6 @@ properties.add(quaProp); if (!universe.doHaveObj(entry.getKey())) { - OvergroundActor pocha; Appearance ap1 = new Appearance(); Material mat = new Material(); mat.setDiffuseColor(0.0f, 0.3f, 1.0f); @@ -96,10 +104,9 @@ ap1.setMaterial(mat); Object3D pochaBody = null; - Animation3D pochaAnimation = null; try { pochaBody = ModelFactory.loadModel(fragment.getResources(), "pocha.stl", ap1).createObject(); - pochaBody.scale(10.0); + pochaBody.scale(5.0); } catch (Exception e) { e.printStackTrace(); } 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 22a6a07..6f13e6a 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 @@ -3,6 +3,8 @@ import android.content.res.Resources; import android.view.MotionEvent; +import net.arnx.jsonic.JSON; + import org.ntlab.radishforandroidstudio.cactusClient.connections.CharacterConnection; import org.ntlab.radishforandroidstudio.framework.animation.Animation3D; import org.ntlab.radishforandroidstudio.framework.event.PadEvent; @@ -12,8 +14,10 @@ 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.Quaternion3D; import org.ntlab.radishforandroidstudio.framework.model3D.Universe; import org.ntlab.radishforandroidstudio.framework.network.CallBack; +import org.ntlab.radishforandroidstudio.framework.physics.Solid3D; import org.ntlab.radishforandroidstudio.framework.physics.Velocity3D; import org.ntlab.radishforandroidstudio.framework.view3D.Camera3D; import org.ntlab.radishforandroidstudio.java3d.Appearance; @@ -100,39 +104,38 @@ @Override public void update(double interval) { -// updateCamera(); -// -// if (isTouched) { -// Velocity3D vel = actor.getVelocity(); -// vel.setX(touchX); -// vel.setY(touchY); -// actor.setVelocity(vel); -// } -// -// nextConnectRenaimdTime -= interval; -// if (nextConnectRenaimdTime <= 0 && con != null) { -// nextConnectRenaimdTime = connectInterval; -// -// Quaternion3D q = ((Solid3D)(actor.getBody())).getQuaternion(); -// player.setPosition(actor.getPosition()); -// player.setQuaternion3D(q); -// -// JSON json = new JSON(); -// con.addFormParam("characterID", json.encode(player.getCharacterID())); -// con.addFormParam("cameraState", json.encode(player.getCameraState())); -// con.addFormParam("position", json.encode(player.getPosition())); -// con.addFormParam("animationClassToStart", json.encode(player.getEmoteState())); -// con.addFormParam("angle", "{ \"x\":" + q.getX() + ", \"y\":" + q.getY() + ", \"z\":" + q.getZ() + ", \"w\":" + q.getW() + "}"); -// con.doPut(); -// } + updateCamera(); + + if (isTouched) { + Velocity3D vel = actor.getVelocity(); + vel.setX(touchX); + vel.setY(touchY); + actor.setVelocity(vel); + } + + nextConnectRenaimdTime -= interval; + if (nextConnectRenaimdTime <= 0) { + nextConnectRenaimdTime = connectInterval; + con = new CharacterConnection(playerId); + con.setCallBack(this); + + Quaternion3D q = ((Solid3D)(actor.getBody())).getQuaternion(); + player.setPosition(actor.getPosition()); + player.setQuaternion3D(q); + + JSON json = new JSON(); + con.addFormParam("characterID", json.encode(player.getCharacterID())); + con.addFormParam("cameraState", json.encode(player.getCameraState())); + con.addFormParam("position", json.encode(player.getPosition())); + con.addFormParam("animationClassToStart", json.encode(player.getEmoteState())); + con.addFormParam("angle", "{ \"x\":" + q.getX() + ", \"y\":" + q.getY() + ", \"z\":" + q.getZ() + ", \"w\":" + q.getW() + "}"); + con.doPut(); + } } @Override public void setInstanceId(String id) { player.setInstanceID(id); - playerId = id; - con = new CharacterConnection(playerId); - con.setCallBack(this); } @Override 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 18d5288..ef27b83 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 @@ -11,6 +11,7 @@ import org.ntlab.radishforandroidstudio.R; import org.ntlab.radishforandroidstudio.cactusClient.models.CactusModels; +import org.ntlab.radishforandroidstudio.cactusClient.models.OtherPlayerCharactersModel; import org.ntlab.radishforandroidstudio.cactusClient.models.OwnPlayer; import org.ntlab.radishforandroidstudio.cactusClient.models.Player; import org.ntlab.radishforandroidstudio.framework.RWT.RWTPad; @@ -32,6 +33,7 @@ private OvergroundActor pocha; RWTPad pad = null; private OwnPlayer player; + private OtherPlayerCharactersModel otherPlayerCharactersModel; public PlayerFragment() { // Required empty public constructor @@ -41,6 +43,8 @@ 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)); @@ -88,7 +92,7 @@ player = new OwnPlayer((Player)bundle.getSerializable("player"), getResources(), universe, camera, bundle.getString("playerId")); modelManager.addModel(player); modelManager.setInstanceId(bundle.getString("instanceId")); - + otherPlayerCharactersModel.setPlayerId(bundle.getString("playerId")); initGameWindowView(); return parentView; } diff --git a/app/src/main/java/org/ntlab/radishforandroidstudio/framework/gameMain/GameBaseModelManager.java b/app/src/main/java/org/ntlab/radishforandroidstudio/framework/gameMain/GameBaseModelManager.java index fdbefca..3dc35ad 100644 --- a/app/src/main/java/org/ntlab/radishforandroidstudio/framework/gameMain/GameBaseModelManager.java +++ b/app/src/main/java/org/ntlab/radishforandroidstudio/framework/gameMain/GameBaseModelManager.java @@ -36,12 +36,8 @@ */ @Override public void update(double interval) { - System.out.println(1); for (GameBaseModel model: models) { - System.out.println(2); model.update(interval); - System.out.println(3); } - System.out.println(4); } }