inspector_query_world.bend

bendvy-ecs-core@0.1.0.1 · 34 lines · 0 definitions

1import Base
2import bendvy-ecs-core@0.1.0.1/change_tick.bend as Tick
3import inspector_query.bend as Q
4import inspector.bend as I
5import check.bend as K
6import world.bend as W
7def inspect_handles_joined(~S:Data,~Store:Type,~R:Type,~E:Data,cursor:Maybe<&2,Tick.Tick>,observed:W.World<S,Store,R,E> & List<&2,W.Handle<S>>) -> I.Frame<S,Store,R,E> & List<&2,W.Handle<S>>:
8  (world,value)=observed
9  (I.Frame{world,cursor},value)
10def inspect_handles(~S:Data,~Store:Type,~R:Type,~E:Data,frame:I.Frame<S,Store,R,E>) -> I.Frame<S,Store,R,E> & List<&2,W.Handle<S>>:
11  match frame:
12    case I.Frame{world,cursor}:inspect_handles_joined(~S,~Store,~R,~E,cursor,W.handles(~S,~Store,~R,~E,world))
13def inspect_valid_joined(~S:Data,~Store:Type,~R:Type,~E:Data,cursor:Maybe<&2,Tick.Tick>,observed:W.World<S,Store,R,E> & Bool) -> I.Frame<S,Store,R,E> & Bool:
14  (world,value)=observed
15  (I.Frame{world,cursor},value)
16def inspect_valid(~S:Data,~Store:Type,~R:Type,~E:Data,frame:I.Frame<S,Store,R,E>,target:W.Handle<S>) -> I.Frame<S,Store,R,E> & Bool:
17  match frame:
18    case I.Frame{world,cursor}:inspect_valid_joined(~S,~Store,~R,~E,cursor,W.valid(~S,~Store,~R,~E,world,target))
19def inspect_world(~S:Data,~Store:Type,~R:Type,~E:Data) -> Q.WorldRead<I.Frame<S,Store,R,E>,S>:
20  Q.WorldRead{inspect_handles(~S,~Store,~R,~E),inspect_valid(~S,~Store,~R,~E)}
21def check_handles_joined(~S:Data,~Store:Type,~R:Type,~E:Data,observed:W.World<S,Store,R,E> & List<&2,W.Handle<S>>) -> K.Frame<S,Store,R,E> & List<&2,W.Handle<S>>:
22  (world,value)=observed
23  (K.Frame{world},value)
24def check_handles(~S:Data,~Store:Type,~R:Type,~E:Data,frame:K.Frame<S,Store,R,E>) -> K.Frame<S,Store,R,E> & List<&2,W.Handle<S>>:
25  match frame:
26    case K.Frame{world}:check_handles_joined(~S,~Store,~R,~E,W.handles(~S,~Store,~R,~E,world))
27def check_valid_joined(~S:Data,~Store:Type,~R:Type,~E:Data,observed:W.World<S,Store,R,E> & Bool) -> K.Frame<S,Store,R,E> & Bool:
28  (world,value)=observed
29  (K.Frame{world},value)
30def check_valid(~S:Data,~Store:Type,~R:Type,~E:Data,frame:K.Frame<S,Store,R,E>,target:W.Handle<S>) -> K.Frame<S,Store,R,E> & Bool:
31  match frame:
32    case K.Frame{world}:check_valid_joined(~S,~Store,~R,~E,W.valid(~S,~Store,~R,~E,world,target))
33def check_world(~S:Data,~Store:Type,~R:Type,~E:Data) -> Q.WorldRead<K.Frame<S,Store,R,E>,S>:
34  Q.WorldRead{check_handles(~S,~Store,~R,~E),check_valid(~S,~Store,~R,~E)}