diff --git a/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/models/MovableObjectModel.java b/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/models/MovableObjectModel.java index 5f0e14d..87b5e63 100644 --- a/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/models/MovableObjectModel.java +++ b/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/models/MovableObjectModel.java @@ -16,7 +16,9 @@ import java.util.ArrayList; import java.util.HashMap; +import java.util.HashSet; import java.util.Map; +import java.util.Set; /** * オブジェクトを管理するモデル @@ -29,8 +31,7 @@ private int nextConnectRenaimdTime = 0; private int connectInterval = 300; private String instanceId; - private String objectId; - private Map visibleobject = new HashMap<>(); + private Map visibleobject = new HashMap<>(); public MovableObjectModel(RealTime3DFragment fragment, Universe universe,String instanceId) { this.fragment = fragment; @@ -44,9 +45,6 @@ this.instanceId = instanceId; } - public void setObjectId(String objectId) { - this.objectId = objectId; - } /** * オブジェクトの状態更新 @@ -68,26 +66,20 @@ @Override public void onResponse(String response) { - Map lastvisibleobject = new HashMap<>(visibleobject); - visibleobject.clear(); JSON json = new JSON(); Map o = json.decode(response, new TypeReference>() { }); for (Map.Entry entry : o.entrySet()) { - visibleobject.put(entry.getKey(), 1); ArrayList properties = new ArrayList<>(); Object object = entry.getValue(); - // 自分自身は無視する - System.out.println(entry.getKey() + ", " + objectId); - if (entry.getKey().equals(objectId)) continue; properties.add(object.getPosition()); properties.add(object.getAngle()); - if (!universe.doHaveObj(entry.getKey())) { + if (!visibleobject.containsKey(entry.getKey())) { Appearance ap1 = new Appearance(); Material mat = new Material(); mat.setDiffuseColor(0.0f, 0.3f, 1.0f); @@ -99,12 +91,13 @@ Object3D objBody = null; try { - objBody = ModelFactory.loadModel(fragment.getResources(), "cube-ascii.stl", ap1).createObject(); + objBody = ModelFactory.loadModel(fragment.getResources(), "cube-binary.stl", ap1).createObject(); } catch (Exception e) { e.printStackTrace(); } MovableObject object1 = new MovableObject(objBody); + visibleobject.put(entry.getKey(), object1); universe.place(entry.getKey(), object1); universe.place(object1); @@ -112,9 +105,9 @@ universe.apply(entry.getKey(), properties); } - for (String key : lastvisibleobject.keySet()) { - if (visibleobject.get(key) == null) { - universe.displace(key); + for (String key : visibleobject.keySet()) { + if (!o.containsKey(key)) { + universe.displace(visibleobject.get(key)); } } diff --git a/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/models/Object.java b/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/models/Object.java index f0f40f8..2edd4ca 100644 --- a/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/models/Object.java +++ b/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/models/Object.java @@ -61,10 +61,12 @@ return angle; } + @JSONHint(ignore = true) public Attribute getAttribute() { return attribute; } + @JSONHint(ignore = true) public Model3D getModel() { return model; } diff --git a/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/models/ObjectModelManager.java b/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/models/ObjectModelManager.java index 3465bde..1d33074 100644 --- a/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/models/ObjectModelManager.java +++ b/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/models/ObjectModelManager.java @@ -17,8 +17,8 @@ // TODO: 2018/10/23 ObjectModelManagerの記述 private ObjectModelManager() { try { - setObject(0, ModelFactory.loadModel(fragment.getResources(),getClass().getResource("cube-ascii.stl").getPath())); - setObject(1, ModelFactory.loadModel(fragment.getResources(),getClass().getResource("cube-ascii.stl").getPath())); + setObject(0, ModelFactory.loadModel(fragment.getResources(),getClass().getResource("cube-binary.stl").getPath())); + setObject(1, ModelFactory.loadModel(fragment.getResources(),getClass().getResource("cube-binary.stl").getPath())); } catch (IOException | ModelFileFormatException e) { e.printStackTrace(); 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 a7549f6..ba863f1 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 @@ -101,11 +101,9 @@ //objectの通信 String instanceId = bundle.getString("instanceId"); - con = new ObjectsConnection(instanceId); // TODO: 2018/11/01 ここからObjectの表示を記述する String objectId = bundle.getString("objectId"); movableObjectModel = new MovableObjectModel(this, universe, instanceId); - movableObjectModel.setObjectId(objectId); modelManager.addModel(movableObjectModel); //画面の生成