Varlık bileşeni sistemi hakkında birkaç belgeyi okuduktan sonra, madeni uygulamaya karar verdim. Şimdiye kadar, varlıkları ve sistem yöneticisini (sistemlerini) içeren bir Dünya sınıfı, std :: map olarak bileşenleri içeren Varlık sınıfı ve birkaç sistemi var. Dünyada std :: vector olarak varlıkları tutuyorum. Şimdiye kadar sorun yok. Beni şaşırtan şey varlıkların yinelemesidir, bu konuda net bir zihnim olamaz, bu yüzden hala bu kısmı uygulayamıyorum. Her sistem, ilgilendikleri yerel bir varlık listesine sahip olmalı mı? Yoksa sadece Dünya sınıfındaki varlıklar arasında yineleme yapmalı ve sistemler arasında yineleme yapmak ve varlığın sistemin ilgilendiği bileşenlere sahip olup olmadığını kontrol etmeli miyim? Demek istediğim :
for (entity x : listofentities) {
for (system y : listofsystems) {
if ((x.componentBitmask & y.bitmask) == y.bitmask)
y.update(x, deltatime)
}
}
ama bence bir bitmask sistemi bir betik dili yerleştirilmesi durumunda esnekliği engelleyecektir. Veya her sistem için yerel listelerin olması sınıfların bellek kullanımını artıracaktır. Çok kafam karıştı.