기능기능을 완성완성하고 넘어가는 것이 아니라, 다음에 이용할 의미있는 무언가를 발견해서 남겨두는 게 필요하구만!
gameObject가 read를 하기 위해선 read lock이 필요하고, lock은 scene pxScene->lockRead()
호출.
→ 데이터를 읽는 건 scene을 갖고 있는 class가 읽어서 전달하는 형태로 가능?
engine이 RigidDynamic을 생성하는 건 객체만 return하는 것으로 동작해 scene을 인자로 넣지 않아도 됨.
visual studio가 제공하는 변경 서명을 이용하면 같은 이름의 함수도 검색해서 뭔가 적용을 하는 것 같다. EnigneNew의 메소드를 변경한건데, Engine도 파일이 edited 되었지만 Engine의 내용을 보면 실제로 변경된 건 없다.
새로운 class 추가하고 regacy 삭제하는 방법
느낀점
architecture의 변경은 너무 큰일이다. 함께 개발한다고 치면 어딘가서 feature는 만들어야 하니 architecture 변경 때문에 멈출 순 없는 일이다. component는 계속 변하는 것이라 했다. 의존성 주입을 쓴다면 주입하는 멤버를 New class에서 받아서 새롭게 만드는 것으로 부분만 변경하는 것도 가능해보인다.
Level을 새롭게 만들며 ReplicationManager를 singleton이 아닌 형태로 변경이 필요했다. Level로 WorldServer를 대체해놓고 WorldServer가 사용하는 것들의 참조를 지워가며 없앴더라면 XYZNew class를 중간에 만들지 않아도 되었을까?
BadmintonNet/Bottom을 구현했다. dynamic한 object는 주기적으로 replication 해야하지만, static한 object는 그러지 않아야 하기에 StaticGameObject를 만들어 분리했다.
ReplicationUpdate를 이용해 client로 넘겨주는 코드를 짠다. client에서는 받아서 Net, Bottom을 생성해주도록 한다. 그러려면 사이즈도 함께 넘겨줘야 한다.