![]() |
MIR Engine
미래 지향 설계에 초점을 맞춘 자체 제작 게임 엔진
|
특정 타입 T에 대한 컴포넌트 풀 구현 더 자세히 ...
#include <ComponentPool.hpp>
Public 멤버 함수 | |
ComponentPool ()=default | |
ComponentPool 기본 생성자 | |
template<typename... Args> | |
std::unique_ptr< Component, std::function< void(Component *)> > | Acquire (Args &&... args) |
풀로부터 컴포넌트를 대여(Acquire)하는 메서드 | |
![]() | |
virtual | ~PoolBase ()=default |
가상 소멸자 | |
정적 Public 속성 | |
static constexpr std::size_t | MAX_SIZE = 0xFF |
풀에서 보관할 수 있는 최대 컴포넌트 수 | |
특정 타입 T에 대한 컴포넌트 풀 구현
ComponentPool은 T 타입의 컴포넌트를 재사용하기 위한 풀. 최대 MAX_SIZE개의 컴포넌트를 스택(pool)에 보관할 수 있으며, Acquire 메서드를 통해 필요 시 새 컴포넌트를 생성하거나, 풀에서 재사용 가능한 컴포넌트를 팝. 사용이 끝난 컴포넌트는 커스텀 해제자(Deleter)를 통해 다시 풀에 반환.
T | 풀에서 관리할 컴포넌트 타입 |
|
default |
ComponentPool 기본 생성자
초기 상태에서는 풀(stack)이 비어있음.
|
inline |
풀로부터 컴포넌트를 대여(Acquire)하는 메서드
템플릿 파라미터 T 타입의 컴포넌트를 반환합니다. 내부적으로 풀(stack)이 비어있으면 새로 할당하고, 비어있지 않으면 스택 최상단의 재사용 가능한 컴포넌트를 가져와 새로 전달받은 인자(Args...)로 재초기화. 반환 타입은 스마트 포인터(uniqe_ptr)를 이용하며, 해제 시 커스텀 해제자를 통해 컴포넌트가 다시 풀로 반환되거나 풀에 여유공간이 없으면 delete.
Args | 컴포넌트 생성자에 전달할 파라미터 타입 |
args | 컴포넌트 생성자에 전달할 실제 인자 |
|
staticconstexpr |
풀에서 보관할 수 있는 최대 컴포넌트 수
이 값은 풀에 재사용 가능한 컴포넌트를 얼마나 많이 쌓아둘 수 있는지 결정. 여기서는 0xFF(255)로 설정.