리마전 소스질문입니다.
public ArrayList<L1Object> getVisibleObjects(L1Object object, int radius) {
L1Map map = object.getMap();
Point pt = object.getLocation();
ArrayList<L1Object> result = null;
if(radius < 0)
result = new ArrayList<L1Object>(19 * 8);
else if(radius == 0)
result = new ArrayList<L1Object>(2);
else
result = new ArrayList<L1Object>(radius * 8);
if (map.getId() <= MAX_MAP_ID) {
Collection<L1Object> col = _visibleObjects[map.getId()].values();
for (L1Object element : col) {
if (element == null || element.equals(object)) {
continue;
}
if (map != element.getMap()) {
continue;
}
if (radius == -1) {
if (pt.isInScreen(element.getLocation())) {
result.add(element);
}
} else if (radius == 0) {
if (pt.isSamePoint(element.getLocation())) {
result.add(element);
}
} else {
if (pt.getTileLineDistance(element.getLocation()) <= radius) {
result.add(element);
}
}
}
}
return result;
}
파란색으로 색칠부분 소스저 숫자가 무슨뜻인지 설명해주실분있나요?
멀리까지 인식하기때문에 19 * 8이라는 공간을 준비합니다.
radius가 0이라면 자기 자신만 인식합니다.
그래서 2라는 작은 공간만 준비합니다.
radius가 0보다 크다면 조금 더 멀리 인식합니다.
0보다 클때는 radius에 8을 곱한 만큼의 공간을 준비합니다.
즉, radius값이 0보다 작거나/같거나/큰 경우에 따라서 각기 다른 오브젝트 공간을 준비하는 로직입니다.