전체 글(113)
-
[HappyKit] C# Extension Method를 활용한 Vector 변환 기능
HappyKit : https://github.com/HappyFaceFriend/HappyKit GitHub - HappyFaceFriend/HappyKitContribute to HappyFaceFriend/HappyKit development by creating an account on GitHub.github.com 최근에 유니티 개발 중 DOTween을 사용하면서 이건 어떻게 만들었을까.. 하다가처음으로 C#의 Extension Method에 대해 알게 됐습니다.Extension Method는 간단하게 말해 static method를 이용해 어떤 클래스에 직접 메소드를 추가하는 기능으로, 상속 없이 기능 확장이 가능하다는 장점이 있습니다.왜 이제야 알았지 싶었지만, 지금까지 Vector나 Tr..
2024.05.04 -
[Unity] 원활한 카메라 활용을 위한 CameraToken
카메라 효과를 활용할 때마다 항상 고민하던 것은, 두 카메라 효과가 충돌하면 어쩌나다. 예를 들어, 플레이어의 스킬이 카메라를 움직이고있는데 스테이지가 클리어 돼 여기에 해당하는 카메라 움직임이 나와야하는 경우다. 물론 매 케이스마다 우선순위를 두거나 해서 이런 케이스를 처리할 수 있겠지만, 코루틴이 카메라 토큰을 부여받아 토큰을 가진 사용자(코루틴)만 카메라를 활용할 수 있게 하는 방법을 떠올렸다. 토큰을 받기 위해 대기하는 사용자들은 큐에 들어가며, 우선순위에 따라 이전 카메라 효과가 끝나면 토큰을 받는다. 대략적인 사용 예시는 아래와 같다. IEnumerator LastConnectionCameraCoroutine(LanternRelation relation) { CameraControlToken ..
2023.12.29 -
Rule of 0/3/5 의 의도를 이해하자
Rule of 3, 5, 0라는 표현을 많이 들어봤지만, 제대로 이해하지 않고 실제로 활용하지도 않고 있었다. cpp reference에도 관련 항목이 있다. The rule of three/five/zero - cppreference.com [edit] Rule of three If a class requires a user-defined destructor, a user-defined copy constructor, or a user-defined copy assignment operator, it almost certainly requires all three. Because C++ copies and copy-assigns objects of user-defined types in va en.cp..
2023.11.20 -
코딩테스트 스터디 - 프로그래머스 파괴되지 않은 건물(C++)
문제 링크 : https://school.programmers.co.kr/learn/courses/30/lessons/92344 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 요약 N * M 크기의 배열이 있다. 이 배열의 일부 직사각형 r1,c1 ~ r2,c2 에 모두 degree를 더하거나 빼는 연산이 정의되어있다. N,M 0 && r1 > 0) damage[(r1-1)*M + c1-1] += degree; } //대미지 합 계산 for(int i = N - 1; i >= 0; i--) { for (int j= M-1; j >= 0; j--) { if..
2023.11.16 -
floating point precision을 완전히 이해하고 있나?
오늘은 모종의 이유로 게임 엔진 스터디에서 floating point precision에 대해 공부했는데, 같이했던 분이 밤에 대충 아래 내용의 카톡을 보내셨습니다. if (1.1 + 0.1 == 1.2) std::cout
2023.11.16 -
Event & EventQueue 리팩토링
라면스프 엔진이 이제 어느정도 엔진적인 기능(ECS, 씬 하이아키, 라이팅 등)이 필요한 때가 다가왔습니다. 앞으로 작업을 잘 하기 위해서, 그리고 C++ 개념을 익힐 겸 지금까지의 코드를 차근차근 리팩토링 하려 합니다. 첫 번째 타깃은 항상 마음 한켠에 남아있던 EventQueue입니다. 우선 EventQueue를 구현하면서 꼭 지키고싶었던건 아래와 같습니다. Event는 최대한 가볍게 가져가자 (메모리가 적게) EventQueue에 큐잉되는 이벤트들은 연속된 메모리공간에 놓자. 이를 위해서 vtable을 이용하지 않고 EventType을 이용한 다형성을 구현하자. 기존 구조 우선 Event를 처리하는 과정은 다음과 같습니다. //WindowsWindow::InitCallbacks() 중 glfwSet..
2023.11.10