type point = float * floattype sector = {floor : float;ceiling : float;light : float;floor_rgb : int * int * int;ceiling_rgb : int * int * int;wall_rgb : int * int * int;loops : point list list;
}type line = {x1 : float;y1 : float;x2 : float;y2 : float;front : int;back : int option;
}type level = {sectors : sector array;lines : line array;start : float * float * float;exit : int;
}val rect : float -> float -> float -> float -> point listval hole : float -> float -> float -> float -> point listval make : sector list -> start:(float * float * float) -> exit:int -> levelval side : line -> float -> float -> floatval distance : line -> float -> float -> floatval inside : sector -> float -> float -> boolval sector_at : level -> float -> float -> intval move :
level ->
(float -> float -> int) ->
(float * float) ->
(float * float) ->
float * float