add Vec2.iter_region
This commit is contained in:
parent
19a763b73f
commit
383c6c0fca
|
|
@ -73,13 +73,7 @@ let of_lines parse_char lines : 'a t =
|
||||||
;;
|
;;
|
||||||
|
|
||||||
let iter_region grid a b callback =
|
let iter_region grid a b callback =
|
||||||
let open Vec2 in
|
Vec2.iter_region a b (fun pos -> if in_bounds grid pos then callback pos)
|
||||||
for y = min a.y b.y to max a.y b.y do
|
|
||||||
for x = min a.x b.x to max a.x b.x do
|
|
||||||
let pos = { x; y } in
|
|
||||||
if in_bounds grid pos then callback pos
|
|
||||||
done
|
|
||||||
done
|
|
||||||
;;
|
;;
|
||||||
|
|
||||||
let iter grid callback =
|
let iter grid callback =
|
||||||
|
|
|
||||||
|
|
@ -19,3 +19,11 @@ let ( + ) a b = { x = a.x + b.x; y = a.y + b.y }
|
||||||
let ( - ) a b = { x = a.x - b.x; y = a.y - b.y }
|
let ( - ) a b = { x = a.x - b.x; y = a.y - b.y }
|
||||||
let ( = ) a b = a.x = b.x && a.y = b.y
|
let ( = ) a b = a.x = b.x && a.y = b.y
|
||||||
let abs a = Int.{ x = abs a.x; y = abs a.y }
|
let abs a = Int.{ x = abs a.x; y = abs a.y }
|
||||||
|
|
||||||
|
let iter_region a b callback =
|
||||||
|
for y = min a.y b.y to max a.y b.y do
|
||||||
|
for x = min a.x b.x to max a.x b.x do
|
||||||
|
callback { x; y }
|
||||||
|
done
|
||||||
|
done
|
||||||
|
;;
|
||||||
|
|
|
||||||
|
|
@ -17,3 +17,4 @@ val ( + ) : t -> t -> t
|
||||||
val ( - ) : t -> t -> t
|
val ( - ) : t -> t -> t
|
||||||
val ( = ) : t -> t -> bool
|
val ( = ) : t -> t -> bool
|
||||||
val abs : t -> t
|
val abs : t -> t
|
||||||
|
val iter_region : t -> t -> (t -> unit) -> unit
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user