DevLog/D2D11 프로젝트 5

Pain Point C++에서 델리게이트같은 함수 만들기

C++에서 델리게이트처럼 이용하려면? 던전 맵에 입장할 때, 카메라와 플레이어가 위에서 아래로 떨어지는 효과를 구현하기 위해, DungeonLevel 클래스는 던전 레벨로 전환하는 순간을 감지해야 한다. 이를 위해 DungeonLevel 클래스의 특정 함수를 외부에서 호출하는 방식으로 전환 시점을 처리할 수 있다. 이러한 구현을 위해 UE5에서 사용했던 델리게이트 방식이 떠올랐다. 이를 적용하기 위해 DelegateManager 클래스를 별도로 만들었다. 구현 방식 DungeonLevel의 EntranceDungeon 멤버 함수를 람다 표현식을 사용하여 DelegateManager에 바인딩했다. 이렇게 함으로써 델리게이트처럼 다른 클래스에서도 DungeonLevel의 함수를 호출할 수 있는 구조를 만들었..

상속구조를 이용한 유한 상태 기계 + Component Pattern을 곁들인...

얼마전에 책에서도 봤고, 최근 블로그에 정리해 놓기도 한 enum 쓰지않고 state 패턴 관리하는 방법을 현재 진행하는 프로젝트에 적용하고 싶어졌다. state를 클래스로 빼고 enum을 쓰지 않고 사용하면 다음과 같은 이점이 있다. state 패턴을 상속구조로 이용해 다양한 state 패턴을 만들 수 있다. 또한 클래스이기 때문에 코드 관리하기가 편하다. menuState, AIState, PlayerState .. 등등 을 하위 클래스로 관리하고 설계하게되면, 추후 코드가 더 깔끔하게 정돈되기 때문이다. 코드가 정돈이 되면 이로 인해 가독성도 높아진다. 클래스로 만들었기 때문에 재사용성도 높아져 효율도 좋아진다. 따라서 ActorClass에서 map으로 Component를 관리하고, StateCom..

[Devlog-DX11] HOLLOW KNIGHT 모작 - Video - 블러 처리 시도

Blur 처리 박스 블러 코드는 적용했고,일단 돌아는 가는데 박스 블러 효과를 볼 순 없었다.그리고 무엇보다가장 큰 단점으로는pixel.size를 너무 크게 잡았기 때문인지,원래는 vector4 하나만 받아서 처리하다가pixel vector모든 부분에 대해서 동적 할당을 하다보니,4897408개의 픽셀을 계산하게 되어버벅거리는 현상이 짙다. 블러 이미지클래스를 만들어준 뒤다음과 같은 코드를 추가해주었다.결과적으로 렌더 함수는 돌고 있지만,뭔가 그려주는 함수가 잘 작동하지 않는 것 같았다. 나중에 쉐이더책 보고 dx에 대한 내공좀 쌓은 뒤 다시 도전해야겠다.     #include "framework.h"#include #include #include ID3D11Buffer* BlurImage::verte..

[Devlog-DX11] HOLLOW KNIGHT 모작 - Audio 기능

Sound 클래스에서 STL map 을 이용한 SoundList를 관리한다. Key에는 해당 사운드를 불러올 string 을 넣어주고, Value에는 SoundNode 구조체를 가지고 있다. 따라서 Key값의 string 입력에 규칙을 정하면 음원 관리가 가능하다. 아래는 음원 규칙에 관련된 코드이다. E는 effect관련이며 (NPC대화 목소리, UI 소리 등) M는 배경음악을 관리한다. void Sound::SetAllVolume(float scale) { for (auto iter = SoundList.begin(); iter != SoundList.end(); iter++) { iter->second->channel->setVolume(iter->second->volume * app.soundSc..