바인딩

    [C++] 함수를 객체로 사용하기 (std::function, std::mem_fn, std::bind)

    Callable Callable 이란, 이름 그대로 호출(Call)할 수 있는 모든 것을 의미한다. 대표적인 예시로 함수가 있다. 하지만 C++에서는 ( ) 를 붙여 호출할 수 있는 모든 것은 Callable 이라고 정의한다. same_obj 는 클래스의 객체이지만, 함수처럼 ( ) 를 호출할 수 있다. 마찬가지로, a 는 람다 함수이지만, ( ) 를 통해 호출할 수 있기에 Callable 이라고 할 수 있다. #include struct S { void operator()(int a, int b) { std::cout

    [Unity] 입력 바인딩 시스템 만들기

    유니티의 입력 시스템 유니티에는 2가지 Input System이 있다. 첫 번째는 Input.Get~ 꼴의 메소드를 이용해 이번 프레임에 해당 입력이 있었는지 검사하는 레거시 시스템 두 번째는 2019년 소개된 New Input System. New Input System을 사용하려면 패키지 매니저에서 Input System을 설치하고, 프로젝트 세팅에서 Active Input Handling을 지정하고, InputAction 윈도우에서 Action Map, Action, Property를 설정하고, New Input System을 사용할 게임오브젝트에 PlayerInput 컴포넌트를 넣고, 이제 스크립트에서 콜백 메소드를 작성해서 입력을 처리한다. 그리고 여기서 가장 중요한 런타임 바인딩 변경 기능. ..

    C++ 정적 바인딩과 동적 바인딩의 차이점

    바인딩은 일반적으로 한 항목을 다른 항목에 매핑하는 것을 나타낸다. 컴파일된 언어의 컨텍스트에서 바인딩은 함수 호출과 함수 정의 간의 연결이다. C++에서 함수가 호출되면 프로그램 컨트롤은 해당 함수가 정의된 메모리 주소에 바인딩된다. C++에는 정적(또는 초기) 바인딩과 동적(또는 후기) 바인딩의 두 가지 유형의 바인딩이 있다. 이 게시물은 C++의 정적 바인딩과 동적 바인딩의 차이점에 대한 개요를 제공한다. 정적 바인딩은 컴파일 타임에 발생하고 동적 바인딩은 런타임에 발생한다. 따라서 각각 조기 및 후기 바인딩이라고도 한다. 정적 바인딩에서는 함수 정의와 함수 호출이 컴파일 시간에 연결되지만 동적 바인딩에서는 런타임까지 함수 호출이 해결되지 않으므로 런타임까지 바인딩되지 않는다. 정적 바인딩은 함수를..

    C++ 구조적 바인딩 (Structured Bindings)

    C++17부터 지원하는 structured binding이란 어떤 배열, STL 같은 컨테이너에서 멤버들을 쉽게 바인딩할 수 있도록 도와주는 문법이다. 친숙한 std::map을 예시로 바인딩을 해보자. #include #include int main() { std::map mp; for (int i = 1; i < 11; i++) { mp[i] = i * i; } // iterator, basic for for (std::map::iterator it = mp.begin(); it != mp.end(); it++) { std::cout first

    [Unreal] 언리얼 충돌체 관련 함수와 이벤트(델리게이트) 바인딩 방법 #2

    언리얼 엔진에선 두 가지의 충돌체가 존재한다. 하나는 메쉬(static 또는 skeletal)의 충돌체 그리고 충돌 컴포넌트(SphereComponent,BoxComponent 기타 등등). C++로 충돌체 이벤트 바인딩할 수 있는 방법 총 두가지가 있다. 오버라이딩 방법 Hit 이벤트를 사용하려면 Simulation Generates Hit Events가 체크 되어있어야 한다. Overlap 이벤트를 사용하려면 Generate Overlap Events가 체크 되어있어야 한다. 항상 Super:: 부모클래스의 해당 함수를 호출 하여야한다. 예) NotifyHit 함수를 오버라이딩 했다, Super::NotifyHit(); NotifyHit (오브젝트로부터 충돌했다) 예시) virtual void Not..