본문 바로가기

전체 글

(56)
Unreal의 스레드와 단일 스레드로 실행시키기 (-norenderthread) 언리얼은 두 개의 메인 스레드로 돌고 있는데, 하나는 우리가 아는 게임 스레드이고 나머지 하나는 한 틱 뒤에서 이 게임스레드를 뒤쫓고 있는 렌더 스레드이다. 게임 스레드가 월드의 변경점을 렌더 스레드에 반영시키기 위해서는 ENQUEUE_RENDER_THREAD라는 매크로를 통해 람다 함수로 이를 렌더 큐에 쌓아두는 방식으로 접근한다. void BeginInitResource(FRenderResource* Resource) { ENQUEUE_RENDER_COMMAND(InitCommand)( [Resource](FRHICommandListImmediate& RHICmdList) { Resource->InitResource(); }); } RenderResource.cpp에 정의되어있는 BeginInitRe..
UE4 -waitforattach int32 GuardedMain(const TCHAR* CmdLine) { #if !(UE_BULID_SHIPPING) if (FParse::Param(CmdLine, TEXT("waitforattach")) { while (!FPlatformMisc::IsDebuggerPresent()); UE_DEBUG_BREAK(); } #endif ... } 언리얼을 실행시킬 경우, 실행인자로 -waitforattach라는 파라미터를 넣어줄 수 있다. 파라미터 이름에서 쉽게 유추 가능한 기능인데, 해당 파라미터를 넣으면 언리얼은 엔진 실행을 wait하며 디버거가 붙기를 기다려 준다. 디버거가 붙었다면, UE_DEBUG_BREAK를 이용하여 디버거에 신호를 준다. 쿠킹 로직을 따라가보고 싶은 경우에 사용하면 상당히..
11.30 friends function Friend Functions in C++ | Use of Friend Function in C++ with Examples (mygreatlearning.com) Friend Functions in C++ | Use of Friend Function in C++ with Examples Friend Functions in C++: A friend function in C++ is defined as a function that can access private, protected, and public members of a class. www.mygreatlearning.com 언리얼의 FArchive 쪽을 보다가 friend 키워드가 function에 붙는 것을 보았다. 훑어보니 friend clas..
JetBrains의 새로운 IDE : Fleet JetBrains Fleet: 차세대 JetBrains IDE JetBrains Fleet: 차세대 JetBrains IDE www.jetbrains.com JetBrains에서 가벼운 에디터를 목표로 새로운 IDE를 출시했다. VS Code와 같은 포지션이라고 생각할 수 있을 것 같다. 리모트 실행이나 실시간 피어 프로그래밍 지원 같은 피쳐에 힘을 싣고 있는 것 같다. 현재는 오픈되어있지 않고, 테스트 참여 지원만 가능한 상황이다.
[Python] Slack sdk를 이용해서 Slack 메시지 보내기 from typing import Optional from slack_sdk import WebClient from slack_sdk.errors import SlackApiError class SlackNotifier: __latest_thread_identifier: float = None def __init__(self, token): try: self.__client = WebClient(token) except Exception as e: print(f"Slack notifier got an error : {e}") def notify(self, header_blocks: [str], show_msg: str, channel: str) -> bool: if not self.__client: re..
GetTypeHash의 구현 size_t GetTypeHash() const { static size_t UniquePointer; return reinterpret_cast(&UniquePointer); } 타입마다 스태틱 변수를 선언하고 이 값의 주소값을 반환하는 방식으로 짜여져 있다. FPrimitiveSceneProxy에 순수가상함수로 선언되어있어 구현 클래스에서 이를 구현해주어야 한다. 예제 코드 #include #define DECLARE_TYPEHASH \ size_t GetTypeHash() const \ { \ static size_t UniquePointer; \ return reinterpret_cast(&UniquePointer); \ } class A { public: DECLARE_TYPEHASH }; cl..
Rider의 Delegate subtractions warning public sealed class SomeViewClass { public void BindEvent() { GetModel()?.UpdateEvent += OnModelUpdated; } public void ReleaseEvent() { GetModel()?.UpdateEvent -= OnModelUpdated; } } 위와 같이 코드를 짜면 ReleaseEvent 부분에서 Rider의 경고가 뜬다. Delegate subtraction을 주의하라는 경고인데, 이게 왜 주의해야할 대상인지 몰라 Rider 도큐먼트를 찾아보았다. 찾아본 결과 당연히 저런식으로 사용하는 것 자체는 문제가 없고, Rider에서 경고하고 싶었던 것은 delegate subtraction에서 발생할 수 있는 미묘한 문제들이었..
Observable C++ 간단한 예시 SlideShare : Observable c++ expressions using the observable library 이근원 (slideshare.net) Observable c++ expressions using the observable library 이근원 Observable C++ expressions using Observable Library - NHN NEXT 이근원 www.slideshare.net 2017년에 간단히 조사한 Observable 라이브러리에 관한 발표 자료입니다. Github : ddinu/observable: Generic observable objects and reactive expressions for C++ (github.com) ddinu/observable..