/* Ċ Ġ* ĠCopyright Ġ( c ) Ġ 2 0 2 1 . ĠJetBrains Ġs . r . o . Ċ Ġ* ĠUse Ġof Ġthis Ġsource Ġcode Ġis Ġgoverned Ġby Ġthe ĠMIT Ġlicense Ġthat Ġcan Ġbe Ġfound Ġin Ġthe ĠLICENSE Ġfile . Ċ Ġ*/ Ċ Ċ package Ġjet brains . liv emap . core . ecs Ċ Ċ inline Ġfun Ġ< re ified ĠT 1 : ĠE cs Component , Ġre ified ĠT 2 : ĠE cs Component > ĠAbstract System <* >. get Entities 2 (): ĠSequence < E cs Entity > Ġ{ ĊĠĠĠ Ġreturn Ġcomponent Manager . get Entities ( T 1 :: class ). filter Ġ{ Ġit . contains < T 2 >() Ġ} Ċ } Ċ Ċ inline Ġfun Ġ< re ified ĠT 1 : ĠE cs Component , Ġre ified ĠT 2 : ĠE cs Component , Ġre ified ĠT 3 : ĠE cs Component > ĠAbstract System <* >. get Entities 3 (): ĠSequence < E cs Entity > Ġ{ ĊĠĠĠ Ġreturn Ġcomponent Manager . get Entities ( T 1 :: class ). filter Ġ{ Ġit . contains < T 2 >() Ġ&& Ġit . contains < T 3 >() } Ċ } Ċ Ċ inline Ġfun Ġ< re ified ĠT : ĠE cs Component > ĠAbstract System <* >. on Each Entity ( proc : Ġ( E cs Entity , ĠT ) Ġ-> ĠUnit ) Ġ{ ĊĠĠĠ Ġcomponent Manager . on Each Entity ( proc ) Ċ } Ċ Ċ inline Ġfun Ġ< re ified ĠT 1 : ĠE cs Component , Ġre ified ĠT 2 : ĠE cs Component > ĠAbstract System <* >. on Each Entity 2 ( proc : Ġ( E cs Entity , ĠT 1 , ĠT 2 ) Ġ-> ĠUnit ) Ġ{ ĊĠĠĠ Ġcomponent Manager . on Each Entity 2 ( proc ) Ċ } Ċ Ċ inline Ġfun Ġ< re ified ĠT 1 : ĠE cs Component , Ġre ified ĠT 2 : ĠE cs Component , Ġre ified ĠT 3 : ĠE cs Component > ĠAbstract System <* >. on Each Entity 3 ( proc : Ġ( E cs Entity , ĠT 1 , ĠT 2 , ĠT 3 ) Ġ-> ĠUnit ) Ġ{ ĊĠĠĠ Ġcomponent Manager . on Each Entity 3 ( proc ) Ċ } Ċ Ċ inline Ġfun Ġ< re ified ĠT : ĠE cs Component > ĠE cs Component Manager . on Each Entity ( proc : Ġ( E cs Entity , ĠT ) Ġ-> ĠUnit ) Ġ{ ĊĠĠĠ Ġfor Ġ( entity Ġin Ġget Entities ( T :: class )) Ġ{ ĊĠĠĠĠĠĠĠ Ġproc ( entity , Ġentity . get ()) ĊĠĠĠ Ġ} Ċ } Ċ Ċ inline Ġfun Ġ< re ified ĠT 1 : ĠE cs Component , Ġre ified ĠT 2 : ĠE cs Component > ĠE cs Component Manager . on Each Entity 2 ( proc : Ġ( E cs Entity , ĠT 1 , ĠT 2 ) Ġ-> ĠUnit ) Ġ{ ĊĠĠĠ Ġfor Ġ( entity Ġin Ġget Entities ( listOf ( T 1 :: class , ĠT 2 :: class ))) Ġ{ ĊĠĠĠĠĠĠĠ Ġproc ( entity , Ġentity . get < T 1 >(), Ġentity . get < T 2 >()) ĊĠĠĠ Ġ} Ċ } Ċ Ċ inline Ġfun Ġ< re ified ĠT 1 : ĠE cs Component , Ġre ified ĠT 2 : ĠE cs Component , Ġre ified ĠT 3 : ĠE cs Component > ĠE cs Component Manager . on Each Entity 3 ( proc : Ġ( E cs Entity , ĠT 1 , ĠT 2 , ĠT 3 ) Ġ-> ĠUnit ) Ġ{ ĊĠĠĠ Ġfor Ġ( entity Ġin Ġget Entities ( listOf ( T 1 :: class , ĠT 2 :: class , ĠT 3 :: class ))) Ġ{ ĊĠĠĠĠĠĠĠ Ġproc ( entity , Ġentity . get < T 1 >(), Ġentity . get < T 2 >(), Ġentity . get < T 3 >()) ĊĠĠĠ Ġ} Ċ } Ċ