diff --git a/src/main/java/cactusServer/models/CollisionManager.java b/src/main/java/cactusServer/models/CollisionManager.java index 8765087..ca3aedb 100644 --- a/src/main/java/cactusServer/models/CollisionManager.java +++ b/src/main/java/cactusServer/models/CollisionManager.java @@ -1,20 +1,51 @@ package cactusServer.models; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Map.Entry; + import org.ntlab.radishforandroidstudio.framework.model3D.CollisionResult; +import org.ntlab.radishforandroidstudio.framework.physics.PhysicsUtility; + +import cactusServer.entities.Character; +import cactusServer.entities.Instance; public class CollisionManager { private static CollisionManager theInstance; - private CollisionResult result; + private List result; + private HashMap instances; + + private CollisionManager() { + result = new ArrayList(); + instances = Instances.getInstance().getInstances(); + } + public static CollisionManager getCollision() { if (theInstance == null) { theInstance = new CollisionManager(); } return theInstance; } - public CollisionResult getResult() { + + public List getResult() { return result; } - public void setResult(CollisionResult result) { - this.result = result; + + @SuppressWarnings("unlikely-arg-type") + public void collisionRun() { + result.clear(); + for (Map.Entry instance : instances.entrySet()) { + HashMap objects = instance.getValue().getObjects(); + HashMap characters = instance.getValue().getCharacters(); + for (Map.Entry object : objects.entrySet()) { + for (Map.Entry character : characters.entrySet()) { + result.add(PhysicsUtility.checkCollision(, "", + instances.get(i).getObjects().get(j).getObject(), "")); + } + } + } } + } diff --git a/src/main/java/cactusServer/utils/App.java b/src/main/java/cactusServer/utils/App.java index f9d1b46..14a14d9 100644 --- a/src/main/java/cactusServer/utils/App.java +++ b/src/main/java/cactusServer/utils/App.java @@ -21,6 +21,7 @@ import cactusServer.entities.Object.*; import cactusServer.models.Accounts; import cactusServer.models.CharacterModelManager; +import cactusServer.models.CollisionManager; import cactusServer.models.Instances; import cactusServer.models.ObjectModelManager; import cactusServer.models.StageModelManager; @@ -30,8 +31,7 @@ @SuppressWarnings("unused") @ApplicationPath("/rest") public class App extends ResourceConfig implements Runnable { - private ScheduledThreadPoolExecutor task = new ScheduledThreadPoolExecutor(4); - private int instancesSize; + private ScheduledThreadPoolExecutor task = new ScheduledThreadPoolExecutor(1000); public App() { ObjectModelManager.getInstance(); @@ -40,29 +40,18 @@ Instances.getInstance(); Accounts.getInstance(); initDummy(); - start(1); + start(1000); System.out.println("pass"); } @Override public void run() { - // System.out.println("�^�X�N�����s"); - instancesSize = Instances.getInstance().getInstances().size(); - for (int i = 0; i < instancesSize; i++) { - Instance instance = Instances.getInstance().getInstances().get(i); - int objectsSize = instance.getObjects().size(); - int charactersSize = instance.getCharacters().size(); - for (int j = 0; j < objectsSize; j++) { - for (int x = 0; x < charactersSize; x++) { - PhysicsUtility.checkCollision(instance.getCharacters().get(x).getObject(), "", - instance.getObjects().get(j).getObject(), ""); - } - } - } + System.out.println("�^�X�N�����s"); + CollisionManager.getCollision().collisionRun(); } public void start(int interval) { - task.scheduleWithFixedDelay(this, interval, interval, TimeUnit.MILLISECONDS); + task.scheduleAtFixedRate(this, interval, interval, TimeUnit.MILLISECONDS); } private void initDummy() {