bullets = new ArrayList<>();
+
+ for (String key : bulletsSet) {
+ bullets.add(key);
+ }
+ bulletsSet.clear();
+ return bullets;
+ }
+}
diff --git a/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/controller/CactusRepository.java b/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/controller/CactusRepository.java
new file mode 100644
index 0000000..633698d
--- /dev/null
+++ b/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/controller/CactusRepository.java
@@ -0,0 +1,38 @@
+package org.ntlab.radishforandroidstudio.cactusClient.controller;
+
+import org.ntlab.radishforandroidstudio.cactusClient.usecase.UpdateUseCase;
+import org.ntlab.radishforandroidstudio.framework.gameMain.GameBaseModel;
+import org.ntlab.radishforandroidstudio.framework.gameMain.GameModelContainer;
+
+/**
+ * モデルを管理する
+ *
+ * singleton
+ *
+ * @author s.iwatani
+ */
+public class CactusRepository extends GameModelContainer{
+ private String instanceId = "";
+ UpdateUseCase updateUseCase = new UpdateUseCase();
+
+ public CactusRepository() {
+ super();
+ }
+
+ public void setInstanceId(String id) {
+ for (GameBaseModel model : models) {
+ model.setInstanceId(id);
+ }
+ for (GameBaseModel model : nextAddModels) {
+ model.setInstanceId(id);
+ }
+ instanceId = id;
+ }
+
+ @Override
+ public void update(double interval) {
+ super.update(interval);
+ updateUseCase.onUpdate(interval);
+ }
+
+}
diff --git a/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/controller/MovableObjectModel.java b/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/controller/MovableObjectModel.java
new file mode 100644
index 0000000..f87c223
--- /dev/null
+++ b/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/controller/MovableObjectModel.java
@@ -0,0 +1,114 @@
+package org.ntlab.radishforandroidstudio.cactusClient.controller;
+
+import net.arnx.jsonic.JSON;
+import net.arnx.jsonic.TypeReference;
+
+import org.ntlab.radishforandroidstudio.cactusClient.connections.ObjectsConnection;
+import org.ntlab.radishforandroidstudio.cactusClient.models.object.MovableObject;
+import org.ntlab.radishforandroidstudio.cactusClient.models.object.Object;
+import org.ntlab.radishforandroidstudio.framework.gameMain.OnlineModel;
+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.Property3D;
+import org.ntlab.radishforandroidstudio.framework.model3D.Universe;
+import org.ntlab.radishforandroidstudio.java3d.Appearance;
+import org.ntlab.radishforandroidstudio.java3d.Material;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * オブジェクトを管理するモデル
+ */
+
+public class MovableObjectModel implements OnlineModel {
+ private Universe universe;
+ private RealTime3DFragment fragment;
+ private ObjectsConnection con;
+ private int nextConnectRenaimdTime = 0;
+ private int connectInterval = 300;
+ private String instanceId;
+ private Map visibleobject = new HashMap<>();
+
+ public MovableObjectModel(RealTime3DFragment fragment, Universe universe, String instanceId) {
+ this.fragment = fragment;
+ this.universe = universe;
+ this.setInstanceId(instanceId);
+ }
+
+
+ @Override
+ public void setInstanceId(String instanceId) {
+ this.instanceId = instanceId;
+ }
+
+
+ /**
+ * オブジェクトの状態更新
+ *
+ * @param interval 前回の更新からの時間差
+ */
+ @Override
+ public void update(double interval) {
+ nextConnectRenaimdTime -= interval;
+ if (nextConnectRenaimdTime <= 0) {
+ nextConnectRenaimdTime = connectInterval;
+ con = new ObjectsConnection(instanceId);
+ con.setCallBack(this);
+ con.doGet();
+ }
+ }
+
+
+ @Override
+ public void onResponse(String response) {
+
+ JSON json = new JSON();
+ Map o = json.decode(response, new TypeReference