asobi_spatial (asobi v0.35.4)

View Source

Spatial query primitives over zone entities: radius and rectangle queries, nearest-neighbour, range and distance helpers. Pure functional - no process, no state - operating on entity maps, so asobi_zone and game code can call it directly.

Summary

Types

query_opts()

-type query_opts() ::
          #{type => binary() | [binary()],
            exclude => binary() | [binary()],
            max_results => pos_integer(),
            sort => nearest | farthest | none,
            filter => fun((binary(), map()) -> boolean())}.

Functions

distance/2

-spec distance(map(), map()) -> float().

distance_pos/2

-spec distance_pos({number(), number()}, {number(), number()}) -> float().

in_range/3

-spec in_range(map(), map(), number()) -> boolean().

nearest(Entities, Center, N)

-spec nearest(map(), {number(), number()}, pos_integer()) -> [{binary(), map(), float()}].

nearest/4

-spec nearest(map(), {number(), number()}, pos_integer(), query_opts()) -> [{binary(), map(), float()}].

query_radius(Entities, Center, Radius)

-spec query_radius(map(), {number(), number()}, number()) -> [{binary(), map(), float()}].

query_radius/4

-spec query_radius(map(), {number(), number()}, number(), query_opts()) -> [{binary(), map(), float()}].

query_rect(Entities, TopLeft, BottomRight)

-spec query_rect(map(), {number(), number()}, {number(), number()}) -> [{binary(), map()}].

query_rect/4

-spec query_rect(map(), {number(), number()}, {number(), number()}, query_opts()) -> [{binary(), map()}].