Mini Map - B477042/GraduationProject GitHub Wiki
์ด๊ธฐ์๋ ๊ฐ๋จํ Scene์ ์บก์ณํด์ ์ป์ Texture๋ฅผ ์ด์ฉํ์์ต๋๋ค.
์ด๋ ๊ฒ ๋ง๋ค๋ฉด ๋นจ๋ฆฌ ๋ง๋ค ์๋ ์์ง๋ง ์ฌ๋๋ก ๋ ํํ์ ๋ชป ํ์ต๋๋ค.
์ฌ๋๋ก ํํํ๊ธฐ ์ํด์ ์๋์ ์ ๋นํ ๋์ด์ Plane์ ๋ง๋ค์ด์ ๊ทธ Plane๋ค์ Caputre ํ์ต๋๋ค.
๊ทธ๋ฆฌ๊ณ Player์ ๋์ด ์์น ์ ๋ณด๋ฅผ ์๊ฐ์ ์ผ๋ก ์ ๋ฌํ๊ธฐ ์ํด์ ์งํ์ ๋ํ๋ด๋ Plane์ Opacity๋ฅผ ์กฐ์ ํ๊ธฐ๋ก ํ์ต๋๋ค.
ํ์ง๋ง ์ด ์ฐ์ฐ์ Tick์ผ๋ก ์ฒ๋ฆฌํ๊ธฐ์๋ ๋น์ฉ์ด ์๊น์ ์ง๋ง Tick์ผ๋ก ํํํ ์ ๋ฐ์ ์์์ต๋๋ค.
ํด๊ฒฐ์ฑ
์ผ๋ก Multi-Threading์ ์ ์ฉ์์ผ ์ด ์ฐ์ฐ์ ์๋ก์ด Thread์์ ์ฒ๋ฆฌํ๊ฒ ๋ง๋ค์์ต๋๋ค.
Back to Planning & Implementation
class CalcMiniMapTileAsyncTask :public FNonAbandonableTask
{
AMiniMapTileManager* Manager;
const AActor* Player;
public:
CalcMiniMapTileAsyncTask(AMiniMapTileManager* Manager, const AActor* Player)
{
this->Manager = Manager;
this->Player = Player;
}
FORCEINLINE TStatId GetStatId() const
{
RETURN_QUICK_DECLARE_CYCLE_STAT(PrimeCalculationAsyncTask, STATGROUP_ThreadPoolAsyncTasks);
}
void DoWork();
};
Thread์ Factor๋ก Manager์ Player๋ฅผ ๋ฐ์์ต๋๋ค.
void CalcMiniMapTileAsyncTask::DoWork()
{
//Task Parameter Check
if (Manager && Player)
{
//#1 Set Opacity to 0
Thread_CalcOpacity::SetAllOpacityToZero(Manager);
Thread_CalcOpacity::CalcOpacityOfStruct(Manager, Player);
}
}
void Thread_CalcOpacity::CalcOpacityOfStruct( AMiniMapTileManager* Manager, const AActor* Player)
{
while (Player->IsValidLowLevel()&& UGameplayStatics::GetGameInstance(Manager))
{
Manager->CalculateStructsOpacity(Player->GetActorLocation());
FPlatformProcess::Sleep(0.01);
}
}
Manager์ Player๊ฐ ์ ํจํ์ง ๊ฒ์ฌํ ํ, Opacity๋ฅผ ๊ณ์ฐํ์ต๋๋ค.
Multi-Threading์ ์ ์ฉ ์ํค๋ ๊ฒ์ด ๊ฐ์ฅ ์ด๋ ค์ ์ต๋๋ค. ์์๋ถํฐ Thread์ ๋๊ธฐํ๋ฅผ ๋ฃ์ด์ผ ํ๋์ง์ ๋ํด ๊น๊ฒ ์๊ฐํ๊ฒ ๋์ต๋๋ค.
'๊ตฌ์กฐ๋ฌผ๋ค์ ๋ํ ์ํธ์์ฉ์ ๋ง๋ค์ด๋์ง ์์์ ๊ฒ์ ์ค ํ๊ดด๋๋ ๋ฌธ์ ๊ฐ ์์ผ๋๊น ์ ๋ฃ์ด๋ ๋๊ฒ ๋ค'๊ณ ํ๋จ ํ์ต๋๋ค.
๊ทธ ๋ค์ ๋ฌธ์ ๋ Thread์ ์์ฑ๊ณผ ์๋ฉธ ์์ ์ด ๋ฌธ์ ์์ต๋๋ค. Thread ๋ด๋ถ์ while์ด๋ for๋ฅผ ํตํด ๋ฌดํ ๋ฃจํ๋ฅผ ์์ฑํ๊ณ ์ข
๋ฃ ์กฐ๊ฑด์ด ์์ ๊ฒฝ์ฐ, ๊ฒ์์ด ์ข
๋ฃ๋๋ Editor์์ ๊ณ์ ๋์๊ฐ๋ ๋ฌธ์ ๋ฅผ ํ์ธ ํ์์ต๋๋ค. ์ด Thread๋ Player๊ฐ ์์ด์ผ ์๋ฏธ ์๋ Thread๋ผ๋ ์ ์ด ๋ ์ฌ๋์ต๋๋ค.
๊ทธ๋์ Player๊ฐ ์ ํจํ ๋์ Thread๊ฐ ๊ตฌ๋๋๊ฒ ๋ง๋ค์์ต๋๋ค.
Multi-Threading์ ์ ์ฉ ์ํจ ํ, ์ํ๋๋๋ก ์ ๊ตฌ๋๋๋ ๊ฒ์ ํ์ธํ๋ ๋ง๋ก ํํ์ ์ ๋ชป ํ๊ฒ ์ง๋ง ์ ๋ง ์ข์์ต๋๋ค.
Multi-Threading์ ์ด์ ์ ๋ง์ท์ต๋๋ค.