안녕하세요 GameFeatureAction_AddInput #2 강의를 보면서 왜 WorldContext를 사용하는지 이해를 마쳤는데 아래 함수에서 이미 PIE의 현재 World의 WorldContext를 가져오고 그 Context에서 FGameFeatureActivatingContext의 데이터를 세팅한 후 OnGameFeatureActivating의 인자로 보내주잖아용 void ULCExperienceManagerComponent::OnExperienceFullLoadCompleted() { ... FGameFeatureActivatingContext Context; { UWorld* World = GetWorld(); const FWorldContext* ExistingWorldContext = GEngine->GetWorldContextFromWorld(World); if (ExistingWorldContext) { Context.SetRequiredWorldContextHandle(ExistingWorldContext->ContextHandle); } } auto ActivateListOfActions = [&Context](const TArray<UGameFeatureAction*>& ActionList) { for (UGameFeatureAction* Action : ActionList) { if (Action) { Action->OnGameFeatureActivating(Context); } } }; ... } ... } 그런데 왜 UGameFeatureAction_WorldActionBase::OnGameFeatureActivating에서 굳이 WorldContext를 순회하면서 다시 체킹하는식으로 코드를 만들었을까? 제가 이해를 못한 부분이 있나? 의문이 들어서 질문을 남깁니다. OnGameFeatureActivating의 인자로 FWorldContext도 받으면 되지 않나? 라는 생각이 들어서요..
FindClosestTarget 함수에서 OutHit.Normal은 라인 트레이싱이 충돌한 폴리곤의 법선 벡터로 알고 있는데, 그럼 메시 구조에 따라 법선 벡터가 제각각일 수도 있는 건가요? 예를 들어, 우연히 부딪친 폴리곤의 표면이 액터의 전방과 완전히 다른, 심지어 오른쪽을 향하고 있을 수도 있는 건가요?
안녕하세요, 큰돌 강사님! 3-G랑 3-H에서 강사님의 강의를 보고 질문을 드립니다! 3-G 문제가 3-H와 똑같은 조건인데 3-G는 max_n을 100000으로 주고, 3-H에서는 2000000으로 주는 이유가 궁금합니다. 3-H에서는 100000을 최댓값으로 주고 문제를 제출하면 틀렸다는 결과가 뜨는데, 3-G에서는 괜찮더라구요. 그냥 테스트 케이스의 차이때문에 이렇게 정의하신건지, 아니면 문제 풀이 과정에서 뭔가 차이가 있어서 그런건지 궁금합니다. 감사합니다!
안녕하십니까 큰돌 강사님 오늘도 질문 드립니다! 항상 감사합니다 ㅎㅎ 저의 구현 코드와 아이디어 첨부하겠습니다. http://boj.kr/45f37e5b0999424ab3f1838167234492 테스트 케이스 바탕으로 설명하겠습니다 우선 제가 문제를 풀기위해 생각한 아이디어는 1 2 3 4 5 와 같은 수열이 있을 때 어디에 있는 수가 어디까지 영향을 미칠 수 있나를 생각했습니다. 제가 기준으로 세운 것은 특정 수가 본인과 앞에까지의 영향을 고려했습니다. 1인 상태에서 2가 들어오면 2가 영향을 줄 수 있는 수는 1과 본인으로 (1 2) (2) 이런 식의 경우의 수가 만들어집니다. 따라서 하나씩 수를 집어 넣고 그 수로 인해 만들어질 수 있는 경우의 수를 cnt했습니다. 5 1 2 3 1 2 1) (1) 2) (1 2) (2) 3) (1 2 3) (2 3) (3) 4) (1 2 3 4) (2 3 4) (3 4) (4) 5) (1 2 3 4 5) ( 2 3 4 5) (3 4 5) (4 5) (5) 이렇게 실제 15가지 경우의 수와 정답과 일치합니다 중복이 있는 경우를 예로 들겠습니다. 만약에 영향을 끼칠 수에 본인이 있다면 집어 넣지 않습니다. 5 1 2 3 1 2 1) (1) 2) (1 2) (2) 3) (1 2 3) (2 3) (3) 1) (2 3 1) (3 1) (1) 2) (3 1 2) (1 2) (2) (1)처럼 묶음은 겹치나 생기는 위치가 달라서 cnt 이런식으로 12가지의 경우의 수와 정답과 일치합니다 이러한 로직을 코드로 구현했는데 정답이 아니여서 제 아이디어가 틀린건 지 제가 반례를 못잡은건지 궁금합니다. 오늘도 즐겁게 매웁니다. 가르쳐 주시면 감사하겠습니다!!
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 강의에서 N <= 8 수가 적어보이니 완탐 시도를 위한 시간 요소 고려 벽 세우기 완탐, 각 경우의 수에 대한 DFS, 연결 컴포넌트 넓이 계산에 대한 총 시간 복잡도 64 * (64 + 64) 라고 하셨는데 왜 64 + 64 인지 이해가 가질 않습니다. 64 * 64 * 64 아닌가요 ? 생각하면 벽 세운 경우의 수 중 하나에 대해서 DFS 후에 그것에 대해서 또 넓이 계산이 되므로, 독립 * 종속 + 종속 이게 되므로 그런건가요 ?
[게임 프로그래머 입문 올인원] C++ & 자료구조/알고리즘 & STL & 게임 수학 & Windows API & 게임 서버
ResourceManager::Clear() 에 해당하는 부분에 대해 질문이 있습니다. ResourceManager이 싱글톤으로 만들어지고, Game의 소멸자에서 또 ResourceManager의 Clear을 호출함으로써, Clear을 총 두번 호출하게 됩니다. 이 때, ResourceManager::Clear 내부에 unordered_map에서 메모리 해제를 하기 위해 SAFE_DELETE을 사용하고 있는데, for문이 auto mesh로 값복사를 하여 호출하는데, 이러면 힙 메모리는 delete시켰지만, map에서 관리되고 있는 포인터는 아직 해당 주소를 가리키고있어 두번째 Clear에서 또 값을 복사해오고 주소값자체는 복사해오므로 if(ptr)도 통과한 상태로 delete을 다시한번 시도하여 오류를 내는것으로 보입니다. 근데 궁금한건, 왜 Game의 소멸자로 싱글톤의 Clear을 호출하는 것인지, 각 매니저의 생명주기를 RAII로 관리하게 하면 이런 이중 삭제를 고려안해도 되지 않나요? 또한, for문으로 참조로 SAFE_DELETE를 한다면, Clear두번 호출되어도 이중 삭제 방지되지만, 왜 map의 clear로 해당 상황을 방지하는 선택을 하셨는지 궁금합니다.
언리얼 엔진에서 굳이 레벨 저장시 액터 순서가 보장이 안되게 한 이유를 잘 모르겠어서 질문드립니다. 이미 패키징 된 게임 기준으로 본다면 초기 레벨에 셋팅된 액터들(동적으로 생성되는 경우 제외)들은 고정되어 있는 상태라서 레벨 로드시 액터들을 정렬하는 것 보다 저장/빌드 시 정렬시킨 상태로 저장하는게 더 효율적이지 않을까 싶은데.. 왜 이런 식으로 설계되었는지 직접 코드를 분석하신 Liu님 의견이 궁금해서 질문드려봅니다.
https://www.acmicpc.net/source/97439152 문제에서 인구이동이 일어날때 연합이 1개라는 말이 없어서 인구이동이 일어날 시점에 여러개의 연합이 동시에 인구이동을 할 수도 있다 생각하여 vector<vector<pair<int,int>>> v; 전체 연합 <연합 < 연합의 좌표> > v; 이렇게 선언하고 문제를 풀긴했는데 이렇게 풀어도 괜찮은걸까요??
안녕하세요? install 예제 코드를 약간 수정해서 응용해보고 싶습니다. 근데 이 내용을 챗봇들도 잘 몰라서 강사님께 문의드립니다. baz 타겟을 새로 만들고, foo는 baz타겟을 private으로 의존합니다. baz 타겟은 baz()를 제공하며 foo()와 동일하게 stdout 출력하는 코드입니다. #include <baz.h> foo() { cout << "I'm foo!" << endl; baz(); // "I'm baz!" } baz는 foo 내부에서만 사용됩니다. 그래서 demo에는 기존 코드처럼 foo 타겟의 헤더만 제공합니다. 제 의도는 I'm foo에 이어 I'm baz도 같이 출력됐으면 했는데, 항상 I'm baz만 출력됩니다. add_library(foo foo.cpp # baz.cpp ) 챗봇은 foo 타겟 만들 때 baz.cpp도 추가하라고 합니다. foo, baz 를 명시적으로 분리된 상태에서 CMakeLists.txt에서 작성하고, baz는 foo 내부에서만 사용되니 foo 타겟만 demo 노출해서 사용할 수 있는 방법이 있을까요?
안녕하세요 선생님 강의 정말 잘 듣고 있습니다 궁금한 것이 여기서 최대로 발생할 수 있는 경우의 수는 20C10이라고 생각하는데, 다른 질문 글을 봤을 때 20을 10번 곱한 것이라고 생각해도 좋다는 것을 봤습니다. (10억이 넘지 않나요...?) 이 문제를 조합 방식(재귀)를 활용해 풀었는데, 이 때, 20C10보다 적은 시간 복잡도를 가지게 되는 것인가요?