diff --git a/.idea/caches/build_file_checksums.ser b/.idea/caches/build_file_checksums.ser index d8704b8..7a35e75 100644 --- a/.idea/caches/build_file_checksums.ser +++ b/.idea/caches/build_file_checksums.ser Binary files differ diff --git a/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/connections/ObjectsConnection.java b/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/connections/ObjectsConnection.java index e175902..fc6e111 100644 --- a/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/connections/ObjectsConnection.java +++ b/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/connections/ObjectsConnection.java @@ -3,7 +3,7 @@ import org.ntlab.radishforandroidstudio.framework.network.HttpAsyncConnection; public class ObjectsConnection extends HttpAsyncConnection { - public ObjectsConnection() { - super("http://nitta-lab-www.is.konan-u.ac.jp:8080/CactusServer/rest/instances/objects"); + public ObjectsConnection(String instanceId) { + super("http://nitta-lab-www.is.konan-u.ac.jp:8080/CactusServer/rest/instances/" + instanceId + "/objects"); } } 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 c4bc8b7..14b34b4 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 @@ -13,8 +13,9 @@ public class MovableObjectModel implements GameBaseModel, CallBack { private Universe universe; private RealTime3DFragment fragment; - private ObjectsConnection objectsConnection; + private ObjectsConnection con; private String instanceId; + private String objectId; public MovableObjectModel(RealTime3DFragment fragment, Universe universe) { this.fragment = fragment; @@ -27,9 +28,21 @@ this.instanceId = id; } + public void setObjectId(String objectId) { + this.objectId = objectId; + } + + /** + * オブジェクトの状態更新 + * + * @param interval 前回の更新からの時間差 + */ @Override public void update(double interval) { - + con = new ObjectsConnection(instanceId); + con.addQueryParam("instanceId", instanceId); + con.setCallBack(this); + con.doGet(); } 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 5ee62ac..27d741a 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 @@ -1,9 +1,13 @@ package org.ntlab.radishforandroidstudio.cactusClient.models; +import org.ntlab.radishforandroidstudio.framework.model3D.Model3D; +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.physics.AngularVelocity3D; import org.ntlab.radishforandroidstudio.framework.physics.Velocity3D; +import org.ntlab.radishforandroidstudio.java3d.Box; +import org.ntlab.radishforandroidstudio.java3d.Primitive; //import framework.model3D.Position3D; //import framework.physics.AngularVelocity3D; @@ -16,7 +20,9 @@ private AngularVelocity3D angularVelocity; private Quaternion3D angle; private Attribute attribute; - private String model; + private Model3D model; + private Primitive prim; + private Object3D object; @JSONHint(ignore = true) public static final int UNIQUE_ID_LENGTH = 12; @@ -27,13 +33,16 @@ } public Object(Position3D position, Velocity3D velocity, AngularVelocity3D angularVelocity, Quaternion3D angle, - Attribute attribute, String model) { + Attribute attribute, int modelID) { setPosition(position); setVelocity(velocity); setAngularVelocity(angularVelocity); setAngle(angle); setAttribute(attribute); - setModel(model); + setModel(modelID); + setPrim(new Box()); + setObject(new Object3D("", prim)); + setPlaceable(object); } public Position3D getPosition() { @@ -56,7 +65,7 @@ return attribute; } - public String getModel() { + public Model3D getModel() { return model; } @@ -80,29 +89,34 @@ this.attribute = attribute; } - public void setModel(String model) { - this.model = model; + public void setModel(int modelID) { +// this.model = ObjectModelManager.getInstance().getObject(modelID); } public static class Attribute { - private boolean moveable; // 可動 + private boolean movable; // 可動 private double cof; // 摩擦係数 + @SuppressWarnings("unused") + private Attribute() { + + } + public Attribute(boolean moveable, double cof) { - setMoveable(moveable); + setMovable(moveable); setCof(cof); } - public boolean isMoveable() { - return moveable; + public boolean isMovable() { + return movable; } public double getCof() { return cof; } - public void setMoveable(boolean moveable) { - this.moveable = moveable; + public void setMovable(boolean moveable) { + this.movable = moveable; } public void setCof(double cof) { @@ -110,4 +124,23 @@ } } + @JSONHint(ignore = true) + public Primitive getPrim() { + return prim; + } + + public void setPrim(Primitive prim) { + this.prim = prim; + } + + @JSONHint(ignore = true) + public Object3D getObject() { + return object; + } + + public void setObject(Object3D object) { + this.object = object; + } + + } \ No newline at end of file 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 new file mode 100644 index 0000000..f7afff7 --- /dev/null +++ b/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/models/ObjectModelManager.java @@ -0,0 +1,42 @@ +package org.ntlab.radishforandroidstudio.cactusClient.models; + +import org.ntlab.radishforandroidstudio.framework.model3D.Model3D; +import org.ntlab.radishforandroidstudio.framework.model3D.ModelFactory; +import org.ntlab.radishforandroidstudio.framework.model3D.ModelFileFormatException; + +import java.io.IOException; +import java.util.HashMap; + +class ObjectModelManager { +// +// private static ObjectModelManager theInstance = null; +// private HashMap model = new HashMap<>(); +// +// private ObjectModelManager() { +// try { +// setObject(0, ModelFactory.loadModel(getClass().getResource("../../pocha.stl").getPath())); +// setObject(1, ModelFactory.loadModel(getClass().getResource("../../pocha.stl").getPath())); +// } catch (IOException | ModelFileFormatException e) { +// e.printStackTrace(); +// } +// } +// +// public static ObjectModelManager getInstance() { +// if (theInstance == null) { +// theInstance = new ObjectModelManager(); +// } +// return theInstance; +// } +// +// public void setObject(int key, Model3D loadModel) { +// model.put(key, loadModel); +// } +// +// public Model3D getObject(int objectID) { +// return model.get(objectID); +// } +// +// public int getObjectModelCount() { +// return model.size(); +// } +} 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 77b982e..ea61611 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 @@ -12,6 +12,7 @@ import org.ntlab.radishforandroidstudio.R; import org.ntlab.radishforandroidstudio.cactusClient.models.CactusModels; import org.ntlab.radishforandroidstudio.cactusClient.models.MovableObjectModel; +import org.ntlab.radishforandroidstudio.cactusClient.models.Object; import org.ntlab.radishforandroidstudio.cactusClient.models.OtherPlayerCharactersModel; import org.ntlab.radishforandroidstudio.cactusClient.models.OwnPlayer; import org.ntlab.radishforandroidstudio.cactusClient.models.Player; @@ -34,7 +35,9 @@ private OvergroundActor pocha; RWTPad pad = null; private OwnPlayer player; + private Object obj; private OtherPlayerCharactersModel otherPlayerCharactersModel; + private MovableObjectModel movableObjectModel; public PlayerFragment() { @@ -48,16 +51,12 @@ //環境光 AmbientLight amblight = new AmbientLight(new Color3f(1.0f, 1.0f, 1.0f)); - -// amblight.setInfluencingBounds(new BoundingSphere(new Point3d(), 10000.0)); universe.placeLight(amblight); - //平行光源 DirectionalLight dirlight = new DirectionalLight( new Color3f(1.0f, 1.0f, 1.0f), //光の色 new Vector3f(0.0f, -1.0f, -0.5f) //光の方向ベクトル ); -// dirlight.setInfluencingBounds(new BoundingSphere(new Point3d(), 10000.0)); universe.placeLight(dirlight); // 地面の作成 @@ -96,6 +95,11 @@ otherPlayerCharactersModel.setPlayerId(playerId); modelManager.addModel(otherPlayerCharactersModel); modelManager.setInstanceId(bundle.getString("instanceId")); + //オブジェクトの生成 + String objectId =bundle.getString("objectId"); + + + //画面の生成 initGameWindowView(); return parentView; }