ordinary_component_removal.bend
bendvy-ecs-core@0.1.0.0 · 12 lines · 0 definitions
1import Base
2import bendvy-ecs-core@0.1.0.0/ordinary_declaration.bend as Identity
3import bendvy-ecs-core@0.1.0.0/ordinary_component_binding.bend as Binding
4import bendvy-ecs-core@0.1.0.0/column.bend as Col
5import bendvy-ecs-core@0.1.0.0/world.bend as W
6import bendvy-ecs-core@0.1.0.0/structural.bend as St
7import bendvy-ecs-core@0.1.0.0/transaction.bend as Tx
8
9def record(~S:Data,~C:Type,~Rest:Type,~P:Type,~V:Data,~Token:Data,~take:C -> Rest & Col.Column<S,P>,~put:Rest -> Col.Column<S,P> -> C,~view:P -> P & V,~E:Data,~inject:Identity.Declaration<S,P> -> W.Handle<S> -> E,~binding:Binding.Binding<S,C,Rest,P,V,Token,take,put,view>,handle:W.Handle<S>) -> E:
10 inject(Binding.identity(~S,~C,~Rest,~P,~V,~Token,~take,~put,~view,binding),handle)
11def remove(~S:Data,~C:Type,~R:Type,~E:Data,~Rest:Type,~P:Type,~V:Data,~Token:Data,~take:C -> Rest & Col.Column<S,P>,~put:Rest -> Col.Column<S,P> -> C,~view:P -> P & V,~inject:Identity.Declaration<S,P> -> W.Handle<S> -> E,~binding:Binding.Binding<S,C,Rest,P,V,Token,take,put,view>,tx:Tx.Tx<W.World<S,C,R,E>,E>,handle:W.Handle<S>) -> St.Queued<Tx.Tx<W.World<S,C,R,E>,E>,P>:
12 St.tx_remove_observed(~S,~C,~R,~E,~Rest,~P,~V,~Token,~take,~put,~view,~record(~S,~C,~Rest,~P,~V,~Token,~take,~put,~view,~E,~inject,~binding),Binding.family(~S,~C,~Rest,~P,~V,~Token,~take,~put,~view,binding),tx,handle)