์์ :)
https://github.com/eazuooz/WindowAPI/commit/9e43c633680e9d236f996f29c2a7d8df23e51132
Object Delete, animator · eazuooz/WindowAPI@9e43c63
Show file tree Showing 26 changed files with 562 additions and 95 deletions.
github.com
๊ฒ์์์ ํ ๋น๋ ๊ฐ์ฒด๋ค์ด ์ฌ๋ผ์ง๋ ๋ณดํธ์ ์ผ๋ก๋ ํด๋น ๋ฉ๋ชจ๋ฆฌ์์ ์ญ์ ๋์ด์ผ ํ๋ค.
ํ์ง๋ง ๋ฌธ์ ๊ฐ ์๋ค.
Tick์ Render๊ฐ ์งํ์ค์ผ๋ ์ค๋ธ์ ํธ๊ฐ ๋ฉ๋ชจ๋ฆฌ์ ํด์ ๋๋ค๋ฉด
ํด๋น ์ค๋ธ์ ํธ๋ฅผ ์ฐธ์กฐํ์ฌ ์ฌ์ฉํ๊ณ ์๋ ๋ค๋ฅธ ๊ณณ๊ณณ์์ ์ฌ๋ฌ๊ฐ์ง ๋ฌธ์ ๋ฅผ ์ผ์ผํฌ ํ๋ฅ ์ด ๋๋ค.
๊ทธ๋์ ํํ๋ ์ Tick Render๊น์ง ๋๋๊ณ ๋์ ์ค๋ธ์ ํธ ๋ฉ๋ชจ๋ฆฌ ํด์ ๋ฅผ ์งํํด์ฃผ๋ ค ํ๋ค.
static __forceinline void Destroy(Object* object)
{
object->Death();
}
static __forceinline void Release()
{
Scene* scene = SceneManager::GetPlayScene();
SceneObjects& objects = scene->GetObjects();
std::vector<Object*> deleteObjects;
for (size_t y = 0; y < _COLLIDER_LAYER; y++)
{
for (LayerObjectsIter iter = objects[y].begin()
; iter != objects[y].end();)
{
if ((*iter)->IsDead() == true)
{
deleteObjects.push_back(*iter);
iter = objects[y].erase(iter);
continue;
}
++iter;
}
}
for (Object* object : deleteObjects)
{
delete object;
object = nullptr;
}
}
Object๊ฐ ์ฃฝ์๋์ง ์ด์๋์ง๋ฅผ ์ฒดํฌํด์ค bool๋ณ์๋ฅผ ํ๋๋๊ณ
์ค์ ๋ฉ๋ชจ๋ฆฌ ํด์ ๋ฅผ ๋ฐ๋ก ์งํํ๋ ๊ฒ์ด ์๋๋ผ Destroy ํจ์๋ฅผ ํตํด์ ์ค๋ธ์ ํธ์ ์ ์๋ง ๊บผ์ฃผ๊ฒ ๋ค.
๊ทธ๋ฌ๋ฉด Tick๊ณผ Render๋ฅผ ๋ชจ๋ ์งํํํ ๋ค์ ํ๋ ์์ผ๋ก ๋์ด๊ฐ๋ ๋ง์ง๋ง์
๋ฉ๋ชจ๋ฆฌ ํด์ ์์ ์ ์งํํด์ฃผ๋ฉด ๋๋ค.
๊ทธ๋ ๊ฒ ๋๋ฉด ๊ฒ์ ์คํ์ค์ ์ค๋ธ์ ํธ๋ฅผ ๊บผ์ฃผ๋๋ผ๋ ๋๋จธ์ง๋ถ๋ถ์์ ์ํฅ์ ๋ฏธ์น์ง ์๋๋ค.
'๐ Development Study > ๐ป Win32API' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
API Math (0) | 2022.10.20 |
---|---|
Animator (1) | 2022.10.13 |
Alphablend, Camera Effect (0) | 2022.10.05 |
Camera (1) | 2022.10.04 |
Collider Manager (1) | 2022.09.30 |
๋๊ธ