rrbox / ecs-swift

Entity Component System for swift
MIT License
3 stars 0 forks source link

Schedule #18

Closed rrbox closed 8 months ago

rrbox commented 9 months ago

システムが実行されるタイミングを Schedule という構造体で制御する提案です。

この機能により、それまで UpdateSystem, EventSystem, SetUpSystem として別々に実装していたシステム群を1種類にまとめることができます。

デメリットは、start up で使用できないパラメータ(Query)があること、event reader が他のスケジュールでは利用できないことが挙げられます(不正なパラメータの使用)。以前はコンパイル時に「不正なパラメータの使用」が検出できましたが、schedule を利用すると実行時のみでしか検出できないようです。

rrbox commented 9 months ago

Schedule は HashMap(dictionary) により実装できます。

rrbox commented 9 months ago

Schedule に ObjectIdentifier 型のプロパティを付与した方が検索速度が速いと思われます。AnyHashablehashValue が全て同じとなりますが、型情報を加えると id の型によって hashValue を変えることができるためです。

ただし、Schedule 自体のメモリサイズが大きくなります(+8 byte)。

rrbox commented 8 months ago

System を AnyMap に持たせる必要がなくなるため、WorldStorage とは別のプロパティを用意するといいかもしれません。

rrbox commented 8 months ago

23 完了しました