엔터티 구성 요소 시스템에 대한 몇 가지 설명서를 읽은 후 광산을 구현하기로 결정했습니다. 지금까지 엔티티와 시스템 관리자 (시스템)를 포함하는 World 클래스, std :: map으로 구성 요소를 포함하는 Entity 클래스 및 몇 가지 시스템이 있습니다. World에서 엔티티를 std :: vector로 보유하고 있습니다. 지금까지 아무런 문제가 없습니다. 나를 혼란스럽게하는 것은 엔티티의 반복이며, 그것에 대해 명확한 마음을 가질 수 없으므로 여전히 그 부분을 구현할 수 없습니다. 모든 시스템에 관심있는 엔티티 목록이 있어야합니까? 아니면 World 클래스의 엔터티를 반복하고 시스템을 반복하는 중첩 루프를 만들고 엔터티에 시스템이 관심있는 구성 요소가 있는지 확인해야합니까? 내말은 :
for (entity x : listofentities) {
for (system y : listofsystems) {
if ((x.componentBitmask & y.bitmask) == y.bitmask)
y.update(x, deltatime)
}
}
그러나 비트 마스크 시스템은 스크립팅 언어를 포함시키는 경우 약간의 유연성을 제공한다고 생각합니다. 또는 각 시스템에 대한 로컬 목록이 있으면 클래스의 메모리 사용량이 증가합니다. 정말 혼란 스러워요.