이랬던 낡고 병든 시야 메서드를...
이런 젊고 병든 시야 메서드로 개선
코딩 시작한지 얼마 안 되서 짰던 메서드기도 하고
HashSet 같은거 아예 몰랐어서 너무 비효율적인 방식으로 작성했었기도 하고...
마침 시야 관련 행동 추가와 제거할 것도 생겼으니 성능 문제는 없었지만 그냥 같이 리팩터링 해버림
근데 뭐 여전히 병든 메서드같긴 함... 코딩 뉴비는 아무것도 몰라요
=주요 변경점=
1. 이전 시야를 어둡게 하는 과정에서 다른 시야를 가진 유닛이 없는 타일의 밝기를 1로 되돌리는 과정을, 각각의 전장의 안개 구현을 위한 클래스로 이관.
2. 시야에 관해서는 순서가 그다지 중요하지 않으므로 List로 관리했던 데이터를 HashSet을 이용하여 모든 탐색 속도 개선
3. 탐색속도를 개선하면서 기존의 시야 갱신 방식인 일괄적으로 밝게 하기 -> 벽에 의해 시야가 막히는 부분을 복원하기 대신. 어두워 질 부분을 미리 계산해서, 전체 부분에서 뺌.(이것도 Contains를 이용하여 구성하든 했었어야 했기 때문에 List로 하면 성능 저하 컸을듯)
4. 시야 내의 적 탐색 과정을 기존의 끝점에 RayCast 발사 대신 그냥 대충 OverlapCirlcle로 러프하게 필터링 하고, 시야 HashSet을 이용하여 정밀하게 제어. 이것도 List 방식이었으면 성능 오버헤드가 컸을듯
NonAlloc 방식을 사용하는것도 고려해보셈 해당 메서드가 막 프레임마다 굴러가는게 아니면 별상관은 없지만
지금은 이동, 시야 수치 변경, 벽 파괴 or 문 여닫음에만 이벤트로 처리되는 중임 ㅋㅋ