| |
---|
| | import cactusServer.entities.Player; |
---|
| | |
---|
| | public class CollisionManager { |
---|
| | private static CollisionManager theInstance; |
---|
| | private List<CollisionResult> result; |
---|
| | private HashMap<String, Instance> instances; |
---|
| | |
---|
| | private CollisionManager() { |
---|
| | result = new ArrayList<CollisionResult>(); |
---|
| | instances = Instances.getInstance().getInstances(); |
---|
| | } |
---|
| | |
---|
| | public static CollisionManager getCollision() { |
---|
| |
---|
| | } |
---|
| | return theInstance; |
---|
| | } |
---|
| | |
---|
| | public List<CollisionResult> getResult() { |
---|
| | return result; |
---|
| | } |
---|
| | |
---|
| | public void collisionRun(long interval) { |
---|
| | for (String instanceId : instances.keySet()) { |
---|
| | Instance instance = Instances.getInstance().getInstance(instanceId); |
---|
| | instance.getUniverse().update(interval); |
---|
| | result.clear(); |
---|
| | for (Object object : instance.getObjects().values()) { |
---|
| | for (Player player : Instances.getInstance().getPlayers(instanceId).values()) { |
---|
| | result.add(PhysicsUtility.checkCollision(player.getObject(), "",object.getObject(), "")); |
---|
| | // System.out.println(result.get(result.size()-1).length); |
---|
| | // objectmove(instance, object, character); |
---|
| | collisionMove(object, player); |
---|
| | } |
---|
| | for(Object object2 : instance.getObjects().values()) { |
---|
| | if(!object.equals(object2)) { |
---|
| | collisionMove(object, object2); |
---|
| | } |
---|
| | } |
---|
| | } |
---|
| | } |
---|
| | } |
---|
| | |
---|
| | public void objectmove(Instance instance, Object object, Character character) { |
---|
| | int size = result.size() - 1; |
---|
| | CollisionResult current = result.get(size); |
---|
| | Position3D position = object.getPosition(); |
---|
| | position.setX(position.getX() + current.length * current.normal.x); |
---|
| | position.setY(position.getY() + current.length * current.normal.y); |
---|
| | position.setZ(position.getZ() + current.length * current.normal.z); |
---|
| | public void collisionMove(Object object, Player player) { |
---|
| | CollisionResult result; |
---|
| | result = PhysicsUtility.checkCollision(player.getObject(), "", object.getObject(), ""); |
---|
| | if (result != null) { |
---|
| | |
---|
| | } |
---|
| | } |
---|
| | |
---|
| | public void collisionMove(Object object1,Object object2) { |
---|
| | CollisionResult result; |
---|
| | result = PhysicsUtility.checkCollision(object1.getObject(), "", object2.getObject(), ""); |
---|
| | if (result != null) { |
---|
| | |
---|
| | } |
---|
| | } |
---|
| | } |
---|
| | |
---|
| | |