private boolean checkMoveableQueue() {
		Moveable[] moveableQueue = GameObjectManager.getInstance().getMoveableQueue();
		if(moveableQueue.length<= 0)
			return false;
		
		
		for(Moveable moveable : moveableQueue) {
			System.out.println(" collisionCandidates :"+moveable.getCollisionObjects().size());
			List<SCollisionObject> collisionPoint = moveable.getCollisionObjects();
			
			int oriDX = moveable.getDX(), destDX = oriDX; final int toDX = (int)Math.signum(oriDX);
			int oriDY = moveable.getDY(), destDY = oriDY; final int toDY = (int)Math.signum(oriDY);
			
			if(collisionPoint.size() <= 0) {
				moveable.moveNow();
				continue;
			}
			
			int innerLoop = 0;
			for(SCollisionObject colObject : collisionPoint) {
				System.out.println("innerLoop@ "+innerLoop++ +"to"+collisionPoint.size()+", "+colObject.toString());

				SCollisionObject colPoint = moveable.clone();
				
				colPoint.move(oriDX, oriDY);
				
				if(!colPoint.intersects(colObject)) {
					System.out.println(">>>doesnt intersect->next");
					continue;
				}
				
				colPoint = moveable.clone();
					
				for(int tmpDestDX = 0; tmpDestDX != oriDX; tmpDestDX += toDX) {
					colPoint.move(toDX, 0);
					if(colPoint.intersects(colObject)) {
						destDX = Math.min(Math.abs(destDX), Math.abs(tmpDestDX));
						break;
					}
				}
					
				for(int tmpDestDY = 0; tmpDestDY != oriDY; tmpDestDY += toDY) {
					colPoint.move(0, toDY);
					if(colPoint.intersects(colObject)) {
						destDY = Math.min(Math.abs(destDY), Math.abs(tmpDestDY));
						break;
					}
				}
				
			}

			moveable.moveNow(destDX, destDY);
		}
		
		GameObjectManager.getInstance().clearMoveableQueue();
		
		return true;
	}