쾌락없는 책임 (공부)
-
[Unreal] 액터가 volume 안에 있는지 확인하기쾌락없는 책임 (공부)/Unreal 2024. 4. 20. 10:16
개요 마을의 '영역'을 만들게 되면서 해당 영역에 Enter 하게 되면 플레이어가 해당 영역에 있다는걸 나타낼 예정입니다. 그런데 문제는 플레이어가 마을에서 스폰하게 되는 경우입니다. 이 경우에는 BeginPlay 시점에 Overlap 이벤트가 자동적으로 불리게 되지 않아 문제가 됩니다. 이를 해결하기 위해 BeginPlay 시점에 특정 액터가 안에 있음을 알게 하는 방법 2개를 알아보도록 하겠습니다. bGenerateOverlapEventsDuringLevelStreaming 위 변수 딸깍이면 레벨이 로드되는 중에도 Overlap 이벤트를 발생시킬 수 있게 됩니다. 에디터에서 위 옵션을 체크하거나 생성자에서 true 로 설정해주면 됩니다. void UPrimitiveComponent::BeginComp..
-
[Unreal] Enum을 String 으로 변경하는 템플릿 함수쾌락없는 책임 (공부)/Unreal 2024. 1. 14. 14:24
template static FORCEINLINE FString GetEnumName(const EnumType InValue) { return StaticEnum()->GetNameStringByValue(static_cast(InValue)); } template static FORCEINLINE FString GetEnumDisplayName(const EnumType InValue) { return StaticEnum()->GetDisplayNameTextByValue(static_cast(InValue)).ToString(); } GetNameStringByValue, GetDisplayNameTextByValue 를 통해 enum 의 이름과 DisplayName을 알아내는 템플릿 함수입니다. ..
-
[C++] 특정 클래스만 함수를 호출할 수 있게 하는 방법 - Attorney and Client Idiom, Passkey Pattern쾌락없는 책임 (공부)/C++ 짜잘이 2023. 10. 22. 15:19
서론 그냥 갑자기 문득 '입력을 한곳에서 받은 뒤 다른 곳에서는 읽기만 할 수 있게 못할까?'라는 생각이 들었습니다. 유니티에서 `Input.~~`로 표현해 사용하는걸 자체적으로 만들 수 없을까 하는 생각이었습니다. 여기서 드는 생각이 '그러면 입력을 받아주는 곳은 한곳이고 나머지는 전부 읽기 전용이어야 한다'입니다. 그러면 **어떻게 특정 클래스에게만 이런 권한을 줄 수 있냐**하는 의문이죠. 결국 이 의문이 커져서 이번에 소개할 `Attorney and Client idiom`과 `Passkey Pattern`을 보게 되었습니다. Attorney and Client idiom 일단 이 방식은 간단합니다. C++에서 제공하는 `friend` 키워드를 사용하는 것입니다. class Some { priva..
-
[Algorithm] 백준 5052 전화번호 목록 - C++, 트라이쾌락없는 책임 (공부)/알고리즘 문제풀이 2023. 10. 7. 19:44
5052번: 전화번호 목록 첫째 줄에 테스트 케이스의 개수 t가 주어진다. (1 ≤ t ≤ 50) 각 테스트 케이스의 첫째 줄에는 전화번호의 수 n이 주어진다. (1 ≤ n ≤ 10000) 다음 n개의 줄에는 목록에 포함되어 있는 전화번호가 www.acmicpc.net #include #include #include #include using namespace std; struct Trie { bool bIsTerminal; Trie* Children[10]; Trie() : bIsTerminal(false), Children() {} ~Trie() { delete [] Children; } void Insert(const string& InputNumber) { Trie* CurTrie = this; ..
-
[C++] vector 는 2배씩 늘어나는게 맞을까?쾌락없는 책임 (공부)/C++ 짜잘이 2023. 9. 21. 20:50
개요 벡터는 용량이 부족하면 더 큰 용량을 할당한 뒤 그곳으로 복사를 한다고 다들 알고 있을 겁니다. 여기서 더 큰 용량 을 생각할 때 '벡터는 당연히 2배씩 용량 늘어나겠지' 싶었습니다. 그런데 일을하면서 사수분이 생겼고 이 사수분이 이런 논제를 하나 던져줬습니다. '진짜 2배씩 늘어나는지 찍어보셨나요?'. 이걸 듣고 핫차 싶어서 시간 날 때 바로 테스트를 해보기로 했습니다. 결론은 마냥 2배는 아니다. 그냥 간단하게 2, 4, 8...등으로 늘어날 수 있게 유도해 봤습니다. 코드는 아래 접은 글에 있습니다. 더보기 #include #include using namespace std; int main() { vector vec; cout
-
[C++] Branchless 가 얼마나 잘 작동할까?쾌락없는 책임 (공부)/C++ 짜잘이 2023. 8. 23. 18:30
개요 원래는 큰 생각 없었던 부분인데 유튜브 알고리즘 덕분에 생각해 볼 자료를 가지게 되었습니다. 이곳에서 Branchless에 대한 이야기를 하고 있었습니다. 저 같은 경우 학교 컴시구에서 if 구문이 명령어로 변경되었을 시 true, false 중 한곳을 맞다고 생각하고 가정한 뒤 계산을 하다가 그 가정이 틀리게 되면 이전 계산을 중지한 뒤 새 계산을 한다는 이론을 알고 있었습니다. 그래서 if문이 없으면 더 빠르지 않을까? 하고 막연하게만 생각해 왔습니다. 이번 영상을 보면서 제 생각이 마냥 옳다는 게 아니라는 걸 알아내서 이번 기회에 이에 대해 한번 적어보려고 합니다. 간단한 메모용으로요. 단순 수 비교에 있어서는 Branchless 보다 컴파일러가 더 믿을만하다 영상 초입에서 나오는 문제사항으로..